Compare commits

...

72 Commits

Author SHA1 Message Date
Kamil Myśliwiec
13d473fcba chore(@nestjs) publish v5.3.13 release 2018-10-18 00:04:49 +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
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
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
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
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
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
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
977 changed files with 1607 additions and 17727 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

9
.npmignore Normal file
View File

@@ -0,0 +1,9 @@
# source
**/*.ts
*.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,45 @@ 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:
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.
that relates to your submission. You don't want to duplicate effort.
<!-- 1. Please sign our [Contributor License Agreement (CLA)](#cla) before sending PRs.
We cannot accept code without this. -->
1. Fork the nestjs/nest repo.
1. Make your changes in a new git branch:
```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,33 +129,74 @@ 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). -->
* We follow [Google's JavaScript Style Guide][js-style-guide], but wrap all code at
@@ -157,12 +205,13 @@ To ensure consistency throughout the source code, keep these rules in mind as yo
## <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 +233,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 +255,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 +272,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 -->
<!-- * **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`)
### Subject
The subject contains succinct description of the change:
* use the imperative, present tense: "change" not "changed" nor "changes"
@@ -235,10 +284,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 +306,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 +320,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

@@ -58,7 +58,7 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
#### Sponsors
<a href="https://scal.io"><img src="https://nestjs.com/img/scalio-logo.svg" width="110" /></a> &nbsp; <a href="http://angularity.io"><img src="http://angularity.io/media/logo.svg" height="30" /></a> &nbsp; <a href="http://gojob.com"><img src="https://gojob.com/w/wp-content/uploads/2017/02/cropped-Logo-web-home.png" height="40" /> &nbsp; <!--<a href="https://keycdn.com"><img src="https://nestjs.com/img/keycdn.svg" height="30" /></a> &nbsp;--> <a href="https://hostpresto.com"><img src="https://nestjs.com/img/hostpresto.png" height="30" /></a> &nbsp; <a href="https://genuinebee.com/"><img src="https://nestjs.com/img/genuinebee.svg" height="34" /></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="http://gojob.com"><img src="https://gojob.com/w/wp-content/uploads/2017/02/cropped-Logo-web-home.png" height="40" /> &nbsp; <!--<a href="https://keycdn.com"><img src="https://nestjs.com/img/keycdn.svg" height="30" /></a> &nbsp;--> <a href="https://hostpresto.com"><img src="https://nestjs.com/img/hostpresto.png" height="30" /></a> &nbsp; <a href="https://genuinebee.com/"><img src="https://nestjs.com/img/genuinebee.svg" height="38" /></a> &nbsp; <a href="http://architectnow.net/"><img src="https://nestjs.com/img/architectnow.png" height="24" /></a> &nbsp; <a href="https://quander.io/"><img src="https://nestjs.com/img/quander.png" height="28" /></a>
## Backers

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,5 +0,0 @@
export { CACHE_MANAGER } from './cache.constants';
export * from './cache.module';
export * from './decorators';
export * from './interceptors';
export * from './interfaces';

View File

@@ -1,10 +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 });
var cache_constants_1 = require("./cache.constants");
exports.CACHE_MANAGER = cache_constants_1.CACHE_MANAGER;
__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>>;
trackBy(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.trackBy(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$;
}
}
trackBy(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(request);
}
};
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"));

View File

@@ -1,12 +0,0 @@
import 'reflect-metadata';
import { ModuleMetadata } from '../../interfaces/modules/module-metadata.interface';
/**
* Defines the module
* - `imports` - the set of the 'imported' modules
* - `controllers` - the list of controllers (e.g. HTTP controllers)
* - `providers` - the list of providers that belong to this module. They can be injected between themselves.
* - `exports` - the set of components, which should be available for modules, which imports this module
* - `components` - @deprecated the list of components that belong to this module. They can be injected between themselves.
* @param options {ModuleMetadata} Module metadata
*/
export declare function Module(metadata: ModuleMetadata): ClassDecorator;

View File

