swagger-parser-mcp-server 2.3.4 → 3.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 (127) hide show
  1. package/README.md +81 -120
  2. package/dist/index.d.ts +0 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +266 -102
  5. package/dist/index.js.map +1 -1
  6. package/dist/schemas.d.ts +2 -283
  7. package/dist/schemas.d.ts.map +1 -1
  8. package/dist/schemas.js +0 -108
  9. package/dist/schemas.js.map +1 -1
  10. package/dist/utils/swaggerCache.d.ts +0 -4
  11. package/dist/utils/swaggerCache.d.ts.map +1 -1
  12. package/dist/utils/swaggerCache.js +0 -8
  13. package/dist/utils/swaggerCache.js.map +1 -1
  14. package/package.json +3 -11
  15. package/dist/application/snapshot/createSnapshotRuntime.d.ts +0 -2
  16. package/dist/application/snapshot/createSnapshotRuntime.d.ts.map +0 -1
  17. package/dist/application/snapshot/createSnapshotRuntime.js +0 -2
  18. package/dist/application/snapshot/createSnapshotRuntime.js.map +0 -1
  19. package/dist/application/snapshot/snapshotCaptureService.d.ts +0 -90
  20. package/dist/application/snapshot/snapshotCaptureService.d.ts.map +0 -1
  21. package/dist/application/snapshot/snapshotCaptureService.js +0 -394
  22. package/dist/application/snapshot/snapshotCaptureService.js.map +0 -1
  23. package/dist/application/snapshot/snapshotRepository.d.ts +0 -77
  24. package/dist/application/snapshot/snapshotRepository.d.ts.map +0 -1
  25. package/dist/application/snapshot/snapshotRepository.js +0 -2
  26. package/dist/application/snapshot/snapshotRepository.js.map +0 -1
  27. package/dist/domain/canonical/canonicalSnapshot.d.ts +0 -61
  28. package/dist/domain/canonical/canonicalSnapshot.d.ts.map +0 -1
  29. package/dist/domain/canonical/canonicalSnapshot.js +0 -300
  30. package/dist/domain/canonical/canonicalSnapshot.js.map +0 -1
  31. package/dist/domain/contracts/runtimeEnvironmentContract.d.ts +0 -21
  32. package/dist/domain/contracts/runtimeEnvironmentContract.d.ts.map +0 -1
  33. package/dist/domain/contracts/runtimeEnvironmentContract.js +0 -50
  34. package/dist/domain/contracts/runtimeEnvironmentContract.js.map +0 -1
  35. package/dist/domain/contracts/snapshotDiffContract.d.ts +0 -270
  36. package/dist/domain/contracts/snapshotDiffContract.d.ts.map +0 -1
  37. package/dist/domain/contracts/snapshotDiffContract.js +0 -99
  38. package/dist/domain/contracts/snapshotDiffContract.js.map +0 -1
  39. package/dist/domain/diff/endpointDiffClassifier.d.ts +0 -78
  40. package/dist/domain/diff/endpointDiffClassifier.d.ts.map +0 -1
  41. package/dist/domain/diff/endpointDiffClassifier.js +0 -317
  42. package/dist/domain/diff/endpointDiffClassifier.js.map +0 -1
  43. package/dist/http.d.ts +0 -3
  44. package/dist/http.d.ts.map +0 -1
  45. package/dist/http.js +0 -52
  46. package/dist/http.js.map +0 -1
  47. package/dist/infrastructure/postgres/migrationRunner.d.ts +0 -14
  48. package/dist/infrastructure/postgres/migrationRunner.d.ts.map +0 -1
  49. package/dist/infrastructure/postgres/migrationRunner.js +0 -161
  50. package/dist/infrastructure/postgres/migrationRunner.js.map +0 -1
  51. package/dist/infrastructure/postgres/migrations/001_snapshot_schema.sql +0 -29
  52. package/dist/infrastructure/postgres/migrations/002_snapshot_change_history.sql +0 -32
  53. package/dist/infrastructure/postgres/postgresSnapshotRepository.d.ts +0 -25
  54. package/dist/infrastructure/postgres/postgresSnapshotRepository.d.ts.map +0 -1
  55. package/dist/infrastructure/postgres/postgresSnapshotRepository.js +0 -323
  56. package/dist/infrastructure/postgres/postgresSnapshotRepository.js.map +0 -1
  57. package/dist/infrastructure/postgres/runMigrations.d.ts +0 -3
  58. package/dist/infrastructure/postgres/runMigrations.d.ts.map +0 -1
  59. package/dist/infrastructure/postgres/runMigrations.js +0 -33
  60. package/dist/infrastructure/postgres/runMigrations.js.map +0 -1
  61. package/dist/infrastructure/runtime/createSnapshotRuntime.d.ts +0 -17
  62. package/dist/infrastructure/runtime/createSnapshotRuntime.d.ts.map +0 -1
  63. package/dist/infrastructure/runtime/createSnapshotRuntime.js +0 -38
  64. package/dist/infrastructure/runtime/createSnapshotRuntime.js.map +0 -1
  65. package/dist/tests/canonicalSnapshot.test.d.ts +0 -2
  66. package/dist/tests/canonicalSnapshot.test.d.ts.map +0 -1
  67. package/dist/tests/canonicalSnapshot.test.js +0 -425
  68. package/dist/tests/canonicalSnapshot.test.js.map +0 -1
  69. package/dist/tests/endpointDiffClassifier.test.d.ts +0 -2
  70. package/dist/tests/endpointDiffClassifier.test.d.ts.map +0 -1
  71. package/dist/tests/endpointDiffClassifier.test.js +0 -633
  72. package/dist/tests/endpointDiffClassifier.test.js.map +0 -1
  73. package/dist/tests/httpSnapshotTransport.test.d.ts +0 -2
  74. package/dist/tests/httpSnapshotTransport.test.d.ts.map +0 -1
  75. package/dist/tests/httpSnapshotTransport.test.js +0 -393
  76. package/dist/tests/httpSnapshotTransport.test.js.map +0 -1
  77. package/dist/tests/indexLifecycle.test.d.ts +0 -2
  78. package/dist/tests/indexLifecycle.test.d.ts.map +0 -1
  79. package/dist/tests/indexLifecycle.test.js +0 -44
  80. package/dist/tests/indexLifecycle.test.js.map +0 -1
  81. package/dist/tests/mcpSnapshotTools.test.d.ts +0 -2
  82. package/dist/tests/mcpSnapshotTools.test.d.ts.map +0 -1
  83. package/dist/tests/mcpSnapshotTools.test.js +0 -316
  84. package/dist/tests/mcpSnapshotTools.test.js.map +0 -1
  85. package/dist/tests/postgresMigrationSmoke.test.d.ts +0 -2
  86. package/dist/tests/postgresMigrationSmoke.test.d.ts.map +0 -1
  87. package/dist/tests/postgresMigrationSmoke.test.js +0 -187
  88. package/dist/tests/postgresMigrationSmoke.test.js.map +0 -1
  89. package/dist/tests/realPostgresTestSchema.d.ts +0 -10
  90. package/dist/tests/realPostgresTestSchema.d.ts.map +0 -1
  91. package/dist/tests/realPostgresTestSchema.js +0 -73
  92. package/dist/tests/realPostgresTestSchema.js.map +0 -1
  93. package/dist/tests/snapshotCapturePipeline.test.d.ts +0 -2
  94. package/dist/tests/snapshotCapturePipeline.test.d.ts.map +0 -1
  95. package/dist/tests/snapshotCapturePipeline.test.js +0 -475
  96. package/dist/tests/snapshotCapturePipeline.test.js.map +0 -1
  97. package/dist/tests/snapshotDiffContract.test.d.ts +0 -2
  98. package/dist/tests/snapshotDiffContract.test.d.ts.map +0 -1
  99. package/dist/tests/snapshotDiffContract.test.js +0 -156
  100. package/dist/tests/snapshotDiffContract.test.js.map +0 -1
  101. package/dist/tests/snapshotPersistence.real.test.d.ts +0 -2
  102. package/dist/tests/snapshotPersistence.real.test.d.ts.map +0 -1
  103. package/dist/tests/snapshotPersistence.real.test.js +0 -310
  104. package/dist/tests/snapshotPersistence.real.test.js.map +0 -1
  105. package/dist/tests/webServerRuntime.test.d.ts +0 -2
  106. package/dist/tests/webServerRuntime.test.d.ts.map +0 -1
  107. package/dist/tests/webServerRuntime.test.js +0 -123
  108. package/dist/tests/webServerRuntime.test.js.map +0 -1
  109. package/dist/transport/createSnapshotToolRuntime.d.ts +0 -7
  110. package/dist/transport/createSnapshotToolRuntime.d.ts.map +0 -1
  111. package/dist/transport/createSnapshotToolRuntime.js +0 -40
  112. package/dist/transport/createSnapshotToolRuntime.js.map +0 -1
  113. package/dist/transport/httpSnapshotServer.d.ts +0 -11
  114. package/dist/transport/httpSnapshotServer.d.ts.map +0 -1
  115. package/dist/transport/httpSnapshotServer.js +0 -234
  116. package/dist/transport/httpSnapshotServer.js.map +0 -1
  117. package/dist/transport/mcpToolRouter.d.ts +0 -81
  118. package/dist/transport/mcpToolRouter.d.ts.map +0 -1
  119. package/dist/transport/mcpToolRouter.js +0 -416
  120. package/dist/transport/mcpToolRouter.js.map +0 -1
  121. package/dist/transport/webServerRuntime.d.ts +0 -17
  122. package/dist/transport/webServerRuntime.d.ts.map +0 -1
  123. package/dist/transport/webServerRuntime.js +0 -73
  124. package/dist/transport/webServerRuntime.js.map +0 -1
  125. package/dist/web/dashboard.css +0 -411
  126. package/dist/web/dashboard.html +0 -141
  127. package/dist/web/dashboard.js +0 -540
