Compare commits

...

340 Commits

Author SHA1 Message Date
Kamil Myśliwiec
ef4ab89b0d chore(@nestjs) publish v6.5.2 release 2019-07-10 11:43:48 +02:00
Kamil Myśliwiec
3774fed640 bugfix(microservices): fix pattern regression 2019-07-10 11:42:18 +02:00
Kamil Myśliwiec
6ff7859976 chore(): publish 6.5.1 release 2019-07-10 09:37:15 +02:00
Kamil Myśliwiec
8718f4763e chore(@nestjs) publish v6.5.1 release 2019-07-10 09:35:51 +02:00
Kamil Myśliwiec
4cbebed909 Merge branch 'master' of https://github.com/nestjs/nest 2019-07-10 09:33:24 +02:00
Kamil Myśliwiec
b1388b136c fix(microservices): remove event emitter reference 2019-07-10 09:33:13 +02:00
Kamil Mysliwiec
499c94792a Merge pull request #2533 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v6.5.0
2019-07-10 08:40:13 +02:00
Renovate Bot
c93d7e4ab0 fix(deps): update nest monorepo to v6.5.0 2019-07-10 06:05:44 +00:00
Kamil Mysliwiec
2ec291cf4c Merge pull request #2537 from nestjs/renovate/mongoose-5.x
chore(deps): update dependency @types/mongoose to v5.5.8
2019-07-10 07:58:49 +02:00
Kamil Mysliwiec
e25e3c1e92 Merge pull request #2538 from nestjs/renovate/apollo-server-monorepo
fix(deps): update dependency apollo-server-express to v2.6.8
2019-07-10 07:58:39 +02:00
Renovate Bot
2655d19aa5 fix(deps): update dependency apollo-server-express to v2.6.8 2019-07-09 22:40:42 +00:00
Renovate Bot
da45d58982 chore(deps): update dependency @types/mongoose to v5.5.8 2019-07-09 20:06:07 +00:00
Kamil Myśliwiec
82db8a3743 chore(@nestjs) publish v6.5.0 release 2019-07-09 15:15:30 +02:00
Kamil Myśliwiec
bc71cb4eca chore(): publish 6.5.0 release 2019-07-09 15:14:26 +02:00
Kamil Myśliwiec
35fff662df Merge branch 'master' of https://github.com/nestjs/nest 2019-07-09 15:13:47 +02:00
Kamil Myśliwiec
531073957f Merge branch 'csidell-earny-master' 2019-07-09 15:13:40 +02:00
Kamil Myśliwiec
41e4e853f6 refactor(): adjust to the codebase guidelines 2019-07-09 15:13:26 +02:00
Kamil Myśliwiec
9166d40ade Merge branch 'master' of https://github.com/csidell-earny/nest into csidell-earny-master 2019-07-09 15:05:39 +02:00
Kamil Mysliwiec
8a9af18e3b Merge pull request #2496 from Samox/add-any-files-multer-interceptor
feat(platform-express): add any file interceptor (multer)
2019-07-09 15:05:14 +02:00
Kamil Myśliwiec
9b5ddceb1f Merge branch 'master' of https://github.com/nestjs/nest 2019-07-09 15:03:36 +02:00
Kamil Myśliwiec
704230eb56 bugfix(core): fix global request enhancers #1916 2019-07-09 15:03:26 +02:00
Kamil Mysliwiec
d150650a7a Merge pull request #2528 from jbpionnier/refactor_module_decorator
refactor(common): module decorator (metadata validation)
2019-07-09 08:57:38 +02:00
Kamil Mysliwiec
6f6d8a4a12 Merge pull request #2530 from nestjs/renovate/typescript-3.x
fix(deps): update dependency typescript to v3.5.3
2019-07-09 08:57:16 +02:00
Kamil Mysliwiec
cbcdeb2e5f Merge pull request #2526 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.6.4
2019-07-09 08:56:14 +02:00
Kamil Mysliwiec
978dd180b4 Merge pull request #2523 from nestjs/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.35.3
2019-07-09 08:56:05 +02:00
Kamil Mysliwiec
8b84c63f19 Merge pull request #2531 from nestjs/renovate/grpc-1.x
fix(deps): update dependency grpc to v1.22.0
2019-07-09 08:50:07 +02:00
Renovate Bot
573d53d6a6 fix(deps): update dependency grpc to v1.22.0 2019-07-09 00:00:39 +00:00
Renovate Bot
c0641abf40 fix(deps): update dependency typescript to v3.5.3 2019-07-08 22:36:21 +00:00
Jean-Baptiste Pionnier
f3314a280d refactor: module decorator 2019-07-08 23:23:21 +02:00
Renovate Bot
5f7605a264 fix(deps): update dependency mongoose to v5.6.4 2019-07-08 17:58:53 +00:00
Kamil Mysliwiec
a2b61f3622 Merge pull request #2525 from nestjs/renovate/ws-7.x
fix(deps): update dependency ws to v7.1.0
2019-07-08 19:27:33 +02:00
Renovate Bot
6a38c24ffc fix(deps): update dependency ws to v7.1.0 2019-07-08 16:17:04 +00:00
Renovate Bot
6b322e725e chore(deps): update dependency webpack to v4.35.3 2019-07-08 13:58:17 +00:00
Sammy Teillet
b25754da3f feature(common): Add file interceptor for multer 2019-07-08 15:20:38 +02:00
Kamil Mysliwiec
5044deaf85 Merge pull request #2499 from nestjs/renovate/lint-staged-9.x
chore(deps): update dependency lint-staged to v9.1.0
2019-07-07 18:27:35 +02:00
Kamil Mysliwiec
140a9f28ef Merge pull request #2510 from BrunnerLivio/remove-gitter-badge
chore(): Remove Gitter badge
2019-07-07 18:27:23 +02:00
Kamil Mysliwiec
b72fdf80b8 Merge pull request #2508 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v6.4.1
2019-07-07 18:26:51 +02:00
Renovate Bot
a2ad323b1e fix(deps): update nest monorepo to v6.4.1 2019-07-07 16:22:56 +00:00
Renovate Bot
c2e7d7b28f chore(deps): update dependency lint-staged to v9.1.0 2019-07-07 16:19:44 +00:00
Kamil Mysliwiec
292cf57cba Merge pull request #2519 from nestjs/renovate/pin-dependencies
chore(deps): pin dependency lerna to 2.11.0
2019-07-07 18:17:33 +02:00
Kamil Mysliwiec
bb5b881fc3 Merge pull request #2494 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.9.4
2019-07-07 18:17:10 +02:00
Kamil Mysliwiec
96e48ce3d0 Merge pull request #2495 from nestjs/renovate/swagger-ui-express-4.x
fix(deps): update dependency swagger-ui-express to v4.0.7
2019-07-07 18:17:02 +02:00
Kamil Mysliwiec
38a2649ffb Merge pull request #2505 from nestjs/renovate/node-10.x
chore(deps): update dependency @types/node to v10.14.12
2019-07-07 18:16:29 +02:00
Kamil Mysliwiec
8a59c4841b Merge pull request #2507 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.6.3
2019-07-07 18:16:13 +02:00
Renovate Bot
6ca85a3b33 chore(deps): pin dependency lerna to 2.11.0 2019-07-07 16:14:41 +00:00
Kamil Mysliwiec
1d96cd4e1c Merge pull request #2498 from nestjs/renovate/ts-morph-3.x
fix(deps): update dependency ts-morph to v3.1.0
2019-07-07 18:13:21 +02:00
Kamil Mysliwiec
f55c27d3b1 Merge pull request #2503 from nestjs/renovate/graphql-14.x
fix(deps): update dependency graphql to v14.4.2
2019-07-07 18:13:03 +02:00
Kamil Mysliwiec
d528c1054e Merge pull request #2506 from nestjs/renovate/node-8.x
chore(deps): update dependency @types/node to v8.10.50
2019-07-07 18:12:52 +02:00
Kamil Mysliwiec
42a288eef0 Merge pull request #2509 from nestjs/renovate/pin-dependencies
chore(deps): pin dependency lerna to 2.11.0
2019-07-07 18:12:37 +02:00
Kamil Mysliwiec
3c8875468d Merge pull request #2514 from nestjs/renovate/amqp-connection-manager-3.x
fix(deps): update dependency amqp-connection-manager to v3
2019-07-07 18:12:09 +02:00
Kamil Mysliwiec
378fdcd58c Merge pull request #2516 from BrunnerLivio/build/travis-jobs
ci(): run integration tests with TravisCI
2019-07-07 18:11:18 +02:00
Renovate Bot
9deb0df42d fix(deps): update dependency sequelize to v5.9.4 2019-07-06 08:33:35 +00:00
Livio
1318641259 build(): Run integration test with TravisCI 2019-07-05 18:39:43 +02:00
Livio
3c34111770 build(): Use travis build jobs 2019-07-05 18:17:16 +02:00
Chris Sidell
987012610d Address styling concerns 2019-07-04 10:51:01 -07:00
csidell-earny
8a80de3017 Add typing target for getErrorString 2019-07-04 10:45:28 -07:00
Renovate Bot
a70e5369a4 fix(deps): update dependency amqp-connection-manager to v3 2019-07-04 13:35:48 +00:00
Chris Sidell
fd8e490d34 Fix linting error 2019-07-03 18:37:20 -07:00
Chris Sidell
ccb69d728b Add WsException serialization 2019-07-03 18:29:56 -07:00
Chris Sidell
609878628c Make RpcExceptions serializable 2019-07-03 18:27:29 -07:00
Chris Sidell
40cd722eaf Change name to not collide with duplicate definition in RpcException 2019-07-03 18:22:08 -07:00
Chris Sidell
724ddd8d23 Make errors serializable by default 2019-07-03 18:11:42 -07:00
Livio
73e573fdbb chore(): Remove Gitter badge 2019-07-04 01:07:54 +02:00
Renovate Bot
68d84d95bb chore(deps): pin dependency lerna to 2.11.0 2019-07-03 21:12:37 +00:00
Kamil Myśliwiec
acbeb1cd33 deps(): downgrade lerna version 2019-07-03 23:02:10 +02:00
Kamil Myśliwiec
3d4b423fd6 chore(@nestjs) publish v6.4.1 release 2019-07-03 23:01:06 +02:00
Renovate Bot
92ad5d26f4 fix(deps): update dependency mongoose to v5.6.3 2019-07-03 18:10:17 +00:00
Renovate Bot
ace9a237ed chore(deps): update dependency @types/node to v10.14.12 2019-07-03 17:34:41 +00:00
Renovate Bot
1ea450d511 chore(deps): update dependency @types/node to v8.10.50 2019-07-03 17:14:38 +00:00
Renovate Bot
29953ab96d fix(deps): update dependency graphql to v14.4.2 2019-07-03 15:11:12 +00:00
Renovate Bot
3b28b51bc2 fix(deps): update dependency ts-morph to v3.1.0 2019-07-03 01:17:29 +00:00
Renovate Bot
90a0c3b0f5 fix(deps): update dependency swagger-ui-express to v4.0.7 2019-07-02 18:58:54 +00:00
Kamil Myśliwiec
a4383966e1 chore(): publish 6.4.1 release 2019-07-02 15:00:18 +02:00
Kamil Mysliwiec
e4121d6eb4 Merge pull request #2491 from nestjs/renovate/lint-staged-9.x
chore(deps): update dependency lint-staged to v9.0.1
2019-07-02 13:52:32 +02:00
Kamil Mysliwiec
670c33e8b4 Merge pull request #2492 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.9.1
2019-07-02 13:52:24 +02:00
Kamil Myśliwiec
5ef764abb5 Merge branch 'master' of https://github.com/nestjs/nest 2019-07-02 13:51:44 +02:00
Kamil Myśliwiec
7a93b0d91f fix(microservices): fix request scoped enhancers #2489 2019-07-02 13:51:33 +02:00
Renovate Bot
7be5d14642 fix(deps): update dependency sequelize to v5.9.1 2019-07-02 11:05:15 +00:00
Renovate Bot
88f9473ad7 chore(deps): update dependency lint-staged to v9.0.1 2019-07-02 11:05:04 +00:00
Kamil Mysliwiec
e46169aeaa Merge pull request #2485 from nestjs/renovate/lint-staged-9.x
chore(deps): update dependency lint-staged to v9
2019-07-02 09:48:37 +02:00
Kamil Myśliwiec
791b1ceaa6 Merge branch 'master' of https://github.com/nestjs/nest 2019-07-02 08:53:42 +02:00
Kamil Myśliwiec
0d2f78542d tests(): fix integration tests 2019-07-02 08:49:56 +02:00
Renovate Bot
90e92cdb9e chore(deps): update dependency lint-staged to v9 2019-07-02 06:20:32 +00:00
Kamil Mysliwiec
a0b04c71dc Merge pull request #2490 from nestjs/renovate/delete-empty-3.x
chore(deps): update dependency delete-empty to v3
2019-07-02 08:12:45 +02:00
Kamil Mysliwiec
a9aac4560c Merge pull request #2487 from nestjs/renovate/mongoose-5.x
chore(deps): update dependency @types/mongoose to v5.5.7
2019-07-02 08:12:25 +02:00
Renovate Bot
3715946e16 chore(deps): update dependency delete-empty to v3 2019-07-02 05:52:48 +00:00
Renovate Bot
da63a3fd18 chore(deps): update dependency @types/mongoose to v5.5.7 2019-07-01 20:31:18 +00:00
Kamil Myśliwiec
0fb20e1e53 Merge branch 'master' of https://github.com/nestjs/nest 2019-07-01 22:13:37 +02:00
Kamil Myśliwiec
2487ab855e feat(microservice): register modules on init call #2350 2019-07-01 22:13:08 +02:00
Kamil Mysliwiec
eccd5d2b0c Merge pull request #2483 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v6.4.0
2019-07-01 22:03:44 +02:00
Kamil Myśliwiec
e8a66ea35b test(): increase test coverage (unit tests) 2019-07-01 21:33:34 +02:00
Renovate Bot
093ccfe7b7 fix(deps): update nest monorepo to v6.4.0 2019-07-01 14:58:35 +00:00
Kamil Myśliwiec
8bd4fe2718 deps(): remove needless dependency 2019-07-01 15:26:19 +02:00
Kamil Myśliwiec
dd6d28972a deps(): update to latest grpc packages 2019-07-01 15:14:45 +02:00
Kamil Myśliwiec
e2cb91df99 chore(@nestjs) publish v6.4.0 release 2019-07-01 14:48:59 +02:00
Kamil Myśliwiec
50c352f005 chore(): publish 6.4.0 release 2019-07-01 14:47:53 +02:00
Kamil Myśliwiec
8b10990867 Merge branch 'SPIRIT-21-master' 2019-07-01 14:41:29 +02:00
Kamil Myśliwiec
54cccd08cd sample(swagger): fix typings, Cat class 2019-07-01 14:41:11 +02:00
Kamil Myśliwiec
5936218b02 Merge branch 'master' of https://github.com/SPIRIT-21/nest into SPIRIT-21-master 2019-07-01 14:39:31 +02:00
Kamil Myśliwiec
51ac79ac91 Merge branch 'master' of https://github.com/nestjs/nest 2019-07-01 14:38:25 +02:00
Kamil Myśliwiec
75c541ad30 fix(microservices): fix redis retrying strategy (recover) 2019-07-01 14:37:36 +02:00
Kamil Myśliwiec
77a8027fef feat(core): use static exception filters for request-scope 2019-07-01 14:16:48 +02:00
Kamil Mysliwiec
48f32577ee Merge pull request #2482 from nestjs/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.35.2
2019-07-01 13:54:26 +02:00
Renovate Bot
fe35120b24 chore(deps): update dependency webpack to v4.35.2 2019-07-01 09:33:09 +00:00
Kamil Myśliwiec
ec5dd3634d improvement(core): throw error when recursion happens 2019-07-01 10:52:55 +02:00
Kamil Myśliwiec
4dddcdf67d Merge branch 'master' of https://github.com/nestjs/nest 2019-07-01 09:28:58 +02:00
Kamil Myśliwiec
bb1675a18d Merge branch 'underfin-exection-context-next' 2019-07-01 09:28:38 +02:00
Kamil Myśliwiec
a7a8dc4f55 Merge branch 'exection-context-next' of https://github.com/underfin/nest into underfin-exection-context-next 2019-07-01 09:19:41 +02:00
Kamil Mysliwiec
0d4fedb22e Merge pull request #2480 from nestjs/renovate/pin-dependencies
fix(deps): pin dependencies
2019-07-01 08:54:20 +02:00
Renovate Bot
89bb7ca7b2 fix(deps): pin dependencies 2019-07-01 06:40:53 +00:00
Kamil Mysliwiec
2e6e3a41e2 Merge pull request #2471 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.6.2
2019-07-01 08:38:44 +02:00
Kamil Mysliwiec
6f360bf74f Merge pull request #2472 from nestjs/renovate/graphql-14.x
fix(deps): update dependency graphql to v14.4.1
2019-07-01 08:37:21 +02:00
Kamil Mysliwiec
dcb9038af4 Merge pull request #2475 from nestjs/renovate/ts-morph-3.x
fix(deps): update dependency ts-morph to v3
2019-07-01 08:37:09 +02:00
Kamil Mysliwiec
a70c46b320 Merge pull request #2479 from myeveryheart/patch-1
sample(): fix missing "swagger-ui-express" package
2019-07-01 08:36:52 +02:00
Mario
5bed57702d The "swagger-ui-express" package is missing.
fix The "swagger-ui-express" package is missing.
2019-07-01 12:00:00 +08:00
Renovate Bot
6997c16173 fix(deps): update dependency ts-morph to v3 2019-06-29 17:25:17 +00:00
Renovate Bot
7418cd34db fix(deps): update dependency graphql to v14.4.1 2019-06-28 22:49:34 +00:00
Renovate Bot
ac5107d194 fix(deps): update dependency mongoose to v5.6.2 2019-06-28 21:26:41 +00:00
Kamil Myśliwiec
5b552209a5 Merge branch 'Geass1000-pattern-to-route' 2019-06-28 13:58:06 +02:00
Kamil Myśliwiec
5084c56e3a integration(): fix ws not opened issue (tests) 2019-06-28 13:56:08 +02:00
Kamil Myśliwiec
fd62211230 refactor(): adjust to the repo coding guidelines 2019-06-28 13:29:34 +02:00
Kamil Myśliwiec
18bd0fd110 Merge branch 'pattern-to-route' of https://github.com/Geass1000/nest into Geass1000-pattern-to-route 2019-06-28 12:51:19 +02:00
Kamil Myśliwiec
1d6c5ad559 Merge branch 'master' of https://github.com/nestjs/nest 2019-06-28 12:46:40 +02:00
Kamil Myśliwiec
436528d39a Merge branch 'BrunnerLivio-feature/application-config-injectable' 2019-06-28 12:46:28 +02:00
Kamil Myśliwiec
a6b1720d3c refactor(): remove needless metatype property 2019-06-28 12:45:47 +02:00
Kamil Mysliwiec
f9979897bc Merge pull request #2368 from nestjs/renovate/prisma-binding-2.x
fix(deps): update dependency prisma-binding to v2.3.15
2019-06-28 12:40:06 +02:00
Kamil Myśliwiec
12568772f6 Merge branch 'feature/application-config-injectable' of https://github.com/BrunnerLivio/nest into BrunnerLivio-feature/application-config-injectable 2019-06-28 12:33:55 +02:00
Kamil Myśliwiec
499c0b1390 hotfix(): fix integration tests typing issue 2019-06-28 12:33:24 +02:00
Kamil Myśliwiec
5fe51f7cdb Merge branch 'zenozen-module-token-factory-replacer' 2019-06-28 11:56:08 +02:00
Kamil Myśliwiec
0cab179e7a docs(core): add comment to the replacer function 2019-06-28 11:55:53 +02:00
Kamil Myśliwiec
db9f95b340 Merge branch 'module-token-factory-replacer' of https://github.com/zenozen/nest into zenozen-module-token-factory-replacer 2019-06-28 11:52:16 +02:00
Kamil Myśliwiec
dc219bf0a6 Merge branch 'master' of https://github.com/nestjs/nest 2019-06-28 11:51:58 +02:00
Kamil Myśliwiec
6e99ef3a1e refactor(core): use initial value in scanner 2019-06-28 11:51:47 +02:00
Kamil Mysliwiec
9008adb4e2 Merge pull request #2448 from nestjs/renovate/fastify-multipart-1.x
fix(deps): update dependency fastify-multipart to v1.0.1
2019-06-28 11:48:52 +02:00
Kamil Mysliwiec
9ca902c748 Merge pull request #2465 from nestjs/renovate/cache-manager-1.x
chore(deps): update dependency @types/cache-manager to v1.2.8
2019-06-28 11:42:06 +02:00
Kamil Mysliwiec
daa6739189 Merge pull request #2468 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.9.0
2019-06-28 11:41:46 +02:00
Kamil Mysliwiec
7886cad8a1 Merge pull request #2449 from nestjs/renovate/apollo-server-monorepo
fix(deps): update dependency apollo-server-express to v2.6.7
2019-06-28 11:41:32 +02:00
Renovate Bot
7f30326f7d fix(deps): update dependency sequelize to v5.9.0 2019-06-28 05:11:54 +00:00
Renovate Bot
dc8e94f076 fix(deps): update dependency fastify-multipart to v1.0.1 2019-06-27 21:19:25 +00:00
Renovate Bot
ee08f4e2dc fix(deps): update dependency apollo-server-express to v2.6.7 2019-06-27 21:15:41 +00:00
Renovate Bot
eada57b13c chore(deps): update dependency @types/cache-manager to v1.2.8 2019-06-27 21:08:54 +00:00
Kamil Mysliwiec
4cf9ba6cca Merge pull request #2452 from nestjs/renovate/amqp-connection-manager-2.x
fix(deps): update dependency amqp-connection-manager to v2.3.3
2019-06-27 23:05:19 +02:00
Kamil Mysliwiec
607cd30e2c Merge pull request #2451 from nestjs/renovate/fastify-2.x
fix(deps): update dependency fastify to v2.6.0
2019-06-27 23:05:02 +02:00
Kamil Mysliwiec
d7102e316b Merge pull request #2453 from nestjs/renovate/concurrently-4.x
chore(deps): update dependency concurrently to v4.1.1
2019-06-27 23:04:49 +02:00
Kamil Mysliwiec
c0327241bc Merge pull request #2459 from nestjs/renovate/graphql-14.x
fix(deps): update dependency graphql to v14.4.0
2019-06-27 23:04:37 +02:00
Kamil Mysliwiec
2e28d6a89b Merge pull request #2463 from nestjs/renovate/amqplib-0.x
chore(deps): update dependency @types/amqplib to v0.5.13
2019-06-27 23:03:26 +02:00
Renovate Bot
79554c8ab6 chore(deps): update dependency @types/amqplib to v0.5.13 2019-06-27 16:34:37 +00:00
Renovate Bot
7fc3db8a58 fix(deps): update dependency graphql to v14.4.0 2019-06-26 18:39:16 +00:00
Zeno
5fca17341a fix(core) add a replacer to handle functions/classes when creating module tokens 2019-06-26 15:46:17 +00:00
Renovate Bot
b08bd60793 chore(deps): update dependency concurrently to v4.1.1 2019-06-25 20:57:55 +00:00
Renovate Bot
2e8d5f558a fix(deps): update dependency amqp-connection-manager to v2.3.3 2019-06-25 20:03:09 +00:00
Renovate Bot
16530e5fad fix(deps): update dependency fastify to v2.6.0 2019-06-25 18:21:42 +00:00
Kamil Mysliwiec
0ba0811488 Merge pull request #2441 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.6.1
2019-06-24 21:06:42 +02:00
Renovate Bot
6846e51e09 fix(deps): update dependency mongoose to v5.6.1 2019-06-24 18:41:52 +00:00
Andrey
52caa020fd refactor(microservices): use MsPattern interface instead of any type 2019-06-24 11:15:24 +03:00
Andrey
5763e2fc56 refactor(microservices): use equalTest function instead of repeated tests 2019-06-24 11:01:00 +03:00
Andrey
ed18eacebd test(microservices): rework tests for number values 2019-06-24 11:01:00 +03:00
Andrey
2faca6634e feature(microservices): add handling of fields with number type 2019-06-24 11:01:00 +03:00
Andrey
ff6c46e0fe refactor(microservices): use MsPattern interface instead of any 2019-06-24 11:01:00 +03:00
Andrey
49bda5c807 feature(microservices): add interface for pattern 2019-06-24 10:44:24 +03:00
Kamil Mysliwiec
1818bc9726 Merge pull request #2435 from nestjs/renovate/webpack-cli-3.x
chore(deps): update dependency webpack-cli to v3.3.5
2019-06-23 16:04:24 +02:00
Kamil Mysliwiec
239452b1f8 Merge pull request #2432 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v6.3.2
2019-06-23 16:04:14 +02:00
Renovate Bot
7dae9079dd chore(deps): update dependency webpack-cli to v3.3.5 2019-06-23 12:56:50 +00:00
Renovate Bot
5ac3cde757 fix(deps): update nest monorepo to v6.3.2 2019-06-22 21:45:23 +00:00
Kamil Myśliwiec
661d08d0cd chore(): publish 6.3.2 release 2019-06-22 23:41:19 +02:00
Kamil Myśliwiec
43d2068828 chore(@nestjs) publish v6.3.2 release 2019-06-22 23:40:29 +02:00
Kamil Mysliwiec
564d43d6d8 Merge pull request #2431 from tychota/fix/grpc-credentials-client
Fix "Channel options must be an object with (...) string values"
2019-06-22 23:38:36 +02:00
Kamil Myśliwiec
41dae583fb fix(common): add type guard to isNil util #2418 2019-06-22 23:37:52 +02:00
Kamil Myśliwiec
5166629ea8 fix(microservices): add missing user option to NATS #2426 2019-06-22 23:37:33 +02:00
TychoTa
44126e9636 bugfix(microservices) remove credentials from options to fix TypeError
I use to have the following exception:
```
(node:19) UnhandledPromiseRejectionWarning: TypeError: Channel options must be an object with string keys and integer or string values
```
I was passing down a credential object to the options like this:
```
const credentials = grpc.credentials.createSsl(
  readFileSync('/srv/certs/rootCA.pem'),
  readFileSync('/srv/certs/server.key'),
  readFileSync('/srv/certs/server.crt')
  );

// later
  @Client({
    transport: Transport.GRPC,
    options: {
      url: 'ms-proxy:50051',
      package: 'hero',
      protoPath: join(__dirname, '..', 'proto/hero.proto'),
      credentials,
    },
  })
``
2019-06-22 17:18:53 +02:00
Kamil Mysliwiec
ae904fd85b Merge pull request #2380 from nestjs/renovate/node-10.x
chore(deps): update dependency @types/node to v10.14.10
2019-06-22 17:08:05 +02:00
Renovate Bot
64b6269d7d fix(deps): update dependency prisma-binding to v2.3.15 2019-06-22 15:07:48 +00:00
Renovate Bot
2f1c6f20da chore(deps): update dependency @types/node to v10.14.10 2019-06-22 15:07:34 +00:00
Kamil Mysliwiec
cae1633010 Merge pull request #2364 from nestjs/renovate/webpack-cli-3.x
chore(deps): update dependency webpack-cli to v3.3.4
2019-06-22 17:00:54 +02:00
Kamil Mysliwiec
86c723c730 Merge pull request #2371 from nestjs/renovate/lerna-monorepo
chore(deps): update dependency lerna to v3.15.0
2019-06-22 17:00:22 +02:00
Kamil Mysliwiec
9a622ea33c Merge pull request #2423 from nestjs/renovate/ts-loader-6.x
chore(deps): update dependency ts-loader to v6.0.4
2019-06-22 16:59:52 +02:00
Kamil Mysliwiec
317f642c3e Merge pull request #2424 from nestjs/renovate/graphql-tools-4.x
fix(deps): update dependency graphql-tools to v4.0.5
2019-06-22 16:59:37 +02:00
Kamil Mysliwiec
d69542238c Merge pull request #2425 from nestjs/renovate/pug-2.x
fix(deps): update dependency pug to v2.0.4
2019-06-22 16:59:06 +02:00
Kamil Mysliwiec
b54a1b311d Merge pull request #2427 from nestjs/renovate/ws-7.x
fix(deps): update dependency ws to v7.0.1
2019-06-22 16:57:42 +02:00
Kamil Mysliwiec
520977d0d2 Merge pull request #2429 from nestjs/renovate/tslint-5.x
chore(deps): update dependency tslint to v5.18.0
2019-06-22 16:57:31 +02:00
Kamil Mysliwiec
81dd385aaf Merge pull request #2430 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.8.12
2019-06-22 16:57:09 +02:00
Kamil Mysliwiec
cb2ca9efeb Merge pull request #2363 from nestjs/renovate/prettier-1.x
chore(deps): update dependency prettier to v1.18.2
2019-06-22 16:56:53 +02:00
Renovate Bot
de260afda0 fix(deps): update dependency sequelize to v5.8.12 2019-06-22 14:05:35 +00:00
Kamil Mysliwiec
6625bfda89 Update Readme.md 2019-06-22 13:51:09 +02:00
Renovate Bot
144a5306f0 chore(deps): update dependency tslint to v5.18.0 2019-06-21 15:29:33 +00:00
Renovate Bot
ef782ff98e chore(deps): update dependency ts-loader to v6.0.4 2019-06-21 10:43:15 +00:00
Andrey
5ddd8cb74e style(microservices): change indentation to space (2) 2019-06-21 13:35:48 +03:00
Renovate Bot
18d020b201 fix(deps): update dependency ws to v7.0.1 2019-06-21 09:57:09 +00:00
Renovate Bot
6af9fad092 chore(deps): update dependency webpack-cli to v3.3.4 2019-06-21 08:34:42 +00:00
Renovate Bot
49ebc2b4cd chore(deps): update dependency prettier to v1.18.2 2019-06-21 08:33:57 +00:00
Renovate Bot
eb3b1766b2 chore(deps): update dependency lerna to v3.15.0 2019-06-21 08:32:00 +00:00
Renovate Bot
8b0db0d19f fix(deps): update dependency pug to v2.0.4 2019-06-21 08:06:33 +00:00
Renovate Bot
b6c80a0113 fix(deps): update dependency graphql-tools to v4.0.5 2019-06-21 08:05:59 +00:00
Kamil Mysliwiec
0a4b29a5eb Merge pull request #2362 from nestjs/renovate/apollo-server-monorepo
fix(deps): update dependency apollo-server-express to v2.6.4
2019-06-21 09:59:09 +02:00
Kamil Mysliwiec
1400f18b14 Merge pull request #2365 from nestjs/renovate/iterare-1.x
fix(deps): update dependency iterare to v1.2.0
2019-06-21 09:58:56 +02:00
Kamil Mysliwiec
2c5de9e3c8 Merge pull request #2367 from nestjs/renovate/nats-1.x
fix(deps): update dependency nats to v1.3.0
2019-06-21 09:58:39 +02:00
Kamil Mysliwiec
aa855df73b Merge pull request #2370 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.6.0
2019-06-21 09:58:13 +02:00
Kamil Mysliwiec
4a94436a85 Merge pull request #2372 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.8.11
2019-06-21 09:58:02 +02:00
Kamil Mysliwiec
7afc3f78d1 Merge pull request #2382 from nestjs/renovate/fastify-2.x
fix(deps): update dependency fastify to v2.5.0
2019-06-21 09:57:46 +02:00
Kamil Mysliwiec
3f68e239da Merge pull request #2385 from nestjs/renovate/sinon-7.x
chore(deps): update dependency @types/sinon to v7.0.13
2019-06-21 09:57:20 +02:00
Kamil Mysliwiec
96fd31d73f Merge pull request #2386 from nestjs/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.35.0
2019-06-21 09:57:11 +02:00
Kamil Mysliwiec
645080ef1d Merge pull request #2388 from nestjs/renovate/jest-24.x
chore(deps): update dependency @types/jest to v24.0.15
2019-06-21 09:56:07 +02:00
Kamil Mysliwiec
c3c736ec4e Merge pull request #2391 from nestjs/renovate/typescript-3.x
fix(deps): update dependency typescript to v3.5.2
2019-06-21 09:55:51 +02:00
Kamil Mysliwiec
c14322116e Merge pull request #2392 from nestjs/renovate/lint-staged-8.x
chore(deps): update dependency lint-staged to v8.2.1
2019-06-21 09:55:36 +02:00
Kamil Mysliwiec
2ce5c57e9a Merge pull request #2402 from nestjs/renovate/ts-node-8.x
chore(deps): update dependency ts-node to v8.3.0
2019-06-21 09:55:18 +02:00
Kamil Mysliwiec
6343ca569e Merge pull request #2403 from nestjs/renovate/core-js-3.x
chore(deps): update dependency core-js to v3.1.4
2019-06-21 09:55:07 +02:00
Kamil Mysliwiec
caa08567be Merge pull request #2409 from nestjs/renovate/fastify-static-2.x
chore(deps): update dependency fastify-static to v2.5.0
2019-06-21 09:54:13 +02:00
Renovate Bot
93d9c5ce1e fix(deps): update dependency sequelize to v5.8.11 2019-06-21 05:41:53 +00:00
Renovate Bot
8d52b9f942 fix(deps): update dependency apollo-server-express to v2.6.4 2019-06-20 21:00:49 +00:00
Andrey
4349b142cc test(microservices): add tests for new pattern-route logic 2019-06-20 18:47:36 +03:00
Andrey
0fa72b6f14 feature(microservices): use MsvcUtil as a class property 2019-06-20 18:28:36 +03:00
Andrey
4003514763 test(microservices): add tests for new pattern-route logic 2019-06-20 18:17:51 +03:00
Andrey
16ee6cc4d7 feature(microservices): use MsvcUtil in addHandler instead of getRouteFromPattern 2019-06-20 18:17:51 +03:00
Andrey
0bc3684497 feature(microservices): use MsvcUtil as a class property 2019-06-20 18:17:51 +03:00
Andrey
4156166098 test(microservices): regroup test suites 2019-06-20 18:17:20 +03:00
Andrey
58214a1017 test(microservices): add tests for transformPatternToRoute utility method 2019-06-20 18:17:20 +03:00
Andrey
1bebe98af8 feature(microservices): use braces to divide route by scope 2019-06-20 18:17:20 +03:00
Andrey
9e45797c3b feature(microservices): use recursion for nested pattern object 2019-06-20 18:16:59 +03:00
Andrey
43b85aa49d feature(microservices): add logic to transform patterns to routes 2019-06-20 18:16:15 +03:00
Andrey
df9f6ec5c9 feature(microservices): add index reexport file 2019-06-20 18:16:15 +03:00
Andrey
216645f105 feature(microservices): add transformPatternToRoute utility 2019-06-20 18:16:02 +03:00
Renovate Bot
7ffad07595 chore(deps): update dependency webpack to v4.35.0 2019-06-20 04:53:32 +00:00
Livio
f076ac020b test(): Add integration test for core injectables 2019-06-18 00:12:51 +02:00
Livio
26e4b1038b test(): Add integration test for ApplicationConfig 2019-06-18 00:08:04 +02:00
Livio
94949fee6e feat(core): Add ApplicationConfig as core provider
- Exposes the `ApplicationConfig` class to the public API
- Resolves #2410
2019-06-18 00:07:23 +02:00
Renovate Bot
2e4e6f398a chore(deps): update dependency fastify-static to v2.5.0 2019-06-17 11:02:56 +00:00
Kamil Myśliwiec
a3304441f8 Merge branch 'master' of https://github.com/nestjs/nest 2019-06-17 10:50:17 +02:00
Kamil Myśliwiec
82513b0c96 sample(): fix microservice sample code 2019-06-17 10:49:40 +02:00
Renovate Bot
c0b4c4a0a6 chore(deps): update dependency @types/jest to v24.0.15 2019-06-16 06:26:01 +00:00
Renovate Bot
a99ded1e16 chore(deps): update dependency core-js to v3.1.4 2019-06-15 12:04:30 +00:00
Renovate Bot
d60d171633 chore(deps): update dependency ts-node to v8.3.0 2019-06-15 01:05:29 +00:00
Renovate Bot
1dcf047474 fix(deps): update dependency mongoose to v5.6.0 2019-06-14 21:17:15 +00:00
Renovate Bot
0683cc7823 chore(deps): update dependency lint-staged to v8.2.1 2019-06-13 18:54:30 +00:00
Renovate Bot
ffd38c534d fix(deps): update dependency typescript to v3.5.2 2019-06-13 17:54:23 +00:00
Renovate Bot
91e88e8e89 chore(deps): update dependency @types/sinon to v7.0.13 2019-06-12 19:16:42 +00:00
Renovate Bot
8452e068dd fix(deps): update dependency fastify to v2.5.0 2019-06-12 10:52:29 +00:00
likui
1161a7a0ee feat(@nestjs/core): support getNext after swithToHttp from ExecutionContext. #1484 2019-06-08 20:56:33 +08:00
Renovate Bot
2296f129b7 fix(deps): update dependency nats to v1.3.0 2019-06-07 15:39:06 +00:00
Renovate Bot
ef42ca91a3 fix(deps): update dependency iterare to v1.2.0 2019-06-07 12:37:49 +00:00
Kamil Mysliwiec
56071d0765 Merge pull request #2351 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v6.3.1
2019-06-06 21:33:53 +02:00
Renovate Bot
fe89046b79 fix(deps): update nest monorepo to v6.3.1 2019-06-06 19:16:45 +00:00
Kamil Mysliwiec
7041d05e4a Merge pull request #2352 from nestjs/renovate/nestjs-graphql-6.x
fix(deps): update dependency @nestjs/graphql to v6.2.4
2019-06-06 21:12:45 +02:00
Kamil Mysliwiec
7a313e4425 Merge pull request #2353 from nestjs/renovate/lint-staged-8.x
chore(deps): update dependency lint-staged to v8.2.0
2019-06-06 21:08:55 +02:00
Kamil Mysliwiec
4e1590d0a0 Update package.json 2019-06-06 21:05:32 +02:00
Kamil Mysliwiec
70b7cc083b Merge pull request #2358 from mkaufmaner/patch-1
chore(): fix github sponsor link
2019-06-06 15:56:36 +02:00
Michael Kaufman
1068aa33d6 Fixes Funding Link
chore() Fixes broken funding link for open collective
2019-06-06 09:20:03 -04:00
Renovate Bot
7e8ebeafc8 chore(deps): update dependency lint-staged to v8.2.0 2019-06-06 08:52:01 +00:00
Renovate Bot
440587a0fb fix(deps): update dependency @nestjs/graphql to v6.2.4 2019-06-06 08:21:58 +00:00
Kamil Mysliwiec
6f9fcaf52f Update package.json 2019-06-06 09:23:13 +02:00
Kamil Mysliwiec
f6aa7b233a Merge pull request #2349 from nestjs/renovate/coveralls-3.x
chore(deps): update dependency coveralls to v3.0.4
2019-06-06 09:18:33 +02:00
Kamil Mysliwiec
5b22f54939 Merge pull request #2340 from nestjs/renovate/nestjs-graphql-6.x
fix(deps): update dependency @nestjs/graphql to v6.2.3
2019-06-06 09:18:27 +02:00
Kamil Mysliwiec
e0af8d5d3a Merge pull request #2342 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.5.13
2019-06-06 09:18:19 +02:00
Kamil Myśliwiec
4be19db0ec chore(@nestjs) publish v6.3.1 release 2019-06-06 09:14:19 +02:00
Kamil Myśliwiec
78f9800088 update lerna.json 2019-06-06 09:12:17 +02:00
Kamil Myśliwiec
a3a016e57a Merge branch 'master' of https://github.com/nestjs/nest 2019-06-06 09:10:52 +02:00
Kamil Myśliwiec
bbb3f9475c chore(@nestjs) publish v6.3.1 release 2019-06-06 09:10:11 +02:00
Renovate Bot
6e14da40ad chore(deps): update dependency coveralls to v3.0.4 2019-06-05 23:56:50 +00:00
Kamil Myśliwiec
f210ebca2f fix(core): invalid scopes on module re-export #2341 2019-06-05 22:21:55 +02:00
Renovate Bot
b113d3257e fix(deps): update dependency mongoose to v5.5.13 2019-06-05 15:39:11 +00:00
Renovate Bot
936f7dd283 fix(deps): update dependency @nestjs/graphql to v6.2.3 2019-06-05 11:24:11 +00:00
Kamil Mysliwiec
5c84a78f02 Merge pull request #2339 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v6.3.0
2019-06-05 10:53:55 +02:00
Renovate Bot
020c0fce0d fix(deps): update nest monorepo to v6.3.0 2019-06-05 08:40:18 +00:00
Kamil Myśliwiec
1167450310 chore(): publish 6.3.0 release 2019-06-05 10:37:01 +02:00
Kamil Myśliwiec
13feee14ab chore(@nestjs) publish v6.3.0 release 2019-06-05 10:35:48 +02:00
Kamil Myśliwiec
3ea9193708 Merge branch 'master' of https://github.com/nestjs/nest 2019-06-05 10:34:17 +02:00
Kamil Myśliwiec
2016fd04ab chore(): publish 6.3.0 release 2019-06-05 10:34:07 +02:00
Kamil Mysliwiec
99eb93d88e Merge pull request #2314 from nestjs/renovate/node-10.x
chore(deps): update dependency @types/node to v10.14.8
2019-06-05 09:58:13 +02:00
Renovate Bot
90fe90f158 chore(deps): update dependency @types/node to v10.14.8 2019-06-05 07:56:52 +00:00
Kamil Mysliwiec
366bcaf432 Merge pull request #2311 from nestjs/renovate/axios-0.x
fix(deps): update dependency axios to v0.19.0
2019-06-05 09:51:59 +02:00
Kamil Mysliwiec
1824a9fe59 Merge pull request #2262 from underfin/provider-useExisting
feat(core): support useExisting provider #2415
2019-06-05 09:51:44 +02:00
Kamil Mysliwiec
6a606b027f Merge pull request #2332 from nestjs/renovate/mongoose-5.x
chore(deps): update dependency @types/mongoose to v5.5.5
2019-06-05 09:49:29 +02:00
Kamil Mysliwiec
da854518fd Merge pull request #2333 from nestjs/renovate/mongodb-3.x
fix(deps): update dependency mongodb to v3.2.7
2019-06-05 09:49:20 +02:00
Kamil Mysliwiec
b8fb5edd8d Merge pull request #2334 from nestjs/renovate/typeorm-0.x
fix(deps): update dependency typeorm to v0.2.18
2019-06-05 09:48:58 +02:00
Kamil Mysliwiec
cf1a911525 Merge pull request #2335 from nestjs/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.33.0
2019-06-05 09:48:45 +02:00
Kamil Mysliwiec
ff39013882 Merge pull request #2336 from nestjs/renovate/express-4.x
chore(deps): update dependency @types/express to v4.17.0
2019-06-05 09:48:36 +02:00
Kamil Myśliwiec
d856a5570c feature(microservices): add RequestContext to request scoped 2019-06-05 09:48:03 +02:00
Kamil Myśliwiec
999da7655d refactor(common): simplify isUUID helper function 2019-06-05 09:47:40 +02:00
Renovate Bot
7db09f0679 chore(deps): update dependency @types/express to v4.17.0 2019-06-04 20:51:51 +00:00
Renovate Bot
7957a63930 chore(deps): update dependency webpack to v4.33.0 2019-06-04 19:49:06 +00:00
Renovate Bot
f0d49435c1 fix(deps): update dependency typeorm to v0.2.18 2019-06-04 18:42:17 +00:00
Renovate Bot
1565d85e66 fix(deps): update dependency mongodb to v3.2.7 2019-06-04 18:18:09 +00:00
Renovate Bot
355cde1d52 chore(deps): update dependency @types/mongoose to v5.5.5 2019-06-03 23:53:45 +00:00
Renovate Bot
250c3d0099 fix(deps): update dependency axios to v0.19.0 2019-06-03 20:38:20 +00:00
Kamil Mysliwiec
4624a24199 Merge pull request #2313 from nestjs/renovate/mocha-5.x
chore(deps): update dependency @types/mocha to v5.2.7
2019-06-03 22:29:17 +02:00
Kamil Mysliwiec
75f391a536 Merge pull request #2318 from nestjs/renovate/sequelize-4.x
chore(deps): update dependency @types/sequelize to v4.28.3
2019-06-03 22:28:44 +02:00
Kamil Mysliwiec
ca021b9390 Merge pull request #2319 from nestjs/renovate/tslint-5.x
chore(deps): update dependency tslint to v5.17.0
2019-06-03 22:27:03 +02:00
Kamil Mysliwiec
7b669e3668 Merge pull request #2321 from nestjs/renovate/ts-loader-6.x
chore(deps): update dependency ts-loader to v6.0.2
2019-06-03 22:26:45 +02:00
Kamil Mysliwiec
b7e2bb7663 Merge pull request #2324 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.5.12
2019-06-03 22:26:28 +02:00
Kamil Mysliwiec
4d11d1fbf5 Merge pull request #2325 from nestjs/renovate/apollo-server-monorepo
fix(deps): update dependency apollo-server-express to v2.6.1
2019-06-03 22:26:19 +02:00
Kamil Mysliwiec
354793c272 Merge pull request #2330 from nestjs/renovate/nestjs-typeorm-6.x
fix(deps): update dependency @nestjs/typeorm to v6.1.2
2019-06-03 21:52:33 +02:00
Renovate Bot
bff1199255 fix(deps): update dependency @nestjs/typeorm to v6.1.2 2019-06-03 19:41:40 +00:00
Renovate Bot
f94d3a43c9 fix(deps): update dependency apollo-server-express to v2.6.1 2019-05-31 23:56:13 +00:00
Renovate Bot
8f80407b91 fix(deps): update dependency mongoose to v5.5.12 2019-05-31 10:51:39 +00:00
Renovate Bot
61e0b27200 chore(deps): update dependency ts-loader to v6.0.2 2019-05-31 04:45:39 +00:00
likui
0ff1612111 feat(@nestjs/core): support useExisting provider #2415 2019-05-31 11:13:14 +08:00
Renovate Bot
44198f1dd0 chore(deps): update dependency tslint to v5.17.0 2019-05-30 20:23:35 +00:00
Renovate Bot
1d26de5fd4 chore(deps): update dependency @types/sequelize to v4.28.3 2019-05-30 19:53:45 +00:00
Renovate Bot
6618b43019 chore(deps): update dependency @types/mocha to v5.2.7 2019-05-30 18:27:52 +00:00
Kamil Myśliwiec
343fb310ce Merge branch 'master' of https://github.com/nestjs/nest 2019-05-30 16:45:20 +02:00
Kamil Myśliwiec
d4f1bc7bb7 Merge branch 'Hossein-s-fix-create-param-decorator' 2019-05-30 16:44:45 +02:00
Kamil Mysliwiec
d1189a7348 Merge pull request #2106 from nestjs/renovate/ts-morph-2.x
fix(deps): update dependency ts-morph to v2.3.0
2019-05-30 16:42:48 +02:00
Kamil Myśliwiec
3ee0650433 merge changes 2019-05-30 16:41:54 +02:00
Kamil Myśliwiec
8d367c415b Merge branch 'underfin-rmq-options-noack' 2019-05-30 16:40:24 +02:00
Kamil Myśliwiec
1981830bbe refactor(microservices): adjust code style (ClientRMQ) 2019-05-30 16:39:56 +02:00
Kamil Myśliwiec
19e55fe2df Merge branch 'rmq-options-noack' of https://github.com/underfin/nest into underfin-rmq-options-noack 2019-05-30 16:38:20 +02:00
Kamil Myśliwiec
4de5400083 Merge branch 'master' of https://github.com/nestjs/nest 2019-05-30 16:35:33 +02:00
Kamil Mysliwiec
ee487dbfc3 Merge pull request #2254 from FSM1/fsm1-allow-class-transformer-enableImplicitConversion
class-transformer enableImplicitConversion flag added
2019-05-30 16:34:53 +02:00
Kamil Mysliwiec
31d53cda6c Merge pull request #2304 from TheNoim/allow-validation-for-custom-decorators
feature(common): add option to allow validation of custom decorators
2019-05-30 16:33:58 +02:00
Kamil Myśliwiec
e6a19c37f1 Merge branch 'master' of https://github.com/nestjs/nest 2019-05-30 16:32:51 +02:00
Kamil Myśliwiec
cd65de5d31 Merge branch 'gperdomor-uuid-pipes' 2019-05-30 16:32:08 +02:00
Kamil Myśliwiec
336c9b44c5 refactor(common): adjust code style (ParseUUIDPipe) 2019-05-30 16:31:24 +02:00
Kamil Myśliwiec
bbc53dc28b Merge branch 'uuid-pipes' of https://github.com/gperdomor/nest into gperdomor-uuid-pipes 2019-05-30 16:21:25 +02:00
Kamil Mysliwiec
dddf7b9a00 Merge pull request #2240 from BrunnerLivio/feature/client-proxy-factory-overload
feature(microservices): Return correct client type in ClientProxyFactory
2019-05-30 15:39:34 +02:00
Kamil Mysliwiec
524e78f362 Merge pull request #2272 from reegnz/bugfix/disable-opencollective-message-in-ci
bugfix(core): Upgrade opencollective dependency
2019-05-30 15:39:00 +02:00
Kamil Mysliwiec
19bafaeceb Merge pull request #2307 from nestjs/renovate/apollo-server-monorepo
fix(deps): update dependency apollo-server-express to v2.5.1
2019-05-30 15:38:12 +02:00
Kamil Myśliwiec
d88b920dba refactor(microservices): move client options for every client 2019-05-30 15:36:34 +02:00
Renovate Bot
230ae4da95 fix(deps): update dependency apollo-server-express to v2.5.1 2019-05-30 13:24:58 +00:00
Kamil Myśliwiec
8664505d82 refactor(core): provider types refactor 2019-05-30 15:12:33 +02:00
Kamil Myśliwiec
275a97a84d feat(grpc): add more options to grpcClient (max message length) 2019-05-30 14:53:19 +02:00
Kamil Myśliwiec
aed28959b8 bugfix(core): ensure that injectables array is a set of unique values 2019-05-30 14:52:46 +02:00
Kamil Myśliwiec
9acb208dbe fix(): remove duplicated isInitalized property of NestApplication 2019-05-30 14:08:43 +02:00
Kamil Myśliwiec
fd45cdca46 Merge branch 'BrunnerLivio-feature/public-init' 2019-05-30 13:58:20 +02:00
Kamil Myśliwiec
6d2a8c8861 refactor(): resolve conflicts, remove duplicated init() 2019-05-30 13:57:59 +02:00
Kamil Myśliwiec
637ada0600 Merge branch 'AlexDaSoul-master' 2019-05-30 13:49:47 +02:00
Nils Bergmann
971d92e7fd feature(common): add option to allow validation of custom decorators
No matter what the reason is to not validate custom decorators, you should be able to at least provide an option
2019-05-30 13:38:14 +02:00
Renovate Bot
47326e7a5d fix(deps): update dependency ts-morph to v2.3.0 2019-05-30 01:00:33 +00:00
Zoltán Reegn
7276451fc9 bugfix(core): Upgrade opencollective dependency
In v0.2.2 it is now possible to suppress the opencollective message
properly with multiple kinds of environment variables.

Fixes #2264
2019-05-24 16:35:24 +02:00
Livio
17cb7ff2a4 feature(microservices): ClientProxyFactory return GRPC client type
Add overload to the ClientProxyFactory for better type security.
This allows the user to not cast the GRPC client to any
after creating it using the factory.
2019-05-22 18:45:42 +02:00
Gustavo Perdomo
8d42c0d3d0 add exception factory 2019-05-22 11:33:20 -04:00
Michael Yankelev
cd86c5b66b enableImplicitConversion flag added 2019-05-22 11:56:11 +02:00
Gustavo Perdomo
b2cd7507b6 revert package lock 2019-05-06 21:37:10 -04:00
Gustavo Perdomo
7440d946ca remove validator deps 2019-05-06 08:49:47 -04:00
Gustavo Perdomo
3319e62d62 uuid pipes 2019-04-23 13:10:02 -04:00
likui
675fd079ac refromat code
I does not consciousness change code with `import`.
2019-04-20 15:48:05 +08:00
likui
102a345077 feat(@nestjs/microservices): ack queue message make option in rabbitMQ microservice #1583 2019-04-20 11:39:58 +08:00
Hossein Sadeghi
f4488781e4 bugfix(common) allow classes as data parameter in createParamDecorator function 2019-03-20 15:44:09 +03:30
Livio
6c5108bf1e feat(@nestjs/core): Add init function on NestApplicationContext to API 2019-03-01 20:16:15 +01:00
Lukas
6897a7e3a5 Merge remote-tracking branch 'upstream/master' 2019-02-05 19:57:24 +01:00
Lukas
8037acfbfb refactor(sample/11) Update the Code to only use the Cat Model 2019-02-05 19:23:13 +01:00
LukvonStrom
0686c39e1c refactor(sample/11) change sample to reflect real world usage + typed responses 2019-01-29 16:01:50 +01:00
198 changed files with 8495 additions and 7591 deletions

2
.github/FUNDING.yml vendored
View File

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

View File

@@ -1,24 +1,58 @@
language: node_js
node_js:
- "8"
- "10"
- "11"
cache:
directories:
- "node_modules"
git:
depth: 5
addons:
firefox: "latest"
before_script:
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
before_install:
- npm i -g npm@latest
install:
- npm ci
- npm run build:dev
script:
- npm run lint
- npm test
after_success: npm run coverage
jobs:
include:
- state: "Test"
name: "Unit Test Node v12"
script: npm test
node_js: 12
after_success: npm run coverage
- state: "Test"
name: "Unit Test Node v10"
script: npm test
node_js: 10
- state: "Test"
name: "Unit Test Node v8"
script: npm test
node_js: 8
- state: "Test"
name: "Integration Test"
install: skip
before_install: skip
before_script: skip
addons: skip
script:
sudo service mysql stop &&
bash ./scripts/prepare.sh &&
npm run integration-test
node_js: 12
- stage: "Test"
name: "Lint"
script: npm run lint
node_js: 12

View File

@@ -15,7 +15,6 @@
<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#9" alt="Coverage" /></a>
<a href="https://gitter.im/nestjs/nestjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=body_badge" target="_blank"><img src="https://badges.gitter.im/nestjs/nestjs.svg" alt="Gitter" /></a>
<a href="https://discord.gg/G7Qnnhy" target="_blank"><img src="https://img.shields.io/badge/discord-online-brightgreen.svg" alt="Discord"/></a>
<a href="https://opencollective.com/nest#backer" target="_blank"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://opencollective.com/nest/sponsors/badge.svg" alt="Sponsors on Open Collective" /></a>
@@ -72,6 +71,7 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
<a href="https://reposit.co.uk/" target="_blank"><img src="https://nestjs.com/img/reposit-logo.png" height="28" valign="middle" /></a> &nbsp; &nbsp; <a href="https://yakaz.com/" target="_blank"><img src="https://nestjs.com/img/yakaz.png" width="80" valign="middle" /></a> &nbsp;
<a href="https://nearpod.com/" target="_blank"><img src="https://nestjs.com/img/nearpod-logo.svg" width="120" valign="middle" /></a> &nbsp;
<a href="https://clay.global/" target="_blank"><img src="https://nestjs.com/img/clay-logo.svg" width="90" valign="middle" /></a> &nbsp;
<a href="https://firesticktricks.com" target="_blank"><img src="https://nestjs.com/img/firesticktricks-logo.png" width="145" valign="middle" /></a> &nbsp;
<a href="http://xtremis.com/" target="_blank"><img src="https://nestjs.com/img/logo-xtremis.svg" width="145" valign="middle" /></a>

View File

@@ -5,17 +5,17 @@
"requires": true,
"dependencies": {
"@apollographql/apollo-tools": {
"version": "0.3.6-alpha.1",
"resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.3.6-alpha.1.tgz",
"integrity": "sha512-fq74In3Vw9OmtKHze0L5/Ns/pdTZOqUeFVC6Um9NRgziVehXz/qswsh2r3+dsn82uqoa/AlvckHtd6aPPPYj9g==",
"version": "0.3.7",
"resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.3.7.tgz",
"integrity": "sha512-+ertvzAwzkYmuUtT8zH3Zi6jPdyxZwOgnYaZHY7iLnMVJDhQKWlkyjLMF8wyzlPiEdDImVUMm5lOIBZo7LkGlg==",
"requires": {
"apollo-env": "0.4.1-alpha.1"
"apollo-env": "0.5.1"
}
},
"@apollographql/graphql-playground-html": {
"version": "1.6.6",
"resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.6.tgz",
"integrity": "sha512-lqK94b+caNtmKFs5oUVXlSpN3sm5IXZ+KfhMxOtr0LR2SqErzkoJilitjDvJ1WbjHlxLI7WtCjRmOLdOGJqtMQ=="
"version": "1.6.20",
"resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.20.tgz",
"integrity": "sha512-3LWZa80HcP70Pl+H4KhLDJ7S0px+9/c8GTXdl6SpunRecUaB27g/oOQnAjNHLHdbWuGE0uyqcuGiTfbKB3ilaQ=="
},
"@babel/code-frame": {
"version": "7.0.0",
@@ -56,36 +56,36 @@
}
},
"@nestjs/common": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.2.4.tgz",
"integrity": "sha512-YZvJ6/S7yVQZK+9rupCzMCg4tpbc9DyVvLoTx0NBDqExTCUNcNEcCtn0AZrO/hLqbeYODnJwGE2NxkH1R/qw+w==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.5.0.tgz",
"integrity": "sha512-i2m2e/AXFGq0l7IPtwv2SrDHbxRPe4ZsuG54B/V68escu1LMpMZcTCjfANTamRvnNR258QQcSVNBMTUX1nTV8w==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.2.4.tgz",
"integrity": "sha512-aYKi3QGKmpxF6w32STAcobIqOHFqSUXrU8nF+Y9dOlStRkXFBTuVchsoJk94sY+3y4SJAlHH4Q/8R4yFaixrug==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.5.0.tgz",
"integrity": "sha512-VtHeqX7chP1HHPJ1eogKbtSSYIm4LXE4balQEiId2moFm9fdn2ekctBthhhfVwtQqs8vEMvgRixMxZrCJTSuoQ==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"@nuxtjs/opencollective": "0.2.2",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"iterare": "1.2.0",
"object-hash": "1.3.1",
"optional": "0.1.4",
"uuid": "3.3.2"
}
},
"@nestjs/graphql": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/@nestjs/graphql/-/graphql-6.2.1.tgz",
"integrity": "sha512-poRH5KSVUg0mWlN5u0uYSNJ3RnSIKfb4gJnHcImxFqs3jdk0gPyYuZH7Dal1wIbgueZtGsVr2lVEBnsTMGsiOg==",
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/graphql/-/graphql-6.2.4.tgz",
"integrity": "sha512-4SprgwQbU4v2W2whRrcPnIf9iww1oJ72goX6QvbILWdJt73wplK23Wy8x2b/YYzcJXfAJ8XIA9UmA5CnTM9yEA==",
"requires": {
"@types/graphql": "14.2.0",
"chokidar": "3.0.0",
"fast-glob": "2.2.6",
"chokidar": "3.0.1",
"fast-glob": "2.2.7",
"graphql-tools": "4.0.4",
"lodash": "4.17.11",
"merge-graphql-schemas": "1.5.8",
@@ -93,6 +93,20 @@
"ts-morph": "1.3.3",
"type-graphql": "^0.17.3",
"uuid": "3.3.2"
},
"dependencies": {
"graphql-tools": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.4.tgz",
"integrity": "sha512-chF12etTIGVVGy3fCTJ1ivJX2KB7OSG4c6UOJQuqOHCmBQwTyNgCDuejZKvpYxNZiEx7bwIjrodDgDe9RIkjlw==",
"requires": {
"apollo-link": "^1.2.3",
"apollo-utilities": "^1.0.1",
"deprecated-decorator": "^0.1.6",
"iterall": "^1.1.3",
"uuid": "^3.1.0"
}
}
}
},
"@nodelib/fs.stat": {
@@ -101,9 +115,9 @@
"integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw=="
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.2.tgz",
"integrity": "sha512-69gFVDs7mJfNjv9Zs5DFVD+pvBW+k1TaHSOqUWqAyTTfLcKI/EMYQgvEvziRd+zAFtUOoye6MfWh0qvinGISPw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
@@ -203,9 +217,9 @@
"integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g=="
},
"@types/express": {
"version": "4.16.1",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.1.tgz",
"integrity": "sha512-V0clmJow23WeyblmACoxbHBu2JKlE5TiIme6Lem14FnPW9gsttyHtk6wq7njcdIWH1njAaFgR8gW09lgY98gQg==",
"version": "4.17.0",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.0.tgz",
"integrity": "sha512-CjaMu57cjgjuZbh9DpkloeGxV45CnMGlVd+XpG7Gm9QgVrd7KFq+X4HY0vM+2v0bczS48Wg7bvnMY5TN+Xmcfw==",
"requires": {
"@types/body-parser": "*",
"@types/express-serve-static-core": "*",
@@ -213,9 +227,9 @@
}
},
"@types/express-serve-static-core": {
"version": "4.16.4",
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.4.tgz",
"integrity": "sha512-x/8h6FHm14rPWnW2HP5likD/rsqJ3t/77OWx2PLxym0hXbeBWQmcPyHmwX+CtCQpjIfgrUdEoDFcLPwPZWiqzQ==",
"version": "4.16.7",
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.7.tgz",
"integrity": "sha512-847KvL8Q1y3TtFLRTXcVakErLJQgdpFSaq+k043xefz9raEf0C7HalpSY7OW5PyjCnY8P7bPW5t/Co9qqp+USg==",
"requires": {
"@types/node": "*",
"@types/range-parser": "*"
@@ -287,6 +301,14 @@
"@types/node": "*"
}
},
"@wry/equality": {
"version": "0.1.9",
"resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.9.tgz",
"integrity": "sha512-mB6ceGjpMGz1ZTza8HYnrPGos2mC6So4NhS1PtZ8s4Qt0K7fBiIGhpSxUbQmhwcSWE3no+bYxmI2OL6KuXYmoQ==",
"requires": {
"tslib": "^1.9.3"
}
},
"accepts": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
@@ -311,63 +333,126 @@
}
},
"apollo-cache-control": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.6.0.tgz",
"integrity": "sha512-66aCF6MHe0/FdD3knphwTv6CCIdb1ZxrMsiRpxP474qqyYVe2jAwBu6aJBn4emffZHZ7i6gp9dY6cPHThjnbKA==",
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.7.4.tgz",
"integrity": "sha512-TVACHwcEF4wfHo5H9FLnoNjo0SLDo2jPW+bXs9aw0Y4Z2UisskSAPnIYOqUPnU8SoeNvs7zWgbLizq11SRTJtg==",
"requires": {
"apollo-server-env": "2.3.0",
"graphql-extensions": "0.6.0"
"apollo-server-env": "2.4.0",
"graphql-extensions": "0.7.4"
},
"dependencies": {
"graphql-extensions": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.7.4.tgz",
"integrity": "sha512-Ly+DiTDU+UtlfPGQkqmBX2SWMr9OT3JxMRwpB9K86rDNDBTJtG6AE2kliQKKE+hg1+945KAimO7Ep+YAvS7ywg==",
"requires": {
"@apollographql/apollo-tools": "^0.3.6"
}
}
}
},
"apollo-datasource": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.4.0.tgz",
"integrity": "sha512-6QkgnLYwQrW0qv+yXIf617DojJbGmza2XJXUlgnzrGGhxzfAynzEjaLyYkc8rYS1m82vjrl9EOmLHTcnVkvZAQ==",
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.5.0.tgz",
"integrity": "sha512-SVXxJyKlWguuDjxkY/WGlC/ykdsTmPxSF0z8FenagcQ91aPURXzXP1ZDz5PbamY+0iiCRubazkxtTQw4GWTFPg==",
"requires": {
"apollo-server-caching": "0.4.0",
"apollo-server-env": "2.3.0"
"apollo-server-env": "2.4.0"
}
},
"apollo-engine-reporting": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/apollo-engine-reporting/-/apollo-engine-reporting-1.1.0.tgz",
"integrity": "sha512-Dj0BwgcluHL0QVUaquhAoYoLX9Z4DRP/n2REcIwO8d2iy52r+1wN5QqZLx97dEFh7CjhNjTWeysJzc8XMWKa1Q==",
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/apollo-engine-reporting/-/apollo-engine-reporting-1.3.5.tgz",
"integrity": "sha512-pSwjPgXK/elFsR22LXALtT3jI4fpEpeTNTHgNwLVLohaolusMYgBc/9FnVyFWFfMFS9k+3RmfeQdHhZ6T7WKFQ==",
"requires": {
"apollo-engine-reporting-protobuf": "0.3.0",
"apollo-graphql": "^0.2.1-alpha.1",
"apollo-server-core": "2.5.0",
"apollo-server-env": "2.3.0",
"apollo-engine-reporting-protobuf": "0.3.1",
"apollo-graphql": "^0.3.3",
"apollo-server-core": "2.6.7",
"apollo-server-env": "2.4.0",
"async-retry": "^1.2.1",
"graphql-extensions": "0.6.0"
"graphql-extensions": "0.7.6"
},
"dependencies": {
"apollo-server-core": {
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.6.7.tgz",
"integrity": "sha512-HfOGLvEwPgDWTvd3ZKRPEkEnICKb7xadn1Mci4+auMTsL/NVkfpjPa8cdzubi/kS2/MvioIn7Bg74gmiSLghGQ==",
"requires": {
"@apollographql/apollo-tools": "^0.3.6",
"@apollographql/graphql-playground-html": "1.6.20",
"@types/ws": "^6.0.0",
"apollo-cache-control": "0.7.4",
"apollo-datasource": "0.5.0",
"apollo-engine-reporting": "1.3.5",
"apollo-server-caching": "0.4.0",
"apollo-server-env": "2.4.0",
"apollo-server-errors": "2.3.0",
"apollo-server-plugin-base": "0.5.6",
"apollo-tracing": "0.7.3",
"fast-json-stable-stringify": "^2.0.0",
"graphql-extensions": "0.7.6",
"graphql-subscriptions": "^1.0.0",
"graphql-tag": "^2.9.2",
"graphql-tools": "^4.0.0",
"graphql-upload": "^8.0.2",
"sha.js": "^2.4.11",
"subscriptions-transport-ws": "^0.9.11",
"ws": "^6.0.0"
}
},
"apollo-server-plugin-base": {
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.5.6.tgz",
"integrity": "sha512-wJvcPqfm/kiBwY5JZT85t2A4pcHv24xdQIpWMNt1zsnx77lIZqJmhsc22eSUSrlnYqUMXC4XMVgSUfAO4oI9wg=="
},
"ws": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
"integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
"requires": {
"async-limiter": "~1.0.0"
}
}
}
},
"apollo-engine-reporting-protobuf": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/apollo-engine-reporting-protobuf/-/apollo-engine-reporting-protobuf-0.3.0.tgz",
"integrity": "sha512-PYowpx/E+TJT/8nKpp3JmJuKh3x1SZcxDF6Cquj0soV205TUpFFCZQMi91i5ACiEp2AkYvM/GDBIrw+rfIwzTg==",
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/apollo-engine-reporting-protobuf/-/apollo-engine-reporting-protobuf-0.3.1.tgz",
"integrity": "sha512-Ui3nPG6BSZF8BEqxFs6EkX6mj2OnFLMejxEHSOdM82bakyeouCGd7J0fiy8AD6liJoIyc4X7XfH4ZGGMvMh11A==",
"requires": {
"protobufjs": "^6.8.6"
}
},
"apollo-env": {
"version": "0.4.1-alpha.1",
"resolved": "https://registry.npmjs.org/apollo-env/-/apollo-env-0.4.1-alpha.1.tgz",
"integrity": "sha512-4qWiaUKWh92jvKxxRsiZSjmW9YH9GWSG1W6X+S1BcC1uqtPiHsem7ExG9MMTt+UrzHsbpQLctj12xk8lI4lgCg==",
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/apollo-env/-/apollo-env-0.5.1.tgz",
"integrity": "sha512-fndST2xojgSdH02k5hxk1cbqA9Ti8RX4YzzBoAB4oIe1Puhq7+YlhXGXfXB5Y4XN0al8dLg+5nAkyjNAR2qZTw==",
"requires": {
"core-js": "3.0.0-beta.13",
"core-js": "^3.0.1",
"node-fetch": "^2.2.0",
"sha.js": "^2.4.11"
}
},
"apollo-graphql": {
"version": "0.2.1-alpha.1",
"resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.2.1-alpha.1.tgz",
"integrity": "sha512-kObCSpYRHEf4IozJV+TZAXEL2Yni2DpzQckohJNYXg5/KRAF20jJ7lHxuJz+kMQrc7QO4wYGSa29HuFZH2AtQA==",
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.3.3.tgz",
"integrity": "sha512-t3CO/xIDVsCG2qOvx2MEbuu4b/6LzQjcBBwiVnxclmmFyAxYCIe7rpPlnLHSq7HyOMlCWDMozjoeWfdqYSaLqQ==",
"requires": {
"apollo-env": "0.4.1-alpha.1",
"apollo-env": "0.5.1",
"lodash.sortby": "^4.7.0"
}
},
"apollo-link": {
"version": "1.2.12",
"resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.12.tgz",
"integrity": "sha512-fsgIAXPKThyMVEMWQsUN22AoQI+J/pVXcjRGAShtk97h7D8O+SPskFinCGEkxPeQpE83uKaqafB2IyWdjN+J3Q==",
"requires": {
"apollo-utilities": "^1.3.0",
"ts-invariant": "^0.4.0",
"tslib": "^1.9.3",
"zen-observable-ts": "^0.8.19"
}
},
"apollo-server-caching": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.4.0.tgz",
@@ -377,23 +462,23 @@
}
},
"apollo-server-core": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.5.0.tgz",
"integrity": "sha512-7hyQ/Rt0hC38bUfxMQmLNHDBIGEBykFWo9EO0W+3o/cno/SqBKd1KKichrABVv+v+SCvZAUutX6gYS5l3G+ULQ==",
"version": "2.6.8",
"resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.6.8.tgz",
"integrity": "sha512-Jxw+6R/2I2LiZ6kjRFTzPpdjw7HfuVLfNU+svgNlxioLducxBH/wqUs3qYTf4eVUUtWy+nSS/BUf/Ullo+Ur0Q==",
"requires": {
"@apollographql/apollo-tools": "^0.3.6-alpha.1",
"@apollographql/graphql-playground-html": "^1.6.6",
"@apollographql/apollo-tools": "^0.3.6",
"@apollographql/graphql-playground-html": "1.6.20",
"@types/ws": "^6.0.0",
"apollo-cache-control": "0.6.0",
"apollo-datasource": "0.4.0",
"apollo-engine-reporting": "1.1.0",
"apollo-cache-control": "0.7.4",
"apollo-datasource": "0.5.0",
"apollo-engine-reporting": "1.3.5",
"apollo-server-caching": "0.4.0",
"apollo-server-env": "2.3.0",
"apollo-server-env": "2.4.0",
"apollo-server-errors": "2.3.0",
"apollo-server-plugin-base": "0.4.0",
"apollo-tracing": "0.6.0",
"apollo-server-plugin-base": "0.5.7",
"apollo-tracing": "0.7.3",
"fast-json-stable-stringify": "^2.0.0",
"graphql-extensions": "0.6.0",
"graphql-extensions": "0.7.6",
"graphql-subscriptions": "^1.0.0",
"graphql-tag": "^2.9.2",
"graphql-tools": "^4.0.0",
@@ -414,9 +499,9 @@
}
},
"apollo-server-env": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-2.3.0.tgz",
"integrity": "sha512-WIwlkCM/gir0CkoYWPMTCH8uGCCKB/aM074U1bKayvkFOBVO2VgG5x2kgsfkyF05IMQq2/GOTsKhNY7RnUEhTA==",
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-2.4.0.tgz",
"integrity": "sha512-7ispR68lv92viFeu5zsRUVGP+oxsVI3WeeBNniM22Cx619maBUwcYTIC3+Y3LpXILhLZCzA1FASZwusgSlyN9w==",
"requires": {
"node-fetch": "^2.1.2",
"util.promisify": "^1.0.0"
@@ -428,17 +513,17 @@
"integrity": "sha512-rUvzwMo2ZQgzzPh2kcJyfbRSfVKRMhfIlhY7BzUfM4x6ZT0aijlgsf714Ll3Mbf5Fxii32kD0A/DmKsTecpccw=="
},
"apollo-server-express": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.5.0.tgz",
"integrity": "sha512-2gd3VWIqji2jyDYMTTqKzVU4/znjEjugtLUmPgVl5SoBvJSMTsO7VgJv+roBubZGDK8jXXUEXr2a33RtIeHe4g==",
"version": "2.6.8",
"resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.6.8.tgz",
"integrity": "sha512-LQzVHknQDkHWffc2qK9dr/qNxQ/WecSKiye5/w10tXrOy3aruTFe67ysG/vMnFZ/puroqiZ2njHzhHZztqQ4sA==",
"requires": {
"@apollographql/graphql-playground-html": "^1.6.6",
"@apollographql/graphql-playground-html": "1.6.20",
"@types/accepts": "^1.3.5",
"@types/body-parser": "1.17.0",
"@types/cors": "^2.8.4",
"@types/express": "4.16.1",
"@types/express": "4.17.0",
"accepts": "^1.3.5",
"apollo-server-core": "2.5.0",
"apollo-server-core": "2.6.8",
"body-parser": "^1.18.3",
"cors": "^2.8.4",
"graphql-subscriptions": "^1.0.0",
@@ -447,25 +532,38 @@
}
},
"apollo-server-plugin-base": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.4.0.tgz",
"integrity": "sha512-iD7ARNtwnvHGd1EMPK0CuodM8d8hgDvFwTfIDzJY04QIQ6/KrBFaWhnCXJsy+HMb47GovwBbq67IK6eb2WJgBg=="
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.5.7.tgz",
"integrity": "sha512-HeEwEZ92c2XYRV+0CFLbstW3vUJ4idCxR9E9Q3wwvhXrq8gaGzqyDoC8EzAzRxCJUKcEn7xQOpT/AUTC/KtkRA=="
},
"apollo-tracing": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.6.0.tgz",
"integrity": "sha512-OpYPHVBgcQ/HT2WLXJQWwhilzR1rrl01tZeMU2N7yinsp/oyKngF5aUSMtuvX1k/T3abilQo+w10oAQlBCGdPA==",
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.7.3.tgz",
"integrity": "sha512-H6fSC+awQGnfDyYdGIB0UQUhcUC3n5Vy+ujacJ0bY6R+vwWeZOQvu7wRHNjk/rbOSTLCo9A0OcVX7huRyu9SZg==",
"requires": {
"apollo-server-env": "2.3.0",
"graphql-extensions": "0.6.0"
"apollo-server-env": "2.4.0",
"graphql-extensions": "0.7.4"
},
"dependencies": {
"graphql-extensions": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.7.4.tgz",
"integrity": "sha512-Ly+DiTDU+UtlfPGQkqmBX2SWMr9OT3JxMRwpB9K86rDNDBTJtG6AE2kliQKKE+hg1+945KAimO7Ep+YAvS7ywg==",
"requires": {
"@apollographql/apollo-tools": "^0.3.6"
}
}
}
},
"apollo-utilities": {
"version": "1.0.19",
"resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.0.19.tgz",
"integrity": "sha512-pyVxizjIevHFfKhtc9FLEsGHmqiK0kHx1aBdJRUXDt+X+yjoVa/fVeCEo9t0NddGximemxxrQnq6lSkbIQvDlA==",
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.2.tgz",
"integrity": "sha512-JWNHj8XChz7S4OZghV6yc9FNnzEXj285QYp/nLNh943iObycI5GTDO3NGR9Dth12LRrSFMeDOConPfPln+WGfg==",
"requires": {
"fast-json-stable-stringify": "^2.0.0"
"@wry/equality": "^0.1.2",
"fast-json-stable-stringify": "^2.0.0",
"ts-invariant": "^0.4.0",
"tslib": "^1.9.3"
}
},
"arg": {
@@ -555,12 +653,19 @@
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
},
"dependencies": {
"is-buffer": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
}
}
},
"backo2": {
@@ -652,6 +757,18 @@
"requires": {
"ms": "2.0.0"
}
},
"http-errors": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
"integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
"requires": {
"depd": "~1.1.2",
"inherits": "2.0.3",
"setprototypeof": "1.1.1",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.0"
}
}
}
},
@@ -747,9 +864,9 @@
}
},
"chokidar": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.0.0.tgz",
"integrity": "sha512-ebzWopcacB2J19Jsb5RPtMrzmjUZ5VAQnsL0Ztrix3lswozHbiDp+1Lg3AWSKHdwsps/W2vtshA/x3I827F78g==",
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.0.1.tgz",
"integrity": "sha512-2ww34sJWehnbpV0Q4k4V5Hh7juo7po6z7LUWkcIQnSGN1lHOL8GGtLtfwabKvLFQw/hbSUQ0u6V7OgGYgBzlkQ==",
"requires": {
"anymatch": "^3.0.1",
"async-each": "^1.0.3",
@@ -759,7 +876,7 @@
"is-binary-path": "^2.1.0",
"is-glob": "^4.0.1",
"normalize-path": "^3.0.0",
"readdirp": "^3.0.1"
"readdirp": "^3.0.2"
}
},
"class-utils": {
@@ -850,9 +967,9 @@
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"consola": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.6.2.tgz",
"integrity": "sha512-GNJhwvF4bJ8eiAlyB8r4WNM8kBqkl+y4DvMehMbyywoJiv37N0M6/xrKqrrZw/5maZA+UagQV8UZ+XBeuGMzUg=="
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.9.0.tgz",
"integrity": "sha512-34Iue+LRcWbndFIfZc5boNizWlsrRjqIBJZTe591vImgbnq7nx2EzlrLtANj9TH2Fxm7puFJBJAOk5BhvZOddQ=="
},
"content-type": {
"version": "1.0.4",
@@ -865,9 +982,9 @@
"integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
},
"core-js": {
"version": "3.0.0-beta.13",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.0-beta.13.tgz",
"integrity": "sha512-16Q43c/3LT9NyePUJKL8nRIQgYWjcBhjJSMWg96PVSxoS0PeE0NHitPI3opBrs9MGGHjte1KoEVr9W63YKlTXQ=="
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.1.4.tgz",
"integrity": "sha512-YNZN8lt82XIMLnLirj9MhKDFZHalwzzrL9YLt6eb0T5D0EDl4IQ90IGkua8mHbnxNrkj1d8hbdizMc0Qmg1WnQ=="
},
"cors": {
"version": "2.8.5",
@@ -879,26 +996,20 @@
}
},
"d": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
"integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
"requires": {
"es5-ext": "^0.10.9"
"es5-ext": "^0.10.50",
"type": "^1.0.1"
}
},
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "^2.1.1"
},
"dependencies": {
"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=="
}
"ms": "2.0.0"
}
},
"decode-uri-component": {
@@ -1047,13 +1158,13 @@
}
},
"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=",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
"integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
"requires": {
"d": "1",
"es5-ext": "^0.10.14",
"es6-iterator": "^2.0.1",
"es5-ext": "^0.10.46",
"es6-iterator": "^2.0.3",
"es6-symbol": "^3.1.1"
}
},
@@ -1207,9 +1318,9 @@
}
},
"fast-glob": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz",
"integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==",
"version": "2.2.7",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
"integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
"requires": {
"@mrmlnc/readdir-enhanced": "^2.2.1",
"@nodelib/fs.stat": "^1.1.2",
@@ -1259,11 +1370,11 @@
}
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "^3.2.6"
"debug": "=3.1.0"
}
},
"for-in": {
@@ -1300,9 +1411,9 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"fsevents": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.6.tgz",
"integrity": "sha512-vfmKZp3XPM36DNF0qhW+Cdxk7xm7gTEHY1clv1Xq1arwRQuKZgAhw+NZNWbJBtuaNxzNXwhfdPYRrvIbjfS33A==",
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.7.tgz",
"integrity": "sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ==",
"optional": true
},
"function-bind": {
@@ -1367,19 +1478,19 @@
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
},
"graphql": {
"version": "14.3.1",
"resolved": "https://registry.npmjs.org/graphql/-/graphql-14.3.1.tgz",
"integrity": "sha512-FZm7kAa3FqKdXy8YSSpAoTtyDFMIYSpCDOr+3EqlI1bxmtHu+Vv/I2vrSeT1sBOEnEniX3uo4wFhFdS/8XN6gA==",
"version": "14.4.2",
"resolved": "https://registry.npmjs.org/graphql/-/graphql-14.4.2.tgz",
"integrity": "sha512-6uQadiRgnpnSS56hdZUSvFrVcQ6OF9y6wkxJfKquFtHlnl7+KSuWwSJsdwiK1vybm1HgcdbpGkCpvhvsVQ0UZQ==",
"requires": {
"iterall": "^1.2.2"
}
},
"graphql-extensions": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.6.0.tgz",
"integrity": "sha512-SshzmbD68fHXRv2q3St29olMOxHDLQ5e9TOh+Tz2BYxinrfhjFaPNcEefiK/vF295wW827Y58bdO11Xmhf8J+Q==",
"version": "0.7.6",
"resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.7.6.tgz",
"integrity": "sha512-RV00O3YFD1diehvdja180BlKOGWgeigr/8/Wzr6lXwLcFtk6FecQC/7nf6oW1qhuXczHyNjt/uCr0WWbWq6mYg==",
"requires": {
"@apollographql/apollo-tools": "^0.3.6-alpha.1"
"@apollographql/apollo-tools": "^0.3.6"
}
},
"graphql-query-complexity": {
@@ -1405,68 +1516,24 @@
"integrity": "sha512-jApXqWBzNXQ8jYa/HLkZJaVw9jgwNqZkywa2zfFn16Iv1Zb7ELNHkJaXHR7Quvd5SIGsy6Ny7SUKATgnu05uEg=="
},
"graphql-tools": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.4.tgz",
"integrity": "sha512-chF12etTIGVVGy3fCTJ1ivJX2KB7OSG4c6UOJQuqOHCmBQwTyNgCDuejZKvpYxNZiEx7bwIjrodDgDe9RIkjlw==",
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.5.tgz",
"integrity": "sha512-kQCh3IZsMqquDx7zfIGWBau42xe46gmqabwYkpPlCLIjcEY1XK+auP7iGRD9/205BPyoQdY8hT96MPpgERdC9Q==",
"requires": {
"apollo-link": "^1.2.3",
"apollo-utilities": "^1.0.1",
"deprecated-decorator": "^0.1.6",
"iterall": "^1.1.3",
"uuid": "^3.1.0"
},
"dependencies": {
"apollo-link": {
"version": "1.2.11",
"resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.11.tgz",
"integrity": "sha512-PQvRCg13VduLy3X/0L79M6uOpTh5iHdxnxYuo8yL7sJlWybKRJwsv4IcRBJpMFbChOOaHY7Og9wgPo6DLKDKDA==",
"requires": {
"apollo-utilities": "^1.2.1",
"ts-invariant": "^0.3.2",
"tslib": "^1.9.3",
"zen-observable-ts": "^0.8.18"
},
"dependencies": {
"apollo-utilities": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.2.1.tgz",
"integrity": "sha512-Zv8Udp9XTSFiN8oyXOjf6PMHepD4yxxReLsl6dPUy5Ths7jti3nmlBzZUOxuTWRwZn0MoclqL7RQ5UEJN8MAxg==",
"requires": {
"fast-json-stable-stringify": "^2.0.0",
"ts-invariant": "^0.2.1",
"tslib": "^1.9.3"
},
"dependencies": {
"ts-invariant": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.2.1.tgz",
"integrity": "sha512-Z/JSxzVmhTo50I+LKagEISFJW3pvPCqsMWLamCTX8Kr3N5aMrnGOqcflbe5hLUzwjvgPfnLzQtHZv0yWQ+FIHg==",
"requires": {
"tslib": "^1.9.3"
}
}
}
}
}
},
"zen-observable-ts": {
"version": "0.8.18",
"resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.18.tgz",
"integrity": "sha512-q7d05s75Rn1j39U5Oapg3HI2wzriVwERVo4N7uFGpIYuHB9ff02P/E92P9B8T7QVC93jCMHpbXH7X0eVR5LA7A==",
"requires": {
"tslib": "^1.9.3",
"zen-observable": "^0.8.0"
}
}
}
},
"graphql-upload": {
"version": "8.0.6",
"resolved": "https://registry.npmjs.org/graphql-upload/-/graphql-upload-8.0.6.tgz",
"integrity": "sha512-cBRALMOvGBm2AD6M61b1QbSmKfCLXvgV+Z3wXT2JS1EQwGWQ1g5/sby4J/cpwAaGnq5P2eGp+N3HQI9cSn9Jfg==",
"version": "8.0.7",
"resolved": "https://registry.npmjs.org/graphql-upload/-/graphql-upload-8.0.7.tgz",
"integrity": "sha512-gi2yygbDPXbHPC7H0PNPqP++VKSoNoJO4UrXWq4T0Bi4IhyUd3Ycop/FSxhx2svWIK3jdXR/i0vi91yR1aAF0g==",
"requires": {
"busboy": "^0.3.1",
"fs-capacitor": "^2.0.1",
"fs-capacitor": "^2.0.4",
"http-errors": "^1.7.2",
"object-path": "^0.11.4"
}
@@ -1537,15 +1604,22 @@
}
},
"http-errors": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
"integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
"integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
"requires": {
"depd": "~1.1.2",
"inherits": "2.0.3",
"inherits": "2.0.4",
"setprototypeof": "1.1.1",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.0"
},
"dependencies": {
"inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
}
}
},
"iconv-lite": {
@@ -1754,9 +1828,9 @@
"integrity": "sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA=="
},
"iterare": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.1.2.tgz",
"integrity": "sha512-25rVYmj/dDvTR6zOa9jY1Ihd6USLa0J508Ub2iy7Aga+xu9JMbjDds2Uh03ReDGbva/YN3s3Ybi+Do0nOX6wAg=="
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.0.tgz",
"integrity": "sha512-RxMV9p/UzdK0Iplnd8mVgRvNdXlsTOiuDrqMRnDi3wIhbT+JP4xDquAX9ay13R3CH72NBzQ91KWe0+C168QAyQ=="
},
"js-tokens": {
"version": "4.0.0",
@@ -2223,9 +2297,9 @@
}
},
"picomatch": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.6.tgz",
"integrity": "sha512-Btng9qVvFsW6FkXYQQK5nEI5i8xdXFDmlKxC7Q8S2Bu5HGWnbQf7ts2kOoxJIrZn5hmw61RZIayAg2zBuJDtyQ=="
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz",
"integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA=="
},
"pify": {
"version": "3.0.0",
@@ -2258,9 +2332,9 @@
},
"dependencies": {
"@types/node": {
"version": "10.14.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.6.tgz",
"integrity": "sha512-Fvm24+u85lGmV4hT5G++aht2C5I4Z4dYlWZIh62FAfFO/TfzXtPpoLI6I7AuBWkIFqZCnhFOoTT7RjjaIL5Fjg=="
"version": "10.14.12",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.12.tgz",
"integrity": "sha512-QcAKpaO6nhHLlxWBvpc4WeLrTvPqlHOvaj0s5GriKkA1zq+bsFBPpfYCvQhLqLgYlIko8A9YrPdaMHCo5mBcpg=="
}
}
},
@@ -2278,12 +2352,26 @@
"http-errors": "1.7.2",
"iconv-lite": "0.4.24",
"unpipe": "1.0.0"
},
"dependencies": {
"http-errors": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
"integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
"requires": {
"depd": "~1.1.2",
"inherits": "2.0.3",
"setprototypeof": "1.1.1",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.0"
}
}
}
},
"readdirp": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.0.1.tgz",
"integrity": "sha512-emMp13NEwWQQX1yeDgrzDNCSY7NHV6k9HTW0OhyQqOAzYacbqQhnmWiCYjxNPcqMTQ9k77oXQJp28jkytm3+jg==",
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.0.2.tgz",
"integrity": "sha512-LbyJYv48eywrhOlScq16H/VkCiGKGPC2TpOdZCJ7QXnYEjn3NN/Oblh8QEU3vqfSRBB7OGvh5x45NKiVeNujIQ==",
"requires": {
"picomatch": "^2.0.4"
}
@@ -2313,9 +2401,9 @@
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
},
"resolve": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
"integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
"integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==",
"dev": true,
"requires": {
"path-parse": "^1.0.6"
@@ -2345,9 +2433,9 @@
}
},
"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=="
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
"integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="
},
"safe-regex": {
"version": "1.1.0",
@@ -2673,9 +2761,9 @@
"integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
},
"ts-invariant": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.3.2.tgz",
"integrity": "sha512-QsY8BCaRnHiB5T6iE4DPlJMAKEG3gzMiUco9FEt1jUXQf0XP6zi0idT0i0rMTu8A326JqNSDsmlkA9dRSh1TRg==",
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz",
"integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==",
"requires": {
"tslib": "^1.9.3"
}
@@ -2721,9 +2809,9 @@
}
},
"ts-node": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.2.0.tgz",
"integrity": "sha512-m8XQwUurkbYqXrKqr3WHCW310utRNvV5OnRVeISeea7LoCWVcdfeB/Ntl8JYWFh+WRoUAdBgESrzKochQt7sMw==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
@@ -2747,9 +2835,9 @@
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
},
"tslint": {
"version": "5.16.0",
"resolved": "https://registry.npmjs.org/tslint/-/tslint-5.16.0.tgz",
"integrity": "sha512-UxG2yNxJ5pgGwmMzPMYh/CCnCnh0HfPgtlVRDs1ykZklufFBL1ZoTlWFRz2NQjcoEiDoRp+JyT0lhBbbH/obyA==",
"version": "5.18.0",
"resolved": "https://registry.npmjs.org/tslint/-/tslint-5.18.0.tgz",
"integrity": "sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
@@ -2758,7 +2846,7 @@
"commander": "^2.12.1",
"diff": "^3.2.0",
"glob": "^7.1.1",
"js-yaml": "^3.13.0",
"js-yaml": "^3.13.1",
"minimatch": "^3.0.4",
"mkdirp": "^0.5.1",
"resolve": "^1.3.2",
@@ -2776,6 +2864,11 @@
"tslib": "^1.8.1"
}
},
"type": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz",
"integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw=="
},
"type-graphql": {
"version": "0.17.4",
"resolved": "https://registry.npmjs.org/type-graphql/-/type-graphql-0.17.4.tgz",
@@ -2808,9 +2901,9 @@
}
},
"semver": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz",
"integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==",
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz",
"integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==",
"optional": true
}
}
@@ -2825,9 +2918,9 @@
}
},
"typescript": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.1.tgz",
"integrity": "sha512-64HkdiRv1yYZsSe4xC1WVgamNigVYjlssIoaH2HcZF0+ijsk5YK2g0G34w9wJkze8+5ow4STd22AynfO6ZYYLw=="
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
"integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g=="
},
"unc-path-regex": {
"version": "0.1.2",
@@ -2953,9 +3046,9 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"ws": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.0.0.tgz",
"integrity": "sha512-cknCal4k0EAOrh1SHHPPWWh4qm93g1IuGGGwBjWkXmCG7LsDtL8w9w+YVfaF+KSVwiHQKDIMsSLBVftKf9d1pg==",
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.1.0.tgz",
"integrity": "sha512-Swie2C4fs7CkwlHu1glMePLYJJsWjzhl1vm3ZaLplD0h7OMkZyZ6kLTB/OagiU923bZrPFXuDTeEqaEN4NWG4g==",
"requires": {
"async-limiter": "^1.0.0"
}
@@ -2972,9 +3065,18 @@
"dev": true
},
"zen-observable": {
"version": "0.8.9",
"resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.9.tgz",
"integrity": "sha512-Y9kPzjGvIZ5jchSlqlCpBW3I82zBBL4z+ulXDRVA1NwsKzjt5kwAi+gOYIy0htNkfuehGZZtP5mRXHRV6TjDWw=="
"version": "0.8.14",
"resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.14.tgz",
"integrity": "sha512-kQz39uonEjEESwh+qCi83kcC3rZJGh4mrZW7xjkSQYXkq//JZHTtKo+6yuVloTgMtzsIWOJrjIrKvk/dqm0L5g=="
},
"zen-observable-ts": {
"version": "0.8.19",
"resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.19.tgz",
"integrity": "sha512-u1a2rpE13G+jSzrg3aiCqXU5tN2kw41b+cBZGmnc+30YimdkKiDj9bTowcB41eL77/17RF/h+393AuVgShyheQ==",
"requires": {
"tslib": "^1.9.3",
"zen-observable": "^0.8.0"
}
}
}
}

View File

@@ -9,21 +9,21 @@
"start:prod": "node dist/main.js"
},
"dependencies": {
"@nestjs/common": "6.2.4",
"@nestjs/core": "6.2.4",
"@nestjs/graphql": "6.2.1",
"apollo-server-express": "2.5.0",
"graphql": "14.3.1",
"graphql-tools": "4.0.4",
"@nestjs/common": "6.5.0",
"@nestjs/core": "6.5.0",
"@nestjs/graphql": "6.2.4",
"apollo-server-express": "2.6.8",
"graphql": "14.4.2",
"graphql-tools": "4.0.5",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.2",
"subscriptions-transport-ws": "0.9.16",
"typescript": "3.5.1",
"ws": "7.0.0"
"typescript": "3.5.3",
"ws": "7.1.0"
},
"devDependencies": {
"@types/node": "7.10.6",
"ts-node": "8.2.0",
"tslint": "5.16.0"
"ts-node": "8.3.0",
"tslint": "5.18.0"
}
}

View File

@@ -10,7 +10,8 @@
"target": "es6",
"sourceMap": true,
"allowJs": true,
"outDir": "./dist"
"outDir": "./dist",
"skipLibCheck": true
},
"include": [
"src/**/*"

View File

@@ -5,58 +5,58 @@
"requires": true,
"dependencies": {
"@nestjs/common": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.2.4.tgz",
"integrity": "sha512-YZvJ6/S7yVQZK+9rupCzMCg4tpbc9DyVvLoTx0NBDqExTCUNcNEcCtn0AZrO/hLqbeYODnJwGE2NxkH1R/qw+w==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.5.0.tgz",
"integrity": "sha512-i2m2e/AXFGq0l7IPtwv2SrDHbxRPe4ZsuG54B/V68escu1LMpMZcTCjfANTamRvnNR258QQcSVNBMTUX1nTV8w==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.2.4.tgz",
"integrity": "sha512-aYKi3QGKmpxF6w32STAcobIqOHFqSUXrU8nF+Y9dOlStRkXFBTuVchsoJk94sY+3y4SJAlHH4Q/8R4yFaixrug==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.5.0.tgz",
"integrity": "sha512-VtHeqX7chP1HHPJ1eogKbtSSYIm4LXE4balQEiId2moFm9fdn2ekctBthhhfVwtQqs8vEMvgRixMxZrCJTSuoQ==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"@nuxtjs/opencollective": "0.2.2",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"iterare": "1.2.0",
"object-hash": "1.3.1",
"optional": "0.1.4",
"uuid": "3.3.2"
}
},
"@nestjs/microservices": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.2.4.tgz",
"integrity": "sha512-aVXLPPTL2nUf4EVBcuqbCRFN62BDhFjxSy49BIpMTDqbaSOZPgfhfwyotDI6sAG0cJq4zWvU/OCC2/NkLq9Ryg==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.5.0.tgz",
"integrity": "sha512-5me3V8kZ5n3TWTv5uM2IvNZNCbnXynKOiIRygVrFriWbkidHebMRkamAAeV2MW6YvPSsY0D3Ay1mGCGSZXS2XA==",
"requires": {
"iterare": "1.1.2",
"iterare": "1.2.0",
"json-socket": "0.3.0",
"optional": "0.1.4"
}
},
"@nestjs/testing": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.2.4.tgz",
"integrity": "sha512-l5uxeNz+CksHaVcHxSlpo0vyJxvZP7BM1vS6BKuqtn/lNlIITAkdWmCVfBldN8Okayj3B2yhc04Zq6imU3aX9w==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.5.0.tgz",
"integrity": "sha512-4K3yAjXsboKuCf3+Evpc4UvoDiMe8p66p8wXQ+BJA78JN14YFJMg2wDKL3xnz/zfd12tMrTVPf8wE8AXvGAYbw==",
"requires": {
"optional": "0.1.4"
}
},
"@nestjs/websockets": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.2.4.tgz",
"integrity": "sha512-3cpEZz/uTTHiMXX6d+lXH9Wg7Rtla36Oc3JTmQtuGc1KlAIs3wzJRO/qU/LfLuYrNeqAAFVq8EHW3DkjPFxXjg==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.5.0.tgz",
"integrity": "sha512-HJ2c66O15cRUsueWqAKfl7FqsT76doEpyVMSh9CQ2KWgv++8Eugl8/lV8iCoDcuXIZDKX+Sw3XUuKdtmYPdqeA==",
"requires": {
"iterare": "1.1.2"
"iterare": "1.2.0"
}
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.2.tgz",
"integrity": "sha512-69gFVDs7mJfNjv9Zs5DFVD+pvBW+k1TaHSOqUWqAyTTfLcKI/EMYQgvEvziRd+zAFtUOoye6MfWh0qvinGISPw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
@@ -134,19 +134,19 @@
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
}
},
"buffer-from": {
@@ -221,9 +221,9 @@
"dev": true
},
"consola": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.6.2.tgz",
"integrity": "sha512-GNJhwvF4bJ8eiAlyB8r4WNM8kBqkl+y4DvMehMbyywoJiv37N0M6/xrKqrrZw/5maZA+UagQV8UZ+XBeuGMzUg=="
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.9.0.tgz",
"integrity": "sha512-34Iue+LRcWbndFIfZc5boNizWlsrRjqIBJZTe591vImgbnq7nx2EzlrLtANj9TH2Fxm7puFJBJAOk5BhvZOddQ=="
},
"cookiejar": {
"version": "2.1.2",
@@ -238,26 +238,26 @@
"dev": true
},
"d": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
"integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
"requires": {
"es5-ext": "^0.10.9"
"es5-ext": "^0.10.50",
"type": "^1.0.1"
}
},
"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=="
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz",
"integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA=="
},
"delayed-stream": {
"version": "1.0.0",
@@ -301,13 +301,13 @@
}
},
"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=",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
"integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
"requires": {
"d": "1",
"es5-ext": "^0.10.14",
"es6-iterator": "^2.0.1",
"es5-ext": "^0.10.46",
"es6-iterator": "^2.0.3",
"es6-symbol": "^3.1.1"
}
},
@@ -347,9 +347,9 @@
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
},
"fast-json-stringify": {
"version": "1.15.2",
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-1.15.2.tgz",
"integrity": "sha512-iKo79rW7J2LRexme54j33BZBmFmGtqwYL6fmAxnU5VOZEJCUFir5g5iCmt5HXtxUXvI2hnmpGku+cduJpMCvwQ==",
"version": "1.15.3",
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-1.15.3.tgz",
"integrity": "sha512-p+ucnySTbrUQ9M7u8ygFIxrmpG8B+8O4/PvLDdh+RqMMgj/h6OoDb7U2lP+kqg3PDclQBFbSIArRhkorFwZLLg==",
"requires": {
"ajv": "^6.8.1",
"deepmerge": "^3.0.0"
@@ -366,9 +366,9 @@
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"fastify": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/fastify/-/fastify-2.4.1.tgz",
"integrity": "sha512-AVzNO8/gg6og8T/s7M3UUQjvI4AIJNm8CSHm+kf3S0mGoJfWpfRuTD1pRTQ5tM+0pJpybyT5nDVTy97/oTD1+w==",
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/fastify/-/fastify-2.6.0.tgz",
"integrity": "sha512-3GxGV2P8731o2S5T6ng5NMJ9S7vFpZA4mk2mJEbMbhQ5aj1HhNGBOe39TYa2gWRrJVJuXxYYYIlY/5cFhiHpNg==",
"requires": {
"abstract-logging": "^1.0.0",
"ajv": "^6.9.2",
@@ -395,9 +395,9 @@
}
},
"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==",
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-2.1.0.tgz",
"integrity": "sha512-Hdx6ctcrzkZH5y9EREHtXryXAgc5Bc8z5Cvoa61y9kaoYj2KU4yXD6h8b6u0NUkYPVmQQeRdf0AtG1kQxQ+ukQ==",
"requires": {
"fast-decode-uri-component": "^1.0.0",
"safe-regex2": "^2.0.0",
@@ -410,26 +410,11 @@
"integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw=="
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "^3.2.6"
},
"dependencies": {
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
}
"debug": "=3.1.0"
}
},
"form-data": {
@@ -475,9 +460,9 @@
"integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
},
"is-promise": {
"version": "2.1.0",
@@ -485,9 +470,9 @@
"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=="
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.0.tgz",
"integrity": "sha512-RxMV9p/UzdK0Iplnd8mVgRvNdXlsTOiuDrqMRnDi3wIhbT+JP4xDquAX9ay13R3CH72NBzQ91KWe0+C168QAyQ=="
},
"json-schema-traverse": {
"version": "0.4.1",
@@ -500,9 +485,9 @@
"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==",
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-3.4.0.tgz",
"integrity": "sha512-zIEl4lKwATE5uPmxEZkVIIAr/JGrHEngf9MDZ7a1TodLZ93kROYkKkoqSCmQIJ01FXrzyYMnmtemBO/b1HFt0Q==",
"requires": {
"ajv": "^6.8.1",
"readable-stream": "^3.1.1"
@@ -576,8 +561,7 @@
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"next-tick": {
"version": "1.0.0",
@@ -605,9 +589,9 @@
"integrity": "sha512-ZOtfhPttCrqp2M1PBBH4X13XlvnfhIwD7yCLx+GoGoXRPQyxGOTdQMpIzPSPKXAJT/JQrdfFrgdJOyAzvgpQ9A=="
},
"pino": {
"version": "5.12.5",
"resolved": "https://registry.npmjs.org/pino/-/pino-5.12.5.tgz",
"integrity": "sha512-Y493vt9ci7Jez3WZ/aUArijTQZXbHgWvDB3TMZlTu731p2kan/qyJk5k46aveEmYFnTlEommc+PSncUcuiMrBg==",
"version": "5.12.6",
"resolved": "https://registry.npmjs.org/pino/-/pino-5.12.6.tgz",
"integrity": "sha512-LM5ug2b27uymIIkaBw54ncF+9DSf8S4z1uzw+Y5I94dRu3Z+lFuB13j0kg1InAeyxy+CsLGnWHKy9+zgTreFOg==",
"requires": {
"fast-redact": "^1.4.4",
"fast-safe-stringify": "^2.0.6",
@@ -618,9 +602,9 @@
}
},
"pino-std-serializers": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.4.1.tgz",
"integrity": "sha512-v/JglhO0aFcvkMV9VUxhgyuJo8K1si857Ww86Tx8H2cjC/kp0ndzzcF6Vbxr4RgKFYJdHfLVpEuD55znMZuxnw=="
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.4.2.tgz",
"integrity": "sha512-WaL504dO8eGs+vrK+j4BuQQq6GLKeCCcHaMB2ItygzVURcL1CycwNEUHTD/lHFHs/NL5qAz2UKrjYWXKSf4aMQ=="
},
"process-nextick-args": {
"version": "2.0.0",
@@ -654,9 +638,9 @@
"integrity": "sha512-FXTaCkwvpIlkdKeGDNgcq07SXWS383noQUuZjvdE1QcTt+eLuqof6/BDiEPqB59FWLie/l91+HtlJSw7iCViSA=="
},
"readable-stream": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz",
"integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==",
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
"integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -829,9 +813,9 @@
"integrity": "sha512-k/vdHz+bFALjmik0URLWBYNuO0hCABTL5dullbZBXvFDdlL8RrKaeLR6YuHfX+6ZXOLkHw+HpNLCUA7DtLMQmg=="
},
"ts-node": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.2.0.tgz",
"integrity": "sha512-m8XQwUurkbYqXrKqr3WHCW310utRNvV5OnRVeISeea7LoCWVcdfeB/Ntl8JYWFh+WRoUAdBgESrzKochQt7sMw==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
@@ -846,10 +830,15 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
},
"type": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz",
"integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw=="
},
"typescript": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.1.tgz",
"integrity": "sha512-64HkdiRv1yYZsSe4xC1WVgamNigVYjlssIoaH2HcZF0+ijsk5YK2g0G34w9wJkze8+5ow4STd22AynfO6ZYYLw=="
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
"integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g=="
},
"uri-js": {
"version": "4.2.2",

View File

@@ -7,21 +7,21 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.2.4",
"@nestjs/core": "6.2.4",
"@nestjs/microservices": "6.2.4",
"@nestjs/testing": "6.2.4",
"@nestjs/websockets": "6.2.4",
"@nestjs/common": "6.5.0",
"@nestjs/core": "6.5.0",
"@nestjs/microservices": "6.5.0",
"@nestjs/testing": "6.5.0",
"@nestjs/websockets": "6.5.0",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"fastify": "2.4.1",
"fastify": "2.6.0",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.2",
"typescript": "3.5.1"
"typescript": "3.5.3"
},
"devDependencies": {
"@types/node": "7.10.6",
"supertest": "4.0.2",
"ts-node": "8.2.0"
"ts-node": "8.3.0"
}
}

View File

@@ -1,9 +1,9 @@
import { Injectable, OnApplicationShutdown } from '@nestjs/common';
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 { spawnSync } from 'child_process';
import { join } from 'path';
import * as Sinon from 'sinon';
@Injectable()
class TestInjectable implements OnApplicationShutdown {
@@ -23,26 +23,41 @@ describe('OnApplicationShutdown', () => {
});
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');
const result = spawnSync('ts-node', [
join(__dirname, '../src/main.ts'),
'SIGHUP',
]);
expect(result.stdout.toString().trim() === 'Signal SIGHUP').to.be.true;
done();
});
}).timeout(5000);
it('should call onApplicationShutdown if a specific shutdown signal gets invoked', done => {
const result = spawnSync('ts-node', [join(__dirname, '../src/main.ts'), 'SIGINT', 'SIGINT']);
const result = spawnSync('ts-node', [
join(__dirname, '../src/main.ts'),
'SIGINT',
'SIGINT',
]);
expect(result.stdout.toString().trim()).to.be.eq('Signal SIGINT');
done();
});
}).timeout(5000);
it('should ignore system signals which are not specified', done => {
const result = spawnSync('ts-node', [join(__dirname, '../src/main.ts'), 'SIGINT', 'SIGHUP']);
const result = spawnSync('ts-node', [
join(__dirname, '../src/main.ts'),
'SIGINT',
'SIGHUP',
]);
expect(result.stdout.toString().trim()).to.be.eq('');
done();
});
}).timeout(5000);
it('should ignore system signals if "enableShutdownHooks" was not called', done => {
const result = spawnSync('ts-node', [join(__dirname, '../src/main.ts'), 'SIGINT', 'NONE']);
const result = spawnSync('ts-node', [
join(__dirname, '../src/main.ts'),
'SIGINT',
'NONE',
]);
expect(result.stdout.toString().trim()).to.be.eq('');
done();
});
}).timeout(5000);
});

View File

@@ -5,32 +5,32 @@
"requires": true,
"dependencies": {
"@nestjs/common": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.2.4.tgz",
"integrity": "sha512-YZvJ6/S7yVQZK+9rupCzMCg4tpbc9DyVvLoTx0NBDqExTCUNcNEcCtn0AZrO/hLqbeYODnJwGE2NxkH1R/qw+w==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.5.0.tgz",
"integrity": "sha512-i2m2e/AXFGq0l7IPtwv2SrDHbxRPe4ZsuG54B/V68escu1LMpMZcTCjfANTamRvnNR258QQcSVNBMTUX1nTV8w==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.2.4.tgz",
"integrity": "sha512-aYKi3QGKmpxF6w32STAcobIqOHFqSUXrU8nF+Y9dOlStRkXFBTuVchsoJk94sY+3y4SJAlHH4Q/8R4yFaixrug==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.5.0.tgz",
"integrity": "sha512-VtHeqX7chP1HHPJ1eogKbtSSYIm4LXE4balQEiId2moFm9fdn2ekctBthhhfVwtQqs8vEMvgRixMxZrCJTSuoQ==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"@nuxtjs/opencollective": "0.2.2",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"iterare": "1.2.0",
"object-hash": "1.3.1",
"optional": "0.1.4",
"uuid": "3.3.2"
}
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.2.tgz",
"integrity": "sha512-69gFVDs7mJfNjv9Zs5DFVD+pvBW+k1TaHSOqUWqAyTTfLcKI/EMYQgvEvziRd+zAFtUOoye6MfWh0qvinGISPw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
@@ -69,12 +69,12 @@
"dev": true
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
}
},
"buffer-from": {
@@ -149,9 +149,9 @@
"dev": true
},
"consola": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.6.2.tgz",
"integrity": "sha512-GNJhwvF4bJ8eiAlyB8r4WNM8kBqkl+y4DvMehMbyywoJiv37N0M6/xrKqrrZw/5maZA+UagQV8UZ+XBeuGMzUg=="
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.9.0.tgz",
"integrity": "sha512-34Iue+LRcWbndFIfZc5boNizWlsrRjqIBJZTe591vImgbnq7nx2EzlrLtANj9TH2Fxm7puFJBJAOk5BhvZOddQ=="
},
"cookiejar": {
"version": "2.1.2",
@@ -166,17 +166,19 @@
"dev": true
},
"d": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
"integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
"requires": {
"es5-ext": "^0.10.9"
"es5-ext": "^0.10.50",
"type": "^1.0.1"
}
},
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
@@ -223,13 +225,13 @@
}
},
"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=",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
"integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
"requires": {
"d": "1",
"es5-ext": "^0.10.14",
"es6-iterator": "^2.0.1",
"es5-ext": "^0.10.46",
"es6-iterator": "^2.0.3",
"es6-symbol": "^3.1.1"
}
},
@@ -259,11 +261,26 @@
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "^3.2.6"
"debug": "=3.1.0"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"form-data": {
@@ -300,9 +317,9 @@
"dev": true
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
},
"is-promise": {
"version": "2.1.0",
@@ -310,9 +327,9 @@
"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=="
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.0.tgz",
"integrity": "sha512-RxMV9p/UzdK0Iplnd8mVgRvNdXlsTOiuDrqMRnDi3wIhbT+JP4xDquAX9ay13R3CH72NBzQ91KWe0+C168QAyQ=="
},
"lru-queue": {
"version": "0.1.0",
@@ -373,7 +390,8 @@
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
"dev": true
},
"next-tick": {
"version": "1.0.0",
@@ -520,9 +538,9 @@
}
},
"ts-node": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.2.0.tgz",
"integrity": "sha512-m8XQwUurkbYqXrKqr3WHCW310utRNvV5OnRVeISeea7LoCWVcdfeB/Ntl8JYWFh+WRoUAdBgESrzKochQt7sMw==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
@@ -537,10 +555,15 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
},
"type": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz",
"integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw=="
},
"typescript": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.1.tgz",
"integrity": "sha512-64HkdiRv1yYZsSe4xC1WVgamNigVYjlssIoaH2HcZF0+ijsk5YK2g0G34w9wJkze8+5ow4STd22AynfO6ZYYLw=="
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
"integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g=="
},
"util-deprecate": {
"version": "1.0.2",

View File

@@ -7,17 +7,17 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.2.4",
"@nestjs/core": "6.2.4",
"@nestjs/common": "6.5.0",
"@nestjs/core": "6.5.0",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.2",
"typescript": "3.5.1"
"typescript": "3.5.3"
},
"devDependencies": {
"@types/node": "7.10.6",
"supertest": "4.0.2",
"ts-node": "8.2.0"
"ts-node": "8.3.0"
}
}

View File

@@ -0,0 +1,37 @@
import { Test, TestingModule } from '@nestjs/testing';
import { expect } from 'chai';
import { CoreInjectablesModule } from '../src/core-injectables/core-injectables.module';
import { ApplicationConfig, ModuleRef } from '@nestjs/core';
describe('Core Injectables', () => {
let testingModule: TestingModule;
beforeEach(async () => {
const builder = Test.createTestingModule({
imports: [CoreInjectablesModule],
});
testingModule = await builder.compile();
});
it('should provide ApplicationConfig as core injectable', () => {
const applicationConfig = testingModule.get<ApplicationConfig>(
ApplicationConfig,
);
applicationConfig.setGlobalPrefix('/api');
expect(applicationConfig).to.not.be.undefined;
expect(applicationConfig.getGlobalPrefix()).to.be.eq('/api');
});
it('should provide ModuleRef as core injectable', () => {
const moduleRef = testingModule.get<ModuleRef>(ModuleRef);
expect(moduleRef).to.not.be.undefined;
});
it('should provide the current Module as provider', () => {
const module = testingModule.get<CoreInjectablesModule>(CoreInjectablesModule);
expect(module).to.not.be.undefined;
expect(module.constructor.name).to.be.eq('CoreInjectablesModule');
});
});

View File

@@ -5,58 +5,58 @@
"requires": true,
"dependencies": {
"@nestjs/common": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.2.4.tgz",
"integrity": "sha512-YZvJ6/S7yVQZK+9rupCzMCg4tpbc9DyVvLoTx0NBDqExTCUNcNEcCtn0AZrO/hLqbeYODnJwGE2NxkH1R/qw+w==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.5.0.tgz",
"integrity": "sha512-i2m2e/AXFGq0l7IPtwv2SrDHbxRPe4ZsuG54B/V68escu1LMpMZcTCjfANTamRvnNR258QQcSVNBMTUX1nTV8w==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.2.4.tgz",
"integrity": "sha512-aYKi3QGKmpxF6w32STAcobIqOHFqSUXrU8nF+Y9dOlStRkXFBTuVchsoJk94sY+3y4SJAlHH4Q/8R4yFaixrug==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.5.0.tgz",
"integrity": "sha512-VtHeqX7chP1HHPJ1eogKbtSSYIm4LXE4balQEiId2moFm9fdn2ekctBthhhfVwtQqs8vEMvgRixMxZrCJTSuoQ==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"@nuxtjs/opencollective": "0.2.2",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"iterare": "1.2.0",
"object-hash": "1.3.1",
"optional": "0.1.4",
"uuid": "3.3.2"
}
},
"@nestjs/microservices": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.2.4.tgz",
"integrity": "sha512-aVXLPPTL2nUf4EVBcuqbCRFN62BDhFjxSy49BIpMTDqbaSOZPgfhfwyotDI6sAG0cJq4zWvU/OCC2/NkLq9Ryg==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.5.0.tgz",
"integrity": "sha512-5me3V8kZ5n3TWTv5uM2IvNZNCbnXynKOiIRygVrFriWbkidHebMRkamAAeV2MW6YvPSsY0D3Ay1mGCGSZXS2XA==",
"requires": {
"iterare": "1.1.2",
"iterare": "1.2.0",
"json-socket": "0.3.0",
"optional": "0.1.4"
}
},
"@nestjs/testing": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.2.4.tgz",
"integrity": "sha512-l5uxeNz+CksHaVcHxSlpo0vyJxvZP7BM1vS6BKuqtn/lNlIITAkdWmCVfBldN8Okayj3B2yhc04Zq6imU3aX9w==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.5.0.tgz",
"integrity": "sha512-4K3yAjXsboKuCf3+Evpc4UvoDiMe8p66p8wXQ+BJA78JN14YFJMg2wDKL3xnz/zfd12tMrTVPf8wE8AXvGAYbw==",
"requires": {
"optional": "0.1.4"
}
},
"@nestjs/websockets": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.2.4.tgz",
"integrity": "sha512-3cpEZz/uTTHiMXX6d+lXH9Wg7Rtla36Oc3JTmQtuGc1KlAIs3wzJRO/qU/LfLuYrNeqAAFVq8EHW3DkjPFxXjg==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.5.0.tgz",
"integrity": "sha512-HJ2c66O15cRUsueWqAKfl7FqsT76doEpyVMSh9CQ2KWgv++8Eugl8/lV8iCoDcuXIZDKX+Sw3XUuKdtmYPdqeA==",
"requires": {
"iterare": "1.1.2"
"iterare": "1.2.0"
}
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.2.tgz",
"integrity": "sha512-69gFVDs7mJfNjv9Zs5DFVD+pvBW+k1TaHSOqUWqAyTTfLcKI/EMYQgvEvziRd+zAFtUOoye6MfWh0qvinGISPw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
@@ -95,12 +95,12 @@
"dev": true
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
}
},
"buffer-from": {
@@ -175,9 +175,9 @@
"dev": true
},
"consola": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.6.2.tgz",
"integrity": "sha512-GNJhwvF4bJ8eiAlyB8r4WNM8kBqkl+y4DvMehMbyywoJiv37N0M6/xrKqrrZw/5maZA+UagQV8UZ+XBeuGMzUg=="
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.9.0.tgz",
"integrity": "sha512-34Iue+LRcWbndFIfZc5boNizWlsrRjqIBJZTe591vImgbnq7nx2EzlrLtANj9TH2Fxm7puFJBJAOk5BhvZOddQ=="
},
"cookiejar": {
"version": "2.1.2",
@@ -192,17 +192,19 @@
"dev": true
},
"d": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
"integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
"requires": {
"es5-ext": "^0.10.9"
"es5-ext": "^0.10.50",
"type": "^1.0.1"
}
},
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
@@ -249,13 +251,13 @@
}
},
"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=",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
"integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
"requires": {
"d": "1",
"es5-ext": "^0.10.14",
"es6-iterator": "^2.0.1",
"es5-ext": "^0.10.46",
"es6-iterator": "^2.0.3",
"es6-symbol": "^3.1.1"
}
},
@@ -285,11 +287,26 @@
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "^3.2.6"
"debug": "=3.1.0"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"form-data": {
@@ -326,9 +343,9 @@
"dev": true
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
},
"is-promise": {
"version": "2.1.0",
@@ -336,9 +353,9 @@
"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=="
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.0.tgz",
"integrity": "sha512-RxMV9p/UzdK0Iplnd8mVgRvNdXlsTOiuDrqMRnDi3wIhbT+JP4xDquAX9ay13R3CH72NBzQ91KWe0+C168QAyQ=="
},
"json-socket": {
"version": "0.3.0",
@@ -404,7 +421,8 @@
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
"dev": true
},
"next-tick": {
"version": "1.0.0",
@@ -551,9 +569,9 @@
}
},
"ts-node": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.2.0.tgz",
"integrity": "sha512-m8XQwUurkbYqXrKqr3WHCW310utRNvV5OnRVeISeea7LoCWVcdfeB/Ntl8JYWFh+WRoUAdBgESrzKochQt7sMw==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
@@ -568,10 +586,15 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
},
"type": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz",
"integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw=="
},
"typescript": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.1.tgz",
"integrity": "sha512-64HkdiRv1yYZsSe4xC1WVgamNigVYjlssIoaH2HcZF0+ijsk5YK2g0G34w9wJkze8+5ow4STd22AynfO6ZYYLw=="
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
"integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g=="
},
"util-deprecate": {
"version": "1.0.2",

View File

@@ -7,20 +7,20 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.2.4",
"@nestjs/core": "6.2.4",
"@nestjs/microservices": "6.2.4",
"@nestjs/testing": "6.2.4",
"@nestjs/websockets": "6.2.4",
"@nestjs/common": "6.5.0",
"@nestjs/core": "6.5.0",
"@nestjs/microservices": "6.5.0",
"@nestjs/testing": "6.5.0",
"@nestjs/websockets": "6.5.0",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.2",
"typescript": "3.5.1"
"typescript": "3.5.3"
},
"devDependencies": {
"@types/node": "7.10.6",
"supertest": "4.0.2",
"ts-node": "8.2.0"
"ts-node": "8.3.0"
}
}

View File

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

View File

@@ -5,58 +5,69 @@
"requires": true,
"dependencies": {
"@nestjs/common": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.2.4.tgz",
"integrity": "sha512-YZvJ6/S7yVQZK+9rupCzMCg4tpbc9DyVvLoTx0NBDqExTCUNcNEcCtn0AZrO/hLqbeYODnJwGE2NxkH1R/qw+w==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.5.0.tgz",
"integrity": "sha512-i2m2e/AXFGq0l7IPtwv2SrDHbxRPe4ZsuG54B/V68escu1LMpMZcTCjfANTamRvnNR258QQcSVNBMTUX1nTV8w==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.2.4.tgz",
"integrity": "sha512-aYKi3QGKmpxF6w32STAcobIqOHFqSUXrU8nF+Y9dOlStRkXFBTuVchsoJk94sY+3y4SJAlHH4Q/8R4yFaixrug==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.5.0.tgz",
"integrity": "sha512-VtHeqX7chP1HHPJ1eogKbtSSYIm4LXE4balQEiId2moFm9fdn2ekctBthhhfVwtQqs8vEMvgRixMxZrCJTSuoQ==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"@nuxtjs/opencollective": "0.2.2",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"iterare": "1.2.0",
"object-hash": "1.3.1",
"optional": "0.1.4",
"uuid": "3.3.2"
}
},
"@nestjs/microservices": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.2.4.tgz",
"integrity": "sha512-aVXLPPTL2nUf4EVBcuqbCRFN62BDhFjxSy49BIpMTDqbaSOZPgfhfwyotDI6sAG0cJq4zWvU/OCC2/NkLq9Ryg==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.5.0.tgz",
"integrity": "sha512-5me3V8kZ5n3TWTv5uM2IvNZNCbnXynKOiIRygVrFriWbkidHebMRkamAAeV2MW6YvPSsY0D3Ay1mGCGSZXS2XA==",
"requires": {
"iterare": "1.1.2",
"iterare": "1.2.0",
"json-socket": "0.3.0",
"optional": "0.1.4"
}
},
"@nestjs/platform-express": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-6.5.0.tgz",
"integrity": "sha512-EpesaPXSZAoj8G5r+Cr1oF1fkzucg73V3FTyDfgdMhLrdAMEBGzCQFQeigfssDqwDGsB4Z630fs7et9u+y7Q4A==",
"requires": {
"body-parser": "1.19.0",
"cors": "2.8.5",
"express": "4.17.1",
"multer": "1.4.1"
}
},
"@nestjs/testing": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.2.4.tgz",
"integrity": "sha512-l5uxeNz+CksHaVcHxSlpo0vyJxvZP7BM1vS6BKuqtn/lNlIITAkdWmCVfBldN8Okayj3B2yhc04Zq6imU3aX9w==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.5.0.tgz",
"integrity": "sha512-4K3yAjXsboKuCf3+Evpc4UvoDiMe8p66p8wXQ+BJA78JN14YFJMg2wDKL3xnz/zfd12tMrTVPf8wE8AXvGAYbw==",
"requires": {
"optional": "0.1.4"
}
},
"@nestjs/websockets": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.2.4.tgz",
"integrity": "sha512-3cpEZz/uTTHiMXX6d+lXH9Wg7Rtla36Oc3JTmQtuGc1KlAIs3wzJRO/qU/LfLuYrNeqAAFVq8EHW3DkjPFxXjg==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.5.0.tgz",
"integrity": "sha512-HJ2c66O15cRUsueWqAKfl7FqsT76doEpyVMSh9CQ2KWgv++8Eugl8/lV8iCoDcuXIZDKX+Sw3XUuKdtmYPdqeA==",
"requires": {
"iterare": "1.1.2"
"iterare": "1.2.0"
}
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.2.tgz",
"integrity": "sha512-69gFVDs7mJfNjv9Zs5DFVD+pvBW+k1TaHSOqUWqAyTTfLcKI/EMYQgvEvziRd+zAFtUOoye6MfWh0qvinGISPw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
@@ -69,12 +80,36 @@
"integrity": "sha512-d0BOAicT0tEdbdVQlLGOVul1kvg6YvbaADRCThGCz5NJ0e9r00SofcR1x69hmlCyrHuB6jd4cKzL9bMLjPnpAA==",
"dev": true
},
"amqp-connection-manager": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/amqp-connection-manager/-/amqp-connection-manager-2.3.2.tgz",
"integrity": "sha512-peU+ib/vmveoSbNl88N40yOpvYFaT4C8ZZLrd5957KrPqtSLpCHaD7lTEkoUumkIklgdk2zcro/oEhjyoCWbig==",
"accepts": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
"integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
"requires": {
"promise-breaker": "^4.1.2"
"mime-types": "~2.1.24",
"negotiator": "0.6.2"
},
"dependencies": {
"mime-db": {
"version": "1.40.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
"integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA=="
},
"mime-types": {
"version": "2.1.24",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
"integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
"requires": {
"mime-db": "1.40.0"
}
}
}
},
"amqp-connection-manager": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/amqp-connection-manager/-/amqp-connection-manager-3.0.0.tgz",
"integrity": "sha512-a5MsUDsG+CqMjwk/WNFSTE0H4pAaWJXw7L24QFa3MeaB+KA05PXoBsppYlIzaIqc1XLWZwjO9J42AFHNrDsVFQ==",
"requires": {
"promise-breaker": "^5.0.0"
}
},
"ansi-regex": {
@@ -90,12 +125,22 @@
"color-convert": "^1.9.0"
}
},
"append-field": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
"integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY="
},
"arg": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz",
"integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==",
"dev": true
},
"array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
@@ -103,19 +148,69 @@
"dev": true
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
}
},
"body-parser": {
"version": "1.19.0",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
"integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
"requires": {
"bytes": "3.1.0",
"content-type": "~1.0.4",
"debug": "2.6.9",
"depd": "~1.1.2",
"http-errors": "1.7.2",
"iconv-lite": "0.4.24",
"on-finished": "~2.3.0",
"qs": "6.7.0",
"raw-body": "2.4.0",
"type-is": "~1.6.17"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"qs": {
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
"integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
}
}
},
"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
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
},
"busboy": {
"version": "0.2.14",
"resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz",
"integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=",
"requires": {
"dicer": "0.2.5",
"readable-stream": "1.1.x"
}
},
"bytes": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
},
"chalk": {
"version": "2.4.2",
@@ -182,10 +277,73 @@
"integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
"dev": true
},
"concat-stream": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
"requires": {
"buffer-from": "^1.0.0",
"inherits": "^2.0.3",
"readable-stream": "^2.2.2",
"typedarray": "^0.0.6"
},
"dependencies": {
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"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==",
"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==",
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"consola": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.6.2.tgz",
"integrity": "sha512-GNJhwvF4bJ8eiAlyB8r4WNM8kBqkl+y4DvMehMbyywoJiv37N0M6/xrKqrrZw/5maZA+UagQV8UZ+XBeuGMzUg=="
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.9.0.tgz",
"integrity": "sha512-34Iue+LRcWbndFIfZc5boNizWlsrRjqIBJZTe591vImgbnq7nx2EzlrLtANj9TH2Fxm7puFJBJAOk5BhvZOddQ=="
},
"content-disposition": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
"integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
"requires": {
"safe-buffer": "5.1.2"
}
},
"content-type": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
},
"cookie": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
"integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
},
"cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
},
"cookiejar": {
"version": "2.1.2",
@@ -196,21 +354,31 @@
"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
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"cors": {
"version": "2.8.5",
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
"requires": {
"object-assign": "^4",
"vary": "^1"
}
},
"d": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
"integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
"requires": {
"es5-ext": "^0.10.9"
"es5-ext": "^0.10.50",
"type": "^1.0.1"
}
},
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
@@ -221,12 +389,41 @@
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
},
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
},
"destroy": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
},
"dicer": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz",
"integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=",
"requires": {
"readable-stream": "1.1.x",
"streamsearch": "0.1.2"
}
},
"diff": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
"dev": true
},
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
},
"es5-ext": {
"version": "0.10.50",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz",
@@ -257,21 +454,31 @@
}
},
"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=",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
"integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
"requires": {
"d": "1",
"es5-ext": "^0.10.14",
"es6-iterator": "^2.0.1",
"es5-ext": "^0.10.46",
"es6-iterator": "^2.0.3",
"es6-symbol": "^3.1.1"
}
},
"escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
},
"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="
},
"etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
},
"event-emitter": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
@@ -281,6 +488,63 @@
"es5-ext": "~0.10.14"
}
},
"express": {
"version": "4.17.1",
"resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
"integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
"requires": {
"accepts": "~1.3.7",
"array-flatten": "1.1.1",
"body-parser": "1.19.0",
"content-disposition": "0.5.3",
"content-type": "~1.0.4",
"cookie": "0.4.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "~1.1.2",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"finalhandler": "~1.1.2",
"fresh": "0.5.2",
"merge-descriptors": "1.0.1",
"methods": "~1.1.2",
"on-finished": "~2.3.0",
"parseurl": "~1.3.3",
"path-to-regexp": "0.1.7",
"proxy-addr": "~2.0.5",
"qs": "6.7.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.1.2",
"send": "0.17.1",
"serve-static": "1.14.1",
"setprototypeof": "1.1.1",
"statuses": "~1.5.0",
"type-is": "~1.6.18",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"qs": {
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
"integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
}
}
},
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
@@ -292,12 +556,56 @@
"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==",
"finalhandler": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
"integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
"requires": {
"debug": "^3.2.6"
"debug": "2.6.9",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"on-finished": "~2.3.0",
"parseurl": "~1.3.3",
"statuses": "~1.5.0",
"unpipe": "~1.0.0"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"follow-redirects": {
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "=3.1.0"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"form-data": {
@@ -317,6 +625,16 @@
"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="
},
"fresh": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
},
"google-libphonenumber": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/google-libphonenumber/-/google-libphonenumber-3.2.2.tgz",
@@ -327,26 +645,55 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
},
"http-errors": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
"integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
"requires": {
"depd": "~1.1.2",
"inherits": "2.0.3",
"setprototypeof": "1.1.1",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.0"
}
},
"iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"ipaddr.js": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
"integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
},
"is-promise": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
},
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
},
"iterare": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.1.2.tgz",
"integrity": "sha512-25rVYmj/dDvTR6zOa9jY1Ihd6USLa0J508Ub2iy7Aga+xu9JMbjDds2Uh03ReDGbva/YN3s3Ybi+Do0nOX6wAg=="
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.0.tgz",
"integrity": "sha512-RxMV9p/UzdK0Iplnd8mVgRvNdXlsTOiuDrqMRnDi3wIhbT+JP4xDquAX9ay13R3CH72NBzQ91KWe0+C168QAyQ=="
},
"json-socket": {
"version": "0.3.0",
@@ -367,6 +714,11 @@
"integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==",
"dev": true
},
"media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
},
"memoizee": {
"version": "0.4.14",
"resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz",
@@ -382,11 +734,15 @@
"timers-ext": "^0.1.5"
}
},
"merge-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
},
"methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
"dev": true
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
},
"mime": {
"version": "1.4.1",
@@ -409,11 +765,44 @@
"mime-db": "~1.38.0"
}
},
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
},
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"requires": {
"minimist": "0.0.8"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
},
"multer": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/multer/-/multer-1.4.1.tgz",
"integrity": "sha512-zzOLNRxzszwd+61JFuAo0fxdQfvku12aNJgnla0AQ+hHxFmfc/B7jBVuPr5Rmvu46Jze/iJrFpSOsD7afO8SDw==",
"requires": {
"append-field": "^1.0.0",
"busboy": "^0.2.11",
"concat-stream": "^1.5.2",
"mkdirp": "^0.5.1",
"object-assign": "^4.1.1",
"on-finished": "^2.3.0",
"type-is": "^1.6.4",
"xtend": "^4.0.0"
}
},
"negotiator": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
},
"next-tick": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
@@ -424,26 +813,57 @@
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
"object-hash": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz",
"integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA=="
},
"on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
"requires": {
"ee-first": "1.1.1"
}
},
"optional": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/optional/-/optional-0.1.4.tgz",
"integrity": "sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw=="
},
"parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
},
"path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
},
"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
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
},
"promise-breaker": {
"version": "4.1.13",
"resolved": "https://registry.npmjs.org/promise-breaker/-/promise-breaker-4.1.13.tgz",
"integrity": "sha512-+lGBqmBEgyvKweIrK4smdN1YxdYp5YjSL1us2XhTMBbZf98jdeGys/Edt5S1b1NXMVRQrvh4DrMgGpYPbXZf3g=="
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/promise-breaker/-/promise-breaker-5.0.0.tgz",
"integrity": "sha512-mgsWQuG4kJ1dtO6e/QlNDLFtMkMzzecsC69aI5hlLEjGHFNpHrvGhFi4LiK5jg2SMQj74/diH+wZliL9LpGsyA=="
},
"proxy-addr": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
"integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
"requires": {
"forwarded": "~0.1.2",
"ipaddr.js": "1.9.0"
}
},
"qs": {
"version": "6.5.2",
@@ -451,6 +871,33 @@
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
"dev": true
},
"range-parser": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
},
"raw-body": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
"integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
"requires": {
"bytes": "3.1.0",
"http-errors": "1.7.2",
"iconv-lite": "0.4.24",
"unpipe": "1.0.0"
}
},
"readable-stream": {
"version": "1.1.14",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.1",
"isarray": "0.0.1",
"string_decoder": "~0.10.x"
}
},
"reflect-metadata": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
@@ -467,8 +914,70 @@
"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
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"send": {
"version": "0.17.1",
"resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
"integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
"requires": {
"debug": "2.6.9",
"depd": "~1.1.2",
"destroy": "~1.0.4",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"fresh": "0.5.2",
"http-errors": "~1.7.2",
"mime": "1.6.0",
"ms": "2.1.1",
"on-finished": "~2.3.0",
"range-parser": "~1.2.1",
"statuses": "~1.5.0"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
},
"dependencies": {
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
}
}
},
"serve-static": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
"integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
"requires": {
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
"send": "0.17.1"
}
},
"setprototypeof": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
},
"source-map": {
"version": "0.6.1",
@@ -486,6 +995,21 @@
"source-map": "^0.6.0"
}
},
"statuses": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
},
"streamsearch": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
"integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
},
"string_decoder": {
"version": "0.10.31",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
},
"superagent": {
"version": "3.8.3",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz",
@@ -563,10 +1087,15 @@
"next-tick": "1"
}
},
"toidentifier": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
"integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
},
"ts-node": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.2.0.tgz",
"integrity": "sha512-m8XQwUurkbYqXrKqr3WHCW310utRNvV5OnRVeISeea7LoCWVcdfeB/Ntl8JYWFh+WRoUAdBgESrzKochQt7sMw==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
@@ -581,16 +1110,59 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
},
"type": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz",
"integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw=="
},
"type-is": {
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
"requires": {
"media-typer": "0.3.0",
"mime-types": "~2.1.24"
},
"dependencies": {
"mime-db": {
"version": "1.40.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
"integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA=="
},
"mime-types": {
"version": "2.1.24",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
"integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
"requires": {
"mime-db": "1.40.0"
}
}
}
},
"typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
},
"typescript": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.1.tgz",
"integrity": "sha512-64HkdiRv1yYZsSe4xC1WVgamNigVYjlssIoaH2HcZF0+ijsk5YK2g0G34w9wJkze8+5ow4STd22AynfO6ZYYLw=="
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
"integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g=="
},
"unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
},
"uuid": {
"version": "3.3.2",
@@ -602,6 +1174,16 @@
"resolved": "https://registry.npmjs.org/validator/-/validator-10.4.0.tgz",
"integrity": "sha512-Q/wBy3LB1uOyssgNlXSRmaf22NxjvDNZM2MtIQ4jaEOAB61xsh1TQxsq1CgzUMBV1lDrVMogIh8GjG1DYW0zLg=="
},
"vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
},
"xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
},
"yn": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.0.tgz",

View File

@@ -7,22 +7,22 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.2.4",
"@nestjs/core": "6.2.4",
"@nestjs/microservices": "6.2.4",
"@nestjs/platform-express": "6.2.4",
"@nestjs/testing": "6.2.4",
"@nestjs/websockets": "6.2.4",
"amqp-connection-manager": "2.3.2",
"@nestjs/common": "6.5.0",
"@nestjs/core": "6.5.0",
"@nestjs/microservices": "6.5.0",
"@nestjs/platform-express": "6.5.0",
"@nestjs/testing": "6.5.0",
"@nestjs/websockets": "6.5.0",
"amqp-connection-manager": "3.0.0",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.2",
"typescript": "3.5.1"
"typescript": "3.5.3"
},
"devDependencies": {
"@types/node": "7.10.6",
"supertest": "4.0.2",
"ts-node": "8.2.0"
"ts-node": "8.3.0"
}
}

View File

@@ -16,16 +16,17 @@ export class DisconnectedClientController {
const client = ClientProxyFactory.create(options);
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(
console.log.bind(console, 'data'),
console.error.bind(console, 'error'),
),*/
catchError(error => {
const { code } = error || { code: 'CONN_ERR' };
return throwError(
code === 'ECONNREFUSED' || code === 'CONN_ERR'
? new RequestTimeoutException('ECONNREFUSED')
: new InternalServerErrorException(),
),
),
);
}),
);
}
}

View File

@@ -25,23 +25,23 @@
}
},
"@nestjs/common": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.2.4.tgz",
"integrity": "sha512-YZvJ6/S7yVQZK+9rupCzMCg4tpbc9DyVvLoTx0NBDqExTCUNcNEcCtn0AZrO/hLqbeYODnJwGE2NxkH1R/qw+w==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.5.0.tgz",
"integrity": "sha512-i2m2e/AXFGq0l7IPtwv2SrDHbxRPe4ZsuG54B/V68escu1LMpMZcTCjfANTamRvnNR258QQcSVNBMTUX1nTV8w==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.2.4.tgz",
"integrity": "sha512-aYKi3QGKmpxF6w32STAcobIqOHFqSUXrU8nF+Y9dOlStRkXFBTuVchsoJk94sY+3y4SJAlHH4Q/8R4yFaixrug==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.5.0.tgz",
"integrity": "sha512-VtHeqX7chP1HHPJ1eogKbtSSYIm4LXE4balQEiId2moFm9fdn2ekctBthhhfVwtQqs8vEMvgRixMxZrCJTSuoQ==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"@nuxtjs/opencollective": "0.2.2",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"iterare": "1.2.0",
"object-hash": "1.3.1",
"optional": "0.1.4",
"uuid": "3.3.2"
@@ -53,9 +53,9 @@
"integrity": "sha512-BkbkguvaPPGbL/41lK6P22DaQodBC9Yv9rUAmNlQVShChtwss7/cGj68AKC3jEoidrx75wCyDO3P8Tp6pggE4w=="
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.2.tgz",
"integrity": "sha512-69gFVDs7mJfNjv9Zs5DFVD+pvBW+k1TaHSOqUWqAyTTfLcKI/EMYQgvEvziRd+zAFtUOoye6MfWh0qvinGISPw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
@@ -72,9 +72,9 @@
}
},
"@types/mongodb": {
"version": "3.1.27",
"resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.1.27.tgz",
"integrity": "sha512-DZMG/4iEh771XHw84PWFOb2JuMCKN+czroK3wFz95sGetOQPs8zqa6wjL0hswqH5XYMt0X/ekV6t2sAmSsaafg==",
"version": "3.1.28",
"resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.1.28.tgz",
"integrity": "sha512-tG+QqJ/hir2p0069ee28t2O9tlGRJKDq1WFZC2QYMlU47LGdldLL8tepfTq6aFLvP58OpwSoxaJ/qjW93ob1NQ==",
"dev": true,
"requires": {
"@types/bson": "*",
@@ -82,9 +82,9 @@
}
},
"@types/mongoose": {
"version": "5.5.3",
"resolved": "https://registry.npmjs.org/@types/mongoose/-/mongoose-5.5.3.tgz",
"integrity": "sha512-HTHlGl81+LcG9b9Bgyn2Jjl8MO8Tx4FZLRVSf3+SpVl7kRF2iUY/C8vZH5Vj7UvLQGSrUGkt+fJUBrmsD1HucQ==",
"version": "5.5.8",
"resolved": "https://registry.npmjs.org/@types/mongoose/-/mongoose-5.5.8.tgz",
"integrity": "sha512-PtKUS5IC72F/5dwaUaCleYlXuaXXLDUL2wUGSnteq7ifUDQRqNji/vEpK8KQR+uHiRih1l90g4doOAZOc9veUg==",
"dev": true,
"requires": {
"@types/mongodb": "*",
@@ -134,12 +134,12 @@
}
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
}
},
"balanced-match": {
@@ -229,24 +229,32 @@
"dev": true
},
"consola": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.6.2.tgz",
"integrity": "sha512-GNJhwvF4bJ8eiAlyB8r4WNM8kBqkl+y4DvMehMbyywoJiv37N0M6/xrKqrrZw/5maZA+UagQV8UZ+XBeuGMzUg=="
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.9.0.tgz",
"integrity": "sha512-34Iue+LRcWbndFIfZc5boNizWlsrRjqIBJZTe591vImgbnq7nx2EzlrLtANj9TH2Fxm7puFJBJAOk5BhvZOddQ=="
},
"d": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
"integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
"requires": {
"es5-ext": "^0.10.9"
"es5-ext": "^0.10.50",
"type": "^1.0.1"
}
},
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "^2.1.1"
"ms": "2.0.0"
},
"dependencies": {
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"diff": {
@@ -285,13 +293,13 @@
}
},
"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=",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
"integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
"requires": {
"d": "1",
"es5-ext": "^0.10.14",
"es6-iterator": "^2.0.1",
"es5-ext": "^0.10.46",
"es6-iterator": "^2.0.3",
"es6-symbol": "^3.1.1"
}
},
@@ -327,11 +335,11 @@
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "^3.2.6"
"debug": "=3.1.0"
}
},
"fs.realpath": {
@@ -341,9 +349,9 @@
"dev": true
},
"glob": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"version": "7.1.4",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
"integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
@@ -370,15 +378,15 @@
}
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
},
"is-promise": {
"version": "2.1.0",
@@ -386,9 +394,9 @@
"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=="
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.0.tgz",
"integrity": "sha512-RxMV9p/UzdK0Iplnd8mVgRvNdXlsTOiuDrqMRnDi3wIhbT+JP4xDquAX9ay13R3CH72NBzQ91KWe0+C168QAyQ=="
},
"js-tokens": {
"version": "4.0.0",
@@ -476,18 +484,18 @@
}
},
"mongodb": {
"version": "3.2.5",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.2.5.tgz",
"integrity": "sha512-VEu2nsfFMwWA6q6JVnlJ2kNVwjluU4op2J/YiG1LeI14t9HotLXbg8w3I794BvezC4ZCZ/wBTTdby01txalwwQ==",
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.2.7.tgz",
"integrity": "sha512-2YdWrdf1PJgxcCrT1tWoL6nHuk6hCxhddAAaEh8QJL231ci4+P9FLyqopbTm2Z2sAU6mhCri+wd9r1hOcHdoMw==",
"requires": {
"mongodb-core": "3.2.5",
"mongodb-core": "3.2.7",
"safe-buffer": "^5.1.2"
}
},
"mongodb-core": {
"version": "3.2.5",
"resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.2.5.tgz",
"integrity": "sha512-czmFd/7Cy+PxItL5KewYgkKTJGb2JyC1PdIdLBVGHER4Vsgu/A+fXDDNO+PLuyHNdh7qbH2XyLP4HHAifgBBoQ==",
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.2.7.tgz",
"integrity": "sha512-WypKdLxFNPOH/Jy6i9z47IjG2wIldA54iDZBmHMINcgKOUcWJh8og+Wix76oGd7EyYkHJKssQ2FAOw5Su/n4XQ==",
"requires": {
"bson": "^1.1.1",
"require_optional": "^1.0.1",
@@ -496,20 +504,20 @@
}
},
"mongoose": {
"version": "5.5.11",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.5.11.tgz",
"integrity": "sha512-jLYPk4jYe1N5CNwBcj48tQwQZ5Dc8VsnAjdMiqaKh5+CwU9EqEfuEtYMkFhJLu/LaTA4LN7crFzydGHdlAZtmg==",
"version": "5.6.4",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.6.4.tgz",
"integrity": "sha512-mwMpa82uGvxSmkwTbxCmXb8/Nn9+2e+X61DiGFV9ZeenTsJKcdjc0QMGwDyDEkLcnYwQ5VrQbiB9548RZbFgVw==",
"requires": {
"async": "2.6.2",
"bson": "~1.1.1",
"kareem": "2.3.0",
"mongodb": "3.2.5",
"mongodb-core": "3.2.5",
"mongodb": "3.2.7",
"mongodb-core": "3.2.7",
"mongoose-legacy-pluralize": "1.0.2",
"mpath": "0.6.0",
"mquery": "3.2.0",
"ms": "2.1.1",
"regexp-clone": "0.0.1",
"mquery": "3.2.1",
"ms": "2.1.2",
"regexp-clone": "1.0.0",
"safe-buffer": "5.1.2",
"sift": "7.0.1",
"sliced": "1.0.1"
@@ -526,36 +534,21 @@
"integrity": "sha512-i75qh79MJ5Xo/sbhxrDrPSEG0H/mr1kcZXJ8dH6URU5jD/knFxCVqVC/gVSW7GIXL/9hHWlT9haLbCXWOll3qw=="
},
"mquery": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.0.tgz",
"integrity": "sha512-qPJcdK/yqcbQiKoemAt62Y0BAc0fTEKo1IThodBD+O5meQRJT/2HSe5QpBNwaa4CjskoGrYWsEyjkqgiE0qjhg==",
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.1.tgz",
"integrity": "sha512-kY/K8QToZWTTocm0U+r8rqcJCp5PRl6e8tPmoDs5OeSO3DInZE2rAL6AYH+V406JTo8305LdASOQcxRDqHojyw==",
"requires": {
"bluebird": "3.5.1",
"debug": "3.1.0",
"regexp-clone": "0.0.1",
"regexp-clone": "^1.0.0",
"safe-buffer": "5.1.2",
"sliced": "1.0.1"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"next-tick": {
"version": "1.0.0",
@@ -604,9 +597,9 @@
"integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
},
"regexp-clone": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz",
"integrity": "sha1-p8LgmJH9vzj7sQ03b7cwA+aKxYk="
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz",
"integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw=="
},
"require_optional": {
"version": "1.0.1",
@@ -618,9 +611,9 @@
}
},
"resolve": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
"integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
"integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==",
"dev": true,
"requires": {
"path-parse": "^1.0.6"
@@ -717,9 +710,9 @@
}
},
"ts-node": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.2.0.tgz",
"integrity": "sha512-m8XQwUurkbYqXrKqr3WHCW310utRNvV5OnRVeISeea7LoCWVcdfeB/Ntl8JYWFh+WRoUAdBgESrzKochQt7sMw==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
@@ -743,9 +736,9 @@
"integrity": "sha512-avfPS28HmGLLc2o4elcc2EIq2FcH++Yo5YxpBZi9Yw93BCTGFthI4HPE4Rpep6vSYQaK8e69PelM44tPj+RaQg=="
},
"tslint": {
"version": "5.16.0",
"resolved": "https://registry.npmjs.org/tslint/-/tslint-5.16.0.tgz",
"integrity": "sha512-UxG2yNxJ5pgGwmMzPMYh/CCnCnh0HfPgtlVRDs1ykZklufFBL1ZoTlWFRz2NQjcoEiDoRp+JyT0lhBbbH/obyA==",
"version": "5.18.0",
"resolved": "https://registry.npmjs.org/tslint/-/tslint-5.18.0.tgz",
"integrity": "sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
@@ -754,7 +747,7 @@
"commander": "^2.12.1",
"diff": "^3.2.0",
"glob": "^7.1.1",
"js-yaml": "^3.13.0",
"js-yaml": "^3.13.1",
"minimatch": "^3.0.4",
"mkdirp": "^0.5.1",
"resolve": "^1.3.2",
@@ -772,10 +765,15 @@
"tslib": "^1.8.1"
}
},
"type": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz",
"integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw=="
},
"typescript": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.1.tgz",
"integrity": "sha512-64HkdiRv1yYZsSe4xC1WVgamNigVYjlssIoaH2HcZF0+ijsk5YK2g0G34w9wJkze8+5ow4STd22AynfO6ZYYLw=="
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
"integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g=="
},
"uuid": {
"version": "3.3.2",

View File

@@ -9,18 +9,18 @@
"start:prod": "node dist/main.js"
},
"dependencies": {
"@nestjs/common": "6.2.4",
"@nestjs/core": "6.2.4",
"@nestjs/common": "6.5.0",
"@nestjs/core": "6.5.0",
"@nestjs/mongoose": "6.1.2",
"mongoose": "5.5.11",
"mongoose": "5.6.4",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.2",
"typescript": "3.5.1"
"typescript": "3.5.3"
},
"devDependencies": {
"@types/mongoose": "5.5.3",
"@types/mongoose": "5.5.8",
"@types/node": "7.10.6",
"ts-node": "8.2.0",
"tslint": "5.16.0"
"ts-node": "8.3.0",
"tslint": "5.18.0"
}
}

View File

@@ -0,0 +1,81 @@
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 { Guard } from '../src/msvc/guards/request-scoped.guard';
import { HelloController } from '../src/msvc/hello.controller';
import { HelloModule } from '../src/msvc/hello.module';
import { Interceptor } from '../src/msvc/interceptors/logging.interceptor';
import { UsersService } from '../src/msvc/users/users.service';
class Meta {
static COUNTER = 0;
constructor() {
Meta.COUNTER++;
}
}
describe('Request scope (microservices)', () => {
let server;
let app: INestApplication;
before(async () => {
const module = await Test.createTestingModule({
imports: [
HelloModule.forRoot({
provide: 'META',
useClass: Meta,
}),
],
}).compile();
app = module.createNestApplication();
app.connectMicroservice({ transport: Transport.TCP });
server = app.getHttpServer();
await app.init();
await app.startAllMicroservicesAsync();
});
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 interceptor for each request`, async () => {
expect(Interceptor.COUNTER).to.be.eql(3);
expect(Interceptor.REQUEST_SCOPED_DATA).to.deep.equal([1, 1, 1]);
});
it(`should create request scoped guard for each request`, async () => {
expect(Guard.COUNTER).to.be.eql(3);
expect(Guard.REQUEST_SCOPED_DATA).to.deep.equal([1, 1, 1]);
});
});
after(async () => {
await app.close();
});
});

