Compare commits

..

287 Commits

Author SHA1 Message Date
Kamil Myśliwiec
d7250e42e5 tests() exclude async hooks 2018-12-29 12:45:42 +01:00
Kamil Myśliwiec
6a084a36b6 feature() add async_hooks module (async storage) 2018-12-29 10:59:57 +01:00
Kamil Myśliwiec
00554ee913 tests(core) update middleware builder/module unit tests 2018-12-24 15:21:16 +01:00
Kamil Myśliwiec
87c1ef35b0 sample() update samples 2018-12-24 15:20:55 +01:00
Kamil Myśliwiec
4ca914e0c7 Merge branch 'feature/di-scopes' into feature/middleware-api 2018-12-24 15:08:22 +01:00
Kamil Myśliwiec
0e258842a6 cleanup(core) remove async hooks module 2018-12-24 15:06:34 +01:00
Kamil Myśliwiec
3da97c684c refactor(common/core) simplify middleware interface 2018-12-24 15:01:04 +01:00
Kamil Myśliwiec
06dec9a897 feature() transient/request scope with circular deps 2018-12-24 14:45:32 +01:00
Kamil Myśliwiec
ed96171f38 chore() resolve conflicts (merge) 2018-12-21 10:19:24 +01:00
Kamil Myśliwiec
2e992d39ea tests() fix unit tests, update enhancers 2018-12-18 16:51:47 +01:00
Kamil Myśliwiec
cb062be24f feature() wip DI scopes 2018-12-17 10:13:49 +01:00
Kamil Myśliwiec
5352bba8f7 feature() fix request scoped 2018-12-15 23:02:04 +01:00
Kamil Myśliwiec
5cd3448670 feature() fix request scoped 2018-12-15 23:01:48 +01:00
Kamil Myśliwiec
17e0ae6c63 feature() wip: DI scopes 2018-12-15 21:22:36 +01:00
Kamil Myśliwiec
6071ea80c8 feature(common) enhance internal logger 2018-12-13 11:15:51 +01:00
Kamil Myśliwiec
53687ba46a feature(websockets) extract web sockets drivers 2018-12-12 23:35:27 +01:00
Kamil Myśliwiec
03b0cf838a chore() merge latest changes (resolve conflicts) 2018-12-10 22:57:45 +01:00
Kamil Mysliwiec
15bdbacc4b Merge pull request #1328 from nestjs/bugfix/interceptor-flow
bugfix(core) fix interceptors execution flow
2018-12-10 22:40:02 +01:00
Kamil Mysliwiec
f96b2a8c9b Merge pull request #1161 from nestjs/refactor/microservices
refactor(microservices) refactor, improvements, use es6 map
2018-12-10 22:38:50 +01:00
Kamil Myśliwiec
4ec8e3436c test(microservices) fix unit tests 2018-12-10 22:33:48 +01:00
Kamil Myśliwiec
4796023e02 chore() resolve conflicts 2018-12-10 22:03:06 +01:00
Kamil Myśliwiec
30b6c50dd8 merge() resolve conflicts 2018-12-10 21:48:06 +01:00
Kamil Myśliwiec
ef2147d697 chore(@nestjs) publish v5.5.0 release 2018-12-09 14:16:11 +01:00
Kamil Myśliwiec
438e662352 bugfix(common) inconsistent microservice config #1352 2018-12-09 14:14:54 +01:00
Kamil Mysliwiec
17b0100c51 Merge pull request #1349 from nestjs/5.5.0
chore() 5.5.0 minor release
2018-12-09 14:13:25 +01:00
Kamil Mysliwiec
8bce796ad7 Merge pull request #1271 from grin0c/another-proto-loader
feature(microservices): added option for proto-loader (grpc)
2018-12-06 19:45:47 +01:00
Kamil Mysliwiec
6a54900df8 Merge pull request #1344 from nestjs/bugfix/1339-exceptions
bugfix(common): custom exception body #1339
2018-12-06 19:45:21 +01:00
Kamil Mysliwiec
63e3940c02 Merge pull request #1345 from nestjs/bugfix/1338-injection-scopes
bugfix(common) invalid metadata inheritance with custom providers
2018-12-06 19:45:10 +01:00
Kamil Mysliwiec
d25e6c713a Merge pull request #1346 from nestjs/bugfix/1285-throw-error
bugfix(ws/microservices): add catchError() to observables
2018-12-06 19:44:59 +01:00
Kamil Mysliwiec
ed37b9138d Merge pull request #1347 from nestjs/feature/1257-http-async
feature(common) add async support (HttpModule) and extraProviders
2018-12-06 19:44:39 +01:00
Kamil Mysliwiec
b632f60a9e Merge pull request #1348 from nestjs/feature/1267-validation-factory
feature(common) add validation error factory (ValidationPipe)
2018-12-06 19:44:24 +01:00
Kamil Myśliwiec
ee9d31671c feature(common) add validation error factory (ValidationPipe) 2018-12-06 18:33:22 +01:00
Kamil Myśliwiec
9fa12b43f2 fix(common) add missing interfaces reexport (http) 2018-12-06 14:16:39 +01:00
Kamil Myśliwiec
e66d72f904 feature(common) add async support (HttpModule) and extraProviders (cache/http) 2018-12-06 14:15:16 +01:00
Kamil Myśliwiec
efb367e65c bugfix(ws/microservices): add catchError() to observables 2018-12-06 11:47:14 +01:00
Kamil Myśliwiec
fe96bf67bc bugfix(common) invalid metadata inheritance with custom providers 2018-12-06 09:08:33 +01:00
Kamil Myśliwiec
411db0c3ff bugfix(common): custom exception body #1339 2018-12-05 23:31:13 +01:00
Kamil Myśliwiec
42e1e79b31 test(): fix e2e tests 2018-12-05 23:08:03 +01:00
Kamil Myśliwiec
a3fbb8816e feature() extract fastify, multer, cors, adapters 2018-12-01 21:02:36 +01:00
Kamil Myśliwiec
bc4a8a556c feature(core/common) extract HTTP adapters (express/fastify) 2018-11-30 16:48:04 +01:00
Kamil Myśliwiec
ead8d55538 refactor: fix typings (tuples, binding checks) 2018-11-30 14:52:01 +01:00
Kamil Myśliwiec
e3cbab771a merge: resolve conflicts 2018-11-30 14:28:00 +01:00
Kamil Mysliwiec
df9c8215ca Merge pull request #1322 from nestjs/refactor/remove-deprecations
refactor: remove deprecations, update to TypeScript 3.0+
2018-11-30 14:09:24 +01:00
Kamil Myśliwiec
af923ced97 lint() update ts-lint package (ts compatibility) 2018-11-30 14:04:02 +01:00
Kamil Myśliwiec
ee9360dcff fix: quick fix 2018-11-30 14:01:40 +01:00
Kamil Myśliwiec
2c87615f8e ci() fix travis build (update lock file) 2018-11-30 13:59:54 +01:00
Kamil Myśliwiec
7fd9849a6c merge: resolve conflicts 2018-11-30 13:47:00 +01:00
Kamil Mysliwiec
1c320071aa Merge pull request #1312 from nestjs/refactor/injector
refactor: general refactor (explicit types, generics, components)
2018-11-30 13:43:51 +01:00
Kamil Myśliwiec
93bdb62df2 merge: resolve conflicts 2018-11-30 13:41:53 +01:00
Kamil Mysliwiec
c6ec8878e0 Merge pull request #1206 from jbpionnier/refactor_simplified_if
refactor() simplified if (less checks)
2018-11-30 13:31:27 +01:00
Kamil Myśliwiec
db94dc54bf chore(): publish 5.4.1 release 2018-11-30 13:06:41 +01:00
Kamil Myśliwiec
72577136a7 chore(@nestjs) publish v5.4.1 release 2018-11-30 13:00:27 +01:00
Kamil Myśliwiec
6fac25bde0 chore(): update package.json 2018-11-30 12:59:16 +01:00
Kamil Myśliwiec
25bc5e8893 chore() format package.json 2018-11-30 12:10:43 +01:00
Kamil Myśliwiec
0a158798a9 tests(common) update file interceptors tests 2018-11-30 11:56:45 +01:00
Kamil Myśliwiec
42adbab0b5 Merge branch '5.4.1' of https://github.com/nestjs/nest into 5.4.1 2018-11-30 11:54:01 +01:00
Kamil Myśliwiec
df958c9e2b enhancement(common) make multer instance protected 2018-11-30 11:53:53 +01:00
Kamil Mysliwiec
bc9aa8cdec Merge pull request #1325 from nestjs/improvement/application-ref
improvement(core) use application ref host instead of http ref
2018-11-30 11:52:26 +01:00
Kamil Mysliwiec
6b97b11665 Merge pull request #1324 from nestjs/bugfix/928-direct-instance
bugfix(core) use direct class instance
2018-11-30 11:50:26 +01:00
Kamil Mysliwiec
58d7300098 Merge pull request #1248 from andrew-yustyk/issue/1246
fix(core/common): allow to use symbol token in the module exports
2018-11-30 11:49:20 +01:00
Kamil Myśliwiec
ae4e7d3b12 test(core) fix broken unit tests (interceptors) 2018-11-30 11:06:59 +01:00
Kamil Myśliwiec
d534c47455 sample() update examples with new API 2018-11-30 10:13:57 +01:00
Kamil Myśliwiec
cfa96f08fa bugfix(core) fix interceptors execution flow 2018-11-30 10:08:13 +01:00
Kamil Myśliwiec
f71613a79f Merge branch 'master' of https://github.com/nestjs/nest 2018-11-29 23:25:44 +01:00
Kamil Myśliwiec
35053d093a refactor(): remove trailing commas 2018-11-29 23:24:25 +01:00
Kamil Myśliwiec
6f85ea4f12 improvement(core) use application ref host instead of http ref 2018-11-29 23:14:11 +01:00
Kamil Mysliwiec
dd882ac1a2 Merge pull request #1287 from dzzzzzy/patch-1
docs(readme) add communication groups for Chinese developers
2018-11-29 14:21:37 +01:00
Kamil Mysliwiec
4f8d9fe694 Merge pull request #1314 from rafalschmidt97/contributing-comments-fix
docs(contributing) fix comments issues in lists
2018-11-29 14:19:26 +01:00
Kamil Myśliwiec
5a6f64a51e bugfix(core) use direct class instance 2018-11-29 14:11:31 +01:00
Kamil Myśliwiec
5588470479 refactor: remove deprecations and update to typescript 3.0 2018-11-28 23:59:57 +01:00
Kamil Myśliwiec
773d062e41 feature(core) add HttpServer typings 2018-11-28 23:27:54 +01:00
Kamil Myśliwiec
1cac0a99fd feature: more typings, refactor 2018-11-28 23:08:27 +01:00
Rafał Schmidt
7e07ef3abb docs(contributing) fix comments issues in lists 2018-11-25 18:15:10 +01:00
Kamil Myśliwiec
0b23422ab1 refactor: reduce implicit types 2018-11-24 17:28:28 +01:00
Kamil Myśliwiec
1cb3ed7f87 refactor: general refactor reorganize, rename things 2018-11-24 16:01:29 +01:00
bingoyao
4a5ce3b04d Update readme_zh.md
Add more state about Chinese developer communication channel.
2018-11-21 12:03:45 +08:00
Jean-Baptiste Pionnier
3a297530d8 Merge branch 'master' of github.com:nestjs/nest into refactor_simplified_if 2018-11-16 11:41:22 +01:00
bingoyao
3a84bfb7e8 Add communication groups for Chinese developers
Chinese developers are growing, and in order to allow Chinese developers to communicate and share with each other, I have established a communication group.
2018-11-14 18:55:25 +08:00
Kamil Mysliwiec
385071ba6d Update Readme.md 2018-11-10 22:29:49 +01:00
Kamil Myśliwiec
bf1a97be36 test(nestjs) bump test coverage 2018-11-10 21:54:42 +01:00
Aleksey Tsvetkov
be40001511 fixed protoLoader option 2018-11-08 11:38:56 +03:00
Aleksey Tsvetkov
4b55261aeb feat(client-grpc): added protoLoader option for grpc client 2018-11-08 11:32:32 +03:00
Aleksey Tsvetkov
1bd70484e8 feat(grpc): added option for proto-loader 2018-11-07 14:01:36 +03:00
Kamil Myśliwiec
a95b3d6048 Merge branch 'master' of https://github.com/nestjs/nest 2018-11-03 17:02:57 +01:00
Kamil Myśliwiec
1f8c84d19b test(nestjs) increase test coverage 2018-11-03 17:00:55 +01:00
Kamil Mysliwiec
7c644d989e Update Readme.md 2018-11-03 12:29:38 +01:00
Kamil Mysliwiec
cebb6267f2 Update Readme.md 2018-11-03 12:28:17 +01:00
Andrew Yustyk
644b2c1745 fix(core/common): allow to use symbol token in the module exports
Symbol token can be used in the exports section as well as the string token.

