Compare commits

...

359 Commits

Author SHA1 Message Date
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
Kamil Myśliwiec
9d07884c0c feat(grpc): add catchError to duplex method factory 2019-05-30 13:49:30 +02:00
Nils Bergmann
971d92e7fd feature(common): add option to allow validation of custom decorators
No matter what the reason is to not validate custom decorators, you should be able to at least provide an option
2019-05-30 13:38:14 +02:00
Kamil Myśliwiec
67dacc31a0 integration(): fix grpc port conflict 2019-05-30 13:06:39 +02:00
Kamil Myśliwiec
fca5411430 Merge branch 'grpc-proto-tests-upgrade' of https://github.com/anton-alation/nest into anton-alation-grpc-proto-tests-upgrade 2019-05-30 12:18:34 +02:00
Kamil Myśliwiec
a3ad69df40 Merge branch 'anton-alation-grpc-stream-duplex-decorator' 2019-05-30 11:45:51 +02:00
Kamil Myśliwiec
3264196c4c Merge branch '6.3.0' into anton-alation-grpc-stream-duplex-decorator 2019-05-30 11:41:46 +02:00
Kamil Mysliwiec
31525dff26 Merge pull request #2300 from nestjs/renovate/nestjs-jwt-6.x
fix(deps): update dependency @nestjs/jwt to v6.1.1
2019-05-30 08:38:20 +02:00
Kamil Mysliwiec
efb8a1ea3b Merge pull request #2301 from nestjs/renovate/typescript-3.x
fix(deps): update dependency typescript to v3.5.1
2019-05-30 08:38:04 +02:00
Renovate Bot
47326e7a5d fix(deps): update dependency ts-morph to v2.3.0 2019-05-30 01:00:33 +00:00
Renovate Bot
4f8b216c85 fix(deps): update dependency typescript to v3.5.1 2019-05-29 16:39:42 +00:00
Renovate Bot
b8db3bbeb8 fix(deps): update dependency @nestjs/jwt to v6.1.1 2019-05-29 15:52:47 +00:00
Kamil Mysliwiec
bca3268a89 Merge pull request #2297 from nestjs/renovate/redis-2.x
chore(deps): update dependency @types/redis to v2.8.13
2019-05-29 11:52:20 +02:00
Kamil Mysliwiec
01f4a3bae5 Merge pull request #2298 from nestjs/renovate/sequelize-5.x
fix(deps): update dependency sequelize to v5.8.7
2019-05-29 11:51:42 +02:00
Kamil Mysliwiec
ab592581b9 Merge pull request #2265 from nestjs/renovate/graphql-14.x
fix(deps): update dependency graphql to v14.3.1
2019-05-29 11:47:29 +02:00
Kamil Mysliwiec
ae8aee6bb5 Merge pull request #2275 from nestjs/renovate/ts-node-8.x
chore(deps): update dependency ts-node to v8.2.0
2019-05-29 11:44:28 +02:00
Kamil Mysliwiec
b937c1dd2b Merge pull request #2280 from nestjs/renovate/express-4.x
fix(deps): update dependency express to v4.17.1
2019-05-29 11:44:07 +02:00
Renovate Bot
2141e118e7 fix(deps): update dependency sequelize to v5.8.7 2019-05-29 02:31:40 +00:00
Renovate Bot
19e2c73bcc chore(deps): update dependency @types/redis to v2.8.13 2019-05-28 19:19:30 +00:00
Renovate Bot
82a983a1c7 fix(deps): update dependency graphql to v14.3.1 2019-05-28 18:36:17 +00:00
Renovate Bot
a486245c8d chore(deps): update dependency ts-node to v8.2.0 2019-05-28 18:32:55 +00:00
Renovate Bot
a7342eed59 fix(deps): update dependency express to v4.17.1 2019-05-28 18:26:51 +00:00
Kamil Mysliwiec
069ccb1b46 Merge pull request #2258 from nestjs/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.32.2
2019-05-28 20:22:49 +02:00
Kamil Mysliwiec
3aeeab39eb Merge pull request #2257 from nestjs/renovate/fastify-multipart-1.x
fix(deps): update dependency fastify-multipart to v1
2019-05-28 20:22:26 +02:00
Kamil Mysliwiec
c7adccfa7c Merge pull request #2263 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.5.11
2019-05-28 20:22:16 +02:00
Kamil Mysliwiec
4baa96e649 Merge pull request #2266 from nestjs/renovate/grpc-1.x
fix(deps): update dependency grpc to v1.21.1
2019-05-28 20:21:54 +02:00
Kamil Mysliwiec
509592f3c1 Merge pull request #2267 from mfazer/master
bugfix(@nestjs/nest): Update gitter URL in CONTRIBUTING.md
2019-05-28 20:21:20 +02:00
Kamil Mysliwiec
57b405a3a1 Merge pull request #2269 from nestjs/renovate/mongodb-3.x
fix(deps): update dependency mongodb to v3.2.6
2019-05-28 20:21:03 +02:00
Kamil Mysliwiec
d5b8ea2444 Merge pull request #2276 from nestjs/renovate/prisma-binding-2.x
fix(deps): update dependency prisma-binding to v2.3.11
2019-05-28 20:20:52 +02:00
Kamil Mysliwiec
bab2d383b4 Merge pull request #2273 from nestjs/renovate/amqplib-0.x
chore(deps): update dependency @types/amqplib to v0.5.12
2019-05-28 20:20:41 +02:00
Kamil Mysliwiec
3164eebb11 Merge pull request #2274 from nestjs/renovate/sequelize-4.x
chore(deps): update dependency @types/sequelize to v4.28.2
2019-05-28 20:20:32 +02:00
Kamil Mysliwiec
5f42b03234 Merge pull request #2287 from nestjs/renovate/point-of-view-3.x
fix(deps): update dependency point-of-view to v3.5.0
2019-05-28 20:20:18 +02:00
Kamil Mysliwiec
9b362a067e Merge pull request #2278 from nestjs/renovate/nodemon-1.x
chore(deps): update dependency nodemon to v1.19.1
2019-05-28 20:20:02 +02:00
Kamil Mysliwiec
c386487dae Merge pull request #2279 from nestjs/renovate/sinon-7.x
chore(deps): update dependency @types/sinon to v7.0.12
2019-05-28 20:19:36 +02:00
Kamil Mysliwiec
f64827ed1b Merge pull request #2284 from nestjs/renovate/mqtt-3.x
fix(deps): update dependency mqtt to v3
2019-05-28 20:19:23 +02:00
Kamil Mysliwiec
e8d4888e89 Merge pull request #2288 from nestjs/renovate/core-js-3.x
chore(deps): update dependency core-js to v3.1.3
2019-05-28 20:19:05 +02:00
Kamil Mysliwiec
7c9a548125 Merge pull request #2294 from nestjs/renovate/fast-json-stringify-1.x
fix(deps): update dependency fast-json-stringify to v1.15.3
2019-05-28 20:18:55 +02:00
Kamil Mysliwiec
95bb4cd711 Merge pull request #2296 from nestjs/renovate/cache-manager-2.x
fix(deps): update dependency cache-manager to v2.9.1
2019-05-28 20:18:42 +02:00
Renovate Bot
151f0edbed fix(deps): update dependency cache-manager to v2.9.1 2019-05-28 16:59:33 +00:00
Renovate Bot
885ac139b4 fix(deps): update dependency fast-json-stringify to v1.15.3 2019-05-28 12:16:21 +00:00
Renovate Bot
d78ecb4c59 chore(deps): update dependency core-js to v3.1.3 2019-05-27 13:11:38 +00:00
Renovate Bot
2869253468 fix(deps): update dependency point-of-view to v3.5.0 2019-05-27 12:31:16 +00:00
Renovate Bot
fadc1797fd fix(deps): update dependency mqtt to v3 2019-05-27 08:33:59 +00:00
Renovate Bot
910fb31d04 chore(deps): update dependency @types/sinon to v7.0.12 2019-05-25 21:40:33 +00:00
Renovate Bot
ca91e01426 chore(deps): update dependency nodemon to v1.19.1 2019-05-25 18:41:04 +00:00
Kamil Mysliwiec
f3e3679793 Update package.json 2019-05-25 12:27:53 +02:00
Kamil Mysliwiec
90487cc9a3 Update package.json 2019-05-25 12:25:40 +02:00
Renovate Bot
40ad3e418c fix(deps): update dependency prisma-binding to v2.3.11 2019-05-25 03:49:34 +00:00
Renovate Bot
79076b139e fix(deps): update dependency mongoose to v5.5.11 2019-05-24 23:08:59 +00:00
Renovate Bot
267ee1004c chore(deps): update dependency @types/sequelize to v4.28.2 2019-05-24 21:13:45 +00:00
Renovate Bot
c385e88e2a chore(deps): update dependency @types/amqplib to v0.5.12 2019-05-24 21:06:31 +00:00
Renovate Bot
5e6b10b9c7 fix(deps): update dependency grpc to v1.21.1 2019-05-24 19:55:02 +00:00
Zoltán Reegn
7276451fc9 bugfix(core): Upgrade opencollective dependency
In v0.2.2 it is now possible to suppress the opencollective message
properly with multiple kinds of environment variables.