View File

@@ -63,14 +63,17 @@ describe('Request scope', () => {
it(`should create request scoped pipe for each request`, async () => {
expect(UserByIdPipe.COUNTER).to.be.eql(3);
expect(UserByIdPipe.REQUEST_SCOPED_DATA).to.deep.equal([1, 1, 1]);
});
it(`should create request scoped interceptor for each request`, async () => {
expect(Interceptor.COUNTER).to.be.eql(3);
expect(Interceptor.REQUEST_SCOPED_DATA).to.deep.equal([1, 1, 1]);
});
it(`should create request scoped guard for each request`, async () => {
expect(Guard.COUNTER).to.be.eql(3);
expect(Guard.REQUEST_SCOPED_DATA).to.deep.equal([1, 1, 1]);
});
});

View File

@@ -5,58 +5,58 @@
"requires": true,
"dependencies": {
"@nestjs/common": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.2.4.tgz",
"integrity": "sha512-YZvJ6/S7yVQZK+9rupCzMCg4tpbc9DyVvLoTx0NBDqExTCUNcNEcCtn0AZrO/hLqbeYODnJwGE2NxkH1R/qw+w==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.5.0.tgz",
"integrity": "sha512-i2m2e/AXFGq0l7IPtwv2SrDHbxRPe4ZsuG54B/V68escu1LMpMZcTCjfANTamRvnNR258QQcSVNBMTUX1nTV8w==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.2.4.tgz",
"integrity": "sha512-aYKi3QGKmpxF6w32STAcobIqOHFqSUXrU8nF+Y9dOlStRkXFBTuVchsoJk94sY+3y4SJAlHH4Q/8R4yFaixrug==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.5.0.tgz",
"integrity": "sha512-VtHeqX7chP1HHPJ1eogKbtSSYIm4LXE4balQEiId2moFm9fdn2ekctBthhhfVwtQqs8vEMvgRixMxZrCJTSuoQ==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"@nuxtjs/opencollective": "0.2.2",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"iterare": "1.2.0",
"object-hash": "1.3.1",
"optional": "0.1.4",
"uuid": "3.3.2"
}
},
"@nestjs/microservices": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.2.4.tgz",
"integrity": "sha512-aVXLPPTL2nUf4EVBcuqbCRFN62BDhFjxSy49BIpMTDqbaSOZPgfhfwyotDI6sAG0cJq4zWvU/OCC2/NkLq9Ryg==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.5.0.tgz",
"integrity": "sha512-5me3V8kZ5n3TWTv5uM2IvNZNCbnXynKOiIRygVrFriWbkidHebMRkamAAeV2MW6YvPSsY0D3Ay1mGCGSZXS2XA==",
"requires": {
"iterare": "1.1.2",
"iterare": "1.2.0",
"json-socket": "0.3.0",
"optional": "0.1.4"
}
},
"@nestjs/testing": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.2.4.tgz",
"integrity": "sha512-l5uxeNz+CksHaVcHxSlpo0vyJxvZP7BM1vS6BKuqtn/lNlIITAkdWmCVfBldN8Okayj3B2yhc04Zq6imU3aX9w==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.5.0.tgz",
"integrity": "sha512-4K3yAjXsboKuCf3+Evpc4UvoDiMe8p66p8wXQ+BJA78JN14YFJMg2wDKL3xnz/zfd12tMrTVPf8wE8AXvGAYbw==",
"requires": {
"optional": "0.1.4"
}
},
"@nestjs/websockets": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.2.4.tgz",
"integrity": "sha512-3cpEZz/uTTHiMXX6d+lXH9Wg7Rtla36Oc3JTmQtuGc1KlAIs3wzJRO/qU/LfLuYrNeqAAFVq8EHW3DkjPFxXjg==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.5.0.tgz",
"integrity": "sha512-HJ2c66O15cRUsueWqAKfl7FqsT76doEpyVMSh9CQ2KWgv++8Eugl8/lV8iCoDcuXIZDKX+Sw3XUuKdtmYPdqeA==",
"requires": {
"iterare": "1.1.2"
"iterare": "1.2.0"
}
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.2.tgz",
"integrity": "sha512-69gFVDs7mJfNjv9Zs5DFVD+pvBW+k1TaHSOqUWqAyTTfLcKI/EMYQgvEvziRd+zAFtUOoye6MfWh0qvinGISPw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
@@ -134,19 +134,19 @@
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
}
},
"buffer-from": {
@@ -221,9 +221,9 @@
"dev": true
},
"consola": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.6.2.tgz",
"integrity": "sha512-GNJhwvF4bJ8eiAlyB8r4WNM8kBqkl+y4DvMehMbyywoJiv37N0M6/xrKqrrZw/5maZA+UagQV8UZ+XBeuGMzUg=="
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.9.0.tgz",
"integrity": "sha512-34Iue+LRcWbndFIfZc5boNizWlsrRjqIBJZTe591vImgbnq7nx2EzlrLtANj9TH2Fxm7puFJBJAOk5BhvZOddQ=="
},
"cookiejar": {
"version": "2.1.2",
@@ -238,26 +238,26 @@
"dev": true
},
"d": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
"integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
"requires": {
"es5-ext": "^0.10.9"
"es5-ext": "^0.10.50",
"type": "^1.0.1"
}
},
"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=="
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz",
"integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA=="
},
"delayed-stream": {
"version": "1.0.0",
@@ -301,13 +301,13 @@
}
},
"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=",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
"integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
"requires": {
"d": "1",
"es5-ext": "^0.10.14",
"es6-iterator": "^2.0.1",
"es5-ext": "^0.10.46",
"es6-iterator": "^2.0.3",
"es6-symbol": "^3.1.1"
}
},
@@ -347,9 +347,9 @@
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
},
"fast-json-stringify": {
"version": "1.15.2",
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-1.15.2.tgz",
"integrity": "sha512-iKo79rW7J2LRexme54j33BZBmFmGtqwYL6fmAxnU5VOZEJCUFir5g5iCmt5HXtxUXvI2hnmpGku+cduJpMCvwQ==",
"version": "1.15.3",
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-1.15.3.tgz",
"integrity": "sha512-p+ucnySTbrUQ9M7u8ygFIxrmpG8B+8O4/PvLDdh+RqMMgj/h6OoDb7U2lP+kqg3PDclQBFbSIArRhkorFwZLLg==",
"requires": {
"ajv": "^6.8.1",
"deepmerge": "^3.0.0"
@@ -366,9 +366,9 @@
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"fastify": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/fastify/-/fastify-2.4.1.tgz",
"integrity": "sha512-AVzNO8/gg6og8T/s7M3UUQjvI4AIJNm8CSHm+kf3S0mGoJfWpfRuTD1pRTQ5tM+0pJpybyT5nDVTy97/oTD1+w==",
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/fastify/-/fastify-2.6.0.tgz",
"integrity": "sha512-3GxGV2P8731o2S5T6ng5NMJ9S7vFpZA4mk2mJEbMbhQ5aj1HhNGBOe39TYa2gWRrJVJuXxYYYIlY/5cFhiHpNg==",
"requires": {
"abstract-logging": "^1.0.0",
"ajv": "^6.9.2",
@@ -395,9 +395,9 @@
}
},
"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==",
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-2.1.0.tgz",
"integrity": "sha512-Hdx6ctcrzkZH5y9EREHtXryXAgc5Bc8z5Cvoa61y9kaoYj2KU4yXD6h8b6u0NUkYPVmQQeRdf0AtG1kQxQ+ukQ==",
"requires": {
"fast-decode-uri-component": "^1.0.0",
"safe-regex2": "^2.0.0",
@@ -410,26 +410,11 @@
"integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw=="
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "^3.2.6"
},
"dependencies": {
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
}
"debug": "=3.1.0"
}
},
"form-data": {
@@ -475,9 +460,9 @@
"integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
},
"is-promise": {
"version": "2.1.0",
@@ -485,9 +470,9 @@
"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=="
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.0.tgz",
"integrity": "sha512-RxMV9p/UzdK0Iplnd8mVgRvNdXlsTOiuDrqMRnDi3wIhbT+JP4xDquAX9ay13R3CH72NBzQ91KWe0+C168QAyQ=="
},
"json-schema-traverse": {
"version": "0.4.1",
@@ -500,9 +485,9 @@
"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==",
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-3.4.0.tgz",
"integrity": "sha512-zIEl4lKwATE5uPmxEZkVIIAr/JGrHEngf9MDZ7a1TodLZ93kROYkKkoqSCmQIJ01FXrzyYMnmtemBO/b1HFt0Q==",
"requires": {
"ajv": "^6.8.1",
"readable-stream": "^3.1.1"
@@ -576,8 +561,7 @@
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"next-tick": {
"version": "1.0.0",
@@ -605,9 +589,9 @@
"integrity": "sha512-ZOtfhPttCrqp2M1PBBH4X13XlvnfhIwD7yCLx+GoGoXRPQyxGOTdQMpIzPSPKXAJT/JQrdfFrgdJOyAzvgpQ9A=="
},
"pino": {
"version": "5.12.5",
"resolved": "https://registry.npmjs.org/pino/-/pino-5.12.5.tgz",
"integrity": "sha512-Y493vt9ci7Jez3WZ/aUArijTQZXbHgWvDB3TMZlTu731p2kan/qyJk5k46aveEmYFnTlEommc+PSncUcuiMrBg==",
"version": "5.12.6",
"resolved": "https://registry.npmjs.org/pino/-/pino-5.12.6.tgz",
"integrity": "sha512-LM5ug2b27uymIIkaBw54ncF+9DSf8S4z1uzw+Y5I94dRu3Z+lFuB13j0kg1InAeyxy+CsLGnWHKy9+zgTreFOg==",
"requires": {
"fast-redact": "^1.4.4",
"fast-safe-stringify": "^2.0.6",
@@ -618,9 +602,9 @@
}
},
"pino-std-serializers": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.4.1.tgz",
"integrity": "sha512-v/JglhO0aFcvkMV9VUxhgyuJo8K1si857Ww86Tx8H2cjC/kp0ndzzcF6Vbxr4RgKFYJdHfLVpEuD55znMZuxnw=="
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.4.2.tgz",
"integrity": "sha512-WaL504dO8eGs+vrK+j4BuQQq6GLKeCCcHaMB2ItygzVURcL1CycwNEUHTD/lHFHs/NL5qAz2UKrjYWXKSf4aMQ=="
},
"process-nextick-args": {
"version": "2.0.0",
@@ -654,9 +638,9 @@
"integrity": "sha512-FXTaCkwvpIlkdKeGDNgcq07SXWS383noQUuZjvdE1QcTt+eLuqof6/BDiEPqB59FWLie/l91+HtlJSw7iCViSA=="
},
"readable-stream": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz",
"integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==",
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
"integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -829,9 +813,9 @@
"integrity": "sha512-k/vdHz+bFALjmik0URLWBYNuO0hCABTL5dullbZBXvFDdlL8RrKaeLR6YuHfX+6ZXOLkHw+HpNLCUA7DtLMQmg=="
},
"ts-node": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.2.0.tgz",
"integrity": "sha512-m8XQwUurkbYqXrKqr3WHCW310utRNvV5OnRVeISeea7LoCWVcdfeB/Ntl8JYWFh+WRoUAdBgESrzKochQt7sMw==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
@@ -846,10 +830,15 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
},
"type": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz",
"integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw=="
},
"typescript": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.1.tgz",
"integrity": "sha512-64HkdiRv1yYZsSe4xC1WVgamNigVYjlssIoaH2HcZF0+ijsk5YK2g0G34w9wJkze8+5ow4STd22AynfO6ZYYLw=="
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
"integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g=="
},
"uri-js": {
"version": "4.2.2",

View File

@@ -7,21 +7,21 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.2.4",
"@nestjs/core": "6.2.4",
"@nestjs/microservices": "6.2.4",
"@nestjs/testing": "6.2.4",
"@nestjs/websockets": "6.2.4",
"@nestjs/common": "6.5.0",
"@nestjs/core": "6.5.0",
"@nestjs/microservices": "6.5.0",
"@nestjs/testing": "6.5.0",
"@nestjs/websockets": "6.5.0",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"fastify": "2.4.1",
"fastify": "2.6.0",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.2",
"typescript": "3.5.1"
"typescript": "3.5.3"
},
"devDependencies": {
"@types/node": "7.10.6",
"supertest": "4.0.2",
"ts-node": "8.2.0"
"ts-node": "8.3.0"
}
}