@@ -1,61 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const deprecate = require("deprecate");
require("reflect-metadata");
const constants_1 = require("../../constants");
const invalid_module_config_exception_1 = require("./exceptions/invalid-module-config.exception");
const metadataKeys = [
constants_1.METADATA.MODULES,
constants_1.METADATA.IMPORTS,
constants_1.METADATA.EXPORTS,
constants_1.METADATA.COMPONENTS,
constants_1.METADATA.CONTROLLERS,
constants_1.METADATA.PROVIDERS,
];
const validateKeys = (keys) => {
const isKeyInvalid = key => metadataKeys.findIndex(k => k === key) < 0;
const validateKey = key => {
if (!isKeyInvalid(key)) {
return;
}
throw new invalid_module_config_exception_1.InvalidModuleConfigException(key);
};
keys.forEach(validateKey);
};
/**
* Defines the module
* - `imports` - the set of the 'imported' modules
* - `controllers` - the list of controllers (e.g. HTTP controllers)
* - `providers` - the list of providers that belong to this module. They can be injected between themselves.
* - `exports` - the set of components, which should be available for modules, which imports this module
* - `components` - @deprecated the list of components that belong to this module. They can be injected between themselves.
* @param options {ModuleMetadata} Module metadata
*/
function Module(metadata) {
const propsKeys = Object.keys(metadata);
validateKeys(propsKeys);
showDeprecatedWarnings(metadata);
overrideModuleMetadata(metadata);
return (target) => {
for (const property in metadata) {
if (metadata.hasOwnProperty(property)) {
Reflect.defineMetadata(property, metadata[property], target);
}
}
};
}
exports.Module = Module;
function overrideModuleMetadata(moduleMetadata) {
moduleMetadata.modules = moduleMetadata.imports
? moduleMetadata.imports
: moduleMetadata.modules;
moduleMetadata.components = moduleMetadata.providers
? moduleMetadata.providers
: moduleMetadata.components;
}
function showDeprecatedWarnings(moduleMetadata) {
const MODULES_DEPRECATED_WARNING = 'The "modules" key in the @Module() decorator is deprecated and will be removed within next major release. Use the "imports" key instead.';
const COMPONENTS_DEPRECATED_WARNING = 'The "components" key in the @Module() decorator is deprecated and will be removed within next major release. Use the "providers" key instead.';
moduleMetadata.modules && deprecate(MODULES_DEPRECATED_WARNING);
moduleMetadata.components && deprecate(COMPONENTS_DEPRECATED_WARNING);
}

View File

@@ -1,7 +0,0 @@
import 'reflect-metadata';
/**
* Specifies scope of this module. When module is `@Shared()`, Nest will create only one instance of this
* module and share them between all of the modules.
* @deprecated
*/
export declare const Shared: (scope?: string) => (target: any) => any;

View File

@@ -1,25 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const constants_1 = require("../../constants");
const index_1 = require("../../index");
/**
* Specifies scope of this module. When module is `@Shared()`, Nest will create only one instance of this
* module and share them between all of the modules.
* @deprecated
*/
exports.Shared = (scope = 'global') => {
const logger = new index_1.Logger('Shared');
logger.warn('DEPRECATED! Since version 4.0.0 `@Shared()` decorator is deprecated. All modules are singletons now.');
return (target) => {
const Metatype = target;
const Type = class extends Metatype {
constructor(...args) {
super(...args);
}
};
Reflect.defineMetadata(constants_1.SHARED_MODULE_METADATA, scope, Type);
Object.defineProperty(Type, 'name', { value: target.name });
return Type;
};
};

View File

@@ -1,6 +0,0 @@
import 'reflect-metadata';
/**
* Makes the module single-scoped (not singleton).
* In this case, Nest will always create a new instance of this particular module when it's imported by another one.
*/
export declare function SingleScope(): ClassDecorator;

View File

@@ -1,22 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const constants_1 = require("../../constants");
/**
* Makes the module single-scoped (not singleton).
* In this case, Nest will always create a new instance of this particular module when it's imported by another one.
*/
function SingleScope() {
return (target) => {
const Metatype = target;
const Type = class extends Metatype {
constructor(...args) {
super(...args);
}
};
Reflect.defineMetadata(constants_1.SHARED_MODULE_METADATA, true, Type);
Object.defineProperty(Type, 'name', { value: target.name });
return Type;
};
}
exports.SingleScope = SingleScope;

View File

