exisjs 0.7.9 → 0.7.10

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.
Files changed (105) hide show
  1. package/dist/config/config.js +1 -1
  2. package/dist/config/config.js.map +1 -1
  3. package/dist/decorators/constants.d.ts +2 -0
  4. package/dist/decorators/constants.d.ts.map +1 -1
  5. package/dist/decorators/constants.js +3 -1
  6. package/dist/decorators/constants.js.map +1 -1
  7. package/dist/decorators/core.d.ts +14 -0
  8. package/dist/decorators/core.d.ts.map +1 -1
  9. package/dist/decorators/core.js +156 -41
  10. package/dist/decorators/core.js.map +1 -1
  11. package/dist/decorators/filters.d.ts +2 -10
  12. package/dist/decorators/filters.d.ts.map +1 -1
  13. package/dist/decorators/filters.js.map +1 -1
  14. package/dist/decorators/index.d.ts +1 -0
  15. package/dist/decorators/index.d.ts.map +1 -1
  16. package/dist/decorators/index.js +1 -0
  17. package/dist/decorators/index.js.map +1 -1
  18. package/dist/decorators/lifecycle.d.ts +29 -0
  19. package/dist/decorators/lifecycle.d.ts.map +1 -1
  20. package/dist/decorators/params.d.ts +3 -7
  21. package/dist/decorators/params.d.ts.map +1 -1
  22. package/dist/decorators/params.js.map +1 -1
  23. package/dist/decorators/pipes.d.ts +91 -0
  24. package/dist/decorators/pipes.d.ts.map +1 -0
  25. package/dist/decorators/pipes.js +283 -0
  26. package/dist/decorators/pipes.js.map +1 -0
  27. package/dist/di/container.d.ts +6 -3
  28. package/dist/di/container.d.ts.map +1 -1
  29. package/dist/di/container.js +186 -68
  30. package/dist/di/container.js.map +1 -1
  31. package/dist/di/decorators.d.ts +23 -5
  32. package/dist/di/decorators.d.ts.map +1 -1
  33. package/dist/di/decorators.js +83 -20
  34. package/dist/di/decorators.js.map +1 -1
  35. package/dist/di/forward-ref.d.ts +23 -0
  36. package/dist/di/forward-ref.d.ts.map +1 -0
  37. package/dist/di/forward-ref.js +30 -0
  38. package/dist/di/forward-ref.js.map +1 -0
  39. package/dist/di/index.d.ts +2 -1
  40. package/dist/di/index.d.ts.map +1 -1
  41. package/dist/di/index.js +8 -1
  42. package/dist/di/index.js.map +1 -1
  43. package/dist/docs/content/controllers.mdx +230 -0
  44. package/dist/docs/content/errors.mdx +16 -9
  45. package/dist/docs/content/modules.mdx +23 -4
  46. package/dist/docs/content/providers.mdx +42 -6
  47. package/dist/docs/content/requests.mdx +9 -3
  48. package/dist/docs/content/responses.mdx +19 -5
  49. package/dist/docs/reference/config.mdx +3 -2
  50. package/dist/docs/reference/decorators.mdx +15 -4
  51. package/dist/docs/reference/di.mdx +23 -16
  52. package/dist/docs/reference/router.mdx +75 -0
  53. package/dist/docs/reference/validator.mdx +2 -2
  54. package/dist/error/errors.d.ts.map +1 -1
  55. package/dist/error/errors.js +12 -0
  56. package/dist/error/errors.js.map +1 -1
  57. package/dist/router/controller-registrar.d.ts.map +1 -1
  58. package/dist/router/controller-registrar.js +142 -87
  59. package/dist/router/controller-registrar.js.map +1 -1
  60. package/dist/router/index.d.ts.map +1 -1
  61. package/dist/router/index.js.map +1 -1
  62. package/dist/router/route-builder.d.ts +160 -29
  63. package/dist/router/route-builder.d.ts.map +1 -1
  64. package/dist/router/route-builder.js +105 -31
  65. package/dist/router/route-builder.js.map +1 -1
  66. package/dist/router/route-scanner.d.ts +3 -2
  67. package/dist/router/route-scanner.d.ts.map +1 -1
  68. package/dist/router/route-scanner.js.map +1 -1
  69. package/dist/router/router.d.ts.map +1 -1
  70. package/dist/router/router.js +44 -0
  71. package/dist/router/router.js.map +1 -1
  72. package/dist/router/scanner/functional-compiler.d.ts +1 -1
  73. package/dist/router/scanner/functional-compiler.d.ts.map +1 -1
  74. package/dist/router/scanner/functional-compiler.js +403 -64
  75. package/dist/router/scanner/functional-compiler.js.map +1 -1
  76. package/dist/router/types.d.ts +4 -2
  77. package/dist/router/types.d.ts.map +1 -1
  78. package/dist/server/app.d.ts +2 -0
  79. package/dist/server/app.d.ts.map +1 -1
  80. package/dist/server/app.js +38 -0
  81. package/dist/server/app.js.map +1 -1
  82. package/dist/server/helpers/etag.d.ts +1 -0
  83. package/dist/server/helpers/etag.d.ts.map +1 -1
  84. package/dist/server/helpers/etag.js +121 -10
  85. package/dist/server/helpers/etag.js.map +1 -1
  86. package/dist/server/helpers/ip.d.ts.map +1 -1
  87. package/dist/server/helpers/ip.js +75 -17
  88. package/dist/server/helpers/ip.js.map +1 -1
  89. package/dist/server/response.d.ts.map +1 -1
  90. package/dist/server/response.js +24 -9
  91. package/dist/server/response.js.map +1 -1
  92. package/dist/swagger/generator.d.ts.map +1 -1
  93. package/dist/swagger/generator.js +66 -22
  94. package/dist/swagger/generator.js.map +1 -1
  95. package/dist/testing/client.d.ts +15 -11
  96. package/dist/testing/client.d.ts.map +1 -1
  97. package/dist/testing/client.js +32 -11
  98. package/dist/testing/client.js.map +1 -1
  99. package/dist/utils/logger.d.ts.map +1 -1
  100. package/dist/utils/logger.js +2 -0
  101. package/dist/utils/logger.js.map +1 -1
  102. package/dist/validator/engine.d.ts.map +1 -1
  103. package/dist/validator/engine.js +45 -0
  104. package/dist/validator/engine.js.map +1 -1
  105. package/package.json +1 -1