Fixes #2264
2019-05-24 16:35:24 +02:00
Kamil Myśliwiec
e01111d9e3 chore(): add FUNDING.yml 2019-05-24 11:06:54 +02:00
Kamil Myśliwiec
d85a6ff15c chore(): remove .github funding 2019-05-24 11:06:35 +02:00
Kamil Myśliwiec
fbb6147303 chore(): hotfix 2019-05-24 09:59:42 +02:00
Kamil Myśliwiec
a23b5bd793 Merge branch 'master' of https://github.com/nestjs/nest 2019-05-24 09:59:08 +02:00
Kamil Myśliwiec
2fe8081c68 chore(): add FUNDING.md 2019-05-24 09:58:27 +02:00
Kamil Mysliwiec
b04f1f4cfd Update Bug_report.md 2019-05-24 08:56:14 +02:00
Renovate Bot
a24391fcca fix(deps): update dependency mongodb to v3.2.6 2019-05-24 00:22:26 +00:00
Mateusz
15f11c95a2 Fix: Update gitter URL in CONTRIBUTING.md
Mistake fixed.
2019-05-24 00:05:20 +02:00
Renovate Bot
e866a8f423 chore(deps): update dependency webpack to v4.32.2 2019-05-22 23:20:23 +00:00
Kamil Mysliwiec
09bba36e58 Merge pull request #2245 from BrunnerLivio/feature/issue-templates
chore(): add issue templates
2019-05-22 21:29:24 +02:00
Renovate Bot
322af6494d fix(deps): update dependency fastify-multipart to v1 2019-05-22 18:34:53 +00:00
Livio
17cb7ff2a4 feature(microservices): ClientProxyFactory return GRPC client type
Add overload to the ClientProxyFactory for better type security.
This allows the user to not cast the GRPC client to any
after creating it using the factory.
2019-05-22 18:45:42 +02:00
Livio
f9d70391e1 chore(): Add needs triage label to issue templates
Adds the 'need triage' label automatically
when creating an issue from the
issue templates
2019-05-22 18:42:31 +02:00
Gustavo Perdomo
8d42c0d3d0 add exception factory 2019-05-22 11:33:20 -04:00
Kamil Mysliwiec
8ac98630e1 Merge pull request #2243 from saarw/fix-jwt-deprecation
fix(sample): update sample to avoid deprecated secretOrPrivateKey
2019-05-22 13:35:33 +02:00
william
416f710573 fix(sample): Update sample to avoid deprecated secretOrPrivateKey 2019-05-22 13:27:30 +02:00
Kamil Mysliwiec
fdf3d8942d Merge pull request #2255 from nestjs/renovate/fastify-2.x
fix(deps): update dependency fastify to v2.4.1
2019-05-22 12:26:57 +02:00
Renovate Bot
22a299b195 fix(deps): update dependency fastify to v2.4.1 2019-05-22 10:07:07 +00:00
Michael Yankelev
cd86c5b66b enableImplicitConversion flag added 2019-05-22 11:56:11 +02:00
Kamil Mysliwiec
a144121463 Merge pull request #2231 from nestjs/renovate/core-js-3.x
chore(deps): update dependency core-js to v3.1.2
2019-05-22 11:34:06 +02:00
Kamil Mysliwiec
1bb39c15b9 Merge pull request #2233 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v6.2.4
2019-05-22 11:33:15 +02:00
Kamil Mysliwiec
845a615cf6 Merge pull request #2251 from nestjs/renovate/fastify-2.x
fix(deps): update dependency fastify to v2.4.0
2019-05-22 11:32:50 +02:00
Renovate Bot
7a38d5bdca fix(deps): update nest monorepo to v6.2.4 2019-05-22 09:31:26 +00:00
Kamil Mysliwiec
bbaa1d523c Merge pull request #2242 from nestjs/renovate/class-transformer-0.x
fix(deps): update dependency class-transformer to v0.2.3
2019-05-22 11:27:52 +02:00
Renovate Bot
c1cd3e87d7 fix(deps): update dependency fastify to v2.4.0 2019-05-22 08:55:10 +00:00
Renovate Bot
1b24762cab fix(deps): update dependency class-transformer to v0.2.3 2019-05-22 08:53:40 +00:00
Renovate Bot
e5b80381d7 chore(deps): update dependency core-js to v3.1.2 2019-05-22 08:51:41 +00:00
Kamil Mysliwiec
43cf264026 Merge pull request #2114 from nestjs/renovate/grpc-1.x
fix(deps): update dependency grpc to v1.20.3
2019-05-22 10:36:40 +02:00
Kamil Mysliwiec
06a9b2252e Merge pull request #2234 from nestjs/renovate/webpack-4.x
chore(deps): update dependency webpack to v4.32.1
2019-05-22 10:35:53 +02:00
Kamil Mysliwiec
49cae3abb7 Merge pull request #2241 from nestjs/renovate/mongoose-5.x
fix(deps): update dependency mongoose to v5.5.10
2019-05-22 10:35:42 +02:00
Kamil Mysliwiec
fc1d4f0395 Merge pull request #2247 from nestjs/renovate/amqp-connection-manager-2.x
fix(deps): update dependency amqp-connection-manager to v2.3.2
2019-05-22 10:31:14 +02:00
Renovate Bot
0305a693d7 chore(deps): update dependency webpack to v4.32.1 2019-05-22 07:44:50 +00:00
Kamil Myśliwiec
c687b5bcda chore(@nestjs) publish v6.2.4 release 2019-05-21 23:05:30 +02:00
Kamil Myśliwiec
eca9a486e1 chore(): publish 6.2.4 release 2019-05-21 23:04:37 +02:00
Kamil Myśliwiec
72edae181e Merge branch 'SeWaS-fix-validation-pipe-bug' 2019-05-21 23:04:05 +02:00
Kamil Myśliwiec
e2f93ef226 refactor(): move condition to filter function 2019-05-21 23:03:46 +02:00
Renovate Bot
a5832be647 fix(deps): update dependency amqp-connection-manager to v2.3.2 2019-05-21 19:49:38 +00:00
Livio
418da4f097 chore(): Add issue templates 2019-05-21 17:16:21 +02:00
Renovate Bot
4242531b27 fix(deps): update dependency mongoose to v5.5.10 2019-05-20 18:31:10 +00:00
Sebastian Walter
4b73ca638e bugfix(common) Stripping proto properties works with null values
If an optional property has an allowed null value it is now considered when stripping proto props.
2019-05-20 16:32:21 +02:00
Kamil Myśliwiec
1425635190 chore(@nestjs) publish v6.2.3 release 2019-05-20 10:43:19 +02:00
Kamil Myśliwiec
ded6710d37 Merge branch 'master' of https://github.com/nestjs/nest 2019-05-20 10:42:10 +02:00
Kamil Myśliwiec
b3f51cc9c1 hotfix(): fix validation pipe (strip proto properties) 2019-05-20 10:41:56 +02:00
Kamil Mysliwiec
d7f2e4abbf Merge pull request #2228 from nestjs/renovate/nest-monorepo
fix(deps): update nest monorepo to v6.2.2
2019-05-19 18:25:47 +02:00
Renovate Bot
3b06632a37 fix(deps): update nest monorepo to v6.2.2 2019-05-19 16:12:56 +00:00
Kamil Myśliwiec
f3330223e8 chore(): publish 6.2.2 release 2019-05-19 18:11:10 +02:00
Kamil Myśliwiec
1ce763b167 chore(): publish 6.2.2 release 2019-05-19 18:09:55 +02:00
Renovate Bot
6aff08a643 Update dependency grpc to v1.20.3 2019-05-09 08:01:33 +00: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
Anton Repin
bf17608fd7 Handler added for test GRPC Call for Advamced GRPC protobuf case 2019-04-22 14:16:31 -07:00
Anton Repin
ad7da8f493 GRPC controller definition for advanced proto case updated 2019-04-22 14:14:10 -07:00
Anton Repin
62dc446a60 E2E test added to support advanced GRPC + Protobuf case 2019-04-21 23:59:38 -07:00
Anton Repin
81eaca0193 Controller for advanced GRPC tests added 2019-04-21 23:59:04 -07:00
Anton Repin
8f7aad1a84 Set of namespaced proto files added 2019-04-21 23:58:40 -07:00
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
Kamil Myśliwiec
769d7559d0 test(): add missing unit tests, resolve conflicts 2019-03-31 17:11:50 +02:00
Hossein Sadeghi
f4488781e4 bugfix(common) allow classes as data parameter in createParamDecorator function 2019-03-20 15:44:09 +03:30
Anton Repin
c26bbbb9bc Updated tests for Pattern decorator 2019-03-11 11:13:59 -07:00
Anton Repin
0e9dbee56d GRPC Streaming tests updated with support both Streaming decorators
- RX Streaming test
- Call streaming test
2019-03-10 23:39:08 -07:00
Anton Repin
9f10e08abb Pattern decorator test updated with additional naming 2019-03-10 23:38:11 -07:00
Anton Repin
8dbb31a0b8 Test for Server GRPC updated to handle Streaming cases 2019-03-10 23:37:34 -07:00
Anton Repin
487309c12b GRPC Server now updated with support of both GrpcStream and GrpcStreamCall
- Pattern updated
- Handler selector updated
- Duplex RX dispatch added
- Duplex call dispatch added
2019-03-10 23:36:38 -07:00
Anton Repin
a1d23d6af8 Pattern decorators updated to have new naming and additional decorator
- GrpcStream now renamed to GrpcStreamMethod
- Grpc call passthrough now GrpcStreamCall
2019-03-10 23:31:51 -07:00
Livio
6c5108bf1e feat(@nestjs/core): Add init function on NestApplicationContext to API 2019-03-01 20:16:15 +01:00
Anton Repin
2e7f9cbe2e GRPC Server unit-test updated
Create pattern signature test updated to handle new signature for patterns.
2019-02-17 22:53:03 -08:00
Anton Repin
ac994fdda3 Integration test for GRPC Stream handle updated
- Result calculation updated for Controller
- Test file updated with Test and expectations
- GRPC Raw Stream connection added to test
2019-02-17 19:02:55 -08:00
Anton Repin
cf733999d2 GRPC integration test Proto and Controller updated with streaming definitions to test 2019-02-13 18:26:08 -08:00
Anton Repin
da240312fa Pattern decorator test updated with new Pattern signature 2019-02-13 18:24:23 -08:00
Anton Repin
78cac3a086 GRPC server support for Streaming call handlers added
- createService method updated to differentiate handler depending on type of GRPC method definition
- stream pass-through method added
- explanatory comments added
2019-02-13 13:04:54 -08:00
Anton Repin
5721aab084 GRPC patterns expanded with Streaming annotation
- GRPC Method added with definition of streaming parameter for mapping it to appropriate service
- GRPC Stream annotation added
- Commentary added
2019-02-13 13:02:14 -08:00
Anton Repin
21a6b5e4fd Merge pull request #1 from nestjs/master
Up to date with the latest master release
2019-02-05 21:59:54 -08:00
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
167 changed files with 8358 additions and 6369 deletions

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

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

View File

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

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

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

View File

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

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

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

View File

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

View File

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

View File

@@ -72,6 +72,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.0",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.2.0.tgz",
"integrity": "sha512-0svQuCrG6ofMYgHzk/GzJ+vpIkLq4vZmTeww1qLipggS40IjQ0+NzwEBOTr6TeHVDmsM2YDmIU1DJiaGy2o9Hw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.3.2.tgz",
"integrity": "sha512-4g8hlQ2cCM0ze9K1w+7OYhTVGL6PuC7tXAgFM14MOTeKVAUz2QrJveGNE0hagDTKFagx9FvwF3B7ZSOIohw7aA==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.2.0.tgz",
"integrity": "sha512-K5Wje2unjStkA7AG5sTSD9trx2BEf8asL5xOFT4DwG+ICB04JLebTwqwbQNi3RNZ3buL/pXNXIOOleOgqK7fGw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.3.2.tgz",
"integrity": "sha512-dmHvk/IPlJcDKWZsBF2SMePO0NpkovMUU6VrAX9KzI1Y81foH/gfWzFaBhYX6GydPqVVFrYk23zt8yqvGWAZgA==",
"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,84 @@
}
},
"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"
}
},
"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 +420,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.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-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.6",
"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 +457,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 +471,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.7",
"resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.6.7.tgz",
"integrity": "sha512-qbCQM+8LxXpwPNN5Sdvcb+Sne8zuCORFt25HJtPJRkHlyBUzOd7JA7SEnUn5e2geTiiGoVIU5leh+++C51udTw==",
"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.7",
"body-parser": "^1.18.3",
"cors": "^2.8.4",
"graphql-subscriptions": "^1.0.0",
@@ -447,25 +490,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.6",
"resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.5.6.tgz",
"integrity": "sha512-wJvcPqfm/kiBwY5JZT85t2A4pcHv24xdQIpWMNt1zsnx77lIZqJmhsc22eSUSrlnYqUMXC4XMVgSUfAO4oI9wg=="
},
"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 +611,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 +715,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 +822,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 +834,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 +925,9 @@
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"consola": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.6.1.tgz",
"integrity": "sha512-vt35owQG6OxYDJVaViQ4aFgOK+b98hIvs+R5CWkKgpO8rTPyaYwlMadZ7oZcjnWz1/+u4czDnrcogFr5AtrRug=="
"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 +940,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 +954,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 +1116,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 +1276,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 +1328,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 +1369,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 +1436,19 @@
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
},
"graphql": {
"version": "14.3.0",
"resolved": "https://registry.npmjs.org/graphql/-/graphql-14.3.0.tgz",
"integrity": "sha512-MdfI4v7kSNC3NhB7cF8KNijDsifuWO2XOtzpyququqaclO8wVuChYv+KogexDwgP5sp7nFI9Z6N4QHgoLkfjrg==",
"version": "14.4.1",
"resolved": "https://registry.npmjs.org/graphql/-/graphql-14.4.1.tgz",
"integrity": "sha512-g4HUH26CohlMjaHneXMAtvG3QtO6peJIUTFxrPW4g5LNnXkUuFoBI6Bk1c14Q5kW8+FyjM/tTbePTgpiVB/2hQ==",
"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 +1474,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 +1562,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 +1786,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 +2255,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 +2290,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.10",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.10.tgz",
"integrity": "sha512-V8wj+w2YMNvGuhgl/MA5fmTxgjmVHVoasfIaxMMZJV6Y8Kk+Ydpi1z2whoShDCJ2BuNVoqH/h1hrygnBxkrw/Q=="
}
}
},
@@ -2278,12 +2310,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 +2359,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"
@@ -2673,9 +2719,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"
}
@@ -2712,20 +2758,33 @@
"requires": {
"is-extglob": "^2.1.0"
}
},
"typescript": {
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz",
"integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw=="
}
}
},
"ts-node": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.1.0.tgz",
"integrity": "sha512-34jpuOrxDuf+O6iW1JpgTRDFynUZ1iEqtYruBqh35gICNjN8x+LpVcPAcwzLPi9VU6mdA3ym+x233nZmZp445A==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
},
"dependencies": {
"diff": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
"dev": true
}
}
},
"tslib": {
@@ -2734,9 +2793,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",
@@ -2745,7 +2804,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",
@@ -2763,6 +2822,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",
@@ -2795,9 +2859,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
}
}
@@ -2812,9 +2876,9 @@
}
},
"typescript": {
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz",
"integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw=="
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz",
"integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA=="
},
"unc-path-regex": {
"version": "0.1.2",
@@ -2940,9 +3004,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.0.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.0.1.tgz",
"integrity": "sha512-ILHfMbuqLJvnSgYXLgy4kMntroJpe8hT41dOVWM8bxRuw6TK4mgMp9VJUNsZTEc5Bh+Mbs0DJT4M0N+wBG9l9A==",
"requires": {
"async-limiter": "^1.0.0"
}
@@ -2959,9 +3023,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.0",
"@nestjs/core": "6.2.0",
"@nestjs/graphql": "6.2.1",
"apollo-server-express": "2.5.0",
"graphql": "14.3.0",
"graphql-tools": "4.0.4",
"@nestjs/common": "6.3.2",
"@nestjs/core": "6.3.2",
"@nestjs/graphql": "6.2.4",
"apollo-server-express": "2.6.7",
"graphql": "14.4.1",
"graphql-tools": "4.0.5",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.2",
"subscriptions-transport-ws": "0.9.16",
"typescript": "3.4.5",
"ws": "7.0.0"
"typescript": "3.5.2",
"ws": "7.0.1"
},
"devDependencies": {
"@types/node": "7.10.6",
"ts-node": "8.1.0",
"tslint": "5.16.0"
"ts-node": "8.3.0",
"tslint": "5.18.0"
}
}