Closes #1246
2018-10-31 13:26:48 +02:00
Jean-Baptiste Pionnier
0d29cd7f96 Merge branch 'master' of github.com:jbpionnier/nest into refactor_simplified_if 2018-10-22 07:49:40 +02:00
Kamil Myśliwiec
47f0fa0ab5 chore(@nestjs) publish v5.4.0 release 2018-10-19 14:21:48 +02:00
Kamil Myśliwiec
9be35b4c10 tests(microservices) fix server-rmq unit tests 2018-10-19 14:08:19 +02:00
Kamil Myśliwiec
dd38a49508 Merge pull request #1215 from nestjs/5.4.0
chore() 5.4.0 minor release
2018-10-19 14:07:32 +02:00
Kamil Myśliwiec
b55ee078b2 Merge branch 'master' into 5.4.0 2018-10-19 14:07:23 +02:00
Kamil Myśliwiec
6eec6016a4 Merge pull request #1143 from BrunnerLivio/feature/print-context-injection-error
feature(core) add module context name to UnknownDependenciesMessage
2018-10-19 13:55:22 +02:00
Kamil Myśliwiec
9b799ba3c1 Merge pull request #1170 from nestjs/AlariCode-feature/rmq-transport
feature(microservices) RabbitMQ support
2018-10-19 13:55:08 +02:00
Kamil Myśliwiec
a2ed524824 Merge pull request #1172 from nestjs/feature/property-injection
feature(core) property based injection (composition)
2018-10-19 13:54:17 +02:00
Kamil Myśliwiec
82bf25b707 Merge pull request #1175 from nestjs/feature/nats-queue
feature(microservices) add a few options to the nats strategy + general refactor
2018-10-19 13:54:04 +02:00
Kamil Myśliwiec
ffea148892 Merge pull request #1214 from nestjs/feature/update-axios
feature(common) update axios dependency
2018-10-19 13:53:45 +02:00
Kamil Myśliwiec
b0026d8cc1 style(microservices) remove lint issues 2018-10-19 13:38:12 +02:00
Kamil Myśliwiec
313e22632b feature(core) add dynamic properties resolution 2018-10-19 13:37:00 +02:00
Kamil Myśliwiec
a299b12ad5 feature(common) update axios dependency 2018-10-19 13:23:46 +02:00
Kamil Myśliwiec
6635d2cbe1 Merge branch '5.4.0' into feature/property-injection 2018-10-19 13:22:10 +02:00
Kamil Myśliwiec
9972649770 bugfix: fix package-lock.json file 2018-10-19 13:16:45 +02:00
Kamil Myśliwiec
92cd57a19b Merge pull request #1163 from nestjs/feature/dynamic-create
feature(core) instantiate class dynamically (ModuleRef)
2018-10-19 13:16:17 +02:00
Kamil Myśliwiec
6ac9968ec0 Merge branch 'feature/property-injection' into feature/dynamic-create 2018-10-19 13:16:06 +02:00
Kamil Myśliwiec
9210dc1318 Merge pull request #1208 from jbpionnier/feat/accept_export_abstract_class
bugfix(common) accept export abstract class
2018-10-19 13:12:41 +02:00
Kamil Myśliwiec
a850d5d322 bugfix(microservices) fix issues with deps resolution 2018-10-19 13:01:54 +02:00
Kamil Myśliwiec
b0e4383e6e merge: resolve conflicts 2018-10-19 11:39:15 +02:00
Kamil Myśliwiec
935aa704fc lint: update lint rules 2018-10-19 10:12:36 +02:00
Kamil Myśliwiec
f0512d2a26 chore(@nestjs) publish v5.3.15 release 2018-10-19 09:58:30 +02:00
Kamil Myśliwiec
6f9b242410 bugfix: fix incorrect dependencies, simplify relations 2018-10-19 09:55:50 +02:00
Jean-Baptiste Pionnier
e1a9643887 feat(common): accept export abstract class 2018-10-18 15:10:57 +02:00
Jean-Baptiste Pionnier
e1b8d3b411 refactor: simplified isString 2018-10-18 12:05:35 +02:00
Jean-Baptiste Pionnier
6db29c6e3d refactor: simplified isObject 2018-10-18 12:01:39 +02:00
Jean-Baptiste Pionnier
1f59ec3458 refactor: simplified validatePath 2018-10-18 11:58:49 +02:00
Jean-Baptiste Pionnier
ff3ef16d18 refactor: simplified isFunction 2018-10-18 11:55:11 +02:00
Jean-Baptiste Pionnier
41190d7546 refactor: simplified isEmpty 2018-10-18 11:52:12 +02:00
Kamil Myśliwiec
b03e36c692 chore(@nestjs) publish v5.3.14 release 2018-10-18 08:37:26 +02:00
Kamil Myśliwiec
2383cdb412 build: fix incorrect prepublish hook 2018-10-18 00:12:05 +02:00
Kamil Myśliwiec
e9433d0fb5 Merge branch 'master' of https://github.com/nestjs/nest 2018-10-18 00:05:15 +02:00
Kamil Myśliwiec
13d473fcba chore(@nestjs) publish v5.3.13 release 2018-10-18 00:04:49 +02:00
Kamil Myśliwiec
a78a31eff2 Merge pull request #1199 from jbpionnier/refactor/void_0_not_necessary
refactor: remove void 0 not necessary
2018-10-17 23:16:35 +02:00
Jean-Baptiste Pionnier
bd05652cbe refactor: remove void 0 not necessary 2018-10-17 23:05:24 +02:00
Kamil Myśliwiec
96b0a194af chore(@nestjs) publish v5.3.12 release 2018-10-17 22:37:02 +02:00
Kamil Myśliwiec
64555bf428 bugfix: fix WsAdapter close invokation issues #1156 2018-10-17 22:09:03 +02:00
Kamil Myśliwiec
6f18afc036 bugfix(core) support symbols in exports array #1177 2018-10-17 22:02:26 +02:00
Kamil Myśliwiec
21bdbac788 Merge branch 'master' of https://github.com/nestjs/nest 2018-10-17 21:42:54 +02:00
Kamil Myśliwiec
b6d059fc30 Merge branch 'spaiter-fix-ws-client-closing' 2018-10-17 21:42:43 +02:00
Kamil Myśliwiec
a6b001638f refactor: extract handle message from WsAdapter 2018-10-17 21:42:24 +02:00
Kamil Myśliwiec
3e9bfff04e Merge branch 'fix-ws-client-closing' of https://github.com/spaiter/nest into spaiter-fix-ws-client-closing 2018-10-17 21:37:33 +02:00
Kamil Myśliwiec
186f018d76 Merge pull request #1188 from andrew-yustyk/issue/1182
bugfix(core) change initial context arguments from null to undefined
2018-10-17 21:35:46 +02:00
Kamil Myśliwiec
6dda6c58c5 Merge branch 'jbpionnier-refactor_remove_reflect_metadata' 2018-10-17 21:35:14 +02:00
Kamil Myśliwiec
bf02e984ac Merge branch 'refactor_remove_reflect_metadata' of https://github.com/jbpionnier/nest into jbpionnier-refactor_remove_reflect_metadata 2018-10-17 21:33:41 +02:00
Kamil Myśliwiec
da8612b4d6 Merge pull request #1176 from nestjs/build/refactor
build: refactor packages structure, remove bundle
2018-10-17 21:31:32 +02:00
Kamil Myśliwiec
63ae5b16e2 build: fix missing script build:lib 2018-10-17 21:20:09 +02:00
Kamil Myśliwiec
e9e277c21c ci: update travis.yml file 2018-10-17 21:14:11 +02:00
Kamil Myśliwiec
ceabe7418a build: update CONTRIBUTION guide/scripts 2018-10-17 21:13:12 +02:00
Kamil Myśliwiec
84aa4dec09 build: update gulp/package.json scripts 2018-10-17 21:07:39 +02:00
Jean-Baptiste Pionnier
40e90516f0 Merge branch 'master' of github.com:nestjs/nest into refactor_remove_reflect_metadata 2018-10-16 09:34:40 +02:00
Andrew Yustyk
35cf1faa84 bugfix(core) change initial context arguments from null to undefined
fix nestjs/nest#1182
2018-10-13 03:58:53 +03:00
anonanonimus
72a8725b21 websockets(bug) send message to client only in open state
sending messages to ws client only if it in open state

no breaking changes
2018-10-11 11:44:02 +05:00
Kamil Myśliwiec
5d27183295 Merge pull request #1179 from jbpionnier/build/hide-package-lock
build: hide package lock during a PR
2018-10-09 09:57:46 +02:00
Jean-Baptiste Pionnier
3a0f461a56 build: hide package lock 2018-10-08 11:08:30 +02:00
Kamil Myśliwiec
72616cc0f1 tests(core) fix middleware utils unit tests 2018-10-06 16:26:17 +02:00
Kamil Myśliwiec
0e71949538 chore(build) share tsconfig, add 'clean' and npmignore 2018-10-06 16:14:35 +02:00
Kamil Myśliwiec
04fe22b44e chore(build) remove bundle directory 2018-10-06 15:30:20 +02:00
Kamil Myśliwiec
06d0f12169 feature(microservices) add a few options to the nats strategy 2018-10-06 15:02:55 +02:00
Kamil Myśliwiec
1eef51345f Merge branch 'master' of https://github.com/nestjs/nest 2018-10-06 14:31:29 +02:00
Kamil Myśliwiec
b2f3dfe0b3 refactor(microservices) move utils to decorators dir, use not stringified 2018-10-06 14:31:09 +02:00
Kamil Myśliwiec
d49a265686 tests(integration) update test suite (property injection) 2018-10-06 12:50:04 +02:00
Kamil Myśliwiec
51b93e5306 feature(core) property based injection (composition) 2018-10-06 12:45:44 +02:00
Kamil Myśliwiec
656ecf831c Merge pull request #1168 from jbpionnier/build/add_lint_travis_builds
chore(build) add lint for travis build
2018-10-05 23:11:17 +02:00
Kamil Myśliwiec
e6dfef8480 content(integration) fix typo in sum-rmq spec 2018-10-05 22:43:06 +02:00
Kamil Myśliwiec
096336c243 bugfix(microservices) fix rabbit mq transport, code refactor, add tests 2018-10-05 22:42:35 +02:00
Jean-Baptiste Pionnier
fb052ab971 refactor fix lint 2018-10-05 21:12:37 +02:00
Jean-Baptiste Pionnier
84df209740 build add lint for travis build 2018-10-05 15:28:48 +02:00
Jean-Baptiste Pionnier
457c57b9dc refactor remove multiple reflect metadata 2018-10-05 15:20:45 +02:00
Kamil Myśliwiec
098afe6b85 chore(@nestjs) publish v5.3.11 release 2018-10-05 15:07:19 +02:00
Kamil Myśliwiec
3e42f9b91d chore: fix package.json scripts 2018-10-05 15:04:27 +02:00
Kamil Myśliwiec
85d7384b5e Merge pull request #1155 from jbpionnier/refactor_clean_as_any
refactor(nestjs) code style, clean "as any"
2018-10-05 15:01:37 +02:00
Kamil Myśliwiec
3e851e5652 Merge branch 'master' of https://github.com/nestjs/nest 2018-10-05 14:56:52 +02:00
Kamil Myśliwiec
e391936e69 Merge branch 'BrunnerLivio-fix/circular-structures' 2018-10-05 14:56:39 +02:00
Kamil Myśliwiec
6c92bf72ef bugfix(core) add missing fast-json-stringify dep 2018-10-05 14:55:37 +02:00
Kamil Myśliwiec
81fe7124bc Merge pull request #1144 from spaiter/fix-ws-unexpected-close
bugfix(websockets) handle ws unexpected connection error
2018-10-05 14:43:15 +02:00
Kamil Myśliwiec
20a5e7e77a Merge pull request #1151 from nestjs/bugfix/1150-defaults
bugfix(core) make use of default assignments (DI)
2018-10-05 14:42:54 +02:00
Kamil Myśliwiec
eba4102b2a Merge pull request #1159 from nestjs/refactor/websockets
refactor(websockets) code cleanup, improvements, refactor
2018-10-05 14:42:43 +02:00
Kamil Myśliwiec
402d83ff9e Merge pull request #1166 from jbpionnier/refactor_remove_multiple_reflect_metadata
refactor(common) remove multiple reflect metadata
2018-10-05 14:42:20 +02:00
Jean-Baptiste Pionnier
227d4fba56 refactor(common) remove multiple reflect metadata 2018-10-05 12:31:53 +02:00
Kamil Myśliwiec
62e0283098 feature(core) instantiate class dynamically (ModuleRef) 2018-10-04 16:28:51 +02:00
Jean-Baptiste Pionnier
8a827ff9fc Merge branch 'master' of github.com:nestjs/nest into refactor_clean_as_any 2018-10-04 10:58:42 +02:00
Jean-Baptiste Pionnier
66ee3ebe72 refactor clean as any 2018-10-04 10:49:07 +02:00
Kamil Myśliwiec
91be484b83 refactor(microservices) partially fixed rabbitmq transport (+tests) 2018-10-03 23:26:52 +02:00
Kamil Myśliwiec
8ec7c5b31e chore: resolve conflicts (merge) 2018-10-03 22:31:25 +02:00
Kamil Myśliwiec
f802f94c0f refactor(microservices) refactor, improvements, use es6 map 2018-10-03 22:15:29 +02:00
Kamil Myśliwiec
7c2143f889 refactor(websockets) code cleanup, improvements, refactor 2018-10-03 21:22:50 +02:00
Kamil Myśliwiec
89d84d214f Merge branch 'master' of https://github.com/nestjs/nest 2018-10-03 17:23:47 +02:00
Kamil Myśliwiec
f8ffc2d064 chore(nestjs) add scripts directory 2018-10-03 17:23:36 +02:00
Kamil Myśliwiec
d453e9bc65 Update CONTRIBUTING.md 2018-10-03 17:23:30 +02:00
Kamil Myśliwiec
3a74c790bf chore(nestjs) add scripts directory 2018-10-03 17:00:08 +02:00
Kamil Myśliwiec
0c8e6968bd bugfix(@nestjs/microservices) set flag to true 2018-10-03 15:25:43 +02:00
Jean-Baptiste Pionnier
4a8c8bc740 refactor Unnecessary 'await' 2018-10-03 15:25:43 +02:00
Jean-Baptiste Pionnier
47a17e85e4 refactor clean code 2018-10-03 15:25:43 +02:00
Jean-Baptiste Pionnier
f45021e7cb refactor(integration) resolve module path 2018-10-03 15:25:43 +02:00
Livio Brunner
958da96733 bugfix(core): Allow circular structures for dynamic module #678 2018-10-03 11:47:16 +02:00
Kamil Myśliwiec
1acae78302 Merge branch 'jbpionnier-refactor_module_path' 2018-10-02 22:41:11 +02:00
Kamil Myśliwiec
f01d60021c bugfix(@nestjs/microservices) set flag to true 2018-10-02 22:40:59 +02:00
Kamil Myśliwiec
945eff5274 Merge branch 'refactor_module_path' of https://github.com/jbpionnier/nest into jbpionnier-refactor_module_path 2018-10-02 22:35:34 +02:00
Kamil Myśliwiec
9e8eff09bf Merge branch 'master' of https://github.com/nestjs/nest 2018-10-02 22:25:20 +02:00
Kamil Myśliwiec
b90842048b bugfix(@nestjs/core) make use of default assignments when optional 2018-10-02 22:23:42 +02:00
Kamil Myśliwiec
cce8c45f6f feature(@nestjs/core) add typings to adapters 2018-10-02 22:23:00 +02:00
Kamil Myśliwiec
ac5a556a3c Merge pull request #1136 from cschroeter/master
sample(prisma) update graphql-prisma example
2018-10-02 22:22:16 +02:00
anonanonimus
bf945310b5 bugfix(websockets) need to handle ws unexpected connection error and log it
Fixed unhandled ws connection error in ws-adapter

