nestjs-to-collection 1.0.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.
Files changed (39) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +334 -0
  3. package/dist/cli/index.d.ts +3 -0
  4. package/dist/cli/index.d.ts.map +1 -0
  5. package/dist/cli/index.js +234 -0
  6. package/dist/cli/index.js.map +1 -0
  7. package/dist/generators/index.d.ts +3 -0
  8. package/dist/generators/index.d.ts.map +1 -0
  9. package/dist/generators/index.js +8 -0
  10. package/dist/generators/index.js.map +1 -0
  11. package/dist/generators/insomnia.generator.d.ts +24 -0
  12. package/dist/generators/insomnia.generator.d.ts.map +1 -0
  13. package/dist/generators/insomnia.generator.js +276 -0
  14. package/dist/generators/insomnia.generator.js.map +1 -0
  15. package/dist/generators/postman.generator.d.ts +22 -0
  16. package/dist/generators/postman.generator.d.ts.map +1 -0
  17. package/dist/generators/postman.generator.js +299 -0
  18. package/dist/generators/postman.generator.js.map +1 -0
  19. package/dist/index.d.ts +6 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +30 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/parsers/decorator.parser.d.ts +20 -0
  24. package/dist/parsers/decorator.parser.d.ts.map +1 -0
  25. package/dist/parsers/decorator.parser.js +396 -0
  26. package/dist/parsers/decorator.parser.js.map +1 -0
  27. package/dist/parsers/index.d.ts +3 -0
  28. package/dist/parsers/index.d.ts.map +1 -0
  29. package/dist/parsers/index.js +8 -0
  30. package/dist/parsers/index.js.map +1 -0
  31. package/dist/parsers/swagger.parser.d.ts +25 -0
  32. package/dist/parsers/swagger.parser.d.ts.map +1 -0
  33. package/dist/parsers/swagger.parser.js +237 -0
  34. package/dist/parsers/swagger.parser.js.map +1 -0
  35. package/dist/types/index.d.ts +187 -0
  36. package/dist/types/index.d.ts.map +1 -0
  37. package/dist/types/index.js +3 -0
  38. package/dist/types/index.js.map +1 -0
  39. package/package.json +73 -0
