apcore-toolkit 0.4.0 → 0.5.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/CHANGELOG.md +62 -0
- package/LICENSE +185 -0
- package/README.md +91 -39
- package/dist/ai-enhancer.d.ts +18 -1
- package/dist/ai-enhancer.d.ts.map +1 -1
- package/dist/ai-enhancer.js +145 -72
- package/dist/ai-enhancer.js.map +1 -1
- package/dist/binding-loader.d.ts +55 -0
- package/dist/binding-loader.d.ts.map +1 -0
- package/dist/binding-loader.js +175 -0
- package/dist/binding-loader.js.map +1 -0
- package/dist/binding-parser.d.ts +80 -0
- package/dist/binding-parser.d.ts.map +1 -0
- package/dist/binding-parser.js +257 -0
- package/dist/binding-parser.js.map +1 -0
- package/dist/browser/index.d.ts +17 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +46 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/{display-resolver.d.ts → display/resolver.d.ts} +14 -2
- package/dist/display/resolver.d.ts.map +1 -0
- package/dist/{display-resolver.js → display/resolver.js} +79 -25
- package/dist/display/resolver.js.map +1 -0
- package/dist/formatting/markdown.d.ts.map +1 -1
- package/dist/formatting/markdown.js +25 -22
- package/dist/formatting/markdown.js.map +1 -1
- package/dist/http-verb-map.d.ts +79 -0
- package/dist/http-verb-map.d.ts.map +1 -0
- package/dist/http-verb-map.js +179 -0
- package/dist/http-verb-map.js.map +1 -0
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -4
- package/dist/index.js.map +1 -1
- package/dist/openapi.d.ts.map +1 -1
- package/dist/openapi.js +37 -10
- package/dist/openapi.js.map +1 -1
- package/dist/output/base-writer.d.ts +17 -0
- package/dist/output/base-writer.d.ts.map +1 -0
- package/dist/output/base-writer.js +34 -0
- package/dist/output/base-writer.js.map +1 -0
- package/dist/output/errors.d.ts +7 -2
- package/dist/output/errors.d.ts.map +1 -1
- package/dist/output/errors.js +8 -3
- package/dist/output/errors.js.map +1 -1
- package/dist/output/factory.d.ts +13 -1
- package/dist/output/factory.d.ts.map +1 -1
- package/dist/output/factory.js +21 -2
- package/dist/output/factory.js.map +1 -1
- package/dist/output/http-proxy-writer.d.ts +82 -0
- package/dist/output/http-proxy-writer.d.ts.map +1 -0
- package/dist/output/http-proxy-writer.js +222 -0
- package/dist/output/http-proxy-writer.js.map +1 -0
- package/dist/output/index.d.ts +1 -1
- package/dist/output/index.d.ts.map +1 -1
- package/dist/output/index.js +1 -1
- package/dist/output/index.js.map +1 -1
- package/dist/output/registry-writer.d.ts +23 -5
- package/dist/output/registry-writer.d.ts.map +1 -1
- package/dist/output/registry-writer.js +56 -16
- package/dist/output/registry-writer.js.map +1 -1
- package/dist/output/types.d.ts +1 -0
- package/dist/output/types.d.ts.map +1 -1
- package/dist/output/types.js.map +1 -1
- package/dist/output/typescript-writer.d.ts +14 -6
- package/dist/output/typescript-writer.d.ts.map +1 -1
- package/dist/output/typescript-writer.js +100 -32
- package/dist/output/typescript-writer.js.map +1 -1
- package/dist/output/verifiers.d.ts +1 -9
- package/dist/output/verifiers.d.ts.map +1 -1
- package/dist/output/verifiers.js +92 -42
- package/dist/output/verifiers.js.map +1 -1
- package/dist/output/verify-core.d.ts +20 -0
- package/dist/output/verify-core.d.ts.map +1 -0
- package/dist/output/verify-core.js +59 -0
- package/dist/output/verify-core.js.map +1 -0
- package/dist/output/yaml-writer.d.ts +18 -6
- package/dist/output/yaml-writer.d.ts.map +1 -1
- package/dist/output/yaml-writer.js +99 -42
- package/dist/output/yaml-writer.js.map +1 -1
- package/dist/resolve-target.d.ts.map +1 -1
- package/dist/resolve-target.js +34 -5
- package/dist/resolve-target.js.map +1 -1
- package/dist/safe-keys.d.ts +2 -0
- package/dist/safe-keys.d.ts.map +1 -0
- package/dist/safe-keys.js +19 -0
- package/dist/safe-keys.js.map +1 -0
- package/dist/scanner.d.ts +22 -0
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +40 -16
- package/dist/scanner.js.map +1 -1
- package/dist/schema-utils.d.ts.map +1 -1
- package/dist/schema-utils.js +13 -2
- package/dist/schema-utils.js.map +1 -1
- package/dist/serializers.d.ts +8 -1
- package/dist/serializers.d.ts.map +1 -1
- package/dist/serializers.js +15 -6
- package/dist/serializers.js.map +1 -1
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -1
- package/package.json +10 -2
- package/dist/display-resolver.d.ts.map +0 -1
- package/dist/display-resolver.js.map +0 -1
- package/dist/flatten-params.d.ts +0 -16
- package/dist/flatten-params.d.ts.map +0 -1
- package/dist/flatten-params.js +0 -18
- package/dist/flatten-params.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/formatting/markdown.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/formatting/markdown.ts"],"names":[],"mappings":"AAsOA,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,MAAM,CA+BR"}
|
|
@@ -20,14 +20,24 @@ function _formatScalar(value) {
|
|
|
20
20
|
function _escapePipe(text) {
|
|
21
21
|
return text.replace(/\|/g, '\\|');
|
|
22
22
|
}
|
|
23
|
-
function
|
|
23
|
+
function _escapeCell(text) {
|
|
24
|
+
return _escapePipe(text).replace(/\r?\n/g, ' ');
|
|
25
|
+
}
|
|
26
|
+
function _compactRepr(value, maxLen = 80, _visited) {
|
|
27
|
+
const visited = _visited ?? new WeakSet();
|
|
24
28
|
let text;
|
|
25
29
|
if (Array.isArray(value)) {
|
|
26
|
-
|
|
30
|
+
if (visited.has(value))
|
|
31
|
+
return '[Circular]';
|
|
32
|
+
visited.add(value);
|
|
33
|
+
const parts = value.map(v => _compactRepr(v, 30, visited));
|
|
27
34
|
text = `[${parts.join(', ')}]`;
|
|
28
35
|
}
|
|
29
36
|
else if (value !== null && typeof value === 'object') {
|
|
30
|
-
|
|
37
|
+
if (visited.has(value))
|
|
38
|
+
return '[Circular]';
|
|
39
|
+
visited.add(value);
|
|
40
|
+
const parts = Object.entries(value).map(([k, v]) => `${k}: ${_compactRepr(v, 30, visited)}`);
|
|
31
41
|
text = `{${parts.join(', ')}}`;
|
|
32
42
|
}
|
|
33
43
|
else if (_isScalar(value)) {
|
|
@@ -53,9 +63,9 @@ function _uniformKeys(items) {
|
|
|
53
63
|
function _filterKeys(data, fields, exclude) {
|
|
54
64
|
let result = data;
|
|
55
65
|
if (fields !== undefined) {
|
|
56
|
-
const filtered =
|
|
66
|
+
const filtered = Object.create(null);
|
|
57
67
|
for (const k of fields) {
|
|
58
|
-
if (k
|
|
68
|
+
if (Object.prototype.hasOwnProperty.call(data, k)) {
|
|
59
69
|
filtered[k] = data[k];
|
|
60
70
|
}
|
|
61
71
|
}
|
|
@@ -63,7 +73,7 @@ function _filterKeys(data, fields, exclude) {
|
|
|
63
73
|
}
|
|
64
74
|
if (exclude && exclude.length > 0) {
|
|
65
75
|
const ex = new Set(exclude);
|
|
66
|
-
const filtered =
|
|
76
|
+
const filtered = Object.create(null);
|
|
67
77
|
for (const [k, v] of Object.entries(result)) {
|
|
68
78
|
if (!ex.has(k))
|
|
69
79
|
filtered[k] = v;
|
|
@@ -76,7 +86,7 @@ function _renderTable(data, lines) {
|
|
|
76
86
|
lines.push('| Field | Value |');
|
|
77
87
|
lines.push('|-------|-------|');
|
|
78
88
|
for (const [key, value] of Object.entries(data)) {
|
|
79
|
-
lines.push(`| ${
|
|
89
|
+
lines.push(`| ${_escapeCell(String(key))} | ${_escapeCell(_formatScalar(value))} |`);
|
|
80
90
|
}
|
|
81
91
|
lines.push('');
|
|
82
92
|
}
|
|
@@ -91,7 +101,7 @@ function _renderListTable(items, lines, exclude) {
|
|
|
91
101
|
lines.push('| ' + keys.map(k => _escapePipe(k)).join(' | ') + ' |');
|
|
92
102
|
lines.push('| ' + keys.map(() => '---').join(' | ') + ' |');
|
|
93
103
|
for (const item of items) {
|
|
94
|
-
const row = keys.map(k =>
|
|
104
|
+
const row = keys.map(k => _escapeCell(_formatScalar(item[k]))).join(' | ');
|
|
95
105
|
lines.push(`| ${row} |`);
|
|
96
106
|
}
|
|
97
107
|
lines.push('');
|
|
@@ -144,24 +154,17 @@ function _renderList(items, lines, depth, absDepth, maxDepth, exclude) {
|
|
|
144
154
|
}
|
|
145
155
|
}
|
|
146
156
|
function _renderDict(data, lines, depth, absDepth, maxDepth, tableThreshold, exclude) {
|
|
147
|
-
|
|
157
|
+
const ex = exclude && exclude.length > 0 ? new Set(exclude) : null;
|
|
158
|
+
const entries = Object.entries(data).filter(([k]) => !ex || !ex.has(k));
|
|
159
|
+
if (entries.length === 0)
|
|
148
160
|
return;
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
for (const [k, v] of Object.entries(data)) {
|
|
153
|
-
if (!ex.has(k))
|
|
154
|
-
filtered[k] = v;
|
|
155
|
-
}
|
|
156
|
-
data = filtered;
|
|
157
|
-
}
|
|
158
|
-
const allScalar = Object.values(data).every(v => _isScalar(v));
|
|
159
|
-
if (allScalar && Object.keys(data).length >= tableThreshold) {
|
|
160
|
-
_renderTable(data, lines);
|
|
161
|
+
const allScalar = entries.every(([, v]) => _isScalar(v));
|
|
162
|
+
if (allScalar && entries.length >= tableThreshold) {
|
|
163
|
+
_renderTable(Object.fromEntries(entries), lines);
|
|
161
164
|
return;
|
|
162
165
|
}
|
|
163
166
|
const indent = ' '.repeat(depth);
|
|
164
|
-
for (const [key, value] of
|
|
167
|
+
for (const [key, value] of entries) {
|
|
165
168
|
if (_isScalar(value)) {
|
|
166
169
|
lines.push(`${indent}- **${key}**: ${_formatScalar(value)}`);
|
|
167
170
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/formatting/markdown.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/formatting/markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP verb semantic mapping utilities.
|
|
3
|
+
*
|
|
4
|
+
* Provides the canonical mapping from HTTP methods to semantic verbs used
|
|
5
|
+
* by scanner implementations when generating user-facing command aliases.
|
|
6
|
+
* All functions are pure and do not throw.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Canonical HTTP method to semantic verb mapping.
|
|
10
|
+
*
|
|
11
|
+
* Keys are uppercase HTTP methods. `GET_ID` is a synthetic key used when
|
|
12
|
+
* GET routes have path parameters (single-resource access). Values are
|
|
13
|
+
* lowercase semantic verbs used by CLI and MCP surfaces. The mapping is
|
|
14
|
+
* considered immutable by convention; downstream code MUST NOT mutate it.
|
|
15
|
+
*/
|
|
16
|
+
export declare const SCANNER_VERB_MAP: Readonly<Record<string, string>>;
|
|
17
|
+
/**
|
|
18
|
+
* Check if a URL path contains path parameter placeholders.
|
|
19
|
+
*
|
|
20
|
+
* Detects both brace-style (`{param}`) and colon-style (`:param`) parameters,
|
|
21
|
+
* covering all major web frameworks.
|
|
22
|
+
*
|
|
23
|
+
* @param path - URL path string (e.g., `/tasks/{id}` or `/users/:userId`).
|
|
24
|
+
* @returns True if the path contains at least one path parameter, false otherwise.
|
|
25
|
+
*/
|
|
26
|
+
export declare function hasPathParams(path: string): boolean;
|
|
27
|
+
export declare function resolveHttpVerb(method: string, pathHasParams: boolean): string;
|
|
28
|
+
/**
|
|
29
|
+
* Generate a dot-separated suggested alias from HTTP route info.
|
|
30
|
+
*
|
|
31
|
+
* The alias is built from non-parameter path segments joined with the
|
|
32
|
+
* resolved semantic verb. The output uses snake_case preserved from the
|
|
33
|
+
* path; surface adapters apply their own naming conventions (e.g., CLI
|
|
34
|
+
* converts underscores to hyphens).
|
|
35
|
+
*
|
|
36
|
+
* The GET-vs-list disambiguation checks whether the LAST path segment
|
|
37
|
+
* is a path parameter (single-resource access) rather than whether the
|
|
38
|
+
* path contains any parameters anywhere. This correctly treats nested
|
|
39
|
+
* collection endpoints like `/orgs/{org_id}/members` as `"list"`.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* generateSuggestedAlias('/tasks/user_data', 'POST'); // "tasks.user_data.create"
|
|
43
|
+
* generateSuggestedAlias('/tasks/user_data', 'GET'); // "tasks.user_data.list"
|
|
44
|
+
* generateSuggestedAlias('/tasks/user_data/{id}', 'GET'); // "tasks.user_data.get"
|
|
45
|
+
* generateSuggestedAlias('/tasks/user_data/{id}', 'PUT'); // "tasks.user_data.update"
|
|
46
|
+
* generateSuggestedAlias('/tasks/user_data/{id}', 'DELETE'); // "tasks.user_data.delete"
|
|
47
|
+
* generateSuggestedAlias('/orgs/{org_id}/members', 'GET'); // "orgs.members.list"
|
|
48
|
+
*
|
|
49
|
+
* @param path - URL path (e.g., `/tasks/user_data/{id}`).
|
|
50
|
+
* @param method - HTTP method (e.g., `POST`).
|
|
51
|
+
* @returns Dot-separated alias string. If the path has no non-parameter
|
|
52
|
+
* segments, returns just the semantic verb (e.g., `"list"`).
|
|
53
|
+
*/
|
|
54
|
+
/**
|
|
55
|
+
* Return the set of parameter *names* declared in a URL path.
|
|
56
|
+
*
|
|
57
|
+
* Recognises both brace-style (`/users/{id}`) and colon-style
|
|
58
|
+
* (`/users/:id`) placeholders, so the output is consistent across
|
|
59
|
+
* frameworks that use different conventions.
|
|
60
|
+
*
|
|
61
|
+
* @param path - URL path string.
|
|
62
|
+
* @returns Set of parameter names with the surrounding punctuation stripped
|
|
63
|
+
* (e.g., `new Set(["id", "org_id"])`).
|
|
64
|
+
*/
|
|
65
|
+
export declare function extractPathParamNames(path: string): Set<string>;
|
|
66
|
+
/**
|
|
67
|
+
* Substitute `{name}` and `:name` placeholders with `values[name]`.
|
|
68
|
+
*
|
|
69
|
+
* Keys in `values` that do not appear as placeholders are ignored. A
|
|
70
|
+
* placeholder whose name is absent from `values` is left unchanged
|
|
71
|
+
* (callers can detect the leftover via {@link extractPathParamNames}).
|
|
72
|
+
*
|
|
73
|
+
* @param path - URL path with placeholders.
|
|
74
|
+
* @param values - Mapping from parameter name to substitution value.
|
|
75
|
+
* @returns Path with all matching placeholders replaced.
|
|
76
|
+
*/
|
|
77
|
+
export declare function substitutePathParams(path: string, values: Record<string, unknown>): string;
|
|
78
|
+
export declare function generateSuggestedAlias(path: string, method: string): string;
|
|
79
|
+
//# sourceMappingURL=http-verb-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-verb-map.d.ts","sourceRoot":"","sources":["../src/http-verb-map.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAS5D,CAAC;AAsBH;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGnD;AAgBD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,MAAM,CAS9E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAS/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAmB1F;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAa3E"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP verb semantic mapping utilities.
|
|
3
|
+
*
|
|
4
|
+
* Provides the canonical mapping from HTTP methods to semantic verbs used
|
|
5
|
+
* by scanner implementations when generating user-facing command aliases.
|
|
6
|
+
* All functions are pure and do not throw.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Canonical HTTP method to semantic verb mapping.
|
|
10
|
+
*
|
|
11
|
+
* Keys are uppercase HTTP methods. `GET_ID` is a synthetic key used when
|
|
12
|
+
* GET routes have path parameters (single-resource access). Values are
|
|
13
|
+
* lowercase semantic verbs used by CLI and MCP surfaces. The mapping is
|
|
14
|
+
* considered immutable by convention; downstream code MUST NOT mutate it.
|
|
15
|
+
*/
|
|
16
|
+
export const SCANNER_VERB_MAP = Object.freeze({
|
|
17
|
+
GET: 'list',
|
|
18
|
+
GET_ID: 'get',
|
|
19
|
+
POST: 'create',
|
|
20
|
+
PUT: 'update',
|
|
21
|
+
PATCH: 'patch',
|
|
22
|
+
DELETE: 'delete',
|
|
23
|
+
HEAD: 'head',
|
|
24
|
+
OPTIONS: 'options',
|
|
25
|
+
});
|
|
26
|
+
/**
|
|
27
|
+
* Regex covering path parameter syntax across major frameworks:
|
|
28
|
+
* FastAPI / Django / OpenAPI: {param}
|
|
29
|
+
* Express / NestJS / Gin / Axum: :param
|
|
30
|
+
*/
|
|
31
|
+
const _PATH_PARAM_CORE = '\\{[^}]+\\}|:[a-zA-Z_]\\w*';
|
|
32
|
+
const PATH_PARAM_RE = new RegExp(_PATH_PARAM_CORE);
|
|
33
|
+
/**
|
|
34
|
+
* Full-match variant of PATH_PARAM_RE for segment-level testing.
|
|
35
|
+
* Anchored at both ends so the whole segment must be a parameter.
|
|
36
|
+
*/
|
|
37
|
+
const PATH_PARAM_FULL_RE = new RegExp(`^(?:${_PATH_PARAM_CORE})$`);
|
|
38
|
+
/**
|
|
39
|
+
* Named-capture variant used by parameter extraction and substitution.
|
|
40
|
+
* Mirrors Python's `_PATH_PARAM_NAMED_RE`.
|
|
41
|
+
*/
|
|
42
|
+
const PATH_PARAM_NAMED_RE = new RegExp('\\{(?<brace>[^}]+)\\}|:(?<colon>[a-zA-Z_]\\w*)', 'g');
|
|
43
|
+
/**
|
|
44
|
+
* Check if a URL path contains path parameter placeholders.
|
|
45
|
+
*
|
|
46
|
+
* Detects both brace-style (`{param}`) and colon-style (`:param`) parameters,
|
|
47
|
+
* covering all major web frameworks.
|
|
48
|
+
*
|
|
49
|
+
* @param path - URL path string (e.g., `/tasks/{id}` or `/users/:userId`).
|
|
50
|
+
* @returns True if the path contains at least one path parameter, false otherwise.
|
|
51
|
+
*/
|
|
52
|
+
export function hasPathParams(path) {
|
|
53
|
+
if (typeof path !== 'string')
|
|
54
|
+
return false;
|
|
55
|
+
return PATH_PARAM_RE.test(path);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Map an HTTP method to its semantic verb.
|
|
59
|
+
*
|
|
60
|
+
* GET is contextual: collection routes (no path params) map to `"list"`,
|
|
61
|
+
* single-resource routes (with path params) map to `"get"`. All other
|
|
62
|
+
* methods have a static mapping. Unknown methods fall through to
|
|
63
|
+
* the lowercase form of the input.
|
|
64
|
+
*
|
|
65
|
+
* @param method - HTTP method string (case-insensitive).
|
|
66
|
+
* @param pathHasParams - True if the corresponding route has path parameters.
|
|
67
|
+
* @returns Semantic verb string (e.g., `"create"`, `"list"`, `"get"`).
|
|
68
|
+
*/
|
|
69
|
+
import { PROTO_DENY as _PROTO_DENY } from './safe-keys.js';
|
|
70
|
+
export function resolveHttpVerb(method, pathHasParams) {
|
|
71
|
+
if (typeof method !== 'string')
|
|
72
|
+
return 'unknown';
|
|
73
|
+
const methodUpper = method.toUpperCase();
|
|
74
|
+
if (methodUpper === 'GET') {
|
|
75
|
+
const key = pathHasParams ? 'GET_ID' : 'GET';
|
|
76
|
+
return Object.hasOwn(SCANNER_VERB_MAP, key) ? SCANNER_VERB_MAP[key] : method.toLowerCase();
|
|
77
|
+
}
|
|
78
|
+
if (_PROTO_DENY.has(methodUpper))
|
|
79
|
+
return method.toLowerCase();
|
|
80
|
+
return Object.hasOwn(SCANNER_VERB_MAP, methodUpper) ? SCANNER_VERB_MAP[methodUpper] : method.toLowerCase();
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Generate a dot-separated suggested alias from HTTP route info.
|
|
84
|
+
*
|
|
85
|
+
* The alias is built from non-parameter path segments joined with the
|
|
86
|
+
* resolved semantic verb. The output uses snake_case preserved from the
|
|
87
|
+
* path; surface adapters apply their own naming conventions (e.g., CLI
|
|
88
|
+
* converts underscores to hyphens).
|
|
89
|
+
*
|
|
90
|
+
* The GET-vs-list disambiguation checks whether the LAST path segment
|
|
91
|
+
* is a path parameter (single-resource access) rather than whether the
|
|
92
|
+
* path contains any parameters anywhere. This correctly treats nested
|
|
93
|
+
* collection endpoints like `/orgs/{org_id}/members` as `"list"`.
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* generateSuggestedAlias('/tasks/user_data', 'POST'); // "tasks.user_data.create"
|
|
97
|
+
* generateSuggestedAlias('/tasks/user_data', 'GET'); // "tasks.user_data.list"
|
|
98
|
+
* generateSuggestedAlias('/tasks/user_data/{id}', 'GET'); // "tasks.user_data.get"
|
|
99
|
+
* generateSuggestedAlias('/tasks/user_data/{id}', 'PUT'); // "tasks.user_data.update"
|
|
100
|
+
* generateSuggestedAlias('/tasks/user_data/{id}', 'DELETE'); // "tasks.user_data.delete"
|
|
101
|
+
* generateSuggestedAlias('/orgs/{org_id}/members', 'GET'); // "orgs.members.list"
|
|
102
|
+
*
|
|
103
|
+
* @param path - URL path (e.g., `/tasks/user_data/{id}`).
|
|
104
|
+
* @param method - HTTP method (e.g., `POST`).
|
|
105
|
+
* @returns Dot-separated alias string. If the path has no non-parameter
|
|
106
|
+
* segments, returns just the semantic verb (e.g., `"list"`).
|
|
107
|
+
*/
|
|
108
|
+
/**
|
|
109
|
+
* Return the set of parameter *names* declared in a URL path.
|
|
110
|
+
*
|
|
111
|
+
* Recognises both brace-style (`/users/{id}`) and colon-style
|
|
112
|
+
* (`/users/:id`) placeholders, so the output is consistent across
|
|
113
|
+
* frameworks that use different conventions.
|
|
114
|
+
*
|
|
115
|
+
* @param path - URL path string.
|
|
116
|
+
* @returns Set of parameter names with the surrounding punctuation stripped
|
|
117
|
+
* (e.g., `new Set(["id", "org_id"])`).
|
|
118
|
+
*/
|
|
119
|
+
export function extractPathParamNames(path) {
|
|
120
|
+
const names = new Set();
|
|
121
|
+
if (typeof path !== 'string')
|
|
122
|
+
return names;
|
|
123
|
+
PATH_PARAM_NAMED_RE.lastIndex = 0;
|
|
124
|
+
for (const match of path.matchAll(PATH_PARAM_NAMED_RE)) {
|
|
125
|
+
const name = match.groups?.brace ?? match.groups?.colon;
|
|
126
|
+
if (name)
|
|
127
|
+
names.add(name);
|
|
128
|
+
}
|
|
129
|
+
return names;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Substitute `{name}` and `:name` placeholders with `values[name]`.
|
|
133
|
+
*
|
|
134
|
+
* Keys in `values` that do not appear as placeholders are ignored. A
|
|
135
|
+
* placeholder whose name is absent from `values` is left unchanged
|
|
136
|
+
* (callers can detect the leftover via {@link extractPathParamNames}).
|
|
137
|
+
*
|
|
138
|
+
* @param path - URL path with placeholders.
|
|
139
|
+
* @param values - Mapping from parameter name to substitution value.
|
|
140
|
+
* @returns Path with all matching placeholders replaced.
|
|
141
|
+
*/
|
|
142
|
+
export function substitutePathParams(path, values) {
|
|
143
|
+
if (typeof path !== 'string')
|
|
144
|
+
return path;
|
|
145
|
+
PATH_PARAM_NAMED_RE.lastIndex = 0;
|
|
146
|
+
const parts = [];
|
|
147
|
+
let lastIndex = 0;
|
|
148
|
+
for (const match of path.matchAll(PATH_PARAM_NAMED_RE)) {
|
|
149
|
+
const matchIndex = match.index ?? 0;
|
|
150
|
+
const whole = match[0];
|
|
151
|
+
const name = match.groups?.brace ?? match.groups?.colon;
|
|
152
|
+
parts.push(path.slice(lastIndex, matchIndex));
|
|
153
|
+
if (name && Object.prototype.hasOwnProperty.call(values, name)) {
|
|
154
|
+
parts.push(String(values[name]));
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
parts.push(whole);
|
|
158
|
+
}
|
|
159
|
+
lastIndex = matchIndex + whole.length;
|
|
160
|
+
}
|
|
161
|
+
parts.push(path.slice(lastIndex));
|
|
162
|
+
return parts.join('');
|
|
163
|
+
}
|
|
164
|
+
export function generateSuggestedAlias(path, method) {
|
|
165
|
+
if (typeof path !== 'string')
|
|
166
|
+
return 'unknown';
|
|
167
|
+
if (typeof method !== 'string')
|
|
168
|
+
return 'unknown';
|
|
169
|
+
const rawSegments = path
|
|
170
|
+
.replace(/^\/+/, '')
|
|
171
|
+
.replace(/\/+$/, '')
|
|
172
|
+
.split('/')
|
|
173
|
+
.filter((seg) => seg.length > 0);
|
|
174
|
+
const segments = rawSegments.filter((seg) => !PATH_PARAM_FULL_RE.test(seg));
|
|
175
|
+
const isSingleResource = rawSegments.length > 0 && PATH_PARAM_FULL_RE.test(rawSegments[rawSegments.length - 1]);
|
|
176
|
+
const verb = resolveHttpVerb(method, isSingleResource);
|
|
177
|
+
return [...segments, verb].join('.');
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=http-verb-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-verb-map.js","sourceRoot":"","sources":["../src/http-verb-map.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,23 +1,26 @@
|
|
|
1
1
|
export type { ScannedModule } from './types.js';
|
|
2
2
|
export { createScannedModule, cloneModule } from './types.js';
|
|
3
3
|
export { BaseScanner } from './scanner.js';
|
|
4
|
+
export { SCANNER_VERB_MAP, hasPathParams, resolveHttpVerb, generateSuggestedAlias, extractPathParamNames, substitutePathParams, } from './http-verb-map.js';
|
|
4
5
|
export { enrichSchemaDescriptions } from './schema-utils.js';
|
|
5
6
|
export { resolveRef, resolveSchema, deepResolveRefs, extractInputSchema, extractOutputSchema, } from './openapi.js';
|
|
6
7
|
export { annotationsToDict, moduleToDict, modulesToDicts, } from './serializers.js';
|
|
7
8
|
export { resolveTarget } from './resolve-target.js';
|
|
8
9
|
export { toMarkdown } from './formatting/index.js';
|
|
9
|
-
export { flattenParams } from './flatten-params.js';
|
|
10
10
|
export { AIEnhancer } from './ai-enhancer.js';
|
|
11
11
|
export type { AIEnhancerOptions, Enhancer } from './ai-enhancer.js';
|
|
12
|
-
export { DisplayResolver } from './display
|
|
13
|
-
export type { DisplayResolveOptions, DisplayMetadata, SurfaceDisplay, } from './display
|
|
12
|
+
export { DisplayResolver } from './display/resolver.js';
|
|
13
|
+
export type { DisplayResolveOptions, DisplayMetadata, SurfaceDisplay, } from './display/resolver.js';
|
|
14
|
+
export { BindingLoader, BindingLoadError } from './binding-loader.js';
|
|
15
|
+
export type { BindingLoadOptions } from './binding-loader.js';
|
|
14
16
|
export { YAMLWriter } from './output/yaml-writer.js';
|
|
15
17
|
export { TypeScriptWriter } from './output/typescript-writer.js';
|
|
16
18
|
export { RegistryWriter } from './output/registry-writer.js';
|
|
19
|
+
export { HTTPProxyRegistryWriter, HTTPProxyWriterError, } from './output/http-proxy-writer.js';
|
|
20
|
+
export type { HTTPProxyRegistryWriterOptions, ProxyRegistry, } from './output/http-proxy-writer.js';
|
|
17
21
|
export { getWriter } from './output/factory.js';
|
|
18
22
|
export type { WriteResult, VerifyResult, Verifier } from './output/types.js';
|
|
19
|
-
export {
|
|
20
|
-
export { WriteError } from './output/errors.js';
|
|
23
|
+
export { WriteError, InvalidFormatError } from './output/errors.js';
|
|
21
24
|
export { YAMLVerifier, SyntaxVerifier, RegistryVerifier, MagicBytesVerifier, JSONVerifier, runVerifierChain, } from './output/verifiers.js';
|
|
22
25
|
export declare const VERSION: string;
|
|
23
26
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAU9D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACL,UAAU,EACV,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EACV,qBAAqB,EACrB,eAAe,EACf,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACtE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,8BAA8B,EAC9B,aAAa,GACd,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAK/B,eAAO,MAAM,OAAO,EAAE,MAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
export { createScannedModule, cloneModule } from './types.js';
|
|
2
|
+
// Tri-language parity note
|
|
3
|
+
// ------------------------
|
|
4
|
+
// The Python SDK exports `ConventionScanner`, a pydantic-specific scanner that
|
|
5
|
+
// walks `BaseModel` subclasses for endpoint metadata. It is intentionally
|
|
6
|
+
// Python-only: the pydantic conventions it relies on do not have TypeScript
|
|
7
|
+
// equivalents. Rust mirrors this decision (see
|
|
8
|
+
// apcore-toolkit-rust/src/scanner.rs for the same note).
|
|
2
9
|
export { BaseScanner } from './scanner.js';
|
|
10
|
+
export { SCANNER_VERB_MAP, hasPathParams, resolveHttpVerb, generateSuggestedAlias, extractPathParamNames, substitutePathParams, } from './http-verb-map.js';
|
|
3
11
|
export { enrichSchemaDescriptions } from './schema-utils.js';
|
|
4
12
|
export { resolveRef, resolveSchema, deepResolveRefs, extractInputSchema, extractOutputSchema, } from './openapi.js';
|
|
5
13
|
export { annotationsToDict, moduleToDict, modulesToDicts, } from './serializers.js';
|
|
6
14
|
export { resolveTarget } from './resolve-target.js';
|
|
7
15
|
export { toMarkdown } from './formatting/index.js';
|
|
8
|
-
export { flattenParams } from './flatten-params.js';
|
|
9
16
|
export { AIEnhancer } from './ai-enhancer.js';
|
|
10
|
-
export { DisplayResolver } from './display
|
|
17
|
+
export { DisplayResolver } from './display/resolver.js';
|
|
18
|
+
export { BindingLoader, BindingLoadError } from './binding-loader.js';
|
|
11
19
|
export { YAMLWriter } from './output/yaml-writer.js';
|
|
12
20
|
export { TypeScriptWriter } from './output/typescript-writer.js';
|
|
13
21
|
export { RegistryWriter } from './output/registry-writer.js';
|
|
22
|
+
export { HTTPProxyRegistryWriter, HTTPProxyWriterError, } from './output/http-proxy-writer.js';
|
|
14
23
|
export { getWriter } from './output/factory.js';
|
|
15
|
-
export {
|
|
16
|
-
export { WriteError } from './output/errors.js';
|
|
24
|
+
export { WriteError, InvalidFormatError } from './output/errors.js';
|
|
17
25
|
export { YAMLVerifier, SyntaxVerifier, RegistryVerifier, MagicBytesVerifier, JSONVerifier, runVerifierChain, } from './output/verifiers.js';
|
|
18
26
|
import { createRequire } from 'node:module';
|
|
19
27
|
const _require = createRequire(import.meta.url);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,2BAA2B;AAC3B,2BAA2B;AAC3B,+EAA+E;AAC/E,0EAA0E;AAC1E,4EAA4E;AAC5E,+CAA+C;AAC/C,yDAAyD;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACL,UAAU,EACV,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAMxD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AAKvC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,iBAAiB,CAAwB,CAAC;AAChE,MAAM,CAAC,MAAM,OAAO,GAAW,IAAI,CAAC,OAAO,CAAC"}
|
package/dist/openapi.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgBzB;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,KAAK,SAAI,GACR,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuDzB;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAW,GAChD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0DzB;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAW,GAChD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0BzB"}
|
package/dist/openapi.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
// OpenAPI schema extraction utilities
|
|
2
|
+
import { PROTO_DENY as PROTO_DENY_LIST } from './safe-keys.js';
|
|
2
3
|
export function resolveRef(refString, openapiDoc) {
|
|
3
4
|
if (!refString.startsWith("#/")) {
|
|
4
5
|
return {};
|
|
5
6
|
}
|
|
6
|
-
const parts = refString.slice(2).split("/");
|
|
7
|
+
const parts = refString.slice(2).split("/").map((p) => p.replace(/~1/g, "/").replace(/~0/g, "~"));
|
|
7
8
|
let current = openapiDoc;
|
|
8
9
|
for (const part of parts) {
|
|
10
|
+
if (PROTO_DENY_LIST.has(part))
|
|
11
|
+
return {};
|
|
9
12
|
if (typeof current !== "object" || current === null || Array.isArray(current)) {
|
|
10
13
|
return {};
|
|
11
14
|
}
|
|
@@ -17,7 +20,10 @@ export function resolveRef(refString, openapiDoc) {
|
|
|
17
20
|
}
|
|
18
21
|
export function resolveSchema(schema, openapiDoc) {
|
|
19
22
|
if (openapiDoc && "$ref" in schema) {
|
|
20
|
-
|
|
23
|
+
const ref = schema["$ref"];
|
|
24
|
+
if (typeof ref !== 'string')
|
|
25
|
+
return schema;
|
|
26
|
+
return resolveRef(ref, openapiDoc);
|
|
21
27
|
}
|
|
22
28
|
return schema;
|
|
23
29
|
}
|
|
@@ -29,17 +35,23 @@ export function resolveSchema(schema, openapiDoc) {
|
|
|
29
35
|
*/
|
|
30
36
|
export function deepResolveRefs(schema, openapiDoc, depth = 0) {
|
|
31
37
|
if (depth > 16) {
|
|
38
|
+
console.warn('deepResolveRefs: max depth reached; returning schema as-is');
|
|
32
39
|
return schema;
|
|
33
40
|
}
|
|
34
41
|
if ("$ref" in schema) {
|
|
35
|
-
const
|
|
42
|
+
const ref = schema["$ref"];
|
|
43
|
+
if (typeof ref !== 'string')
|
|
44
|
+
return schema;
|
|
45
|
+
const resolved = resolveRef(ref, openapiDoc);
|
|
36
46
|
return deepResolveRefs(resolved, openapiDoc, depth + 1);
|
|
37
47
|
}
|
|
38
48
|
const result = { ...schema };
|
|
39
49
|
// Resolve inside allOf/anyOf/oneOf
|
|
40
50
|
for (const key of ["allOf", "anyOf", "oneOf"]) {
|
|
41
51
|
if (key in result && Array.isArray(result[key])) {
|
|
42
|
-
result[key] = result[key]
|
|
52
|
+
result[key] = result[key]
|
|
53
|
+
.filter((item) => item !== null && typeof item === 'object' && !Array.isArray(item))
|
|
54
|
+
.map((item) => deepResolveRefs(item, openapiDoc, depth + 1));
|
|
43
55
|
}
|
|
44
56
|
}
|
|
45
57
|
// Resolve array items
|
|
@@ -53,8 +65,10 @@ export function deepResolveRefs(schema, openapiDoc, depth = 0) {
|
|
|
53
65
|
typeof result["properties"] === "object" &&
|
|
54
66
|
result["properties"] !== null) {
|
|
55
67
|
const props = result["properties"];
|
|
56
|
-
const resolvedProps =
|
|
68
|
+
const resolvedProps = Object.create(null);
|
|
57
69
|
for (const [k, v] of Object.entries(props)) {
|
|
70
|
+
if (PROTO_DENY_LIST.has(k))
|
|
71
|
+
continue;
|
|
58
72
|
resolvedProps[k] = deepResolveRefs(v, openapiDoc, depth + 1);
|
|
59
73
|
}
|
|
60
74
|
result["properties"] = resolvedProps;
|
|
@@ -63,10 +77,18 @@ export function deepResolveRefs(schema, openapiDoc, depth = 0) {
|
|
|
63
77
|
}
|
|
64
78
|
export function extractInputSchema(operation, openapiDoc = null) {
|
|
65
79
|
const schema = { type: "object", properties: {}, required: [] };
|
|
66
|
-
const
|
|
80
|
+
const rawParameters = operation["parameters"] ?? [];
|
|
81
|
+
if (!Array.isArray(rawParameters)) {
|
|
82
|
+
console.warn('extractInputSchema: operation.parameters is not an array — ignoring');
|
|
83
|
+
}
|
|
84
|
+
const parameters = Array.isArray(rawParameters)
|
|
85
|
+
? rawParameters.filter((p) => typeof p === 'object' && p !== null && !Array.isArray(p))
|
|
86
|
+
: [];
|
|
67
87
|
for (const param of parameters) {
|
|
68
88
|
if (param["in"] === "query" || param["in"] === "path") {
|
|
69
89
|
const name = param["name"];
|
|
90
|
+
if (typeof name !== 'string' || PROTO_DENY_LIST.has(name))
|
|
91
|
+
continue;
|
|
70
92
|
let paramSchema = (param["schema"] ?? { type: "string" });
|
|
71
93
|
paramSchema = resolveSchema(paramSchema, openapiDoc);
|
|
72
94
|
schema.properties[name] = paramSchema;
|
|
@@ -83,8 +105,12 @@ export function extractInputSchema(operation, openapiDoc = null) {
|
|
|
83
105
|
const resolved = resolveSchema(bodySchema, openapiDoc);
|
|
84
106
|
const bodyProps = (resolved["properties"] ?? {});
|
|
85
107
|
const bodyRequired = (resolved["required"] ?? []);
|
|
86
|
-
Object.
|
|
87
|
-
|
|
108
|
+
for (const [k, v] of Object.entries(bodyProps)) {
|
|
109
|
+
if (!PROTO_DENY_LIST.has(k)) {
|
|
110
|
+
schema.properties[k] = v;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
schema.required.push(...bodyRequired.filter(r => typeof r === 'string' && !PROTO_DENY_LIST.has(r)));
|
|
88
114
|
}
|
|
89
115
|
// Recursively resolve $ref inside individual properties
|
|
90
116
|
if (openapiDoc) {
|
|
@@ -96,8 +122,9 @@ export function extractInputSchema(operation, openapiDoc = null) {
|
|
|
96
122
|
}
|
|
97
123
|
export function extractOutputSchema(operation, openapiDoc = null) {
|
|
98
124
|
const responses = (operation["responses"] ?? {});
|
|
99
|
-
|
|
100
|
-
|
|
125
|
+
const successCodes = Object.keys(responses).filter(k => /^2\d\d$/.test(k)).sort();
|
|
126
|
+
for (const statusCode of successCodes) {
|
|
127
|
+
const response = responses[statusCode];
|
|
101
128
|
const content = (response["content"] ?? {});
|
|
102
129
|
const jsonContent = (content["application/json"] ?? {});
|
|
103
130
|
if ("schema" in jsonContent) {
|