View File

@@ -5,58 +5,58 @@
"requires": true,
"dependencies": {
"@nestjs/common": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.2.0.tgz",
"integrity": "sha512-0svQuCrG6ofMYgHzk/GzJ+vpIkLq4vZmTeww1qLipggS40IjQ0+NzwEBOTr6TeHVDmsM2YDmIU1DJiaGy2o9Hw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.3.2.tgz",
"integrity": "sha512-4g8hlQ2cCM0ze9K1w+7OYhTVGL6PuC7tXAgFM14MOTeKVAUz2QrJveGNE0hagDTKFagx9FvwF3B7ZSOIohw7aA==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.2.0.tgz",
"integrity": "sha512-K5Wje2unjStkA7AG5sTSD9trx2BEf8asL5xOFT4DwG+ICB04JLebTwqwbQNi3RNZ3buL/pXNXIOOleOgqK7fGw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.3.2.tgz",
"integrity": "sha512-dmHvk/IPlJcDKWZsBF2SMePO0NpkovMUU6VrAX9KzI1Y81foH/gfWzFaBhYX6GydPqVVFrYk23zt8yqvGWAZgA==",
"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.0",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.2.0.tgz",
"integrity": "sha512-F4DNhF9qfKBL7v2toz4rlgfeuy8dVXslBNj0lFWDDjoANsYN5WYQVW5ygLbRkyb2ldlA/yBwfx/ULSBUHAvjZg==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.3.2.tgz",
"integrity": "sha512-daEzZ4L+BpMmu9KDFUgdU7+HgeVug//qrHlVTrdqCjyNd4vgZFgXrHGNOOFWYdZCwyY2I9qrL+XEv3pz3VeXyA==",
"requires": {
"iterare": "1.1.2",
"iterare": "1.2.0",
"json-socket": "0.3.0",
"optional": "0.1.4"
}
},
"@nestjs/testing": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.2.0.tgz",
"integrity": "sha512-sAdXmZugvhYyp6tze5FdcH6tuIoDI0R8l7nI+PFDXuwxUSvfm8eHOloRbmYRD8ULGfY6OEvmO5uzoz/73IcMMw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.3.2.tgz",
"integrity": "sha512-BlXpA5KWok7AxwDzWn/yaOhqhAYDxUE17e+hanPEUxGkCInQIc750lG/M6ZF6aQNg1llxHquYyVKJLvzhdZqBA==",
"requires": {
"optional": "0.1.4"
}
},
"@nestjs/websockets": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.2.0.tgz",
"integrity": "sha512-WMB97lgbrVy9XZAR5PiXcvGI8rIDA48/qlkuoeK5C64hDiM2F2C29PXidCR0AK+8PDkLTsp6tVJtkzpycQL5dw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.3.2.tgz",
"integrity": "sha512-ZOYbcqeBKMWXqZwBb06XejbNtVu0+X/jwKgL5SYJTs1kmnsCmRvmDzDEeMvx5Ign0cr3tF8SSOW6ysntdnIxXQ==",
"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,26 +134,21 @@
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
}
},
"bourne": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/bourne/-/bourne-1.1.2.tgz",
"integrity": "sha512-b2dgVkTZhkQirNMohgC00rWfpVqEi9y5tKM1k3JvoNx05ODtfQoPPd4js9CYFQoY0IM8LAmnJulEuWv74zjUOg=="
},
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@@ -171,9 +166,9 @@
}
},
"class-transformer": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.2.tgz",
"integrity": "sha512-wRKNNvdrSTOYut0ksO1/PTXFPTscbuGRB5R85FfdUuydGI+nXGPYeAByoifrfHFwadI2G4a7IQ5MXp9gnWNjFQ=="
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.3.tgz",
"integrity": "sha512-qsP+0xoavpOlJHuYsQJsN58HXSl8Jvveo+T37rEvCEeRfMWoytAyR0Ua/YsFgpM6AZYZ/og2PJwArwzJl1aXtQ=="
},
"class-validator": {
"version": "0.9.1",
@@ -226,9 +221,9 @@
"dev": true
},
"consola": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.6.1.tgz",
"integrity": "sha512-vt35owQG6OxYDJVaViQ4aFgOK+b98hIvs+R5CWkKgpO8rTPyaYwlMadZ7oZcjnWz1/+u4czDnrcogFr5AtrRug=="
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.9.0.tgz",
"integrity": "sha512-34Iue+LRcWbndFIfZc5boNizWlsrRjqIBJZTe591vImgbnq7nx2EzlrLtANj9TH2Fxm7puFJBJAOk5BhvZOddQ=="
},
"cookiejar": {
"version": "2.1.2",
@@ -243,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",
@@ -271,9 +266,9 @@
"dev": true
},
"diff": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
"dev": true
},
"es5-ext": {
@@ -306,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"
}
},
@@ -352,9 +347,9 @@
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
},
"fast-json-stringify": {
"version": "1.15.1",
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-1.15.1.tgz",
"integrity": "sha512-2MGfremU4N1lR6J7VpON9FdvaooLrcgqG+VePq3hH+WY3B3fSxz13cVj4QF6D13ipkPvzOG40TPfylivXVzj0g==",
"version": "1.15.3",
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-1.15.3.tgz",
"integrity": "sha512-p+ucnySTbrUQ9M7u8ygFIxrmpG8B+8O4/PvLDdh+RqMMgj/h6OoDb7U2lP+kqg3PDclQBFbSIArRhkorFwZLLg==",
"requires": {
"ajv": "^6.8.1",
"deepmerge": "^3.0.0"
@@ -371,23 +366,23 @@
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"fastify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/fastify/-/fastify-2.3.0.tgz",
"integrity": "sha512-Y8npoe2Ad3sktWTZy+/MiaAnNt0XQ10g6nD19pCkCoJ9KtxRWqNVnHV/JZxWAmxqg1zsVzFJdrkHS5l4pcFruA==",
"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",
"avvio": "^6.1.1",
"bourne": "^1.1.2",
"fast-json-stringify": "^1.15.0",
"find-my-way": "^2.0.0",
"flatstr": "^1.0.9",
"flatstr": "^1.0.12",
"light-my-request": "^3.2.0",
"middie": "^4.0.1",
"pino": "^5.11.1",
"proxy-addr": "^2.0.4",
"readable-stream": "^3.1.1",
"rfdc": "^1.1.2",
"secure-json-parse": "^1.0.0",
"tiny-lru": "^6.0.1"
}
},
@@ -400,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,31 +405,16 @@
}
},
"flatstr": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.9.tgz",
"integrity": "sha512-qFlJnOBWDfIaunF54/lBqNKmXOI0HqNhu+mHkLmbaBXlS71PUd9OjFOdyevHt/aHoHB1+eW7eKHgRKOG5aHSpw=="
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz",
"integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw=="
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "^3.2.6"
},
"dependencies": {
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
}
"debug": "=3.1.0"
}
},
"form-data": {
@@ -480,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",
@@ -490,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",
@@ -505,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"
@@ -581,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",
@@ -590,9 +569,9 @@
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"node-fetch": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.5.0.tgz",
"integrity": "sha512-YuZKluhWGJwCcUu4RlZstdAxr8bFfOVHakc1mplwHkk8J+tqM1Y5yraYvIUpeX8aY7+crCwiELJq7Vl0o0LWXw=="
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
},
"object-hash": {
"version": "1.3.1",
@@ -610,9 +589,9 @@
"integrity": "sha512-ZOtfhPttCrqp2M1PBBH4X13XlvnfhIwD7yCLx+GoGoXRPQyxGOTdQMpIzPSPKXAJT/JQrdfFrgdJOyAzvgpQ9A=="
},
"pino": {
"version": "5.12.2",
"resolved": "https://registry.npmjs.org/pino/-/pino-5.12.2.tgz",
"integrity": "sha512-EunVRDkw/eQzgAudJiZuqzEQ20hDezixLRLrdxUMBzavvt5ot3vep7K8swRvXSgj2bKtbOmoHnrRMtYzRjfITQ==",
"version": "5.12.6",
"resolved": "https://registry.npmjs.org/pino/-/pino-5.12.6.tgz",
"integrity": "sha512-LM5ug2b27uymIIkaBw54ncF+9DSf8S4z1uzw+Y5I94dRu3Z+lFuB13j0kg1InAeyxy+CsLGnWHKy9+zgTreFOg==",
"requires": {
"fast-redact": "^1.4.4",
"fast-safe-stringify": "^2.0.6",
@@ -623,9 +602,9 @@
}
},
"pino-std-serializers": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.4.0.tgz",
"integrity": "sha512-ysT2ylXu1aEec9k8cm/lz7emBcfpdxFWHqvHeGXf1wvfw7TKPMGhLWwS+ciHw6u4ffnmV+pkAMF4MUIZmZZdSg=="
"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",
@@ -659,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",
@@ -684,9 +663,9 @@
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
},
"rfdc": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.2.tgz",
"integrity": "sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA=="
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz",
"integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug=="
},
"rxjs": {
"version": "6.5.2",
@@ -709,15 +688,20 @@
"ret": "~0.2.0"
}
},
"secure-json-parse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-1.0.0.tgz",
"integrity": "sha512-kMg4jXttRQzVyLebIDc+MRxCueJ/zsmHpCn59BRd0mZUCd+V02wNd7/Pds8Nyhv7jfLHo1KkUOzdIF7cRMU4LQ=="
},
"semver-store": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/semver-store/-/semver-store-0.3.0.tgz",
"integrity": "sha512-TcZvGMMy9vodEFSse30lWinkj+JgOBvPn8wRItpQRSayhc+4ssDs335uklkfvQQJgL/WvmHLVj4Ycv2s7QCQMg=="
},
"sonic-boom": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-0.7.3.tgz",
"integrity": "sha512-A9EyoIeLD+g9vMLYQKjNCatJtAKdBQMW03+L8ZWWX/A6hq+srRCwdqHrBD1R8oSMLXov3oHN13dljtZf12q2Ow==",
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-0.7.4.tgz",
"integrity": "sha512-8JRAJg0RxZtFLQMxolwETvWd2JSlH3ZGo/Z4xPxMbpqF14xCgVYPVeFCFOR3zyr3pcfG82QDVj6537Sx5ZWdNw==",
"requires": {
"flatstr": "^1.0.9"
}
@@ -829,13 +813,13 @@
"integrity": "sha512-k/vdHz+bFALjmik0URLWBYNuO0hCABTL5dullbZBXvFDdlL8RrKaeLR6YuHfX+6ZXOLkHw+HpNLCUA7DtLMQmg=="
},
"ts-node": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.1.0.tgz",
"integrity": "sha512-34jpuOrxDuf+O6iW1JpgTRDFynUZ1iEqtYruBqh35gICNjN8x+LpVcPAcwzLPi9VU6mdA3ym+x233nZmZp445A==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
@@ -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.4.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz",
"integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw=="
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz",
"integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA=="
},
"uri-js": {
"version": "4.2.2",

View File

@@ -7,21 +7,21 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.2.0",
"@nestjs/core": "6.2.0",
"@nestjs/microservices": "6.2.0",
"@nestjs/testing": "6.2.0",
"@nestjs/websockets": "6.2.0",
"class-transformer": "0.2.2",
"@nestjs/common": "6.3.2",
"@nestjs/core": "6.3.2",
"@nestjs/microservices": "6.3.2",
"@nestjs/testing": "6.3.2",
"@nestjs/websockets": "6.3.2",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"fastify": "2.3.0",
"fastify": "2.6.0",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.2",
"typescript": "3.4.5"
"typescript": "3.5.2"
},
"devDependencies": {
"@types/node": "7.10.6",
"supertest": "4.0.2",
"ts-node": "8.1.0"
"ts-node": "8.3.0"
}
}

