mcp4openapi 0.2.1 → 0.2.3
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 +3 -1
- package/dist/src/composite-executor.d.ts.map +1 -1
- package/dist/src/composite-executor.js +10 -1
- package/dist/src/composite-executor.js.map +1 -1
- package/dist/src/generated-schemas.d.ts +40 -0
- package/dist/src/generated-schemas.d.ts.map +1 -1
- package/dist/src/generated-schemas.js +2 -1
- package/dist/src/generated-schemas.js.map +1 -1
- package/dist/src/http-transport.d.ts.map +1 -1
- package/dist/src/http-transport.js +14 -1
- package/dist/src/http-transport.js.map +1 -1
- package/dist/src/interceptors.d.ts.map +1 -1
- package/dist/src/interceptors.js +2 -24
- package/dist/src/interceptors.js.map +1 -1
- package/dist/src/logger.d.ts +0 -15
- package/dist/src/logger.d.ts.map +1 -1
- package/dist/src/logger.js +9 -92
- package/dist/src/logger.js.map +1 -1
- package/dist/src/mcp-server.d.ts +5 -0
- package/dist/src/mcp-server.d.ts.map +1 -1
- package/dist/src/mcp-server.js +40 -1
- package/dist/src/mcp-server.js.map +1 -1
- package/dist/src/oauth-provider.d.ts +5 -0
- package/dist/src/oauth-provider.d.ts.map +1 -1
- package/dist/src/oauth-provider.js +38 -0
- package/dist/src/oauth-provider.js.map +1 -1
- package/dist/src/openapi-parser.d.ts +5 -0
- package/dist/src/openapi-parser.d.ts.map +1 -1
- package/dist/src/openapi-parser.js +87 -3
- package/dist/src/openapi-parser.js.map +1 -1
- package/dist/src/types/profile.d.ts +10 -0
- package/dist/src/types/profile.d.ts.map +1 -1
- package/dist/src/validation-utils.d.ts +22 -0
- package/dist/src/validation-utils.d.ts.map +1 -1
- package/dist/src/validation-utils.js +74 -0
- package/dist/src/validation-utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,6 +5,80 @@
|
|
|
5
5
|
* Centralizes validation logic and ensures consistency across the application
|
|
6
6
|
*/
|
|
7
7
|
import escapeHtml from 'escape-html';
|
|
8
|
+
/** Property names that must never be used as dynamic object keys */
|
|
9
|
+
const FORBIDDEN_PROPERTY_NAMES = new Set([
|
|
10
|
+
'__proto__',
|
|
11
|
+
'constructor',
|
|
12
|
+
'prototype',
|
|
13
|
+
'__defineGetter__',
|
|
14
|
+
'__defineSetter__',
|
|
15
|
+
'__lookupGetter__',
|
|
16
|
+
'__lookupSetter__',
|
|
17
|
+
'hasOwnProperty',
|
|
18
|
+
'isPrototypeOf',
|
|
19
|
+
'propertyIsEnumerable',
|
|
20
|
+
'toLocaleString',
|
|
21
|
+
'toString',
|
|
22
|
+
'valueOf',
|
|
23
|
+
]);
|
|
24
|
+
/**
|
|
25
|
+
* Validates that a property name is safe to use as dynamic object key.
|
|
26
|
+
* Prevents prototype pollution attacks.
|
|
27
|
+
*/
|
|
28
|
+
export function isSafePropertyName(name) {
|
|
29
|
+
return !FORBIDDEN_PROPERTY_NAMES.has(name);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Escape special regex characters in a string.
|
|
33
|
+
* Prevents ReDoS attacks when using dynamic strings in RegExp.
|
|
34
|
+
*/
|
|
35
|
+
export function escapeRegExp(str) {
|
|
36
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Redact specific header from headers object (case-insensitive)
|
|
40
|
+
*/
|
|
41
|
+
export function redactHeader(headers, headerName) {
|
|
42
|
+
if (!headers || typeof headers !== 'object')
|
|
43
|
+
return {};
|
|
44
|
+
const redacted = { ...headers };
|
|
45
|
+
for (const key of Object.keys(redacted)) {
|
|
46
|
+
if (key.toLowerCase() === headerName.toLowerCase()) {
|
|
47
|
+
redacted[key] = '[REDACTED]';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return redacted;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Redact query parameter from URL string
|
|
54
|
+
*/
|
|
55
|
+
export function redactQueryParam(url, paramName) {
|
|
56
|
+
if (!url)
|
|
57
|
+
return '';
|
|
58
|
+
try {
|
|
59
|
+
const urlObj = new URL(url);
|
|
60
|
+
if (urlObj.searchParams.has(paramName)) {
|
|
61
|
+
urlObj.searchParams.set(paramName, '[REDACTED]');
|
|
62
|
+
}
|
|
63
|
+
return urlObj.toString();
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
const regex = new RegExp(`([?&]${escapeRegExp(paramName)}=)[^&]+`, 'gi');
|
|
67
|
+
return url.replace(regex, `$1[REDACTED]`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Redact parameter from params object
|
|
72
|
+
*/
|
|
73
|
+
export function redactParam(params, paramName) {
|
|
74
|
+
if (!params || typeof params !== 'object')
|
|
75
|
+
return {};
|
|
76
|
+
const redacted = { ...params };
|
|
77
|
+
if (paramName in redacted) {
|
|
78
|
+
redacted[paramName] = '[REDACTED]';
|
|
79
|
+
}
|
|
80
|
+
return redacted;
|
|
81
|
+
}
|
|
8
82
|
/**
|
|
9
83
|
* Validates if a string is a valid email address
|
|
10
84
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-utils.js","sourceRoot":"","sources":["../../src/validation-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,UAAU,MAAM,aAAa,CAAC;AAErC;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAO,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,GAA8B;IAC3D,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC"}
|
|
1
|
+
{"version":3,"file":"validation-utils.js","sourceRoot":"","sources":["../../src/validation-utils.ts"],"names":[],"mappings":"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"}
|