@@ -1,46 +0,0 @@
export declare enum HttpStatus {
CONTINUE = 100,
SWITCHING_PROTOCOLS = 101,
PROCESSING = 102,
OK = 200,
CREATED = 201,
ACCEPTED = 202,
NON_AUTHORITATIVE_INFORMATION = 203,
NO_CONTENT = 204,
RESET_CONTENT = 205,
PARTIAL_CONTENT = 206,
AMBIGUOUS = 300,
MOVED_PERMANENTLY = 301,
FOUND = 302,
SEE_OTHER = 303,
NOT_MODIFIED = 304,
TEMPORARY_REDIRECT = 307,
PERMANENT_REDIRECT = 308,
BAD_REQUEST = 400,
UNAUTHORIZED = 401,
PAYMENT_REQUIRED = 402,
FORBIDDEN = 403,
NOT_FOUND = 404,
METHOD_NOT_ALLOWED = 405,
NOT_ACCEPTABLE = 406,
PROXY_AUTHENTICATION_REQUIRED = 407,
REQUEST_TIMEOUT = 408,
CONFLICT = 409,
GONE = 410,
LENGTH_REQUIRED = 411,
PRECONDITION_FAILED = 412,
PAYLOAD_TOO_LARGE = 413,
URI_TOO_LONG = 414,
UNSUPPORTED_MEDIA_TYPE = 415,
REQUESTED_RANGE_NOT_SATISFIABLE = 416,
EXPECTATION_FAILED = 417,
I_AM_A_TEAPOT = 418,
UNPROCESSABLE_ENTITY = 422,
TOO_MANY_REQUESTS = 429,
INTERNAL_SERVER_ERROR = 500,
NOT_IMPLEMENTED = 501,
BAD_GATEWAY = 502,
SERVICE_UNAVAILABLE = 503,
GATEWAY_TIMEOUT = 504,
HTTP_VERSION_NOT_SUPPORTED = 505,
}

View File

@@ -1,49 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var HttpStatus;
(function (HttpStatus) {
HttpStatus[HttpStatus["CONTINUE"] = 100] = "CONTINUE";
HttpStatus[HttpStatus["SWITCHING_PROTOCOLS"] = 101] = "SWITCHING_PROTOCOLS";
HttpStatus[HttpStatus["PROCESSING"] = 102] = "PROCESSING";
HttpStatus[HttpStatus["OK"] = 200] = "OK";
HttpStatus[HttpStatus["CREATED"] = 201] = "CREATED";
HttpStatus[HttpStatus["ACCEPTED"] = 202] = "ACCEPTED";
HttpStatus[HttpStatus["NON_AUTHORITATIVE_INFORMATION"] = 203] = "NON_AUTHORITATIVE_INFORMATION";
HttpStatus[HttpStatus["NO_CONTENT"] = 204] = "NO_CONTENT";
HttpStatus[HttpStatus["RESET_CONTENT"] = 205] = "RESET_CONTENT";
HttpStatus[HttpStatus["PARTIAL_CONTENT"] = 206] = "PARTIAL_CONTENT";
HttpStatus[HttpStatus["AMBIGUOUS"] = 300] = "AMBIGUOUS";
HttpStatus[HttpStatus["MOVED_PERMANENTLY"] = 301] = "MOVED_PERMANENTLY";
HttpStatus[HttpStatus["FOUND"] = 302] = "FOUND";
HttpStatus[HttpStatus["SEE_OTHER"] = 303] = "SEE_OTHER";
HttpStatus[HttpStatus["NOT_MODIFIED"] = 304] = "NOT_MODIFIED";
HttpStatus[HttpStatus["TEMPORARY_REDIRECT"] = 307] = "TEMPORARY_REDIRECT";
HttpStatus[HttpStatus["PERMANENT_REDIRECT"] = 308] = "PERMANENT_REDIRECT";
HttpStatus[HttpStatus["BAD_REQUEST"] = 400] = "BAD_REQUEST";
HttpStatus[HttpStatus["UNAUTHORIZED"] = 401] = "UNAUTHORIZED";
HttpStatus[HttpStatus["PAYMENT_REQUIRED"] = 402] = "PAYMENT_REQUIRED";
HttpStatus[HttpStatus["FORBIDDEN"] = 403] = "FORBIDDEN";
HttpStatus[HttpStatus["NOT_FOUND"] = 404] = "NOT_FOUND";
HttpStatus[HttpStatus["METHOD_NOT_ALLOWED"] = 405] = "METHOD_NOT_ALLOWED";
HttpStatus[HttpStatus["NOT_ACCEPTABLE"] = 406] = "NOT_ACCEPTABLE";
HttpStatus[HttpStatus["PROXY_AUTHENTICATION_REQUIRED"] = 407] = "PROXY_AUTHENTICATION_REQUIRED";
HttpStatus[HttpStatus["REQUEST_TIMEOUT"] = 408] = "REQUEST_TIMEOUT";
HttpStatus[HttpStatus["CONFLICT"] = 409] = "CONFLICT";
HttpStatus[HttpStatus["GONE"] = 410] = "GONE";
HttpStatus[HttpStatus["LENGTH_REQUIRED"] = 411] = "LENGTH_REQUIRED";
HttpStatus[HttpStatus["PRECONDITION_FAILED"] = 412] = "PRECONDITION_FAILED";
HttpStatus[HttpStatus["PAYLOAD_TOO_LARGE"] = 413] = "PAYLOAD_TOO_LARGE";
HttpStatus[HttpStatus["URI_TOO_LONG"] = 414] = "URI_TOO_LONG";
HttpStatus[HttpStatus["UNSUPPORTED_MEDIA_TYPE"] = 415] = "UNSUPPORTED_MEDIA_TYPE";
HttpStatus[HttpStatus["REQUESTED_RANGE_NOT_SATISFIABLE"] = 416] = "REQUESTED_RANGE_NOT_SATISFIABLE";
HttpStatus[HttpStatus["EXPECTATION_FAILED"] = 417] = "EXPECTATION_FAILED";
HttpStatus[HttpStatus["I_AM_A_TEAPOT"] = 418] = "I_AM_A_TEAPOT";
HttpStatus[HttpStatus["UNPROCESSABLE_ENTITY"] = 422] = "UNPROCESSABLE_ENTITY";
HttpStatus[HttpStatus["TOO_MANY_REQUESTS"] = 429] = "TOO_MANY_REQUESTS";
HttpStatus[HttpStatus["INTERNAL_SERVER_ERROR"] = 500] = "INTERNAL_SERVER_ERROR";
HttpStatus[HttpStatus["NOT_IMPLEMENTED"] = 501] = "NOT_IMPLEMENTED";
HttpStatus[HttpStatus["BAD_GATEWAY"] = 502] = "BAD_GATEWAY";
HttpStatus[HttpStatus["SERVICE_UNAVAILABLE"] = 503] = "SERVICE_UNAVAILABLE";
HttpStatus[HttpStatus["GATEWAY_TIMEOUT"] = 504] = "GATEWAY_TIMEOUT";
HttpStatus[HttpStatus["HTTP_VERSION_NOT_SUPPORTED"] = 505] = "HTTP_VERSION_NOT_SUPPORTED";
})(HttpStatus = exports.HttpStatus || (exports.HttpStatus = {}));