View File

@@ -5,32 +5,32 @@
"requires": true,
"dependencies": {
"@nestjs/common": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.2.0.tgz",
"integrity": "sha512-0svQuCrG6ofMYgHzk/GzJ+vpIkLq4vZmTeww1qLipggS40IjQ0+NzwEBOTr6TeHVDmsM2YDmIU1DJiaGy2o9Hw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.3.2.tgz",
"integrity": "sha512-4g8hlQ2cCM0ze9K1w+7OYhTVGL6PuC7tXAgFM14MOTeKVAUz2QrJveGNE0hagDTKFagx9FvwF3B7ZSOIohw7aA==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.2.0.tgz",
"integrity": "sha512-K5Wje2unjStkA7AG5sTSD9trx2BEf8asL5xOFT4DwG+ICB04JLebTwqwbQNi3RNZ3buL/pXNXIOOleOgqK7fGw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.3.2.tgz",
"integrity": "sha512-dmHvk/IPlJcDKWZsBF2SMePO0NpkovMUU6VrAX9KzI1Y81foH/gfWzFaBhYX6GydPqVVFrYk23zt8yqvGWAZgA==",
"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": {
@@ -94,9 +94,9 @@
}
},
"class-transformer": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.2.tgz",
"integrity": "sha512-wRKNNvdrSTOYut0ksO1/PTXFPTscbuGRB5R85FfdUuydGI+nXGPYeAByoifrfHFwadI2G4a7IQ5MXp9gnWNjFQ=="
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.3.tgz",
"integrity": "sha512-qsP+0xoavpOlJHuYsQJsN58HXSl8Jvveo+T37rEvCEeRfMWoytAyR0Ua/YsFgpM6AZYZ/og2PJwArwzJl1aXtQ=="
},
"class-validator": {
"version": "0.9.1",
@@ -149,9 +149,9 @@
"dev": true
},
"consola": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.6.1.tgz",
"integrity": "sha512-vt35owQG6OxYDJVaViQ4aFgOK+b98hIvs+R5CWkKgpO8rTPyaYwlMadZ7oZcjnWz1/+u4czDnrcogFr5AtrRug=="
"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"
}
@@ -188,9 +190,9 @@
"dev": true
},
"diff": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
"dev": true
},
"es5-ext": {
@@ -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",
@@ -381,9 +399,9 @@
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"node-fetch": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.5.0.tgz",
"integrity": "sha512-YuZKluhWGJwCcUu4RlZstdAxr8bFfOVHakc1mplwHkk8J+tqM1Y5yraYvIUpeX8aY7+crCwiELJq7Vl0o0LWXw=="
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
},
"object-hash": {
"version": "1.3.1",
@@ -520,13 +538,13 @@
}
},
"ts-node": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.1.0.tgz",
"integrity": "sha512-34jpuOrxDuf+O6iW1JpgTRDFynUZ1iEqtYruBqh35gICNjN8x+LpVcPAcwzLPi9VU6mdA3ym+x233nZmZp445A==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
@@ -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.4.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz",
"integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw=="
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz",
"integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA=="
},
"util-deprecate": {
"version": "1.0.2",

View File

@@ -7,17 +7,17 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.2.0",
"@nestjs/core": "6.2.0",
"class-transformer": "0.2.2",
"@nestjs/common": "6.3.2",
"@nestjs/core": "6.3.2",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.2",
"typescript": "3.4.5"
"typescript": "3.5.2"
},
"devDependencies": {
"@types/node": "7.10.6",
"supertest": "4.0.2",
"ts-node": "8.1.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.0",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.2.0.tgz",
"integrity": "sha512-0svQuCrG6ofMYgHzk/GzJ+vpIkLq4vZmTeww1qLipggS40IjQ0+NzwEBOTr6TeHVDmsM2YDmIU1DJiaGy2o9Hw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.3.2.tgz",
"integrity": "sha512-4g8hlQ2cCM0ze9K1w+7OYhTVGL6PuC7tXAgFM14MOTeKVAUz2QrJveGNE0hagDTKFagx9FvwF3B7ZSOIohw7aA==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.2.0.tgz",
"integrity": "sha512-K5Wje2unjStkA7AG5sTSD9trx2BEf8asL5xOFT4DwG+ICB04JLebTwqwbQNi3RNZ3buL/pXNXIOOleOgqK7fGw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.3.2.tgz",
"integrity": "sha512-dmHvk/IPlJcDKWZsBF2SMePO0NpkovMUU6VrAX9KzI1Y81foH/gfWzFaBhYX6GydPqVVFrYk23zt8yqvGWAZgA==",
"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.0",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.2.0.tgz",
"integrity": "sha512-F4DNhF9qfKBL7v2toz4rlgfeuy8dVXslBNj0lFWDDjoANsYN5WYQVW5ygLbRkyb2ldlA/yBwfx/ULSBUHAvjZg==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.3.2.tgz",
"integrity": "sha512-daEzZ4L+BpMmu9KDFUgdU7+HgeVug//qrHlVTrdqCjyNd4vgZFgXrHGNOOFWYdZCwyY2I9qrL+XEv3pz3VeXyA==",
"requires": {
"iterare": "1.1.2",
"iterare": "1.2.0",
"json-socket": "0.3.0",
"optional": "0.1.4"
}
},
"@nestjs/testing": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.2.0.tgz",
"integrity": "sha512-sAdXmZugvhYyp6tze5FdcH6tuIoDI0R8l7nI+PFDXuwxUSvfm8eHOloRbmYRD8ULGfY6OEvmO5uzoz/73IcMMw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.3.2.tgz",
"integrity": "sha512-BlXpA5KWok7AxwDzWn/yaOhqhAYDxUE17e+hanPEUxGkCInQIc750lG/M6ZF6aQNg1llxHquYyVKJLvzhdZqBA==",
"requires": {
"optional": "0.1.4"
}
},
"@nestjs/websockets": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.2.0.tgz",
"integrity": "sha512-WMB97lgbrVy9XZAR5PiXcvGI8rIDA48/qlkuoeK5C64hDiM2F2C29PXidCR0AK+8PDkLTsp6tVJtkzpycQL5dw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.3.2.tgz",
"integrity": "sha512-ZOYbcqeBKMWXqZwBb06XejbNtVu0+X/jwKgL5SYJTs1kmnsCmRvmDzDEeMvx5Ign0cr3tF8SSOW6ysntdnIxXQ==",
"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": {
@@ -120,9 +120,9 @@
}
},
"class-transformer": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.2.tgz",
"integrity": "sha512-wRKNNvdrSTOYut0ksO1/PTXFPTscbuGRB5R85FfdUuydGI+nXGPYeAByoifrfHFwadI2G4a7IQ5MXp9gnWNjFQ=="
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.3.tgz",
"integrity": "sha512-qsP+0xoavpOlJHuYsQJsN58HXSl8Jvveo+T37rEvCEeRfMWoytAyR0Ua/YsFgpM6AZYZ/og2PJwArwzJl1aXtQ=="
},
"class-validator": {
"version": "0.9.1",
@@ -175,9 +175,9 @@
"dev": true
},
"consola": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.6.1.tgz",
"integrity": "sha512-vt35owQG6OxYDJVaViQ4aFgOK+b98hIvs+R5CWkKgpO8rTPyaYwlMadZ7oZcjnWz1/+u4czDnrcogFr5AtrRug=="
"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"
}
@@ -214,9 +216,9 @@
"dev": true
},
"diff": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
"dev": true
},
"es5-ext": {
@@ -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",
@@ -412,9 +430,9 @@
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"node-fetch": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.5.0.tgz",
"integrity": "sha512-YuZKluhWGJwCcUu4RlZstdAxr8bFfOVHakc1mplwHkk8J+tqM1Y5yraYvIUpeX8aY7+crCwiELJq7Vl0o0LWXw=="
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
},
"object-hash": {
"version": "1.3.1",
@@ -551,13 +569,13 @@
}
},
"ts-node": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.1.0.tgz",
"integrity": "sha512-34jpuOrxDuf+O6iW1JpgTRDFynUZ1iEqtYruBqh35gICNjN8x+LpVcPAcwzLPi9VU6mdA3ym+x233nZmZp445A==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
@@ -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.4.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz",
"integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw=="
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz",
"integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA=="
},
"util-deprecate": {
"version": "1.0.2",

View File

@@ -7,20 +7,20 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.2.0",
"@nestjs/core": "6.2.0",
"@nestjs/microservices": "6.2.0",
"@nestjs/testing": "6.2.0",
"@nestjs/websockets": "6.2.0",
"class-transformer": "0.2.2",
"@nestjs/common": "6.3.2",
"@nestjs/core": "6.3.2",
"@nestjs/microservices": "6.3.2",
"@nestjs/testing": "6.3.2",
"@nestjs/websockets": "6.3.2",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.2",
"typescript": "3.4.5"
"typescript": "3.5.2"
},
"devDependencies": {
"@types/node": "7.10.6",
"supertest": "4.0.2",
"ts-node": "8.1.0"
"ts-node": "8.3.0"
}
}

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -7,21 +7,22 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.2.0",
"@nestjs/core": "6.2.0",
"@nestjs/microservices": "6.2.0",
"@nestjs/testing": "6.2.0",
"@nestjs/websockets": "6.2.0",
"amqp-connection-manager": "2.3.1",
"class-transformer": "0.2.2",
"@nestjs/common": "6.3.2",
"@nestjs/core": "6.3.2",
"@nestjs/microservices": "6.3.2",
"@nestjs/platform-express": "6.3.2",
"@nestjs/testing": "6.3.2",
"@nestjs/websockets": "6.3.2",
"amqp-connection-manager": "2.3.3",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.2",
"typescript": "3.4.5"
"typescript": "3.5.2"
},
"devDependencies": {
"@types/node": "7.10.6",
"supertest": "4.0.2",
"ts-node": "8.1.0"
"ts-node": "8.3.0"
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -25,23 +25,23 @@
}
},
"@nestjs/common": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.2.0.tgz",
"integrity": "sha512-0svQuCrG6ofMYgHzk/GzJ+vpIkLq4vZmTeww1qLipggS40IjQ0+NzwEBOTr6TeHVDmsM2YDmIU1DJiaGy2o9Hw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.3.2.tgz",
"integrity": "sha512-4g8hlQ2cCM0ze9K1w+7OYhTVGL6PuC7tXAgFM14MOTeKVAUz2QrJveGNE0hagDTKFagx9FvwF3B7ZSOIohw7aA==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.2.0.tgz",
"integrity": "sha512-K5Wje2unjStkA7AG5sTSD9trx2BEf8asL5xOFT4DwG+ICB04JLebTwqwbQNi3RNZ3buL/pXNXIOOleOgqK7fGw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.3.2.tgz",
"integrity": "sha512-dmHvk/IPlJcDKWZsBF2SMePO0NpkovMUU6VrAX9KzI1Y81foH/gfWzFaBhYX6GydPqVVFrYk23zt8yqvGWAZgA==",
"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.26",
"resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.1.26.tgz",
"integrity": "sha512-i7+l95IbqnGLRW+AJ6F2nzqosLUgU022lDuoHhbQquMV7tgek0vNUg9RwC2Fn7ImBSQSFdCWeU394ciPEwSeaQ==",
"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.1",
"resolved": "https://registry.npmjs.org/@types/mongoose/-/mongoose-5.5.1.tgz",
"integrity": "sha512-2F6zAhM7zmZunQQ6evPUlonkwaSM7pAUR7NPS9w4lz4wI+LhXPCcHLJq3L6lw6OvkfJH3dvZo0yQWNSe3iEZBg==",
"version": "5.5.6",
"resolved": "https://registry.npmjs.org/@types/mongoose/-/mongoose-5.5.6.tgz",
"integrity": "sha512-Duco8iiwOEGB756eIyafsrFbsAxjXQPkb/nplZtbxGOhfmsA90rXjO/GbDsBYbUz5nkGOCRHuNfxOJzoVAMHMg==",
"dev": true,
"requires": {
"@types/mongodb": "*",
@@ -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.1",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.6.1.tgz",
"integrity": "sha512-vt35owQG6OxYDJVaViQ4aFgOK+b98hIvs+R5CWkKgpO8rTPyaYwlMadZ7oZcjnWz1/+u4czDnrcogFr5AtrRug=="
"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.4",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.2.4.tgz",
"integrity": "sha512-tjuwdRb89oyCamBG9lWkb7Sf4L/XJ0hsTC22NkbECl3j2X8n+rM+ZlK3dyIPdaJXdc4FOKIRd9dodVJgCtsYMA==",
"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.4",
"mongodb-core": "3.2.7",
"safe-buffer": "^5.1.2"
}
},
"mongodb-core": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.2.4.tgz",
"integrity": "sha512-Ea/fjVntuj0nhLPuDPj54Kce+w4Ee6b1oSM2EvNB4OdwXJ5WIEh79st9/FRZVKwGnc2oB19P1SMSC1noOBXUCQ==",
"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.9",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.5.9.tgz",
"integrity": "sha512-0FQ9pJS9m0GpPVv6aUNfyhjW+VMKlX/VgnfMkk+sK50shjtO3uG3xweoZrdXuANBEJ9hGH63mivi4301DItjUg==",
"version": "5.6.2",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.6.2.tgz",
"integrity": "sha512-s2FQn/XTlM/yeYxqNPGU8khSA1nPhGiESO7iLdFf8Ntn6lEwgO9KKOIGkRKPk5s+peAOwO34ex6NPX8EWtKgFA==",
"requires": {
"async": "2.6.2",
"bson": "~1.1.1",
"kareem": "2.3.0",
"mongodb": "3.2.4",
"mongodb-core": "3.2.4",
"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",
@@ -563,9 +556,9 @@
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"node-fetch": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.5.0.tgz",
"integrity": "sha512-YuZKluhWGJwCcUu4RlZstdAxr8bFfOVHakc1mplwHkk8J+tqM1Y5yraYvIUpeX8aY7+crCwiELJq7Vl0o0LWXw=="
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
},
"object-hash": {
"version": "1.3.1",
@@ -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,16 +710,24 @@
}
},
"ts-node": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.1.0.tgz",
"integrity": "sha512-34jpuOrxDuf+O6iW1JpgTRDFynUZ1iEqtYruBqh35gICNjN8x+LpVcPAcwzLPi9VU6mdA3ym+x233nZmZp445A==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
},
"dependencies": {
"diff": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
"dev": true
}
}
},
"tslib": {
@@ -735,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",
@@ -746,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",
@@ -764,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.4.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz",
"integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw=="
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz",
"integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA=="
},
"uuid": {
"version": "3.3.2",

View File

@@ -9,18 +9,18 @@
"start:prod": "node dist/main.js"
},
"dependencies": {
"@nestjs/common": "6.2.0",
"@nestjs/core": "6.2.0",
"@nestjs/common": "6.3.2",
"@nestjs/core": "6.3.2",
"@nestjs/mongoose": "6.1.2",
"mongoose": "5.5.9",
"mongoose": "5.6.2",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.2",
"typescript": "3.4.5"
"typescript": "3.5.2"
},
"devDependencies": {
"@types/mongoose": "5.5.1",
"@types/mongoose": "5.5.6",
"@types/node": "7.10.6",
"ts-node": "8.1.0",
"tslint": "5.16.0"
"ts-node": "8.3.0",
"tslint": "5.18.0"
}
}