@@ -0,0 +1,91 @@
1
+ export interface ArgumentMetadata {
2
+ type: 'body' | 'query' | 'param' | 'custom' | 'header' | string;
3
+ metatype?: any;
4
+ data?: string;
5
+ }
6
+ export interface PipeTransform<T = any, R = any> {
7
+ transform(value: T, metadata?: ArgumentMetadata): R | Promise<R>;
8
+ }
9
+ export interface ParseIntPipeOptions {
10
+ errorHttpStatusCode?: number;
11
+ exceptionFactory?: (error: string) => any;
12
+ }
13
+ export declare class ParseIntPipe implements PipeTransform<string | number, number> {
14
+ private options?;
15
+ constructor(options?: ParseIntPipeOptions | undefined);
16
+ transform(value: string | number, metadata?: ArgumentMetadata): number;
17
+ private createException;
18
+ }
19
+ export interface ParseFloatPipeOptions {
20
+ errorHttpStatusCode?: number;
21
+ exceptionFactory?: (error: string) => any;
22
+ }
23
+ export declare class ParseFloatPipe implements PipeTransform<string | number, number> {
24
+ private options?;
25
+ constructor(options?: ParseFloatPipeOptions | undefined);
26
+ transform(value: string | number, metadata?: ArgumentMetadata): number;
27
+ private createException;
28
+ }
29
+ export interface ParseBoolPipeOptions {
30
+ errorHttpStatusCode?: number;
31
+ exceptionFactory?: (error: string) => any;
32
+ }
33
+ export declare class ParseBoolPipe implements PipeTransform<any, boolean> {
34
+ private options?;
35
+ constructor(options?: ParseBoolPipeOptions | undefined);
36
+ transform(value: any, metadata?: ArgumentMetadata): boolean;
37
+ }
38
+ export interface ParseUUIDPipeOptions {
39
+ version?: '3' | '4' | '5' | 'all';
40
+ errorHttpStatusCode?: number;
41
+ exceptionFactory?: (error: string) => any;
42
+ }
43
+ export declare class ParseUUIDPipe implements PipeTransform<string, string> {
44
+ private options?;
45
+ constructor(options?: ParseUUIDPipeOptions | undefined);
46
+ transform(value: string, metadata?: ArgumentMetadata): string;
47
+ }
48
+ export interface ParseArrayPipeOptions {
49
+ items?: any;
50
+ separator?: string;
51
+ optional?: boolean;
52
+ errorHttpStatusCode?: number;
53
+ exceptionFactory?: (error: string) => any;
54
+ }
55
+ export declare class ParseArrayPipe implements PipeTransform<any, any[]> {
56
+ private options?;
57
+ constructor(options?: ParseArrayPipeOptions | undefined);
58
+ transform(value: any, metadata?: ArgumentMetadata): Promise<any[]>;
59
+ private createException;
60
+ }
61
+ export interface ValidationPipeOptions {
62
+ transform?: boolean;
63
+ whitelist?: boolean;
64
+ forbidNonWhitelisted?: boolean;
65
+ disableErrorMessages?: boolean;
66
+ errorHttpStatusCode?: number;
67
+ exceptionFactory?: (errors: any) => any;
68
+ }
69
+ export declare class ValidationPipe implements PipeTransform<any, any> {
70
+ private options?;
71
+ constructor(options?: ValidationPipeOptions | undefined);
72
+ transform(value: any, metadata?: ArgumentMetadata): Promise<any>;
73
+ }
74
+ /**
75
+ * Binds pipes to a method or controller class.
76
+ *
77
+ * @param pipes Pipe instances or classes to apply to controller arguments
78
+ *
79
+ * @example
80
+ * ```ts
81
+ * @UsePipes(new ValidationPipe({ transform: true }))
82
+ * @Controller('/users')
83
+ * export class UserController {
84
+ * @Post('/')
85
+ * @UsePipes(ParseIntPipe)
86
+ * createUser(@Body() dto: CreateUserDto) {}
87
+ * }
88
+ * ```
89
+ */
90
+ export declare function UsePipes(...pipes: any[]): any;
91
+ //# sourceMappingURL=pipes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipes.d.ts","sourceRoot":"","sources":["../../src/decorators/pipes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidationPipe = exports.ParseArrayPipe = exports.ParseUUIDPipe = exports.ParseBoolPipe = exports.ParseFloatPipe = exports.ParseIntPipe = void 0;
4
+ exports.UsePipes = UsePipes;
5
+ const error_1 = require("../error");
6
+ const constants_1 = require("./constants");
7
+ const metadata_1 = require("./core/metadata");
8
+ class ParseIntPipe {
9
+ constructor(options) {
10
+ this.options = options;
11
+ }
12
+ transform(value, metadata) {
13
+ if (typeof value === 'number') {
14
+ if (Number.isNaN(value) || !Number.isFinite(value)) {
15
+ throw this.createException(metadata?.data || 'value');
16
+ }
17
+ return Math.trunc(value);
18
+ }
19
+ if (typeof value === 'string') {
20
+ const trimmed = value.trim();
21
+ if (trimmed === '' || !/^-?\d+$/.test(trimmed)) {
22
+ throw this.createException(metadata?.data || 'value');
23
+ }
24
+ const parsed = parseInt(trimmed, 10);
25
+ if (Number.isNaN(parsed)) {
26
+ throw this.createException(metadata?.data || 'value');
27
+ }
28
+ return parsed;
29
+ }
30
+ throw this.createException(metadata?.data || 'value');
31
+ }
32
+ createException(paramName) {
33
+ const msg = `Validation failed (numeric string is expected for '${paramName}')`;
34
+ if (this.options?.exceptionFactory) {
35
+ return this.options.exceptionFactory(msg);
36
+ }
37
+ const status = this.options?.errorHttpStatusCode || 400;
38
+ return new error_1.BadRequestException(msg, { statusCode: status });
39
+ }
40
+ }
41
+ exports.ParseIntPipe = ParseIntPipe;
42
+ class ParseFloatPipe {
43
+ constructor(options) {
44
+ this.options = options;
45
+ }
46
+ transform(value, metadata) {
47
+ if (typeof value === 'number') {
48
+ if (Number.isNaN(value) || !Number.isFinite(value)) {
49
+ throw this.createException(metadata?.data || 'value');
50
+ }
51
+ return value;
52
+ }
53
+ if (typeof value === 'string') {
54
+ const trimmed = value.trim();
55
+ if (trimmed === '' || Number.isNaN(Number(trimmed))) {
56
+ throw this.createException(metadata?.data || 'value');
57
+ }
58
+ const parsed = parseFloat(trimmed);
59
+ if (Number.isNaN(parsed)) {
60
+ throw this.createException(metadata?.data || 'value');
61
+ }
62
+ return parsed;
63
+ }
64
+ throw this.createException(metadata?.data || 'value');
65
+ }
66
+ createException(paramName) {
67
+ const msg = `Validation failed (numeric float string is expected for '${paramName}')`;
68
+ if (this.options?.exceptionFactory) {
69
+ return this.options.exceptionFactory(msg);
70
+ }
71
+ const status = this.options?.errorHttpStatusCode || 400;
72
+ return new error_1.BadRequestException(msg, { statusCode: status });
73
+ }
74
+ }
75
+ exports.ParseFloatPipe = ParseFloatPipe;
76
+ class ParseBoolPipe {
77
+ constructor(options) {
78
+ this.options = options;
79
+ }
80
+ transform(value, metadata) {
81
+ if (value === true || value === 'true' || value === 1 || value === '1') {
82
+ return true;
83
+ }
84
+ if (value === false || value === 'false' || value === 0 || value === '0') {
85
+ return false;
86
+ }
87
+ const msg = `Validation failed (boolean string is expected for '${metadata?.data || 'value'}')`;
88
+ if (this.options?.exceptionFactory) {
89
+ throw this.options.exceptionFactory(msg);
90
+ }
91
+ const status = this.options?.errorHttpStatusCode || 400;
92
+ throw new error_1.BadRequestException(msg, { statusCode: status });
93
+ }
94
+ }
95
+ exports.ParseBoolPipe = ParseBoolPipe;
96
+ const UUID_PATTERNS = {
97
+ '3': /^[0-9a-f]{8}-[0-9a-f]{4}-3[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,
98
+ '4': /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,
99
+ '5': /^[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,
100
+ all: /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,
101
+ };
102
+ class ParseUUIDPipe {
103
+ constructor(options) {
104
+ this.options = options;
105
+ }
106
+ transform(value, metadata) {
107
+ const version = this.options?.version || 'all';
108
+ const pattern = UUID_PATTERNS[version] || UUID_PATTERNS.all;
109
+ if (typeof value === 'string' && pattern.test(value)) {
110
+ return value;
111
+ }
112
+ const msg = `Validation failed (UUID${version !== 'all' ? ` v${version}` : ''} is expected for '${metadata?.data || 'value'}')`;
113
+ if (this.options?.exceptionFactory) {
114
+ throw this.options.exceptionFactory(msg);
115
+ }
116
+ const status = this.options?.errorHttpStatusCode || 400;
117
+ throw new error_1.BadRequestException(msg, { statusCode: status });
118
+ }
119
+ }
120
+ exports.ParseUUIDPipe = ParseUUIDPipe;
121
+ class ParseArrayPipe {
122
+ constructor(options) {
123
+ this.options = options;
124
+ }
125
+ async transform(value, metadata) {
126
+ if (value === undefined || value === null) {
127
+ if (this.options?.optional)
128
+ return [];
129
+ throw this.createException(metadata?.data || 'value', 'Array is required');
130
+ }
131
+ let arr;
132
+ if (Array.isArray(value)) {
133
+ arr = value;
134
+ }
135
+ else if (typeof value === 'string') {
136
+ const sep = this.options?.separator || ',';
137
+ arr = value.split(sep).map((s) => s.trim());
138
+ }
139
+ else {
140
+ arr = [value];
141
+ }
142
+ if (this.options?.items) {
143
+ const ItemPipe = this.options.items;
144
+ const pipeInstance = typeof ItemPipe === 'function' && ItemPipe.prototype?.transform
145
+ ? new ItemPipe()
146
+ : typeof ItemPipe?.transform === 'function'
147
+ ? ItemPipe
148
+ : undefined;
149
+ if (pipeInstance) {
150
+ const transformed = [];
151
+ for (let i = 0; i < arr.length; i++) {
152
+ transformed.push(await pipeInstance.transform(arr[i], {
153
+ type: metadata?.type || 'custom',
154
+ data: `${metadata?.data || 'array'}[${i}]`,
155
+ }));
156
+ }
157
+ return transformed;
158
+ }
159
+ }
160
+ return arr;
161
+ }
162
+ createException(paramName, reason = 'Array is expected') {
163
+ const msg = `Validation failed (${reason} for '${paramName}')`;
164
+ if (this.options?.exceptionFactory) {
165
+ return this.options.exceptionFactory(msg);
166
+ }
167
+ const status = this.options?.errorHttpStatusCode || 400;
168
+ return new error_1.BadRequestException(msg, { statusCode: status });
169
+ }
170
+ }
171
+ exports.ParseArrayPipe = ParseArrayPipe;
172
+ class ValidationPipe {
173
+ constructor(options) {
174
+ this.options = options;
175
+ }
176
+ async transform(value, metadata) {
177
+ if (value === undefined || value === null)
178
+ return value;
179
+ const metatype = metadata?.metatype;
180
+ if (!metatype ||
181
+ metatype === Object ||
182
+ metatype === String ||
183
+ metatype === Number ||
184
+ metatype === Boolean ||
185
+ metatype === Array) {
186
+ return value;
187
+ }
188
+ if (typeof metatype.parse === 'function') {
189
+ return metatype.parse(value);
190
+ }
191
+ if (metatype['~standard'] &&
192
+ typeof metatype['~standard'].validate === 'function') {
193
+ const result = await metatype['~standard'].validate(value);
194
+ if (result.issues && result.issues.length > 0) {
195
+ const status = this.options?.errorHttpStatusCode || 400;
196
+ throw new error_1.BadRequestException('Validation Failed', {
197
+ statusCode: status,
198
+ validationErrors: result.issues,
199
+ });
200
+ }
201
+ return result.value;
202
+ }
203
+ if (typeof metatype === 'function') {
204
+ let instance = value;
205
+ const hasCustomValidate = typeof metatype.prototype?.validate === 'function' ||
206
+ typeof metatype.prototype?.validateSync === 'function';
207
+ if (this.options?.transform || hasCustomValidate) {
208
+ instance = new metatype();
209
+ Object.assign(instance, value);
210
+ }
211
+ if (typeof instance.validate === 'function') {
212
+ const errors = await instance.validate();
213
+ if (errors &&
214
+ (Array.isArray(errors) ? errors.length > 0 : Boolean(errors))) {
215
+ if (this.options?.exceptionFactory) {
216
+ throw this.options.exceptionFactory(errors);
217
+ }
218
+ const status = this.options?.errorHttpStatusCode || 400;
219
+ throw new error_1.BadRequestException('Validation Failed', {
220
+ statusCode: status,
221
+ validationErrors: errors,
222
+ });
223
+ }
224
+ }
225
+ else if (typeof instance.validateSync === 'function') {
226
+ const errors = instance.validateSync();
227
+ if (errors &&
228
+ (Array.isArray(errors) ? errors.length > 0 : Boolean(errors))) {
229
+ if (this.options?.exceptionFactory) {
230
+ throw this.options.exceptionFactory(errors);
231
+ }
232
+ const status = this.options?.errorHttpStatusCode || 400;
233
+ throw new error_1.BadRequestException('Validation Failed', {
234
+ statusCode: status,
235
+ validationErrors: errors,
236
+ });
237
+ }
238
+ }
239
+ return instance;
240
+ }
241
+ return value;
242
+ }
243
+ }
244
+ exports.ValidationPipe = ValidationPipe;
245
+ /**
246
+ * Binds pipes to a method or controller class.
247
+ *
248
+ * @param pipes Pipe instances or classes to apply to controller arguments
249
+ *
250
+ * @example
251
+ * ```ts
252
+ * @UsePipes(new ValidationPipe({ transform: true }))
253
+ * @Controller('/users')
254
+ * export class UserController {
255
+ * @Post('/')
256
+ * @UsePipes(ParseIntPipe)
257
+ * createUser(@Body() dto: CreateUserDto) {}
258
+ * }
259
+ * ```
260
+ */
261
+ function UsePipes(...pipes) {
262
+ return function (target, propertyKey, descriptor) {
263
+ if (propertyKey && descriptor) {
264
+ const fn = descriptor.value || target[propertyKey];
265
+ const existing = metadata_1.MetadataEngine.get(fn, constants_1.PIPES_METADATA) || [];
266
+ metadata_1.MetadataEngine.set(fn, constants_1.PIPES_METADATA, [...existing, ...pipes]);
267
+ if (fn) {
268
+ ;
269
+ fn[constants_1.PIPES_METADATA] = [...existing, ...pipes];
270
+ }
271
+ }
272
+ else {
273
+ const proto = typeof target === 'function' ? target.prototype : target;
274
+ const existing = metadata_1.MetadataEngine.get(proto, constants_1.PIPES_METADATA) || [];
275
+ metadata_1.MetadataEngine.set(proto, constants_1.PIPES_METADATA, [...existing, ...pipes]);
276
+ if (proto) {
277
+ ;
278
+ proto[constants_1.PIPES_METADATA] = [...existing, ...pipes];
279
+ }
280
+ }
281
+ };
282
+ }
283
+ //# sourceMappingURL=pipes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipes.js","sourceRoot":"","sources":["../../src/decorators/pipes.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- export type ProviderToken<T = any> = string | symbol | (new (...args: any[]) => T);
1
+ import { type ForwardReference } from './forward-ref';
2
+ export type ProviderToken<T = any> = string | symbol | (new (...args: any[]) => T) | ForwardReference<T>;
2
3
  export interface BaseProvider {
3
4
  scope?: 'singleton' | 'request' | 'transient';
4
5
  }
@@ -13,15 +14,17 @@ export interface ClassProvider<T> extends BaseProvider {
13
14
  }
14
15
  export type ProviderDefinition<T> = ValueProvider<T> | FactoryProvider<T> | ClassProvider<T> | T;
15
16
  export declare const INJECT_METADATA: unique symbol;
17
+ export declare const PROPERTY_INJECT_METADATA: unique symbol;
16
18
  export declare const OPTIONAL_METADATA: unique symbol;
17
19
  export declare const SCOPE_METADATA: unique symbol;
18
20
  export declare class Container {
19
21
  private providers;
20
22
  private singletonCache;
23
+ private inFlight;
21
24
  provide<T>(token: ProviderToken<T>, provider: ProviderDefinition<T>): void;
22
25
  clearCache(): void;
23
- instantiateClass<T>(TargetClass: new (...args: any[]) => T, requestCache?: Map<ProviderToken, any>): T;
24
- resolve<T>(token: ProviderToken<T>, requestCache?: Map<ProviderToken, any>): T;
26
+ instantiateClass<T>(TargetClass: new (...args: any[]) => T, requestCache?: Map<any, any>): T;
27
+ resolve<T>(token: ProviderToken<T>, requestCache?: Map<any, any>): T;
25
28
  initLifecycle(): Promise<void>;
26
29
  destroyLifecycle(signal?: string): Promise<void>;
27
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/di/container.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,GAAG,IAC/B,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;AAE/C,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,CAAA;CAC9C;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,CAAE,SAAQ,YAAY;IACpD,QAAQ,EAAE,CAAC,CAAA;CACZ;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,CAAE,SAAQ,YAAY;IACtD,UAAU,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,CAAE,SAAQ,YAAY;IACpD,QAAQ,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;CACpC;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAC9B,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAE9D,eAAO,MAAM,eAAe,eAAqC,CAAA;AACjE,eAAO,MAAM,iBAAiB,eAAuC,CAAA;AACrE,eAAO,MAAM,cAAc,eAA6B,CAAA;AAExD,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,cAAc,CAAgC;IAEtD,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI;IAK1E,UAAU,IAAI,IAAI;IAIlB,gBAAgB,CAAC,CAAC,EAChB,WAAW,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EACtC,YAAY,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,GACrC,CAAC;IAmDJ,OAAO,CAAC,CAAC,EACP,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,YAAY,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,GACrC,CAAC;IAmGS,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAe9D"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/di/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEnE,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,GAAG,IAC/B,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;AAErE,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,CAAA;CAC9C;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,CAAE,SAAQ,YAAY;IACpD,QAAQ,EAAE,CAAC,CAAA;CACZ;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,CAAE,SAAQ,YAAY;IACtD,UAAU,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,CAAE,SAAQ,YAAY;IACpD,QAAQ,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;CACpC;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAC9B,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAE9D,eAAO,MAAM,eAAe,eAAqC,CAAA;AACjE,eAAO,MAAM,wBAAwB,eAEpC,CAAA;AACD,eAAO,MAAM,iBAAiB,eAAuC,CAAA;AACrE,eAAO,MAAM,cAAc,eAA6B,CAAA;AAExD,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,QAAQ,CAAiB;IAEjC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI;IAM1E,UAAU,IAAI,IAAI;IAKlB,gBAAgB,CAAC,CAAC,EAChB,WAAW,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EACtC,YAAY,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAC3B,CAAC;IAoJJ,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;IA0IvD,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAe9D"}