No breaking changes
2018-10-02 16:44:24 +05:00
Livio Brunner
4e943dbaae feature(core): Add module context name to UnknownDependenciesMessage 2018-10-02 12:07:14 +02:00
Jean-Baptiste Pionnier
ac295e68f6 refactor Unnecessary 'await' 2018-09-30 22:14:35 +02:00
Jean-Baptiste Pionnier
31c2b87a6a refactor clean code 2018-09-30 22:13:58 +02:00
Jean-Baptiste Pionnier
6193f506c2 refactor(integration) resolve module path 2018-09-30 21:08:44 +02:00
Christian Schröter
34f72ce4a7 chore: Regenerate schemda.d.ts 2018-09-30 00:33:42 +02:00
Christian Schröter
63947cd3c0 fix: Do not use Prisma library to generate schema 2018-09-30 00:33:18 +02:00
Christian Schröter
14cc3edb10 chore: Bump deps 2018-09-30 00:32:27 +02:00
Kamil Myśliwiec
65bb7e7c34 Update Readme.md 2018-09-26 19:48:26 +02:00
Kamil Myśliwiec
8604f25a20 Update Readme.md 2018-09-26 19:47:50 +02:00
Kamil Myśliwiec
57faedcc98 Merge pull request #1121 from nartc/patch-1
chore(github) update README.md (add new bronze sponsor)
2018-09-26 19:45:05 +02:00
Chau Tran
515151660b Add AN 2018-09-25 17:57:43 -05:00
Kamil Myśliwiec
7f124f9d92 build(nestjs) fix travis builds 2018-09-24 15:23:41 +02:00
Kamil Myśliwiec
9ffbbad4e8 chore(@nestjs) publish v5.3.10 release 2018-09-24 15:20:30 +02:00
Kamil Myśliwiec
de9664831c chore(@nestjs) publish v5.3.9 release 2018-09-24 15:17:18 +02:00
Kamil Myśliwiec
26eeeb598e chore(nestjs) publish 5.3.8 release 2018-09-24 15:14:09 +02:00
Kamil Myśliwiec
49f97cf72c chore(@nestjs) publish v5.3.8 release 2018-09-24 15:07:47 +02:00
Kamil Myśliwiec
15a6d890a5 Merge branch 'master' of https://github.com/nestjs/nest 2018-09-24 15:06:29 +02:00
Kamil Myśliwiec
a3c1bdc061 chore: update bundle 2018-09-24 15:06:26 +02:00
Kamil Myśliwiec
b75460b34f Merge pull request #1102 from nestjs/bugfix/1098-multiple-http
bugfix: multiple HttpModule collision
2018-09-24 15:06:11 +02:00
Kamil Myśliwiec
25a3684dcf chore(@nestjs) publish v5.3.7-postinstall-next release 2018-09-24 15:04:16 +02:00
Kamil Myśliwiec
9e322c1ed1 refactor(nestjs) fix invalid imports, refactor messages 2018-09-21 10:29:18 +02:00
Kamil Myśliwiec
767ccd3e92 Merge pull request #1103 from jbpionnier/refactor/enable_strict_mode
refactor(nestjs) enable strict mode
2018-09-21 09:27:26 +02:00
Kamil Myśliwiec
0368d5267c merge: resolve conflicts 2018-09-21 09:22:26 +02:00
Kamil Myśliwiec
005d16f447 refactor(nestjs) remove uncessary map calls 2018-09-21 09:21:50 +02:00
Jean-Baptiste Pionnier
d37ec239c4 refactor: clean code 2018-09-20 14:41:15 +02:00
Jean-Baptiste Pionnier
558e33f25c refactor: enable strict mode 2018-09-20 11:24:39 +02:00
Kamil Myśliwiec
5172ef3c49 bugfix(common) fix multiple HttpModule collision 2018-09-19 13:58:47 +02:00
Kamil Myśliwiec
cdccb8ed97 Merge pull request #1094 from jbpionnier/refactor/replace_index_of_methods
refactor(nestjs) replace indexOf methods & improvements
2018-09-19 13:36:55 +02:00
Kamil Myśliwiec
4d407ab239 Merge pull request #1091 from cschroeter/master
sample(prisma) update Prisma example
2018-09-19 13:27:33 +02:00
Kamil Myśliwiec
58120783d5 sample(mongoose) update packages 2018-09-19 12:18:04 +02:00
Jean-Baptiste Pionnier
9732e8a0f4 refactor: code improvement 2018-09-18 11:25:32 +02:00
Jean-Baptiste Pionnier
dabf8a24c7 refactor: replace indexOf method 2018-09-18 10:40:15 +02:00
Christian Schröter
447372a485 refactor: Extract GraphQL related configuration in a dedicated GraphqlOptions class 2018-09-14 15:10:37 +02:00
Christian Schröter
4b042af629 chore: Update graphql.schema.d.ts 2018-09-14 15:09:52 +02:00
Christian Schröter
ff828b9e86 feat: Implement all supoorted queries and mutations 2018-09-14 15:09:35 +02:00
Christian Schröter
806f079c2c chore: Remove duplicate typings 2018-09-14 14:54:42 +02:00
Christian Schröter
a2880d02bd chore: Update dependencies 2018-09-14 14:53:56 +02:00
Kamil Myśliwiec
ce498e8615 bugfix(core) revert stringify instead of hash 2018-09-13 12:21:54 +02:00
Kamil Myśliwiec
14f737f770 Merge branch 'master' of https://github.com/nestjs/nest 2018-09-13 11:46:29 +02:00
Kamil Myśliwiec
a9922dab23 bugfix(core) fix incorrent hash generated by token factory 2018-09-13 11:46:22 +02:00
Kamil Myśliwiec
b1f7096432 Merge pull request #1074 from cschroeter/master
sample(graphql) add prisma integration example
2018-09-13 11:45:33 +02:00
Kamil Myśliwiec
d5dca175d7 Merge pull request #1041 from jbpionnier/refactor/delete_resolve_factory_instance_method
refactor(core) delete resolve factory instance method
2018-09-13 11:44:29 +02:00
Kamil Myśliwiec
66c0b8cf5c sample(grpc) update packages to latest patch versions 2018-09-13 10:43:56 +02:00
Kamil Myśliwiec
e3356cf19e chore(@nestjs) publish v5.3.7 release 2018-09-13 10:42:35 +02:00
Kamil Myśliwiec
4b6ca2a3e0 bugfix(microservices) fix client with loader settings 2018-09-13 10:41:28 +02:00
Kamil Myśliwiec
137e8fd408 Merge branch 'master' of https://github.com/nestjs/nest 2018-09-13 10:20:32 +02:00
Kamil Myśliwiec
03f2832a2d sample(graphql) update graphql sample (add validation) 2018-09-13 10:20:24 +02:00
Christian Schröter
d9a9e7df2f chore: Update graphql schema definitions 2018-09-10 18:20:48 +02:00
Christian Schröter
a3fe26babf chore: Use decorators 2018-09-10 18:20:22 +02:00
Christian Schröter
71cc0dea61 chore: Get rid off obsolete jest configuration 2018-09-10 18:07:55 +02:00
Christian Schröter
6198204b0b chore(Update deps): 2018-09-10 18:07:29 +02:00
Jean-Baptiste Pionnier
32953148df Merge branch 'master' of github.com:nestjs/nest into refactor/delete_resolve_factory_instance_method 2018-09-10 17:08:58 +02:00
Christian Schröter
603ed2de28 feat: Add GraphQL-Prisma example 2018-09-10 16:44:35 +02:00
Kamil Myśliwiec
b272ec313b Update Readme.md 2018-09-09 23:23:26 +02:00
Kamil Myśliwiec
25588d83d0 test(core) fix broken unit tests (container) 2018-09-09 23:15:33 +02:00
Kamil Myśliwiec
d4c0969f1a feature(core) show more descriptive errors on barrel file issues 2018-09-09 22:56:36 +02:00
Kamil Myśliwiec
2d942a8405 test(nestjs) fix broken unit tests (context creator) 2018-09-09 18:29:56 +02:00
Kamil Myśliwiec
e0f5e1d5ca performance(nestjs) context creator improvements 2018-09-09 18:24:54 +02:00
Kamil Myśliwiec
e8c815d8ec sample(nestjs) update packages (apollo sample) 2018-09-09 17:59:11 +02:00
Kamil Myśliwiec
149176ae6f benchmarks(nestjs) use dashes instead of dots 2018-09-09 13:49:28 +02:00
Kamil Myśliwiec
fa3ee7e2aa chore(nestjs) push latest bundle 2018-09-09 13:42:04 +02:00
Kamil Myśliwiec
d5880506df chore(@nestjs) publish v5.3.6 release 2018-09-09 12:23:03 +02:00
Kamil Myśliwiec
dfd0d17126 chore(@nestjs) publish v5.3.5 release 2018-09-09 12:22:16 +02:00
Kamil Myśliwiec
9638c18020 performance(core) add headers check 2018-09-09 11:38:23 +02:00
Anton
17c5044bae feature(microservices) added amqp-connection-manager 2018-09-09 09:44:51 +03:00
Kamil Myśliwiec
9ef356b30f refactor(nestjs) cleanup, get rid of needless condition (interceptors) 2018-09-08 09:24:44 +02:00
Kamil Myśliwiec
1a7ab4e5f9 refactor(nestjs) microservices improvements, reduce memory usage 2018-09-08 09:24:06 +02:00
Anton
6099f9ec1b Merge branch 'master' into feature/rmq-transport 2018-09-08 08:48:16 +03:00
Kamil Myśliwiec
c5da005d81 sample(nestjs) update sample http cache interceptor 2018-09-05 11:40:34 +02:00
Kamil Myśliwiec
76beabe686 sample(nestjs) update sample http cache interceptor 2018-09-05 10:07:50 +02:00
Kamil Myśliwiec
e766ea72ba chore(nestjs) publish 5.3.5 release 2018-09-05 10:04:54 +02:00
Kamil Myśliwiec
2f535c33ae chore(@nestjs) publish v5.3.5 release 2018-09-05 10:04:15 +02:00
Kamil Myśliwiec
20dd9fc8ca bugfix(common) remove useless parts of cache interceptor 2018-09-05 10:03:28 +02:00
Kamil Myśliwiec
6110526402 chore(@nestjs) publish v5.3.4 release 2018-09-05 09:38:05 +02:00
Kamil Myśliwiec
0a1f44ac4d bugfix(common) export CACHE_MANAGER, fix trackBy method 2018-09-05 09:37:33 +02:00
Kamil Myśliwiec
d048f23ff8 improvement(microservices) ensure that connection is shared across promises 2018-09-05 09:37:09 +02:00
Kamil Myśliwiec
f5f8255a37 bugfix(core) check bootstrap lifecycle hook 2018-09-05 09:36:23 +02:00
Jean-Baptiste Pionnier
b296cabd35 refactor: resolve module path 2018-09-03 21:34:15 +02:00
Jean-Baptiste Pionnier
b8a66efbba refactor: delete unnecessary resolveFactoryInstance method 2018-09-03 21:31:16 +02:00
Anton
c5a752c7da Merge branch 'master' into feature/rmq-transport 2018-08-16 18:14:10 +03:00
Anton
f3a80ab7c5 feature(@nestjs/microservices) fixed tests 2018-08-11 15:32:54 +03:00
Anton
014a7c92af feature(@nestjs/microservices) Integration tests 2018-07-26 17:43:27 +03:00
Anton
4bfbb8b9dd feature(@nestjs/microservices) Fixed startAllMicroservicesAsync 2018-07-26 17:07:38 +03:00
Anton
e0d1364e45 feature(@nestjs/microservices) Added additional options and fixes 2018-07-20 18:01:21 +03:00
Anton
bb73598c4c Merge branch 'master' into feature/rmq-transport 2018-07-19 21:49:25 +03:00
Anton
76fea94965 Merge updates 2018-07-19 21:48:31 +03:00
Anton
75e16b40d0 Merge branch 'master' into feature/rmq-transport 2018-07-19 19:29:53 +03:00
Anton
adfa76981d Merge branch 'feature/rmq-transport' 2018-07-19 19:29:26 +03:00
Anton
e7e4bbdd57 feature(@nestjs/microservices) updated package-lock 2018-07-19 19:26:43 +03:00
Anton
6ce0e38951 feature(@nestjs/microservices) revert lock file to resolve conflicts 2018-07-19 19:20:20 +03:00
Anton
bcb6c5f69a feature(@nestjs/microservices) boost performance with correlationID 2018-07-18 12:37:06 +03:00
Anton
0ddc86ee88 test(@nestjs/microservices) tests for rqm transport 2018-07-17 18:52:49 +03:00
Anton
ffe4529018 Merge remote-tracking branch 'origin/feature/rmq-transport' into feature/rmq-transport 2018-07-08 08:31:24 +03:00
Anton
685dc33a56 feature(@nestjs/microservices) added rmq transport support 2018-07-08 08:30:55 +03:00
Anton
3da993e2df Added RMQ Client and Server 2018-07-07 23:33:18 +03:00
1433 changed files with 23306 additions and 22199 deletions

