@expressots/core 1.6.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +87 -41
- package/lib/CHANGELOG.md +29 -0
- package/lib/README.md +87 -41
- package/lib/cjs/application/app-container.js +24 -7
- package/lib/cjs/application/application.js +15 -2
- package/lib/cjs/console/console.js +3 -1
- package/lib/cjs/container-module/container-module.js +2 -0
- package/lib/cjs/decorator/scope-binding.js +2 -0
- package/lib/cjs/environment/env-validator.js +1 -0
- package/lib/cjs/error/error-handler-middleware.js +1 -1
- package/lib/cjs/logger/general-logger.js +2 -2
- package/lib/cjs/types/application/app-container.d.ts +96 -2
- package/lib/cjs/types/application/app-container.d.ts.map +1 -1
- package/lib/cjs/types/application/application.d.ts +5 -1
- package/lib/cjs/types/application/application.d.ts.map +1 -1
- package/lib/cjs/types/common/project-config.provider.d.ts.map +1 -1
- package/lib/cjs/types/console/console.d.ts.map +1 -1
- package/lib/cjs/types/container-module/container-module.d.ts +1 -1
- package/lib/cjs/types/container-module/container-module.d.ts.map +1 -1
- package/lib/cjs/types/controller/base-controller.d.ts.map +1 -1
- package/lib/cjs/types/decorator/scope-binding.d.ts.map +1 -1
- package/lib/cjs/types/environment/env-validator.d.ts.map +1 -1
- package/lib/cjs/types/error/error-handler-middleware.d.ts +2 -2
- package/lib/cjs/types/error/error-handler-middleware.d.ts.map +1 -1
- package/lib/cjs/types/logger/general-logger.d.ts.map +1 -1
- package/lib/esm/application/app-container.js +38 -11
- package/lib/esm/application/application.js +38 -18
- package/lib/esm/application/index.js +9 -2
- package/lib/esm/common/index.js +2 -1
- package/lib/esm/common/project-config.provider.js +2 -1
- package/lib/esm/console/console.js +18 -10
- package/lib/esm/console/index.js +5 -1
- package/lib/esm/container-module/container-module.js +23 -17
- package/lib/esm/container-module/index.js +6 -1
- package/lib/esm/controller/base-controller.js +9 -6
- package/lib/esm/controller/index.js +5 -1
- package/lib/esm/decorator/index.js +17 -1
- package/lib/esm/decorator/scope-binding.js +10 -4
- package/lib/esm/environment/env-validator.js +20 -13
- package/lib/esm/environment/index.js +5 -1
- package/lib/esm/error/error-handler-middleware.js +6 -4
- package/lib/esm/error/index.js +7 -2
- package/lib/esm/error/report.js +9 -6
- package/lib/esm/error/status-code.js +4 -1
- package/lib/esm/index.mjs +26 -10
- package/lib/esm/logger/general-logger.js +20 -13
- package/lib/esm/logger/index.js +7 -1
- package/lib/esm/render/handlebars.interface.js +2 -1
- package/lib/esm/render/index.js +2 -1
- package/lib/esm/render/render.type.js +2 -1
- package/lib/esm/types/application/app-container.d.ts +96 -2
- package/lib/esm/types/application/app-container.d.ts.map +1 -1
- package/lib/esm/types/application/application.d.ts +5 -1
- package/lib/esm/types/application/application.d.ts.map +1 -1
- package/lib/esm/types/common/project-config.provider.d.ts.map +1 -1
- package/lib/esm/types/console/console.d.ts.map +1 -1
- package/lib/esm/types/container-module/container-module.d.ts +1 -1
- package/lib/esm/types/container-module/container-module.d.ts.map +1 -1
- package/lib/esm/types/controller/base-controller.d.ts.map +1 -1
- package/lib/esm/types/decorator/scope-binding.d.ts.map +1 -1
- package/lib/esm/types/environment/env-validator.d.ts.map +1 -1
- package/lib/esm/types/error/error-handler-middleware.d.ts +2 -2
- package/lib/esm/types/error/error-handler-middleware.d.ts.map +1 -1
- package/lib/esm/types/logger/general-logger.d.ts.map +1 -1
- package/lib/package.json +16 -10
- package/package.json +16 -10
package/README.md
CHANGED
|
@@ -1,61 +1,107 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
<a name="readme-top"></a>
|
|
2
|
+
|
|
3
|
+
<!-- PROJECT SHIELDS -->
|
|
4
|
+
[![Contributors][contributors-shield]][contributors-url]
|
|
5
|
+
[![Forks][forks-shield]][forks-url]
|
|
6
|
+
[![Stargazers][stars-shield]][stars-url]
|
|
7
|
+
[![Issues][issues-shield]][issues-url]
|
|
8
|
+
[![MIT License][license-shield]][license-url]
|
|
9
|
+
[![LinkedIn][linkedin-shield]][linkedin-url]
|
|
10
|
+
|
|
11
|
+
<!-- PROJECT LOGO -->
|
|
12
|
+
<br />
|
|
13
|
+
<div align="center">
|
|
14
|
+
<a href="https://github.com/othneildrew/Best-README-Template">
|
|
15
|
+
<img src="https://github.com/expressots/expressots/blob/main/media/expressots.png" alt="Logo" width="120">
|
|
16
|
+
</a>
|
|
17
|
+
|
|
18
|
+
<h3 align="center">ExpressoTS Framework</h3>
|
|
19
|
+
|
|
20
|
+
<p align="center">
|
|
21
|
+
Everything you need to know to build applications with ExpressoTS
|
|
22
|
+
<br />
|
|
23
|
+
<a href="https://doc.expresso-ts.com/"><strong>Explore the docs »</strong></a>
|
|
24
|
+
<br />
|
|
25
|
+
<br />
|
|
26
|
+
<a href="https://github.com/expressots/expressots/discussions">Let's discuss</a>
|
|
27
|
+
·
|
|
28
|
+
<a href="https://github.com/expressots/expressots/issues">Report Bug</a>
|
|
29
|
+
·
|
|
30
|
+
<a href="https://github.com/expressots/expressots/issues">Request Feature</a>
|
|
31
|
+
</p>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<!-- TABLE OF CONTENTS -->
|
|
35
|
+
<details>
|
|
36
|
+
<summary>Table of Contents</summary>
|
|
37
|
+
<ol>
|
|
38
|
+
<li><a href="#about-the-project">About The Project</a></li>
|
|
39
|
+
<li><a href="#getting-started">Getting Started</a></li>
|
|
40
|
+
<li><a href="#contributing">Contributing</a></li>
|
|
41
|
+
<li><a href="#support-the-project">Support the project</a></li>
|
|
42
|
+
<li><a href="#license">License</a></li>
|
|
43
|
+
</ol>
|
|
44
|
+
</details>
|
|
45
|
+
|
|
46
|
+
<!-- ABOUT THE PROJECT -->
|
|
47
|
+
# About The Project
|
|
48
|
+
|
|
49
|
+
ExpressoTS is a [Typescript](https://www.typescriptlang.org/) + [Node.js](https://nodejs.org/en/) lightweight framework for quick building scalable, easy to read and maintain, server-side applications 🐎
|
|
18
50
|
|
|
19
51
|
## Getting Started
|
|
20
52
|
|
|
21
|
-
- Here is our [
|
|
53
|
+
- Here is our [Site](https://expresso-ts.com/)
|
|
54
|
+
- You can find our [Documentation here](https://doc.expresso-ts.com/)
|
|
22
55
|
- Checkout our [First Steps documentation](https://doc.expresso-ts.com/docs/overview/first-steps)
|
|
23
|
-
- Our [CLI Documentation](https://doc.expresso-ts.com/docs/
|
|
56
|
+
- Our [CLI Documentation](https://doc.expresso-ts.com/docs/cli/overview)
|
|
57
|
+
|
|
58
|
+
## Contributing
|
|
24
59
|
|
|
25
|
-
|
|
60
|
+
Welcome to the ExpressoTS community, a place bustling with innovative minds just like yours. We're absolutely thrilled to have you here!
|
|
61
|
+
ExpressoTS is more than just a TypeScript framework; it's a collective effort by developers who are passionate about creating a more efficient, secure, and robust web ecosystem. We firmly believe that the best ideas come from a diversity of perspectives, backgrounds, and skills.
|
|
26
62
|
|
|
27
|
-
|
|
63
|
+
Why Contribute to Documentation?
|
|
28
64
|
|
|
29
|
-
|
|
65
|
+
- **Share Knowledge**: If you've figured out something cool, why keep it to yourself?
|
|
66
|
+
- **Build Your Portfolio**: Contributing to an open-source project like ExpressoTS is a great way to showcase your skills.
|
|
67
|
+
- **Join a Network**: Get to know a community of like-minded developers.
|
|
68
|
+
- **Improve the Product**: Help us fill in the gaps, correct errors, or make complex topics easier to understand.
|
|
30
69
|
|
|
31
|
-
|
|
70
|
+
Ready to contribute?
|
|
32
71
|
|
|
33
|
-
|
|
72
|
+
- [Contributing Guidelines](https://github.com/expressots/expressots/blob/main/CONTRIBUTING.md)
|
|
73
|
+
- [How to Contribute](https://github.com/expressots/expressots/blob/main/CONTRIBUTING_HOWTO.md)
|
|
74
|
+
- [Coding Guidelines](https://github.com/rsaz/TypescriptCodingGuidelines)
|
|
34
75
|
|
|
35
76
|
## Support the project
|
|
36
77
|
|
|
37
|
-
|
|
78
|
+
ExpressoTS is an independent open source project with ongoing development made possible thanks to your support. If you'd like to help, please consider:
|
|
38
79
|
|
|
39
|
-
- Become a sponsor on
|
|
80
|
+
- Become a **[sponsor on GitHub](https://github.com/sponsors/expressots)**
|
|
40
81
|
- Follow the **[organization](https://github.com/expressots)** on GitHub and Star ⭐ the project
|
|
41
82
|
- Subscribe to the Twitch channel: **[Richard Zampieri](https://www.twitch.tv/richardzampieri)**
|
|
42
83
|
- Join our **[Discord](https://discord.com/invite/PyPJfGK)**
|
|
43
|
-
- Contribute submitting **[issues and pull requests](https://github.com/expressots/expressots/issues
|
|
84
|
+
- Contribute submitting **[issues and pull requests](https://github.com/expressots/expressots/issues)**
|
|
44
85
|
- Share the project with your friends and colleagues
|
|
45
86
|
|
|
46
|
-
## Contributors
|
|
47
|
-
|
|
48
|
-
- [Daniel Boll](https://github.com/daniel-boll)
|
|
49
|
-
- [Felipe Fontana](https://github.com/f0ntana)
|
|
50
|
-
- [Juliano Soares](https://github.com/juliano-soares)
|
|
51
|
-
- [Vitor Caminha](https://github.com/VitorCaminha)
|
|
52
|
-
- [Ariel Betti](https://github.com/ArielBetti)
|
|
53
|
-
- [Rodrigo da Hora](https://github.com/dahorarodrigo)
|
|
54
|
-
|
|
55
|
-
## Backers
|
|
56
|
-
|
|
57
|
-
- Work in progress
|
|
58
|
-
|
|
59
87
|
## License
|
|
60
88
|
|
|
61
|
-
|
|
89
|
+
Distributed under the MIT License. See [`LICENSE.txt`](https://github.com/expressots/expressots/blob/main/LICENSE) for more information.
|
|
90
|
+
|
|
91
|
+
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
92
|
+
|
|
93
|
+
<!-- MARKDOWN LINKS & IMAGES -->
|
|
94
|
+
<!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->
|
|
95
|
+
[contributors-shield]: https://img.shields.io/github/contributors/expressots/expressots?style=for-the-badge
|
|
96
|
+
[contributors-url]: https://github.com/expressots/expressots/graphs/contributors
|
|
97
|
+
[forks-shield]: https://img.shields.io/github/forks/expressots/expressots?style=for-the-badge
|
|
98
|
+
[forks-url]: https://github.com/expressots/expressots/forks
|
|
99
|
+
[stars-shield]: https://img.shields.io/github/stars/expressots/expressots?style=for-the-badge
|
|
100
|
+
[stars-url]: https://github.com/expressots/expressots/stargazers
|
|
101
|
+
[issues-shield]: https://img.shields.io/github/issues/expressots/expressots?style=for-the-badge
|
|
102
|
+
[issues-url]: https://github.com/expressots/expressots/issues
|
|
103
|
+
[license-shield]: https://img.shields.io/github/license/expressots/expressots?style=for-the-badge
|
|
104
|
+
[license-url]: https://github.com/expressots/expressots/blob/main/LICENSE
|
|
105
|
+
[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555
|
|
106
|
+
[linkedin-url]: https://www.linkedin.com/company/expresso-ts/
|
|
107
|
+
[product-screenshot]: images/screenshot.png
|
package/lib/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
+
## [1.8.0](https://github.com/expressots/expressots/compare/1.7.0...1.8.0) (2023-09-05)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* add benchmark folder ([#83](https://github.com/expressots/expressots/issues/83)) ([30cb1f9](https://github.com/expressots/expressots/commit/30cb1f922f980de23b0e8e896b552a0708075201))
|
|
9
|
+
* bump prettier from 3.0.1 to 3.0.2 ([#74](https://github.com/expressots/expressots/issues/74)) ([a66f80d](https://github.com/expressots/expressots/commit/a66f80d36967cc6112a30f422ec34a8dcb3efd66))
|
|
10
|
+
* bump prettier from 3.0.2 to 3.0.3 ([#80](https://github.com/expressots/expressots/issues/80)) ([59af991](https://github.com/expressots/expressots/commit/59af99177edc371c5608761c6b3f438806aba898))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* increase the event range for graceful shutdown ([#76](https://github.com/expressots/expressots/issues/76)) ([8e88c7e](https://github.com/expressots/expressots/commit/8e88c7e2f1f0b2091c013885a823bbda533de62b))
|
|
16
|
+
* remove verb should from unit tests labels ([#78](https://github.com/expressots/expressots/issues/78)) ([f37d028](https://github.com/expressots/expressots/commit/f37d02878cbf2587028d7c61ecc35c4981721eab))
|
|
17
|
+
* update readme ([c1f0bcd](https://github.com/expressots/expressots/commit/c1f0bcd341284b4259454b579ccaf35091b1e2e1))
|
|
18
|
+
|
|
19
|
+
## [1.7.0](https://github.com/expressots/expressots/compare/1.6.0...1.7.0) (2023-08-14)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Features
|
|
23
|
+
|
|
24
|
+
* bump @release-it/conventional-changelog from 5.1.1 to 6.0.0 ([#61](https://github.com/expressots/expressots/issues/61)) ([634304b](https://github.com/expressots/expressots/commit/634304b8228a0c6f4a4e8298961f46e4bd5c9b7c))
|
|
25
|
+
* bump @types/node from 18.17.4 to 20.4.9 ([#72](https://github.com/expressots/expressots/issues/72)) ([31a887d](https://github.com/expressots/expressots/commit/31a887d3a33923dba4c8d952ec60046e21f08361))
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
|
|
30
|
+
* add `options` parameter to `AppContainer` ([#73](https://github.com/expressots/expressots/issues/73)) ([804d5cd](https://github.com/expressots/expressots/commit/804d5cd568830584322d877b91dffaed8c952e56))
|
|
31
|
+
|
|
3
32
|
## [1.6.0](https://github.com/expressots/expressots/compare/1.5.1...1.6.0) (2023-08-07)
|
|
4
33
|
|
|
5
34
|
|
package/lib/README.md
CHANGED
|
@@ -1,61 +1,107 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
<a name="readme-top"></a>
|
|
2
|
+
|
|
3
|
+
<!-- PROJECT SHIELDS -->
|
|
4
|
+
[![Contributors][contributors-shield]][contributors-url]
|
|
5
|
+
[![Forks][forks-shield]][forks-url]
|
|
6
|
+
[![Stargazers][stars-shield]][stars-url]
|
|
7
|
+
[![Issues][issues-shield]][issues-url]
|
|
8
|
+
[![MIT License][license-shield]][license-url]
|
|
9
|
+
[![LinkedIn][linkedin-shield]][linkedin-url]
|
|
10
|
+
|
|
11
|
+
<!-- PROJECT LOGO -->
|
|
12
|
+
<br />
|
|
13
|
+
<div align="center">
|
|
14
|
+
<a href="https://github.com/othneildrew/Best-README-Template">
|
|
15
|
+
<img src="https://github.com/expressots/expressots/blob/main/media/expressots.png" alt="Logo" width="120">
|
|
16
|
+
</a>
|
|
17
|
+
|
|
18
|
+
<h3 align="center">ExpressoTS Framework</h3>
|
|
19
|
+
|
|
20
|
+
<p align="center">
|
|
21
|
+
Everything you need to know to build applications with ExpressoTS
|
|
22
|
+
<br />
|
|
23
|
+
<a href="https://doc.expresso-ts.com/"><strong>Explore the docs »</strong></a>
|
|
24
|
+
<br />
|
|
25
|
+
<br />
|
|
26
|
+
<a href="https://github.com/expressots/expressots/discussions">Let's discuss</a>
|
|
27
|
+
·
|
|
28
|
+
<a href="https://github.com/expressots/expressots/issues">Report Bug</a>
|
|
29
|
+
·
|
|
30
|
+
<a href="https://github.com/expressots/expressots/issues">Request Feature</a>
|
|
31
|
+
</p>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<!-- TABLE OF CONTENTS -->
|
|
35
|
+
<details>
|
|
36
|
+
<summary>Table of Contents</summary>
|
|
37
|
+
<ol>
|
|
38
|
+
<li><a href="#about-the-project">About The Project</a></li>
|
|
39
|
+
<li><a href="#getting-started">Getting Started</a></li>
|
|
40
|
+
<li><a href="#contributing">Contributing</a></li>
|
|
41
|
+
<li><a href="#support-the-project">Support the project</a></li>
|
|
42
|
+
<li><a href="#license">License</a></li>
|
|
43
|
+
</ol>
|
|
44
|
+
</details>
|
|
45
|
+
|
|
46
|
+
<!-- ABOUT THE PROJECT -->
|
|
47
|
+
# About The Project
|
|
48
|
+
|
|
49
|
+
ExpressoTS is a [Typescript](https://www.typescriptlang.org/) + [Node.js](https://nodejs.org/en/) lightweight framework for quick building scalable, easy to read and maintain, server-side applications 🐎
|
|
18
50
|
|
|
19
51
|
## Getting Started
|
|
20
52
|
|
|
21
|
-
- Here is our [
|
|
53
|
+
- Here is our [Site](https://expresso-ts.com/)
|
|
54
|
+
- You can find our [Documentation here](https://doc.expresso-ts.com/)
|
|
22
55
|
- Checkout our [First Steps documentation](https://doc.expresso-ts.com/docs/overview/first-steps)
|
|
23
|
-
- Our [CLI Documentation](https://doc.expresso-ts.com/docs/
|
|
56
|
+
- Our [CLI Documentation](https://doc.expresso-ts.com/docs/cli/overview)
|
|
57
|
+
|
|
58
|
+
## Contributing
|
|
24
59
|
|
|
25
|
-
|
|
60
|
+
Welcome to the ExpressoTS community, a place bustling with innovative minds just like yours. We're absolutely thrilled to have you here!
|
|
61
|
+
ExpressoTS is more than just a TypeScript framework; it's a collective effort by developers who are passionate about creating a more efficient, secure, and robust web ecosystem. We firmly believe that the best ideas come from a diversity of perspectives, backgrounds, and skills.
|
|
26
62
|
|
|
27
|
-
|
|
63
|
+
Why Contribute to Documentation?
|
|
28
64
|
|
|
29
|
-
|
|
65
|
+
- **Share Knowledge**: If you've figured out something cool, why keep it to yourself?
|
|
66
|
+
- **Build Your Portfolio**: Contributing to an open-source project like ExpressoTS is a great way to showcase your skills.
|
|
67
|
+
- **Join a Network**: Get to know a community of like-minded developers.
|
|
68
|
+
- **Improve the Product**: Help us fill in the gaps, correct errors, or make complex topics easier to understand.
|
|
30
69
|
|
|
31
|
-
|
|
70
|
+
Ready to contribute?
|
|
32
71
|
|
|
33
|
-
|
|
72
|
+
- [Contributing Guidelines](https://github.com/expressots/expressots/blob/main/CONTRIBUTING.md)
|
|
73
|
+
- [How to Contribute](https://github.com/expressots/expressots/blob/main/CONTRIBUTING_HOWTO.md)
|
|
74
|
+
- [Coding Guidelines](https://github.com/rsaz/TypescriptCodingGuidelines)
|
|
34
75
|
|
|
35
76
|
## Support the project
|
|
36
77
|
|
|
37
|
-
|
|
78
|
+
ExpressoTS is an independent open source project with ongoing development made possible thanks to your support. If you'd like to help, please consider:
|
|
38
79
|
|
|
39
|
-
- Become a sponsor on
|
|
80
|
+
- Become a **[sponsor on GitHub](https://github.com/sponsors/expressots)**
|
|
40
81
|
- Follow the **[organization](https://github.com/expressots)** on GitHub and Star ⭐ the project
|
|
41
82
|
- Subscribe to the Twitch channel: **[Richard Zampieri](https://www.twitch.tv/richardzampieri)**
|
|
42
83
|
- Join our **[Discord](https://discord.com/invite/PyPJfGK)**
|
|
43
|
-
- Contribute submitting **[issues and pull requests](https://github.com/expressots/expressots/issues
|
|
84
|
+
- Contribute submitting **[issues and pull requests](https://github.com/expressots/expressots/issues)**
|
|
44
85
|
- Share the project with your friends and colleagues
|
|
45
86
|
|
|
46
|
-
## Contributors
|
|
47
|
-
|
|
48
|
-
- [Daniel Boll](https://github.com/daniel-boll)
|
|
49
|
-
- [Felipe Fontana](https://github.com/f0ntana)
|
|
50
|
-
- [Juliano Soares](https://github.com/juliano-soares)
|
|
51
|
-
- [Vitor Caminha](https://github.com/VitorCaminha)
|
|
52
|
-
- [Ariel Betti](https://github.com/ArielBetti)
|
|
53
|
-
- [Rodrigo da Hora](https://github.com/dahorarodrigo)
|
|
54
|
-
|
|
55
|
-
## Backers
|
|
56
|
-
|
|
57
|
-
- Work in progress
|
|
58
|
-
|
|
59
87
|
## License
|
|
60
88
|
|
|
61
|
-
|
|
89
|
+
Distributed under the MIT License. See [`LICENSE.txt`](https://github.com/expressots/expressots/blob/main/LICENSE) for more information.
|
|
90
|
+
|
|
91
|
+
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
92
|
+
|
|
93
|
+
<!-- MARKDOWN LINKS & IMAGES -->
|
|
94
|
+
<!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->
|
|
95
|
+
[contributors-shield]: https://img.shields.io/github/contributors/expressots/expressots?style=for-the-badge
|
|
96
|
+
[contributors-url]: https://github.com/expressots/expressots/graphs/contributors
|
|
97
|
+
[forks-shield]: https://img.shields.io/github/forks/expressots/expressots?style=for-the-badge
|
|
98
|
+
[forks-url]: https://github.com/expressots/expressots/forks
|
|
99
|
+
[stars-shield]: https://img.shields.io/github/stars/expressots/expressots?style=for-the-badge
|
|
100
|
+
[stars-url]: https://github.com/expressots/expressots/stargazers
|
|
101
|
+
[issues-shield]: https://img.shields.io/github/issues/expressots/expressots?style=for-the-badge
|
|
102
|
+
[issues-url]: https://github.com/expressots/expressots/issues
|
|
103
|
+
[license-shield]: https://img.shields.io/github/license/expressots/expressots?style=for-the-badge
|
|
104
|
+
[license-url]: https://github.com/expressots/expressots/blob/main/LICENSE
|
|
105
|
+
[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555
|
|
106
|
+
[linkedin-url]: https://www.linkedin.com/company/expresso-ts/
|
|
107
|
+
[product-screenshot]: images/screenshot.png
|
|
@@ -5,6 +5,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
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;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
8
11
|
var AppContainer_1;
|
|
9
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
13
|
exports.AppContainer = void 0;
|
|
@@ -12,20 +15,33 @@ const inversify_1 = require("inversify");
|
|
|
12
15
|
const inversify_binding_decorators_1 = require("inversify-binding-decorators");
|
|
13
16
|
/**
|
|
14
17
|
* The AppContainer class provides a container for managing dependency injection.
|
|
18
|
+
* It allows the creation of a container with custom options, including default binding scope
|
|
19
|
+
* and the ability to skip base class checks. The container can be loaded with multiple
|
|
20
|
+
* ContainerModule instances, facilitating modular and organized code.
|
|
21
|
+
*
|
|
22
|
+
* Usage:
|
|
23
|
+
* const appContainer = new AppContainer(options);
|
|
24
|
+
* const container = appContainer.create(modules);
|
|
25
|
+
*
|
|
15
26
|
* @provide AppContainer
|
|
16
27
|
*/
|
|
17
28
|
let AppContainer = AppContainer_1 = class AppContainer {
|
|
29
|
+
/**
|
|
30
|
+
* Constructs the AppContainer instance.
|
|
31
|
+
* @param options - The options for creating the container. Can include custom default scope and skip base class checks setting.
|
|
32
|
+
*/
|
|
33
|
+
constructor(options) {
|
|
34
|
+
this.options = Object.assign({ defaultScope: inversify_1.BindingScopeEnum.Request }, options);
|
|
35
|
+
}
|
|
18
36
|
/**
|
|
19
37
|
* Creates and configures a new dependency injection container.
|
|
20
38
|
* @param modules - An array of ContainerModule instances to load into the container.
|
|
21
39
|
* @param defaultScope - The default scope to use for bindings. Scoped (Request) by default, but offers Singleton and Transient as well.
|
|
22
40
|
* @returns The configured dependency injection container.
|
|
23
41
|
*/
|
|
24
|
-
create(modules
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
defaultScope,
|
|
28
|
-
});
|
|
42
|
+
create(modules) {
|
|
43
|
+
const containerOptions = Object.assign({ autoBindInjectable: true }, this.options);
|
|
44
|
+
this.container = new inversify_1.Container(containerOptions);
|
|
29
45
|
this.container.load((0, inversify_binding_decorators_1.buildProviderModule)(), ...modules);
|
|
30
46
|
return this.container;
|
|
31
47
|
}
|
|
@@ -41,7 +57,7 @@ let AppContainer = AppContainer_1 = class AppContainer {
|
|
|
41
57
|
* @returns The container options.
|
|
42
58
|
*/
|
|
43
59
|
getContainerOptions() {
|
|
44
|
-
return this.container
|
|
60
|
+
return this.container.options;
|
|
45
61
|
}
|
|
46
62
|
/**
|
|
47
63
|
* Retrieves the container.
|
|
@@ -53,5 +69,6 @@ let AppContainer = AppContainer_1 = class AppContainer {
|
|
|
53
69
|
};
|
|
54
70
|
exports.AppContainer = AppContainer;
|
|
55
71
|
exports.AppContainer = AppContainer = AppContainer_1 = __decorate([
|
|
56
|
-
(0, inversify_binding_decorators_1.provide)(AppContainer_1)
|
|
72
|
+
(0, inversify_binding_decorators_1.provide)(AppContainer_1),
|
|
73
|
+
__metadata("design:paramtypes", [Object])
|
|
57
74
|
], AppContainer);
|
|
@@ -49,7 +49,12 @@ let Application = Application_1 = class Application {
|
|
|
49
49
|
/**
|
|
50
50
|
* Perform actions or cleanup after the server is shutdown.
|
|
51
51
|
*/
|
|
52
|
-
serverShutdown() {
|
|
52
|
+
serverShutdown() { }
|
|
53
|
+
/**
|
|
54
|
+
* Handles process exit by calling serverShutdown and then exiting the process.
|
|
55
|
+
*/
|
|
56
|
+
handleExit() {
|
|
57
|
+
this.serverShutdown();
|
|
53
58
|
process_1.default.exit(0);
|
|
54
59
|
}
|
|
55
60
|
/**
|
|
@@ -94,7 +99,15 @@ let Application = Application_1 = class Application {
|
|
|
94
99
|
this.environment = environment;
|
|
95
100
|
this.app.listen(this.port, () => {
|
|
96
101
|
new console_1.Console().messageServer(this.port, this.environment, consoleMessage);
|
|
97
|
-
|
|
102
|
+
[
|
|
103
|
+
"SIGTERM",
|
|
104
|
+
"SIGHUP",
|
|
105
|
+
"SIGBREAK",
|
|
106
|
+
"SIGQUIT",
|
|
107
|
+
"SIGINT",
|
|
108
|
+
].forEach((signal) => {
|
|
109
|
+
process_1.default.on(signal, this.handleExit.bind(this));
|
|
110
|
+
});
|
|
98
111
|
});
|
|
99
112
|
this.postServerInitialization();
|
|
100
113
|
}
|
|
@@ -63,7 +63,9 @@ let Console = Console_1 = class Console {
|
|
|
63
63
|
* @param environment - The server environment.
|
|
64
64
|
* @param consoleMessage - Optional application message details for console output.
|
|
65
65
|
*/
|
|
66
|
-
messageServer(
|
|
66
|
+
messageServer(
|
|
67
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
68
|
+
port, environment, consoleMessage) {
|
|
67
69
|
return __awaiter(this, void 0, void 0, function* () {
|
|
68
70
|
const appConsoleMessage = {
|
|
69
71
|
appName: (consoleMessage === null || consoleMessage === void 0 ? void 0 : consoleMessage.appName) || "Application",
|
|
@@ -8,6 +8,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
var BaseModule_1;
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.scope = exports.CreateModule = void 0;
|
|
11
|
+
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
|
12
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
11
13
|
const inversify_1 = require("inversify");
|
|
12
14
|
const inversify_binding_decorators_1 = require("inversify-binding-decorators");
|
|
13
15
|
const decorator_1 = require("../decorator");
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.provideTransient = exports.provideSingleton = void 0;
|
|
4
|
+
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
|
5
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
6
|
const inversify_binding_decorators_1 = require("inversify-binding-decorators");
|
|
5
7
|
const provideSingleton = (identifier) => {
|
|
6
8
|
return (0, inversify_binding_decorators_1.fluentProvide)(identifier).inSingletonScope().done();
|
|
@@ -28,6 +28,7 @@ let EnvValidatorProvider = EnvValidatorProvider_1 = class EnvValidatorProvider {
|
|
|
28
28
|
* @param defaultValue - The default value to return if the environment variable is not set.
|
|
29
29
|
* @returns The value of the environment variable, or the default value if not set.
|
|
30
30
|
*/
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
31
32
|
static get(key, defaultValue = undefined) {
|
|
32
33
|
var _a;
|
|
33
34
|
return (_a = process.env[key]) !== null && _a !== void 0 ? _a : defaultValue;
|
|
@@ -9,7 +9,7 @@ const status_code_1 = require("./status-code");
|
|
|
9
9
|
* @param res - The Express response object.
|
|
10
10
|
* @param next - The Express next function for passing control to the next middleware function.
|
|
11
11
|
*/
|
|
12
|
-
function errorHandler(error, req, res
|
|
12
|
+
function errorHandler(error, req, res) {
|
|
13
13
|
res
|
|
14
14
|
.status(error.statusCode || status_code_1.StatusCode.InternalServerError)
|
|
15
15
|
.json({ statusCode: error.statusCode, error: error.message });
|
|
@@ -86,8 +86,8 @@ let GeneralLogger = GeneralLogger_1 = class GeneralLogger {
|
|
|
86
86
|
getPathAndLine(error) {
|
|
87
87
|
let pathLine = "";
|
|
88
88
|
if (error.stack) {
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
const callerLine = error.stack.split("\n")[1];
|
|
90
|
+
const index = callerLine.indexOf("at ");
|
|
91
91
|
pathLine = callerLine.substring(index + +2, callerLine.length);
|
|
92
92
|
}
|
|
93
93
|
return pathLine;
|
|
@@ -1,22 +1,116 @@
|
|
|
1
1
|
import { Container, ContainerModule, interfaces } from "inversify";
|
|
2
|
+
/**
|
|
3
|
+
* Represents a single binding in the dependency injection container.
|
|
4
|
+
*/
|
|
5
|
+
interface Binding {
|
|
6
|
+
/**
|
|
7
|
+
* Unique identifier for this binding.
|
|
8
|
+
*/
|
|
9
|
+
id: number;
|
|
10
|
+
/**
|
|
11
|
+
* Indicates whether this binding is activated.
|
|
12
|
+
*/
|
|
13
|
+
activated: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Symbol used to identify the service.
|
|
16
|
+
*/
|
|
17
|
+
serviceIdentifier: symbol;
|
|
18
|
+
/**
|
|
19
|
+
* Scope of the binding (e.g., 'Singleton', 'Transient', 'Request').
|
|
20
|
+
*/
|
|
21
|
+
scope: string;
|
|
22
|
+
/**
|
|
23
|
+
* Type of the binding (e.g., 'Instance', 'Factory', 'Provider').
|
|
24
|
+
*/
|
|
25
|
+
type: string;
|
|
26
|
+
/**
|
|
27
|
+
* Object used to match or constrain the binding.
|
|
28
|
+
*/
|
|
29
|
+
constraint: object;
|
|
30
|
+
/**
|
|
31
|
+
* The actual implementation type of the service.
|
|
32
|
+
*/
|
|
33
|
+
implementationType: object;
|
|
34
|
+
/**
|
|
35
|
+
* Cached instance, used if the binding's scope allows it.
|
|
36
|
+
*/
|
|
37
|
+
cache: object | null;
|
|
38
|
+
/**
|
|
39
|
+
* Optional factory to create the service instance.
|
|
40
|
+
*/
|
|
41
|
+
factory: object | null;
|
|
42
|
+
/**
|
|
43
|
+
* Optional provider to create the service instance.
|
|
44
|
+
*/
|
|
45
|
+
provider: object | null;
|
|
46
|
+
/**
|
|
47
|
+
* Function to run when activating a new instance.
|
|
48
|
+
*/
|
|
49
|
+
onActivation: object | null;
|
|
50
|
+
/**
|
|
51
|
+
* Function to run when deactivating an instance.
|
|
52
|
+
*/
|
|
53
|
+
onDeactivation: object | null;
|
|
54
|
+
/**
|
|
55
|
+
* Optional dynamic value that can be used to resolve the service.
|
|
56
|
+
*/
|
|
57
|
+
dynamicValue: object | null;
|
|
58
|
+
/**
|
|
59
|
+
* Module ID where the binding is defined, useful for debugging.
|
|
60
|
+
*/
|
|
61
|
+
moduleId: number;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Type alias for ServiceIdentifier, used to specify a unique identifier for a service.
|
|
65
|
+
* It's usually a symbol, but can be other types as well.
|
|
66
|
+
*/
|
|
67
|
+
type ServiceIdentifier = typeof Symbol;
|
|
68
|
+
/**
|
|
69
|
+
* Interface for container options that can be passed to the AppContainer class.
|
|
70
|
+
*/
|
|
71
|
+
interface ContainerOptions {
|
|
72
|
+
/**
|
|
73
|
+
* The default scope for bindings in the container.
|
|
74
|
+
* It can be set to Request (default), Singleton, or Transient.
|
|
75
|
+
*/
|
|
76
|
+
defaultScope?: interfaces.BindingScope;
|
|
77
|
+
/**
|
|
78
|
+
* Allows skipping of base class checks when working with derived classes.
|
|
79
|
+
*/
|
|
80
|
+
skipBaseClassChecks?: boolean;
|
|
81
|
+
}
|
|
2
82
|
/**
|
|
3
83
|
* The AppContainer class provides a container for managing dependency injection.
|
|
84
|
+
* It allows the creation of a container with custom options, including default binding scope
|
|
85
|
+
* and the ability to skip base class checks. The container can be loaded with multiple
|
|
86
|
+
* ContainerModule instances, facilitating modular and organized code.
|
|
87
|
+
*
|
|
88
|
+
* Usage:
|
|
89
|
+
* const appContainer = new AppContainer(options);
|
|
90
|
+
* const container = appContainer.create(modules);
|
|
91
|
+
*
|
|
4
92
|
* @provide AppContainer
|
|
5
93
|
*/
|
|
6
94
|
declare class AppContainer {
|
|
7
95
|
private container;
|
|
96
|
+
private options;
|
|
97
|
+
/**
|
|
98
|
+
* Constructs the AppContainer instance.
|
|
99
|
+
* @param options - The options for creating the container. Can include custom default scope and skip base class checks setting.
|
|
100
|
+
*/
|
|
101
|
+
constructor(options?: ContainerOptions);
|
|
8
102
|
/**
|
|
9
103
|
* Creates and configures a new dependency injection container.
|
|
10
104
|
* @param modules - An array of ContainerModule instances to load into the container.
|
|
11
105
|
* @param defaultScope - The default scope to use for bindings. Scoped (Request) by default, but offers Singleton and Transient as well.
|
|
12
106
|
* @returns The configured dependency injection container.
|
|
13
107
|
*/
|
|
14
|
-
create(modules: ContainerModule
|
|
108
|
+
create(modules: Array<ContainerModule>): Container;
|
|
15
109
|
/**
|
|
16
110
|
* Retrieves the binding dictionary of the container.
|
|
17
111
|
* @returns The binding dictionary of the container.
|
|
18
112
|
*/
|
|
19
|
-
getBindingDictionary(): Map<
|
|
113
|
+
getBindingDictionary(): Map<ServiceIdentifier, Array<Binding>>;
|
|
20
114
|
/**
|
|
21
115
|
* Retrieves the container options.
|
|
22
116
|
* @returns The container options.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-container.d.ts","sourceRoot":"","sources":["../../../../packages/core/src/application/app-container.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,eAAe,EACf,UAAU,EACX,MAAM,WAAW,CAAC;AAGnB;;;GAGG;AACH,cACM,YAAY;IAChB,OAAO,CAAC,SAAS,CAAa;IAC9B;;;;;OAKG;IACI,MAAM,
|
|
1
|
+
{"version":3,"file":"app-container.d.ts","sourceRoot":"","sources":["../../../../packages/core/src/application/app-container.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,eAAe,EACf,UAAU,EACX,MAAM,WAAW,CAAC;AAGnB;;GAEG;AACH,UAAU,OAAO;IACf;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB;;OAEG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;OAEG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B;;OAEG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;OAEG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,KAAK,iBAAiB,GAAG,OAAO,MAAM,CAAC;AAEvC;;GAEG;AACH,UAAU,gBAAgB;IACxB;;;OAGG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC;IAEvC;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;;;;;;;GAWG;AACH,cACM,YAAY;IAChB,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,OAAO,CAAmB;IAElC;;;OAGG;gBACS,OAAO,CAAC,EAAE,gBAAgB;IAOtC;;;;;OAKG;IACI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,GAAG,SAAS;IAYzD;;;OAGG;IACI,oBAAoB,IAAI,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAIrE;;;OAGG;IACI,mBAAmB,IAAI,UAAU,CAAC,gBAAgB;IAIzD;;;OAGG;IACH,IAAW,SAAS,IAAI,SAAS,CAEhC;CACF;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -34,13 +34,17 @@ declare class Application {
|
|
|
34
34
|
* Perform actions or cleanup after the server is shutdown.
|
|
35
35
|
*/
|
|
36
36
|
protected serverShutdown(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Handles process exit by calling serverShutdown and then exiting the process.
|
|
39
|
+
*/
|
|
40
|
+
private handleExit;
|
|
37
41
|
/**
|
|
38
42
|
* Create and configure the Express application.
|
|
39
43
|
* @param container - The InversifyJS container.
|
|
40
44
|
* @param middlewares - An array of Express middlewares to be applied.
|
|
41
45
|
* @returns The configured Application instance.
|
|
42
46
|
*/
|
|
43
|
-
create(container: Container, middlewares?: express.RequestHandler
|
|
47
|
+
create(container: Container, middlewares?: Array<express.RequestHandler>): Application;
|
|
44
48
|
/**
|
|
45
49
|
* Start listening on the given port and environment.
|
|
46
50
|
* @param port - The port number to listen on.
|