package/dist/index.js ADDED
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.InsomniaGenerator = exports.PostmanGenerator = exports.DecoratorParser = exports.SwaggerParser = void 0;
18
+ // Types
19
+ __exportStar(require("./types"), exports);
20
+ // Parsers
21
+ var swagger_parser_1 = require("./parsers/swagger.parser");
22
+ Object.defineProperty(exports, "SwaggerParser", { enumerable: true, get: function () { return swagger_parser_1.SwaggerParser; } });
23
+ var decorator_parser_1 = require("./parsers/decorator.parser");
24
+ Object.defineProperty(exports, "DecoratorParser", { enumerable: true, get: function () { return decorator_parser_1.DecoratorParser; } });
25
+ // Generators
26
+ var postman_generator_1 = require("./generators/postman.generator");
27
+ Object.defineProperty(exports, "PostmanGenerator", { enumerable: true, get: function () { return postman_generator_1.PostmanGenerator; } });
28
+ var insomnia_generator_1 = require("./generators/insomnia.generator");
29
+ Object.defineProperty(exports, "InsomniaGenerator", { enumerable: true, get: function () { return insomnia_generator_1.InsomniaGenerator; } });
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,QAAQ;AACR,0CAAwB;AAExB,UAAU;AACV,2DAAyD;AAAhD,+GAAA,aAAa,OAAA;AACtB,+DAA6D;AAApD,mHAAA,eAAe,OAAA;AAExB,aAAa;AACb,oEAAkE;AAAzD,qHAAA,gBAAgB,OAAA;AACzB,sEAAoE;AAA3D,uHAAA,iBAAiB,OAAA"}
@@ -0,0 +1,20 @@
1
+ import { ApiCollection } from '../types';
2
+ /**
3
+ * Parser for NestJS decorators from source code
4
+ */
5
+ export declare class DecoratorParser {
6
+ /**
7
+ * Parse NestJS source files and return an ApiCollection
8
+ */
9
+ parse(srcPath: string): Promise<ApiCollection>;
10
+ private findAndParseControllers;
11
+ private parseControllerFile;
12
+ private parseControllerMethods;
13
+ private parseMethodBlock;
14
+ private parseMethodParameters;
15
+ private parseObjectLiteral;
16
+ private normalizePath;
17
+ private convertToGroups;
18
+ private joinPaths;
19
+ }
20
+ //# sourceMappingURL=decorator.parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorator.parser.d.ts","sourceRoot":"","sources":["../../src/parsers/decorator.parser.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EAOd,MAAM,UAAU,CAAC;AA+ClB;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;YAyBtC,uBAAuB;IAoBrC,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,sBAAsB;IAiC9B,OAAO,CAAC,gBAAgB;IAoJxB,OAAO,CAAC,qBAAqB;IAsD7B,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,SAAS;CAUlB"}
@@ -0,0 +1,396 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.DecoratorParser = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const glob_1 = require("glob");
40
+ /**
41
+ * Regex patterns for NestJS decorators
42
+ */
43
+ const DECORATOR_PATTERNS = {
44
+ controller: /@Controller\s*\(\s*['"`]?([^'"`\)]*)?['"`]?\s*\)/,
45
+ get: /@Get\s*\(\s*['"`]?([^'"`\)]*)?['"`]?\s*\)/,
46
+ post: /@Post\s*\(\s*['"`]?([^'"`\)]*)?['"`]?\s*\)/,
47
+ put: /@Put\s*\(\s*['"`]?([^'"`\)]*)?['"`]?\s*\)/,
48
+ patch: /@Patch\s*\(\s*['"`]?([^'"`\)]*)?['"`]?\s*\)/,
49
+ delete: /@Delete\s*\(\s*['"`]?([^'"`\)]*)?['"`]?\s*\)/,
50
+ options: /@Options\s*\(\s*['"`]?([^'"`\)]*)?['"`]?\s*\)/,
51
+ head: /@Head\s*\(\s*['"`]?([^'"`\)]*)?['"`]?\s*\)/,
52
+ all: /@All\s*\(\s*['"`]?([^'"`\)]*)?['"`]?\s*\)/,
53
+ param: /@Param\s*\(\s*['"`]?([^'"`\)]*)?['"`]?\s*\)/g,
54
+ query: /@Query\s*\(\s*['"`]?([^'"`\)]*)?['"`]?\s*\)/g,
55
+ body: /@Body\s*\(\s*['"`]?([^'"`\)]*)?['"`]?\s*\)/,
56
+ headers: /@Headers\s*\(\s*['"`]?([^'"`\)]*)?['"`]?\s*\)/g,
57
+ apiTags: /@ApiTags\s*\(\s*['"`]([^'"`]+)['"`]\s*\)/,
58
+ apiOperation: /@ApiOperation\s*\(\s*\{([^}]+)\}\s*\)/,
59
+ apiBody: /@ApiBody\s*\(\s*\{([^}]+)\}\s*\)/,
60
+ apiParam: /@ApiParam\s*\(\s*\{([^}]+)\}\s*\)/g,
61
+ apiQuery: /@ApiQuery\s*\(\s*\{([^}]+)\}\s*\)/g,
62
+ apiResponse: /@ApiResponse\s*\(\s*\{([^}]+)\}\s*\)/g,
63
+ };
64
+ /**
65
+ * Parser for NestJS decorators from source code
66
+ */
67
+ class DecoratorParser {
68
+ /**
69
+ * Parse NestJS source files and return an ApiCollection
70
+ */
71
+ async parse(srcPath) {
72
+ const absolutePath = path.resolve(process.cwd(), srcPath);
73
+ if (!fs.existsSync(absolutePath)) {
74
+ throw new Error(`Source path not found: ${absolutePath}`);
75
+ }
76
+ const controllers = await this.findAndParseControllers(absolutePath);
77
+ const groups = this.convertToGroups(controllers);
78
+ return {
79
+ name: 'NestJS API',
80
+ description: 'Generated from NestJS decorators',
81
+ baseUrl: '{{baseUrl}}',
82
+ groups,
83
+ variables: [
84
+ {
85
+ key: 'baseUrl',
86
+ value: 'http://localhost:3000',
87
+ description: 'Base URL of the API',
88
+ },
89
+ ],
90
+ };
91
+ }
92
+ async findAndParseControllers(srcPath) {
93
+ const pattern = path.join(srcPath, '**/*.controller.ts').replace(/\\/g, '/');
94
+ const files = await (0, glob_1.glob)(pattern);
95
+ const controllers = [];
96
+ for (const file of files) {
97
+ try {
98
+ const content = fs.readFileSync(file, 'utf-8');
99
+ const parsed = this.parseControllerFile(content, file);
100
+ if (parsed) {
101
+ controllers.push(parsed);
102
+ }
103
+ }
104
+ catch (error) {
105
+ console.warn(`Warning: Could not parse ${file}:`, error);
106
+ }
107
+ }
108
+ return controllers;
109
+ }
110
+ parseControllerFile(content, filePath) {
111
+ // Find @Controller decorator
112
+ const controllerMatch = content.match(DECORATOR_PATTERNS.controller);
113
+ if (!controllerMatch) {
114
+ return null;
115
+ }
116
+ const basePath = controllerMatch[1] || '';
117
+ // Extract class name
118
+ const classMatch = content.match(/export\s+class\s+(\w+)/);
119
+ const className = classMatch ? classMatch[1] : 'UnknownController';
120
+ // Extract API tags if present
121
+ const tagsMatch = content.match(DECORATOR_PATTERNS.apiTags);
122
+ const tags = tagsMatch ? [tagsMatch[1]] : undefined;
123
+ // Parse methods
124
+ const methods = this.parseControllerMethods(content);
125
+ return {
126
+ className,
127
+ basePath: this.normalizePath(basePath),
128
+ filePath,
129
+ tags,
130
+ methods,
131
+ };
132
+ }
133
+ parseControllerMethods(content) {
134
+ const methods = [];
135
+ const lines = content.split('\n');
136
+ const httpMethods = [
137
+ { pattern: DECORATOR_PATTERNS.get, method: 'GET' },
138
+ { pattern: DECORATOR_PATTERNS.post, method: 'POST' },
139
+ { pattern: DECORATOR_PATTERNS.put, method: 'PUT' },
140
+ { pattern: DECORATOR_PATTERNS.patch, method: 'PATCH' },
141
+ { pattern: DECORATOR_PATTERNS.delete, method: 'DELETE' },
142
+ { pattern: DECORATOR_PATTERNS.options, method: 'OPTIONS' },
143
+ { pattern: DECORATOR_PATTERNS.head, method: 'HEAD' },
144
+ ];
145
+ for (let i = 0; i < lines.length; i++) {
146
+ const line = lines[i];
147
+ for (const { pattern, method } of httpMethods) {
148
+ const match = line.match(pattern);
149
+ if (match) {
150
+ const endpointPath = match[1] || '';
151
+ const parsedMethod = this.parseMethodBlock(lines, i, method, endpointPath);
152
+ if (parsedMethod) {
153
+ methods.push(parsedMethod);
154
+ }
155
+ break;
156
+ }
157
+ }
158
+ }
159
+ return methods;
160
+ }
161
+ parseMethodBlock(lines, decoratorLine, httpMethod, endpointPath) {
162
+ // Look backwards for additional decorators
163
+ let startLine = decoratorLine;
164
+ let apiOperation = {};
165
+ const parameters = [];
166
+ let requestBody;
167
+ // Scan backwards for decorators
168
+ for (let i = decoratorLine - 1; i >= 0 && i >= decoratorLine - 10; i--) {
169
+ const line = lines[i].trim();
170
+ // Stop if we hit another method or empty content
171
+ if (line === '' ||
172
+ line.startsWith('async ') ||
173
+ line.startsWith('public ') ||
174
+ /^\}/.test(line)) {
175
+ break;
176
+ }
177
+ startLine = i;
178
+ // Parse @ApiOperation
179
+ const operationMatch = line.match(DECORATOR_PATTERNS.apiOperation);
180
+ if (operationMatch) {
181
+ apiOperation = this.parseObjectLiteral(operationMatch[1]);
182
+ }
183
+ // Parse @ApiParam
184
+ const paramMatch = line.match(/@ApiParam\s*\(\s*\{([^}]+)\}\s*\)/);
185
+ if (paramMatch) {
186
+ const paramObj = this.parseObjectLiteral(paramMatch[1]);
187
+ if (paramObj.name) {
188
+ parameters.push({
189
+ name: paramObj.name,
190
+ in: 'path',
191
+ required: paramObj.required !== false,
192
+ type: paramObj.type || 'string',
193
+ description: paramObj.description,
194
+ });
195
+ }
196
+ }
197
+ // Parse @ApiQuery
198
+ const queryMatch = line.match(/@ApiQuery\s*\(\s*\{([^}]+)\}\s*\)/);
199
+ if (queryMatch) {
200
+ const queryObj = this.parseObjectLiteral(queryMatch[1]);
201
+ if (queryObj.name) {
202
+ parameters.push({
203
+ name: queryObj.name,
204
+ in: 'query',
205
+ required: queryObj.required === true,
206
+ type: queryObj.type || 'string',
207
+ description: queryObj.description,
208
+ });
209
+ }
210
+ }
211
+ // Parse @ApiBody
212
+ const bodyMatch = line.match(DECORATOR_PATTERNS.apiBody);
213
+ if (bodyMatch) {
214
+ const bodyObj = this.parseObjectLiteral(bodyMatch[1]);
215
+ requestBody = {
216
+ contentType: 'application/json',
217
+ required: bodyObj.required !== false,
218
+ };
219
+ }
220
+ }
221
+ // Find the method name and parameters
222
+ let methodName = 'unknownMethod';
223
+ let endLine = decoratorLine + 1;
224
+ for (let i = decoratorLine + 1; i < lines.length && i < decoratorLine + 5; i++) {
225
+ const line = lines[i];
226
+ const methodMatch = line.match(/(?:async\s+)?(\w+)\s*\(/);
227
+ if (methodMatch) {
228
+ methodName = methodMatch[1];
229
+ // Parse method parameters for @Param, @Query, @Body
230
+ const methodParams = this.parseMethodParameters(lines, i);
231
+ // Merge with API decorator parameters
232
+ for (const param of methodParams) {
233
+ const exists = parameters.find((p) => p.name === param.name && p.in === param.in);
234
+ if (!exists) {
235
+ parameters.push(param);
236
+ }
237
+ }
238
+ // Check for body parameter
239
+ if (methodParams.some((p) => p.in === 'body') && !requestBody) {
240
+ requestBody = {
241
+ contentType: 'application/json',
242
+ required: true,
243
+ };
244
+ }
245
+ // Find the end of the method (simplified)
246
+ let braceCount = 0;
247
+ for (let j = i; j < lines.length; j++) {
248
+ braceCount += (lines[j].match(/\{/g) || []).length;
249
+ braceCount -= (lines[j].match(/\}/g) || []).length;
250
+ if (braceCount === 0 && lines[j].includes('}')) {
251
+ endLine = j;
252
+ break;
253
+ }
254
+ }
255
+ break;
256
+ }
257
+ }
258
+ // Extract path parameters from endpoint path
259
+ const pathParams = endpointPath.match(/:(\w+)/g);
260
+ if (pathParams) {
261
+ for (const param of pathParams) {
262
+ const paramName = param.slice(1);
263
+ const exists = parameters.find((p) => p.name === paramName && p.in === 'path');
264
+ if (!exists) {
265
+ parameters.push({
266
+ name: paramName,
267
+ in: 'path',
268
+ required: true,
269
+ type: 'string',
270
+ });
271
+ }
272
+ }
273
+ }
274
+ return {
275
+ method: httpMethod,
276
+ path: this.normalizePath(endpointPath),
277
+ methodName,
278
+ parameters,
279
+ requestBody,
280
+ summary: apiOperation.summary,
281
+ description: apiOperation.description,
282
+ startLine,
283
+ endLine,
284
+ };
285
+ }
286
+ parseMethodParameters(lines, methodLine) {
287
+ const parameters = [];
288
+ // Get the full method signature (might span multiple lines)
289
+ let signature = '';
290
+ let parenCount = 0;
291
+ for (let i = methodLine; i < lines.length && i < methodLine + 10; i++) {
292
+ signature += lines[i];
293
+ parenCount += (lines[i].match(/\(/g) || []).length;
294
+ parenCount -= (lines[i].match(/\)/g) || []).length;
295
+ if (parenCount <= 0 && signature.includes(')')) {
296
+ break;
297
+ }
298
+ }
299
+ // Parse @Param decorators
300
+ const paramMatches = signature.matchAll(/@Param\s*\(\s*['"`]?(\w*)['"`]?\s*\)/g);
301
+ for (const match of paramMatches) {
302
+ if (match[1]) {
303
+ parameters.push({
304
+ name: match[1],
305
+ in: 'path',
306
+ required: true,
307
+ type: 'string',
308
+ });
309
+ }
310
+ }
311
+ // Parse @Query decorators
312
+ const queryMatches = signature.matchAll(/@Query\s*\(\s*['"`]?(\w*)['"`]?\s*\)/g);
313
+ for (const match of queryMatches) {
314
+ if (match[1]) {
315
+ parameters.push({
316
+ name: match[1],
317
+ in: 'query',
318
+ required: false,
319
+ type: 'string',
320
+ });
321
+ }
322
+ }
323
+ // Check for @Body decorator
324
+ if (/@Body\s*\(/.test(signature)) {
325
+ parameters.push({
326
+ name: 'body',
327
+ in: 'body',
328
+ required: true,
329
+ type: 'object',
330
+ });
331
+ }
332
+ return parameters;
333
+ }
334
+ parseObjectLiteral(content) {
335
+ const result = {};
336
+ // Simple parsing for common properties
337
+ const nameMatch = content.match(/name\s*:\s*['"`]([^'"`]+)['"`]/);
338
+ if (nameMatch)
339
+ result.name = nameMatch[1];
340
+ const typeMatch = content.match(/type\s*:\s*['"`]([^'"`]+)['"`]/);
341
+ if (typeMatch)
342
+ result.type = typeMatch[1];
343
+ const descMatch = content.match(/description\s*:\s*['"`]([^'"`]+)['"`]/);
344
+ if (descMatch)
345
+ result.description = descMatch[1];
346
+ const summaryMatch = content.match(/summary\s*:\s*['"`]([^'"`]+)['"`]/);
347
+ if (summaryMatch)
348
+ result.summary = summaryMatch[1];
349
+ const requiredMatch = content.match(/required\s*:\s*(true|false)/);
350
+ if (requiredMatch)
351
+ result.required = requiredMatch[1] === 'true';
352
+ return result;
353
+ }
354
+ normalizePath(pathStr) {
355
+ if (!pathStr)
356
+ return '/';
357
+ // Ensure path starts with /
358
+ let normalized = pathStr.startsWith('/') ? pathStr : '/' + pathStr;
359
+ // Convert NestJS :param to OpenAPI {param} format
360
+ normalized = normalized.replace(/:(\w+)/g, '{$1}');
361
+ // Remove trailing slash
362
+ if (normalized.length > 1 && normalized.endsWith('/')) {
363
+ normalized = normalized.slice(0, -1);
364
+ }
365
+ return normalized;
366
+ }
367
+ convertToGroups(controllers) {
368
+ return controllers.map((controller) => {
369
+ const groupName = controller.tags?.[0] || controller.className.replace('Controller', '');
370
+ const endpoints = controller.methods.map((method) => ({
371
+ path: this.joinPaths(controller.basePath, method.path),
372
+ method: method.method,
373
+ summary: method.summary || `${method.method} ${method.methodName}`,
374
+ description: method.description,
375
+ operationId: `${controller.className}_${method.methodName}`,
376
+ tags: controller.tags || [groupName],
377
+ parameters: method.parameters.filter((p) => p.in !== 'body'),
378
+ requestBody: method.requestBody,
379
+ }));
380
+ return {
381
+ name: groupName,
382
+ endpoints,
383
+ };
384
+ });
385
+ }
386
+ joinPaths(basePath, endpointPath) {
387
+ const base = basePath.endsWith('/') ? basePath.slice(0, -1) : basePath;
388
+ const endpoint = endpointPath.startsWith('/') ? endpointPath : '/' + endpointPath;
389
+ if (base === '/' || base === '') {
390
+ return endpoint || '/';
391
+ }
392
+ return base + endpoint;
393
+ }
394
+ }
395
+ exports.DecoratorParser = DecoratorParser;
396
+ //# sourceMappingURL=decorator.parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorator.parser.js","sourceRoot":"","sources":["../../src/parsers/decorator.parser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,+BAA4B;AAW5B;;GAEG;AACH,MAAM,kBAAkB,GAAG;IACzB,UAAU,EAAE,kDAAkD;IAC9D,GAAG,EAAE,2CAA2C;IAChD,IAAI,EAAE,4CAA4C;IAClD,GAAG,EAAE,2CAA2C;IAChD,KAAK,EAAE,6CAA6C;IACpD,MAAM,EAAE,8CAA8C;IACtD,OAAO,EAAE,+CAA+C;IACxD,IAAI,EAAE,4CAA4C;IAClD,GAAG,EAAE,2CAA2C;IAChD,KAAK,EAAE,8CAA8C;IACrD,KAAK,EAAE,8CAA8C;IACrD,IAAI,EAAE,4CAA4C;IAClD,OAAO,EAAE,gDAAgD;IACzD,OAAO,EAAE,0CAA0C;IACnD,YAAY,EAAE,uCAAuC;IACrD,OAAO,EAAE,kCAAkC;IAC3C,QAAQ,EAAE,oCAAoC;IAC9C,QAAQ,EAAE,oCAAoC;IAC9C,WAAW,EAAE,uCAAuC;CACrD,CAAC;AAsBF;;GAEG;AACH,MAAa,eAAe;IAC1B;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,OAAe;QACzB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;QAE1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAEjD,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,kCAAkC;YAC/C,OAAO,EAAE,aAAa;YACtB,MAAM;YACN,SAAS,EAAE;gBACT;oBACE,GAAG,EAAE,SAAS;oBACd,KAAK,EAAE,uBAAuB;oBAC9B,WAAW,EAAE,qBAAqB;iBACnC;aACF;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,OAAe;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,MAAM,IAAA,WAAI,EAAC,OAAO,CAAC,CAAC;QAClC,MAAM,WAAW,GAAuB,EAAE,CAAC;QAE3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACvD,IAAI,MAAM,EAAE,CAAC;oBACX,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,4BAA4B,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,mBAAmB,CAAC,OAAe,EAAE,QAAgB;QAC3D,6BAA6B;QAC7B,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACrE,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAE1C,qBAAqB;QACrB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;QAEnE,8BAA8B;QAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEpD,gBAAgB;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAErD,OAAO;YACL,SAAS;YACT,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;YACtC,QAAQ;YACR,IAAI;YACJ,OAAO;SACR,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAAC,OAAe;QAC5C,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,MAAM,WAAW,GAAmD;YAClE,EAAE,OAAO,EAAE,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;YAClD,EAAE,OAAO,EAAE,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;YACpD,EAAE,OAAO,EAAE,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;YAClD,EAAE,OAAO,EAAE,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;YACtD,EAAE,OAAO,EAAE,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;YACxD,EAAE,OAAO,EAAE,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE;YAC1D,EAAE,OAAO,EAAE,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;SACrD,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAEtB,KAAK,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;gBAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAClC,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACpC,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;oBAC3E,IAAI,YAAY,EAAE,CAAC;wBACjB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC7B,CAAC;oBACD,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,gBAAgB,CACtB,KAAe,EACf,aAAqB,EACrB,UAAsB,EACtB,YAAoB;QAEpB,2CAA2C;QAC3C,IAAI,SAAS,GAAG,aAAa,CAAC;QAC9B,IAAI,YAAY,GAA+C,EAAE,CAAC;QAClE,MAAM,UAAU,GAAmB,EAAE,CAAC;QACtC,IAAI,WAAuC,CAAC;QAE5C,gCAAgC;QAChC,KAAK,IAAI,CAAC,GAAG,aAAa,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACvE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAE7B,iDAAiD;YACjD,IACE,IAAI,KAAK,EAAE;gBACX,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACzB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAChB,CAAC;gBACD,MAAM;YACR,CAAC;YAED,SAAS,GAAG,CAAC,CAAC;YAEd,sBAAsB;YACtB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YACnE,IAAI,cAAc,EAAE,CAAC;gBACnB,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,CAAC;YAED,kBAAkB;YAClB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACnE,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAClB,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,EAAE,EAAE,MAAM;wBACV,QAAQ,EAAE,QAAQ,CAAC,QAAQ,KAAK,KAAK;wBACrC,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,QAAQ;wBAC/B,WAAW,EAAE,QAAQ,CAAC,WAAW;qBAClC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,kBAAkB;YAClB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACnE,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAClB,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,EAAE,EAAE,OAAO;wBACX,QAAQ,EAAE,QAAQ,CAAC,QAAQ,KAAK,IAAI;wBACpC,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,QAAQ;wBAC/B,WAAW,EAAE,QAAQ,CAAC,WAAW;qBAClC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,iBAAiB;YACjB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACzD,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,WAAW,GAAG;oBACZ,WAAW,EAAE,kBAAkB;oBAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,KAAK;iBACrC,CAAC;YACJ,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,IAAI,UAAU,GAAG,eAAe,CAAC;QACjC,IAAI,OAAO,GAAG,aAAa,GAAG,CAAC,CAAC;QAEhC,KAAK,IAAI,CAAC,GAAG,aAAa,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,aAAa,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/E,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC1D,IAAI,WAAW,EAAE,CAAC;gBAChB,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;gBAE5B,oDAAoD;gBACpD,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAE1D,sCAAsC;gBACtC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;oBACjC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;oBAClF,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;gBAED,2BAA2B;gBAC3B,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;oBAC9D,WAAW,GAAG;wBACZ,WAAW,EAAE,kBAAkB;wBAC/B,QAAQ,EAAE,IAAI;qBACf,CAAC;gBACJ,CAAC;gBAED,0CAA0C;gBAC1C,IAAI,UAAU,GAAG,CAAC,CAAC;gBACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtC,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;oBACnD,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;oBACnD,IAAI,UAAU,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC/C,OAAO,GAAG,CAAC,CAAC;wBACZ,MAAM;oBACR,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;gBAC/E,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,SAAS;wBACf,EAAE,EAAE,MAAM;wBACV,QAAQ,EAAE,IAAI;wBACd,IAAI,EAAE,QAAQ;qBACf,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;YACtC,UAAU;YACV,UAAU;YACV,WAAW;YACX,OAAO,EAAE,YAAY,CAAC,OAAO;YAC7B,WAAW,EAAE,YAAY,CAAC,WAAW;YACrC,SAAS;YACT,OAAO;SACR,CAAC;IACJ,CAAC;IAEO,qBAAqB,CAAC,KAAe,EAAE,UAAkB;QAC/D,MAAM,UAAU,GAAmB,EAAE,CAAC;QAEtC,4DAA4D;QAC5D,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,UAAU,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACtE,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACnD,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACnD,IAAI,UAAU,IAAI,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C,MAAM;YACR,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,uCAAuC,CAAC,CAAC;QACjF,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACb,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;oBACd,EAAE,EAAE,MAAM;oBACV,QAAQ,EAAE,IAAI;oBACd,IAAI,EAAE,QAAQ;iBACf,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,uCAAuC,CAAC,CAAC;QACjF,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACb,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;oBACd,EAAE,EAAE,OAAO;oBACX,QAAQ,EAAE,KAAK;oBACf,IAAI,EAAE,QAAQ;iBACf,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,MAAM;gBACZ,EAAE,EAAE,MAAM;gBACV,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,kBAAkB,CAAC,OAAe;QACxC,MAAM,MAAM,GAAwB,EAAE,CAAC;QAEvC,uCAAuC;QACvC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAClE,IAAI,SAAS;YAAE,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAE1C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAClE,IAAI,SAAS;YAAE,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAE1C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACzE,IAAI,SAAS;YAAE,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAEjD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACxE,IAAI,YAAY;YAAE,MAAM,CAAC,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAEnD,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACnE,IAAI,aAAa;YAAE,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;QAEjE,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,aAAa,CAAC,OAAe;QACnC,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC;QAEzB,4BAA4B;QAC5B,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC;QAEnE,kDAAkD;QAClD,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAEnD,wBAAwB;QACxB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACtD,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,eAAe,CAAC,WAA+B;QACrD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;YACpC,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAEzF,MAAM,SAAS,GAAkB,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACnE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC;gBACtD,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE;gBAClE,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,WAAW,EAAE,GAAG,UAAU,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE;gBAC3D,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC;gBACpC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC;gBAC5D,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC,CAAC,CAAC;YAEJ,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,SAAS;aACV,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,SAAS,CAAC,QAAgB,EAAE,YAAoB;QACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACvE,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,YAAY,CAAC;QAElF,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAChC,OAAO,QAAQ,IAAI,GAAG,CAAC;QACzB,CAAC;QAED,OAAO,IAAI,GAAG,QAAQ,CAAC;IACzB,CAAC;CACF;AAhYD,0CAgYC"}
@@ -0,0 +1,3 @@
1
+ export { SwaggerParser } from './swagger.parser';
2
+ export { DecoratorParser } from './decorator.parser';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DecoratorParser = exports.SwaggerParser = void 0;
4
+ var swagger_parser_1 = require("./swagger.parser");
5
+ Object.defineProperty(exports, "SwaggerParser", { enumerable: true, get: function () { return swagger_parser_1.SwaggerParser; } });
6
+ var decorator_parser_1 = require("./decorator.parser");
7
+ Object.defineProperty(exports, "DecoratorParser", { enumerable: true, get: function () { return decorator_parser_1.DecoratorParser; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":";;;AAAA,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,uDAAqD;AAA5C,mHAAA,eAAe,OAAA"}
@@ -0,0 +1,25 @@
1
+ import { ApiCollection, SwaggerDocument } from '../types';
2
+ /**
3
+ * Parser for Swagger/OpenAPI specification files
4
+ */
5
+ export declare class SwaggerParser {
6
+ /**
7
+ * Parse a Swagger/OpenAPI file and return an ApiCollection
8
+ */
9
+ parse(filePath: string): Promise<ApiCollection>;
10
+ /**
11
+ * Parse Swagger document from URL
12
+ */
13
+ parseFromUrl(url: string): Promise<ApiCollection>;
14
+ /**
15
+ * Parse Swagger document from object
16
+ */
17
+ parseFromObject(swagger: SwaggerDocument): ApiCollection;
18
+ private convertToApiCollection;
19
+ private extractBaseUrl;
20
+ private extractGroups;
21
+ private convertOperation;
22
+ private convertParameter;
23
+ private extractRequestBody;
24
+ }
25
+ //# sourceMappingURL=swagger.parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swagger.parser.d.ts","sourceRoot":"","sources":["../../src/parsers/swagger.parser.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EAOb,eAAe,EAIhB,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,qBAAa,aAAa;IACxB;;OAEG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAmBrD;;OAEG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IASvD;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa;IAIxD,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,aAAa;IAyDrB,OAAO,CAAC,gBAAgB;IA0CxB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,kBAAkB;CA8B3B"}