package/dist/index.js CHANGED
@@ -1,32 +1,24 @@
1
1
  #!/usr/bin/env node
2
- import { realpathSync } from 'node:fs';
3
- import { isAbsolute, resolve } from 'node:path';
2
+ // swagger-parser-server.ts
4
3
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
5
4
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
6
5
  import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
7
- import { createSnapshotToolRuntime } from './transport/createSnapshotToolRuntime.js';
8
- import { startSnapshotWebServer } from './transport/webServerRuntime.js';
9
- export function attachStdioShutdownHooks(stdin, onClosed) {
10
- let handled = false;
11
- const handleClosed = () => {
12
- if (handled) {
13
- return;
14
- }
15
- handled = true;
16
- onClosed();
17
- };
18
- stdin.once('end', handleClosed);
19
- stdin.once('close', handleClosed);
20
- return () => {
21
- stdin.off('end', handleClosed);
22
- stdin.off('close', handleClosed);
23
- };
24
- }
6
+ import { zodToJsonSchema } from 'zod-to-json-schema';
7
+ import { SwaggerCache } from './utils/swaggerCache.js';
8
+ import { SchemaResolver } from './utils/schemaResolver.js';
9
+ import { SUPPORTED_HTTP_METHODS, } from './utils/types.js';
10
+ import { loadSwaggerSchema, getControllersSchema, getPathsByControllerSchema, getPathDetailsSchema, resolveSchemaSchema, } from './schemas.js';
25
11
  class SwaggerParserServer {
26
12
  server;
27
- runtime = createSnapshotToolRuntime(process.env);
28
- webServer = null;
13
+ swaggerCache;
14
+ schemaResolver;
29
15
  constructor() {
16
+ this.swaggerCache = new SwaggerCache();
17
+ this.schemaResolver = new SchemaResolver({
18
+ maxDepth: 10,
19
+ includeCircularRefs: false, // Prevent stack overflow by default
20
+ circularRefPlaceholder: '[Circular Reference]',
21
+ });
30
22
  this.server = new Server({
31
23
  name: 'swagger-parser-server',
32
24
  version: '1.0.0',
@@ -38,99 +30,271 @@ class SwaggerParserServer {
38
30
  this.setupHandlers();
39
31
  }
40
32
  setupHandlers() {
33
+ // 도구 목록 제공
41
34
  this.server.setRequestHandler(ListToolsRequestSchema, () => ({
42
- tools: this.runtime.toolRouter.listTools(),
35
+ tools: [
36
+ {
37
+ name: 'load_swagger',
38
+ description: 'Swagger/OpenAPI JSON URL을 로드합니다',
39
+ inputSchema: zodToJsonSchema(loadSwaggerSchema),
40
+ },
41
+ {
42
+ name: 'get_controllers',
43
+ description: '모든 컨트롤러(태그) 목록을 가져옵니다',
44
+ inputSchema: zodToJsonSchema(getControllersSchema),
45
+ },
46
+ {
47
+ name: 'get_paths_by_controller',
48
+ description: '특정 컨트롤러의 모든 path를 가져옵니다',
49
+ inputSchema: zodToJsonSchema(getPathsByControllerSchema),
50
+ },
51
+ {
52
+ name: 'get_path_details',
53
+ description: '특정 path의 상세 정보를 가져옵니다',
54
+ inputSchema: zodToJsonSchema(getPathDetailsSchema),
55
+ },
56
+ {
57
+ name: 'resolve_schema',
58
+ description: '$ref를 해결하여 실제 스키마를 가져옵니다',
59
+ inputSchema: zodToJsonSchema(resolveSchemaSchema),
60
+ },
61
+ ],
43
62
  }));
63
+ // 도구 실행 핸들러
44
64
  this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
45
65
  const { name, arguments: args } = request.params;
46
- return this.runtime.toolRouter.execute(name, args);
66
+ try {
67
+ switch (name) {
68
+ case 'load_swagger': {
69
+ const validatedArgs = loadSwaggerSchema.parse(args);
70
+ return await this.loadSwagger(validatedArgs.url);
71
+ }
72
+ case 'get_controllers': {
73
+ const validatedArgs = getControllersSchema.parse(args);
74
+ return await this.getControllers(validatedArgs.url);
75
+ }
76
+ case 'get_paths_by_controller': {
77
+ const validatedArgs = getPathsByControllerSchema.parse(args);
78
+ return await this.getPathsByController(validatedArgs.url, validatedArgs.controller);
79
+ }
80
+ case 'get_path_details': {
81
+ const validatedArgs = getPathDetailsSchema.parse(args);
82
+ return await this.getPathDetails(validatedArgs.url, validatedArgs.path, validatedArgs.method);
83
+ }
84
+ case 'resolve_schema': {
85
+ const validatedArgs = resolveSchemaSchema.parse(args);
86
+ return await this.resolveSchema(validatedArgs.url, validatedArgs.ref);
87
+ }
88
+ default:
89
+ throw new Error(`Unknown tool: ${name}`);
90
+ }
91
+ }
92
+ catch (error) {
93
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
94
+ return {
95
+ content: [
96
+ {
97
+ type: 'text',
98
+ text: `Error: ${errorMessage}`,
99
+ },
100
+ ],
101
+ };
102
+ }
47
103
  });
48
104
  }
49
- async run(onTransportClosed) {
50
- const transport = new StdioServerTransport();
51
- if (onTransportClosed) {
52
- transport.onclose = onTransportClosed;
105
+ async loadSwagger(url) {
106
+ try {
107
+ const swagger = await this.swaggerCache.load(url);
108
+ return {
109
+ content: [
110
+ {
111
+ type: 'text',
112
+ text: JSON.stringify({
113
+ success: true,
114
+ info: swagger.info,
115
+ pathCount: Object.keys(swagger.paths).length,
116
+ hasComponents: !!swagger.components,
117
+ }, null, 2),
118
+ },
119
+ ],
120
+ };
53
121
  }
54
- await this.server.connect(transport);
55
- console.error('Swagger Parser MCP Server running on stdio');
56
- }
57
- async startWebServer() {
58
- this.webServer = await startSnapshotWebServer({
59
- env: process.env,
60
- toolRouter: this.runtime.toolRouter,
61
- });
62
- if (this.webServer.enabled) {
63
- console.error(`Swagger Snapshot Web Server running on http://${this.webServer.host}:${this.webServer.port}`);
64
- return;
122
+ catch (error) {
123
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
124
+ throw new Error(`Failed to load Swagger: ${errorMessage}`);
65
125
  }
66
- console.error('Swagger Snapshot Web Server is disabled (SNAPSHOT_WEB_ENABLED=false)');
67
126
  }
68
- async dispose() {
69
- if (this.webServer) {
70
- await this.webServer.close().catch(() => undefined);
71
- this.webServer = null;
72
- }
73
- await this.runtime.dispose();
74
- }
75
- }
76
- function normalizeExecutablePath(filePath) {
77
- const absolutePath = isAbsolute(filePath) ? filePath : resolve(filePath);
78
- try {
79
- return realpathSync(absolutePath);
127
+ async getSwagger(url) {
128
+ return await this.swaggerCache.getOrLoad(url);
80
129
  }
81
- catch {
82
- return absolutePath;
130
+ async getControllers(url) {
131
+ const swagger = await this.getSwagger(url);
132
+ const controllers = new Set();
133
+ Object.values(swagger.paths || {}).forEach(pathItem => {
134
+ if (!pathItem)
135
+ return;
136
+ // Check each HTTP method
137
+ const methods = [...SUPPORTED_HTTP_METHODS];
138
+ methods.forEach(method => {
139
+ const operation = pathItem[method];
140
+ if (operation?.tags) {
141
+ operation.tags.forEach((tag) => controllers.add(tag));
142
+ }
143
+ });
144
+ });
145
+ return {
146
+ content: [
147
+ {
148
+ type: 'text',
149
+ text: JSON.stringify({
150
+ controllers: Array.from(controllers),
151
+ count: controllers.size,
152
+ }, null, 2),
153
+ },
154
+ ],
155
+ };
83
156
  }
84
- }
85
- export function isDirectExecution(argv = process.argv) {
86
- const entryPoint = argv[1];
87
- if (!entryPoint) {
88
- return false;
157
+ async getPathsByController(url, controller) {
158
+ const swagger = await this.getSwagger(url);
159
+ const paths = [];
160
+ Object.entries(swagger.paths || {}).forEach(([path, pathItem]) => {
161
+ if (!pathItem)
162
+ return;
163
+ // Check each HTTP method
164
+ const methods = [...SUPPORTED_HTTP_METHODS];
165
+ methods.forEach(method => {
166
+ const operation = pathItem[method];
167
+ if (operation?.tags?.includes(controller)) {
168
+ paths.push({
169
+ path,
170
+ method,
171
+ operationId: operation.operationId,
172
+ summary: operation.summary,
173
+ description: operation.description,
174
+ });
175
+ }
176
+ });
177
+ });
178
+ return {
179
+ content: [
180
+ {
181
+ type: 'text',
182
+ text: JSON.stringify({
183
+ controller,
184
+ paths,
185
+ count: paths.length,
186
+ }, null, 2),
187
+ },
188
+ ],
189
+ };
89
190
  }
90
- const resolvedEntryPoint = normalizeExecutablePath(entryPoint);
91
- return /(?:^|[/\\])index\.(?:ts|js)$/.test(resolvedEntryPoint);
92
- }
93
- if (isDirectExecution()) {
94
- const server = new SwaggerParserServer();
95
- let shuttingDown = false;
96
- let detachStdioShutdownHooks = null;
97
- const shutdown = async (exitCode) => {
98
- if (shuttingDown) {
99
- return;
191
+ async getPathDetails(url, path, method) {
192
+ const swagger = await this.getSwagger(url);
193
+ const pathItem = swagger.paths?.[path];
194
+ const operation = pathItem?.[method.toLowerCase()];
195
+ if (!operation || typeof operation !== 'object') {
196
+ throw new Error(`Path ${method.toUpperCase()} ${path} not found`);
197
+ }
198
+ // 파라미터 정보 추출
199
+ const parameters = operation.parameters?.map(param => {
200
+ // Handle $ref parameters by resolving them first
201
+ if ('$ref' in param) {
202
+ const resolvedParam = this.schemaResolver.resolveRef(param.$ref, swagger);
203
+ return {
204
+ name: resolvedParam.name,
205
+ in: resolvedParam.in,
206
+ required: resolvedParam.required,
207
+ description: resolvedParam.description,
208
+ schema: this.schemaResolver.resolveSchemaReference(resolvedParam.schema, swagger),
209
+ };
210
+ }
211
+ return {
212
+ name: param.name,
213
+ in: param.in,
214
+ required: param.required,
215
+ description: param.description,
216
+ schema: this.schemaResolver.resolveSchemaReference(param.schema, swagger),
217
+ };
218
+ }) || [];
219
+ // Request Body 정보 추출
220
+ let requestBody = null;
221
+ if (operation.requestBody && 'content' in operation.requestBody && operation.requestBody.content) {
222
+ const content = operation.requestBody.content;
223
+ const mediaType = Object.keys(content)[0];
224
+ const mediaTypeObj = content[mediaType];
225
+ if (mediaTypeObj?.schema) {
226
+ requestBody = {
227
+ required: operation.requestBody.required,
228
+ mediaType,
229
+ schema: this.schemaResolver.resolveSchemaReference(mediaTypeObj.schema, swagger),
230
+ };
231
+ }
100
232
  }
101
- shuttingDown = true;
102
- if (detachStdioShutdownHooks) {
103
- detachStdioShutdownHooks();
104
- detachStdioShutdownHooks = null;
233
+ // Response 정보 추출
234
+ const responses = {};
235
+ if (operation.responses) {
236
+ Object.entries(operation.responses).forEach(([statusCode, response]) => {
237
+ if (response && typeof response === 'object' && 'content' in response && response.content) {
238
+ const content = response.content;
239
+ const mediaType = Object.keys(content)[0];
240
+ const mediaTypeObj = content[mediaType];
241
+ if (mediaTypeObj?.schema) {
242
+ responses[statusCode] = {
243
+ description: response.description,
244
+ mediaType,
245
+ schema: this.schemaResolver.resolveSchemaReference(mediaTypeObj.schema, swagger),
246
+ };
247
+ }
248
+ }
249
+ else if (response && typeof response === 'object' && 'description' in response) {
250
+ responses[statusCode] = {
251
+ description: response.description,
252
+ };
253
+ }
254
+ });
105
255
  }
106
- await server.dispose().catch(() => undefined);
107
- process.exit(exitCode);
108
- };
109
- process.on('SIGINT', () => {
110
- void shutdown(0);
111
- });
112
- process.on('SIGTERM', () => {
113
- void shutdown(0);
114
- });
115
- process.on('uncaughtException', error => {
116
- console.error(error);
117
- void shutdown(1);
118
- });
119
- process.on('unhandledRejection', reason => {
120
- console.error(reason);
121
- void shutdown(1);
122
- });
123
- detachStdioShutdownHooks = attachStdioShutdownHooks(process.stdin, () => {
124
- void shutdown(0);
125
- });
126
- server
127
- .startWebServer()
128
- .then(() => server.run(() => {
129
- void shutdown(0);
130
- }))
131
- .catch(error => {
132
- console.error(error);
133
- void shutdown(1);
134
- });
256
+ const pathDetails = {
257
+ path,
258
+ method: method.toUpperCase(),
259
+ operationId: operation.operationId,
260
+ summary: operation.summary,
261
+ description: operation.description,
262
+ tags: operation.tags,
263
+ parameters,
264
+ requestBody: requestBody || undefined,
265
+ responses,
266
+ };
267
+ return {
268
+ content: [
269
+ {
270
+ type: 'text',
271
+ text: JSON.stringify(pathDetails, null, 2),
272
+ },
273
+ ],
274
+ };
275
+ }
276
+ async resolveSchema(url, ref) {
277
+ const swagger = await this.getSwagger(url);
278
+ const resolved = this.schemaResolver.resolveRef(ref, swagger);
279
+ return {
280
+ content: [
281
+ {
282
+ type: 'text',
283
+ text: JSON.stringify({
284
+ ref,
285
+ resolved,
286
+ }, null, 2),
287
+ },
288
+ ],
289
+ };
290
+ }
291
+ async run() {
292
+ const transport = new StdioServerTransport();
293
+ await this.server.connect(transport);
294
+ console.error('Swagger Parser MCP Server running on stdio');
295
+ }
135
296
  }
297
+ // 서버 실행
298
+ const server = new SwaggerParserServer();
299
+ server.run().catch(console.error);
136
300
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}