2
.gitattributes vendored Normal file
View File

@@ -0,0 +1,2 @@
package-lock.json -diff -merge
package-lock.json linguist-generated=true

12
.gitignore vendored
View File

@@ -6,16 +6,18 @@ node_modules/
/.awcache
/.vscode
# bundle
packages/**/*.d.ts
packages/**/*.js
# misc
.DS_Store
lerna-debug.log
npm-debug.log
yarn-error.log
/src/common/npm-debug.log
/src/core/npm-debug.log
/src/testing/npm-debug.log
/src/microservices/npm-debug.log
/src/websockets/npm-debug.log
/**/npm-debug.log
/packages/**/.npmignore
/packages/**/LICENSE
# example
/quick-start

13
.npmignore Normal file
View File

@@ -0,0 +1,13 @@
# source
**/*.ts
*.ts
# definitions
!**/*.d.ts
!*.d.ts
# configuration
package-lock.json
tslint.json
tsconfig.json
.prettierrc

View File

@@ -1 +1,2 @@
/bundle
packages/**/*.d.ts
packages/**/*.js

View File

@@ -17,7 +17,8 @@ before_install:
- npm i -g npm@latest
install:
- npm ci
- gulp build
- npm run build:dev
script:
- npm run lint
- npm test
after_success: npm run coverage

View File

