@zanobijs/core 1.1.0-beta.0 → 1.2.0-beta.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/CHANGELOG.md +313 -1
- package/exceptions/constant.message.d.ts +1 -0
- package/exceptions/constant.message.js +3 -1
- package/exceptions/invalidProvider.module.exception.d.ts +12 -0
- package/exceptions/invalidProvider.module.exception.js +19 -0
- package/injector/injector.d.ts +19 -20
- package/injector/injector.js +38 -16
- package/injector/module.d.ts +7 -1
- package/injector/module.js +36 -8
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,318 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
# [1.
|
|
6
|
+
# [1.2.0-beta.0](https://github.com/devdroide/ZanobiJS/compare/v1.1.1-beta.0...v1.2.0-beta.0) (2025-05-28)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- **core,test:** Added the ability to use useClass and useFactory as providers ([bff63e2](https://github.com/devdroide/ZanobiJS/commit/bff63e2d73fa03ef72f38b3c7c6f5a51ad9ddf80))
|
|
11
|
+
- **core,test:** Added type validation to prevent errors in providers with useClass ([6e64d3b](https://github.com/devdroide/ZanobiJS/commit/6e64d3b6a46965ad9affa697980b6862b1ae8be0))
|
|
12
|
+
- **core:** ✨ new provider with useClass ([668d981](https://github.com/devdroide/ZanobiJS/commit/668d981890e2a43f615ae8f78f025e3c33db9707))
|
|
13
|
+
|
|
14
|
+
## [1.1.1-beta.0](https://github.com/devdroide/ZanobiJS/compare/v1.1.0...v1.1.1-beta.0) (2025-05-27)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
17
|
+
|
|
18
|
+
# [1.1.0](https://github.com/devdroide/ZanobiJS/compare/v1.1.0-beta.74...v1.1.0) (2025-05-27)
|
|
19
|
+
|
|
20
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
21
|
+
|
|
22
|
+
# [1.1.0-beta.74](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.74) (2025-05-04)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
25
|
+
|
|
26
|
+
# [1.1.0-beta.73](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.73) (2025-05-04)
|
|
27
|
+
|
|
28
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
29
|
+
|
|
30
|
+
# [1.1.0-beta.72](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.72) (2025-05-04)
|
|
31
|
+
|
|
32
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
33
|
+
|
|
34
|
+
# [1.1.0-beta.71](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.71) (2025-05-04)
|
|
35
|
+
|
|
36
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
37
|
+
|
|
38
|
+
# [1.1.0-beta.70](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.70) (2025-05-04)
|
|
39
|
+
|
|
40
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
41
|
+
|
|
42
|
+
# [1.1.0-beta.69](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.69) (2025-05-04)
|
|
43
|
+
|
|
44
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
45
|
+
|
|
46
|
+
# [1.1.0-beta.68](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.68) (2025-05-04)
|
|
47
|
+
|
|
48
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
49
|
+
|
|
50
|
+
# [1.1.0-beta.67](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.67) (2025-05-04)
|
|
51
|
+
|
|
52
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
53
|
+
|
|
54
|
+
# [1.1.0-beta.66](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.66) (2025-05-04)
|
|
55
|
+
|
|
56
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
57
|
+
|
|
58
|
+
# [1.1.0-beta.65](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.65) (2025-05-04)
|
|
59
|
+
|
|
60
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
61
|
+
|
|
62
|
+
# [1.1.0-beta.64](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.64) (2025-05-04)
|
|
63
|
+
|
|
64
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
65
|
+
|
|
66
|
+
# [1.1.0-beta.63](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.63) (2025-05-04)
|
|
67
|
+
|
|
68
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
69
|
+
|
|
70
|
+
# [1.1.0-beta.62](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.62) (2025-05-04)
|
|
71
|
+
|
|
72
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
73
|
+
|
|
74
|
+
# [1.1.0-beta.61](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.61) (2025-05-04)
|
|
75
|
+
|
|
76
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
77
|
+
|
|
78
|
+
# [1.1.0-beta.60](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.60) (2025-05-04)
|
|
79
|
+
|
|
80
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
81
|
+
|
|
82
|
+
# [1.1.0-beta.59](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.59) (2025-05-04)
|
|
83
|
+
|
|
84
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
85
|
+
|
|
86
|
+
# [1.1.0-beta.58](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.58) (2025-05-04)
|
|
87
|
+
|
|
88
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
89
|
+
|
|
90
|
+
# [1.1.0-beta.57](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.57) (2025-05-04)
|
|
91
|
+
|
|
92
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
93
|
+
|
|
94
|
+
# [1.1.0-beta.56](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.56) (2025-05-04)
|
|
95
|
+
|
|
96
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
97
|
+
|
|
98
|
+
# [1.1.0-beta.55](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.55) (2025-05-04)
|
|
99
|
+
|
|
100
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
101
|
+
|
|
102
|
+
# [1.1.0-beta.54](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.54) (2025-05-04)
|
|
103
|
+
|
|
104
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
105
|
+
|
|
106
|
+
# [1.1.0-beta.53](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.53) (2025-05-04)
|
|
107
|
+
|
|
108
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
109
|
+
|
|
110
|
+
# [1.1.0-beta.52](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.52) (2025-05-04)
|
|
111
|
+
|
|
112
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
113
|
+
|
|
114
|
+
# [1.1.0-beta.51](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.51) (2025-05-04)
|
|
115
|
+
|
|
116
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
117
|
+
|
|
118
|
+
# [1.1.0-beta.50](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.50) (2025-05-04)
|
|
119
|
+
|
|
120
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
121
|
+
|
|
122
|
+
# [1.1.0-beta.49](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.49) (2025-05-04)
|
|
123
|
+
|
|
124
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
125
|
+
|
|
126
|
+
# [1.1.0-beta.48](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.48) (2025-05-04)
|
|
127
|
+
|
|
128
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
129
|
+
|
|
130
|
+
# [1.1.0-beta.47](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.47) (2025-05-04)
|
|
131
|
+
|
|
132
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
133
|
+
|
|
134
|
+
# [1.1.0-beta.46](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.46) (2025-05-04)
|
|
135
|
+
|
|
136
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
137
|
+
|
|
138
|
+
# [1.1.0-beta.45](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.45) (2025-05-04)
|
|
139
|
+
|
|
140
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
141
|
+
|
|
142
|
+
# [1.1.0-beta.44](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.44) (2025-05-04)
|
|
143
|
+
|
|
144
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
145
|
+
|
|
146
|
+
# [1.1.0-beta.43](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.43) (2025-05-04)
|
|
147
|
+
|
|
148
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
149
|
+
|
|
150
|
+
# [1.1.0-beta.42](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.42) (2025-05-04)
|
|
151
|
+
|
|
152
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
153
|
+
|
|
154
|
+
# [1.1.0-beta.41](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.41) (2025-05-04)
|
|
155
|
+
|
|
156
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
157
|
+
|
|
158
|
+
# [1.1.0-beta.40](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.40) (2025-05-04)
|
|
159
|
+
|
|
160
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
161
|
+
|
|
162
|
+
# [1.1.0-beta.39](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.39) (2025-05-04)
|
|
163
|
+
|
|
164
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
165
|
+
|
|
166
|
+
# [1.1.0-beta.38](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.38) (2025-05-04)
|
|
167
|
+
|
|
168
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
169
|
+
|
|
170
|
+
# [1.1.0-beta.37](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.37) (2025-05-04)
|
|
171
|
+
|
|
172
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
173
|
+
|
|
174
|
+
# [1.1.0-beta.36](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.36) (2025-05-04)
|
|
175
|
+
|
|
176
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
177
|
+
|
|
178
|
+
# [1.1.0-beta.35](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.35) (2025-05-04)
|
|
179
|
+
|
|
180
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
181
|
+
|
|
182
|
+
# [1.1.0-beta.34](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.34) (2025-05-04)
|
|
183
|
+
|
|
184
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
185
|
+
|
|
186
|
+
# [1.1.0-beta.33](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.33) (2025-05-04)
|
|
187
|
+
|
|
188
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
189
|
+
|
|
190
|
+
# [1.1.0-beta.32](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.32) (2025-05-04)
|
|
191
|
+
|
|
192
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
193
|
+
|
|
194
|
+
# [1.1.0-beta.31](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.31) (2025-05-04)
|
|
195
|
+
|
|
196
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
197
|
+
|
|
198
|
+
# [1.1.0-beta.30](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.30) (2025-05-04)
|
|
199
|
+
|
|
200
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
201
|
+
|
|
202
|
+
# [1.1.0-beta.29](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.29) (2025-05-04)
|
|
203
|
+
|
|
204
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
205
|
+
|
|
206
|
+
# [1.1.0-beta.28](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.28) (2025-05-04)
|
|
207
|
+
|
|
208
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
209
|
+
|
|
210
|
+
# [1.1.0-beta.27](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.27) (2025-05-04)
|
|
211
|
+
|
|
212
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
213
|
+
|
|
214
|
+
# [1.1.0-beta.26](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.26) (2025-05-04)
|
|
215
|
+
|
|
216
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
217
|
+
|
|
218
|
+
# [1.1.0-beta.25](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.25) (2025-05-04)
|
|
219
|
+
|
|
220
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
221
|
+
|
|
222
|
+
# [1.1.0-beta.24](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.24) (2025-05-04)
|
|
223
|
+
|
|
224
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
225
|
+
|
|
226
|
+
# [1.1.0-beta.23](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.23) (2025-05-04)
|
|
227
|
+
|
|
228
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
229
|
+
|
|
230
|
+
# [1.1.0-beta.22](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.22) (2025-05-04)
|
|
231
|
+
|
|
232
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
233
|
+
|
|
234
|
+
# [1.1.0-beta.21](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.21) (2025-05-04)
|
|
235
|
+
|
|
236
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
237
|
+
|
|
238
|
+
# [1.1.0-beta.20](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.20) (2025-05-04)
|
|
239
|
+
|
|
240
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
241
|
+
|
|
242
|
+
# [1.1.0-beta.19](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.19) (2025-05-04)
|
|
243
|
+
|
|
244
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
245
|
+
|
|
246
|
+
# [1.1.0-beta.18](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.18) (2025-05-04)
|
|
247
|
+
|
|
248
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
249
|
+
|
|
250
|
+
# [1.1.0-beta.17](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.17) (2025-05-04)
|
|
251
|
+
|
|
252
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
253
|
+
|
|
254
|
+
# [1.1.0-beta.16](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.16) (2025-05-04)
|
|
255
|
+
|
|
256
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
257
|
+
|
|
258
|
+
# [1.1.0-beta.15](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.15) (2025-05-04)
|
|
259
|
+
|
|
260
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
261
|
+
|
|
262
|
+
# [1.1.0-beta.14](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.14) (2025-05-04)
|
|
263
|
+
|
|
264
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
265
|
+
|
|
266
|
+
# [1.1.0-beta.13](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.13) (2025-05-04)
|
|
267
|
+
|
|
268
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
269
|
+
|
|
270
|
+
# [1.1.0-beta.12](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.12) (2025-05-04)
|
|
271
|
+
|
|
272
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
273
|
+
|
|
274
|
+
# [1.1.0-beta.11](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.11) (2025-05-04)
|
|
275
|
+
|
|
276
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
277
|
+
|
|
278
|
+
# [1.1.0-beta.10](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.10) (2025-05-04)
|
|
279
|
+
|
|
280
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
281
|
+
|
|
282
|
+
# [1.1.0-beta.9](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.9) (2025-05-04)
|
|
283
|
+
|
|
284
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
285
|
+
|
|
286
|
+
# [1.1.0-beta.8](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.8) (2025-05-04)
|
|
287
|
+
|
|
288
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
289
|
+
|
|
290
|
+
# [1.1.0-beta.7](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.7) (2025-05-04)
|
|
291
|
+
|
|
292
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
293
|
+
|
|
294
|
+
# [1.1.0-beta.6](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.6) (2025-05-04)
|
|
295
|
+
|
|
296
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
297
|
+
|
|
298
|
+
# [1.1.0-beta.5](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.5) (2025-05-04)
|
|
299
|
+
|
|
300
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
301
|
+
|
|
302
|
+
# [1.1.0-beta.4](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.4) (2025-05-04)
|
|
303
|
+
|
|
304
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
305
|
+
|
|
306
|
+
# [1.1.0-beta.3](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.3) (2025-05-04)
|
|
307
|
+
|
|
308
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
309
|
+
|
|
310
|
+
# [1.1.0-beta.2](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.2) (2025-05-04)
|
|
311
|
+
|
|
312
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
313
|
+
|
|
314
|
+
# [1.1.0-beta.1](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.1) (2025-05-04)
|
|
315
|
+
|
|
316
|
+
**Note:** Version bump only for package @zanobijs/core
|
|
317
|
+
|
|
318
|
+
# [1.1.0-beta.0](https://github.com/devdroide/ZanobiJS/compare/v1.0.2...v1.1.0-beta.0) (2025-05-04)
|
|
7
319
|
|
|
8
320
|
**Note:** Version bump only for package @zanobijs/core
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export declare const MODULE_INVALID_ANNOTATION_ERROR: () => string;
|
|
2
2
|
export declare const CONTAINER_RESOLUTION_ERROR: (entity: string, resolutionError: string) => string;
|
|
3
3
|
export declare const CONTAINER_RESOLUTION_ENTITY_ERROR: (entity: string) => string;
|
|
4
|
+
export declare const PROVIDER_INVALID_MODULE_ERROR: (entity: string, moduleName: string) => string;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CONTAINER_RESOLUTION_ENTITY_ERROR = exports.CONTAINER_RESOLUTION_ERROR = exports.MODULE_INVALID_ANNOTATION_ERROR = void 0;
|
|
3
|
+
exports.PROVIDER_INVALID_MODULE_ERROR = exports.CONTAINER_RESOLUTION_ENTITY_ERROR = exports.CONTAINER_RESOLUTION_ERROR = exports.MODULE_INVALID_ANNOTATION_ERROR = void 0;
|
|
4
4
|
const MODULE_INVALID_ANNOTATION_ERROR = () => 'The class must have an annotation @Module()';
|
|
5
5
|
exports.MODULE_INVALID_ANNOTATION_ERROR = MODULE_INVALID_ANNOTATION_ERROR;
|
|
6
6
|
const CONTAINER_RESOLUTION_ERROR = (entity, resolutionError) => `${resolutionError} please review '${entity}' and its dependencies.`;
|
|
7
7
|
exports.CONTAINER_RESOLUTION_ERROR = CONTAINER_RESOLUTION_ERROR;
|
|
8
8
|
const CONTAINER_RESOLUTION_ENTITY_ERROR = (entity) => `Please check that the entity '${entity}' exists and is registered in @modulo`;
|
|
9
9
|
exports.CONTAINER_RESOLUTION_ENTITY_ERROR = CONTAINER_RESOLUTION_ENTITY_ERROR;
|
|
10
|
+
const PROVIDER_INVALID_MODULE_ERROR = (entity, moduleName) => `Please check that ${entity} located in the @module ${moduleName} exists and is @Injectable().`;
|
|
11
|
+
exports.PROVIDER_INVALID_MODULE_ERROR = PROVIDER_INVALID_MODULE_ERROR;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RuntimeException } from '@zanobijs/common/exceptions/runtime.exception';
|
|
2
|
+
/**
|
|
3
|
+
* Excepción lanzada cuando una clase Modulo no tiene un provedor definido correctamente
|
|
4
|
+
* de @zanobijs/common
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Esta clase extiende la base `RuntimeException`de @zanobijs/common
|
|
8
|
+
* para proporcionar detalles adicionales específicos a esquemas de módulos inválidos.
|
|
9
|
+
*/
|
|
10
|
+
export declare class InvalidProviderModuleException extends RuntimeException {
|
|
11
|
+
constructor(entity: string, moduleName: string, detail: string);
|
|
12
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InvalidProviderModuleException = void 0;
|
|
4
|
+
const runtime_exception_1 = require("@zanobijs/common/exceptions/runtime.exception");
|
|
5
|
+
const constant_message_1 = require("./constant.message");
|
|
6
|
+
/**
|
|
7
|
+
* Excepción lanzada cuando una clase Modulo no tiene un provedor definido correctamente
|
|
8
|
+
* de @zanobijs/common
|
|
9
|
+
*
|
|
10
|
+
* @remarks
|
|
11
|
+
* Esta clase extiende la base `RuntimeException`de @zanobijs/common
|
|
12
|
+
* para proporcionar detalles adicionales específicos a esquemas de módulos inválidos.
|
|
13
|
+
*/
|
|
14
|
+
class InvalidProviderModuleException extends runtime_exception_1.RuntimeException {
|
|
15
|
+
constructor(entity, moduleName, detail) {
|
|
16
|
+
super((0, constant_message_1.PROVIDER_INVALID_MODULE_ERROR)(entity, moduleName), detail);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.InvalidProviderModuleException = InvalidProviderModuleException;
|
package/injector/injector.d.ts
CHANGED
|
@@ -8,7 +8,8 @@ export type Constructor<T> = {
|
|
|
8
8
|
*/
|
|
9
9
|
export declare class Injector {
|
|
10
10
|
private module;
|
|
11
|
-
private listProviders;
|
|
11
|
+
private readonly listProviders;
|
|
12
|
+
private readonly listProvidersClass;
|
|
12
13
|
private metadata;
|
|
13
14
|
private logger;
|
|
14
15
|
private moduleName;
|
|
@@ -18,7 +19,7 @@ export declare class Injector {
|
|
|
18
19
|
* @param {Module} module - El módulo debe tener el decorador `@Module`
|
|
19
20
|
* para poderlo procesar.
|
|
20
21
|
*/
|
|
21
|
-
constructor(module: TClass, listProviders: Map<string, any>);
|
|
22
|
+
constructor(module: TClass, listProviders: Map<string, any>, listProvidersClass: Map<string, any>);
|
|
22
23
|
/**
|
|
23
24
|
* Este método privado recorre el array de los servicios del modulo para
|
|
24
25
|
* buscar los proveedores tipo objeto a injectar y los almacena en una
|
|
@@ -27,8 +28,8 @@ export declare class Injector {
|
|
|
27
28
|
*/
|
|
28
29
|
private scanProviders;
|
|
29
30
|
/**
|
|
30
|
-
* Método para obtener un objeto con los parámetros(key) y valores(useValue)
|
|
31
|
-
* que se inyectarán en la clase (target)
|
|
31
|
+
* Método para obtener un objeto con los parámetros(key) y valores(useValue, useClass, useFactory)
|
|
32
|
+
* que se inyectarán en la clase (target).
|
|
32
33
|
*
|
|
33
34
|
* @param { TClass} target - La clase objetivo.
|
|
34
35
|
* @returns {object} - Objeto con datos a inyectar.
|
|
@@ -44,27 +45,25 @@ export declare class Injector {
|
|
|
44
45
|
* @param {any} target - La clase objetivo.
|
|
45
46
|
* @returns - El injector configurado.
|
|
46
47
|
*/
|
|
47
|
-
getInjectorClass(target:
|
|
48
|
-
interface:
|
|
48
|
+
getInjectorClass(target: TClass): {
|
|
49
|
+
interface: TClass;
|
|
49
50
|
injectionMode?: import("awilix").InjectionModeType;
|
|
50
51
|
injector?: import("awilix").InjectorFunction;
|
|
51
|
-
setLifetime(lifetime: import("awilix").LifetimeType): import("awilix").BuildResolver<
|
|
52
|
-
setInjectionMode(mode: import("awilix").InjectionModeType): import("awilix").BuildResolver<
|
|
53
|
-
singleton(): import("awilix").BuildResolver<
|
|
54
|
-
scoped(): import("awilix").BuildResolver<
|
|
55
|
-
transient(): import("awilix").BuildResolver<
|
|
56
|
-
proxy(): import("awilix").BuildResolver<
|
|
57
|
-
classic(): import("awilix").BuildResolver<
|
|
58
|
-
inject(injector: import("awilix").InjectorFunction): import("awilix").BuildResolver<
|
|
59
|
-
resolve<U extends object>(container: import("awilix").AwilixContainer<U>):
|
|
52
|
+
setLifetime(lifetime: import("awilix").LifetimeType): import("awilix").BuildResolver<any> & import("awilix").DisposableResolver<any>;
|
|
53
|
+
setInjectionMode(mode: import("awilix").InjectionModeType): import("awilix").BuildResolver<any> & import("awilix").DisposableResolver<any>;
|
|
54
|
+
singleton(): import("awilix").BuildResolver<any> & import("awilix").DisposableResolver<any>;
|
|
55
|
+
scoped(): import("awilix").BuildResolver<any> & import("awilix").DisposableResolver<any>;
|
|
56
|
+
transient(): import("awilix").BuildResolver<any> & import("awilix").DisposableResolver<any>;
|
|
57
|
+
proxy(): import("awilix").BuildResolver<any> & import("awilix").DisposableResolver<any>;
|
|
58
|
+
classic(): import("awilix").BuildResolver<any> & import("awilix").DisposableResolver<any>;
|
|
59
|
+
inject(injector: import("awilix").InjectorFunction): import("awilix").BuildResolver<any> & import("awilix").DisposableResolver<any>;
|
|
60
|
+
resolve<U extends object>(container: import("awilix").AwilixContainer<U>): any;
|
|
60
61
|
name?: string;
|
|
61
62
|
lifetime?: import("awilix").LifetimeType;
|
|
62
|
-
register?: (...args: any[]) => import("awilix").Resolver<
|
|
63
|
+
register?: (...args: any[]) => import("awilix").Resolver<any>;
|
|
63
64
|
isLeakSafe?: boolean;
|
|
64
|
-
dispose?: import("awilix").Disposer<
|
|
65
|
-
disposer(dispose: import("awilix").Disposer<
|
|
65
|
+
dispose?: import("awilix").Disposer<any>;
|
|
66
|
+
disposer(dispose: import("awilix").Disposer<any>): import("awilix").BuildResolver<any> & import("awilix").DisposableResolver<any>;
|
|
66
67
|
};
|
|
67
68
|
getAllProvider(): Map<string, any>;
|
|
68
|
-
getInjectProvider(provider: any): import("awilix").Resolver<any>;
|
|
69
|
-
funtionInjectData(injectData: any): () => any;
|
|
70
69
|
}
|
package/injector/injector.js
CHANGED
|
@@ -12,6 +12,7 @@ const awilix_1 = require("awilix");
|
|
|
12
12
|
class Injector {
|
|
13
13
|
module;
|
|
14
14
|
listProviders;
|
|
15
|
+
listProvidersClass;
|
|
15
16
|
metadata;
|
|
16
17
|
logger;
|
|
17
18
|
moduleName = '';
|
|
@@ -21,12 +22,13 @@ class Injector {
|
|
|
21
22
|
* @param {Module} module - El módulo debe tener el decorador `@Module`
|
|
22
23
|
* para poderlo procesar.
|
|
23
24
|
*/
|
|
24
|
-
constructor(module, listProviders) {
|
|
25
|
+
constructor(module, listProviders, listProvidersClass) {
|
|
25
26
|
this.metadata = metadata_1.Metadata.getInstance();
|
|
26
27
|
this.logger = (0, utils_1.Logger)();
|
|
27
28
|
this.moduleName = module.name;
|
|
28
29
|
this.module = module;
|
|
29
30
|
this.listProviders = listProviders;
|
|
31
|
+
this.listProvidersClass = listProvidersClass;
|
|
30
32
|
this.scanProviders();
|
|
31
33
|
}
|
|
32
34
|
/**
|
|
@@ -39,14 +41,42 @@ class Injector {
|
|
|
39
41
|
this.logger.debug('Injector - Scan provider to module:', this.moduleName);
|
|
40
42
|
const { services } = this.metadata.getMetadataModule(this.module);
|
|
41
43
|
services.forEach((service) => {
|
|
42
|
-
if (typeof service === 'object')
|
|
43
|
-
|
|
44
|
+
if (typeof service === 'object' && typeof service.provider === 'string') {
|
|
45
|
+
const key = service.provider;
|
|
46
|
+
if (service.useClass) {
|
|
47
|
+
this.listProvidersClass.set(key, service.useClass);
|
|
48
|
+
}
|
|
49
|
+
else if (service.useFactory) {
|
|
50
|
+
this.listProviders.set(key, (0, awilix_1.asFunction)(service.useFactory).scoped());
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this.listProviders.set(key, (0, awilix_1.asValue)(service.useValue));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (typeof service === 'object' && (0, shared_utils_1.isClass)(service.provider)) {
|
|
57
|
+
let useExample = false;
|
|
58
|
+
const key = service.provider.name;
|
|
59
|
+
if (service.useClass && (0, shared_utils_1.isClass)(service.useClass)) {
|
|
60
|
+
this.listProvidersClass.set(key, service.useClass);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
useExample = true;
|
|
64
|
+
this.logger.important(`You are trying to inject the ${key} provider`, `but it is not possible to add it because using useFactory or useValue`);
|
|
65
|
+
}
|
|
66
|
+
if (useExample) {
|
|
67
|
+
this.logger.debug('Example ✅', '{ provider: UserClassRepository, useClass: UserClassImplementation }');
|
|
68
|
+
this.logger.debug('Example ❌', '{ provider: UserClassRepository, useClass: () => { return "text" }}');
|
|
69
|
+
this.logger.debug('Example ❌', '{ provider: UserClassRepository, useFactory: () => { return "text" }}');
|
|
70
|
+
this.logger.debug('Example ❌', '{ provider: UserClassRepository, useValue: "Text" }');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
44
73
|
});
|
|
45
74
|
this.logger.debug('Injector - list provider', this.listProviders);
|
|
75
|
+
this.logger.debug('Injector - list provider type class', this.listProvidersClass);
|
|
46
76
|
}
|
|
47
77
|
/**
|
|
48
|
-
* Método para obtener un objeto con los parámetros(key) y valores(useValue)
|
|
49
|
-
* que se inyectarán en la clase (target)
|
|
78
|
+
* Método para obtener un objeto con los parámetros(key) y valores(useValue, useClass, useFactory)
|
|
79
|
+
* que se inyectarán en la clase (target).
|
|
50
80
|
*
|
|
51
81
|
* @param { TClass} target - La clase objetivo.
|
|
52
82
|
* @returns {object} - Objeto con datos a inyectar.
|
|
@@ -58,8 +88,8 @@ class Injector {
|
|
|
58
88
|
for (const key of dInject.keys()) {
|
|
59
89
|
if (this.listProviders.has(key)) {
|
|
60
90
|
const paramName = dInject.get(key);
|
|
61
|
-
const
|
|
62
|
-
injectData[paramName] =
|
|
91
|
+
const provider = this.listProviders.get(key);
|
|
92
|
+
injectData[paramName] = provider;
|
|
63
93
|
}
|
|
64
94
|
else {
|
|
65
95
|
this.logger.important(`You are trying to inject @INJECT('${key}') into '${target.name}'`, `but the provider '${key}' and its value are not registered in '${this.moduleName}' or any other previously loaded modules`);
|
|
@@ -83,7 +113,7 @@ class Injector {
|
|
|
83
113
|
let injector = (0, awilix_1.asClass)(target).scoped();
|
|
84
114
|
if (!(0, shared_utils_1.isEmpty)(injectData)) {
|
|
85
115
|
this.logger.debug(`Inject - list dependencies to inject of ${target.name}:`, injectData);
|
|
86
|
-
injector = injector.inject(
|
|
116
|
+
injector = injector.inject(() => injectData);
|
|
87
117
|
}
|
|
88
118
|
return {
|
|
89
119
|
...injector,
|
|
@@ -93,13 +123,5 @@ class Injector {
|
|
|
93
123
|
getAllProvider() {
|
|
94
124
|
return this.listProviders;
|
|
95
125
|
}
|
|
96
|
-
getInjectProvider(provider) {
|
|
97
|
-
return typeof provider.value === 'function'
|
|
98
|
-
? (0, awilix_1.asFunction)(provider.value).scoped()
|
|
99
|
-
: (0, awilix_1.asValue)(provider.value);
|
|
100
|
-
}
|
|
101
|
-
funtionInjectData(injectData) {
|
|
102
|
-
return () => injectData;
|
|
103
|
-
}
|
|
104
126
|
}
|
|
105
127
|
exports.Injector = Injector;
|
package/injector/module.d.ts
CHANGED
|
@@ -12,7 +12,8 @@ export declare class Module {
|
|
|
12
12
|
private dependenciesClass;
|
|
13
13
|
private metadata;
|
|
14
14
|
private types;
|
|
15
|
-
private listProviders;
|
|
15
|
+
private readonly listProviders;
|
|
16
|
+
private readonly listProvidersClass;
|
|
16
17
|
/**
|
|
17
18
|
* Constructor del módulo.
|
|
18
19
|
*/
|
|
@@ -42,6 +43,11 @@ export declare class Module {
|
|
|
42
43
|
* @private
|
|
43
44
|
*/
|
|
44
45
|
private registerEntities;
|
|
46
|
+
/**
|
|
47
|
+
* Registra entidades que se escanearon en dentro de proveedores para se reemplazar otra clase.
|
|
48
|
+
* @private
|
|
49
|
+
*/
|
|
50
|
+
private registerEntitiesFromProvider;
|
|
45
51
|
/**
|
|
46
52
|
* Agrupación de dependencias para alias
|
|
47
53
|
*
|
package/injector/module.js
CHANGED
|
@@ -8,6 +8,7 @@ const utils_1 = require("@zanobijs/common/utils");
|
|
|
8
8
|
const injector_1 = require("./injector");
|
|
9
9
|
const metadata_1 = require("../metadata");
|
|
10
10
|
const exceptions_1 = require("../exceptions");
|
|
11
|
+
const invalidProvider_module_exception_1 = require("../exceptions/invalidProvider.module.exception");
|
|
11
12
|
/**
|
|
12
13
|
* Módulo para gestionar la configuración y el registro de controladores, servicios y dependencias.
|
|
13
14
|
*/
|
|
@@ -21,6 +22,7 @@ class Module {
|
|
|
21
22
|
metadata;
|
|
22
23
|
types = ['controller', 'service'];
|
|
23
24
|
listProviders = new Map();
|
|
25
|
+
listProvidersClass = new Map();
|
|
24
26
|
/**
|
|
25
27
|
* Constructor del módulo.
|
|
26
28
|
*/
|
|
@@ -36,7 +38,7 @@ class Module {
|
|
|
36
38
|
if (this.metadata.isTypeModule(module)) {
|
|
37
39
|
this.module = module;
|
|
38
40
|
this.logger.debug('Module - Setup - Create Injector to module:', module.name);
|
|
39
|
-
this.injector = new injector_1.Injector(module, this.listProviders);
|
|
41
|
+
this.injector = new injector_1.Injector(module, this.listProviders, this.listProvidersClass);
|
|
40
42
|
}
|
|
41
43
|
else {
|
|
42
44
|
throw new exceptions_1.InvalidModuleAnnotationException();
|
|
@@ -50,6 +52,7 @@ class Module {
|
|
|
50
52
|
this.registerAllProviders();
|
|
51
53
|
this.getMetadataModule();
|
|
52
54
|
this.registerDependencies();
|
|
55
|
+
this.registerEntitiesFromProvider();
|
|
53
56
|
this.registerDependenciesToAlias();
|
|
54
57
|
}
|
|
55
58
|
/**
|
|
@@ -74,7 +77,7 @@ class Module {
|
|
|
74
77
|
*/
|
|
75
78
|
registerEntities(entityType) {
|
|
76
79
|
const entities = this.config[entityType];
|
|
77
|
-
this.logger.debug('Module -
|
|
80
|
+
this.logger.debug('Module - searching for entities type:', entityType);
|
|
78
81
|
if (entities && entities.length > 0) {
|
|
79
82
|
const registeredEntities = entities
|
|
80
83
|
.filter((target) => {
|
|
@@ -96,6 +99,35 @@ class Module {
|
|
|
96
99
|
this.logger.debug('Module - Does not have entities of that type', entityType);
|
|
97
100
|
}
|
|
98
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Registra entidades que se escanearon en dentro de proveedores para se reemplazar otra clase.
|
|
104
|
+
* @private
|
|
105
|
+
*/
|
|
106
|
+
registerEntitiesFromProvider() {
|
|
107
|
+
this.logger.debug('Module - searching for entities from provider');
|
|
108
|
+
for (const [key, value] of this.listProvidersClass) {
|
|
109
|
+
try {
|
|
110
|
+
this.logger.debug('Module - Entity provider', `<<< ${key} >>>`);
|
|
111
|
+
const type = this.metadata.determineType(value);
|
|
112
|
+
if (!this.types.includes(type)) {
|
|
113
|
+
throw new Error('The type used in the provider useClass property is not valid');
|
|
114
|
+
}
|
|
115
|
+
this.groupDependenciesForAlias(value);
|
|
116
|
+
const targetName = (0, shared_utils_1.unCapitalize)(value.name);
|
|
117
|
+
const targetProviderName = (0, shared_utils_1.unCapitalize)(key);
|
|
118
|
+
const registerProviderWithEntities = {
|
|
119
|
+
[value.name]: this.injector.getInjectorClass(value),
|
|
120
|
+
[targetName]: (0, awilix_1.aliasTo)(value.name),
|
|
121
|
+
[key]: (0, awilix_1.aliasTo)(value.name),
|
|
122
|
+
[targetProviderName]: (0, awilix_1.aliasTo)(value.name),
|
|
123
|
+
};
|
|
124
|
+
Object.assign(this.registerClass, registerProviderWithEntities);
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
throw new invalidProvider_module_exception_1.InvalidProviderModuleException(value.name, this.module.name, error.message);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
99
131
|
/**
|
|
100
132
|
* Agrupación de dependencias para alias
|
|
101
133
|
*
|
|
@@ -110,7 +142,7 @@ class Module {
|
|
|
110
142
|
*/
|
|
111
143
|
groupDependenciesForAlias(target) {
|
|
112
144
|
const dependencies = this.metadata.getClassDependencies(target);
|
|
113
|
-
this.logger.debug(`Module - List dependecies to group by${target.name}`, dependencies);
|
|
145
|
+
this.logger.debug(`Module - List dependecies to group by ${target.name}`, dependencies);
|
|
114
146
|
if (dependencies && !(0, shared_utils_1.isEmpty)(dependencies)) {
|
|
115
147
|
this.dependenciesClass = [...this.dependenciesClass, ...dependencies];
|
|
116
148
|
}
|
|
@@ -136,11 +168,7 @@ class Module {
|
|
|
136
168
|
this.logger.debug('Module - Register list provider:', this.module.name);
|
|
137
169
|
const listProviders = this.injector.getAllProvider();
|
|
138
170
|
listProviders.forEach((value, key) => {
|
|
139
|
-
|
|
140
|
-
key,
|
|
141
|
-
value,
|
|
142
|
-
});
|
|
143
|
-
this.registerClass[key] = providerInject;
|
|
171
|
+
this.registerClass[key] = value;
|
|
144
172
|
});
|
|
145
173
|
}
|
|
146
174
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zanobijs/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0-beta.0",
|
|
4
4
|
"description": "Zanobi - modern, small, powerful node.js lambda framework (@core)",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"author": "John Edison Cortes Rivera [Devdroide] <johne.aplicativos@gmail.com>",
|
|
@@ -29,5 +29,5 @@
|
|
|
29
29
|
"peerDependencies": {
|
|
30
30
|
"@zanobijs/common": "*"
|
|
31
31
|
},
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "fab2cf615b0fb46a1bd4867b6985c1ad2d88d130"
|
|
33
33
|
}
|