View File

@@ -5,58 +5,58 @@
"requires": true,
"dependencies": {
"@nestjs/common": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.2.0.tgz",
"integrity": "sha512-0svQuCrG6ofMYgHzk/GzJ+vpIkLq4vZmTeww1qLipggS40IjQ0+NzwEBOTr6TeHVDmsM2YDmIU1DJiaGy2o9Hw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.3.2.tgz",
"integrity": "sha512-4g8hlQ2cCM0ze9K1w+7OYhTVGL6PuC7tXAgFM14MOTeKVAUz2QrJveGNE0hagDTKFagx9FvwF3B7ZSOIohw7aA==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.2.0.tgz",
"integrity": "sha512-K5Wje2unjStkA7AG5sTSD9trx2BEf8asL5xOFT4DwG+ICB04JLebTwqwbQNi3RNZ3buL/pXNXIOOleOgqK7fGw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.3.2.tgz",
"integrity": "sha512-dmHvk/IPlJcDKWZsBF2SMePO0NpkovMUU6VrAX9KzI1Y81foH/gfWzFaBhYX6GydPqVVFrYk23zt8yqvGWAZgA==",
"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.0",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.2.0.tgz",
"integrity": "sha512-F4DNhF9qfKBL7v2toz4rlgfeuy8dVXslBNj0lFWDDjoANsYN5WYQVW5ygLbRkyb2ldlA/yBwfx/ULSBUHAvjZg==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.3.2.tgz",
"integrity": "sha512-daEzZ4L+BpMmu9KDFUgdU7+HgeVug//qrHlVTrdqCjyNd4vgZFgXrHGNOOFWYdZCwyY2I9qrL+XEv3pz3VeXyA==",
"requires": {
"iterare": "1.1.2",
"iterare": "1.2.0",
"json-socket": "0.3.0",
"optional": "0.1.4"
}
},
"@nestjs/testing": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.2.0.tgz",
"integrity": "sha512-sAdXmZugvhYyp6tze5FdcH6tuIoDI0R8l7nI+PFDXuwxUSvfm8eHOloRbmYRD8ULGfY6OEvmO5uzoz/73IcMMw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.3.2.tgz",
"integrity": "sha512-BlXpA5KWok7AxwDzWn/yaOhqhAYDxUE17e+hanPEUxGkCInQIc750lG/M6ZF6aQNg1llxHquYyVKJLvzhdZqBA==",
"requires": {
"optional": "0.1.4"
}
},
"@nestjs/websockets": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.2.0.tgz",
"integrity": "sha512-WMB97lgbrVy9XZAR5PiXcvGI8rIDA48/qlkuoeK5C64hDiM2F2C29PXidCR0AK+8PDkLTsp6tVJtkzpycQL5dw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.3.2.tgz",
"integrity": "sha512-ZOYbcqeBKMWXqZwBb06XejbNtVu0+X/jwKgL5SYJTs1kmnsCmRvmDzDEeMvx5Ign0cr3tF8SSOW6ysntdnIxXQ==",
"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,26 +134,21 @@
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "^1.3.0",
"is-buffer": "^1.1.5"
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
}
},
"bourne": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/bourne/-/bourne-1.1.2.tgz",
"integrity": "sha512-b2dgVkTZhkQirNMohgC00rWfpVqEi9y5tKM1k3JvoNx05ODtfQoPPd4js9CYFQoY0IM8LAmnJulEuWv74zjUOg=="
},
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@@ -171,9 +166,9 @@
}
},
"class-transformer": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.2.tgz",
"integrity": "sha512-wRKNNvdrSTOYut0ksO1/PTXFPTscbuGRB5R85FfdUuydGI+nXGPYeAByoifrfHFwadI2G4a7IQ5MXp9gnWNjFQ=="
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.3.tgz",
"integrity": "sha512-qsP+0xoavpOlJHuYsQJsN58HXSl8Jvveo+T37rEvCEeRfMWoytAyR0Ua/YsFgpM6AZYZ/og2PJwArwzJl1aXtQ=="
},
"class-validator": {
"version": "0.9.1",
@@ -226,9 +221,9 @@
"dev": true
},
"consola": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.6.1.tgz",
"integrity": "sha512-vt35owQG6OxYDJVaViQ4aFgOK+b98hIvs+R5CWkKgpO8rTPyaYwlMadZ7oZcjnWz1/+u4czDnrcogFr5AtrRug=="
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.9.0.tgz",
"integrity": "sha512-34Iue+LRcWbndFIfZc5boNizWlsrRjqIBJZTe591vImgbnq7nx2EzlrLtANj9TH2Fxm7puFJBJAOk5BhvZOddQ=="
},
"cookiejar": {
"version": "2.1.2",
@@ -243,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",
@@ -271,9 +266,9 @@
"dev": true
},
"diff": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
"dev": true
},
"es5-ext": {
@@ -306,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"
}
},
@@ -352,9 +347,9 @@
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
},
"fast-json-stringify": {
"version": "1.15.1",
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-1.15.1.tgz",
"integrity": "sha512-2MGfremU4N1lR6J7VpON9FdvaooLrcgqG+VePq3hH+WY3B3fSxz13cVj4QF6D13ipkPvzOG40TPfylivXVzj0g==",
"version": "1.15.3",
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-1.15.3.tgz",
"integrity": "sha512-p+ucnySTbrUQ9M7u8ygFIxrmpG8B+8O4/PvLDdh+RqMMgj/h6OoDb7U2lP+kqg3PDclQBFbSIArRhkorFwZLLg==",
"requires": {
"ajv": "^6.8.1",
"deepmerge": "^3.0.0"
@@ -371,23 +366,23 @@
"integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"fastify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/fastify/-/fastify-2.3.0.tgz",
"integrity": "sha512-Y8npoe2Ad3sktWTZy+/MiaAnNt0XQ10g6nD19pCkCoJ9KtxRWqNVnHV/JZxWAmxqg1zsVzFJdrkHS5l4pcFruA==",
"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",
"avvio": "^6.1.1",
"bourne": "^1.1.2",
"fast-json-stringify": "^1.15.0",
"find-my-way": "^2.0.0",
"flatstr": "^1.0.9",
"flatstr": "^1.0.12",
"light-my-request": "^3.2.0",
"middie": "^4.0.1",
"pino": "^5.11.1",
"proxy-addr": "^2.0.4",
"readable-stream": "^3.1.1",
"rfdc": "^1.1.2",
"secure-json-parse": "^1.0.0",
"tiny-lru": "^6.0.1"
}
},
@@ -400,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,31 +405,16 @@
}
},
"flatstr": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.9.tgz",
"integrity": "sha512-qFlJnOBWDfIaunF54/lBqNKmXOI0HqNhu+mHkLmbaBXlS71PUd9OjFOdyevHt/aHoHB1+eW7eKHgRKOG5aHSpw=="
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz",
"integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw=="
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
"integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "^3.2.6"
},
"dependencies": {
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
}
"debug": "=3.1.0"
}
},
"form-data": {
@@ -480,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",
@@ -490,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",
@@ -505,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"
@@ -581,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",
@@ -590,9 +569,9 @@
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"node-fetch": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.5.0.tgz",
"integrity": "sha512-YuZKluhWGJwCcUu4RlZstdAxr8bFfOVHakc1mplwHkk8J+tqM1Y5yraYvIUpeX8aY7+crCwiELJq7Vl0o0LWXw=="
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
},
"object-hash": {
"version": "1.3.1",
@@ -610,9 +589,9 @@
"integrity": "sha512-ZOtfhPttCrqp2M1PBBH4X13XlvnfhIwD7yCLx+GoGoXRPQyxGOTdQMpIzPSPKXAJT/JQrdfFrgdJOyAzvgpQ9A=="
},
"pino": {
"version": "5.12.2",
"resolved": "https://registry.npmjs.org/pino/-/pino-5.12.2.tgz",
"integrity": "sha512-EunVRDkw/eQzgAudJiZuqzEQ20hDezixLRLrdxUMBzavvt5ot3vep7K8swRvXSgj2bKtbOmoHnrRMtYzRjfITQ==",
"version": "5.12.6",
"resolved": "https://registry.npmjs.org/pino/-/pino-5.12.6.tgz",
"integrity": "sha512-LM5ug2b27uymIIkaBw54ncF+9DSf8S4z1uzw+Y5I94dRu3Z+lFuB13j0kg1InAeyxy+CsLGnWHKy9+zgTreFOg==",
"requires": {
"fast-redact": "^1.4.4",
"fast-safe-stringify": "^2.0.6",
@@ -623,9 +602,9 @@
}
},
"pino-std-serializers": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.4.0.tgz",
"integrity": "sha512-ysT2ylXu1aEec9k8cm/lz7emBcfpdxFWHqvHeGXf1wvfw7TKPMGhLWwS+ciHw6u4ffnmV+pkAMF4MUIZmZZdSg=="
"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",
@@ -659,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",
@@ -684,9 +663,9 @@
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
},
"rfdc": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.2.tgz",
"integrity": "sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA=="
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz",
"integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug=="
},
"rxjs": {
"version": "6.5.2",
@@ -709,15 +688,20 @@
"ret": "~0.2.0"
}
},
"secure-json-parse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-1.0.0.tgz",
"integrity": "sha512-kMg4jXttRQzVyLebIDc+MRxCueJ/zsmHpCn59BRd0mZUCd+V02wNd7/Pds8Nyhv7jfLHo1KkUOzdIF7cRMU4LQ=="
},
"semver-store": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/semver-store/-/semver-store-0.3.0.tgz",
"integrity": "sha512-TcZvGMMy9vodEFSse30lWinkj+JgOBvPn8wRItpQRSayhc+4ssDs335uklkfvQQJgL/WvmHLVj4Ycv2s7QCQMg=="
},
"sonic-boom": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-0.7.3.tgz",
"integrity": "sha512-A9EyoIeLD+g9vMLYQKjNCatJtAKdBQMW03+L8ZWWX/A6hq+srRCwdqHrBD1R8oSMLXov3oHN13dljtZf12q2Ow==",
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-0.7.4.tgz",
"integrity": "sha512-8JRAJg0RxZtFLQMxolwETvWd2JSlH3ZGo/Z4xPxMbpqF14xCgVYPVeFCFOR3zyr3pcfG82QDVj6537Sx5ZWdNw==",
"requires": {
"flatstr": "^1.0.9"
}
@@ -829,13 +813,13 @@
"integrity": "sha512-k/vdHz+bFALjmik0URLWBYNuO0hCABTL5dullbZBXvFDdlL8RrKaeLR6YuHfX+6ZXOLkHw+HpNLCUA7DtLMQmg=="
},
"ts-node": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.1.0.tgz",
"integrity": "sha512-34jpuOrxDuf+O6iW1JpgTRDFynUZ1iEqtYruBqh35gICNjN8x+LpVcPAcwzLPi9VU6mdA3ym+x233nZmZp445A==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
@@ -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.4.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz",
"integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw=="
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz",
"integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA=="
},
"uri-js": {
"version": "4.2.2",

View File

@@ -7,21 +7,21 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.2.0",
"@nestjs/core": "6.2.0",
"@nestjs/microservices": "6.2.0",
"@nestjs/testing": "6.2.0",
"@nestjs/websockets": "6.2.0",
"class-transformer": "0.2.2",
"@nestjs/common": "6.3.2",
"@nestjs/core": "6.3.2",
"@nestjs/microservices": "6.3.2",
"@nestjs/testing": "6.3.2",
"@nestjs/websockets": "6.3.2",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"fastify": "2.3.0",
"fastify": "2.6.0",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.2",
"typescript": "3.4.5"
"typescript": "3.5.2"
},
"devDependencies": {
"@types/node": "7.10.6",
"supertest": "4.0.2",
"ts-node": "8.1.0"
"ts-node": "8.3.0"
}
}

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.0",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.2.0.tgz",
"integrity": "sha512-0svQuCrG6ofMYgHzk/GzJ+vpIkLq4vZmTeww1qLipggS40IjQ0+NzwEBOTr6TeHVDmsM2YDmIU1DJiaGy2o9Hw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.3.2.tgz",
"integrity": "sha512-4g8hlQ2cCM0ze9K1w+7OYhTVGL6PuC7tXAgFM14MOTeKVAUz2QrJveGNE0hagDTKFagx9FvwF3B7ZSOIohw7aA==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.2.0.tgz",
"integrity": "sha512-K5Wje2unjStkA7AG5sTSD9trx2BEf8asL5xOFT4DwG+ICB04JLebTwqwbQNi3RNZ3buL/pXNXIOOleOgqK7fGw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.3.2.tgz",
"integrity": "sha512-dmHvk/IPlJcDKWZsBF2SMePO0NpkovMUU6VrAX9KzI1Y81foH/gfWzFaBhYX6GydPqVVFrYk23zt8yqvGWAZgA==",
"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,84 @@
}
},
"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"
}
},
"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 +417,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.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-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.6",
"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 +454,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 +468,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.7",
"resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.6.7.tgz",
"integrity": "sha512-qbCQM+8LxXpwPNN5Sdvcb+Sne8zuCORFt25HJtPJRkHlyBUzOd7JA7SEnUn5e2geTiiGoVIU5leh+++C51udTw==",
"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.7",
"body-parser": "^1.18.3",
"cors": "^2.8.4",
"graphql-subscriptions": "^1.0.0",
@@ -444,25 +487,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.6",
"resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.5.6.tgz",
"integrity": "sha512-wJvcPqfm/kiBwY5JZT85t2A4pcHv24xdQIpWMNt1zsnx77lIZqJmhsc22eSUSrlnYqUMXC4XMVgSUfAO4oI9wg=="
},
"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 +608,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 +712,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 +819,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,13 +831,13 @@
"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": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.2.tgz",
"integrity": "sha512-wRKNNvdrSTOYut0ksO1/PTXFPTscbuGRB5R85FfdUuydGI+nXGPYeAByoifrfHFwadI2G4a7IQ5MXp9gnWNjFQ=="
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.3.tgz",
"integrity": "sha512-qsP+0xoavpOlJHuYsQJsN58HXSl8Jvveo+T37rEvCEeRfMWoytAyR0Ua/YsFgpM6AZYZ/og2PJwArwzJl1aXtQ=="
},
"class-utils": {
"version": "0.3.6",
@@ -851,9 +926,9 @@
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"consola": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.6.1.tgz",
"integrity": "sha512-vt35owQG6OxYDJVaViQ4aFgOK+b98hIvs+R5CWkKgpO8rTPyaYwlMadZ7oZcjnWz1/+u4czDnrcogFr5AtrRug=="
"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 +941,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 +955,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 +1117,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 +1277,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 +1329,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 +1370,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 +1436,19 @@
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
},
"graphql": {
"version": "14.3.0",
"resolved": "https://registry.npmjs.org/graphql/-/graphql-14.3.0.tgz",
"integrity": "sha512-MdfI4v7kSNC3NhB7cF8KNijDsifuWO2XOtzpyququqaclO8wVuChYv+KogexDwgP5sp7nFI9Z6N4QHgoLkfjrg==",
"version": "14.4.1",
"resolved": "https://registry.npmjs.org/graphql/-/graphql-14.4.1.tgz",
"integrity": "sha512-g4HUH26CohlMjaHneXMAtvG3QtO6peJIUTFxrPW4g5LNnXkUuFoBI6Bk1c14Q5kW8+FyjM/tTbePTgpiVB/2hQ==",
"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 +1473,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 +1561,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 +1785,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 +2253,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 +2288,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.10",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.10.tgz",
"integrity": "sha512-V8wj+w2YMNvGuhgl/MA5fmTxgjmVHVoasfIaxMMZJV6Y8Kk+Ydpi1z2whoShDCJ2BuNVoqH/h1hrygnBxkrw/Q=="
}
}
},
@@ -2276,12 +2308,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 +2357,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"
@@ -2361,9 +2407,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 +2717,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"
}
@@ -2710,20 +2756,33 @@
"requires": {
"is-extglob": "^2.1.0"
}
},
"typescript": {
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz",
"integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw=="
}
}
},
"ts-node": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.1.0.tgz",
"integrity": "sha512-34jpuOrxDuf+O6iW1JpgTRDFynUZ1iEqtYruBqh35gICNjN8x+LpVcPAcwzLPi9VU6mdA3ym+x233nZmZp445A==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
},
"dependencies": {
"diff": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
"dev": true
}
}
},
"tslib": {
@@ -2732,9 +2791,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",
@@ -2743,7 +2802,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",
@@ -2761,6 +2820,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",
@@ -2807,9 +2871,9 @@
}
},
"typescript": {
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz",
"integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw=="
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz",
"integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA=="
},
"unc-path-regex": {
"version": "0.1.2",
@@ -2934,9 +2998,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.0.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.0.1.tgz",
"integrity": "sha512-ILHfMbuqLJvnSgYXLgy4kMntroJpe8hT41dOVWM8bxRuw6TK4mgMp9VJUNsZTEc5Bh+Mbs0DJT4M0N+wBG9l9A==",
"requires": {
"async-limiter": "^1.0.0"
}
@@ -2953,9 +3017,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.0",
"@nestjs/core": "6.2.0",
"@nestjs/graphql": "6.2.1",
"apollo-server-express": "2.5.0",
"class-transformer": "0.2.2",
"@nestjs/common": "6.3.2",
"@nestjs/core": "6.3.2",
"@nestjs/graphql": "6.2.4",
"apollo-server-express": "2.6.7",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"graphql": "14.3.0",
"graphql-tools": "4.0.4",
"graphql": "14.4.1",
"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.4.5",
"ws": "7.0.0"
"typescript": "3.5.2",
"ws": "7.0.1"
},
"devDependencies": {
"@types/node": "7.10.6",
"ts-node": "8.1.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.0",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.2.0.tgz",
"integrity": "sha512-0svQuCrG6ofMYgHzk/GzJ+vpIkLq4vZmTeww1qLipggS40IjQ0+NzwEBOTr6TeHVDmsM2YDmIU1DJiaGy2o9Hw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.3.2.tgz",
"integrity": "sha512-4g8hlQ2cCM0ze9K1w+7OYhTVGL6PuC7tXAgFM14MOTeKVAUz2QrJveGNE0hagDTKFagx9FvwF3B7ZSOIohw7aA==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.2.0.tgz",
"integrity": "sha512-K5Wje2unjStkA7AG5sTSD9trx2BEf8asL5xOFT4DwG+ICB04JLebTwqwbQNi3RNZ3buL/pXNXIOOleOgqK7fGw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.3.2.tgz",
"integrity": "sha512-dmHvk/IPlJcDKWZsBF2SMePO0NpkovMUU6VrAX9KzI1Y81foH/gfWzFaBhYX6GydPqVVFrYk23zt8yqvGWAZgA==",
"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.1",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.6.1.tgz",
"integrity": "sha512-vt35owQG6OxYDJVaViQ4aFgOK+b98hIvs+R5CWkKgpO8rTPyaYwlMadZ7oZcjnWz1/+u4czDnrcogFr5AtrRug=="
"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",
@@ -722,9 +700,9 @@
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
},
"node-fetch": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.5.0.tgz",
"integrity": "sha512-YuZKluhWGJwCcUu4RlZstdAxr8bFfOVHakc1mplwHkk8J+tqM1Y5yraYvIUpeX8aY7+crCwiELJq7Vl0o0LWXw=="
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
},
"npm-run-path": {
"version": "2.0.2",
@@ -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,16 +1001,24 @@
}
},
"ts-node": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.1.0.tgz",
"integrity": "sha512-34jpuOrxDuf+O6iW1JpgTRDFynUZ1iEqtYruBqh35gICNjN8x+LpVcPAcwzLPi9VU6mdA3ym+x233nZmZp445A==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
},
"dependencies": {
"diff": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
"dev": true
}
}
},
"tslib": {
@@ -1050,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",
@@ -1061,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",
@@ -1079,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",
@@ -1113,9 +1095,9 @@
}
},
"typescript": {
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz",
"integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw=="
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz",
"integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA=="
},
"util-deprecate": {
"version": "1.0.2",
@@ -1141,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": {
@@ -1202,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",
@@ -1259,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",
@@ -1273,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.0",
"@nestjs/core": "6.2.0",
"@nestjs/typeorm": "6.1.1",
"@nestjs/common": "6.3.2",
"@nestjs/core": "6.3.2",
"@nestjs/typeorm": "6.1.2",
"mysql": "2.17.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.2",
"typeorm": "0.2.17",
"typescript": "3.4.5"
"typeorm": "0.2.18",
"typescript": "3.5.2"
},
"devDependencies": {
"@types/node": "7.10.6",
"ts-node": "8.1.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.0",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.2.0.tgz",
"integrity": "sha512-0svQuCrG6ofMYgHzk/GzJ+vpIkLq4vZmTeww1qLipggS40IjQ0+NzwEBOTr6TeHVDmsM2YDmIU1DJiaGy2o9Hw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-6.3.2.tgz",
"integrity": "sha512-4g8hlQ2cCM0ze9K1w+7OYhTVGL6PuC7tXAgFM14MOTeKVAUz2QrJveGNE0hagDTKFagx9FvwF3B7ZSOIohw7aA==",
"requires": {
"axios": "0.18.0",
"axios": "0.19.0",
"cli-color": "1.4.0",
"uuid": "3.3.2"
}
},
"@nestjs/core": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.2.0.tgz",
"integrity": "sha512-K5Wje2unjStkA7AG5sTSD9trx2BEf8asL5xOFT4DwG+ICB04JLebTwqwbQNi3RNZ3buL/pXNXIOOleOgqK7fGw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-6.3.2.tgz",
"integrity": "sha512-dmHvk/IPlJcDKWZsBF2SMePO0NpkovMUU6VrAX9KzI1Y81foH/gfWzFaBhYX6GydPqVVFrYk23zt8yqvGWAZgA==",
"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.0",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.2.0.tgz",
"integrity": "sha512-F4DNhF9qfKBL7v2toz4rlgfeuy8dVXslBNj0lFWDDjoANsYN5WYQVW5ygLbRkyb2ldlA/yBwfx/ULSBUHAvjZg==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-6.3.2.tgz",
"integrity": "sha512-daEzZ4L+BpMmu9KDFUgdU7+HgeVug//qrHlVTrdqCjyNd4vgZFgXrHGNOOFWYdZCwyY2I9qrL+XEv3pz3VeXyA==",
"requires": {
"iterare": "1.1.2",
"iterare": "1.2.0",
"json-socket": "0.3.0",
"optional": "0.1.4"
}
},
"@nestjs/testing": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.2.0.tgz",
"integrity": "sha512-sAdXmZugvhYyp6tze5FdcH6tuIoDI0R8l7nI+PFDXuwxUSvfm8eHOloRbmYRD8ULGfY6OEvmO5uzoz/73IcMMw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-6.3.2.tgz",
"integrity": "sha512-BlXpA5KWok7AxwDzWn/yaOhqhAYDxUE17e+hanPEUxGkCInQIc750lG/M6ZF6aQNg1llxHquYyVKJLvzhdZqBA==",
"requires": {
"optional": "0.1.4"
}
},
"@nestjs/websockets": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.2.0.tgz",
"integrity": "sha512-WMB97lgbrVy9XZAR5PiXcvGI8rIDA48/qlkuoeK5C64hDiM2F2C29PXidCR0AK+8PDkLTsp6tVJtkzpycQL5dw==",
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-6.3.2.tgz",
"integrity": "sha512-ZOYbcqeBKMWXqZwBb06XejbNtVu0+X/jwKgL5SYJTs1kmnsCmRvmDzDEeMvx5Ign0cr3tF8SSOW6ysntdnIxXQ==",
"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": {
@@ -120,9 +120,9 @@
}
},
"class-transformer": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.2.tgz",
"integrity": "sha512-wRKNNvdrSTOYut0ksO1/PTXFPTscbuGRB5R85FfdUuydGI+nXGPYeAByoifrfHFwadI2G4a7IQ5MXp9gnWNjFQ=="
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.2.3.tgz",
"integrity": "sha512-qsP+0xoavpOlJHuYsQJsN58HXSl8Jvveo+T37rEvCEeRfMWoytAyR0Ua/YsFgpM6AZYZ/og2PJwArwzJl1aXtQ=="
},
"class-validator": {
"version": "0.9.1",
@@ -175,9 +175,9 @@
"dev": true
},
"consola": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/consola/-/consola-2.6.1.tgz",
"integrity": "sha512-vt35owQG6OxYDJVaViQ4aFgOK+b98hIvs+R5CWkKgpO8rTPyaYwlMadZ7oZcjnWz1/+u4czDnrcogFr5AtrRug=="
"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"
}
@@ -214,9 +216,9 @@
"dev": true
},
"diff": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
"dev": true
},
"es5-ext": {
@@ -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",
@@ -412,9 +430,9 @@
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"node-fetch": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.5.0.tgz",
"integrity": "sha512-YuZKluhWGJwCcUu4RlZstdAxr8bFfOVHakc1mplwHkk8J+tqM1Y5yraYvIUpeX8aY7+crCwiELJq7Vl0o0LWXw=="
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
},
"object-hash": {
"version": "1.3.1",
@@ -551,13 +569,13 @@
}
},
"ts-node": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.1.0.tgz",
"integrity": "sha512-34jpuOrxDuf+O6iW1JpgTRDFynUZ1iEqtYruBqh35gICNjN8x+LpVcPAcwzLPi9VU6mdA3ym+x233nZmZp445A==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^3.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
@@ -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.4.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz",
"integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw=="
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz",
"integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA=="
},
"util-deprecate": {
"version": "1.0.2",

View File

@@ -7,20 +7,20 @@
"start": "ts-node src/main"
},
"dependencies": {
"@nestjs/common": "6.2.0",
"@nestjs/core": "6.2.0",
"@nestjs/microservices": "6.2.0",
"@nestjs/testing": "6.2.0",
"@nestjs/websockets": "6.2.0",
"class-transformer": "0.2.2",
"@nestjs/common": "6.3.2",
"@nestjs/core": "6.3.2",
"@nestjs/microservices": "6.3.2",
"@nestjs/testing": "6.3.2",
"@nestjs/websockets": "6.3.2",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"reflect-metadata": "0.1.13",
"rxjs": "6.5.2",
"typescript": "3.4.5"
"typescript": "3.5.2"
},
"devDependencies": {
"@types/node": "7.10.6",
"supertest": "4.0.2",
"ts-node": "8.1.0"
"ts-node": "8.3.0"
}
}