@@ -3,14 +3,15 @@
We would love for you to contribute to Nest and help make it even better than it is
today! As a contributor, here are the guidelines we would like you to follow:
- [Code of Conduct](#coc)
- [Question or Problem?](#question)
- [Issues and Bugs](#issue)
- [Feature Requests](#feature)
- [Submission Guidelines](#submit)
- [Coding Rules](#rules)
- [Commit Message Guidelines](#commit)
<!-- - [Signing the CLA](#cla) -->
<!--* [Code of Conduct](#coc)-->
* [Question or Problem?](#question)
* [Issues and Bugs](#issue)
* [Feature Requests](#feature)
* [Submission Guidelines](#submit)
* [Development Setup](#development)
* [Coding Rules](#rules)
* [Commit Message Guidelines](#commit)
<!-- - [Signing the CLA](#cla) -->
<!-- ## <a name="coc"></a> Code of Conduct
Help us keep Nest open and inclusive. Please read and follow our [Code of Conduct][coc]. -->
@@ -22,27 +23,30 @@ Help us keep Nest open and inclusive. Please read and follow our [Code of Conduc
Stack Overflow is a much better place to ask questions since:
<!-- - there are thousands of people willing to help on Stack Overflow [maybe one day] -->
- questions and answers stay available for public viewing so your question / answer might help someone else
- Stack Overflow's voting system assures that the best answers are prominently visible.
* questions and answers stay available for public viewing so your question / answer might help someone else
* Stack Overflow's voting system assures that the best answers are prominently visible.
To save your and our time, we will systematically close all issues that are requests for general support and redirect people to Stack Overflow.
If you would like to chat about the question in real-time, you can reach out via [our gitter channel][gitter].
## <a name="issue"></a> Found a Bug?
If you find a bug in the source code, you can help us by
[submitting an issue](#submit-issue) to our [GitHub Repository][github]. Even better, you can
[submit a Pull Request](#submit-pr) with a fix.
## <a name="feature"></a> Missing a Feature?
You can *request* a new feature by [submitting an issue](#submit-issue) to our GitHub
Repository. If you would like to *implement* a new feature, please submit an issue with
You can _request_ a new feature by [submitting an issue](#submit-issue) to our GitHub
Repository. If you would like to _implement_ a new feature, please submit an issue with
a proposal for your work first, to be sure that we can use it.
Please consider what kind of change it is:
* For a **Major Feature**, first open an issue and outline your proposal so that it can be
discussed. This will also allow us to better coordinate our efforts, prevent duplication of work,
and help you to craft the change so that it is successfully accepted into the project. For your issue name, please prefix your proposal with `[discussion]`, for example "[discussion]: your feature idea".
discussed. This will also allow us to better coordinate our efforts, prevent duplication of work,
and help you to craft the change so that it is successfully accepted into the project. For your issue name, please prefix your proposal with `[discussion]`, for example "[discussion]: your feature idea".
* **Small Features** can be crafted and directly [submitted as a Pull Request](#submit-pr).
## <a name="submit"></a> Submission Guidelines
@@ -53,9 +57,9 @@ Before you submit an issue, please search the issue tracker, maybe an issue for
We want to fix all the issues as soon as possible, but before fixing a bug we need to reproduce and confirm it. In order to reproduce bugs we will systematically ask you to provide a minimal reproduction scenario using a repository or [Gist](https://gist.github.com/). Having a live, reproducible scenario gives us wealth of important information without going back & forth to you with additional questions like:
- version of NestJS used
- 3rd-party libraries and their versions
- and most importantly - a use-case that fails
* version of NestJS used
* 3rd-party libraries and their versions
* and most importantly - a use-case that fails
<!--
// TODO we need to create a playground, similar to plunkr
@@ -68,42 +72,50 @@ Unfortunately, we are not able to investigate / fix bugs without a minimal repro
You can file new issues by filling out our [new issue form](https://github.com/nestjs/nest/issues/new).
### <a name="submit-pr"></a> Submitting a Pull Request (PR)
Before you submit your Pull Request (PR) consider the following guidelines:
<!--
To the first point
1. Please sign our [Contributor License Agreement (CLA)](#cla) before sending PRs.
We cannot accept code without this.
-->
1. Search [GitHub](https://github.com/nestjs/nest/pulls) for an open or closed PR
that relates to your submission. You don't want to duplicate effort.
<!-- 1. Please sign our [Contributor License Agreement (CLA)](#cla) before sending PRs.
We cannot accept code without this. -->
that relates to your submission. You don't want to duplicate effort.
1. Fork the nestjs/nest repo.
1. Make your changes in a new git branch:
```shell
git checkout -b my-fix-branch master
```
```shell
git checkout -b my-fix-branch master
```
1. Create your patch, **including appropriate test cases**.
1. Follow our [Coding Rules](#rules).
1. Run the full Nest test suite, as described in the [developer documentation][dev-doc],
and ensure that all tests pass.
and ensure that all tests pass.
1. Commit your changes using a descriptive commit message that follows our
[commit message conventions](#commit). Adherence to these conventions
is necessary because release notes are automatically generated from these messages.
[commit message conventions](#commit). Adherence to these conventions
is necessary because release notes are automatically generated from these messages.
```shell
git commit -a
```
Note: the optional commit `-a` command line option will automatically "add" and "rm" edited files.
```shell
git commit -a
```
Note: the optional commit `-a` command line option will automatically "add" and "rm" edited files.
1. Push your branch to GitHub:
```shell
git push origin my-fix-branch
```
```shell
git push origin my-fix-branch
```
1. In GitHub, send a pull request to `nestjs:master`.
* If we suggest changes then:
* Make the required updates.
* Re-run the Nest test suites to ensure tests are still passing.
* Rebase your branch and force push to your GitHub repository (this will update your Pull Request):
@@ -122,47 +134,90 @@ from the main (upstream) repository:
* Delete the remote branch on GitHub either through the GitHub web UI or your local shell as follows:
```shell
git push origin --delete my-fix-branch
```
```shell
git push origin --delete my-fix-branch
```
* Check out the master branch:
```shell
git checkout master -f
```
```shell
git checkout master -f
```
* Delete the local branch:
```shell
git branch -D my-fix-branch
```
```shell
git branch -D my-fix-branch
```
* Update your master with the latest upstream version:
```shell
git pull --ff upstream master
```
```shell
git pull --ff upstream master
```
## <a name="development"></a> Development Setup
You will need Node.js version 8.9.0+.
1. After cloning the repo, run:
```bash
$ npm i # (or yarn install)
```
2. In order to prepare your environment run `prepare.sh` shell script:
```bash
$ sh scripts/prepare.sh
```
That will compile fresh packages and afterward, move them to all `sample` directories as well as integration tests.
### Commonly used NPM scripts
```bash
# build all packages and put them near to their source .ts files
$ npm run build
# build all packages and move to "sample" and "integration" directories
# if cross-packages breaking changes were performed you may face irrelevant errors
# in order to verify the build, you can run this command again then
$ npm run build:dev
# run the full unit tests suite
$ npm run test
# run integration tests
# docker is required(!)
$ sh scripts/run-integration.sh
# run linter
$ npm run lint
```
## <a name="rules"></a> Coding Rules
To ensure consistency throughout the source code, keep these rules in mind as you are working:
* All features or bug fixes **must be tested** by one or more specs (unit-tests).
<!--
// We're working on auto-documentation.
* All public API methods **must be documented**. (Details TBC). -->
* All features or bug fixes **must be tested** by one or more specs (unit-tests).
* We follow [Google's JavaScript Style Guide][js-style-guide], but wrap all code at
**100 characters**. An automated formatter is available, see
[DEVELOPER.md](docs/DEVELOPER.md#clang-format).
## <a name="commit"></a> Commit Message Guidelines
We have very precise rules over how our git commit messages can be formatted. This leads to **more
readable messages** that are easy to follow when looking through the **project history**. But also,
We have very precise rules over how our git commit messages can be formatted. This leads to **more
readable messages** that are easy to follow when looking through the **project history**. But also,
we use the git commit messages to **generate the Nest change log**.
### Commit Message Format
Each commit message consists of a **header**, a **body** and a **footer**. The header has a special
Each commit message consists of a **header**, a **body** and a **footer**. The header has a special
format that includes a **type**, a **scope** and a **subject**:
```
@@ -184,17 +239,15 @@ Samples: (even more [samples](https://github.com/nestjs/nest/commits/master))
```
docs(changelog) update change log to beta.5
```
```
bugfix(core) need to depend on latest rxjs and zone.js
The version in our package.json gets copied to the one we publish, and users need the latest of these.
```
### Revert
If the commit reverts a previous commit, it should begin with `revert: `, followed by the header of the reverted commit. In the body it should say: `This reverts commit <hash>.`, where the hash is the SHA of the commit being reverted.
If the commit reverts a previous commit, it should begin with `revert:`, followed by the header of the reverted commit. In the body it should say: `This reverts commit <hash>.`, where the hash is the SHA of the commit being reverted.
### Type
Must be one of the following:
* **build**: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
@@ -208,6 +261,7 @@ Must be one of the following:
* **test**: Adding missing tests or correcting existing tests
### Scope
The scope should be the name of the npm package affected (as perceived by person reading changelog generated from commit messages.
The following is the list of supported scopes:
@@ -224,10 +278,11 @@ There are currently a few exceptions to the "use package name" rule:
* **packaging**: used for changes that change the npm package layout in all of our packages, e.g. public path changes, package.json changes done to all packages, d.ts file/format changes, changes to bundles, etc.
* **changelog**: used for updating the release notes in CHANGELOG.md
* **sample/#**: for the example apps directory, replacing # with the example app number
<!-- * **aio**: used for docs-app (angular.io) related changes within the /aio directory of the repo -->
* none/empty string: useful for `style`, `test` and `refactor` changes that are done across all packages (e.g. `style: add missing semicolons`)
<!-- * **aio**: used for docs-app (angular.io) related changes within the /aio directory of the repo -->
### Subject
The subject contains succinct description of the change:
* use the imperative, present tense: "change" not "changed" nor "changes"
@@ -235,10 +290,12 @@ The subject contains succinct description of the change:
* no dot (.) at the end
### Body
Just as in the **subject**, use the imperative, present tense: "change" not "changed" nor "changes".
The body should include the motivation for the change and contrast this with previous behavior.
### Footer
The footer should contain any information about **Breaking Changes** and is also the place to
reference GitHub issues that this commit **Closes**.
@@ -255,9 +312,10 @@ changes to be accepted, the CLA must be signed. It's a quick process, we promise
* For corporations we'll need you to
[print, sign and one of scan+email, fax or mail the form][corporate-cla]. -->
<!-- [angular-group]: https://groups.google.com/forum/#!forum/angular -->
<!-- [coc]: https://github.com/angular/code-of-conduct/blob/master/CODE_OF_CONDUCT.md -->
[commit-message-format]: https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#
[corporate-cla]: http://code.google.com/legal/corporate-cla-v1.0.html
[dev-doc]: https://github.com/nestjs/nest/blob/master/docs/DEVELOPER.md
@@ -268,4 +326,5 @@ changes to be accepted, the CLA must be signed. It's a quick process, we promise
[jsfiddle]: http://jsfiddle.net
[plunker]: http://plnkr.co/edit
[runnable]: http://runnable.com
<!-- [stackoverflow]: http://stackoverflow.com/questions/tagged/angular -->

View File

@@ -14,7 +14,7 @@
<a href="https://www.npmjs.com/~nestjscore"><img src="https://img.shields.io/npm/dm/@nestjs/core.svg" alt="NPM Downloads" /></a>
<a href="https://travis-ci.org/nestjs/nest"><img src="https://api.travis-ci.org/nestjs/nest.svg?branch=master" alt="Travis" /></a>
<a href="https://travis-ci.org/nestjs/nest"><img src="https://img.shields.io/travis/nestjs/nest/master.svg?label=linux" alt="Linux" /></a>
<a href="https://coveralls.io/github/nestjs/nest?branch=master"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#7" alt="Coverage" /></a>
<a href="https://coveralls.io/github/nestjs/nest?branch=master"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#8" alt="Coverage" /></a>
<a href="https://gitter.im/nestjs/nestjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=body_badge"><img src="https://badges.gitter.im/nestjs/nestjs.svg" alt="Gitter" /></a>
<a href="https://opencollective.com/nest#backer"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
<a href="https://opencollective.com/nest#sponsor"><img src="https://opencollective.com/nest/sponsors/badge.svg" alt="Sponsors on Open Collective" /></a>
@@ -53,12 +53,13 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
<a href="http://xtremis.com/"><img src="https://nestjs.com/img/logo-xtremis.svg" width="220" /></a>
#### Silver Sponsors
<a href="https://neoteric.eu/"><img src="https://nestjs.com/img/neoteric-cut.png" width="120" /></a> &nbsp; <a href="https://www.swingdev.io"><img src="https://nestjs.com/img/swingdev-logo.svg#1" width="150" /></a>
<a href="https://neoteric.eu/"><img src="https://nestjs.com/img/neoteric-cut.png" width="120" /></a> &nbsp;
<a href="http://gojob.com"><img src="http://nestjs.com/img/gojob-logo.png" valign="bottom" height="95" /></a> &nbsp; <a href="https://www.swingdev.io"><img src="https://nestjs.com/img/swingdev-logo.svg#1" width="150" /> </a>
#### Sponsors
<a href="https://scal.io"><img src="https://nestjs.com/img/scalio-logo.svg" width="110" /></a> &nbsp; <a href="http://angularity.io"><img src="http://angularity.io/media/logo.svg" height="30" /></a> &nbsp; <a href="http://gojob.com"><img src="https://gojob.com/w/wp-content/uploads/2017/02/cropped-Logo-web-home.png" height="40" /> &nbsp; <!--<a href="https://keycdn.com"><img src="https://nestjs.com/img/keycdn.svg" height="30" /></a> &nbsp;--> <a href="https://hostpresto.com"><img src="https://nestjs.com/img/hostpresto.png" height="30" /></a>
<a href="https://scal.io"><img src="https://nestjs.com/img/scalio-logo.svg" width="110" /></a> &nbsp; <a href="http://angularity.io"><img src="http://angularity.io/media/logo.svg" height="30" /></a> &nbsp; <!--<a href="https://keycdn.com"><img src="https://nestjs.com/img/keycdn.svg" height="30" /></a> &nbsp;--> <a href="https://hostpresto.com"><img src="https://nestjs.com/img/hostpresto.png" height="30" /></a> &nbsp; <a href="https://genuinebee.com/"><img src="https://nestjs.com/img/genuinebee.svg" height="38" /></a> &nbsp; <a href="http://architectnow.net/"><img src="https://nestjs.com/img/architectnow.png" height="24" /></a> &nbsp; <a href="https://quander.io/"><img src="https://nestjs.com/img/quander.png" height="28" /></a>
## Backers

48
benchmarks/all_output.txt Normal file
View File

@@ -0,0 +1,48 @@
-----------------------
express
-----------------------
Running 10s test @ http://localhost:3000
8 threads and 1024 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 47.78ms 19.09ms 212.47ms 66.94%
Req/Sec 1.31k 268.90 2.07k 72.38%
104687 requests in 10.02s, 21.47MB read
Socket errors: connect 0, read 877, write 0, timeout 0
Requests/sec: 10444.24
Transfer/sec: 2.14MB
-----------------------
fastify
-----------------------
Running 10s test @ http://localhost:3000
8 threads and 1024 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 21.80ms 8.73ms 78.12ms 55.78%
Req/Sec 2.99k 0.92k 5.67k 68.88%
238550 requests in 10.02s, 31.17MB read
Socket errors: connect 0, read 862, write 0, timeout 0
Requests/sec: 23795.79
Transfer/sec: 3.11MB
-----------------------
nest
-----------------------
Running 10s test @ http://localhost:3000
8 threads and 1024 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 54.00ms 22.33ms 200.25ms 62.23%
Req/Sec 1.15k 338.60 1.88k 66.12%
91348 requests in 10.05s, 18.82MB read
Socket errors: connect 0, read 983, write 0, timeout 0
Requests/sec: 9093.64
Transfer/sec: 1.87MB
-----------------------
nest-fastify
-----------------------
Running 10s test @ http://localhost:3000
8 threads and 1024 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 29.31ms 11.71ms 101.96ms 70.03%
Req/Sec 2.17k 0.93k 4.12k 63.13%
173241 requests in 10.05s, 22.80MB read
Socket errors: connect 0, read 934, write 0, timeout 0
Requests/sec: 17233.87
Transfer/sec: 2.27MB

7
benchmarks/express.js Normal file
View File

@@ -0,0 +1,7 @@
'use strict';
const express = require('express');
const app = express();
app.get('/', async (req, res) => res.send('Hello world'));
app.listen(3000);

5
benchmarks/fastify.js Normal file
View File

@@ -0,0 +1,5 @@
'use strict';
const fastify = require('fastify')();
fastify.get('/', async (req, reply) => reply.send('Hello world'));
fastify.listen(3000);

View File

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

9
benchmarks/nest.js Normal file
View File

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

3
benchmarks/nest/app.controller.d.ts vendored Normal file
View File

@@ -0,0 +1,3 @@
export declare class AppController {
root(): string;
}

View File

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

View File

@@ -0,0 +1 @@
{"version":3,"file":"app.controller.js","sourceRoot":"","sources":["../src/app.controller.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2CAAiD;AAGjD,IAAa,aAAa,GAA1B,MAAa,aAAa;IAExB,IAAI;QACF,OAAO,cAAc,CAAA;IACvB,CAAC;CACF,CAAA;AAHC;IADC,YAAG,EAAE;;;;yCAGL;AAJU,aAAa;IADzB,mBAAU,EAAE;GACA,aAAa,CAKzB;AALY,sCAAa"}

1
benchmarks/nest/app.module.d.ts vendored Normal file
View File

@@ -0,0 +1 @@
export declare class AppModule {}

View File

@@ -6,20 +6,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
const bad_request_exception_1 = require("../exceptions/bad-request.exception");
const index_1 = require("../index");
let ParseIntPipe = class ParseIntPipe {
async transform(value, metadata) {
const isNumeric = 'string' === typeof value &&
!isNaN(parseFloat(value)) &&
isFinite(value);
if (!isNumeric) {
throw new bad_request_exception_1.BadRequestException('Validation failed (numeric string is expected)');
}
return parseInt(value, 10);
}
const common_1 = require("@nestjs/common");
const app_controller_1 = require("./app.controller");
let AppModule = class AppModule {
};
ParseIntPipe = __decorate([
index_1.Injectable()
], ParseIntPipe);
exports.ParseIntPipe = ParseIntPipe;
AppModule = __decorate([
common_1.Module({
imports: [],
controllers: [app_controller_1.AppController],
})
], AppModule);
exports.AppModule = AppModule;
//# sourceMappingURL=app.module.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;AAAA,2CAAwC;AACxC,qDAAiD;AAMjD,IAAa,SAAS,GAAtB,MAAa,SAAS;CAAG,CAAA;AAAZ,SAAS;IAJrB,eAAM,CAAC;QACN,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,CAAC,8BAAa,CAAC;KAC7B,CAAC;GACW,SAAS,CAAG;AAAZ,8BAAS"}

View File

@@ -0,0 +1 @@
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;AAAA,uCAA2C;AAC3C,6CAAyC;AAEzC,KAAK,UAAU,SAAS;IACtB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,CAAC,CAAC;IAChD,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AACD,SAAS,EAAE,CAAC"}

14
benchmarks/run.sh Normal file
View File

@@ -0,0 +1,14 @@
#!/usr/bin/env bash
echo 'Library:' $1
node $1 &
pid=$!
sleep 2
wrk 'http://localhost:3000' \
-d 10 \
-c 1024 \
-t 8
kill $pid

23
benchmarks/run_all.sh Normal file
View File

@@ -0,0 +1,23 @@
#!/usr/bin/env bash
: > all_output.txt
lib=(express fastify nest nest-fastify)
for item in ${lib[*]}
do
echo '-----------------------' >> all_output.txt
echo $item >> all_output.txt
echo '-----------------------' >> all_output.txt
node $item &
pid=$!
sleep 2
wrk 'http://localhost:3000' \
-d 10 \
-c 1024 \
-t 8 >> all_output.txt
kill $pid
done

View File

@@ -1,3 +0,0 @@
export declare const CACHE_MANAGER = "CACHE_MANAGER";
export declare const CACHE_MODULE_OPTIONS = "CACHE_MODULE_OPTIONS";
export declare const CACHE_KEY_METADATA = "cache_module:cache_key";

View File

@@ -1,5 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CACHE_MANAGER = 'CACHE_MANAGER';
exports.CACHE_MODULE_OPTIONS = 'CACHE_MODULE_OPTIONS';
exports.CACHE_KEY_METADATA = 'cache_module:cache_key';

View File

@@ -1,8 +0,0 @@
import { DynamicModule } from '../interfaces';
import { CacheModuleAsyncOptions, CacheModuleOptions } from './interfaces/cache-module.interface';
export declare class CacheModule {
static register(options?: CacheModuleOptions): DynamicModule;
static registerAsync(options: CacheModuleAsyncOptions): DynamicModule;
private static createAsyncProviders(options);
private static createAsyncOptionsProvider(options);
}

View File

@@ -1,60 +0,0 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
const decorators_1 = require("../decorators");
const cache_constants_1 = require("./cache.constants");
const cache_providers_1 = require("./cache.providers");
let CacheModule = CacheModule_1 = class CacheModule {
static register(options = {}) {
return {
module: CacheModule_1,
providers: [{ provide: cache_constants_1.CACHE_MODULE_OPTIONS, useValue: options }],
};
}
static registerAsync(options) {
return {
module: CacheModule_1,
imports: options.imports,
providers: this.createAsyncProviders(options),
};
}
static createAsyncProviders(options) {
if (options.useExisting || options.useFactory) {
return [this.createAsyncOptionsProvider(options)];
}
return [
this.createAsyncOptionsProvider(options),
{
provide: options.useClass,
useClass: options.useClass,
},
];
}
static createAsyncOptionsProvider(options) {
if (options.useFactory) {
return {
provide: cache_constants_1.CACHE_MODULE_OPTIONS,
useFactory: options.useFactory,
inject: options.inject || [],
};
}
return {
provide: cache_constants_1.CACHE_MODULE_OPTIONS,
useFactory: async (optionsFactory) => await optionsFactory.createCacheOptions(),
inject: [options.useExisting || options.useClass],
};
}
};
CacheModule = CacheModule_1 = __decorate([
decorators_1.Module({
providers: [cache_providers_1.createCacheManager()],
exports: [cache_constants_1.CACHE_MANAGER],
})
], CacheModule);
exports.CacheModule = CacheModule;
var CacheModule_1;

View File

@@ -1,2 +0,0 @@
import { Provider } from '../interfaces';
export declare function createCacheManager(): Provider;

View File

@@ -1,17 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const load_package_util_1 = require("../utils/load-package.util");
const cache_constants_1 = require("./cache.constants");
const default_options_1 = require("./default-options");
function createCacheManager() {
return {
provide: cache_constants_1.CACHE_MANAGER,
useFactory: (options) => {
const cacheManager = load_package_util_1.loadPackage('cache-manager', 'CacheModule');
const memoryCache = cacheManager.caching(Object.assign({}, default_options_1.defaultCacheOptions, (options || {})));
return memoryCache;
},
inject: [cache_constants_1.CACHE_MODULE_OPTIONS],
};
}
exports.createCacheManager = createCacheManager;

View File

@@ -1 +0,0 @@
export declare const CacheKey: (key: string) => (target: object, key?: any, descriptor?: any) => any;

View File

@@ -1,5 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const decorators_1 = require("../../decorators");
const cache_constants_1 = require("../cache.constants");
exports.CacheKey = (key) => decorators_1.ReflectMetadata(cache_constants_1.CACHE_KEY_METADATA, key);

View File

@@ -1 +0,0 @@
export * from './cache-key.decorator';

View File

@@ -1,6 +0,0 @@
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(require("./cache-key.decorator"));

View File

@@ -1,5 +0,0 @@
export declare const defaultCacheOptions: {
ttl: number;
max: number;
store: string;
};

View File

@@ -1,7 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultCacheOptions = {
ttl: 5,
max: 100,
store: 'memory',
};

View File

@@ -1,4 +0,0 @@
export * from './cache.module';
export * from './decorators';
export * from './interceptors';
export * from './interfaces';

View File

@@ -1,8 +0,0 @@
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(require("./cache.module"));
__export(require("./decorators"));
__export(require("./interceptors"));

View File

@@ -1,11 +0,0 @@
import { Observable } from 'rxjs';
import { ExecutionContext, HttpServer, NestInterceptor } from '../../interfaces';
export declare class CacheInterceptor implements NestInterceptor {
protected readonly httpServer: HttpServer;
protected readonly cacheManager: any;
protected readonly reflector: any;
protected readonly isHttpApp: boolean;
constructor(httpServer: HttpServer, cacheManager: any, reflector: any);
intercept(context: ExecutionContext, call$: Observable<any>): Promise<Observable<any>>;
getCacheKey(context: ExecutionContext): string | undefined;
}

View File

@@ -1,66 +0,0 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
const rxjs_1 = require("rxjs");
const operators_1 = require("rxjs/operators");
const decorators_1 = require("../../decorators");
const cache_constants_1 = require("../cache.constants");
// NOTE (external)
// We need to deduplicate them here due to the circular dependency
// between core and common packages
const HTTP_SERVER_REF = 'HTTP_SERVER_REF';
const REFLECTOR = 'Reflector';
let CacheInterceptor = class CacheInterceptor {
constructor(httpServer, cacheManager, reflector) {
this.httpServer = httpServer;
this.cacheManager = cacheManager;
this.reflector = reflector;
this.isHttpApp = httpServer && !!httpServer.getRequestMethod;
}
async intercept(context, call$) {
const key = this.getCacheKey(context);
if (!key) {
return call$;
}
try {
const value = await this.cacheManager.get(key);
if (value) {
return rxjs_1.of(value);
}
return call$.pipe(operators_1.tap(response => this.cacheManager.set(key, response)));
}
catch (_a) {
return call$;
}
}
getCacheKey(context) {
if (!this.isHttpApp) {
return this.reflector.get(cache_constants_1.CACHE_KEY_METADATA, context.getHandler());
}
const request = context.getArgByIndex(0);
if (this.httpServer.getRequestMethod(request) !== 'GET') {
return undefined;
}
return this.httpServer.getRequestUrl(context.getArgByIndex(0));
}
};
CacheInterceptor = __decorate([
decorators_1.Injectable(),
__param(0, decorators_1.Optional()),
__param(0, decorators_1.Inject(HTTP_SERVER_REF)),
__param(1, decorators_1.Inject(cache_constants_1.CACHE_MANAGER)),
__param(2, decorators_1.Inject(REFLECTOR)),
__metadata("design:paramtypes", [Object, Object, Object])
], CacheInterceptor);
exports.CacheInterceptor = CacheInterceptor;

View File

@@ -1 +0,0 @@
export * from './cache.interceptor';

View File

@@ -1,6 +0,0 @@
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(require("./cache.interceptor"));

View File

@@ -1,17 +0,0 @@
export interface LiteralObject {
[key: string]: any;
}
export interface CacheStore {
set<T>(key: string, value: T): Promise<void> | void;
get<T>(key: string): Promise<void> | void;
del(key: string): void | Promise<void>;
}
export interface CacheStoreFactory {
create(args: LiteralObject): CacheStore;
}
export interface CacheManagerOptions {
store?: string | CacheStoreFactory;
ttl?: number;
max?: number;
isCacheableValue?: (value: any) => boolean;
}

View File

@@ -1,2 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

View File

@@ -1,14 +0,0 @@
import { ModuleMetadata, Type } from './../../interfaces';
import { CacheManagerOptions } from './cache-manager.interface';
export interface CacheModuleOptions extends CacheManagerOptions {
[key: string]: any;
}
export interface CacheOptionsFactory {
createCacheOptions(): Promise<CacheModuleOptions> | CacheModuleOptions;
}
export interface CacheModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
useExisting?: Type<CacheOptionsFactory>;
useClass?: Type<CacheOptionsFactory>;
useFactory?: (...args: any[]) => Promise<CacheModuleOptions> | CacheModuleOptions;
inject?: any[];
}

View File

@@ -1,2 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

View File

@@ -1,2 +0,0 @@
export * from './cache-manager.interface';
export * from './cache-module.interface';

View File

@@ -1,2 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

View File

@@ -1,28 +0,0 @@
export declare const metadata: {
MODULES: string;
IMPORTS: string;
COMPONENTS: string;
PROVIDERS: string;
CONTROLLERS: string;
EXPORTS: string;
};
export declare const SHARED_MODULE_METADATA = "__sharedModule__";
export declare const GLOBAL_MODULE_METADATA = "__globalModule__";
export declare const PATH_METADATA = "path";
export declare const PARAMTYPES_METADATA = "design:paramtypes";
export declare const SELF_DECLARED_DEPS_METADATA = "self:paramtypes";
export declare const OPTIONAL_DEPS_METADATA = "optional:paramtypes";
export declare const METHOD_METADATA = "method";
export declare const ROUTE_ARGS_METADATA = "__routeArguments__";
export declare const CUSTOM_ROUTE_AGRS_METADATA = "__customRouteArgs__";
export declare const EXCEPTION_FILTERS_METADATA = "__exceptionFilters__";
export declare const FILTER_CATCH_EXCEPTIONS = "__filterCatchExceptions__";
export declare const PIPES_METADATA = "__pipes__";
export declare const GUARDS_METADATA = "__guards__";
export declare const RENDER_METADATA = "__renderTemplate__";
export declare const INTERCEPTORS_METADATA = "__interceptors__";
export declare const HTTP_CODE_METADATA = "__httpCode__";
export declare const GATEWAY_MIDDLEWARES = "__gatewayMiddleware";
export declare const MODULE_PATH = "__module_path__";
export declare const HEADERS_METADATA = "__headers__";
export declare const REDIRECT_METADATA = "__redirect__";

View File

@@ -1,30 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.metadata = {
MODULES: 'modules',
IMPORTS: 'imports',
COMPONENTS: 'components',
PROVIDERS: 'providers',
CONTROLLERS: 'controllers',
EXPORTS: 'exports',
};
exports.SHARED_MODULE_METADATA = '__sharedModule__';
exports.GLOBAL_MODULE_METADATA = '__globalModule__';
exports.PATH_METADATA = 'path';
exports.PARAMTYPES_METADATA = 'design:paramtypes';
exports.SELF_DECLARED_DEPS_METADATA = 'self:paramtypes';
exports.OPTIONAL_DEPS_METADATA = 'optional:paramtypes';
exports.METHOD_METADATA = 'method';
exports.ROUTE_ARGS_METADATA = '__routeArguments__';
exports.CUSTOM_ROUTE_AGRS_METADATA = '__customRouteArgs__';
exports.EXCEPTION_FILTERS_METADATA = '__exceptionFilters__';
exports.FILTER_CATCH_EXCEPTIONS = '__filterCatchExceptions__';
exports.PIPES_METADATA = '__pipes__';
exports.GUARDS_METADATA = '__guards__';
exports.RENDER_METADATA = '__renderTemplate__';
exports.INTERCEPTORS_METADATA = '__interceptors__';
exports.HTTP_CODE_METADATA = '__httpCode__';
exports.GATEWAY_MIDDLEWARES = '__gatewayMiddleware';
exports.MODULE_PATH = '__module_path__';
exports.HEADERS_METADATA = '__headers__';
exports.REDIRECT_METADATA = '__redirect__';

View File

@@ -1,6 +0,0 @@
/**
* Binds parameters decorators to the particular method
* Useful when the language doesn't provide a 'Parameter Decorators' feature (vanilla JavaScript)
* @param {} ...decorators
*/
export declare function Bind(...decorators: any[]): (target: object, key: any, descriptor: any) => any;

View File

@@ -1,14 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Binds parameters decorators to the particular method
* Useful when the language doesn't provide a 'Parameter Decorators' feature (vanilla JavaScript)
* @param {} ...decorators
*/
function Bind(...decorators) {
return (target, key, descriptor) => {
decorators.forEach((fn, index) => fn(target, key, index));
return descriptor;
};
}
exports.Bind = Bind;

View File

@@ -1,7 +0,0 @@
import 'reflect-metadata';
import { Type } from '../../interfaces';
/**
* Defines the Exceptions Filter. Takes set of exception types as an argument which has to be caught by this Filter.
* The class should implement the `ExceptionFilter` interface.
*/
export declare function Catch(...exceptions: Type<any>[]): ClassDecorator;

View File

@@ -1,14 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const constants_1 = require("../../constants");
/**
* Defines the Exceptions Filter. Takes set of exception types as an argument which has to be caught by this Filter.
* The class should implement the `ExceptionFilter` interface.
*/
function Catch(...exceptions) {
return (target) => {
Reflect.defineMetadata(constants_1.FILTER_CATCH_EXCEPTIONS, exceptions, target);
};
}
exports.Catch = Catch;

View File

@@ -1,32 +0,0 @@
/**
* Defines the injectable class. This class can inject dependencies through constructor.
* Those dependencies have to belong to the same module.
*/
export declare function Injectable(): ClassDecorator;
/**
* @deprecated
* Defines the Component. The component can inject dependencies through constructor.
* Those dependencies have to belong to the same module.
*/
export declare function Component(): ClassDecorator;
/**
* @deprecated
* Defines the Pipe. The Pipe should implement the `PipeTransform` interface.
*/
export declare function Pipe(): ClassDecorator;
/**
* @deprecated
* Defines the Guard. The Guard should implement the `CanActivate` interface.
*/
export declare function Guard(): ClassDecorator;
/**
* @deprecated
* Defines the Middleware. The Middleware should implement the `NestMiddleware` interface.
*/
export declare function Middleware(): ClassDecorator;
/**
* @deprecated
* Defines the Interceptor. The Interceptor should implement `HttpInterceptor`, `RpcInterceptor` or `WsInterceptor` interface.
*/
export declare function Interceptor(): ClassDecorator;
export declare function mixin(mixinClass: any): any;

View File

@@ -1,66 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const deprecate = require("deprecate");
const uuid = require("uuid/v4");
/**
* Defines the injectable class. This class can inject dependencies through constructor.
* Those dependencies have to belong to the same module.
*/
function Injectable() {
return (target) => { };
}
exports.Injectable = Injectable;
/**
* @deprecated
* Defines the Component. The component can inject dependencies through constructor.
* Those dependencies have to belong to the same module.
*/
function Component() {
deprecate('The @Component() decorator is deprecated and will be removed within next major release. Use @Injectable() instead.');
return (target) => { };
}
exports.Component = Component;
/**
* @deprecated
* Defines the Pipe. The Pipe should implement the `PipeTransform` interface.
*/
function Pipe() {
deprecate('The @Pipe() decorator is deprecated and will be removed within next major release. Use @Injectable() instead.');
return (target) => { };
}
exports.Pipe = Pipe;
/**
* @deprecated
* Defines the Guard. The Guard should implement the `CanActivate` interface.
*/
function Guard() {
deprecate('The @Guard() decorator is deprecated and will be removed within next major release. Use @Injectable() instead.');
return (target) => { };
}
exports.Guard = Guard;
/**
* @deprecated
* Defines the Middleware. The Middleware should implement the `NestMiddleware` interface.
*/
function Middleware() {
deprecate('The @Middleware() decorator is deprecated and will be removed within next major release. Use @Injectable() instead.');
return (target) => { };
}
exports.Middleware = Middleware;
/**
* @deprecated
* Defines the Interceptor. The Interceptor should implement `HttpInterceptor`, `RpcInterceptor` or `WsInterceptor` interface.
*/
function Interceptor() {
deprecate('The @Interceptor() decorator is deprecated and will be removed within next major release. Use @Injectable() instead.');
return (target) => { };
}
exports.Interceptor = Interceptor;
function mixin(mixinClass) {
Object.defineProperty(mixinClass, 'name', {
value: uuid(),
});
Injectable()(mixinClass);
return mixinClass;
}
exports.mixin = mixin;

View File

@@ -1,6 +0,0 @@
import 'reflect-metadata';
/**
* Defines the Controller. The controller can inject dependencies through constructor.
* Those dependencies have to belong to the same module.
*/
export declare function Controller(prefix?: string): ClassDecorator;

View File

@@ -1,16 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const shared_utils_1 = require("../../utils/shared.utils");
const constants_1 = require("../../constants");
/**
* Defines the Controller. The controller can inject dependencies through constructor.
* Those dependencies have to belong to the same module.
*/
function Controller(prefix) {
const path = shared_utils_1.isUndefined(prefix) ? '/' : prefix;
return (target) => {
Reflect.defineMetadata(constants_1.PATH_METADATA, path, target);
};
}
exports.Controller = Controller;

View File

@@ -1,3 +0,0 @@
import 'reflect-metadata';
export declare function flatten(arr: any[]): any;
export declare const Dependencies: (...dependencies: any[]) => ClassDecorator;

View File

@@ -1,15 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const constants_1 = require("../../constants");
function flatten(arr) {
const flat = [].concat(...arr);
return flat.some(Array.isArray) ? flatten(flat) : flat;
}
exports.flatten = flatten;
exports.Dependencies = (...dependencies) => {
const flattenDeps = flatten(dependencies);
return (target) => {
Reflect.defineMetadata(constants_1.PARAMTYPES_METADATA, flattenDeps, target);
};
};

View File

@@ -1,13 +0,0 @@
import 'reflect-metadata';
import { ExceptionFilter } from '../../index';
/**
* Setups exception filters to the chosen context.
* When the `@UseFilters()` is used on the controller level:
* - Exception Filter will be set up to every handler (every method)
*
* When the `@UseFilters()` is used on the handle level:
* - Exception Filter will be set up only to specified method
*
* @param {ExceptionFilter[]} ...filters
*/
export declare const UseFilters: (...filters: (Function | ExceptionFilter<any>)[]) => (target: any, key?: any, descriptor?: any) => any;

View File

@@ -1,31 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const constants_1 = require("../../constants");
const extend_metadata_util_1 = require("../../utils/extend-metadata.util");
const shared_utils_1 = require("../../utils/shared.utils");
const validate_each_util_1 = require("../../utils/validate-each.util");
const defineFiltersMetadata = (...filters) => {
return (target, key, descriptor) => {
const isFilterValid = filter => filter && (shared_utils_1.isFunction(filter) || shared_utils_1.isFunction(filter.catch));
if (descriptor) {
validate_each_util_1.validateEach(target.constructor, filters, isFilterValid, '@UseFilters', 'filter');
extend_metadata_util_1.extendArrayMetadata(constants_1.EXCEPTION_FILTERS_METADATA, filters, descriptor.value);
return descriptor;
}
validate_each_util_1.validateEach(target, filters, isFilterValid, '@UseFilters', 'filter');
extend_metadata_util_1.extendArrayMetadata(constants_1.EXCEPTION_FILTERS_METADATA, filters, target);
return target;
};
};
/**
* Setups exception filters to the chosen context.
* When the `@UseFilters()` is used on the controller level:
* - Exception Filter will be set up to every handler (every method)
*
* When the `@UseFilters()` is used on the handle level:
* - Exception Filter will be set up only to specified method
*
* @param {ExceptionFilter[]} ...filters
*/
exports.UseFilters = (...filters) => defineFiltersMetadata(...filters);

View File

@@ -1,12 +0,0 @@
export * from './bind.decorator';
export * from './catch.decorator';
export * from './component.decorator';
export * from './controller.decorator';
export * from './dependencies.decorator';
export * from './exception-filters.decorator';
export * from './inject.decorator';
export * from './optional.decorator';
export * from './reflect-metadata.decorator';
export * from './use-guards.decorator';
export * from './use-interceptors.decorator';
export * from './use-pipes.decorator';

View File

@@ -1,17 +0,0 @@
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(require("./bind.decorator"));
__export(require("./catch.decorator"));
__export(require("./component.decorator"));
__export(require("./controller.decorator"));
__export(require("./dependencies.decorator"));
__export(require("./exception-filters.decorator"));
__export(require("./inject.decorator"));
__export(require("./optional.decorator"));
__export(require("./reflect-metadata.decorator"));
__export(require("./use-guards.decorator"));
__export(require("./use-interceptors.decorator"));
__export(require("./use-pipes.decorator"));

View File

@@ -1,6 +0,0 @@
import 'reflect-metadata';
/**
* Injects provider which has to be available in the current injector (module) scope.
* Providers are recognized by types or tokens.
*/
export declare function Inject<T = any>(token: T): ParameterDecorator;

View File

@@ -1,18 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const constants_1 = require("../../constants");
const shared_utils_1 = require("../../utils/shared.utils");
/**
* Injects provider which has to be available in the current injector (module) scope.
* Providers are recognized by types or tokens.
*/
function Inject(token) {
return (target, key, index) => {
const args = Reflect.getMetadata(constants_1.SELF_DECLARED_DEPS_METADATA, target) || [];
const type = shared_utils_1.isFunction(token) ? token.name : token;
args.push({ index, param: type });
Reflect.defineMetadata(constants_1.SELF_DECLARED_DEPS_METADATA, args, target);
};
}
exports.Inject = Inject;

View File

@@ -1,5 +0,0 @@
import 'reflect-metadata';
/**
* Sets dependency as an optional one.
*/
export declare function Optional(): ParameterDecorator;

View File

@@ -1,14 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const constants_1 = require("../../constants");
/**
* Sets dependency as an optional one.
*/
function Optional() {
return (target, key, index) => {
const args = Reflect.getMetadata(constants_1.OPTIONAL_DEPS_METADATA, target) || [];
Reflect.defineMetadata(constants_1.OPTIONAL_DEPS_METADATA, [...args, index], target);
};
}
exports.Optional = Optional;

View File

@@ -1,5 +0,0 @@
/**
* Assigns the metadata to the class/function under specified `key`.
* This metadata can be reflected using `Reflector` class.
*/
export declare const ReflectMetadata: <K = any, V = any>(metadataKey: K, metadataValue: V) => (target: object, key?: any, descriptor?: any) => any;

View File

@@ -1,14 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Assigns the metadata to the class/function under specified `key`.
* This metadata can be reflected using `Reflector` class.
*/
exports.ReflectMetadata = (metadataKey, metadataValue) => (target, key, descriptor) => {
if (descriptor) {
Reflect.defineMetadata(metadataKey, metadataValue, descriptor.value);
return descriptor;
}
Reflect.defineMetadata(metadataKey, metadataValue, target);
return target;
};

View File

@@ -1,12 +0,0 @@
import { CanActivate } from '../../interfaces';
/**
* Binds guards to the particular context.
* When the `@UseGuards()` is used on the controller level:
* - Guard will be register to each handler (every method)
*
* When the `@UseGuards()` is used on the handler level:
* - Guard will be registered only to specified method
*
* @param {} ...guards
*/
export declare function UseGuards(...guards: (CanActivate | Function)[]): (target: any, key?: any, descriptor?: any) => any;

View File

@@ -1,30 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("../../constants");
const extend_metadata_util_1 = require("../../utils/extend-metadata.util");
const validate_each_util_1 = require("../../utils/validate-each.util");
const shared_utils_1 = require("../../utils/shared.utils");
/**
* Binds guards to the particular context.
* When the `@UseGuards()` is used on the controller level:
* - Guard will be register to each handler (every method)
*
* When the `@UseGuards()` is used on the handler level:
* - Guard will be registered only to specified method
*
* @param {} ...guards
*/
function UseGuards(...guards) {
return (target, key, descriptor) => {
const isValidGuard = guard => guard && (shared_utils_1.isFunction(guard) || shared_utils_1.isFunction(guard.canActivate));
if (descriptor) {
validate_each_util_1.validateEach(target.constructor, guards, isValidGuard, '@UseGuards', 'guard');
extend_metadata_util_1.extendArrayMetadata(constants_1.GUARDS_METADATA, guards, descriptor.value);
return descriptor;
}
validate_each_util_1.validateEach(target, guards, isValidGuard, '@UseGuards', 'guard');
extend_metadata_util_1.extendArrayMetadata(constants_1.GUARDS_METADATA, guards, target);
return target;
};
}
exports.UseGuards = UseGuards;

View File

@@ -1,12 +0,0 @@
import { NestInterceptor } from '../../interfaces';
/**
* Binds interceptors to the particular context.
* When the `@UseInterceptors()` is used on the controller level:
* - Interceptor will be register to each handler (every method)
*
* When the `@UseInterceptors()` is used on the handle level:
* - Interceptor will be registered only to specified method
*
* @param {} ...interceptors
*/
export declare function UseInterceptors(...interceptors: (NestInterceptor | Function)[]): (target: any, key?: any, descriptor?: any) => any;

View File

@@ -1,31 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("../../constants");
const extend_metadata_util_1 = require("../../utils/extend-metadata.util");
const shared_utils_1 = require("../../utils/shared.utils");
const validate_each_util_1 = require("../../utils/validate-each.util");
/**
* Binds interceptors to the particular context.
* When the `@UseInterceptors()` is used on the controller level:
* - Interceptor will be register to each handler (every method)
*
* When the `@UseInterceptors()` is used on the handle level:
* - Interceptor will be registered only to specified method
*
* @param {} ...interceptors
*/
function UseInterceptors(...interceptors) {
return (target, key, descriptor) => {
const isValidInterceptor = interceptor => interceptor &&
(shared_utils_1.isFunction(interceptor) || shared_utils_1.isFunction(interceptor.intercept));
if (descriptor) {
validate_each_util_1.validateEach(target.constructor, interceptors, isValidInterceptor, '@UseInterceptors', 'interceptor');
extend_metadata_util_1.extendArrayMetadata(constants_1.INTERCEPTORS_METADATA, interceptors, descriptor.value);
return descriptor;
}
validate_each_util_1.validateEach(target, interceptors, isValidInterceptor, '@UseInterceptors', 'interceptor');
extend_metadata_util_1.extendArrayMetadata(constants_1.INTERCEPTORS_METADATA, interceptors, target);
return target;
};
}
exports.UseInterceptors = UseInterceptors;

View File

@@ -1,12 +0,0 @@
import { PipeTransform } from '../../interfaces/index';
/**
* Binds pipes to the particular context.
* When the `@UsePipes()` is used on the controller level:
* - Pipe will be register to each handler (every method)
*
* When the `@UsePipes()` is used on the handle level:
* - Pipe will be registered only to specified method
*
* @param {PipeTransform[]} ...pipes
*/
export declare function UsePipes(...pipes: (PipeTransform | Function)[]): (target: any, key?: any, descriptor?: any) => any;

View File

@@ -1,29 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("../../constants");
const extend_metadata_util_1 = require("../../utils/extend-metadata.util");
const validate_each_util_1 = require("../../utils/validate-each.util");
const shared_utils_1 = require("../../utils/shared.utils");
/**
* Binds pipes to the particular context.
* When the `@UsePipes()` is used on the controller level:
* - Pipe will be register to each handler (every method)
*
* When the `@UsePipes()` is used on the handle level:
* - Pipe will be registered only to specified method
*
* @param {PipeTransform[]} ...pipes
*/
function UsePipes(...pipes) {
return (target, key, descriptor) => {
const isPipeValid = pipe => pipe && (shared_utils_1.isFunction(pipe) || shared_utils_1.isFunction(pipe.transform));
if (descriptor) {
extend_metadata_util_1.extendArrayMetadata(constants_1.PIPES_METADATA, pipes, descriptor.value);
return descriptor;
}
validate_each_util_1.validateEach(target, pipes, isPipeValid, '@UsePipes', 'pipe');
extend_metadata_util_1.extendArrayMetadata(constants_1.PIPES_METADATA, pipes, target);
return target;
};
}
exports.UsePipes = UsePipes;

View File

@@ -1,15 +0,0 @@
import { PipeTransform } from '../../index';
import { Type } from '../../interfaces';
import { CustomParamFactory } from '../../interfaces/features/custom-route-param-factory.interface';
export declare type ParamDecoratorEnhancer = ParameterDecorator;
/**
* Defines HTTP route param decorator
* @param factory
*/
export declare function createParamDecorator(factory: CustomParamFactory, enhancers?: ParamDecoratorEnhancer[]): (...dataOrPipes: (Type<PipeTransform> | PipeTransform | any)[]) => ParameterDecorator;
/**
* Defines HTTP route param decorator
* @deprecated
* @param factory
*/
export declare function createRouteParamDecorator(factory: CustomParamFactory): (data?: any, ...pipes: (Type<PipeTransform> | PipeTransform)[]) => ParameterDecorator;

View File

@@ -1,40 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const deprecate = require("deprecate");
const uuid = require("uuid/v4");
const constants_1 = require("../../constants");
const shared_utils_1 = require("../../utils/shared.utils");
const assignCustomMetadata = (args, paramtype, index, factory, data, ...pipes) => (Object.assign({}, args, { [`${paramtype}${constants_1.CUSTOM_ROUTE_AGRS_METADATA}:${index}`]: {
index,
factory,
data,
pipes,
} }));
/**
* Defines HTTP route param decorator
* @param factory
*/
function createParamDecorator(factory, enhancers = []) {
const paramtype = uuid();
return (data, ...pipes) => (target, key, index) => {
const args = Reflect.getMetadata(constants_1.ROUTE_ARGS_METADATA, target.constructor, key) || {};
const isPipe = pipe => pipe &&
((shared_utils_1.isFunction(pipe) && pipe.prototype) || shared_utils_1.isFunction(pipe.transform));
const hasParamData = shared_utils_1.isNil(data) || !isPipe(data);
const paramData = hasParamData ? data : undefined;
const paramPipes = hasParamData ? pipes : [data, ...pipes];
Reflect.defineMetadata(constants_1.ROUTE_ARGS_METADATA, assignCustomMetadata(args, paramtype, index, factory, paramData, ...paramPipes), target.constructor, key);
enhancers.forEach(fn => fn(target, key, index));
};
}
exports.createParamDecorator = createParamDecorator;
/**
* Defines HTTP route param decorator
* @deprecated
* @param factory
*/
function createRouteParamDecorator(factory) {
deprecate('The "createRouteParamDecorator" function is deprecated and will be removed within next major release. Use "createParamDecorator" instead.');
return createParamDecorator(factory);
}
exports.createRouteParamDecorator = createRouteParamDecorator;

View File

@@ -1,5 +0,0 @@
import 'reflect-metadata';
/**
* Sets a response header.
*/
export declare function Header(name: string, value: string): MethodDecorator;

View File

@@ -1,15 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const constants_1 = require("../../constants");
const extend_metadata_util_1 = require("../../utils/extend-metadata.util");
/**
* Sets a response header.
*/
function Header(name, value) {
return (target, key, descriptor) => {
extend_metadata_util_1.extendArrayMetadata(constants_1.HEADERS_METADATA, [{ name, value }], descriptor.value);
return descriptor;
};
}
exports.Header = Header;

View File

@@ -1,7 +0,0 @@
/**
* Defines the HTTP response status code.
* It overrides default status code for the given request method.
*
* @param {number} statusCode
*/
export declare function HttpCode(statusCode: number): MethodDecorator;

View File

@@ -1,16 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("../../constants");
/**
* Defines the HTTP response status code.
* It overrides default status code for the given request method.
*
* @param {number} statusCode
*/
function HttpCode(statusCode) {
return (target, key, descriptor) => {
Reflect.defineMetadata(constants_1.HTTP_CODE_METADATA, statusCode, descriptor.value);
return descriptor;
};
}
exports.HttpCode = HttpCode;

View File

@@ -1,6 +0,0 @@
export * from './request-mapping.decorator';
export * from './route-params.decorator';
export * from './http-code.decorator';
export * from './create-route-param-metadata.decorator';
export * from './render.decorator';
export * from './header.decorator';

View File

@@ -1,11 +0,0 @@
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(require("./request-mapping.decorator"));
__export(require("./route-params.decorator"));
__export(require("./http-code.decorator"));
__export(require("./create-route-param-metadata.decorator"));
__export(require("./render.decorator"));
__export(require("./header.decorator"));

View File

@@ -1,5 +0,0 @@
import 'reflect-metadata';
/**
* Redirects request.
*/
export declare function Redirect(url: string): MethodDecorator;

View File

@@ -1,14 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const constants_1 = require("../../constants");
/**
* Redirects request.
*/
function Redirect(url) {
return (target, key, descriptor) => {
Reflect.defineMetadata(constants_1.REDIRECT_METADATA, url, descriptor.value);
return descriptor;
};
}
exports.Redirect = Redirect;

View File

@@ -1,5 +0,0 @@
import 'reflect-metadata';
/**
* Defines a template to be rendered by the controller.
*/
export declare function Render(template: string): MethodDecorator;

View File

@@ -1,14 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const constants_1 = require("../../constants");
/**
* Defines a template to be rendered by the controller.
*/
function Render(template) {
return (target, key, descriptor) => {
Reflect.defineMetadata(constants_1.RENDER_METADATA, template, descriptor.value);
return descriptor;
};
}
exports.Render = Render;

View File

@@ -1,35 +0,0 @@
import 'reflect-metadata';
import { RequestMappingMetadata } from '../../interfaces/request-mapping-metadata.interface';
export declare const RequestMapping: (metadata?: RequestMappingMetadata) => MethodDecorator;
/**
* Routes HTTP POST requests to the specified path.
*/
export declare const Post: (path?: string) => MethodDecorator;
/**
* Routes HTTP GET requests to the specified path.
*/
export declare const Get: (path?: string) => MethodDecorator;
/**
* Routes HTTP DELETE requests to the specified path.
*/
export declare const Delete: (path?: string) => MethodDecorator;
/**
* Routes HTTP PUT requests to the specified path.
*/
export declare const Put: (path?: string) => MethodDecorator;
/**
* Routes HTTP PATCH requests to the specified path.
*/
export declare const Patch: (path?: string) => MethodDecorator;
/**
* Routes HTTP OPTIONS requests to the specified path.
*/
export declare const Options: (path?: string) => MethodDecorator;
/**
* Routes HTTP HEAD requests to the specified path.
*/
export declare const Head: (path?: string) => MethodDecorator;
/**
* Routes all HTTP requests to the specified path.
*/
export declare const All: (path?: string) => MethodDecorator;

View File

@@ -1,56 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const request_method_enum_1 = require("../../enums/request-method.enum");
const constants_1 = require("../../constants");
const defaultMetadata = {
[constants_1.PATH_METADATA]: '/',
[constants_1.METHOD_METADATA]: request_method_enum_1.RequestMethod.GET,
};
exports.RequestMapping = (metadata = defaultMetadata) => {
const path = metadata[constants_1.PATH_METADATA] || '/';
const requestMethod = metadata[constants_1.METHOD_METADATA] || request_method_enum_1.RequestMethod.GET;
return (target, key, descriptor) => {
Reflect.defineMetadata(constants_1.PATH_METADATA, path, descriptor.value);
Reflect.defineMetadata(constants_1.METHOD_METADATA, requestMethod, descriptor.value);
return descriptor;
};
};
const createMappingDecorator = (method) => (path) => {
return exports.RequestMapping({
[constants_1.PATH_METADATA]: path,
[constants_1.METHOD_METADATA]: method,
});
};
/**
* Routes HTTP POST requests to the specified path.
*/
exports.Post = createMappingDecorator(request_method_enum_1.RequestMethod.POST);
/**
* Routes HTTP GET requests to the specified path.
*/
exports.Get = createMappingDecorator(request_method_enum_1.RequestMethod.GET);
/**
* Routes HTTP DELETE requests to the specified path.
*/
exports.Delete = createMappingDecorator(request_method_enum_1.RequestMethod.DELETE);
/**
* Routes HTTP PUT requests to the specified path.
*/
exports.Put = createMappingDecorator(request_method_enum_1.RequestMethod.PUT);
/**
* Routes HTTP PATCH requests to the specified path.
*/
exports.Patch = createMappingDecorator(request_method_enum_1.RequestMethod.PATCH);
/**
* Routes HTTP OPTIONS requests to the specified path.
*/
exports.Options = createMappingDecorator(request_method_enum_1.RequestMethod.OPTIONS);
/**
* Routes HTTP HEAD requests to the specified path.
*/
exports.Head = createMappingDecorator(request_method_enum_1.RequestMethod.HEAD);
/**
* Routes all HTTP requests to the specified path.
*/
exports.All = createMappingDecorator(request_method_enum_1.RequestMethod.ALL);

View File

@@ -1,28 +0,0 @@
import 'reflect-metadata';
import { PipeTransform } from '../../index';
import { Type } from '../../interfaces';
export declare type ParamData = object | string | number;
export interface RouteParamsMetadata {
[prop: number]: {
index: number;
data?: ParamData;
};
}
export declare const Request: () => ParameterDecorator;
export declare const Response: () => ParameterDecorator;
export declare const Next: () => ParameterDecorator;
export declare const Session: () => ParameterDecorator;
export declare const UploadedFile: (fileKey?: string) => ParameterDecorator;
export declare const UploadedFiles: () => ParameterDecorator;
export declare const Headers: (property?: string) => ParameterDecorator;
export declare function Query(): any;
export declare function Query(...pipes: (Type<PipeTransform> | PipeTransform)[]): any;
export declare function Query(property: string, ...pipes: (Type<PipeTransform> | PipeTransform)[]): any;
export declare function Body(): any;
export declare function Body(...pipes: (Type<PipeTransform> | PipeTransform)[]): any;
export declare function Body(property: string, ...pipes: (Type<PipeTransform> | PipeTransform)[]): any;
export declare function Param(): any;
export declare function Param(...pipes: (Type<PipeTransform> | PipeTransform)[]): any;
export declare function Param(property: string, ...pipes: (Type<PipeTransform> | PipeTransform)[]): any;
export declare const Req: () => ParameterDecorator;
export declare const Res: () => ParameterDecorator;

View File

@@ -1,45 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const constants_1 = require("../../constants");
const route_paramtypes_enum_1 = require("../../enums/route-paramtypes.enum");
const shared_utils_1 = require("../../utils/shared.utils");
const assignMetadata = (args, paramtype, index, data, ...pipes) => (Object.assign({}, args, { [`${paramtype}:${index}`]: {
index,
data,
pipes,
} }));
const createRouteParamDecorator = (paramtype) => {
return (data) => (target, key, index) => {
const args = Reflect.getMetadata(constants_1.ROUTE_ARGS_METADATA, target.constructor, key) || {};
Reflect.defineMetadata(constants_1.ROUTE_ARGS_METADATA, assignMetadata(args, paramtype, index, data), target.constructor, key);
};
};
const createPipesRouteParamDecorator = (paramtype) => (data, ...pipes) => (target, key, index) => {
const args = Reflect.getMetadata(constants_1.ROUTE_ARGS_METADATA, target.constructor, key) || {};
const hasParamData = shared_utils_1.isNil(data) || shared_utils_1.isString(data);
const paramData = hasParamData ? data : undefined;
const paramPipes = hasParamData ? pipes : [data, ...pipes];
Reflect.defineMetadata(constants_1.ROUTE_ARGS_METADATA, assignMetadata(args, paramtype, index, paramData, ...paramPipes), target.constructor, key);
};
exports.Request = createRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.REQUEST);
exports.Response = createRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.RESPONSE);
exports.Next = createRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.NEXT);
exports.Session = createRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.SESSION);
exports.UploadedFile = createRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.FILE);
exports.UploadedFiles = createRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.FILES);
exports.Headers = createRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.HEADERS);
function Query(property, ...pipes) {
return createPipesRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.QUERY)(property, ...pipes);
}
exports.Query = Query;
function Body(property, ...pipes) {
return createPipesRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.BODY)(property, ...pipes);
}
exports.Body = Body;
function Param(property, ...pipes) {
return createPipesRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.PARAM)(property, ...pipes);
}
exports.Param = Param;
exports.Req = exports.Request;
exports.Res = exports.Response;

View File

@@ -1,3 +0,0 @@
export * from './core';
export * from './modules';
export * from './http';

View File

@@ -1,8 +0,0 @@
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(require("./core"));
__export(require("./modules"));
__export(require("./http"));

View File

@@ -1 +0,0 @@
export declare const InvalidModuleConfigMessage: (property: string) => string;

View File

@@ -1,3 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.InvalidModuleConfigMessage = (property) => `Invalid property '${property}' in @Module() decorator.`;

View File

@@ -1,3 +0,0 @@
export declare class InvalidModuleConfigException extends Error {
constructor(property: string);
}

View File

@@ -1,9 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("./constants");
class InvalidModuleConfigException extends Error {
constructor(property) {
super(constants_1.InvalidModuleConfigMessage(property));
}
}
exports.InvalidModuleConfigException = InvalidModuleConfigException;

View File

@@ -1,6 +0,0 @@
import 'reflect-metadata';
/**
* Makes the module global-scoped.
* Once imported will be available for all existing modules.
*/
export declare function Global(): ClassDecorator;

View File

@@ -1,14 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const constants_1 = require("../../constants");
/**
* Makes the module global-scoped.
* Once imported will be available for all existing modules.
*/
function Global() {
return (target) => {
Reflect.defineMetadata(constants_1.GLOBAL_MODULE_METADATA, true, target);
};
}
exports.Global = Global;

View File

@@ -1,3 +0,0 @@
export * from './module.decorator';
export * from './single-scope.decorator';
export * from './global.decorator';

View File

@@ -1,8 +0,0 @@
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(require("./module.decorator"));
__export(require("./single-scope.decorator"));
__export(require("./global.decorator"));

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