View File

@@ -1,2 +0,0 @@
export * from './request-method.enum';
export * from './http-status.enum';

View File

@@ -1,7 +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-method.enum"));
__export(require("./http-status.enum"));

View File

@@ -1,4 +0,0 @@
export declare enum NestEnvironment {
RUN = 0,
TEST = 1,
}

View File

@@ -1,7 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var NestEnvironment;
(function (NestEnvironment) {
NestEnvironment[NestEnvironment["RUN"] = 0] = "RUN";
NestEnvironment[NestEnvironment["TEST"] = 1] = "TEST";
})(NestEnvironment = exports.NestEnvironment || (exports.NestEnvironment = {}));

View File

@@ -1,10 +0,0 @@
export declare enum RequestMethod {
GET = 0,
POST = 1,
PUT = 2,
DELETE = 3,
PATCH = 4,
ALL = 5,
OPTIONS = 6,
HEAD = 7,
}

View File

@@ -1,13 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var RequestMethod;
(function (RequestMethod) {
RequestMethod[RequestMethod["GET"] = 0] = "GET";
RequestMethod[RequestMethod["POST"] = 1] = "POST";
RequestMethod[RequestMethod["PUT"] = 2] = "PUT";
RequestMethod[RequestMethod["DELETE"] = 3] = "DELETE";
RequestMethod[RequestMethod["PATCH"] = 4] = "PATCH";
RequestMethod[RequestMethod["ALL"] = 5] = "ALL";
RequestMethod[RequestMethod["OPTIONS"] = 6] = "OPTIONS";
RequestMethod[RequestMethod["HEAD"] = 7] = "HEAD";
})(RequestMethod = exports.RequestMethod || (exports.RequestMethod = {}));

View File

@@ -1,12 +0,0 @@
export declare enum RouteParamtypes {
REQUEST = 0,
RESPONSE = 1,
NEXT = 2,
BODY = 3,
QUERY = 4,
PARAM = 5,
HEADERS = 6,
SESSION = 7,
FILE = 8,
FILES = 9,
}

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