View File

@@ -1,6 +1,7 @@
import {
CanActivate,
ExecutionContext,
Inject,
Injectable,
Scope,
} from '@nestjs/common';
@@ -9,13 +10,16 @@ import { Observable } from 'rxjs';
@Injectable({ scope: Scope.REQUEST })
export class Guard implements CanActivate {
static COUNTER = 0;
constructor() {
static REQUEST_SCOPED_DATA = [];
constructor(@Inject('REQUEST_ID') private requestId: number) {
Guard.COUNTER++;
}
canActivate(
context: ExecutionContext,
): boolean | Promise<boolean> | Observable<boolean> {
Guard.REQUEST_SCOPED_DATA.push(this.requestId);
return true;
}
}

View File

@@ -1,11 +1,19 @@
import { DynamicModule, Inject, Module, Provider } from '@nestjs/common';
import { DynamicModule, Inject, Module, Provider, Scope } 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],
providers: [
HelloService,
UsersService,
{
provide: 'REQUEST_ID',
useFactory: () => 1,
scope: Scope.REQUEST,
},
],
})
export class HelloModule {
constructor(@Inject('META') private readonly meta) {}

View File

@@ -1,6 +1,7 @@
import {
CallHandler,
ExecutionContext,
Inject,
Injectable,
NestInterceptor,
Scope,
@@ -10,10 +11,14 @@ import { Observable } from 'rxjs';
@Injectable({ scope: Scope.REQUEST })
export class Interceptor implements NestInterceptor {
static COUNTER = 0;
constructor() {
static REQUEST_SCOPED_DATA = [];
constructor(@Inject('REQUEST_ID') private requestId: number) {
Interceptor.COUNTER++;
}
intercept(context: ExecutionContext, call: CallHandler): Observable<any> {
Interceptor.REQUEST_SCOPED_DATA.push(this.requestId);
return call.handle();
}
}

View File

@@ -1,14 +1,25 @@
import { ArgumentMetadata, Injectable, PipeTransform } from '@nestjs/common';
import {
ArgumentMetadata,
Inject,
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) {
static REQUEST_SCOPED_DATA = [];
constructor(
@Inject('REQUEST_ID') private requestId: number,
private readonly usersService: UsersService,
) {
UserByIdPipe.COUNTER++;
}
transform(value: string, metadata: ArgumentMetadata) {
UserByIdPipe.REQUEST_SCOPED_DATA.push(this.requestId);
return this.usersService.findById(value);
}
}

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,25 @@
import {
CanActivate,
ExecutionContext,
Inject,
Injectable,
Scope,
} from '@nestjs/common';
import { Observable } from 'rxjs';
@Injectable({ scope: Scope.REQUEST })
export class Guard implements CanActivate {
static COUNTER = 0;
static REQUEST_SCOPED_DATA = [];
constructor(@Inject('REQUEST_ID') private requestId: number) {
Guard.COUNTER++;
}
canActivate(
context: ExecutionContext,
): boolean | Promise<boolean> | Observable<boolean> {
Guard.REQUEST_SCOPED_DATA.push(this.requestId);
return true;
}
}

View File

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

View File

@@ -0,0 +1,28 @@
import { DynamicModule, Inject, Module, Provider, Scope } from '@nestjs/common';
import { HelloController } from './hello.controller';
import { HelloService } from './hello.service';
import { HttpController } from './http.controller';
import { UsersService } from './users/users.service';
@Module({
controllers: [HelloController, HttpController],
providers: [
HelloService,
UsersService,
{
provide: 'REQUEST_ID',
useFactory: () => 1,
scope: Scope.REQUEST,
},
],
})
export class HelloModule {
constructor(@Inject('META') private readonly meta) {}
static forRoot(meta: Provider): DynamicModule {
return {
module: HelloModule,
providers: [meta],
};
}
}

View File

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

View File

@@ -0,0 +1,13 @@
import { Controller, Get } from '@nestjs/common';
import { ClientProxyFactory, Transport } from '@nestjs/microservices';
@Controller()
export class HttpController {
@Get('hello')
testMsvc() {
const client = ClientProxyFactory.create({
transport: Transport.TCP,
});
return client.send('test', { test: true });
}
}

View File

@@ -0,0 +1,24 @@
import {
CallHandler,
ExecutionContext,
Inject,
Injectable,
NestInterceptor,
Scope,
} from '@nestjs/common';
import { Observable } from 'rxjs';
@Injectable({ scope: Scope.REQUEST })
export class Interceptor implements NestInterceptor {
static COUNTER = 0;
static REQUEST_SCOPED_DATA = [];
constructor(@Inject('REQUEST_ID') private requestId: number) {
Interceptor.COUNTER++;
}
intercept(context: ExecutionContext, call: CallHandler): Observable<any> {
Interceptor.REQUEST_SCOPED_DATA.push(this.requestId);
return call.handle();
}
}

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

@@ -5,17 +5,17 @@
"requires": true,
"dependencies": {
"@apollographql/apollo-tools": {
"version": "0.3.6-alpha.1",
"resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.3.6-alpha.1.tgz",
"integrity": "sha512-fq74In3Vw9OmtKHze0L5/Ns/pdTZOqUeFVC6Um9NRgziVehXz/qswsh2r3+dsn82uqoa/AlvckHtd6aPPPYj9g==",
"version": "0.3.7",
"resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.3.7.tgz",
"integrity": "sha512-+ertvzAwzkYmuUtT8zH3Zi6jPdyxZwOgnYaZHY7iLnMVJDhQKWlkyjLMF8wyzlPiEdDImVUMm5lOIBZo7LkGlg==",
"requires": {
"apollo-env": "0.4.1-alpha.1"
"apollo-env": "0.5.1"
}
},
"@apollographql/graphql-playground-html": {
"version": "1.6.6",
"resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.6.tgz",
"integrity": "sha512-lqK94b+caNtmKFs5oUVXlSpN3sm5IXZ+KfhMxOtr0LR2SqErzkoJilitjDvJ1WbjHlxLI7WtCjRmOLdOGJqtMQ=="
"version": "1.6.20",
"resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.20.tgz",
"integrity": "sha512-3LWZa80HcP70Pl+H4KhLDJ7S0px+9/c8GTXdl6SpunRecUaB27g/oOQnAjNHLHdbWuGE0uyqcuGiTfbKB3ilaQ=="
},
"@babel/code-frame": {
"version": "7.0.0",
@@ -56,36 +56,36 @@
}
},
"@nestjs/common": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.2.4.tgz",
"integrity": "sha512-YZvJ6/S7yVQZK+9rupCzMCg4tpbc9DyVvLoTx0NBDqExTCUNcNEcCtn0AZrO/hLqbeYODnJwGE2NxkH1R/qw+w==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.5.0.tgz",
"integrity": "sha512-i2m2e/AXFGq0l7IPtwv2SrDHbxRPe4ZsuG54B/V68escu1LMpMZcTCjfANTamRvnNR258QQcSVNBMTUX1nTV8w==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.2.4.tgz",
"integrity": "sha512-aYKi3QGKmpxF6w32STAcobIqOHFqSUXrU8nF+Y9dOlStRkXFBTuVchsoJk94sY+3y4SJAlHH4Q/8R4yFaixrug==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.5.0.tgz",
"integrity": "sha512-VtHeqX7chP1HHPJ1eogKbtSSYIm4LXE4balQEiId2moFm9fdn2ekctBthhhfVwtQqs8vEMvgRixMxZrCJTSuoQ==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"@nuxtjs/opencollective": "0.2.2",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"iterare": "1.2.0",
"object-hash": "1.3.1",
"optional": "0.1.4",
"uuid": "3.3.2"
}
},
"@nestjs/graphql": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/@nestjs/graphql/-/graphql-6.2.1.tgz",
"integrity": "sha512-poRH5KSVUg0mWlN5u0uYSNJ3RnSIKfb4gJnHcImxFqs3jdk0gPyYuZH7Dal1wIbgueZtGsVr2lVEBnsTMGsiOg==",
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/graphql/-/graphql-6.2.4.tgz",
"integrity": "sha512-4SprgwQbU4v2W2whRrcPnIf9iww1oJ72goX6QvbILWdJt73wplK23Wy8x2b/YYzcJXfAJ8XIA9UmA5CnTM9yEA==",
"requires": {
"@types/graphql": "14.2.0",
"chokidar": "3.0.0",
"fast-glob": "2.2.6",
"chokidar": "3.0.1",
"fast-glob": "2.2.7",
"graphql-tools": "4.0.4",
"lodash": "4.17.11",
"merge-graphql-schemas": "1.5.8",
@@ -93,6 +93,20 @@
"ts-morph": "1.3.3",
"type-graphql": "^0.17.3",
"uuid": "3.3.2"
},
"dependencies": {
"graphql-tools": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.4.tgz",
"integrity": "sha512-chF12etTIGVVGy3fCTJ1ivJX2KB7OSG4c6UOJQuqOHCmBQwTyNgCDuejZKvpYxNZiEx7bwIjrodDgDe9RIkjlw==",
"requires": {
"apollo-link": "^1.2.3",
"apollo-utilities": "^1.0.1",
"deprecated-decorator": "^0.1.6",
"iterall": "^1.1.3",
"uuid": "^3.1.0"
}
}
}
},
"@nodelib/fs.stat": {
@@ -101,9 +115,9 @@
"integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw=="
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.2.tgz",
"integrity": "sha512-69gFVDs7mJfNjv9Zs5DFVD+pvBW+k1TaHSOqUWqAyTTfLcKI/EMYQgvEvziRd+zAFtUOoye6MfWh0qvinGISPw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
@@ -203,9 +217,9 @@
"integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA=="
},
"@types/express": {
"version": "4.16.1",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.1.tgz",
"integrity": "sha512-V0clmJow23WeyblmACoxbHBu2JKlE5TiIme6Lem14FnPW9gsttyHtk6wq7njcdIWH1njAaFgR8gW09lgY98gQg==",
"version": "4.17.0",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.0.tgz",
"integrity": "sha512-CjaMu57cjgjuZbh9DpkloeGxV45CnMGlVd+XpG7Gm9QgVrd7KFq+X4HY0vM+2v0bczS48Wg7bvnMY5TN+Xmcfw==",
"requires": {
"@types/body-parser": "*",
"@types/express-serve-static-core": "*",
@@ -213,9 +227,9 @@
}
},
"@types/express-serve-static-core": {
"version": "4.16.4",
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.4.tgz",
"integrity": "sha512-x/8h6FHm14rPWnW2HP5likD/rsqJ3t/77OWx2PLxym0hXbeBWQmcPyHmwX+CtCQpjIfgrUdEoDFcLPwPZWiqzQ==",
"version": "4.16.7",
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.7.tgz",
"integrity": "sha512-847KvL8Q1y3TtFLRTXcVakErLJQgdpFSaq+k043xefz9raEf0C7HalpSY7OW5PyjCnY8P7bPW5t/Co9qqp+USg==",
"requires": {
"@types/node": "*",
"@types/range-parser": "*"
@@ -284,6 +298,14 @@
"@types/node": "*"
}
},
"@wry/equality": {
"version": "0.1.9",
"resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.9.tgz",
"integrity": "sha512-mB6ceGjpMGz1ZTza8HYnrPGos2mC6So4NhS1PtZ8s4Qt0K7fBiIGhpSxUbQmhwcSWE3no+bYxmI2OL6KuXYmoQ==",
"requires": {
"tslib": "^1.9.3"
}
},
"accepts": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
@@ -308,63 +330,126 @@
}
},
"apollo-cache-control": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.6.0.tgz",
"integrity": "sha512-66aCF6MHe0/FdD3knphwTv6CCIdb1ZxrMsiRpxP474qqyYVe2jAwBu6aJBn4emffZHZ7i6gp9dY6cPHThjnbKA==",
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.7.4.tgz",
"integrity": "sha512-TVACHwcEF4wfHo5H9FLnoNjo0SLDo2jPW+bXs9aw0Y4Z2UisskSAPnIYOqUPnU8SoeNvs7zWgbLizq11SRTJtg==",
"requires": {
"apollo-server-env": "2.3.0",
"graphql-extensions": "0.6.0"
"apollo-server-env": "2.4.0",
"graphql-extensions": "0.7.4"
},
"dependencies": {
"graphql-extensions": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.7.4.tgz",
"integrity": "sha512-Ly+DiTDU+UtlfPGQkqmBX2SWMr9OT3JxMRwpB9K86rDNDBTJtG6AE2kliQKKE+hg1+945KAimO7Ep+YAvS7ywg==",
"requires": {
"@apollographql/apollo-tools": "^0.3.6"
}
}
}
},
"apollo-datasource": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.4.0.tgz",
"integrity": "sha512-6QkgnLYwQrW0qv+yXIf617DojJbGmza2XJXUlgnzrGGhxzfAynzEjaLyYkc8rYS1m82vjrl9EOmLHTcnVkvZAQ==",
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.5.0.tgz",
"integrity": "sha512-SVXxJyKlWguuDjxkY/WGlC/ykdsTmPxSF0z8FenagcQ91aPURXzXP1ZDz5PbamY+0iiCRubazkxtTQw4GWTFPg==",
"requires": {
"apollo-server-caching": "0.4.0",
"apollo-server-env": "2.3.0"
"apollo-server-env": "2.4.0"
}
},
"apollo-engine-reporting": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/apollo-engine-reporting/-/apollo-engine-reporting-1.1.0.tgz",
"integrity": "sha512-Dj0BwgcluHL0QVUaquhAoYoLX9Z4DRP/n2REcIwO8d2iy52r+1wN5QqZLx97dEFh7CjhNjTWeysJzc8XMWKa1Q==",
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/apollo-engine-reporting/-/apollo-engine-reporting-1.3.5.tgz",
"integrity": "sha512-pSwjPgXK/elFsR22LXALtT3jI4fpEpeTNTHgNwLVLohaolusMYgBc/9FnVyFWFfMFS9k+3RmfeQdHhZ6T7WKFQ==",
"requires": {
"apollo-engine-reporting-protobuf": "0.3.0",
"apollo-graphql": "^0.2.1-alpha.1",
"apollo-server-core": "2.5.0",
"apollo-server-env": "2.3.0",
"apollo-engine-reporting-protobuf": "0.3.1",
"apollo-graphql": "^0.3.3",
"apollo-server-core": "2.6.7",
"apollo-server-env": "2.4.0",
"async-retry": "^1.2.1",
"graphql-extensions": "0.6.0"
"graphql-extensions": "0.7.6"
},
"dependencies": {
"apollo-server-core": {
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.6.7.tgz",
"integrity": "sha512-HfOGLvEwPgDWTvd3ZKRPEkEnICKb7xadn1Mci4+auMTsL/NVkfpjPa8cdzubi/kS2/MvioIn7Bg74gmiSLghGQ==",
"requires": {
"@apollographql/apollo-tools": "^0.3.6",
"@apollographql/graphql-playground-html": "1.6.20",
"@types/ws": "^6.0.0",
"apollo-cache-control": "0.7.4",
"apollo-datasource": "0.5.0",
"apollo-engine-reporting": "1.3.5",
"apollo-server-caching": "0.4.0",
"apollo-server-env": "2.4.0",
"apollo-server-errors": "2.3.0",
"apollo-server-plugin-base": "0.5.6",
"apollo-tracing": "0.7.3",
"fast-json-stable-stringify": "^2.0.0",
"graphql-extensions": "0.7.6",
"graphql-subscriptions": "^1.0.0",
"graphql-tag": "^2.9.2",
"graphql-tools": "^4.0.0",
"graphql-upload": "^8.0.2",
"sha.js": "^2.4.11",
"subscriptions-transport-ws": "^0.9.11",
"ws": "^6.0.0"
}
},
"apollo-server-plugin-base": {
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.5.6.tgz",
"integrity": "sha512-wJvcPqfm/kiBwY5JZT85t2A4pcHv24xdQIpWMNt1zsnx77lIZqJmhsc22eSUSrlnYqUMXC4XMVgSUfAO4oI9wg=="
},
"ws": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
"integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
"requires": {
"async-limiter": "~1.0.0"
}
}
}
},
"apollo-engine-reporting-protobuf": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/apollo-engine-reporting-protobuf/-/apollo-engine-reporting-protobuf-0.3.0.tgz",
"integrity": "sha512-PYowpx/E+TJT/8nKpp3JmJuKh3x1SZcxDF6Cquj0soV205TUpFFCZQMi91i5ACiEp2AkYvM/GDBIrw+rfIwzTg==",
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/apollo-engine-reporting-protobuf/-/apollo-engine-reporting-protobuf-0.3.1.tgz",
"integrity": "sha512-Ui3nPG6BSZF8BEqxFs6EkX6mj2OnFLMejxEHSOdM82bakyeouCGd7J0fiy8AD6liJoIyc4X7XfH4ZGGMvMh11A==",
"requires": {
"protobufjs": "^6.8.6"
}
},
"apollo-env": {
"version": "0.4.1-alpha.1",
"resolved": "https://registry.npmjs.org/apollo-env/-/apollo-env-0.4.1-alpha.1.tgz",
"integrity": "sha512-4qWiaUKWh92jvKxxRsiZSjmW9YH9GWSG1W6X+S1BcC1uqtPiHsem7ExG9MMTt+UrzHsbpQLctj12xk8lI4lgCg==",
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/apollo-env/-/apollo-env-0.5.1.tgz",
"integrity": "sha512-fndST2xojgSdH02k5hxk1cbqA9Ti8RX4YzzBoAB4oIe1Puhq7+YlhXGXfXB5Y4XN0al8dLg+5nAkyjNAR2qZTw==",
"requires": {
"core-js": "3.0.0-beta.13",
"core-js": "^3.0.1",
"node-fetch": "^2.2.0",
"sha.js": "^2.4.11"
}
},
"apollo-graphql": {
"version": "0.2.1-alpha.1",
"resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.2.1-alpha.1.tgz",
"integrity": "sha512-kObCSpYRHEf4IozJV+TZAXEL2Yni2DpzQckohJNYXg5/KRAF20jJ7lHxuJz+kMQrc7QO4wYGSa29HuFZH2AtQA==",
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.3.3.tgz",
"integrity": "sha512-t3CO/xIDVsCG2qOvx2MEbuu4b/6LzQjcBBwiVnxclmmFyAxYCIe7rpPlnLHSq7HyOMlCWDMozjoeWfdqYSaLqQ==",
"requires": {
"apollo-env": "0.4.1-alpha.1",
"apollo-env": "0.5.1",
"lodash.sortby": "^4.7.0"
}
},
"apollo-link": {
"version": "1.2.12",
"resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.12.tgz",
"integrity": "sha512-fsgIAXPKThyMVEMWQsUN22AoQI+J/pVXcjRGAShtk97h7D8O+SPskFinCGEkxPeQpE83uKaqafB2IyWdjN+J3Q==",
"requires": {
"apollo-utilities": "^1.3.0",
"ts-invariant": "^0.4.0",
"tslib": "^1.9.3",
"zen-observable-ts": "^0.8.19"
}
},
"apollo-server-caching": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.4.0.tgz",
@@ -374,23 +459,23 @@
}
},
"apollo-server-core": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.5.0.tgz",
"integrity": "sha512-7hyQ/Rt0hC38bUfxMQmLNHDBIGEBykFWo9EO0W+3o/cno/SqBKd1KKichrABVv+v+SCvZAUutX6gYS5l3G+ULQ==",
"version": "2.6.8",
"resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.6.8.tgz",
"integrity": "sha512-Jxw+6R/2I2LiZ6kjRFTzPpdjw7HfuVLfNU+svgNlxioLducxBH/wqUs3qYTf4eVUUtWy+nSS/BUf/Ullo+Ur0Q==",
"requires": {
"@apollographql/apollo-tools": "^0.3.6-alpha.1",
"@apollographql/graphql-playground-html": "^1.6.6",
"@apollographql/apollo-tools": "^0.3.6",
"@apollographql/graphql-playground-html": "1.6.20",
"@types/ws": "^6.0.0",
"apollo-cache-control": "0.6.0",
"apollo-datasource": "0.4.0",
"apollo-engine-reporting": "1.1.0",
"apollo-cache-control": "0.7.4",
"apollo-datasource": "0.5.0",
"apollo-engine-reporting": "1.3.5",
"apollo-server-caching": "0.4.0",
"apollo-server-env": "2.3.0",
"apollo-server-env": "2.4.0",
"apollo-server-errors": "2.3.0",
"apollo-server-plugin-base": "0.4.0",
"apollo-tracing": "0.6.0",
"apollo-server-plugin-base": "0.5.7",
"apollo-tracing": "0.7.3",
"fast-json-stable-stringify": "^2.0.0",
"graphql-extensions": "0.6.0",
"graphql-extensions": "0.7.6",
"graphql-subscriptions": "^1.0.0",
"graphql-tag": "^2.9.2",
"graphql-tools": "^4.0.0",
@@ -411,9 +496,9 @@
}
},
"apollo-server-env": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-2.3.0.tgz",
"integrity": "sha512-WIwlkCM/gir0CkoYWPMTCH8uGCCKB/aM074U1bKayvkFOBVO2VgG5x2kgsfkyF05IMQq2/GOTsKhNY7RnUEhTA==",
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-2.4.0.tgz",
"integrity": "sha512-7ispR68lv92viFeu5zsRUVGP+oxsVI3WeeBNniM22Cx619maBUwcYTIC3+Y3LpXILhLZCzA1FASZwusgSlyN9w==",
"requires": {
"node-fetch": "^2.1.2",
"util.promisify": "^1.0.0"
@@ -425,17 +510,17 @@
"integrity": "sha512-rUvzwMo2ZQgzzPh2kcJyfbRSfVKRMhfIlhY7BzUfM4x6ZT0aijlgsf714Ll3Mbf5Fxii32kD0A/DmKsTecpccw=="
},
"apollo-server-express": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.5.0.tgz",
"integrity": "sha512-2gd3VWIqji2jyDYMTTqKzVU4/znjEjugtLUmPgVl5SoBvJSMTsO7VgJv+roBubZGDK8jXXUEXr2a33RtIeHe4g==",
"version": "2.6.8",
"resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.6.8.tgz",
"integrity": "sha512-LQzVHknQDkHWffc2qK9dr/qNxQ/WecSKiye5/w10tXrOy3aruTFe67ysG/vMnFZ/puroqiZ2njHzhHZztqQ4sA==",
"requires": {
"@apollographql/graphql-playground-html": "^1.6.6",
"@apollographql/graphql-playground-html": "1.6.20",
"@types/accepts": "^1.3.5",
"@types/body-parser": "1.17.0",
"@types/cors": "^2.8.4",
"@types/express": "4.16.1",
"@types/express": "4.17.0",
"accepts": "^1.3.5",
"apollo-server-core": "2.5.0",
"apollo-server-core": "2.6.8",
"body-parser": "^1.18.3",
"cors": "^2.8.4",
"graphql-subscriptions": "^1.0.0",
@@ -444,25 +529,38 @@
}
},
"apollo-server-plugin-base": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.4.0.tgz",
"integrity": "sha512-iD7ARNtwnvHGd1EMPK0CuodM8d8hgDvFwTfIDzJY04QIQ6/KrBFaWhnCXJsy+HMb47GovwBbq67IK6eb2WJgBg=="
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.5.7.tgz",
"integrity": "sha512-HeEwEZ92c2XYRV+0CFLbstW3vUJ4idCxR9E9Q3wwvhXrq8gaGzqyDoC8EzAzRxCJUKcEn7xQOpT/AUTC/KtkRA=="
},
"apollo-tracing": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.6.0.tgz",
"integrity": "sha512-OpYPHVBgcQ/HT2WLXJQWwhilzR1rrl01tZeMU2N7yinsp/oyKngF5aUSMtuvX1k/T3abilQo+w10oAQlBCGdPA==",
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.7.3.tgz",
"integrity": "sha512-H6fSC+awQGnfDyYdGIB0UQUhcUC3n5Vy+ujacJ0bY6R+vwWeZOQvu7wRHNjk/rbOSTLCo9A0OcVX7huRyu9SZg==",
"requires": {
"apollo-server-env": "2.3.0",
"graphql-extensions": "0.6.0"
"apollo-server-env": "2.4.0",
"graphql-extensions": "0.7.4"
},
"dependencies": {
"graphql-extensions": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.7.4.tgz",
"integrity": "sha512-Ly+DiTDU+UtlfPGQkqmBX2SWMr9OT3JxMRwpB9K86rDNDBTJtG6AE2kliQKKE+hg1+945KAimO7Ep+YAvS7ywg==",
"requires": {
"@apollographql/apollo-tools": "^0.3.6"
}
}
}
},
"apollo-utilities": {
"version": "1.0.19",
"resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.0.19.tgz",
"integrity": "sha512-pyVxizjIevHFfKhtc9FLEsGHmqiK0kHx1aBdJRUXDt+X+yjoVa/fVeCEo9t0NddGximemxxrQnq6lSkbIQvDlA==",
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.2.tgz",
"integrity": "sha512-JWNHj8XChz7S4OZghV6yc9FNnzEXj285QYp/nLNh943iObycI5GTDO3NGR9Dth12LRrSFMeDOConPfPln+WGfg==",
"requires": {
"fast-json-stable-stringify": "^2.0.0"
"@wry/equality": "^0.1.2",
"fast-json-stable-stringify": "^2.0.0",
"ts-invariant": "^0.4.0",
"tslib": "^1.9.3"
}
},
"arg": {
@@ -552,12 +650,19 @@
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
},
"dependencies": {
"is-buffer": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
}
}
},
"backo2": {
@@ -649,6 +754,18 @@
"requires": {
"ms": "2.0.0"
}
},
"http-errors": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
"integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
"requires": {
"depd": "~1.1.2",
"inherits": "2.0.3",
"setprototypeof": "1.1.1",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.0"
}
}
}
},
@@ -744,9 +861,9 @@
}
},
"chokidar": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.0.0.tgz",
"integrity": "sha512-ebzWopcacB2J19Jsb5RPtMrzmjUZ5VAQnsL0Ztrix3lswozHbiDp+1Lg3AWSKHdwsps/W2vtshA/x3I827F78g==",
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.0.1.tgz",
"integrity": "sha512-2ww34sJWehnbpV0Q4k4V5Hh7juo7po6z7LUWkcIQnSGN1lHOL8GGtLtfwabKvLFQw/hbSUQ0u6V7OgGYgBzlkQ==",
"requires": {
"anymatch": "^3.0.1",
"async-each": "^1.0.3",
@@ -756,7 +873,7 @@
"is-binary-path": "^2.1.0",
"is-glob": "^4.0.1",
"normalize-path": "^3.0.0",
"readdirp": "^3.0.1"
"readdirp": "^3.0.2"
}
},
"class-transformer": {
@@ -851,9 +968,9 @@
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"consola": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.6.2.tgz",
"integrity": "sha512-GNJhwvF4bJ8eiAlyB8r4WNM8kBqkl+y4DvMehMbyywoJiv37N0M6/xrKqrrZw/5maZA+UagQV8UZ+XBeuGMzUg=="
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.9.0.tgz",
"integrity": "sha512-34Iue+LRcWbndFIfZc5boNizWlsrRjqIBJZTe591vImgbnq7nx2EzlrLtANj9TH2Fxm7puFJBJAOk5BhvZOddQ=="
},
"content-type": {
"version": "1.0.4",
@@ -866,9 +983,9 @@
"integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
},
"core-js": {
"version": "3.0.0-beta.13",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.0-beta.13.tgz",
"integrity": "sha512-16Q43c/3LT9NyePUJKL8nRIQgYWjcBhjJSMWg96PVSxoS0PeE0NHitPI3opBrs9MGGHjte1KoEVr9W63YKlTXQ=="
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.1.4.tgz",
"integrity": "sha512-YNZN8lt82XIMLnLirj9MhKDFZHalwzzrL9YLt6eb0T5D0EDl4IQ90IGkua8mHbnxNrkj1d8hbdizMc0Qmg1WnQ=="
},
"cors": {
"version": "2.8.5",
@@ -880,26 +997,20 @@
}
},
"d": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
"integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
"requires": {
"es5-ext": "^0.10.9"
"es5-ext": "^0.10.50",
"type": "^1.0.1"
}
},
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "^2.1.1"
},
"dependencies": {
"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=="
}
"ms": "2.0.0"
}
},
"decode-uri-component": {
@@ -1048,13 +1159,13 @@
}
},
"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=",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
"integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
"requires": {
"d": "1",
"es5-ext": "^0.10.14",
"es6-iterator": "^2.0.1",
"es5-ext": "^0.10.46",
"es6-iterator": "^2.0.3",
"es6-symbol": "^3.1.1"
}
},
@@ -1208,9 +1319,9 @@
}
},
"fast-glob": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz",
"integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==",
"version": "2.2.7",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
"integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
"requires": {
"@mrmlnc/readdir-enhanced": "^2.2.1",
"@nodelib/fs.stat": "^1.1.2",
@@ -1260,11 +1371,11 @@
}
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "^3.2.6"
"debug": "=3.1.0"
}
},
"for-in": {
@@ -1301,9 +1412,9 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"fsevents": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.6.tgz",
"integrity": "sha512-vfmKZp3XPM36DNF0qhW+Cdxk7xm7gTEHY1clv1Xq1arwRQuKZgAhw+NZNWbJBtuaNxzNXwhfdPYRrvIbjfS33A==",
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.7.tgz",
"integrity": "sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ==",
"optional": true
},
"function-bind": {
@@ -1367,19 +1478,19 @@
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
},
"graphql": {
"version": "14.3.1",
"resolved": "https://registry.npmjs.org/graphql/-/graphql-14.3.1.tgz",
"integrity": "sha512-FZm7kAa3FqKdXy8YSSpAoTtyDFMIYSpCDOr+3EqlI1bxmtHu+Vv/I2vrSeT1sBOEnEniX3uo4wFhFdS/8XN6gA==",
"version": "14.4.2",
"resolved": "https://registry.npmjs.org/graphql/-/graphql-14.4.2.tgz",
"integrity": "sha512-6uQadiRgnpnSS56hdZUSvFrVcQ6OF9y6wkxJfKquFtHlnl7+KSuWwSJsdwiK1vybm1HgcdbpGkCpvhvsVQ0UZQ==",
"requires": {
"iterall": "^1.2.2"
}
},
"graphql-extensions": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.6.0.tgz",
"integrity": "sha512-SshzmbD68fHXRv2q3St29olMOxHDLQ5e9TOh+Tz2BYxinrfhjFaPNcEefiK/vF295wW827Y58bdO11Xmhf8J+Q==",
"version": "0.7.6",
"resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.7.6.tgz",
"integrity": "sha512-RV00O3YFD1diehvdja180BlKOGWgeigr/8/Wzr6lXwLcFtk6FecQC/7nf6oW1qhuXczHyNjt/uCr0WWbWq6mYg==",
"requires": {
"@apollographql/apollo-tools": "^0.3.6-alpha.1"
"@apollographql/apollo-tools": "^0.3.6"
}
},
"graphql-query-complexity": {
@@ -1404,68 +1515,24 @@
"integrity": "sha512-jApXqWBzNXQ8jYa/HLkZJaVw9jgwNqZkywa2zfFn16Iv1Zb7ELNHkJaXHR7Quvd5SIGsy6Ny7SUKATgnu05uEg=="
},
"graphql-tools": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.4.tgz",
"integrity": "sha512-chF12etTIGVVGy3fCTJ1ivJX2KB7OSG4c6UOJQuqOHCmBQwTyNgCDuejZKvpYxNZiEx7bwIjrodDgDe9RIkjlw==",
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.5.tgz",
"integrity": "sha512-kQCh3IZsMqquDx7zfIGWBau42xe46gmqabwYkpPlCLIjcEY1XK+auP7iGRD9/205BPyoQdY8hT96MPpgERdC9Q==",
"requires": {
"apollo-link": "^1.2.3",
"apollo-utilities": "^1.0.1",
"deprecated-decorator": "^0.1.6",
"iterall": "^1.1.3",
"uuid": "^3.1.0"
},
"dependencies": {
"apollo-link": {
"version": "1.2.11",
"resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.11.tgz",
"integrity": "sha512-PQvRCg13VduLy3X/0L79M6uOpTh5iHdxnxYuo8yL7sJlWybKRJwsv4IcRBJpMFbChOOaHY7Og9wgPo6DLKDKDA==",
"requires": {
"apollo-utilities": "^1.2.1",
"ts-invariant": "^0.3.2",
"tslib": "^1.9.3",
"zen-observable-ts": "^0.8.18"
},
"dependencies": {
"apollo-utilities": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.2.1.tgz",
"integrity": "sha512-Zv8Udp9XTSFiN8oyXOjf6PMHepD4yxxReLsl6dPUy5Ths7jti3nmlBzZUOxuTWRwZn0MoclqL7RQ5UEJN8MAxg==",
"requires": {
"fast-json-stable-stringify": "^2.0.0",
"ts-invariant": "^0.2.1",
"tslib": "^1.9.3"
},
"dependencies": {
"ts-invariant": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.2.1.tgz",
"integrity": "sha512-Z/JSxzVmhTo50I+LKagEISFJW3pvPCqsMWLamCTX8Kr3N5aMrnGOqcflbe5hLUzwjvgPfnLzQtHZv0yWQ+FIHg==",
"requires": {
"tslib": "^1.9.3"
}
}
}
}
}
},
"zen-observable-ts": {
"version": "0.8.18",
"resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.18.tgz",
"integrity": "sha512-q7d05s75Rn1j39U5Oapg3HI2wzriVwERVo4N7uFGpIYuHB9ff02P/E92P9B8T7QVC93jCMHpbXH7X0eVR5LA7A==",
"requires": {
"tslib": "^1.9.3",
"zen-observable": "^0.8.0"
}
}
}
},
"graphql-upload": {
"version": "8.0.6",
"resolved": "https://registry.npmjs.org/graphql-upload/-/graphql-upload-8.0.6.tgz",
"integrity": "sha512-cBRALMOvGBm2AD6M61b1QbSmKfCLXvgV+Z3wXT2JS1EQwGWQ1g5/sby4J/cpwAaGnq5P2eGp+N3HQI9cSn9Jfg==",
"version": "8.0.7",
"resolved": "https://registry.npmjs.org/graphql-upload/-/graphql-upload-8.0.7.tgz",
"integrity": "sha512-gi2yygbDPXbHPC7H0PNPqP++VKSoNoJO4UrXWq4T0Bi4IhyUd3Ycop/FSxhx2svWIK3jdXR/i0vi91yR1aAF0g==",
"requires": {
"busboy": "^0.3.1",
"fs-capacitor": "^2.0.1",
"fs-capacitor": "^2.0.4",
"http-errors": "^1.7.2",
"object-path": "^0.11.4"
}
@@ -1536,15 +1603,22 @@
}
},
"http-errors": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
"integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
"integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
"requires": {
"depd": "~1.1.2",
"inherits": "2.0.3",
"inherits": "2.0.4",
"setprototypeof": "1.1.1",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.0"
},
"dependencies": {
"inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
}
}
},
"iconv-lite": {
@@ -1753,9 +1827,9 @@
"integrity": "sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA=="
},
"iterare": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.1.2.tgz",
"integrity": "sha512-25rVYmj/dDvTR6zOa9jY1Ihd6USLa0J508Ub2iy7Aga+xu9JMbjDds2Uh03ReDGbva/YN3s3Ybi+Do0nOX6wAg=="
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.0.tgz",
"integrity": "sha512-RxMV9p/UzdK0Iplnd8mVgRvNdXlsTOiuDrqMRnDi3wIhbT+JP4xDquAX9ay13R3CH72NBzQ91KWe0+C168QAyQ=="
},
"js-tokens": {
"version": "4.0.0",
@@ -2221,9 +2295,9 @@
}
},
"picomatch": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.6.tgz",
"integrity": "sha512-Btng9qVvFsW6FkXYQQK5nEI5i8xdXFDmlKxC7Q8S2Bu5HGWnbQf7ts2kOoxJIrZn5hmw61RZIayAg2zBuJDtyQ=="
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz",
"integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA=="
},
"pify": {
"version": "3.0.0",
@@ -2256,9 +2330,9 @@
},
"dependencies": {
"@types/node": {
"version": "10.14.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.6.tgz",
"integrity": "sha512-Fvm24+u85lGmV4hT5G++aht2C5I4Z4dYlWZIh62FAfFO/TfzXtPpoLI6I7AuBWkIFqZCnhFOoTT7RjjaIL5Fjg=="
"version": "10.14.12",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.12.tgz",
"integrity": "sha512-QcAKpaO6nhHLlxWBvpc4WeLrTvPqlHOvaj0s5GriKkA1zq+bsFBPpfYCvQhLqLgYlIko8A9YrPdaMHCo5mBcpg=="
}
}
},
@@ -2276,12 +2350,26 @@
"http-errors": "1.7.2",
"iconv-lite": "0.4.24",
"unpipe": "1.0.0"
},
"dependencies": {
"http-errors": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
"integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
"requires": {
"depd": "~1.1.2",
"inherits": "2.0.3",
"setprototypeof": "1.1.1",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.0"
}
}
}
},
"readdirp": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.0.1.tgz",
"integrity": "sha512-emMp13NEwWQQX1yeDgrzDNCSY7NHV6k9HTW0OhyQqOAzYacbqQhnmWiCYjxNPcqMTQ9k77oXQJp28jkytm3+jg==",
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.0.2.tgz",
"integrity": "sha512-LbyJYv48eywrhOlScq16H/VkCiGKGPC2TpOdZCJ7QXnYEjn3NN/Oblh8QEU3vqfSRBB7OGvh5x45NKiVeNujIQ==",
"requires": {
"picomatch": "^2.0.4"
}
@@ -2311,9 +2399,9 @@
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
},
"resolve": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
"integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
"integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==",
"dev": true,
"requires": {
"path-parse": "^1.0.6"
@@ -2343,9 +2431,9 @@
}
},
"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=="
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
"integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="
},
"safe-regex": {
"version": "1.1.0",
@@ -2361,9 +2449,9 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"semver": {
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
"integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
"integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
"dev": true
},
"set-value": {
@@ -2671,9 +2759,9 @@
"integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
},
"ts-invariant": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.3.2.tgz",
"integrity": "sha512-QsY8BCaRnHiB5T6iE4DPlJMAKEG3gzMiUco9FEt1jUXQf0XP6zi0idT0i0rMTu8A326JqNSDsmlkA9dRSh1TRg==",
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz",
"integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==",
"requires": {
"tslib": "^1.9.3"
}
@@ -2719,9 +2807,9 @@
}
},
"ts-node": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.2.0.tgz",
"integrity": "sha512-m8XQwUurkbYqXrKqr3WHCW310utRNvV5OnRVeISeea7LoCWVcdfeB/Ntl8JYWFh+WRoUAdBgESrzKochQt7sMw==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
@@ -2745,9 +2833,9 @@
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
},
"tslint": {
"version": "5.16.0",
"resolved": "https://registry.npmjs.org/tslint/-/tslint-5.16.0.tgz",
"integrity": "sha512-UxG2yNxJ5pgGwmMzPMYh/CCnCnh0HfPgtlVRDs1ykZklufFBL1ZoTlWFRz2NQjcoEiDoRp+JyT0lhBbbH/obyA==",
"version": "5.18.0",
"resolved": "https://registry.npmjs.org/tslint/-/tslint-5.18.0.tgz",
"integrity": "sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
@@ -2756,7 +2844,7 @@
"commander": "^2.12.1",
"diff": "^3.2.0",
"glob": "^7.1.1",
"js-yaml": "^3.13.0",
"js-yaml": "^3.13.1",
"minimatch": "^3.0.4",
"mkdirp": "^0.5.1",
"resolve": "^1.3.2",
@@ -2774,6 +2862,11 @@
"tslib": "^1.8.1"
}
},
"type": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz",
"integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw=="
},
"type-graphql": {
"version": "0.17.4",
"resolved": "https://registry.npmjs.org/type-graphql/-/type-graphql-0.17.4.tgz",
@@ -2820,9 +2913,9 @@
}
},
"typescript": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.1.tgz",
"integrity": "sha512-64HkdiRv1yYZsSe4xC1WVgamNigVYjlssIoaH2HcZF0+ijsk5YK2g0G34w9wJkze8+5ow4STd22AynfO6ZYYLw=="
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
"integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g=="
},
"unc-path-regex": {
"version": "0.1.2",
@@ -2947,9 +3040,9 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"ws": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.0.0.tgz",
"integrity": "sha512-cknCal4k0EAOrh1SHHPPWWh4qm93g1IuGGGwBjWkXmCG7LsDtL8w9w+YVfaF+KSVwiHQKDIMsSLBVftKf9d1pg==",
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.1.0.tgz",
"integrity": "sha512-Swie2C4fs7CkwlHu1glMePLYJJsWjzhl1vm3ZaLplD0h7OMkZyZ6kLTB/OagiU923bZrPFXuDTeEqaEN4NWG4g==",
"requires": {
"async-limiter": "^1.0.0"
}
@@ -2966,9 +3059,18 @@
"dev": true
},
"zen-observable": {
"version": "0.8.9",
"resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.9.tgz",
"integrity": "sha512-Y9kPzjGvIZ5jchSlqlCpBW3I82zBBL4z+ulXDRVA1NwsKzjt5kwAi+gOYIy0htNkfuehGZZtP5mRXHRV6TjDWw=="
"version": "0.8.14",
"resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.14.tgz",
"integrity": "sha512-kQz39uonEjEESwh+qCi83kcC3rZJGh4mrZW7xjkSQYXkq//JZHTtKo+6yuVloTgMtzsIWOJrjIrKvk/dqm0L5g=="
},
"zen-observable-ts": {
"version": "0.8.19",
"resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.19.tgz",
"integrity": "sha512-u1a2rpE13G+jSzrg3aiCqXU5tN2kw41b+cBZGmnc+30YimdkKiDj9bTowcB41eL77/17RF/h+393AuVgShyheQ==",
"requires": {
"tslib": "^1.9.3",
"zen-observable": "^0.8.0"
}
}
}
}

