@mhmdalimansour/mock-mock 1.0.7 → 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 +5 -2
- 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
|
@@ -143,7 +143,7 @@ npm start -- --url <url>
|
|
|
143
143
|
| --- | --- | --- |
|
|
144
144
|
| `-u, --url <url>` | Confluence page URL or `file://` HTML path | required |
|
|
145
145
|
| `-p, --port <port>` | Port for the mock server | `4000` |
|
|
146
|
-
| `-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 |
|
|
147
147
|
| `--delay <ms>` | Response delay in milliseconds | `0` |
|
|
148
148
|
| `-e, --email <email>` | Confluence email, overrides env var | none |
|
|
149
149
|
| `-t, --token <token>` | Confluence API token, overrides env var | none |
|
|
@@ -212,7 +212,7 @@ Status: 201
|
|
|
212
212
|
### Supported Methods
|
|
213
213
|
|
|
214
214
|
- Table-based parsing supports `GET`, `POST`, `PUT`, `PATCH`, and `DELETE`.
|
|
215
|
-
- Plain code-block parsing currently recognizes `GET`, `POST`, `PUT`, and `DELETE`.
|
|
215
|
+
- Plain code-block parsing currently recognizes `GET`, `POST`, `PUT`, `PATCH`, and `DELETE`.
|
|
216
216
|
- The server runtime supports `PATCH` once an endpoint is present in the parsed schema.
|
|
217
217
|
|
|
218
218
|
### Notes About Response Templates
|
|
@@ -220,6 +220,7 @@ Status: 201
|
|
|
220
220
|
- Response objects are used as templates for fake data generation.
|
|
221
221
|
- Response arrays are expanded into collections with about 15 to 30 records.
|
|
222
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.
|
|
223
224
|
- Path parameters in documentation can use `{id}` and are converted to Express-style params internally.
|
|
224
225
|
- Plain code-block parsing is best with object-shaped JSON responses; table-based ERD pages are more flexible.
|
|
225
226
|
|
|
@@ -300,6 +301,8 @@ npm start -- --url file://C:/absolute/path/to/example-confluence.html
|
|
|
300
301
|
|
|
301
302
|
- Check the response JSON in Confluence.
|
|
302
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.
|
|
303
306
|
- Remember that fake data is inferred from field names and primitive types.
|
|
304
307
|
|
|
305
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":"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"}
|
|
@@ -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":"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"}
|
|
@@ -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":"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"}
|
|
1
|
+
{"version":3,"file":"erd-parser.js","sourceRoot":"","sources":["../../src/parser/erd-parser.ts"],"names":[],"mappings":"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"}
|