@mhmdalimansour/mock-mock 1.0.6 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -3
- package/dist/cli.js +3 -2
- package/dist/cli.js.map +1 -1
- package/dist/fetcher/confluence.d.ts +5 -0
- package/dist/fetcher/confluence.d.ts.map +1 -1
- package/dist/fetcher/confluence.js +26 -0
- package/dist/fetcher/confluence.js.map +1 -1
- package/dist/parser/erd-parser.d.ts +4 -1
- package/dist/parser/erd-parser.d.ts.map +1 -1
- package/dist/parser/erd-parser.js +182 -60
- package/dist/parser/erd-parser.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -67,6 +67,14 @@ mock-mock/
|
|
|
67
67
|
|
|
68
68
|
## Installation
|
|
69
69
|
|
|
70
|
+
### Install From npm
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
npm install -g @mhmdalimansour/mock-mock
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
This installs the package published on npm as `@mhmdalimansour/mock-mock` and exposes the CLI command `mock-mock`.
|
|
77
|
+
|
|
70
78
|
### Local Development
|
|
71
79
|
|
|
72
80
|
```bash
|
|
@@ -81,7 +89,7 @@ npm run build
|
|
|
81
89
|
|
|
82
90
|
### Global Usage
|
|
83
91
|
|
|
84
|
-
After
|
|
92
|
+
After installing globally, the CLI command is:
|
|
85
93
|
|
|
86
94
|
```bash
|
|
87
95
|
mock-mock --url <confluence-url>
|
|
@@ -135,7 +143,7 @@ npm start -- --url <url>
|
|
|
135
143
|
| --- | --- | --- |
|
|
136
144
|
| `-u, --url <url>` | Confluence page URL or `file://` HTML path | required |
|
|
137
145
|
| `-p, --port <port>` | Port for the mock server | `4000` |
|
|
138
|
-
| `-f, --fallback <url>` |
|
|
146
|
+
| `-f, --fallback <url>` | Base URL used for truncated-response hydration during parsing and as a proxy target for unmatched runtime requests | none |
|
|
139
147
|
| `--delay <ms>` | Response delay in milliseconds | `0` |
|
|
140
148
|
| `-e, --email <email>` | Confluence email, overrides env var | none |
|
|
141
149
|
| `-t, --token <token>` | Confluence API token, overrides env var | none |
|
|
@@ -204,7 +212,7 @@ Status: 201
|
|
|
204
212
|
### Supported Methods
|
|
205
213
|
|
|
206
214
|
- Table-based parsing supports `GET`, `POST`, `PUT`, `PATCH`, and `DELETE`.
|
|
207
|
-
- Plain code-block parsing currently recognizes `GET`, `POST`, `PUT`, and `DELETE`.
|
|
215
|
+
- Plain code-block parsing currently recognizes `GET`, `POST`, `PUT`, `PATCH`, and `DELETE`.
|
|
208
216
|
- The server runtime supports `PATCH` once an endpoint is present in the parsed schema.
|
|
209
217
|
|
|
210
218
|
### Notes About Response Templates
|
|
@@ -212,6 +220,7 @@ Status: 201
|
|
|
212
220
|
- Response objects are used as templates for fake data generation.
|
|
213
221
|
- Response arrays are expanded into collections with about 15 to 30 records.
|
|
214
222
|
- Wrapped collections such as `{ "errors": false, "data": [...] }` are preserved.
|
|
223
|
+
- If a table-based `Response Structure` contains `.....`, MockMock treats it as a truncated example, fetches the live payload from `--fallback` for safe read-only endpoints, then adds any documented fields that are missing from that payload.
|
|
215
224
|
- Path parameters in documentation can use `{id}` and are converted to Express-style params internally.
|
|
216
225
|
- Plain code-block parsing is best with object-shaped JSON responses; table-based ERD pages are more flexible.
|
|
217
226
|
|
|
@@ -292,6 +301,8 @@ npm start -- --url file://C:/absolute/path/to/example-confluence.html
|
|
|
292
301
|
|
|
293
302
|
- Check the response JSON in Confluence.
|
|
294
303
|
- Make sure wrapped arrays or nested objects are valid JSON.
|
|
304
|
+
- For truncated `.....` examples, provide `--fallback` so MockMock can hydrate the missing structure from the live API.
|
|
305
|
+
- Parse-time fallback hydration is limited to read-only endpoints such as `GET`; non-`GET` endpoints keep the documented fields only.
|
|
295
306
|
- Remember that fake data is inferred from field names and primitive types.
|
|
296
307
|
|
|
297
308
|
### Changes disappear after restart
|
package/dist/cli.js
CHANGED
|
@@ -64,7 +64,7 @@ program
|
|
|
64
64
|
}
|
|
65
65
|
// Step 2: Parse endpoints
|
|
66
66
|
console.log("🔍 Parsing API endpoints...");
|
|
67
|
-
const schema = (0, erd_parser_1.parseERDFromHTML)(html);
|
|
67
|
+
const schema = await (0, erd_parser_1.parseERDFromHTML)(html, { fallbackBaseUrl: fallbackUrl });
|
|
68
68
|
if (options.debug && schema.length > 0) {
|
|
69
69
|
console.log("🐛 Debug: Parsed endpoints:");
|
|
70
70
|
console.log(JSON.stringify(schema, null, 2));
|
|
@@ -75,7 +75,8 @@ program
|
|
|
75
75
|
// Step 3: Start mock server
|
|
76
76
|
if (fallbackUrl) {
|
|
77
77
|
console.log(`🔀 Fallback URL: ${fallbackUrl}`);
|
|
78
|
-
console.log("
|
|
78
|
+
console.log(" Truncated doc responses may be hydrated from this URL during parsing");
|
|
79
|
+
console.log(" Unmatched requests will also be proxied to this URL\n");
|
|
79
80
|
}
|
|
80
81
|
(0, mock_server_1.startMockServer)(schema, port, fallbackUrl, delay);
|
|
81
82
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AAEA,4CAA4C;AAC5C,oDAA4B;AAC5B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,yCAAoC;AACpC,2BAAmC;AACnC,qDAA2D;AAC3D,oDAAuE;AACvE,sDAAuD;AACvD,mEAA0C;AAE1C,MAAM,MAAM,GAAG;;;;;;;;CAQd,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,MAAM,CAAC;KACnB,OAAO,CAAC,sBAAW,CAAC,OAAO,CAAC;KAC5B,cAAc,CACb,iBAAiB,EACjB,gDAAgD,CACjD;KACA,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,CAAC;KAC3D,MAAM,CACL,sBAAsB,EACtB,0DAA0D,CAC3D;KACA,MAAM,CACL,cAAc,EACd,6DAA6D,EAC7D,GAAG,CACJ;KACA,MAAM,CACL,qBAAqB,EACrB,uDAAuD,CACxD;KACA,MAAM,CACL,qBAAqB,EACrB,+DAA+D,CAChE;KACA,MAAM,CAAC,aAAa,EAAE,8CAA8C,CAAC;KACrE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC;QAChE,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,OAAO,CAAC,KAAK,CAAC;QAEpE,MAAM,GAAG,GAAW,OAAO,CAAC,GAAG,CAAC;QAChC,MAAM,IAAI,GAAW,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,KAAK,GAAW,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,WAAW,GAAuB,OAAO,CAAC,QAAQ,CAAC;QAEzD,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CACX,iEAAiE,CAClE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;QAEnD,qCAAqC;QACrC,MAAM,IAAI,GAAG,MAAM,IAAA,gCAAmB,EAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAE7C,gCAAgC;QAChC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAA,kBAAa,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACtD,CAAC;QAED,0BAA0B;QAC1B,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAA,6BAAgB,EAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AAEA,4CAA4C;AAC5C,oDAA4B;AAC5B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,yCAAoC;AACpC,2BAAmC;AACnC,qDAA2D;AAC3D,oDAAuE;AACvE,sDAAuD;AACvD,mEAA0C;AAE1C,MAAM,MAAM,GAAG;;;;;;;;CAQd,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,MAAM,CAAC;KACnB,OAAO,CAAC,sBAAW,CAAC,OAAO,CAAC;KAC5B,cAAc,CACb,iBAAiB,EACjB,gDAAgD,CACjD;KACA,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,CAAC;KAC3D,MAAM,CACL,sBAAsB,EACtB,0DAA0D,CAC3D;KACA,MAAM,CACL,cAAc,EACd,6DAA6D,EAC7D,GAAG,CACJ;KACA,MAAM,CACL,qBAAqB,EACrB,uDAAuD,CACxD;KACA,MAAM,CACL,qBAAqB,EACrB,+DAA+D,CAChE;KACA,MAAM,CAAC,aAAa,EAAE,8CAA8C,CAAC;KACrE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC;QAChE,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,OAAO,CAAC,KAAK,CAAC;QAEpE,MAAM,GAAG,GAAW,OAAO,CAAC,GAAG,CAAC;QAChC,MAAM,IAAI,GAAW,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,KAAK,GAAW,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,WAAW,GAAuB,OAAO,CAAC,QAAQ,CAAC;QAEzD,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CACX,iEAAiE,CAClE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;QAEnD,qCAAqC;QACrC,MAAM,IAAI,GAAG,MAAM,IAAA,gCAAmB,EAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAE7C,gCAAgC;QAChC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAA,kBAAa,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACtD,CAAC;QAED,0BAA0B;QAC1B,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAgB,EAAC,IAAI,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC,CAAC;QAE9E,IAAI,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,IAAA,2BAAc,EAAC,MAAM,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,MAAM,gBAAgB,CAAC,CAAC;QAEtD,4BAA4B;QAC5B,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,WAAW,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;YACvF,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QAC1E,CAAC;QACD,IAAA,6BAAe,EAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -4,4 +4,9 @@
|
|
|
4
4
|
* Automatically uses Confluence REST API for Atlassian Cloud URLs
|
|
5
5
|
*/
|
|
6
6
|
export declare function fetchConfluencePage(url: string): Promise<string>;
|
|
7
|
+
/**
|
|
8
|
+
* Fetches a live endpoint payload from the fallback API during parsing.
|
|
9
|
+
* This is intentionally limited to safe read-only methods.
|
|
10
|
+
*/
|
|
11
|
+
export declare function fetchFallbackEndpointResponse(baseUrl: string, path: string, method: string): Promise<unknown>;
|
|
7
12
|
//# sourceMappingURL=confluence.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confluence.d.ts","sourceRoot":"","sources":["../../src/fetcher/confluence.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"confluence.d.ts","sourceRoot":"","sources":["../../src/fetcher/confluence.ts"],"names":[],"mappings":"AAwBA;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwFtE;AAED;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CA4BlB"}
|
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.fetchConfluencePage = fetchConfluencePage;
|
|
7
|
+
exports.fetchFallbackEndpointResponse = fetchFallbackEndpointResponse;
|
|
7
8
|
const axios_1 = __importDefault(require("axios"));
|
|
8
9
|
const fs_1 = require("fs");
|
|
9
10
|
/**
|
|
@@ -103,6 +104,31 @@ async function fetchConfluencePage(url) {
|
|
|
103
104
|
throw error;
|
|
104
105
|
}
|
|
105
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* Fetches a live endpoint payload from the fallback API during parsing.
|
|
109
|
+
* This is intentionally limited to safe read-only methods.
|
|
110
|
+
*/
|
|
111
|
+
async function fetchFallbackEndpointResponse(baseUrl, path, method) {
|
|
112
|
+
const normalizedMethod = method.toUpperCase();
|
|
113
|
+
if (!['GET', 'HEAD'].includes(normalizedMethod)) {
|
|
114
|
+
throw new Error(`Skipping fallback hydration for ${normalizedMethod} ${path} because parse-time hydration only supports read-only endpoints.`);
|
|
115
|
+
}
|
|
116
|
+
const normalizedBaseUrl = baseUrl.replace(/\/+$/, '');
|
|
117
|
+
const normalizedPath = path.startsWith('/') ? path : `/${path}`;
|
|
118
|
+
const targetUrl = `${normalizedBaseUrl}${normalizedPath}`;
|
|
119
|
+
const response = await (0, axios_1.default)({
|
|
120
|
+
method: normalizedMethod,
|
|
121
|
+
url: targetUrl,
|
|
122
|
+
headers: {
|
|
123
|
+
Accept: 'application/json',
|
|
124
|
+
},
|
|
125
|
+
validateStatus: () => true,
|
|
126
|
+
});
|
|
127
|
+
if (response.status < 200 || response.status >= 300) {
|
|
128
|
+
throw new Error(`Fallback request failed for ${normalizedMethod} ${targetUrl} with status ${response.status}.`);
|
|
129
|
+
}
|
|
130
|
+
return response.data;
|
|
131
|
+
}
|
|
106
132
|
/**
|
|
107
133
|
* Fetches page content via Confluence REST API
|
|
108
134
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confluence.js","sourceRoot":"","sources":["../../src/fetcher/confluence.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"confluence.js","sourceRoot":"","sources":["../../src/fetcher/confluence.ts"],"names":[],"mappings":";;;;;AA6BA,kDAwFC;AAMD,sEAgCC;AA3JD,kDAAkD;AAClD,2BAAkC;AAElC;;GAEG;AACH,SAAS,aAAa,CAAC,GAAW;IAChC,uEAAuE;IACvE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,GAAG,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,mBAAmB,CAAC,GAAW;IACnD,IAAI,CAAC;QACH,yBAAyB;QACzB,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACvC,IAAI,CAAC;gBACH,IAAI,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBAE1C,2DAA2D;gBAC3D,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC;oBACpE,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACrD,CAAC;gBAED,OAAO,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;YAC5G,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAE/C,0CAA0C;QAC1C,MAAM,gBAAgB,GAAG,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QAEpC,yDAAyD;QACzD,IAAI,gBAAgB,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;YAClE,OAAO,MAAM,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC;QAED,+DAA+D;QAC/D,MAAM,MAAM,GAAuB;YACjC,OAAO,EAAE;gBACP,QAAQ,EAAE,WAAW;aACtB;SACF,CAAC;QAEF,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,GAAG;gBACZ,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,KAAK;aAChB,CAAC;QACJ,CAAC;aAAM,IAAI,gBAAgB,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;QACtF,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAE3B,kDAAkD;QAClD,IAAI,IAAI,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,sFAAsF;gBACtF,2EAA2E;gBAC3E,iDAAiD,CAClD,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,eAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,6CAA6C;oBAC7C,wEAAwE;oBACxE,8CAA8C,CAC/C,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,yEAAyE;oBACzE,0CAA0C,CAC3C,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,KAAK,CACb,oCAAoC,KAAK,CAAC,OAAO,GAC/C,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EACnE,EAAE,CACH,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,6BAA6B,CACjD,OAAe,EACf,IAAY,EACZ,MAAc;IAEd,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CACb,mCAAmC,gBAAgB,IAAI,IAAI,kEAAkE,CAC9H,CAAC;IACJ,CAAC;IAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IAChE,MAAM,SAAS,GAAG,GAAG,iBAAiB,GAAG,cAAc,EAAE,CAAC;IAE1D,MAAM,QAAQ,GAAG,MAAM,IAAA,eAAK,EAAC;QAC3B,MAAM,EAAE,gBAAkC;QAC1C,GAAG,EAAE,SAAS;QACd,OAAO,EAAE;YACP,MAAM,EAAE,kBAAkB;SAC3B;QACD,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI;KAC3B,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,+BAA+B,gBAAgB,IAAI,SAAS,gBAAgB,QAAQ,CAAC,MAAM,GAAG,CAC/F,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAC5B,OAAe,EACf,MAAc,EACd,KAAa,EACb,KAAa;IAEb,IAAI,CAAC;QACH,wCAAwC;QACxC,MAAM,MAAM,GAAG,GAAG,OAAO,0BAA0B,MAAM,sBAAsB,CAAC;QAEhF,MAAM,MAAM,GAAuB;YACjC,OAAO,EAAE;gBACP,QAAQ,EAAE,kBAAkB;aAC7B;YACD,IAAI,EAAE;gBACJ,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,KAAK;aAChB;SACF,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEjD,mEAAmE;QACnE,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;QAE/B,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC1E,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACrC,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,eAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,6CAA6C;oBAC7C,wEAAwE;oBACxE,sDAAsD,CACvD,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,yEAAyE;oBACzE,0CAA0C,CAC3C,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,4DAA4D;oBAC5D,yCAAyC,CAC1C,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,KAAK,CACb,yBAAyB,KAAK,CAAC,OAAO,GACpC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EACnE,EAAE,CACH,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -3,7 +3,10 @@ import { MockSchema } from './schema-types';
|
|
|
3
3
|
* Parses API endpoint definitions from Confluence HTML
|
|
4
4
|
* Supports both code blocks and table-based formats
|
|
5
5
|
*/
|
|
6
|
-
export
|
|
6
|
+
export interface ParseERDOptions {
|
|
7
|
+
fallbackBaseUrl?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function parseERDFromHTML(html: string, options?: ParseERDOptions): Promise<MockSchema>;
|
|
7
10
|
/**
|
|
8
11
|
* Validates that the parsed schema contains at least one endpoint
|
|
9
12
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erd-parser.d.ts","sourceRoot":"","sources":["../../src/parser/erd-parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"erd-parser.d.ts","sourceRoot":"","sources":["../../src/parser/erd-parser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AASD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,UAAU,CAAC,CA6BrB;AAufD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAIvD"}
|
|
@@ -36,15 +36,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.parseERDFromHTML = parseERDFromHTML;
|
|
37
37
|
exports.validateSchema = validateSchema;
|
|
38
38
|
const cheerio = __importStar(require("cheerio"));
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
* Supports both code blocks and table-based formats
|
|
42
|
-
*/
|
|
43
|
-
function parseERDFromHTML(html) {
|
|
39
|
+
const confluence_1 = require("../fetcher/confluence");
|
|
40
|
+
async function parseERDFromHTML(html, options = {}) {
|
|
44
41
|
const $ = cheerio.load(html);
|
|
45
42
|
let endpoints = [];
|
|
46
43
|
// Strategy 1: Try parsing tables (common in Confluence ERD pages)
|
|
47
|
-
const tableEndpoints = parseTableBasedEndpoints($, html);
|
|
44
|
+
const tableEndpoints = await parseTableBasedEndpoints($, html, options);
|
|
48
45
|
if (tableEndpoints.length > 0) {
|
|
49
46
|
endpoints.push(...tableEndpoints);
|
|
50
47
|
}
|
|
@@ -55,7 +52,7 @@ function parseERDFromHTML(html) {
|
|
|
55
52
|
if (!text)
|
|
56
53
|
continue;
|
|
57
54
|
try {
|
|
58
|
-
const endpoint = parseEndpointFromText(text);
|
|
55
|
+
const endpoint = await parseEndpointFromText(text, options);
|
|
59
56
|
if (endpoint) {
|
|
60
57
|
endpoints.push(endpoint);
|
|
61
58
|
}
|
|
@@ -70,9 +67,9 @@ function parseERDFromHTML(html) {
|
|
|
70
67
|
/**
|
|
71
68
|
* Parses a single endpoint definition from text
|
|
72
69
|
*/
|
|
73
|
-
function parseEndpointFromText(text) {
|
|
70
|
+
async function parseEndpointFromText(text, options) {
|
|
74
71
|
// Match HTTP method and path (e.g., "POST /api/categories")
|
|
75
|
-
const methodPathRegex = /^(GET|POST|PUT|DELETE)\s+(\/[^\s\n]*)/im;
|
|
72
|
+
const methodPathRegex = /^(GET|POST|PUT|DELETE|PATCH)\s+(\/[^\s\n]*)/im;
|
|
76
73
|
const methodPathMatch = text.match(methodPathRegex);
|
|
77
74
|
if (!methodPathMatch) {
|
|
78
75
|
return null;
|
|
@@ -81,26 +78,15 @@ function parseEndpointFromText(text) {
|
|
|
81
78
|
const path = methodPathMatch[2];
|
|
82
79
|
// Extract Request JSON
|
|
83
80
|
let request = undefined;
|
|
84
|
-
const
|
|
85
|
-
if (
|
|
86
|
-
|
|
87
|
-
request = JSON.parse(requestMatch[1]);
|
|
88
|
-
}
|
|
89
|
-
catch {
|
|
90
|
-
// Invalid JSON, skip request
|
|
91
|
-
}
|
|
81
|
+
const requestSnippet = extractStructuredJSON(text, 'Request:');
|
|
82
|
+
if (requestSnippet.value !== null) {
|
|
83
|
+
request = requestSnippet.value;
|
|
92
84
|
}
|
|
93
85
|
// Extract Response JSON
|
|
94
86
|
let response = {};
|
|
95
|
-
const
|
|
96
|
-
if (
|
|
97
|
-
|
|
98
|
-
response = JSON.parse(responseMatch[1]);
|
|
99
|
-
}
|
|
100
|
-
catch {
|
|
101
|
-
// Invalid JSON, use empty object
|
|
102
|
-
response = {};
|
|
103
|
-
}
|
|
87
|
+
const responseSnippet = extractStructuredJSON(text, 'Response:');
|
|
88
|
+
if (responseSnippet.raw) {
|
|
89
|
+
response = await resolveResponseSnippet({ method, path, request, response: {}, status: undefined }, responseSnippet, options) ?? {};
|
|
104
90
|
}
|
|
105
91
|
// Extract status code if specified
|
|
106
92
|
let status = undefined;
|
|
@@ -120,42 +106,53 @@ function parseEndpointFromText(text) {
|
|
|
120
106
|
* Extracts request/response from CDATA blocks associated with a specific endpoint.
|
|
121
107
|
* Each block is checked for Response Structure and Body/Request keywords.
|
|
122
108
|
*/
|
|
123
|
-
function extractFromAssociatedBlocks(blocks) {
|
|
109
|
+
async function extractFromAssociatedBlocks(endpoint, blocks, options) {
|
|
124
110
|
const result = {};
|
|
125
111
|
for (const block of blocks) {
|
|
126
112
|
const content = block.content;
|
|
127
113
|
if (!result.response) {
|
|
128
|
-
if (content.includes('Response Structure:')) {
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
114
|
+
if (content.includes('Response Structure:') || content.includes('Response Structure')) {
|
|
115
|
+
const snippet = extractStructuredJSONFromKeywords(content, [
|
|
116
|
+
'Response Structure:',
|
|
117
|
+
'Response Structure',
|
|
118
|
+
]);
|
|
119
|
+
if (snippet.raw && endpoint.method && endpoint.path) {
|
|
120
|
+
const resolved = await resolveResponseSnippet({
|
|
121
|
+
method: endpoint.method,
|
|
122
|
+
path: endpoint.path,
|
|
123
|
+
request: endpoint.request,
|
|
124
|
+
response: {},
|
|
125
|
+
status: endpoint.status,
|
|
126
|
+
}, snippet, options);
|
|
127
|
+
if (resolved !== undefined) {
|
|
128
|
+
result.response = resolved;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
else if (snippet.value !== null) {
|
|
132
|
+
result.response = snippet.value;
|
|
133
|
+
}
|
|
137
134
|
}
|
|
138
135
|
}
|
|
139
136
|
if (!result.request) {
|
|
140
137
|
if (content.includes('Request Structure:')) {
|
|
141
|
-
const
|
|
142
|
-
if (
|
|
143
|
-
result.request =
|
|
138
|
+
const snippet = extractStructuredJSON(content, 'Request Structure:');
|
|
139
|
+
if (snippet.value !== null)
|
|
140
|
+
result.request = snippet.value;
|
|
144
141
|
}
|
|
145
142
|
else if (content.includes('Body:')) {
|
|
146
|
-
const
|
|
147
|
-
if (
|
|
148
|
-
result.request =
|
|
143
|
+
const snippet = extractStructuredJSON(content, 'Body:');
|
|
144
|
+
if (snippet.value !== null)
|
|
145
|
+
result.request = snippet.value;
|
|
149
146
|
}
|
|
150
147
|
else if (content.includes('Request Body:')) {
|
|
151
|
-
const
|
|
152
|
-
if (
|
|
153
|
-
result.request =
|
|
148
|
+
const snippet = extractStructuredJSON(content, 'Request Body:');
|
|
149
|
+
if (snippet.value !== null)
|
|
150
|
+
result.request = snippet.value;
|
|
154
151
|
}
|
|
155
152
|
else if (content.includes('Request:') && !content.includes('Response')) {
|
|
156
|
-
const
|
|
157
|
-
if (
|
|
158
|
-
result.request =
|
|
153
|
+
const snippet = extractStructuredJSON(content, 'Request:');
|
|
154
|
+
if (snippet.value !== null)
|
|
155
|
+
result.request = snippet.value;
|
|
159
156
|
}
|
|
160
157
|
}
|
|
161
158
|
}
|
|
@@ -166,7 +163,7 @@ function extractFromAssociatedBlocks(blocks) {
|
|
|
166
163
|
* Uses positional association to correctly map CDATA code snippets
|
|
167
164
|
* to their owning table, even when endpoints have multiple CDATA blocks.
|
|
168
165
|
*/
|
|
169
|
-
function parseTableBasedEndpoints($, html) {
|
|
166
|
+
async function parseTableBasedEndpoints($, html, options) {
|
|
170
167
|
const endpoints = [];
|
|
171
168
|
// Find positions of every <table in the raw HTML
|
|
172
169
|
const tablePositions = [];
|
|
@@ -195,7 +192,7 @@ function parseTableBasedEndpoints($, html) {
|
|
|
195
192
|
: html.length;
|
|
196
193
|
const associatedBlocks = cdataBlocks.filter(b => b.position > thisTablePos && b.position < nextTablePos);
|
|
197
194
|
console.log(`[DEBUG] Associated CDATA blocks: ${associatedBlocks.length}`);
|
|
198
|
-
const snippet = extractFromAssociatedBlocks(associatedBlocks);
|
|
195
|
+
const snippet = await extractFromAssociatedBlocks(endpoint, associatedBlocks, options);
|
|
199
196
|
endpoint.response = snippet.response || { message: 'Success', data: {} };
|
|
200
197
|
endpoint.request = snippet.request;
|
|
201
198
|
if (!endpoint.status) {
|
|
@@ -269,16 +266,50 @@ function parseEndpointFromTable($, table) {
|
|
|
269
266
|
/**
|
|
270
267
|
* Extracts a complete JSON object from text, handling nested structures
|
|
271
268
|
*/
|
|
272
|
-
function
|
|
269
|
+
function extractStructuredJSON(text, startKeyword) {
|
|
270
|
+
const raw = extractRawJSONBlock(text, startKeyword);
|
|
271
|
+
if (!raw) {
|
|
272
|
+
return {
|
|
273
|
+
raw: null,
|
|
274
|
+
value: null,
|
|
275
|
+
partialValue: null,
|
|
276
|
+
isTruncated: false,
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
const parsed = parseJSONWithComments(raw);
|
|
280
|
+
const isTruncated = hasTruncationMarker(raw);
|
|
281
|
+
const partialValue = isTruncated ? parsePartialJSON(raw) : null;
|
|
282
|
+
return {
|
|
283
|
+
raw,
|
|
284
|
+
value: parsed ?? partialValue,
|
|
285
|
+
partialValue,
|
|
286
|
+
isTruncated,
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
function extractStructuredJSONFromKeywords(text, keywords) {
|
|
290
|
+
for (const keyword of keywords) {
|
|
291
|
+
const snippet = extractStructuredJSON(text, keyword);
|
|
292
|
+
if (snippet.raw) {
|
|
293
|
+
return snippet;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
return {
|
|
297
|
+
raw: null,
|
|
298
|
+
value: null,
|
|
299
|
+
partialValue: null,
|
|
300
|
+
isTruncated: false,
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
function extractRawJSONBlock(text, startKeyword) {
|
|
273
304
|
const startIndex = text.indexOf(startKeyword);
|
|
274
305
|
if (startIndex === -1)
|
|
275
306
|
return null;
|
|
276
|
-
|
|
277
|
-
const
|
|
307
|
+
const objectStart = text.indexOf('{', startIndex);
|
|
308
|
+
const arrayStart = text.indexOf('[', startIndex);
|
|
309
|
+
const jsonStart = getFirstJSONStart(objectStart, arrayStart);
|
|
278
310
|
if (jsonStart === -1)
|
|
279
311
|
return null;
|
|
280
|
-
|
|
281
|
-
let braceCount = 0;
|
|
312
|
+
const stack = [];
|
|
282
313
|
let inString = false;
|
|
283
314
|
let escapeNext = false;
|
|
284
315
|
let jsonEnd = -1;
|
|
@@ -299,11 +330,17 @@ function extractCompleteJSON(text, startKeyword) {
|
|
|
299
330
|
if (inString)
|
|
300
331
|
continue;
|
|
301
332
|
if (char === '{') {
|
|
302
|
-
|
|
333
|
+
stack.push('}');
|
|
303
334
|
}
|
|
304
|
-
else if (char === '
|
|
305
|
-
|
|
306
|
-
|
|
335
|
+
else if (char === '[') {
|
|
336
|
+
stack.push(']');
|
|
337
|
+
}
|
|
338
|
+
else if (char === '}' || char === ']') {
|
|
339
|
+
if (stack.length === 0 || stack[stack.length - 1] !== char) {
|
|
340
|
+
return null;
|
|
341
|
+
}
|
|
342
|
+
stack.pop();
|
|
343
|
+
if (stack.length === 0) {
|
|
307
344
|
jsonEnd = i + 1;
|
|
308
345
|
break;
|
|
309
346
|
}
|
|
@@ -311,7 +348,16 @@ function extractCompleteJSON(text, startKeyword) {
|
|
|
311
348
|
}
|
|
312
349
|
if (jsonEnd === -1)
|
|
313
350
|
return null;
|
|
314
|
-
|
|
351
|
+
return text.substring(jsonStart, jsonEnd);
|
|
352
|
+
}
|
|
353
|
+
function getFirstJSONStart(objectStart, arrayStart) {
|
|
354
|
+
if (objectStart === -1)
|
|
355
|
+
return arrayStart;
|
|
356
|
+
if (arrayStart === -1)
|
|
357
|
+
return objectStart;
|
|
358
|
+
return Math.min(objectStart, arrayStart);
|
|
359
|
+
}
|
|
360
|
+
function parseJSONWithComments(jsonStr) {
|
|
315
361
|
try {
|
|
316
362
|
return JSON.parse(jsonStr);
|
|
317
363
|
}
|
|
@@ -325,6 +371,82 @@ function extractCompleteJSON(text, startKeyword) {
|
|
|
325
371
|
}
|
|
326
372
|
}
|
|
327
373
|
}
|
|
374
|
+
function hasTruncationMarker(jsonStr) {
|
|
375
|
+
return jsonStr
|
|
376
|
+
.split('\n')
|
|
377
|
+
.some(line => /^\s*\.{3,},?\s*$/.test(line));
|
|
378
|
+
}
|
|
379
|
+
function parsePartialJSON(jsonStr) {
|
|
380
|
+
const withoutMarkers = jsonStr
|
|
381
|
+
.split('\n')
|
|
382
|
+
.filter(line => !/^\s*\.{3,},?\s*$/.test(line))
|
|
383
|
+
.join('\n');
|
|
384
|
+
const withoutTrailingCommas = stripTrailingCommas(withoutMarkers);
|
|
385
|
+
return parseJSONWithComments(withoutTrailingCommas);
|
|
386
|
+
}
|
|
387
|
+
function stripTrailingCommas(jsonStr) {
|
|
388
|
+
let current = jsonStr;
|
|
389
|
+
let previous = '';
|
|
390
|
+
while (current !== previous) {
|
|
391
|
+
previous = current;
|
|
392
|
+
current = current.replace(/,\s*([}\]])/g, '$1');
|
|
393
|
+
}
|
|
394
|
+
return current;
|
|
395
|
+
}
|
|
396
|
+
async function resolveResponseSnippet(endpoint, snippet, options) {
|
|
397
|
+
if (!snippet.raw) {
|
|
398
|
+
return undefined;
|
|
399
|
+
}
|
|
400
|
+
if (!snippet.isTruncated) {
|
|
401
|
+
return snippet.value ?? undefined;
|
|
402
|
+
}
|
|
403
|
+
return hydrateTruncatedResponse(endpoint, snippet.partialValue, options);
|
|
404
|
+
}
|
|
405
|
+
async function hydrateTruncatedResponse(endpoint, documentedResponse, options) {
|
|
406
|
+
if (!options.fallbackBaseUrl) {
|
|
407
|
+
console.warn(`[WARN] Truncated response for ${endpoint.method} ${endpoint.path} has no fallback URL. Using documented fields only.`);
|
|
408
|
+
return documentedResponse ?? undefined;
|
|
409
|
+
}
|
|
410
|
+
try {
|
|
411
|
+
const fallbackResponse = await (0, confluence_1.fetchFallbackEndpointResponse)(options.fallbackBaseUrl, endpoint.path, endpoint.method);
|
|
412
|
+
if (documentedResponse === null || documentedResponse === undefined) {
|
|
413
|
+
return fallbackResponse;
|
|
414
|
+
}
|
|
415
|
+
return mergeMissingFields(fallbackResponse, documentedResponse);
|
|
416
|
+
}
|
|
417
|
+
catch (error) {
|
|
418
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
419
|
+
console.warn(`[WARN] Failed to hydrate truncated response for ${endpoint.method} ${endpoint.path}: ${message}`);
|
|
420
|
+
return documentedResponse ?? undefined;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
function mergeMissingFields(base, documented) {
|
|
424
|
+
if (base === undefined)
|
|
425
|
+
return documented;
|
|
426
|
+
if (Array.isArray(base) && Array.isArray(documented)) {
|
|
427
|
+
if (base.length === 0)
|
|
428
|
+
return documented;
|
|
429
|
+
if (documented.length === 0)
|
|
430
|
+
return base;
|
|
431
|
+
const [first, ...rest] = base;
|
|
432
|
+
return [mergeMissingFields(first, documented[0]), ...rest];
|
|
433
|
+
}
|
|
434
|
+
if (isPlainObject(base) && isPlainObject(documented)) {
|
|
435
|
+
const result = { ...base };
|
|
436
|
+
for (const [key, value] of Object.entries(documented)) {
|
|
437
|
+
if (!(key in result)) {
|
|
438
|
+
result[key] = value;
|
|
439
|
+
continue;
|
|
440
|
+
}
|
|
441
|
+
result[key] = mergeMissingFields(result[key], value);
|
|
442
|
+
}
|
|
443
|
+
return result;
|
|
444
|
+
}
|
|
445
|
+
return base;
|
|
446
|
+
}
|
|
447
|
+
function isPlainObject(value) {
|
|
448
|
+
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
449
|
+
}
|
|
328
450
|
/**
|
|
329
451
|
* Strips single-line // comments that appear outside of JSON string values.
|
|
330
452
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erd-parser.js","sourceRoot":"","sources":["../../src/parser/erd-parser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,4CA6BC;AA4TD,wCAIC;AApWD,iDAAmC;AAGnC;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,SAAS,GAAe,EAAE,CAAC;IAE/B,kEAAkE;IAClE,MAAM,cAAc,GAAG,wBAAwB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACzD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,SAAS,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;IACpC,CAAC;IAED,wDAAwD;IACxD,MAAM,UAAU,GAAG,CAAC,CAAC,sCAAsC,CAAC,CAAC,OAAO,EAAE,CAAC;IACvE,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QAEpC,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,QAAQ,EAAE,CAAC;gBACb,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iCAAiC;YACjC,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,IAAY;IACzC,4DAA4D;IAC5D,MAAM,eAAe,GAAG,yCAAyC,CAAC;IAClE,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAEpD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,EAA4B,CAAC;IAC1E,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IAEhC,uBAAuB;IACvB,IAAI,OAAO,GAAY,SAAS,CAAC;IACjC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACnE,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,6BAA6B;QAC/B,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,IAAI,QAAQ,GAAY,EAAE,CAAC;IAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACrE,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,iCAAiC;YACjC,QAAQ,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,IAAI,MAAM,GAAuB,SAAS,CAAC;IAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACrD,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,OAAO;QACL,MAAM;QACN,IAAI;QACJ,OAAO;QACP,QAAQ;QACR,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,2BAA2B,CAAC,MAAoD;IACvF,MAAM,MAAM,GAA8C,EAAE,CAAC;IAE7D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAE9B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,IAAI,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAC5C,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;gBACjE,IAAI,IAAI;oBAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;YACnC,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;gBAChE,IAAI,IAAI;oBAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;YACnC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;gBAChE,IAAI,IAAI;oBAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YAClC,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACnD,IAAI,IAAI;oBAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YAClC,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC7C,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;gBAC3D,IAAI,IAAI;oBAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YAClC,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzE,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBACtD,IAAI,IAAI;oBAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,wBAAwB,CAAC,CAAqB,EAAE,IAAY;IACnE,MAAM,SAAS,GAAe,EAAE,CAAC;IAEjC,iDAAiD;IACjD,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,eAAe,CAAC;IACnC,IAAI,MAAM,CAAC;IACX,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACjD,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,oDAAoD;IACpD,MAAM,WAAW,GAAiD,EAAE,CAAC;IACrE,MAAM,UAAU,GAAG,6BAA6B,CAAC;IACjD,IAAI,MAAM,CAAC;IACX,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACjD,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IAEpC,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,MAAM,YAAY,WAAW,CAAC,MAAM,eAAe,CAAC,CAAC;IAEzF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAElD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAEjH,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,MAAM,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC;gBAClD,CAAC,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC;gBACvB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YAEhB,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CACzC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,YAAY,IAAI,CAAC,CAAC,QAAQ,GAAG,YAAY,CAC5D,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,sCAAsC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;YAE7E,MAAM,OAAO,GAAG,2BAA2B,CAAC,gBAAgB,CAAC,CAAC;YAE9D,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YACzE,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAEnC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACrB,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC3D,CAAC;YAED,SAAS,CAAC,IAAI,CAAC,QAAwB,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mCAAmC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAEnE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,CAAqB,EAAE,KAAU;IAC/D,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAA0B,EAAE,CAAC;IAC3C,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACrC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YAErC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAEjD,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,EAAE,CAAC;YAErB,qDAAqD;YACrD,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YAE5E,kBAAkB;YAClB,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxD,SAAS,GAAG,IAAI,CAAC;gBACjB,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB;gBAErD,gEAAgE;gBAChE,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3B,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAClB,CAAC;qBAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxD,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAClB,CAAC;gBAED,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;YACtB,CAAC;YAED,qBAAqB;YACrB,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,YAAY,GAAG,IAAI,CAAC;gBACpB,0GAA0G;gBAC1G,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBAChE,IAAI,WAAW,EAAE,CAAC;oBAChB,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAA4B,CAAC;gBAC3E,CAAC;qBAAM,CAAC;oBACN,uCAAuC;oBACvC,OAAO,CAAC,GAAG,CAAC,4DAA4D,KAAK,GAAG,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS;QACX,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,2BAA2B,SAAS,IAAI,QAAQ,CAAC,IAAI,IAAI,MAAM,aAAa,YAAY,IAAI,QAAQ,CAAC,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC;IACxI,CAAC;IAED,8CAA8C;IAC9C,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,IAAY,EAAE,YAAoB;IAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9C,IAAI,UAAU,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnC,iDAAiD;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAChD,IAAI,SAAS,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAElC,kDAAkD;IAClD,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;IAEjB,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAErB,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,GAAG,KAAK,CAAC;YACnB,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,UAAU,GAAG,IAAI,CAAC;YAClB,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,QAAQ,GAAG,CAAC,QAAQ,CAAC;YACrB,SAAS;QACX,CAAC;QAED,IAAI,QAAQ;YAAE,SAAS;QAEvB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,UAAU,EAAE,CAAC;QACf,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACxB,UAAU,EAAE,CAAC;YACb,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;gBACrB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;gBAChB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,OAAe;IACxC,OAAO,OAAO;SACX,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,IAAI,CAAC,EAAE;QACV,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,OAAO,EAAE,CAAC;gBAAC,OAAO,GAAG,KAAK,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC3C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAAC,OAAO,GAAG,IAAI,CAAC;gBAAC,SAAS;YAAC,CAAC;YAChD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC;gBAAC,SAAS;YAAC,CAAC;YACrD,IAAI,CAAC,QAAQ,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACrD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACxC,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,MAAkB;IAC/C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"erd-parser.js","sourceRoot":"","sources":["../../src/parser/erd-parser.ts"],"names":[],"mappings":"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"}
|