View File

@@ -9,24 +9,24 @@
"start:prod": "node dist/main.js"
},
"dependencies": {
"@nestjs/common": "6.2.4",
"@nestjs/core": "6.2.4",
"@nestjs/graphql": "6.2.1",
"apollo-server-express": "2.5.0",
"@nestjs/common": "6.5.0",
"@nestjs/core": "6.5.0",
"@nestjs/graphql": "6.2.4",
"apollo-server-express": "2.6.8",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"graphql": "14.3.1",
"graphql-tools": "4.0.4",
"graphql": "14.4.2",
"graphql-tools": "4.0.5",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.2",
"subscriptions-transport-ws": "0.9.16",
"type-graphql": "0.17.4",
"typescript": "3.5.1",
"ws": "7.0.0"
"typescript": "3.5.3",
"ws": "7.1.0"
},
"devDependencies": {
"@types/node": "7.10.6",
"ts-node": "8.2.0",
"tslint": "5.16.0"
"ts-node": "8.3.0",
"tslint": "5.18.0"
}
}

View File

@@ -25,40 +25,40 @@
}
},
"@nestjs/common": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.2.4.tgz",
"integrity": "sha512-YZvJ6/S7yVQZK+9rupCzMCg4tpbc9DyVvLoTx0NBDqExTCUNcNEcCtn0AZrO/hLqbeYODnJwGE2NxkH1R/qw+w==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.5.0.tgz",
"integrity": "sha512-i2m2e/AXFGq0l7IPtwv2SrDHbxRPe4ZsuG54B/V68escu1LMpMZcTCjfANTamRvnNR258QQcSVNBMTUX1nTV8w==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.2.4.tgz",
"integrity": "sha512-aYKi3QGKmpxF6w32STAcobIqOHFqSUXrU8nF+Y9dOlStRkXFBTuVchsoJk94sY+3y4SJAlHH4Q/8R4yFaixrug==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.5.0.tgz",
"integrity": "sha512-VtHeqX7chP1HHPJ1eogKbtSSYIm4LXE4balQEiId2moFm9fdn2ekctBthhhfVwtQqs8vEMvgRixMxZrCJTSuoQ==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"@nuxtjs/opencollective": "0.2.2",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"iterare": "1.2.0",
"object-hash": "1.3.1",
"optional": "0.1.4",
"uuid": "3.3.2"
}
},
"@nestjs/typeorm": {
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-6.1.1.tgz",
"integrity": "sha512-KCtRYiftUfvU4QE0mlhNUHEVfo9LmFHZ7QPcSxgmV00Tf62lGX0P2vJ0Ee6zHrgPuT4TzUn+SkX70ZdeQxio3Q==",
"version": "6.1.2",
"resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-6.1.2.tgz",
"integrity": "sha512-uNLvNTW72h4mypvscBgYgE2q8LHgvrhNzV6YqJgvf0VaGv5fi72hl0Zlfwmvh7h50ysW221mJCraX56yn+Uzxw==",
"requires": {
"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==",
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.2.tgz",
"integrity": "sha512-69gFVDs7mJfNjv9Zs5DFVD+pvBW+k1TaHSOqUWqAyTTfLcKI/EMYQgvEvziRd+zAFtUOoye6MfWh0qvinGISPw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
@@ -84,9 +84,9 @@
"dev": true
},
"ansi-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
},
"ansi-styles": {
"version": "3.2.1",
@@ -121,12 +121,12 @@
}
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
}
},
"balanced-match": {
@@ -175,9 +175,9 @@
"dev": true
},
"camelcase": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
"integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0="
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
},
"chalk": {
"version": "2.3.2",
@@ -210,53 +210,27 @@
}
},
"cli-highlight": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.0.tgz",
"integrity": "sha512-DxaFAFBGRaB+xueXP7jlJC5f867gZUZXz74RaxeZ9juEZM2Sm/s6ilzpz0uxKiT+Mj6TzHlibtXfG/dK5bSwDA==",
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.1.tgz",
"integrity": "sha512-0y0VlNmdD99GXZHYnvrQcmHxP8Bi6T00qucGgBgGv4kJ0RyDthNnnFPupHV7PYv/OXSVk+azFbOeaW6+vGmx9A==",
"requires": {
"chalk": "^2.3.0",
"highlight.js": "^9.6.0",
"mz": "^2.4.0",
"parse5": "^4.0.0",
"yargs": "^11.0.0"
},
"dependencies": {
"yargs": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz",
"integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==",
"requires": {
"cliui": "^4.0.0",
"decamelize": "^1.1.1",
"find-up": "^2.1.0",
"get-caller-file": "^1.0.1",
"os-locale": "^2.0.0",
"require-directory": "^2.1.1",
"require-main-filename": "^1.0.1",
"set-blocking": "^2.0.0",
"string-width": "^2.0.0",
"which-module": "^2.0.0",
"y18n": "^3.2.1",
"yargs-parser": "^9.0.2"
}
}
"yargs": "^13.0.0"
}
},
"cliui": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
"integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
"integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
"requires": {
"string-width": "^2.1.1",
"strip-ansi": "^4.0.0",
"wrap-ansi": "^2.0.0"
"string-width": "^3.1.0",
"strip-ansi": "^5.2.0",
"wrap-ansi": "^5.1.0"
}
},
"code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
},
"color-convert": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
@@ -282,9 +256,9 @@
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"consola": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.6.2.tgz",
"integrity": "sha512-GNJhwvF4bJ8eiAlyB8r4WNM8kBqkl+y4DvMehMbyywoJiv37N0M6/xrKqrrZw/5maZA+UagQV8UZ+XBeuGMzUg=="
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.9.0.tgz",
"integrity": "sha512-34Iue+LRcWbndFIfZc5boNizWlsrRjqIBJZTe591vImgbnq7nx2EzlrLtANj9TH2Fxm7puFJBJAOk5BhvZOddQ=="
},
"core-util-is": {
"version": "1.0.2",
@@ -292,21 +266,24 @@
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"cross-spawn": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
"integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
"requires": {
"lru-cache": "^4.0.1",
"nice-try": "^1.0.4",
"path-key": "^2.0.1",
"semver": "^5.5.0",
"shebang-command": "^1.2.0",
"which": "^1.2.9"
}
},
"d": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
"integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
"requires": {
"es5-ext": "^0.10.9"
"es5-ext": "^0.10.50",
"type": "^1.0.1"
}
},
"debug": {
@@ -376,13 +353,13 @@
}
},
"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=",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
"integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
"requires": {
"d": "1",
"es5-ext": "^0.10.14",
"es6-iterator": "^2.0.1",
"es5-ext": "^0.10.46",
"es6-iterator": "^2.0.3",
"es6-symbol": "^3.1.1"
}
},
@@ -412,12 +389,12 @@
}
},
"execa": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
"integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
"integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
"requires": {
"cross-spawn": "^5.0.1",
"get-stream": "^3.0.0",
"cross-spawn": "^6.0.0",
"get-stream": "^4.0.0",
"is-stream": "^1.1.0",
"npm-run-path": "^2.0.0",
"p-finally": "^1.0.0",
@@ -431,33 +408,38 @@
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"figlet": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/figlet/-/figlet-1.2.1.tgz",
"integrity": "sha512-qc8gycfnnfOmfvPl7Fi3JeTbcvdmbZkckyUVGGAM02je7Ookvu+bBfKy1I4FKqTsQHCs3ARJ76ip/k98r+OQuQ=="
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/figlet/-/figlet-1.2.3.tgz",
"integrity": "sha512-+F5zdvZ66j77b8x2KCPvWUHC0UCKUMWrewxmewgPlagp3wmDpcrHMbyv/ygq/6xoxBPGQA+UJU3SMoBzKoROQQ=="
},
"find-up": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
"integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
"integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"requires": {
"locate-path": "^2.0.0"
"locate-path": "^3.0.0"
}
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "^3.2.6"
"debug": "=3.1.0"
},
"dependencies": {
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "^2.1.1"
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
@@ -467,14 +449,17 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"get-caller-file": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
"integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
},
"get-stream": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
"integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
"requires": {
"pump": "^3.0.0"
}
},
"glob": {
"version": "7.1.2",
@@ -510,9 +495,9 @@
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
},
"highlight.js": {
"version": "9.15.6",
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.6.tgz",
"integrity": "sha512-zozTAWM1D6sozHo8kqhfYgsac+B+q0PmsjXeyDrYIHHcBN0zTVT66+s2GW1GZv7DbyaROdLXKdabwS/WqPyIdQ=="
"version": "9.15.8",
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.8.tgz",
"integrity": "sha512-RrapkKQWwE+wKdF73VsOa2RQdIoO3mxwJ4P8mhbI6KYJUraUHRKM5w5zQQKXNk0xNL4UVRdulV9SBJcmzJNzVA=="
},
"ieee754": {
"version": "1.1.13",
@@ -534,14 +519,14 @@
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"invert-kv": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
"integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
"integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA=="
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
},
"is-fullwidth-code-point": {
"version": "2.0.0",
@@ -569,9 +554,9 @@
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
},
"iterare": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.1.2.tgz",
"integrity": "sha512-25rVYmj/dDvTR6zOa9jY1Ihd6USLa0J508Ub2iy7Aga+xu9JMbjDds2Uh03ReDGbva/YN3s3Ybi+Do0nOX6wAg=="
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.0.tgz",
"integrity": "sha512-RxMV9p/UzdK0Iplnd8mVgRvNdXlsTOiuDrqMRnDi3wIhbT+JP4xDquAX9ay13R3CH72NBzQ91KWe0+C168QAyQ=="
},
"js-tokens": {
"version": "4.0.0",
@@ -589,31 +574,22 @@
}
},
"lcid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
"integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
"integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
"requires": {
"invert-kv": "^1.0.0"
"invert-kv": "^2.0.0"
}
},
"locate-path": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
"integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
"integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"requires": {
"p-locate": "^2.0.0",
"p-locate": "^3.0.0",
"path-exists": "^3.0.0"
}
},
"lru-cache": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
"integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
"requires": {
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
}
},
"lru-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
@@ -637,11 +613,13 @@
}
},
"mem": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
"integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
"integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
"requires": {
"mimic-fn": "^1.0.0"
"map-age-cleaner": "^0.1.1",
"mimic-fn": "^2.0.0",
"p-is-promise": "^2.0.0"
}
},
"memoizee": {
@@ -660,9 +638,9 @@
}
},
"mimic-fn": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
},
"minimatch": {
"version": "3.0.4",
@@ -734,11 +712,6 @@
"path-key": "^2.0.0"
}
},
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -763,13 +736,13 @@
"integrity": "sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw=="
},
"os-locale": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
"integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
"integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
"requires": {
"execa": "^0.7.0",
"lcid": "^1.0.0",
"mem": "^1.1.0"
"execa": "^1.0.0",
"lcid": "^2.0.0",
"mem": "^4.0.0"
}
},
"p-defer": {
@@ -788,25 +761,25 @@
"integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg=="
},
"p-limit": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
"integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
"integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
"requires": {
"p-try": "^1.0.0"
"p-try": "^2.0.0"
}
},
"p-locate": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
"integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
"integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"requires": {
"p-limit": "^1.1.0"
"p-limit": "^2.0.0"
}
},
"p-try": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
"integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M="
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
},
"parent-require": {
"version": "1.0.0",
@@ -844,11 +817,6 @@
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
},
"pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
},
"pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
@@ -883,14 +851,14 @@
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
},
"require-main-filename": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
"integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE="
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
},
"resolve": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
"integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
"integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==",
"dev": true,
"requires": {
"path-parse": "^1.0.6"
@@ -969,12 +937,13 @@
"integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A="
},
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
"requires": {
"emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^4.0.0"
"strip-ansi": "^5.1.0"
}
},
"string_decoder": {
@@ -986,11 +955,11 @@
}
},
"strip-ansi": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"requires": {
"ansi-regex": "^3.0.0"
"ansi-regex": "^4.1.0"
}
},
"strip-eof": {
@@ -1032,9 +1001,9 @@
}
},
"ts-node": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.2.0.tgz",
"integrity": "sha512-m8XQwUurkbYqXrKqr3WHCW310utRNvV5OnRVeISeea7LoCWVcdfeB/Ntl8JYWFh+WRoUAdBgESrzKochQt7sMw==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
@@ -1058,9 +1027,9 @@
"integrity": "sha512-avfPS28HmGLLc2o4elcc2EIq2FcH++Yo5YxpBZi9Yw93BCTGFthI4HPE4Rpep6vSYQaK8e69PelM44tPj+RaQg=="
},
"tslint": {
"version": "5.16.0",
"resolved": "https://registry.npmjs.org/tslint/-/tslint-5.16.0.tgz",
"integrity": "sha512-UxG2yNxJ5pgGwmMzPMYh/CCnCnh0HfPgtlVRDs1ykZklufFBL1ZoTlWFRz2NQjcoEiDoRp+JyT0lhBbbH/obyA==",
"version": "5.18.0",
"resolved": "https://registry.npmjs.org/tslint/-/tslint-5.18.0.tgz",
"integrity": "sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
@@ -1069,7 +1038,7 @@
"commander": "^2.12.1",
"diff": "^3.2.0",
"glob": "^7.1.1",
"js-yaml": "^3.13.0",
"js-yaml": "^3.13.1",
"minimatch": "^3.0.4",
"mkdirp": "^0.5.1",
"resolve": "^1.3.2",
@@ -1087,10 +1056,15 @@
"tslib": "^1.8.1"
}
},
"type": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz",
"integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw=="
},
"typeorm": {
"version": "0.2.17",
"resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.2.17.tgz",
"integrity": "sha512-a2Yi6aG7qcSQNyYHjAZtRwhuMKt/ZPmNQg8PvpgF52Z3AgJ4LL4T5mtpfTzKgNzM4o4wP0JQcZNoGGlaRovKpw==",
"version": "0.2.18",
"resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.2.18.tgz",
"integrity": "sha512-S553GwtG5ab268+VmaLCN7gKDqFPIzUw0eGMTobJ9yr0Np62Ojfx8j1Oa9bIeh5p7Pz1/kmGabAHoP1MYK05pA==",
"requires": {
"app-root-path": "^2.0.1",
"buffer": "^5.1.0",
@@ -1121,9 +1095,9 @@
}
},
"typescript": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.1.tgz",
"integrity": "sha512-64HkdiRv1yYZsSe4xC1WVgamNigVYjlssIoaH2HcZF0+ijsk5YK2g0G34w9wJkze8+5ow4STd22AynfO6ZYYLw=="
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
"integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g=="
},
"util-deprecate": {
"version": "1.0.2",
@@ -1149,45 +1123,13 @@
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
},
"wrap-ansi": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
"integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
"requires": {
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1"
},
"dependencies": {
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"is-fullwidth-code-point": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"requires": {
"number-is-nan": "^1.0.0"
}
},
"string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
"strip-ansi": "^3.0.0"
}
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"requires": {
"ansi-regex": "^2.0.0"
}
}
"ansi-styles": "^3.2.0",
"string-width": "^3.0.0",
"strip-ansi": "^5.0.0"
}
},
"wrappy": {
@@ -1210,14 +1152,9 @@
"integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
},
"y18n": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
"integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
},
"yallist": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
},
"yargonaut": {
"version": "1.1.4",
@@ -1267,11 +1204,11 @@
}
},
"yargs": {
"version": "13.2.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz",
"integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==",
"version": "13.2.4",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz",
"integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==",
"requires": {
"cliui": "^4.0.0",
"cliui": "^5.0.0",
"find-up": "^3.0.0",
"get-caller-file": "^2.0.1",
"os-locale": "^3.1.0",
@@ -1281,179 +1218,16 @@
"string-width": "^3.0.0",
"which-module": "^2.0.0",
"y18n": "^4.0.0",
"yargs-parser": "^13.0.0"
},
"dependencies": {
"ansi-regex": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
},
"camelcase": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
},
"cross-spawn": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
"requires": {
"nice-try": "^1.0.4",
"path-key": "^2.0.1",
"semver": "^5.5.0",
"shebang-command": "^1.2.0",
"which": "^1.2.9"
}
},
"execa": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
"integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
"requires": {
"cross-spawn": "^6.0.0",
"get-stream": "^4.0.0",
"is-stream": "^1.1.0",
"npm-run-path": "^2.0.0",
"p-finally": "^1.0.0",
"signal-exit": "^3.0.0",
"strip-eof": "^1.0.0"
}
},
"find-up": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
"integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"requires": {
"locate-path": "^3.0.0"
}
},
"get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
},
"get-stream": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
"integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
"requires": {
"pump": "^3.0.0"
}
},
"invert-kv": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
"integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA=="
},
"lcid": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
"integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
"requires": {
"invert-kv": "^2.0.0"
}
},
"locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
"integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"requires": {
"p-locate": "^3.0.0",
"path-exists": "^3.0.0"
}
},
"mem": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
"integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
"requires": {
"map-age-cleaner": "^0.1.1",
"mimic-fn": "^2.0.0",
"p-is-promise": "^2.0.0"
}
},
"mimic-fn": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
},
"os-locale": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
"integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
"requires": {
"execa": "^1.0.0",
"lcid": "^2.0.0",
"mem": "^4.0.0"
}
},
"p-limit": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
"integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
"requires": {
"p-try": "^2.0.0"
}
},
"p-locate": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
"integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"requires": {
"p-limit": "^2.0.0"
}
},
"p-try": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
},
"require-main-filename": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
},
"string-width": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
"requires": {
"emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^5.1.0"
}
},
"strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"requires": {
"ansi-regex": "^4.1.0"
}
},
"y18n": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
},
"yargs-parser": {
"version": "13.0.0",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz",
"integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==",
"requires": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
}
}
"yargs-parser": "^13.1.0"
}
},
"yargs-parser": {
"version": "9.0.2",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz",
"integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=",
"version": "13.1.0",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.0.tgz",
"integrity": "sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA==",
"requires": {
"camelcase": "^4.1.0"
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
}
},
"yn": {

View File

@@ -9,18 +9,18 @@
"start:prod": "node dist/main.js"
},
"dependencies": {
"@nestjs/common": "6.2.4",
"@nestjs/core": "6.2.4",
"@nestjs/typeorm": "6.1.1",
"@nestjs/common": "6.5.0",
"@nestjs/core": "6.5.0",
"@nestjs/typeorm": "6.1.2",
"mysql": "2.17.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.2",
"typeorm": "0.2.17",
"typescript": "3.5.1"
"typeorm": "0.2.18",
"typescript": "3.5.3"
},
"devDependencies": {
"@types/node": "7.10.6",
"ts-node": "8.2.0",
"tslint": "5.16.0"
"ts-node": "8.3.0",
"tslint": "5.18.0"
}
}

