wynkjs 1.0.3 → 1.0.4
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 +252 -55
- package/dist/database.d.ts +1 -1
- package/dist/database.js +1 -1
- package/dist/decorators/exception.advanced.d.ts +286 -18
- package/dist/decorators/exception.advanced.d.ts.map +1 -1
- package/dist/decorators/exception.advanced.js +410 -17
- package/dist/decorators/exception.decorators.d.ts +92 -2
- package/dist/decorators/exception.decorators.d.ts.map +1 -1
- package/dist/decorators/exception.decorators.js +120 -5
- package/dist/decorators/formatter.decorators.d.ts +93 -0
- package/dist/decorators/formatter.decorators.d.ts.map +1 -0
- package/dist/decorators/formatter.decorators.js +131 -0
- package/dist/decorators/guard.decorators.d.ts +2 -2
- package/dist/decorators/http.decorators.d.ts +3 -2
- package/dist/decorators/http.decorators.d.ts.map +1 -1
- package/dist/decorators/pipe.decorators.d.ts +2 -2
- package/dist/decorators/pipe.decorators.d.ts.map +1 -1
- package/dist/decorators/pipe.decorators.js +2 -2
- package/dist/dto.js +1 -1
- package/dist/factory.d.ts +1 -1
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +55 -6
- package/dist/filters/exception.filters.d.ts +124 -0
- package/dist/filters/exception.filters.d.ts.map +1 -0
- package/dist/filters/exception.filters.js +208 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/pipes/validation.pipe.d.ts +3 -3
- package/dist/pipes/validation.pipe.d.ts.map +1 -1
- package/dist/pipes/validation.pipe.js +39 -11
- package/dist/schema-registry.d.ts +51 -0
- package/dist/schema-registry.d.ts.map +1 -0
- package/dist/schema-registry.js +134 -0
- package/dist/testing/index.d.ts +2 -2
- package/dist/testing/index.js +2 -2
- package/package.json +8 -3
|
@@ -5,46 +5,216 @@ import { NotFoundException, UnauthorizedException, ForbiddenException } from "./
|
|
|
5
5
|
/**
|
|
6
6
|
* Advanced Exception Filters for WynkJS Framework
|
|
7
7
|
* Specialized filters for different error scenarios
|
|
8
|
+
*
|
|
9
|
+
* IMPORTANT: Exception Filter Execution Order
|
|
10
|
+
* ==========================================
|
|
11
|
+
*
|
|
12
|
+
* Filters execute in this order:
|
|
13
|
+
* 1. Method-level filters (@UseFilters() on route method)
|
|
14
|
+
* 2. Controller-level filters (@UseFilters() on controller class)
|
|
15
|
+
* 3. Global filters (app.useGlobalFilters())
|
|
16
|
+
*
|
|
17
|
+
* Within each level, filters execute in the order they are registered.
|
|
18
|
+
*
|
|
19
|
+
* ============================================================================
|
|
20
|
+
* CRITICAL: Understanding Filter Scope
|
|
21
|
+
* ============================================================================
|
|
22
|
+
*
|
|
23
|
+
* Exception filters in WynkJS have NO BUILT-IN FILTERING - they catch ALL
|
|
24
|
+
* exceptions of their type! You must control their scope through placement:
|
|
25
|
+
*
|
|
26
|
+
* ❌ PROBLEM: Type-Specific Filters as Global (Old Behavior)
|
|
27
|
+
* -----------------------------------------------------------
|
|
28
|
+
* Most type-specific filters (AuthenticationExceptionFilter, etc.) catch ALL
|
|
29
|
+
* instances of their exception type across your ENTIRE application!
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* // ❌ BAD: These catch ALL exceptions of their type everywhere!
|
|
33
|
+
* app.useGlobalFilters(
|
|
34
|
+
* new AuthenticationExceptionFilter() // Catches ALL 401s
|
|
35
|
+
* );
|
|
36
|
+
*
|
|
37
|
+
* ✅ EXCEPTION: NotFoundExceptionFilter (Smart Filter)
|
|
38
|
+
* ----------------------------------------------------
|
|
39
|
+
* NotFoundExceptionFilter is SMART - it checks if response data exists:
|
|
40
|
+
* - If empty/null/[]/{} → Formats as "Not Found" error
|
|
41
|
+
* - If has data → Passes to next filter
|
|
42
|
+
*
|
|
43
|
+
* This makes it SAFE to use globally!
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* // ✅ GOOD: NotFoundExceptionFilter can be used globally
|
|
47
|
+
* app.useGlobalFilters(
|
|
48
|
+
* new NotFoundExceptionFilter(), // Safe! Only formats truly empty 404s
|
|
49
|
+
* new DatabaseExceptionFilter(), // Only catches DB errors
|
|
50
|
+
* new GlobalExceptionFilter() // Catches everything else
|
|
51
|
+
* );
|
|
52
|
+
*
|
|
53
|
+
* ✅ SOLUTION 1: Use on Specific Routes/Controllers (For non-smart filters)
|
|
54
|
+
* --------------------------------------------------------------------------
|
|
55
|
+
* Apply filters where you need custom formatting:
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* // ✅ GOOD: Only affects this controller
|
|
59
|
+
* @UseFilters(AuthenticationExceptionFilter)
|
|
60
|
+
* @Controller('/auth')
|
|
61
|
+
* export class AuthController {}
|
|
62
|
+
*
|
|
63
|
+
* ✅ SOLUTION 2: Use Generic Filters Globally
|
|
64
|
+
* --------------------------------------------
|
|
65
|
+
* These filters check exception types and re-throw what they don't handle:
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* // ✅ GOOD: Generic filters that filter themselves
|
|
69
|
+
* app.useGlobalFilters(
|
|
70
|
+
* new DatabaseExceptionFilter(), // Only catches DB errors, re-throws HttpExceptions
|
|
71
|
+
* new NotFoundExceptionFilter(), // Smart filter - checks response data
|
|
72
|
+
* new GlobalExceptionFilter() // Catches everything else
|
|
73
|
+
* );
|
|
74
|
+
*
|
|
75
|
+
* Best Practice for Multiple Filters:
|
|
76
|
+
* ------------------------------------
|
|
77
|
+
* When using multiple specialized filters, register them from MOST SPECIFIC to MOST GENERAL:
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* // ✅ RECOMMENDED GLOBAL SETUP
|
|
81
|
+
* const app = WynkFactory.create({
|
|
82
|
+
* controllers: [UserController],
|
|
83
|
+
* validationErrorFormatter: new FormatErrorFormatter(), // Handles validation
|
|
84
|
+
* });
|
|
85
|
+
*
|
|
86
|
+
* app.useGlobalFilters(
|
|
87
|
+
* new DatabaseExceptionFilter(), // Handles DB errors only
|
|
88
|
+
* new GlobalExceptionFilter() // Catches everything else
|
|
89
|
+
* );
|
|
90
|
+
*
|
|
91
|
+
* // Then use specific filters on specific routes:
|
|
92
|
+
* @UseFilters(NotFoundExceptionFilter)
|
|
93
|
+
* @Get('/:id')
|
|
94
|
+
* async findOne(@Param('id') id: string) {}
|
|
95
|
+
*
|
|
96
|
+
* How Filters Work:
|
|
97
|
+
* -----------------
|
|
98
|
+
* 1. Each filter checks if it should handle the exception
|
|
99
|
+
* 2. If YES: Returns the formatted error response
|
|
100
|
+
* 3. If NO: Re-throws the exception (using `throw exception`)
|
|
101
|
+
* 4. Next filter in chain catches the re-thrown exception
|
|
102
|
+
*
|
|
103
|
+
* IMPORTANT: Specialized filters now check for HttpException
|
|
104
|
+
* If you throw HttpException or its subclasses (ConflictException, NotFoundException, etc.),
|
|
105
|
+
* these specialized filters will re-throw them to let the default handler process them correctly.
|
|
8
106
|
*/
|
|
9
107
|
/**
|
|
10
108
|
* Error Formatter Interface
|
|
11
|
-
* Used by
|
|
109
|
+
* Used by WynkFactory to format validation errors
|
|
110
|
+
*
|
|
111
|
+
* IMPORTANT: These formatters are passed to WynkFactory.create(), NOT to useGlobalFilters()!
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* // CORRECT usage:
|
|
115
|
+
* const app = WynkFactory.create({
|
|
116
|
+
* controllers: [UserController],
|
|
117
|
+
* validationErrorFormatter: new FormatErrorFormatter(), // ✅ Pass here
|
|
118
|
+
* });
|
|
119
|
+
*
|
|
120
|
+
* // WRONG usage:
|
|
121
|
+
* app.useGlobalFilters(
|
|
122
|
+
* new ValidationExceptionFilter(new FormatErrorFormatter()) // ❌ This does nothing!
|
|
123
|
+
* );
|
|
12
124
|
*/
|
|
13
125
|
export interface ErrorFormatter {
|
|
14
126
|
format(validationError: any): any;
|
|
15
127
|
}
|
|
16
128
|
/**
|
|
17
129
|
* FormatErrorFormatter - Formats as { field: [messages] } like NestJS
|
|
130
|
+
*
|
|
131
|
+
* Output example:
|
|
132
|
+
* {
|
|
133
|
+
* "statusCode": 400,
|
|
134
|
+
* "message": "Validation failed",
|
|
135
|
+
* "errors": {
|
|
136
|
+
* "email": ["Invalid email address"],
|
|
137
|
+
* "age": ["Must be at least 18"]
|
|
138
|
+
* }
|
|
139
|
+
* }
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* const app = WynkFactory.create({
|
|
143
|
+
* controllers: [UserController],
|
|
144
|
+
* validationErrorFormatter: new FormatErrorFormatter(),
|
|
145
|
+
* });
|
|
18
146
|
*/
|
|
19
147
|
export declare class FormatErrorFormatter implements ErrorFormatter {
|
|
20
148
|
format(error: any): any;
|
|
21
149
|
}
|
|
22
150
|
/**
|
|
23
151
|
* SimpleErrorFormatter - Formats as simple array of messages
|
|
152
|
+
*
|
|
153
|
+
* Output example:
|
|
154
|
+
* {
|
|
155
|
+
* "statusCode": 400,
|
|
156
|
+
* "message": "Validation failed",
|
|
157
|
+
* "errors": [
|
|
158
|
+
* "Invalid email address",
|
|
159
|
+
* "Must be at least 18"
|
|
160
|
+
* ]
|
|
161
|
+
* }
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* const app = WynkFactory.create({
|
|
165
|
+
* controllers: [UserController],
|
|
166
|
+
* validationErrorFormatter: new SimpleErrorFormatter(),
|
|
167
|
+
* });
|
|
24
168
|
*/
|
|
25
169
|
export declare class SimpleErrorFormatter implements ErrorFormatter {
|
|
26
170
|
format(error: any): any;
|
|
27
171
|
}
|
|
28
172
|
/**
|
|
29
173
|
* DetailedErrorFormatter - Formats with detailed field info
|
|
174
|
+
*
|
|
175
|
+
* Output example:
|
|
176
|
+
* {
|
|
177
|
+
* "statusCode": 400,
|
|
178
|
+
* "message": "Validation failed",
|
|
179
|
+
* "errors": [
|
|
180
|
+
* {
|
|
181
|
+
* "field": "email",
|
|
182
|
+
* "message": "Invalid email address",
|
|
183
|
+
* "value": "invalid-email",
|
|
184
|
+
* "expected": {...schema...}
|
|
185
|
+
* }
|
|
186
|
+
* ]
|
|
187
|
+
* }
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* const app = WynkFactory.create({
|
|
191
|
+
* controllers: [UserController],
|
|
192
|
+
* validationErrorFormatter: new DetailedErrorFormatter(),
|
|
193
|
+
* });
|
|
30
194
|
*/
|
|
31
195
|
export declare class DetailedErrorFormatter implements ErrorFormatter {
|
|
32
196
|
format(error: any): any;
|
|
33
197
|
}
|
|
34
198
|
/**
|
|
35
|
-
* Validation Exception Filter -
|
|
36
|
-
* @example
|
|
37
|
-
* // With FormatErrorFormatter (NestJS-style)
|
|
38
|
-
* app.useGlobalFilters(new ValidationExceptionFilter(new FormatErrorFormatter()));
|
|
199
|
+
* Validation Exception Filter - DEPRECATED / NOT RECOMMENDED
|
|
39
200
|
*
|
|
40
|
-
*
|
|
41
|
-
* app.useGlobalFilters(new ValidationExceptionFilter(new SimpleErrorFormatter()));
|
|
201
|
+
* ⚠️ WARNING: This filter is NOT used by WynkJS for validation errors!
|
|
42
202
|
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
203
|
+
* Validation errors are handled directly in the factory's onError hook.
|
|
204
|
+
* To format validation errors, use the validationErrorFormatter option:
|
|
45
205
|
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
206
|
+
* @example
|
|
207
|
+
* // ✅ CORRECT: Use validationErrorFormatter in factory options
|
|
208
|
+
* const app = WynkFactory.create({
|
|
209
|
+
* controllers: [UserController],
|
|
210
|
+
* validationErrorFormatter: new FormatErrorFormatter(), // This works!
|
|
211
|
+
* });
|
|
212
|
+
*
|
|
213
|
+
* // ❌ WRONG: This does nothing for validation errors
|
|
214
|
+
* app.useGlobalFilters(new ValidationExceptionFilter(new FormatErrorFormatter()));
|
|
215
|
+
*
|
|
216
|
+
* This class is kept for backward compatibility and custom use cases,
|
|
217
|
+
* but it's not part of the standard validation error flow.
|
|
48
218
|
*/
|
|
49
219
|
export declare class ValidationExceptionFilter implements WynkExceptionFilter {
|
|
50
220
|
private formatter;
|
|
@@ -53,11 +223,38 @@ export declare class ValidationExceptionFilter implements WynkExceptionFilter {
|
|
|
53
223
|
private isValidationError;
|
|
54
224
|
}
|
|
55
225
|
/**
|
|
56
|
-
* Database Exception Filter - Handles database errors
|
|
226
|
+
* Database Exception Filter - Handles database errors ONLY (not HttpExceptions)
|
|
227
|
+
*
|
|
228
|
+
* This filter catches actual database errors (like unique constraint violations,
|
|
229
|
+
* foreign key errors, etc.) and converts them to user-friendly messages.
|
|
230
|
+
*
|
|
231
|
+
* It will NOT catch HttpException or its subclasses (ConflictException, etc.)
|
|
232
|
+
* that you throw manually - those will pass through to be handled correctly.
|
|
233
|
+
*
|
|
57
234
|
* @example
|
|
235
|
+
* // Use as global filter
|
|
236
|
+
* app.useGlobalFilters(new DatabaseExceptionFilter());
|
|
237
|
+
*
|
|
238
|
+
* // Use on specific controller
|
|
58
239
|
* @UseFilters(DatabaseExceptionFilter)
|
|
59
240
|
* @Controller('/users')
|
|
60
|
-
* export class UserController {
|
|
241
|
+
* export class UserController {
|
|
242
|
+
* @Post()
|
|
243
|
+
* async create(@Body() data: any) {
|
|
244
|
+
* // If you throw manually, it passes through:
|
|
245
|
+
* if (await this.userExists(data.email)) {
|
|
246
|
+
* throw new ConflictException('User with this email already exists'); // ✅ Works correctly
|
|
247
|
+
* }
|
|
248
|
+
*
|
|
249
|
+
* // If database throws error, filter catches it:
|
|
250
|
+
* return await this.db.insert(users).values(data); // ❌ DB unique constraint error → caught by filter
|
|
251
|
+
* }
|
|
252
|
+
* }
|
|
253
|
+
*
|
|
254
|
+
* Handles these database error codes:
|
|
255
|
+
* - 23505: Unique constraint violation → 409 Conflict
|
|
256
|
+
* - 23503: Foreign key constraint violation → 400 Bad Request
|
|
257
|
+
* - 23502: Not null constraint violation → 400 Bad Request
|
|
61
258
|
*/
|
|
62
259
|
export declare class DatabaseExceptionFilter implements WynkExceptionFilter {
|
|
63
260
|
catch(exception: any, context: ExecutionContext): {
|
|
@@ -70,10 +267,20 @@ export declare class DatabaseExceptionFilter implements WynkExceptionFilter {
|
|
|
70
267
|
}
|
|
71
268
|
/**
|
|
72
269
|
* Authentication Exception Filter - Handles auth errors
|
|
270
|
+
*
|
|
271
|
+
* ⚠️ IMPORTANT: This catches ALL UnauthorizedException instances!
|
|
272
|
+
* Use on specific routes/controllers, not globally.
|
|
273
|
+
*
|
|
73
274
|
* @example
|
|
275
|
+
* // ✅ GOOD: Use on auth-protected controller
|
|
74
276
|
* @UseFilters(AuthenticationExceptionFilter)
|
|
75
277
|
* @Controller('/auth')
|
|
76
|
-
* export class AuthController {
|
|
278
|
+
* export class AuthController {
|
|
279
|
+
* @Post('/login')
|
|
280
|
+
* async login() {
|
|
281
|
+
* throw new UnauthorizedException('Invalid credentials');
|
|
282
|
+
* }
|
|
283
|
+
* }
|
|
77
284
|
*/
|
|
78
285
|
export declare class AuthenticationExceptionFilter implements WynkExceptionFilter<UnauthorizedException> {
|
|
79
286
|
catch(exception: UnauthorizedException, context: ExecutionContext): {
|
|
@@ -87,10 +294,20 @@ export declare class AuthenticationExceptionFilter implements WynkExceptionFilte
|
|
|
87
294
|
}
|
|
88
295
|
/**
|
|
89
296
|
* Authorization Exception Filter - Handles permission errors
|
|
297
|
+
*
|
|
298
|
+
* ⚠️ IMPORTANT: This catches ALL ForbiddenException instances!
|
|
299
|
+
* Use on specific routes/controllers, not globally.
|
|
300
|
+
*
|
|
90
301
|
* @example
|
|
302
|
+
* // ✅ GOOD: Use on admin-only controller
|
|
91
303
|
* @UseFilters(AuthorizationExceptionFilter)
|
|
92
304
|
* @Controller('/admin')
|
|
93
|
-
* export class AdminController {
|
|
305
|
+
* export class AdminController {
|
|
306
|
+
* @Get('/users')
|
|
307
|
+
* async getAllUsers() {
|
|
308
|
+
* throw new ForbiddenException('Admin access required');
|
|
309
|
+
* }
|
|
310
|
+
* }
|
|
94
311
|
*/
|
|
95
312
|
export declare class AuthorizationExceptionFilter implements WynkExceptionFilter<ForbiddenException> {
|
|
96
313
|
catch(exception: ForbiddenException, context: ExecutionContext): {
|
|
@@ -103,11 +320,48 @@ export declare class AuthorizationExceptionFilter implements WynkExceptionFilter
|
|
|
103
320
|
};
|
|
104
321
|
}
|
|
105
322
|
/**
|
|
106
|
-
* Not Found Exception Filter - Handles 404 errors
|
|
323
|
+
* Not Found Exception Filter - Handles 404 errors with smart detection
|
|
324
|
+
*
|
|
325
|
+
* This filter is SMART - it only handles NotFoundExceptionFilter if:
|
|
326
|
+
* 1. The exception is NotFoundException, AND
|
|
327
|
+
* 2. No response data has been set (empty, null, empty array, or empty object)
|
|
328
|
+
*
|
|
329
|
+
* This allows it to be used globally without breaking routes that return
|
|
330
|
+
* legitimate empty responses or have their own error handling.
|
|
331
|
+
*
|
|
107
332
|
* @example
|
|
108
|
-
*
|
|
333
|
+
* // ✅ Can be used globally - smart filtering
|
|
334
|
+
* app.useGlobalFilters(
|
|
335
|
+
* new NotFoundExceptionFilter(), // Safe to use globally now!
|
|
336
|
+
* new GlobalExceptionFilter()
|
|
337
|
+
* );
|
|
338
|
+
*
|
|
339
|
+
* @example
|
|
340
|
+
* // Works correctly in all scenarios:
|
|
341
|
+
*
|
|
342
|
+
* // Scenario 1: Empty response with NotFoundException
|
|
109
343
|
* @Get('/:id')
|
|
110
|
-
* async findOne(@Param('id') id: string) {
|
|
344
|
+
* async findOne(@Param('id') id: string) {
|
|
345
|
+
* const item = await this.service.findOne(id);
|
|
346
|
+
* if (!item) {
|
|
347
|
+
* throw new NotFoundException('Item not found'); // ✅ Caught and formatted by NotFoundExceptionFilter
|
|
348
|
+
* }
|
|
349
|
+
* return item;
|
|
350
|
+
* }
|
|
351
|
+
*
|
|
352
|
+
* // Scenario 2: Valid empty array response
|
|
353
|
+
* @Get('/search')
|
|
354
|
+
* async search(@Query('q') query: string) {
|
|
355
|
+
* const results = await this.service.search(query);
|
|
356
|
+
* return results; // ✅ Returns [] without triggering NotFoundExceptionFilter (no NotFoundException thrown)
|
|
357
|
+
* }
|
|
358
|
+
*
|
|
359
|
+
* // Scenario 3: NotFoundException with existing response data
|
|
360
|
+
* @Get('/custom')
|
|
361
|
+
* async custom() {
|
|
362
|
+
* const data = { message: 'Custom data' };
|
|
363
|
+
* throw new NotFoundException('Not found'); // ✅ Passes through (has response data)
|
|
364
|
+
* }
|
|
111
365
|
*/
|
|
112
366
|
export declare class NotFoundExceptionFilter implements WynkExceptionFilter<NotFoundException> {
|
|
113
367
|
catch(exception: NotFoundException, context: ExecutionContext): {
|
|
@@ -118,6 +372,12 @@ export declare class NotFoundExceptionFilter implements WynkExceptionFilter<NotF
|
|
|
118
372
|
path: any;
|
|
119
373
|
suggestion: string;
|
|
120
374
|
};
|
|
375
|
+
/**
|
|
376
|
+
* Check if response has meaningful data
|
|
377
|
+
* Returns false for: null, undefined, {}, [], ""
|
|
378
|
+
* Returns true for: anything else
|
|
379
|
+
*/
|
|
380
|
+
private hasResponseData;
|
|
121
381
|
}
|
|
122
382
|
/**
|
|
123
383
|
* Rate Limit Exception Filter - Handles rate limit errors
|
|
@@ -186,4 +446,12 @@ export declare class GlobalExceptionFilter implements WynkExceptionFilter {
|
|
|
186
446
|
path: any;
|
|
187
447
|
};
|
|
188
448
|
}
|
|
449
|
+
/**
|
|
450
|
+
* ============================================================================
|
|
451
|
+
* COMPLETE EXAMPLE: Using Multiple Exception Filters
|
|
452
|
+
* ============================================================================
|
|
453
|
+
*
|
|
454
|
+
* Here's a complete example showing how to properly use multiple exception
|
|
455
|
+
* filters in a WynkJS application with the correct order and behavior.
|
|
456
|
+
*/
|
|
189
457
|
//# sourceMappingURL=exception.advanced.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exception.advanced.d.ts","sourceRoot":"","sources":["../../core/decorators/exception.advanced.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAEL,iBAAiB,EAEjB,qBAAqB,EACrB,kBAAkB,EAEnB,MAAM,wBAAwB,CAAC;AAEhC
|
|
1
|
+
{"version":3,"file":"exception.advanced.d.ts","sourceRoot":"","sources":["../../core/decorators/exception.advanced.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAEL,iBAAiB,EAEjB,qBAAqB,EACrB,kBAAkB,EAEnB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqGG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,eAAe,EAAE,GAAG,GAAG,GAAG,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IACzD,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG;CAsBxB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IACzD,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG;CAiBxB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,sBAAuB,YAAW,cAAc;IAC3D,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG;CAgCxB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,yBAA0B,YAAW,mBAAmB;IACnE,OAAO,CAAC,SAAS,CAA+B;gBAEpC,SAAS,CAAC,EAAE,cAAc;IAItC,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB;IAgC/C,OAAO,CAAC,iBAAiB;CAiB1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IACjE,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB;;;;;;;CAuChD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,6BACX,YAAW,mBAAmB,CAAC,qBAAqB,CAAC;IAErD,KAAK,CAAC,SAAS,EAAE,qBAAqB,EAAE,OAAO,EAAE,gBAAgB;;;;;;;;CAalE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,4BACX,YAAW,mBAAmB,CAAC,kBAAkB,CAAC;IAElD,KAAK,CAAC,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,gBAAgB;;;;;;;;CAe/D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,qBAAa,uBACX,YAAW,mBAAmB,CAAC,iBAAiB,CAAC;IAEjD,KAAK,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,gBAAgB;;;;;;;;IA2B7D;;;;OAIG;IACH,OAAO,CAAC,eAAe;CAuBxB;AAED;;;;;;GAMG;AACH,qBAAa,wBAAyB,YAAW,mBAAmB;IAClE,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB;;;;;;;;;CAmBhD;AAED;;;;;;GAMG;AACH,qBAAa,4BAA6B,YAAW,mBAAmB;IACtE,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB;;;;;;;;;CAmBhD;AAED;;;;;;GAMG;AACH,qBAAa,yBAA0B,YAAW,mBAAmB;IACnE,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB;;;;;;;CA2BhD;AAED;;;;GAIG;AACH,qBAAa,qBAAsB,YAAW,mBAAmB;IAC/D,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB;;;;;;;;CA2BhD;AAED;;;;;;;GAOG"}
|