View File

@@ -3,5 +3,5 @@
"packages": [
"packages/*"
],
"version": "6.2.2"
"version": "6.4.0"
}

1758
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "nestjs",
"version": "6.2.1",
"name": "@nestjs/core",
"version": "6.4.0",
"description": "Modern, fast, powerful node.js web framework",
"scripts": {
"coverage": "nyc report --reporter=text-lcov | coveralls",
@@ -36,33 +36,33 @@
"@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.1",
"@nuxtjs/opencollective": "0.2.2",
"amqp-connection-manager": "2.3.3",
"amqplib": "0.5.3",
"apollo-server-express": "2.5.0",
"axios": "0.18.0",
"cache-manager": "2.9.0",
"class-transformer": "0.2.2",
"apollo-server-express": "2.6.7",
"axios": "0.19.0",
"cache-manager": "2.9.1",
"class-transformer": "0.2.3",
"class-validator": "0.9.1",
"cli-color": "1.4.0",
"connect": "3.7.0",
"cors": "2.8.5",
"engine.io-client": "3.3.2",
"express": "4.17.0",
"fast-json-stringify": "1.15.2",
"express": "4.17.1",
"fast-json-stringify": "1.15.3",
"fast-safe-stringify": "2.0.6",
"fastify": "2.3.0",
"fastify": "2.6.0",
"fastify-cors": "2.1.3",
"fastify-formbody": "3.1.0",
"fastify-multipart": "0.8.2",
"graphql": "14.3.0",
"grpc": "1.20.0",
"fastify-multipart": "1.0.1",
"graphql": "14.4.1",
"grpc": "1.21.1",
"http2": "3.3.7",
"iterare": "1.1.2",
"iterare": "1.2.0",
"merge-graphql-schemas": "1.5.8",
"mqtt": "2.18.8",
"mqtt": "3.0.0",
"multer": "1.4.1",
"nats": "1.2.10",
"nats": "1.3.0",
"object-hash": "1.3.1",
"optional": "0.1.4",
"path-to-regexp": "3.0.0",
@@ -72,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.0.0",
"uuid": "3.3.2"
},
"devDependencies": {
"@types/amqplib": "0.5.11",
"@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/redis": "2.8.12",
"@types/mocha": "5.2.7",
"@types/node": "10.14.10",
"@types/redis": "2.8.13",
"@types/reflect-metadata": "0.0.5",
"@types/sinon": "7.0.11",
"@types/sinon": "7.0.13",
"@types/socket.io": "2.1.2",
"@types/ws": "6.0.1",
"artillery": "1.6.0-28",
@@ -97,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.0.1",
"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",
"fastify-static": "2.5.0",
"gulp": "4.0.1",
"gulp-clang-format": "1.0.27",
"gulp-clean": "0.4.0",
@@ -113,20 +113,20 @@
"husky": "1.3.1",
"imports-loader": "0.8.0",
"json-loader": "0.5.7",
"lerna": "3.14.1",
"lint-staged": "8.1.7",
"lerna": "3.15.0",
"lint-staged": "8.2.1",
"memory-usage": "1.2.1",
"mocha": "3.5.3",
"nodemon": "1.19.0",
"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.1.0",
"tslint": "5.16.0",
"typescript": "3.4.5"
"ts-node": "8.3.0",
"tslint": "5.18.0",
"typescript": "3.5.2"
},
"collective": {
"type": "opencollective",
@@ -141,6 +141,7 @@
],
"exclude": [
"node_modules/",
"packages/**/test/**",
"packages/**/*.spec.ts",
"packages/**/adapters/*.ts",
"packages/**/nest-*.ts",

View File

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

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

@@ -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.2",
"version": "6.4.0",
"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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

@@ -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

@@ -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;

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,6 +147,18 @@ 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>,
host?: Type<T>,
@@ -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

@@ -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> {
// Ignore if is already initialized
if (this.isInitialized) return;
await this.callInitHook();
await this.callBootstrapHook();
this.isInitialized = true;
return this;
}

View File

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

View File

@@ -1,6 +1,6 @@
{
"name": "@nestjs/core",
"version": "6.2.2",
"version": "6.4.0",
"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

@@ -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,6 +14,7 @@ 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';
@@ -42,6 +43,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,
@@ -189,24 +191,43 @@ export class RouterExplorer {
res: TResponse,
next: () => void,
) => {
const contextId = createContextId();
this.registerRequestProvider(req, contextId);
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);
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);
}
};
paths.forEach(path => {

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

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

View File

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

View File

@@ -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 = {

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

@@ -24,6 +24,7 @@ describe('RouterExecutionContext', () => {
let factory: RouteParamsFactory;
let consumer: PipesConsumer;
let guardsConsumer: GuardsConsumer;
let interceptorsConsumer: InterceptorsConsumer;
let adapter: AbstractHttpAdapter;
beforeEach(() => {
@@ -37,7 +38,7 @@ describe('RouterExecutionContext', () => {
factory = new RouteParamsFactory();
consumer = new PipesConsumer();
guardsConsumer = new GuardsConsumer();
interceptorsConsumer = new InterceptorsConsumer();
adapter = new NoopHttpAdapter({});
contextCreator = new RouterExecutionContext(
factory,
@@ -46,7 +47,7 @@ describe('RouterExecutionContext', () => {
new GuardsContextCreator(new NestContainer()),
guardsConsumer,
new InterceptorsContextCreator(new NestContainer()),
new InterceptorsConsumer(),
interceptorsConsumer,
adapter,
);
});
@@ -87,9 +88,14 @@ describe('RouterExecutionContext', () => {
describe('returns proxy function', () => {
let proxyContext;
let instance;
let tryActivateStub;
beforeEach(() => {
instance = { foo: 'bar' };
let canActivateFn = contextCreator.createGuardsFn([1], null, null);
sinon.stub(contextCreator, 'createGuardsFn').returns(canActivateFn);
tryActivateStub = sinon
.stub(guardsConsumer, 'tryActivate')
.callsFake(async () => true);
proxyContext = contextCreator.create(
instance,
callback as any,
@@ -118,6 +124,7 @@ describe('RouterExecutionContext', () => {
};
});
it('should apply expected context and arguments to callback', done => {
tryActivateStub.callsFake(async () => true);
proxyContext(request, response, next).then(() => {
const args = [next, undefined, request.body.test];
expect(applySpy.called).to.be.true;
@@ -126,13 +133,27 @@ describe('RouterExecutionContext', () => {
});
});
it('should throw exception when "tryActivate" returns false', () => {
sinon
.stub(guardsConsumer, 'tryActivate')
.callsFake(async () => false);
tryActivateStub.callsFake(async () => false);
proxyContext(request, response, next).catch(
error => expect(error).to.not.be.undefined,
);
});
it('should apply expected context when "canActivateFn" apply', () => {
proxyContext(request, response, next).then(() => {
expect(tryActivateStub.args[0][1][0]).to.equals(request);
expect(tryActivateStub.args[0][1][1]).to.equals(response);
expect(tryActivateStub.args[0][1][2]).to.equals(next);
});
});
it('should apply expected context when "intercept" apply', () => {
let interceptStub = sinon
.stub(interceptorsConsumer, 'intercept');
proxyContext(request, response, next).then(() => {
expect(interceptStub.args[0][1][0]).to.equals(request);
expect(interceptStub.args[0][1][1]).to.equals(response);
expect(interceptStub.args[0][1][2]).to.equals(next);
});
});
});
});
});

View File

@@ -4,15 +4,17 @@ import { HttpException } from '../../../common/exceptions/http.exception';
import { ExceptionsHandler } from '../../exceptions/exceptions-handler';
import { RouterProxy } from '../../router/router-proxy';
import { NoopHttpAdapter } from '../utils/noop-adapter.spec';
import {SinonSpy} from "sinon";
import {ExecutionContextHost} from "../../helpers/execution-context-host";
describe('RouterProxy', () => {
let routerProxy: RouterProxy;
let handlerMock: sinon.SinonMock;
let handler: ExceptionsHandler;
let httpException = new HttpException('test', 500);
let nextStub: sinon.SinonStub;
beforeEach(() => {
handler = new ExceptionsHandler(new NoopHttpAdapter({}));
handlerMock = sinon.mock(handler);
nextStub = sinon.stub(handler, 'next');
routerProxy = new RouterProxy();
});
@@ -23,23 +25,24 @@ describe('RouterProxy', () => {
});
it('should method encapsulate callback passed as argument', () => {
const expectation = handlerMock.expects('next').once();
const proxy = routerProxy.createProxy((req, res, next) => {
throw new HttpException('test', 500);
throw httpException;
}, handler);
proxy(null, null, null);
expectation.verify();
expect(nextStub.calledOnce).to.be.true;
expect(nextStub.calledWith(httpException, new ExecutionContextHost([null, null, null]))).to.be.true;
});
it('should method encapsulate async callback passed as argument', done => {
const expectation = handlerMock.expects('next').once();
const proxy = routerProxy.createProxy(async (req, res, next) => {
throw new HttpException('test', 500);
throw httpException;
}, handler);
proxy(null, null, null);
setTimeout(() => {
expectation.verify();
expect(nextStub.calledOnce).to.be.true;
expect(nextStub.calledWith(httpException, new ExecutionContextHost([null, null, null]))).to.be.true;
done();
}, 0);
});
@@ -52,29 +55,30 @@ describe('RouterProxy', () => {
});
it('should method encapsulate callback passed as argument', () => {
const expectation = handlerMock.expects('next').once();
const proxy = routerProxy.createExceptionLayerProxy(
(err, req, res, next) => {
throw new HttpException('test', 500);
throw httpException;
},
handler,
);
proxy(null, null, null, null);
expectation.verify();
expect(nextStub.calledOnce).to.be.true;
expect(nextStub.calledWith(httpException, new ExecutionContextHost([null, null, null]))).to.be.true;
});
it('should method encapsulate async callback passed as argument', done => {
const expectation = handlerMock.expects('next').once();
const proxy = routerProxy.createExceptionLayerProxy(
async (err, req, res, next) => {
throw new HttpException('test', 500);
throw httpException;
},
handler,
);
proxy(null, null, null, null);
setTimeout(() => {
expectation.verify();
expect(nextStub.calledOnce).to.be.true;
expect(nextStub.calledWith(httpException, new ExecutionContextHost([null, null, null]))).to.be.true;
done();
}, 0);
});

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,5 @@
import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util';
import { isNil, isString } from '@nestjs/common/utils/shared.utils';
import { isNil } from '@nestjs/common/utils/shared.utils';
import {
defer,
fromEvent,
@@ -13,10 +13,12 @@ import { CONNECT_EVENT, ERROR_EVENT } from '../constants';
import { InvalidMessageException } from '../errors/invalid-message.exception';
import {
ClientOptions,
MsPattern,
PacketId,
ReadPacket,
WritePacket,
} from '../interfaces';
import { transformPatternToRoute } from '../utils';
export abstract class ClientProxy {
public abstract connect(): Promise<any>;
@@ -93,15 +95,14 @@ export abstract class ClientProxy {
return merge(error$, connect$).pipe(take(1));
}
protected getOptionsProp<T extends { options?: any }>(
obj: ClientOptions['options'],
prop: keyof T['options'],
defaultValue: any = undefined,
) {
return obj ? obj[prop as string] : defaultValue;
protected getOptionsProp<
T extends ClientOptions['options'],
K extends keyof T
>(obj: T, prop: K, defaultValue: T[K] = undefined) {
return (obj && obj[prop]) || defaultValue;
}
protected normalizePattern<T = any>(pattern: T): string {
return isString(pattern) ? pattern : JSON.stringify(pattern);
protected normalizePattern(pattern: MsPattern): string {
return transformPatternToRoute(pattern);
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,8 @@
export type MsFundamentalPattern = string | number;
export interface MsObjectPattern {
[key: string]: MsFundamentalPattern | MsObjectPattern;
}
export type MsPattern = MsObjectPattern | MsFundamentalPattern;

View File

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

View File

@@ -1,13 +1,19 @@
import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface';
import { createContextId } from '@nestjs/core/helpers/context-id-factory';
import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host';
import { NestContainer } from '@nestjs/core/injector/container';
import { Injector } from '@nestjs/core/injector/injector';
import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';
import {
ContextId,
InstanceWrapper,
} from '@nestjs/core/injector/instance-wrapper';
import { MetadataScanner } from '@nestjs/core/metadata-scanner';
import { REQUEST } from '@nestjs/core/router/request/request-constants';
import { IClientProxyFactory } from './client/client-proxy-factory';
import { ClientsContainer } from './container';
import { ExceptionFiltersContext } from './context/exception-filters-context';
import { RpcContextCreator } from './context/rpc-context-creator';
import { CustomTransportStrategy } from './interfaces';
import { CustomTransportStrategy, RequestContext } from './interfaces';
import { ListenerMetadataExplorer } from './listener-metadata-explorer';
import { Server } from './server/server';
@@ -15,6 +21,7 @@ export class ListenersController {
private readonly metadataExplorer = new ListenerMetadataExplorer(
new MetadataScanner(),
);
private readonly exceptionFiltersCache = new WeakMap();
constructor(
private readonly clientsContainer: ClientsContainer,
@@ -22,6 +29,7 @@ export class ListenersController {
private readonly container: NestContainer,
private readonly injector: Injector,
private readonly clientFactory: IClientProxyFactory,
private readonly exceptionFiltersContext: ExceptionFiltersContext,
) {}
public bindPatternHandlers(
@@ -46,10 +54,12 @@ export class ListenersController {
);
return server.addHandler(pattern, proxy, isEventHandler);
}
server.addHandler(
pattern,
async data => {
const asyncHandler = async (...args: unknown[]) => {
try {
const data = args[0];
const contextId = createContextId();
this.registerRequestProvider({ pattern, data }, contextId);
const contextInstance = await this.injector.loadPerContext(
instance,
module,
@@ -62,9 +72,26 @@ export class ListenersController {
moduleKey,
);
return proxy(data);
},
isEventHandler,
);
} catch (err) {
let exceptionFilter = this.exceptionFiltersCache.get(
instance[methodKey],
);
if (!exceptionFilter) {
exceptionFilter = this.exceptionFiltersContext.create(
instance,
instance[methodKey],
moduleKey,
);
this.exceptionFiltersCache.set(
instance[methodKey],
exceptionFilter,
);
}
const host = new ExecutionContextHost(args);
exceptionFilter.handle(err, host);
}
};
server.addHandler(pattern, asyncHandler, isEventHandler);
},
);
}
@@ -88,4 +115,17 @@ export class ListenersController {
) {
Reflect.set(instance, property, client);
}
private registerRequestProvider(
request: RequestContext,
contextId: ContextId,
) {
const coreModuleRef = this.container.getInternalCoreModuleRef();
const wrapper = coreModuleRef.getProviderByKey(REQUEST);
wrapper.setInstanceByContextId(contextId, {
instance: request,
isResolved: true,
});
}
}

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