View File

@@ -12,7 +12,7 @@ async function createNestApp(...gateways): Promise<INestApplication> {
providers: gateways,
}).compile();
const app = await testingModule.createNestApplication();
app.useWebSocketAdapter(new WsAdapter(app));
app.useWebSocketAdapter(new WsAdapter(app) as any);
return app;
}
@@ -70,6 +70,9 @@ describe('WebSocketGateway (WsAdapter)', () => {
app = await createNestApp(ApplicationGateway, CoreGateway);
await app.listenAsync(3000);
// open websockets delay
await new Promise(resolve => setTimeout(resolve, 1000));
ws = new WebSocket('ws://localhost:8080');
ws2 = new WebSocket('ws://localhost:8090');

View File

@@ -5,58 +5,58 @@
"requires": true,
"dependencies": {
"@nestjs/common": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.2.4.tgz",
"integrity": "sha512-YZvJ6/S7yVQZK+9rupCzMCg4tpbc9DyVvLoTx0NBDqExTCUNcNEcCtn0AZrO/hLqbeYODnJwGE2NxkH1R/qw+w==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.5.0.tgz",
"integrity": "sha512-i2m2e/AXFGq0l7IPtwv2SrDHbxRPe4ZsuG54B/V68escu1LMpMZcTCjfANTamRvnNR258QQcSVNBMTUX1nTV8w==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.2.4.tgz",
"integrity": "sha512-aYKi3QGKmpxF6w32STAcobIqOHFqSUXrU8nF+Y9dOlStRkXFBTuVchsoJk94sY+3y4SJAlHH4Q/8R4yFaixrug==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.5.0.tgz",
"integrity": "sha512-VtHeqX7chP1HHPJ1eogKbtSSYIm4LXE4balQEiId2moFm9fdn2ekctBthhhfVwtQqs8vEMvgRixMxZrCJTSuoQ==",
"requires": {
"@nuxtjs/opencollective": "0.2.1",
"@nuxtjs/opencollective": "0.2.2",
"fast-safe-stringify": "2.0.6",
"iterare": "1.1.2",
"iterare": "1.2.0",
"object-hash": "1.3.1",
"optional": "0.1.4",
"uuid": "3.3.2"
}
},
"@nestjs/microservices": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.2.4.tgz",
"integrity": "sha512-aVXLPPTL2nUf4EVBcuqbCRFN62BDhFjxSy49BIpMTDqbaSOZPgfhfwyotDI6sAG0cJq4zWvU/OCC2/NkLq9Ryg==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.5.0.tgz",
"integrity": "sha512-5me3V8kZ5n3TWTv5uM2IvNZNCbnXynKOiIRygVrFriWbkidHebMRkamAAeV2MW6YvPSsY0D3Ay1mGCGSZXS2XA==",
"requires": {
"iterare": "1.1.2",
"iterare": "1.2.0",
"json-socket": "0.3.0",
"optional": "0.1.4"
}
},
"@nestjs/testing": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.2.4.tgz",
"integrity": "sha512-l5uxeNz+CksHaVcHxSlpo0vyJxvZP7BM1vS6BKuqtn/lNlIITAkdWmCVfBldN8Okayj3B2yhc04Zq6imU3aX9w==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.5.0.tgz",
"integrity": "sha512-4K3yAjXsboKuCf3+Evpc4UvoDiMe8p66p8wXQ+BJA78JN14YFJMg2wDKL3xnz/zfd12tMrTVPf8wE8AXvGAYbw==",
"requires": {
"optional": "0.1.4"
}
},
"@nestjs/websockets": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.2.4.tgz",
"integrity": "sha512-3cpEZz/uTTHiMXX6d+lXH9Wg7Rtla36Oc3JTmQtuGc1KlAIs3wzJRO/qU/LfLuYrNeqAAFVq8EHW3DkjPFxXjg==",
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.5.0.tgz",
"integrity": "sha512-HJ2c66O15cRUsueWqAKfl7FqsT76doEpyVMSh9CQ2KWgv++8Eugl8/lV8iCoDcuXIZDKX+Sw3XUuKdtmYPdqeA==",
"requires": {
"iterare": "1.1.2"
"iterare": "1.2.0"
}
},
"@nuxtjs/opencollective": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.1.tgz",
"integrity": "sha512-pzSib8NKquaTt/ns5Cc2G0BGRVJXaD+p1qfF6q7vNIMvRysorn/VF3y7gAuQpcxfF7wBbGE+dXjhIieWOUsWSw==",
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.2.2.tgz",
"integrity": "sha512-69gFVDs7mJfNjv9Zs5DFVD+pvBW+k1TaHSOqUWqAyTTfLcKI/EMYQgvEvziRd+zAFtUOoye6MfWh0qvinGISPw==",
"requires": {
"chalk": "^2.4.1",
"consola": "^2.3.0",
@@ -95,12 +95,12 @@
"dev": true
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
}
},
"buffer-from": {
@@ -175,9 +175,9 @@
"dev": true
},
"consola": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.6.2.tgz",
"integrity": "sha512-GNJhwvF4bJ8eiAlyB8r4WNM8kBqkl+y4DvMehMbyywoJiv37N0M6/xrKqrrZw/5maZA+UagQV8UZ+XBeuGMzUg=="
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.9.0.tgz",
"integrity": "sha512-34Iue+LRcWbndFIfZc5boNizWlsrRjqIBJZTe591vImgbnq7nx2EzlrLtANj9TH2Fxm7puFJBJAOk5BhvZOddQ=="
},
"cookiejar": {
"version": "2.1.2",
@@ -192,17 +192,19 @@
"dev": true
},
"d": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
"integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
"requires": {
"es5-ext": "^0.10.9"
"es5-ext": "^0.10.50",
"type": "^1.0.1"
}
},
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
@@ -249,13 +251,13 @@
}
},
"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=",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
"integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
"requires": {
"d": "1",
"es5-ext": "^0.10.14",
"es6-iterator": "^2.0.1",
"es5-ext": "^0.10.46",
"es6-iterator": "^2.0.3",
"es6-symbol": "^3.1.1"
}
},
@@ -285,11 +287,26 @@
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "^3.2.6"
"debug": "=3.1.0"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"form-data": {
@@ -326,9 +343,9 @@
"dev": true
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
},
"is-promise": {
"version": "2.1.0",
@@ -336,9 +353,9 @@
"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=="
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.0.tgz",
"integrity": "sha512-RxMV9p/UzdK0Iplnd8mVgRvNdXlsTOiuDrqMRnDi3wIhbT+JP4xDquAX9ay13R3CH72NBzQ91KWe0+C168QAyQ=="
},
"json-socket": {
"version": "0.3.0",
@@ -404,7 +421,8 @@
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
"dev": true
},
"next-tick": {
"version": "1.0.0",
@@ -551,9 +569,9 @@
}
},
"ts-node": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.2.0.tgz",
"integrity": "sha512-m8XQwUurkbYqXrKqr3WHCW310utRNvV5OnRVeISeea7LoCWVcdfeB/Ntl8JYWFh+WRoUAdBgESrzKochQt7sMw==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
@@ -568,10 +586,15 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
},
"type": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz",
"integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw=="
},
"typescript": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.1.tgz",
"integrity": "sha512-64HkdiRv1yYZsSe4xC1WVgamNigVYjlssIoaH2HcZF0+ijsk5YK2g0G34w9wJkze8+5ow4STd22AynfO6ZYYLw=="
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
"integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g=="
},
"util-deprecate": {
"version": "1.0.2",

View File

@@ -7,20 +7,20 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.2.4",
"@nestjs/core": "6.2.4",
"@nestjs/microservices": "6.2.4",
"@nestjs/testing": "6.2.4",
"@nestjs/websockets": "6.2.4",
"@nestjs/common": "6.5.0",
"@nestjs/core": "6.5.0",
"@nestjs/microservices": "6.5.0",
"@nestjs/testing": "6.5.0",
"@nestjs/websockets": "6.5.0",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.2",
"typescript": "3.5.1"
"typescript": "3.5.3"
},
"devDependencies": {
"@types/node": "7.10.6",
"supertest": "4.0.2",
"ts-node": "8.2.0"
"ts-node": "8.3.0"
}
}

View File

@@ -3,5 +3,5 @@
"packages": [
"packages/*"
],
"version": "6.2.4"
"version": "6.5.2"
}

4745
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +1,11 @@
{
"name": "nestjs-monorepo",
"version": "6.2.4",
"private": true,
"name": "@nestjs/core",
"version": "6.5.2",
"description": "Modern, fast, powerful node.js web framework",
"scripts": {
"coverage": "nyc report --reporter=text-lcov | coveralls",
"test": "nyc --require ts-node/register mocha packages/**/*.spec.ts --reporter spec --retries 3 --require 'node_modules/reflect-metadata/Reflect.js'",
"integration-test": "mocha integration/**/*.spec.ts --reporter spec --require ts-node/register --require 'node_modules/reflect-metadata/Reflect.js'",
"integration-test": "mocha \"integration/*/{,!(node_modules)/**/}/*.spec.ts\" --reporter spec --require ts-node/register --require 'node_modules/reflect-metadata/Reflect.js'",
"lint": "tslint -p tsconfig.json -c tslint.json \"packages/**/*.ts\" -e \"*.spec.ts\"",
"format": "prettier **/**/*.ts --ignore-path ./.prettierignore --write && git status",
"clean": "gulp clean:bundle",
@@ -31,17 +30,17 @@
"author": "Kamil Mysliwiec",
"license": "MIT",
"dependencies": {
"@grpc/proto-loader": "0.3.0",
"@grpc/proto-loader": "0.5.1",
"@nestjs/common": "6.1.1",
"@nestjs/core": "6.1.1",
"@nestjs/microservices": "6.1.1",
"@nestjs/testing": "6.1.1",
"@nestjs/websockets": "6.1.1",
"@nuxtjs/opencollective": "0.2.1",
"amqp-connection-manager": "2.3.2",
"@nuxtjs/opencollective": "0.2.2",
"amqp-connection-manager": "3.0.0",
"amqplib": "0.5.3",
"apollo-server-express": "2.5.0",
"axios": "0.18.0",
"apollo-server-express": "2.6.8",
"axios": "0.19.0",
"cache-manager": "2.9.1",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
@@ -52,18 +51,18 @@
"express": "4.17.1",
"fast-json-stringify": "1.15.3",
"fast-safe-stringify": "2.0.6",
"fastify": "2.4.1",
"fastify": "2.6.0",
"fastify-cors": "2.1.3",
"fastify-formbody": "3.1.0",
"fastify-multipart": "1.0.0",
"graphql": "14.3.1",
"grpc": "1.21.1",
"fastify-multipart": "1.0.1",
"graphql": "14.4.2",
"grpc": "1.22.0",
"http2": "3.3.7",
"iterare": "1.1.2",
"iterare": "1.2.0",
"merge-graphql-schemas": "1.5.8",
"mqtt": "3.0.0",
"multer": "1.4.1",
"nats": "1.2.10",
"nats": "1.3.0",
"object-hash": "1.3.1",
"optional": "0.1.4",
"path-to-regexp": "3.0.0",
@@ -73,23 +72,23 @@
"rxjs": "6.5.2",
"rxjs-compat": "6.5.2",
"socket.io": "2.2.0",
"ts-morph": "2.0.1",
"ts-morph": "3.1.0",
"uuid": "3.3.2"
},
"devDependencies": {
"@types/amqplib": "0.5.12",
"@types/cache-manager": "1.2.7",
"@types/amqplib": "0.5.13",
"@types/cache-manager": "1.2.8",
"@types/chai": "4.1.7",
"@types/chai-as-promised": "7.1.0",
"@types/cors": "2.8.5",
"@types/express": "4.16.1",
"@types/express": "4.17.0",
"@types/fastify-cors": "2.1.0",
"@types/kafka-node": "2.0.8",
"@types/mocha": "5.2.6",
"@types/node": "10.14.7",
"@types/mocha": "5.2.7",
"@types/node": "10.14.12",
"@types/redis": "2.8.13",
"@types/reflect-metadata": "0.0.5",
"@types/sinon": "7.0.12",
"@types/sinon": "7.0.13",
"@types/socket.io": "2.1.2",
"@types/ws": "6.0.1",
"artillery": "1.6.0-28",
@@ -98,13 +97,13 @@
"chai": "4.2.0",
"chai-as-promised": "7.1.1",
"clang-format": "1.2.4",
"concurrently": "4.1.0",
"concurrently": "4.1.1",
"conventional-changelog": "3.1.8",
"core-js": "3.1.3",
"coveralls": "3.0.3",
"core-js": "3.1.4",
"coveralls": "3.0.4",
"csv-write-stream": "2.0.0",
"delete-empty": "2.0.0",
"fastify-static": "2.4.0",
"delete-empty": "3.0.0",
"fastify-static": "2.5.0",
"gulp": "4.0.1",
"gulp-clang-format": "1.0.27",
"gulp-clean": "0.4.0",
@@ -114,20 +113,19 @@
"husky": "1.3.1",
"imports-loader": "0.8.0",
"json-loader": "0.5.7",
"lerna": "3.14.1",
"lint-staged": "8.1.7",
"memory-usage": "1.2.1",
"lerna": "2.11.0",
"lint-staged": "9.1.0",
"mocha": "3.5.3",
"nodemon": "1.19.1",
"nyc": "14.1.1",
"prettier": "1.17.1",
"prettier": "1.18.2",
"sinon": "7.3.2",
"sinon-chai": "3.3.0",
"socket.io-client": "2.2.0",
"supertest": "4.0.2",
"ts-node": "8.2.0",
"tslint": "5.16.0",
"typescript": "3.5.1"
"ts-node": "8.3.0",
"tslint": "5.18.0",
"typescript": "3.5.3"
},
"collective": {
"type": "opencollective",

View File

@@ -15,7 +15,6 @@
<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#9" alt="Coverage" /></a>
<a href="https://gitter.im/nestjs/nestjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=body_badge" target="_blank"><img src="https://badges.gitter.im/nestjs/nestjs.svg" alt="Gitter" /></a>
<a href="https://discord.gg/G7Qnnhy" target="_blank"><img src="https://img.shields.io/badge/discord-online-brightgreen.svg" alt="Discord"/></a>
<a href="https://opencollective.com/nest#backer" target="_blank"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://opencollective.com/nest/sponsors/badge.svg" alt="Sponsors on Open Collective" /></a>
@@ -72,6 +71,7 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
<a href="https://reposit.co.uk/" target="_blank"><img src="https://nestjs.com/img/reposit-logo.png" height="28" valign="middle" /></a> &nbsp; &nbsp; <a href="https://yakaz.com/" target="_blank"><img src="https://nestjs.com/img/yakaz.png" width="80" valign="middle" /></a> &nbsp;
<a href="https://nearpod.com/" target="_blank"><img src="https://nestjs.com/img/nearpod-logo.svg" width="120" valign="middle" /></a> &nbsp;
<a href="https://clay.global/" target="_blank"><img src="https://nestjs.com/img/clay-logo.svg" width="90" valign="middle" /></a> &nbsp;
<a href="https://firesticktricks.com" target="_blank"><img src="https://nestjs.com/img/firesticktricks-logo.png" width="145" valign="middle" /></a> &nbsp;
<a href="http://xtremis.com/" target="_blank"><img src="https://nestjs.com/img/logo-xtremis.svg" width="145" valign="middle" /></a>

View File

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

View File

@@ -10,11 +10,9 @@ const metadataKeys = [
];
const validateKeys = (keys: string[]) => {
const isKeyInvalid = (key: string) =>
metadataKeys.findIndex(k => k === key) < 0;
const validateKey = (key: string) => {
if (!isKeyInvalid(key)) {
if (metadataKeys.includes(key)) {
return;
}
throw new InvalidModuleConfigException(key);
@@ -28,7 +26,7 @@ const validateKeys = (keys: string[]) => {
* - `controllers` - the list of controllers (e.g. HTTP controllers)
* - `providers` - the list of providers that belong to this module. They can be injected between themselves.
* - `exports` - the set of components, which should be available for modules, which imports this module
* @param options {ModuleMetadata} Module metadata
* @param metadata {ModuleMetadata} Module metadata
*/
export function Module(metadata: ModuleMetadata): ClassDecorator {
const propsKeys = Object.keys(metadata);

View File

@@ -1,3 +1,5 @@
import { isString } from '../utils/shared.utils';
export class HttpException extends Error {
public readonly message: any;
@@ -30,4 +32,13 @@ export class HttpException extends Error {
public getStatus(): number {
return this.status;
}
public toString(): string {
const message = this.getErrorString(this.message);
return `Error: ${message}`;
}
private getErrorString(target: string | object): string {
return isString(target) ? target : JSON.stringify(target);
}
}

View File

@@ -1,7 +0,0 @@
import { NestInterceptor } from './features/nest-interceptor.interface';
import { CanActivate } from './features/can-activate.interface';
export interface ConfigurationProvider {
getGlobalInterceptors(): NestInterceptor[];
getGlobalGuards(): CanActivate[];
}

View File

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

View File

@@ -2,6 +2,7 @@
export interface HttpArgumentsHost {
getRequest<T = any>(): T;
getResponse<T = any>(): T;
getNext<T = any>(): T;
}
export interface WsArgumentsHost {
@@ -19,4 +20,4 @@ export interface ArgumentsHost {
switchToRpc(): RpcArgumentsHost;
switchToHttp(): HttpArgumentsHost;
switchToWs(): WsArgumentsHost;
}
}

View File

@@ -72,6 +72,7 @@ export interface NatsOptions {
options?: {
url?: string;
name?: string;
user?: string;
pass?: string;
maxReconnectAttempts?: number;
reconnectTimeWait?: number;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -16,6 +16,7 @@ export interface ValidationPipeOptions extends ValidatorOptions {
disableErrorMessages?: boolean;
transformOptions?: ClassTransformOptions;
exceptionFactory?: (errors: ValidationError[]) => any;
validateCustomDecorators?: boolean;
}
let classValidator: any = {};
@@ -28,6 +29,7 @@ export class ValidationPipe implements PipeTransform<any> {
protected validatorOptions: ValidatorOptions;
protected transformOptions: ClassTransformOptions;
protected exceptionFactory: (errors: ValidationError[]) => any;
protected validateCustomDecorators: boolean;
constructor(@Optional() options?: ValidationPipeOptions) {
options = options || {};
@@ -35,12 +37,14 @@ export class ValidationPipe implements PipeTransform<any> {
transform,
disableErrorMessages,
transformOptions,
validateCustomDecorators,
...validatorOptions
} = options;
this.isTransformEnabled = !!transform;
this.validatorOptions = validatorOptions;
this.transformOptions = transformOptions;
this.isDetailedOutputDisabled = disableErrorMessages;
this.validateCustomDecorators = validateCustomDecorators || false;
this.exceptionFactory =
options.exceptionFactory ||
(errors =>
@@ -82,7 +86,7 @@ export class ValidationPipe implements PipeTransform<any> {
private toValidate(metadata: ArgumentMetadata): boolean {
const { metatype, type } = metadata;
if (type === 'custom') {
if (type === 'custom' && !this.validateCustomDecorators) {
return false;
}
const types = [String, Boolean, Number, Array, Object];

View File

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

View File

@@ -44,4 +44,29 @@ describe('HttpException', () => {
statusCode: 404,
});
});
it('should inherit from error', () => {
const error = new HttpException('', 400);
expect(error instanceof Error).to.be.true;
});
it('should be serializable', () => {
const message = 'Some Error';
const error = new HttpException(message, 400);
expect(`${error}`).to.be.eql(`Error: ${message}`);
});
describe('when "message" is an object', () => {
it('should serialize an object', () => {
const obj = { foo: 'bar' };
const error = new HttpException(obj, 400);
expect(`${error}`).to.be.eql(`Error: ${JSON.stringify(obj)}`);
expect(`${error}`.includes('[object Object]')).to.not.be.true;
});
it('should serialize sub errors', () => {
const error = new NotFoundException();
expect(`${error}`.includes('Not Found')).to.be.true;
});
});
});

View File

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

View File

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

View File

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

View File

@@ -15,7 +15,6 @@
<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#9" alt="Coverage" /></a>
<a href="https://gitter.im/nestjs/nestjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=body_badge" target="_blank"><img src="https://badges.gitter.im/nestjs/nestjs.svg" alt="Gitter" /></a>
<a href="https://discord.gg/G7Qnnhy" target="_blank"><img src="https://img.shields.io/badge/discord-online-brightgreen.svg" alt="Discord"/></a>
<a href="https://opencollective.com/nest#backer" target="_blank"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://opencollective.com/nest/sponsors/badge.svg" alt="Sponsors on Open Collective" /></a>
@@ -72,6 +71,7 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
<a href="https://reposit.co.uk/" target="_blank"><img src="https://nestjs.com/img/reposit-logo.png" height="28" valign="middle" /></a> &nbsp; &nbsp; <a href="https://yakaz.com/" target="_blank"><img src="https://nestjs.com/img/yakaz.png" width="80" valign="middle" /></a> &nbsp;
<a href="https://nearpod.com/" target="_blank"><img src="https://nestjs.com/img/nearpod-logo.svg" width="120" valign="middle" /></a> &nbsp;
<a href="https://clay.global/" target="_blank"><img src="https://nestjs.com/img/clay-logo.svg" width="90" valign="middle" /></a> &nbsp;
<a href="https://firesticktricks.com" target="_blank"><img src="https://nestjs.com/img/firesticktricks-logo.png" width="145" valign="middle" /></a> &nbsp;
<a href="http://xtremis.com/" target="_blank"><img src="https://nestjs.com/img/logo-xtremis.svg" width="145" valign="middle" /></a>

View File

@@ -5,14 +5,22 @@ import {
PipeTransform,
WebSocketAdapter,
} from '@nestjs/common';
import { ConfigurationProvider } from '@nestjs/common/interfaces/configuration-provider.interface';
import { InstanceWrapper } from './injector/instance-wrapper';
export class ApplicationConfig implements ConfigurationProvider {
private globalPipes: PipeTransform<any>[] = [];
export class ApplicationConfig {
private globalPrefix = '';
private globalPipes: PipeTransform[] = [];
private globalFilters: ExceptionFilter[] = [];
private globalInterceptors: NestInterceptor[] = [];
private globalGuards: CanActivate[] = [];
private globalPrefix = '';
private readonly globalRequestPipes: InstanceWrapper<PipeTransform>[] = [];
private readonly globalRequestFilters: InstanceWrapper<
ExceptionFilter
>[] = [];
private readonly globalRequestInterceptors: InstanceWrapper<
NestInterceptor
>[] = [];
private readonly globalRequestGuards: InstanceWrapper<CanActivate>[] = [];
constructor(private ioAdapter: WebSocketAdapter | null = null) {}
@@ -79,4 +87,38 @@ export class ApplicationConfig implements ConfigurationProvider {
public useGlobalGuards(...guards: CanActivate[]) {
this.globalGuards = this.globalGuards.concat(guards);
}
public addGlobalRequestInterceptor(
wrapper: InstanceWrapper<NestInterceptor>,
) {
this.globalRequestInterceptors.push(wrapper);
}
public getGlobalRequestInterceptors(): InstanceWrapper<NestInterceptor>[] {
return this.globalRequestInterceptors;
}
public addGlobalRequestPipe(wrapper: InstanceWrapper<PipeTransform>) {
this.globalRequestPipes.push(wrapper);
}
public getGlobalRequestPipes(): InstanceWrapper<PipeTransform>[] {
return this.globalRequestPipes;
}
public addGlobalRequestFilter(wrapper: InstanceWrapper<ExceptionFilter>) {
this.globalRequestFilters.push(wrapper);
}
public getGlobalRequestFilters(): InstanceWrapper<ExceptionFilter>[] {
return this.globalRequestFilters;
}
public addGlobalRequestGuard(wrapper: InstanceWrapper<CanActivate>) {
this.globalRequestGuards.push(wrapper);
}
public getGlobalRequestGuards(): InstanceWrapper<CanActivate>[] {
return this.globalRequestGuards;
}
}

View File

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

View File

@@ -2,6 +2,7 @@ import { EXCEPTION_FILTERS_METADATA } from '@nestjs/common/constants';
import { Controller } from '@nestjs/common/interfaces';
import { isEmpty } from '@nestjs/common/utils/shared.utils';
import { STATIC_CONTEXT } from '../injector/constants';
import { InstanceWrapper } from '../injector/instance-wrapper';
import { RouterProxyCallback } from '../router/router-proxy';
import { ApplicationConfig } from './../application-config';
import { NestContainer } from './../injector/container';
@@ -40,10 +41,23 @@ export class ExternalExceptionFilterContext extends BaseExceptionFilterContext {
return exceptionHandler;
}
public getGlobalMetadata<T extends any[]>(): T {
public getGlobalMetadata<T extends any[]>(
contextId = STATIC_CONTEXT,
inquirerId?: string,
): T {
if (!this.config) {
return [] as T;
}
return this.config.getGlobalFilters() as T;
const globalFilters = this.config.getGlobalFilters() as T;
if (contextId === STATIC_CONTEXT && !inquirerId) {
return globalFilters;
}
const scopedFilterWrappers = this.config.getGlobalRequestFilters() as InstanceWrapper[];
const scopedFilters = scopedFilterWrappers
.map(wrapper => wrapper.getInstanceByContextId(contextId, inquirerId))
.filter(host => host)
.map(host => host.instance);
return globalFilters.concat(scopedFilters) as T;
}
}

View File

@@ -1,9 +1,9 @@
import { CanActivate } from '@nestjs/common';
import { GUARDS_METADATA } from '@nestjs/common/constants';
import { Controller } from '@nestjs/common/interfaces';
import { ConfigurationProvider } from '@nestjs/common/interfaces/configuration-provider.interface';
import { isEmpty, isFunction } from '@nestjs/common/utils/shared.utils';
import iterate from 'iterare';
import { ApplicationConfig } from '../application-config';
import { ContextCreator } from '../helpers/context-creator';
import { STATIC_CONTEXT } from '../injector/constants';
import { NestContainer } from '../injector/container';
@@ -14,7 +14,7 @@ export class GuardsContextCreator extends ContextCreator {
constructor(
private readonly container: NestContainer,
private readonly config?: ConfigurationProvider,
private readonly config?: ApplicationConfig,
) {
super();
}
@@ -86,10 +86,23 @@ export class GuardsContextCreator extends ContextCreator {
return injectables.get(guard.name);
}
public getGlobalMetadata<T extends any[]>(): T {
public getGlobalMetadata<T extends any[]>(
contextId = STATIC_CONTEXT,
inquirerId?: string,
): T {
if (!this.config) {
return [] as T;
}
return this.config.getGlobalGuards() as T;
const globalGuards = this.config.getGlobalGuards() as T;
if (contextId === STATIC_CONTEXT && !inquirerId) {
return globalGuards;
}
const scopedGuardWrappers = this.config.getGlobalRequestGuards() as InstanceWrapper[];
const scopedGuards = scopedGuardWrappers
.map(wrapper => wrapper.getInstanceByContextId(contextId, inquirerId))
.filter(host => host)
.map(host => host.instance);
return globalGuards.concat(scopedGuards) as T;
}
}

View File

@@ -8,7 +8,10 @@ export abstract class ContextCreator {
contextId?: ContextId,
inquirerId?: string,
): R;
public getGlobalMetadata?<T extends any[]>(): T;
public getGlobalMetadata?<T extends any[]>(
contextId?: ContextId,
inquirerId?: string,
): T;
public createContext<T extends any[], R extends any[]>(
instance: Controller,
@@ -18,7 +21,8 @@ export abstract class ContextCreator {
inquirerId?: string,
): R {
const globalMetadata =
this.getGlobalMetadata && this.getGlobalMetadata<T>();
this.getGlobalMetadata &&
this.getGlobalMetadata<T>(contextId, inquirerId);
const classMetadata = this.reflectClassMetadata<T>(instance, metadataKey);
const methodMetadata = this.reflectMethodMetadata<T>(callback, metadataKey);
return [

View File

@@ -39,6 +39,7 @@ export class ExecutionContextHost implements ExecutionContext {
return Object.assign(this, {
getRequest: () => this.getArgByIndex(0),
getResponse: () => this.getArgByIndex(1),
getNext: () => this.getArgByIndex(2)
});
}

View File

@@ -14,6 +14,7 @@ export * from './injector';
export * from './middleware';
export * from './nest-application';
export * from './nest-application-context';
export * from './application-config';
export { NestFactory } from './nest-factory';
export * from './router';
export * from './services';

View File

@@ -1,4 +1,4 @@
import { DynamicModule } from '@nestjs/common';
import { DynamicModule, Provider } from '@nestjs/common';
import { GLOBAL_MODULE_METADATA } from '@nestjs/common/constants';
import { Injectable } from '@nestjs/common/interfaces/injectable.interface';
import { Type } from '@nestjs/common/interfaces/type.interface';
@@ -129,7 +129,7 @@ export class NestContainer {
module.addRelatedModule(related);
}
public addProvider(provider: Type<any>, token: string): string {
public addProvider(provider: Provider, token: string): string {
if (!provider) {
throw new CircularDependencyException();
}
@@ -141,9 +141,9 @@ export class NestContainer {
}
public addInjectable(
injectable: Type<any>,
injectable: Provider,
token: string,
host: Type<Injectable>,
host?: Type<Injectable>,
) {
if (!this.modules.has(token)) {
throw new UnknownModuleException();

View File

@@ -106,7 +106,7 @@ export class Injector {
contextId,
wrapper,
);
await this.loadEnhancersPerContext(wrapper, module, contextId, wrapper);
await this.loadEnhancersPerContext(wrapper, contextId, wrapper);
}
public async loadInjectable(
@@ -139,7 +139,7 @@ export class Injector {
contextId,
inquirer,
);
await this.loadEnhancersPerContext(wrapper, module, contextId, wrapper);
await this.loadEnhancersPerContext(wrapper, contextId, wrapper);
}
public loadPrototype<T>(
@@ -401,6 +401,13 @@ export class Injector {
inquirer?: InstanceWrapper,
): Promise<InstanceWrapper<T>> {
const { name } = dependencyContext;
if (wrapper && wrapper.name === name) {
throw new UnknownDependenciesException(
wrapper.name,
dependencyContext,
module,
);
}
const scanInExports = () =>
this.lookupComponentInExports(
dependencyContext,
@@ -444,12 +451,20 @@ export class Injector {
moduleRegistry: any[] = [],
contextId = STATIC_CONTEXT,
inquirer?: InstanceWrapper,
isTraversing?: boolean,
): Promise<any> {
let instanceWrapperRef: InstanceWrapper = null;
const imports = module.imports || new Set<Module>();
const children = [...imports.values()].filter(item => item);
const identity = (item: any) => item;
let children = [...imports.values()].filter(identity);
if (isTraversing) {
const contextModuleExports = module.exports;
children = children.filter(child =>
contextModuleExports.has(child.metatype && child.metatype.name),
);
}
for (const relatedModule of children) {
if (moduleRegistry.includes(relatedModule.id)) {
continue;
@@ -464,6 +479,7 @@ export class Injector {
moduleRegistry,
contextId,
inquirer,
true,
);
if (instanceRef) {
return instanceRef;
@@ -614,7 +630,7 @@ export class Injector {
instance.constructor && instance.constructor.name,
);
await this.loadInstance(wrapper, collection, module, ctx, wrapper);
await this.loadEnhancersPerContext(wrapper, module, ctx, wrapper);
await this.loadEnhancersPerContext(wrapper, ctx, wrapper);
const host = wrapper.getInstanceByContextId(ctx);
return host && (host.instance as T);
@@ -622,13 +638,20 @@ export class Injector {
public async loadEnhancersPerContext(
wrapper: InstanceWrapper,
module: Module,
ctx: ContextId,
inquirer?: InstanceWrapper,
) {
const enhancers = wrapper.getEnhancersMetadata() || [];
const loadEnhancer = (item: InstanceWrapper) =>
this.loadInstance(item, module.injectables, module, ctx, inquirer);
const loadEnhancer = (item: InstanceWrapper) => {
const hostModule = item.host;
return this.loadInstance(
item,
hostModule.injectables,
hostModule,
ctx,
inquirer,
);
};
await Promise.all(enhancers.map(loadEnhancer));
}

View File

@@ -10,12 +10,12 @@ export class ModuleTokenFactory {
scope: Type<any>[],
dynamicModuleMetadata?: Partial<DynamicModule> | undefined,
): string {
const reflectedScope = this.reflectScope(metatype);
const isSingleScoped = reflectedScope === true;
const moduleScope = this.reflectScope(metatype);
const isSingleScoped = moduleScope === true;
const opaqueToken = {
module: this.getModuleName(metatype),
dynamic: this.getDynamicMetadataToken(dynamicModuleMetadata),
scope: isSingleScoped ? this.getScopeStack(scope) : reflectedScope,
scope: isSingleScoped ? this.getScopeStack(scope) : moduleScope,
};
return hash(opaqueToken);
}
@@ -23,9 +23,12 @@ export class ModuleTokenFactory {
public getDynamicMetadataToken(
dynamicModuleMetadata: Partial<DynamicModule> | undefined,
): string {
// Uses safeStringify instead of JSON.stringify
// to support circular dynamic modules
return dynamicModuleMetadata ? stringify(dynamicModuleMetadata) : '';
// Uses safeStringify instead of JSON.stringify to support circular dynamic modules
// The replacer function is also required in order to obtain real class names
// instead of the unified "Function" key
return dynamicModuleMetadata
? stringify(dynamicModuleMetadata, this.replacer)
: '';
}
public getModuleName(metatype: Type<any>): string {
@@ -50,4 +53,11 @@ export class ModuleTokenFactory {
const scope = Reflect.getMetadata(SHARED_MODULE_METADATA, metatype);
return scope ? scope : 'global';
}
private replacer(key: string, value: any) {
if (typeof value === 'function') {
return value.name;
}
return value;
}
}

View File

@@ -2,10 +2,15 @@ import { Scope } from '@nestjs/common';
import { SCOPE_OPTIONS_METADATA } from '@nestjs/common/constants';
import {
Abstract,
ClassProvider,
Controller,
DynamicModule,
ExistingProvider,
FactoryProvider,
Injectable,
NestModule,
Provider,
ValueProvider,
} from '@nestjs/common/interfaces';
import { Type } from '@nestjs/common/interfaces/type.interface';
import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util';
@@ -16,6 +21,7 @@ import {
isSymbol,
isUndefined,
} from '@nestjs/common/utils/shared.utils';
import { ApplicationConfig } from '../application-config';
import { InvalidClassException } from '../errors/exceptions/invalid-class.exception';
import { RuntimeException } from '../errors/exceptions/runtime.exception';
import { UnknownExportException } from '../errors/exceptions/unknown-export.exception';
@@ -23,32 +29,9 @@ import { NestContainer } from './container';
import { InstanceWrapper } from './instance-wrapper';
import { ModuleRef } from './module-ref';
export interface CustomProvider {
provide: any;
name: string;
interface ProviderName {
name?: string | symbol;
}
export type OpaqueToken =
| string
| symbol
| Type<any>
| Function
| Abstract<any>;
export type CustomClass = CustomProvider & {
useClass: Type<any>;
scope?: Scope;
};
export type CustomFactory = CustomProvider & {
useFactory: (...args: any[]) => any;
inject?: OpaqueToken[];
scope?: Scope;
};
export type CustomValue = CustomProvider & { useValue: any };
export type ProviderMetatype =
| Type<Injectable>
| CustomFactory
| CustomValue
| CustomClass;
export class Module {
private readonly _id: string;
@@ -134,6 +117,7 @@ export class Module {
public addCoreProviders(container: NestContainer) {
this.addModuleAsProvider();
this.addModuleRef();
this.addApplicationConfig();
}
public addModuleRef() {
@@ -163,8 +147,20 @@ export class Module {
);
}
public addApplicationConfig() {
this._providers.set(
ApplicationConfig.name,
new InstanceWrapper({
name: ApplicationConfig.name,
isResolved: true,
instance: this.container.applicationConfig,
host: this,
}),
);
}
public addInjectable<T extends Injectable>(
injectable: Type<T>,
injectable: Provider,
host?: Type<T>,
) {
if (this.isCustomProvider(injectable)) {
@@ -186,7 +182,7 @@ export class Module {
}
}
public addProvider(provider: ProviderMetatype): string {
public addProvider(provider: Provider): string {
if (this.isCustomProvider(provider)) {
return this.addCustomProvider(provider, this._providers);
}
@@ -205,13 +201,28 @@ export class Module {
}
public isCustomProvider(
provider: ProviderMetatype,
): provider is CustomClass | CustomFactory | CustomValue {
return !isNil((provider as CustomProvider).provide);
provider: Provider,
): provider is
| ClassProvider
| FactoryProvider
| ValueProvider
| ExistingProvider {
return !isNil(
(provider as
| ClassProvider
| FactoryProvider
| ValueProvider
| ExistingProvider).provide,
);
}
public addCustomProvider(
provider: CustomFactory | CustomValue | CustomClass,
provider: (
| ClassProvider
| FactoryProvider
| ValueProvider
| ExistingProvider) &
ProviderName,
collection: Map<string, any>,
): string {
const name = this.getProviderStaticToken(provider.provide) as string;
@@ -225,20 +236,26 @@ export class Module {
this.addCustomValue(provider, collection);
} else if (this.isCustomFactory(provider)) {
this.addCustomFactory(provider, collection);
} else if (this.isCustomUseExisting(provider)) {
this.addCustomUseExisting(provider, collection);
}
return name;
}
public isCustomClass(provider: any): provider is CustomClass {
return !isUndefined((provider as CustomClass).useClass);
public isCustomClass(provider: any): provider is ClassProvider {
return !isUndefined((provider as ClassProvider).useClass);
}
public isCustomValue(provider: any): provider is CustomValue {
return !isUndefined((provider as CustomValue).useValue);
public isCustomValue(provider: any): provider is ValueProvider {
return !isUndefined((provider as ValueProvider).useValue);
}
public isCustomFactory(provider: any): provider is CustomFactory {
return !isUndefined((provider as CustomFactory).useFactory);
public isCustomFactory(provider: any): provider is FactoryProvider {
return !isUndefined((provider as FactoryProvider).useFactory);
}
public isCustomUseExisting(provider: any): provider is ExistingProvider {
return !isUndefined((provider as ExistingProvider).useExisting);
}
public isDynamicModule(exported: any): exported is DynamicModule {
@@ -246,12 +263,12 @@ export class Module {
}
public addCustomClass(
provider: CustomClass,
provider: ClassProvider & ProviderName,
collection: Map<string, InstanceWrapper>,
) {
const { name, useClass, scope } = provider;
collection.set(
name,
name as string,
new InstanceWrapper({
name,
metatype: useClass,
@@ -264,12 +281,12 @@ export class Module {
}
public addCustomValue(
provider: CustomValue,
provider: ValueProvider & ProviderName,
collection: Map<string, InstanceWrapper>,
) {
const { name, useValue: value } = provider;
collection.set(
name,
name as string,
new InstanceWrapper({
name,
metatype: null,
@@ -282,12 +299,12 @@ export class Module {
}
public addCustomFactory(
provider: CustomFactory,
provider: FactoryProvider & ProviderName,
collection: Map<string, InstanceWrapper>,
) {
const { name, useFactory: factory, inject, scope } = provider;
collection.set(
name,
name as string,
new InstanceWrapper({
name,
metatype: factory as any,
@@ -300,8 +317,26 @@ export class Module {
);
}
public addCustomUseExisting(
provider: ExistingProvider & ProviderName,
collection: Map<string, InstanceWrapper>,
) {
const { name, useExisting } = provider;
collection.set(
name as string,
new InstanceWrapper({
name,
metatype: (instance => instance) as any,
instance: null,
isResolved: false,
inject: [useExisting],
host: this,
}),
);
}
public addExportedProvider(
provider: ProviderMetatype | string | symbol | DynamicModule,
provider: Provider & ProviderName | string | symbol | DynamicModule,
) {
const addExportedUnit = (token: string | symbol) =>
this._exports.add(this.validateExportedProvider(token));
@@ -318,7 +353,11 @@ export class Module {
}
public addCustomExportedProvider(
provider: CustomFactory | CustomValue | CustomClass,
provider:
| FactoryProvider
| ValueProvider
| ClassProvider
| ExistingProvider,
) {
const provide = provider.provide;
if (isString(provide) || isSymbol(provide)) {
@@ -389,7 +428,7 @@ export class Module {
}
public getProviderStaticToken(
provider: string | symbol | Type<any>,
provider: string | symbol | Type<any> | Abstract<any>,
): string | symbol {
return isFunction(provider)
? (provider as Function).name
@@ -429,7 +468,7 @@ export class Module {
};
}
private getClassScope(provider: ProviderMetatype): Scope {
private getClassScope(provider: Provider): Scope {
const metadata = Reflect.getMetadata(SCOPE_OPTIONS_METADATA, provider);
return metadata && metadata.scope;
}

View File

@@ -1,8 +1,8 @@
import { INTERCEPTORS_METADATA } from '@nestjs/common/constants';
import { Controller, NestInterceptor } from '@nestjs/common/interfaces';
import { ConfigurationProvider } from '@nestjs/common/interfaces/configuration-provider.interface';
import { isEmpty, isFunction } from '@nestjs/common/utils/shared.utils';
import iterate from 'iterare';
import { ApplicationConfig } from '../application-config';
import { ContextCreator } from '../helpers/context-creator';
import { STATIC_CONTEXT } from '../injector/constants';
import { NestContainer } from '../injector/container';
@@ -13,7 +13,7 @@ export class InterceptorsContextCreator extends ContextCreator {
constructor(
private readonly container: NestContainer,
private readonly config?: ConfigurationProvider,
private readonly config?: ApplicationConfig,
) {
super();
}
@@ -92,10 +92,23 @@ export class InterceptorsContextCreator extends ContextCreator {
return module.injectables.get(metatype.name);
}
public getGlobalMetadata<T extends any[]>(): T {
public getGlobalMetadata<T extends any[]>(
contextId = STATIC_CONTEXT,
inquirerId?: string,
): T {
if (!this.config) {
return [] as T;
}
return this.config.getGlobalInterceptors() as T;
const globalInterceptors = this.config.getGlobalInterceptors() as T;
if (contextId === STATIC_CONTEXT && !inquirerId) {
return globalInterceptors;
}
const scopedInterceptorWrappers = this.config.getGlobalRequestInterceptors() as InstanceWrapper[];
const scopedInterceptors = scopedInterceptorWrappers
.map(wrapper => wrapper.getInstanceByContextId(contextId, inquirerId))
.filter(host => host)
.map(host => host.instance);
return globalInterceptors.concat(scopedInterceptors) as T;
}
}

View File

@@ -7,7 +7,7 @@ import {
import iterate from 'iterare';
export class MetadataScanner {
public scanFromPrototype<T extends Injectable, R>(
public scanFromPrototype<T extends Injectable, R = any>(
instance: T,
prototype: any,
callback: (name: string) => R,

View File

@@ -12,6 +12,7 @@ import { ApplicationConfig } from '../application-config';
import { InvalidMiddlewareException } from '../errors/exceptions/invalid-middleware.exception';
import { RuntimeException } from '../errors/exceptions/runtime.exception';
import { createContextId } from '../helpers/context-id-factory';
import { ExecutionContextHost } from '../helpers/execution-context-host';
import { NestContainer } from '../injector/container';
import { InstanceWrapper } from '../injector/instance-wrapper';
import { Module } from '../injector/module';
@@ -26,6 +27,8 @@ import { RoutesMapper } from './routes-mapper';
export class MiddlewareModule {
private readonly routerProxy = new RouterProxy();
private readonly exceptionFiltersCache = new WeakMap();
private injector: Injector;
private routerExceptionFilter: RouterExceptionFilters;
private routesMapper: RoutesMapper;
@@ -190,18 +193,32 @@ export class MiddlewareModule {
res: TResponse,
next: () => void,
) => {
const contextId = createContextId();
const contextInstance = await this.injector.loadPerContext(
instance,
module,
collection,
contextId,
);
const proxy = await this.createProxy<TRequest, TResponse>(
contextInstance,
contextId,
);
return proxy(req, res, next);
try {
const contextId = createContextId();
const contextInstance = await this.injector.loadPerContext(
instance,
module,
collection,
contextId,
);
const proxy = await this.createProxy<TRequest, TResponse>(
contextInstance,
contextId,
);
return proxy(req, res, next);
} catch (err) {
let exceptionsHandler = this.exceptionFiltersCache.get(instance.use);
if (!exceptionsHandler) {
exceptionsHandler = this.routerExceptionFilter.create(
instance,
instance.use,
undefined,
);
this.exceptionFiltersCache.set(instance.use, exceptionsHandler);
}
const host = new ExecutionContextHost([req, res, next]);
exceptionsHandler.next(err, host);
}
},
);
}

View File

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

View File

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

View File

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

View File

@@ -89,11 +89,24 @@ export class PipesContextCreator extends ContextCreator {
return module.injectables.get(metatype.name);
}
public getGlobalMetadata<T extends any[]>(): T {
public getGlobalMetadata<T extends any[]>(
contextId = STATIC_CONTEXT,
inquirerId?: string,
): T {
if (!this.config) {
return [] as T;
}
return this.config.getGlobalPipes() as T;
const globalPipes = this.config.getGlobalPipes() as T;
if (contextId === STATIC_CONTEXT && !inquirerId) {
return globalPipes;
}
const scopedPipeWrappers = this.config.getGlobalRequestPipes() as InstanceWrapper[];
const scopedPipes = scopedPipeWrappers
.map(wrapper => wrapper.getInstanceByContextId(contextId, inquirerId))
.filter(host => host)
.map(host => host.instance);
return globalPipes.concat(scopedPipes) as T;
}
public setModuleContext(context: string) {

View File

@@ -7,6 +7,7 @@ import { BaseExceptionFilterContext } from '../exceptions/base-exception-filter-
import { ExceptionsHandler } from '../exceptions/exceptions-handler';
import { STATIC_CONTEXT } from '../injector/constants';
import { NestContainer } from '../injector/container';
import { InstanceWrapper } from '../injector/instance-wrapper';
import { RouterProxyCallback } from './router-proxy';
export class RouterExceptionFilters extends BaseExceptionFilterContext {
@@ -42,7 +43,20 @@ export class RouterExceptionFilters extends BaseExceptionFilterContext {
return exceptionHandler;
}
public getGlobalMetadata<T extends any[]>(): T {
return this.config.getGlobalFilters() as T;
public getGlobalMetadata<T extends any[]>(
contextId = STATIC_CONTEXT,
inquirerId?: string,
): T {
const globalFilters = this.config.getGlobalFilters() as T;
if (contextId === STATIC_CONTEXT && !inquirerId) {
return globalFilters;
}
const scopedFilterWrappers = this.config.getGlobalRequestFilters() as InstanceWrapper[];
const scopedFilters = scopedFilterWrappers
.map(wrapper => wrapper.getInstanceByContextId(contextId, inquirerId))
.filter(host => host)
.map(host => host.instance);
return globalFilters.concat(scopedFilters) as T;
}
}

View File

@@ -133,7 +133,7 @@ export class RouterExecutionContext {
next: Function,
) => {
const args = this.contextUtils.createNullArray(argsLength);
fnCanActivate && (await fnCanActivate([req, res]));
fnCanActivate && (await fnCanActivate([req, res, next]));
this.responseController.setStatus(res, httpStatusCode);
hasCustomHeaders &&
@@ -141,7 +141,7 @@ export class RouterExecutionContext {
const result = await this.interceptorsConsumer.intercept(
interceptors,
[req, res],
[req, res, next],
instance,
callback,
handler(args, req, res, next),

View File

@@ -14,12 +14,14 @@ import { UnknownRequestMappingException } from '../errors/exceptions/unknown-req
import { GuardsConsumer } from '../guards/guards-consumer';
import { GuardsContextCreator } from '../guards/guards-context-creator';
import { createContextId } from '../helpers/context-id-factory';
import { ExecutionContextHost } from '../helpers/execution-context-host';
import { ROUTE_MAPPED_MESSAGE } from '../helpers/messages';
import { RouterMethodFactory } from '../helpers/router-method-factory';
import { STATIC_CONTEXT } from '../injector/constants';
import { NestContainer } from '../injector/container';
import { Injector } from '../injector/injector';
import { ContextId, InstanceWrapper } from '../injector/instance-wrapper';
import { Module } from '../injector/module';
import { InterceptorsConsumer } from '../interceptors/interceptors-consumer';
import { InterceptorsContextCreator } from '../interceptors/interceptors-context-creator';
import { MetadataScanner } from '../metadata-scanner';
@@ -42,6 +44,7 @@ export class RouterExplorer {
private readonly executionContextCreator: RouterExecutionContext;
private readonly routerMethodFactory = new RouterMethodFactory();
private readonly logger = new Logger(RouterExplorer.name, true);
private readonly exceptionFiltersCache = new WeakMap();
constructor(
private readonly metadataScanner: MetadataScanner,
@@ -181,33 +184,15 @@ export class RouterExplorer {
const isRequestScoped = !instanceWrapper.isDependencyTreeStatic();
const module = this.container.getModuleByKey(moduleKey);
const collection = module.controllers;
if (isRequestScoped) {
const handler = async <TRequest, TResponse>(
req: TRequest,
res: TResponse,
next: () => void,
) => {
const contextId = createContextId();
this.registerRequestProvider(req, contextId);
const contextInstance = await this.injector.loadPerContext(
instance,
module,
collection,
contextId,
);
this.createCallbackProxy(
contextInstance,
contextInstance[methodName],
methodName,
moduleKey,
requestMethod,
contextId,
instanceWrapper.id,
)(req, res, next);
};
const handler = this.createRequestScopedHandler(
instanceWrapper,
requestMethod,
module,
moduleKey,
methodName,
);
paths.forEach(path => {
const fullPath = stripSlash(basePath) + path;
@@ -256,6 +241,57 @@ export class RouterExplorer {
return this.routerProxy.createProxy(executionContext, exceptionFilter);
}
public createRequestScopedHandler(
instanceWrapper: InstanceWrapper,
requestMethod: RequestMethod,
module: Module,
moduleKey: string,
methodName: string,
) {
const { instance } = instanceWrapper;
const collection = module.controllers;
return async <TRequest, TResponse>(
req: TRequest,
res: TResponse,
next: () => void,
) => {
try {
const contextId = createContextId();
this.registerRequestProvider(req, contextId);
const contextInstance = await this.injector.loadPerContext(
instance,
module,
collection,
contextId,
);
this.createCallbackProxy(
contextInstance,
contextInstance[methodName],
methodName,
moduleKey,
requestMethod,
contextId,
instanceWrapper.id,
)(req, res, next);
} catch (err) {
let exceptionFilter = this.exceptionFiltersCache.get(
instance[methodName],
);
if (!exceptionFilter) {
exceptionFilter = this.exceptionsFilter.create(
instance,
instance[methodName],
moduleKey,
);
this.exceptionFiltersCache.set(instance[methodName], exceptionFilter);
}
const host = new ExecutionContextHost([req, res, next]);
exceptionFilter.next(err, host);
}
};
}
private registerRequestProvider<T = any>(request: T, contextId: ContextId) {
const coreModuleRef = this.container.getInternalCoreModuleRef();
const wrapper = coreModuleRef.getProviderByKey(REQUEST);

View File

@@ -20,7 +20,7 @@ export class RouterProxy {
try {
await targetCallback(req, res, next);
} catch (e) {
const host = new ExecutionContextHost([req, res]);
const host = new ExecutionContextHost([req, res, next]);
exceptionsHandler.next(e, host);
}
};
@@ -44,7 +44,7 @@ export class RouterProxy {
try {
await targetCallback(err, req, res, next);
} catch (e) {
const host = new ExecutionContextHost([req, res]);
const host = new ExecutionContextHost([req, res, next]);
exceptionsHandler.next(e, host);
}
};

View File

@@ -1,6 +1,7 @@
import {
Abstract,
DynamicModule,
flatten,
ForwardReference,
Provider,
} from '@nestjs/common';
@@ -13,8 +14,14 @@ import {
ROUTE_ARGS_METADATA,
} from '@nestjs/common/constants';
import {
CanActivate,
ClassProvider,
ExceptionFilter,
ExistingProvider,
FactoryProvider,
NestInterceptor,
PipeTransform,
Scope,
ValueProvider,
} from '@nestjs/common/interfaces';
import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface';
@@ -30,6 +37,7 @@ import { ApplicationConfig } from './application-config';
import { APP_FILTER, APP_GUARD, APP_INTERCEPTOR, APP_PIPE } from './constants';
import { CircularDependencyException } from './errors/exceptions/circular-dependency.exception';
import { NestContainer } from './injector/container';
import { InstanceWrapper } from './injector/instance-wrapper';
import { Module } from './injector/module';
import { MetadataScanner } from './metadata-scanner';
@@ -37,6 +45,7 @@ interface ApplicationProviderWrapper {
moduleKey: string;
providerKey: string;
type: string | symbol | Type<any> | Abstract<any> | Function;
scope?: Scope;
}
export class DependenciesScanner {
@@ -52,6 +61,8 @@ export class DependenciesScanner {
await this.registerCoreModule();
await this.scanForModules(module);
await this.scanModulesForDependencies();
this.addScopedEnhancersMetadata();
this.container.bindGlobalScope();
}
@@ -187,14 +198,13 @@ export class DependenciesScanner {
component.prototype,
this.reflectKeyMetadata.bind(this, component, metadataKey),
);
const flattenMethodsInjectables = methodsInjectables.reduce<any[]>(
(a: any[], b) => a.concat(b),
[],
);
const injectables = [
const flattenMethodsInjectables = this.flatten(methodsInjectables);
const combinedInjectables = [
...controllerInjectables,
...flattenMethodsInjectables,
].filter(isFunction);
const injectables = Array.from(new Set(combinedInjectables));
injectables.forEach(injectable =>
this.insertInjectable(injectable, token, component),
@@ -211,9 +221,7 @@ export class DependenciesScanner {
component.prototype,
method => Reflect.getMetadata(metadataKey, component, method),
);
const flatten = (arr: any[]) =>
arr.reduce((a: any[], b: any[]) => a.concat(b), []);
const paramsInjectables = flatten(paramsMetadata).map(
const paramsInjectables = this.flatten(paramsMetadata).map(
(param: Record<string, any>) =>
flatten(Object.keys(param).map(k => param[k].pipes)).filter(isFunction),
);
@@ -255,7 +263,11 @@ export class DependenciesScanner {
public isCustomProvider(
provider: Provider,
): provider is ClassProvider | ValueProvider | FactoryProvider {
): provider is
| ClassProvider
| ValueProvider
| FactoryProvider
| ExistingProvider {
return provider && !isNil((provider as any).provide);
}
@@ -266,25 +278,36 @@ export class DependenciesScanner {
}
const applyProvidersMap = this.getApplyProvidersMap();
const providersKeys = Object.keys(applyProvidersMap);
const type = (provider as ClassProvider | ValueProvider | FactoryProvider)
.provide;
const type = (provider as
| ClassProvider
| ValueProvider
| FactoryProvider
| ExistingProvider).provide;
if (!providersKeys.includes(type as string)) {
return this.container.addProvider(provider as any, token);
}
const providerToken = randomStringGenerator();
const providerToken = `${type as string} (UUID: ${randomStringGenerator()})`;
this.applicationProvidersApplyMap.push({
type,
moduleKey: token,
providerKey: providerToken,
scope: (provider as ClassProvider | FactoryProvider).scope,
});
this.container.addProvider(
{
...provider,
provide: providerToken,
} as any,
token,
);
const newProvider = {
...provider,
provide: providerToken,
} as Provider;
if (
this.isRequestOrTransient(
(provider as FactoryProvider | ClassProvider).scope,
)
) {
return this.container.addInjectable(newProvider, token);
}
this.container.addProvider(newProvider, token);
}
public insertInjectable(
@@ -316,30 +339,93 @@ export class DependenciesScanner {
this.container.registerCoreModuleRef(instance);
}
/**
* Add either request or transient globally scoped enhancers
* to all controllers metadata storage
*/
public addScopedEnhancersMetadata() {
const scopedGlobalProviders = this.applicationProvidersApplyMap.filter(
wrapper => this.isRequestOrTransient(wrapper.scope),
);
scopedGlobalProviders.forEach(({ moduleKey, providerKey, type }) => {
const modulesContainer = this.container.getModules();
const { injectables } = modulesContainer.get(moduleKey);
const instanceWrapper = injectables.get(providerKey);
const modules = [...modulesContainer.values()];
const controllersArray = modules.map(module => [
...module.controllers.values(),
]);
const controllers = this.flatten(controllersArray);
controllers.forEach(controller =>
controller.addEnhancerMetadata(instanceWrapper),
);
});
}
public applyApplicationProviders() {
const applyProvidersMap = this.getApplyProvidersMap();
this.applicationProvidersApplyMap.forEach(
({ moduleKey, providerKey, type }) => {
const modules = this.container.getModules();
const { providers } = modules.get(moduleKey);
const { instance } = providers.get(providerKey);
const applyRequestProvidersMap = this.getApplyRequestProvidersMap();
applyProvidersMap[type as string](instance);
const getInstanceWrapper = (
moduleKey: string,
providerKey: string,
collectionKey: 'providers' | 'injectables',
) => {
const modules = this.container.getModules();
const collection = modules.get(moduleKey)[collectionKey];
return collection.get(providerKey);
};
// Add global enhancers to the application config
this.applicationProvidersApplyMap.forEach(
({ moduleKey, providerKey, type, scope }) => {
let instanceWrapper: InstanceWrapper;
if (this.isRequestOrTransient(scope)) {
instanceWrapper = getInstanceWrapper(
moduleKey,
providerKey,
'injectables',
);
return applyRequestProvidersMap[type as string](instanceWrapper);
}
instanceWrapper = getInstanceWrapper(
moduleKey,
providerKey,
'providers',
);
applyProvidersMap[type as string](instanceWrapper.instance);
},
);
}
public getApplyProvidersMap(): { [type: string]: Function } {
return {
[APP_INTERCEPTOR]: (interceptor: any) =>
[APP_INTERCEPTOR]: (interceptor: NestInterceptor) =>
this.applicationConfig.addGlobalInterceptor(interceptor),
[APP_PIPE]: (pipe: any) => this.applicationConfig.addGlobalPipe(pipe),
[APP_GUARD]: (guard: any) => this.applicationConfig.addGlobalGuard(guard),
[APP_FILTER]: (filter: any) =>
[APP_PIPE]: (pipe: PipeTransform) =>
this.applicationConfig.addGlobalPipe(pipe),
[APP_GUARD]: (guard: CanActivate) =>
this.applicationConfig.addGlobalGuard(guard),
[APP_FILTER]: (filter: ExceptionFilter) =>
this.applicationConfig.addGlobalFilter(filter),
};
}
public getApplyRequestProvidersMap(): { [type: string]: Function } {
return {
[APP_INTERCEPTOR]: (interceptor: InstanceWrapper<NestInterceptor>) =>
this.applicationConfig.addGlobalRequestInterceptor(interceptor),
[APP_PIPE]: (pipe: InstanceWrapper<PipeTransform>) =>
this.applicationConfig.addGlobalRequestPipe(pipe),
[APP_GUARD]: (guard: InstanceWrapper<CanActivate>) =>
this.applicationConfig.addGlobalRequestGuard(guard),
[APP_FILTER]: (filter: InstanceWrapper<ExceptionFilter>) =>
this.applicationConfig.addGlobalRequestFilter(filter),
};
}
public isDynamicModule(
module: Type<any> | DynamicModule,
): module is DynamicModule {
@@ -351,4 +437,12 @@ export class DependenciesScanner {
): module is ForwardReference {
return module && !!(module as ForwardReference).forwardRef;
}
private flatten<T = any>(arr: T[][]): T[] {
return arr.reduce((a: T[], b: T[]) => a.concat(b), []);
}
private isRequestOrTransient(scope: Scope): boolean {
return scope === Scope.REQUEST || scope === Scope.TRANSIENT;
}
}

View File

@@ -39,6 +39,12 @@ describe('ApplicationConfig', () => {
expect(appConfig.getGlobalPipes()).to.contain(pipe);
});
it('should add global pipe', () => {
const pipe = 'testOne';
appConfig.addGlobalRequestPipe(pipe as any);
expect(appConfig.getGlobalRequestPipes()).to.contain(pipe);
});
});
describe('Filters', () => {
it('should set global filters', () => {
@@ -53,6 +59,12 @@ describe('ApplicationConfig', () => {
expect(appConfig.getGlobalFilters()).to.contain(filter);
});
it('should add request filter', () => {
const filter = 'testOne';
appConfig.addGlobalRequestFilter(filter as any);
expect(appConfig.getGlobalRequestFilters()).to.contain(filter);
});
});
describe('Guards', () => {
it('should set global guards', () => {
@@ -67,6 +79,12 @@ describe('ApplicationConfig', () => {
expect(appConfig.getGlobalGuards()).to.contain(guard);
});
it('should add request guard', () => {
const guard = 'testOne';
appConfig.addGlobalRequestGuard(guard as any);
expect(appConfig.getGlobalRequestGuards()).to.contain(guard);
});
});
describe('Interceptors', () => {
it('should set global interceptors', () => {
@@ -81,5 +99,11 @@ describe('ApplicationConfig', () => {
expect(appConfig.getGlobalInterceptors()).to.contain(interceptor);
});
it('should add request interceptor', () => {
const interceptor = 'testOne';
appConfig.addGlobalRequestInterceptor(interceptor as any);
expect(appConfig.getGlobalRequestInterceptors()).to.contain(interceptor);
});
});
});

View File

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

View File

@@ -5,9 +5,10 @@ import { UseFilters } from '../../../common/decorators/core/exception-filters.de
import { ApplicationConfig } from '../../application-config';
import { ExternalExceptionFilterContext } from '../../exceptions/external-exception-filter-context';
import { NestContainer } from '../../injector/container';
import { InstanceWrapper } from '../../injector/instance-wrapper';
describe('ExternalExceptionFilterContext', () => {
let moduleName: string;
let applicationConfig: ApplicationConfig;
let exceptionFilter: ExternalExceptionFilterContext;
class CustomException {}
@@ -17,10 +18,10 @@ describe('ExternalExceptionFilterContext', () => {
}
beforeEach(() => {
moduleName = 'Test';
applicationConfig = new ApplicationConfig();
exceptionFilter = new ExternalExceptionFilterContext(
new NestContainer(),
new ApplicationConfig(),
applicationConfig,
);
});
describe('create', () => {
@@ -72,4 +73,36 @@ describe('ExternalExceptionFilterContext', () => {
expect(resolved[0].func).to.be.a('function');
});
});
describe('getGlobalMetadata', () => {
describe('when contextId is static and inquirerId is nil', () => {
it('should return global filters', () => {
const expectedResult = applicationConfig.getGlobalFilters();
expect(exceptionFilter.getGlobalMetadata()).to.be.equal(expectedResult);
});
});
describe('otherwise', () => {
it('should merge static global with request/transient scoped filters', () => {
const globalFilters: any = ['test'];
const instanceWrapper = new InstanceWrapper();
const instance = 'request-scoped';
const scopedFilterWrappers = [instanceWrapper];
sinon
.stub(applicationConfig, 'getGlobalFilters')
.callsFake(() => globalFilters);
sinon
.stub(applicationConfig, 'getGlobalRequestFilters')
.callsFake(() => scopedFilterWrappers);
sinon
.stub(instanceWrapper, 'getInstanceByContextId')
.callsFake(() => ({ instance } as any));
expect(exceptionFilter.getGlobalMetadata({ id: 3 })).to.contains(
instance,
...globalFilters,
);
});
});
});
});

View File

@@ -1,14 +1,17 @@
import { expect } from 'chai';
import * as sinon from 'sinon';
import { ApplicationConfig } from '../../application-config';
import { GuardsContextCreator } from '../../guards/guards-context-creator';
import { InstanceWrapper } from '../../injector/instance-wrapper';
class Guard {}
describe('GuardsContextCreator', () => {
let guardsContextCreator: GuardsContextCreator;
let applicationConfig: ApplicationConfig;
let guards: any[];
let container;
let getSpy;
let container: any;
let getSpy: sinon.SinonSpy;
beforeEach(() => {
guards = [
@@ -37,7 +40,11 @@ describe('GuardsContextCreator', () => {
get: getSpy,
}),
};
guardsContextCreator = new GuardsContextCreator(container as any);
applicationConfig = new ApplicationConfig();
guardsContextCreator = new GuardsContextCreator(
container,
applicationConfig,
);
});
describe('createConcreteContext', () => {
describe('when `moduleContext` is nil', () => {
@@ -111,4 +118,38 @@ describe('GuardsContextCreator', () => {
});
});
});
describe('getGlobalMetadata', () => {
describe('when contextId is static and inquirerId is nil', () => {
it('should return global guards', () => {
const expectedResult = applicationConfig.getGlobalGuards();
expect(guardsContextCreator.getGlobalMetadata()).to.be.equal(
expectedResult,
);
});
});
describe('otherwise', () => {
it('should merge static global with request/transient scoped guards', () => {
const globalGuards: any = ['test'];
const instanceWrapper = new InstanceWrapper();
const instance = 'request-scoped';
const scopedGuardWrappers = [instanceWrapper];
sinon
.stub(applicationConfig, 'getGlobalGuards')
.callsFake(() => globalGuards);
sinon
.stub(applicationConfig, 'getGlobalRequestGuards')
.callsFake(() => scopedGuardWrappers);
sinon
.stub(instanceWrapper, 'getInstanceByContextId')
.callsFake(() => ({ instance } as any));
expect(guardsContextCreator.getGlobalMetadata({ id: 3 })).to.contains(
instance,
...globalGuards,
);
});
});
});
});

View File

@@ -5,7 +5,7 @@ import { ExecutionContextHost } from '../../helpers/execution-context-host';
describe('ExecutionContextHost', () => {
let contextHost: ExecutionContextHost;
const args = ['test', 'test2'],
const args = ['test', 'test2', 'test3'],
constructorRef = { test: 'test' },
callback = () => null;
@@ -54,8 +54,10 @@ describe('ExecutionContextHost', () => {
const proxy = contextHost.switchToHttp();
expect(proxy.getRequest).to.be.a('function');
expect(proxy.getResponse).to.be.a('function');
expect(proxy.getNext).to.be.a('function');
expect(proxy.getRequest()).to.be.eq(args[0]);
expect(proxy.getResponse()).to.be.eq(args[1]);
expect(proxy.getNext()).to.be.eq(args[2]);
});
});

View File

@@ -292,6 +292,25 @@ describe('Injector', () => {
expect(result).to.be.equal(instance);
});
it('should throw an exception if recursion happens', () => {
const name = 'RecursionService';
const instance = { test: 3 };
const collection = {
has: () => true,
get: () => instance,
};
const result = injector.lookupComponent(
collection as any,
null,
{ name, index: 0, dependencies: [] },
{
...wrapper,
name,
},
);
expect(result).to.eventually.be.rejected;
});
it('should call "lookupComponentInImports" when object is not in collection', async () => {
lookupComponentInImports.returns({});
const collection = {
@@ -681,18 +700,22 @@ describe('Injector', () => {
describe('loadEnhancersPerContext', () => {
it('should load enhancers per context id', async () => {
const wrapper = new InstanceWrapper();
wrapper.addEnhancerMetadata(new InstanceWrapper());
wrapper.addEnhancerMetadata(new InstanceWrapper());
wrapper.addEnhancerMetadata(
new InstanceWrapper({
host: new Module(class {}, [], new NestContainer()),
}),
);
wrapper.addEnhancerMetadata(
new InstanceWrapper({
host: new Module(class {}, [], new NestContainer()),
}),
);
const loadInstanceStub = sinon
.stub(injector, 'loadInstance')
.callsFake(async () => ({} as any));
await injector.loadEnhancersPerContext(
wrapper,
new Module(class {}, [], new NestContainer()),
STATIC_CONTEXT,
);
await injector.loadEnhancersPerContext(wrapper, STATIC_CONTEXT);
expect(loadInstanceStub.calledTwice).to.be.true;
});
});

View File

@@ -65,6 +65,13 @@ describe('ModuleTokenFactory', () => {
JSON.stringify(metadata),
);
});
it('should return hash with class', () => {
class Provider {}
const metadata = { providers: [Provider], exports: [Provider] };
expect(factory.getDynamicMetadataToken(metadata)).to.be.eql(
'{"providers":["Provider"],"exports":["Provider"]}'
);
});
});
describe('when metadata does not exist', () => {
it('should return empty string', () => {

View File

@@ -140,6 +140,16 @@ describe('Module', () => {
expect((addCustomFactory as sinon.SinonSpy).called).to.be.true;
});
it('should call "addCustomUseExisting" when "useExisting" property exists', () => {
const addCustomUseExisting = sinon.spy();
module.addCustomUseExisting = addCustomUseExisting;
const provider = { provide: 'test', useExisting: () => null };
module.addCustomUseExisting(provider as any, new Map());
expect((addCustomUseExisting as sinon.SinonSpy).called).to.be.true;
});
describe('addCustomClass', () => {
const type = { name: 'TypeTest' };
const provider = { provide: type, useClass: type, name: 'test' };
@@ -229,6 +239,36 @@ describe('Module', () => {
});
});
describe('addCustomUseExisting', () => {
const type = { name: 'TypeTest' };
const provider = { provide: type, useExisting: type, name: 'test' };
let setSpy;
beforeEach(() => {
const collection = new Map();
setSpy = sinon.spy(collection, 'set');
(module as any)._providers = collection;
});
it('should store provider', () => {
module.addCustomUseExisting(provider as any, (module as any)._providers);
const factoryFn = (module as any)._providers.get(provider.name).metatype;
expect(
setSpy.calledWith(
provider.name,
new InstanceWrapper({
host: module,
name: provider.name,
metatype: factoryFn,
instance: null,
inject: [provider.useExisting as any],
isResolved: false,
}),
),
).to.be.true;
expect(factoryFn(provider.useExisting)).to.be.eql(type);
});
});
describe('when get instance', () => {
describe('when metatype does not exists in providers collection', () => {
beforeEach(() => {

View File

@@ -1,6 +1,7 @@
import { expect } from 'chai';
import { of } from 'rxjs';
import * as sinon from 'sinon';
import { ApplicationConfig } from '../../application-config';
import { InstanceWrapper } from '../../injector/instance-wrapper';
import { InterceptorsContextCreator } from '../../interceptors/interceptors-context-creator';
@@ -9,8 +10,9 @@ class Interceptor {}
describe('InterceptorsContextCreator', () => {
let interceptorsContextCreator: InterceptorsContextCreator;
let interceptors: any[];
let container;
let getSpy;
let applicationConfig: ApplicationConfig;
let container: any;
let getSpy: sinon.SinonSpy;
beforeEach(() => {
interceptors = [
@@ -42,8 +44,10 @@ describe('InterceptorsContextCreator', () => {
get: getSpy,
}),
};
applicationConfig = new ApplicationConfig();
interceptorsContextCreator = new InterceptorsContextCreator(
container as any,
applicationConfig,
);
});
describe('createConcreteContext', () => {
@@ -122,4 +126,37 @@ describe('InterceptorsContextCreator', () => {
});
});
});
describe('getGlobalMetadata', () => {
describe('when contextId is static and inquirerId is nil', () => {
it('should return global interceptors', () => {
const expectedResult = applicationConfig.getGlobalInterceptors();
expect(interceptorsContextCreator.getGlobalMetadata()).to.be.equal(
expectedResult,
);
});
});
describe('otherwise', () => {
it('should merge static global with request/transient scoped interceptors', () => {
const globalInterceptors: any = ['test'];
const instanceWrapper = new InstanceWrapper();
const instance = 'request-scoped';
const scopedInterceptorWrappers = [instanceWrapper];
sinon
.stub(applicationConfig, 'getGlobalInterceptors')
.callsFake(() => globalInterceptors);
sinon
.stub(applicationConfig, 'getGlobalRequestInterceptors')
.callsFake(() => scopedInterceptorWrappers);
sinon
.stub(instanceWrapper, 'getInstanceByContextId')
.callsFake(() => ({ instance } as any));
expect(
interceptorsContextCreator.getGlobalMetadata({ id: 3 }),
).to.contains(instance, ...globalInterceptors);
});
});
});
});

View File

@@ -1,5 +1,6 @@
import { expect } from 'chai';
import * as sinon from 'sinon';
import { ApplicationConfig } from '../../application-config';
import { NestContainer } from '../../injector/container';
import { InstanceWrapper } from '../../injector/instance-wrapper';
import { PipesContextCreator } from '../../pipes/pipes-context-creator';
@@ -9,10 +10,12 @@ class Pipe {}
describe('PipesContextCreator', () => {
let creator: PipesContextCreator;
let container: NestContainer;
let applicationConfig: ApplicationConfig;
beforeEach(() => {
container = new NestContainer();
creator = new PipesContextCreator(container);
applicationConfig = new ApplicationConfig();
creator = new PipesContextCreator(container, applicationConfig);
});
describe('createConcreteContext', () => {
describe('when metadata is empty or undefined', () => {
@@ -85,4 +88,36 @@ describe('PipesContextCreator', () => {
});
});
});
describe('getGlobalMetadata', () => {
describe('when contextId is static and inquirerId is nil', () => {
it('should return global pipes', () => {
const expectedResult = applicationConfig.getGlobalPipes();
expect(creator.getGlobalMetadata()).to.be.equal(expectedResult);
});
});
describe('otherwise', () => {
it('should merge static global with request/transient scoped pipes', () => {
const globalPipes: any = ['test'];
const instanceWrapper = new InstanceWrapper();
const instance = 'request-scoped';
const scopedPipeWrappers = [instanceWrapper];
sinon
.stub(applicationConfig, 'getGlobalPipes')
.callsFake(() => globalPipes);
sinon
.stub(applicationConfig, 'getGlobalRequestPipes')
.callsFake(() => scopedPipeWrappers);
sinon
.stub(instanceWrapper, 'getInstanceByContextId')
.callsFake(() => ({ instance } as any));
expect(creator.getGlobalMetadata({ id: 3 })).to.contains(
instance,
...globalPipes,
);
});
});
});
});

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