@j0hanz/fetch-url-mcp 1.12.6 → 1.12.7
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/dist/http/auth.d.ts.map +1 -1
- package/dist/http/auth.js +12 -12
- package/dist/http/helpers.d.ts +1 -1
- package/dist/http/helpers.d.ts.map +1 -1
- package/dist/http/helpers.js +8 -10
- package/dist/http/native.d.ts.map +1 -1
- package/dist/http/native.js +32 -53
- package/dist/http/rate-limit.d.ts.map +1 -1
- package/dist/http/rate-limit.js +3 -3
- package/dist/index.js +3 -3
- package/dist/lib/core.d.ts.map +1 -1
- package/dist/lib/core.js +8 -8
- package/dist/lib/error-codes.d.ts +12 -10
- package/dist/lib/error-codes.d.ts.map +1 -1
- package/dist/lib/error-codes.js +12 -15
- package/dist/lib/error-messages.d.ts.map +1 -1
- package/dist/lib/error-messages.js +12 -12
- package/dist/lib/fetch-pipeline.d.ts.map +1 -1
- package/dist/lib/fetch-pipeline.js +5 -5
- package/dist/lib/http.d.ts.map +1 -1
- package/dist/lib/http.js +9 -9
- package/dist/lib/logger-names.d.ts +12 -10
- package/dist/lib/logger-names.d.ts.map +1 -1
- package/dist/lib/logger-names.js +12 -10
- package/dist/lib/mcp-interop.d.ts +1 -0
- package/dist/lib/mcp-interop.d.ts.map +1 -1
- package/dist/lib/mcp-interop.js +15 -5
- package/dist/lib/tool-errors.d.ts.map +1 -1
- package/dist/lib/tool-errors.js +22 -21
- package/dist/lib/url.d.ts +1 -1
- package/dist/lib/url.d.ts.map +1 -1
- package/dist/lib/url.js +5 -5
- package/dist/lib/utils.d.ts +1 -0
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +8 -5
- package/dist/resources/index.js +3 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +6 -6
- package/dist/tasks/execution.js +9 -9
- package/dist/tasks/handlers.js +7 -7
- package/dist/tasks/manager.d.ts.map +1 -1
- package/dist/tasks/manager.js +9 -9
- package/dist/tools/fetch-url.d.ts.map +1 -1
- package/dist/tools/fetch-url.js +10 -25
- package/dist/transform/dom-prep.d.ts.map +1 -1
- package/dist/transform/dom-prep.js +7 -7
- package/dist/transform/transform.d.ts.map +1 -1
- package/dist/transform/transform.js +18 -17
- package/dist/transform/worker-pool.js +11 -11
- package/package.json +1 -1
package/dist/lib/error-codes.js
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
export const QUEUE_FULL = 'queue_full';
|
|
14
|
-
// Validation
|
|
15
|
-
export const VALIDATION_ERROR = 'VALIDATION_ERROR';
|
|
1
|
+
export const SystemErrors = {
|
|
2
|
+
EBLOCKED: 'EBLOCKED',
|
|
3
|
+
ETIMEOUT: 'ETIMEOUT',
|
|
4
|
+
EINVAL: 'EINVAL',
|
|
5
|
+
ENODATA: 'ENODATA',
|
|
6
|
+
EBADREDIRECT: 'EBADREDIRECT',
|
|
7
|
+
EUNSUPPORTEDPROTOCOL: 'EUNSUPPORTEDPROTOCOL',
|
|
8
|
+
FETCH_ERROR: 'FETCH_ERROR',
|
|
9
|
+
ABORTED: 'ABORTED',
|
|
10
|
+
QUEUE_FULL: 'queue_full',
|
|
11
|
+
VALIDATION_ERROR: 'VALIDATION_ERROR',
|
|
12
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-messages.d.ts","sourceRoot":"","sources":["../../src/lib/error-messages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"error-messages.d.ts","sourceRoot":"","sources":["../../src/lib/error-messages.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAIxC,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,gBAAgB,GAAG,SAAS,GACnC,UAAU,CAUZ;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAM7D;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAM7E;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAM5D;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAM9D;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAMtE;AAED,wBAAgB,oBAAoB,IAAI,UAAU,CAMjD;AAED,wBAAgB,eAAe,IAAI,UAAU,CAG5C;AAID,wBAAgB,oBAAoB,IAAI,UAAU,CAMjD;AAED,wBAAgB,wBAAwB,IAAI,UAAU,CAMrD;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAMrE"}
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SystemErrors } from './error-codes.js';
|
|
2
2
|
import { CodedError } from './utils.js';
|
|
3
3
|
// ── DNS / Network ──────────────────────────────────────────────────
|
|
4
4
|
export function blockedIpError(target, reason) {
|
|
5
5
|
const detail = reason === 'cloud-metadata'
|
|
6
6
|
? 'Cloud metadata endpoints are not allowed'
|
|
7
7
|
: 'Private IPs are not allowed';
|
|
8
|
-
const error = new CodedError(`Blocked IP range: ${target}. ${detail}`, EBLOCKED);
|
|
8
|
+
const error = new CodedError(`Blocked IP range: ${target}. ${detail}`, SystemErrors.EBLOCKED);
|
|
9
9
|
return error;
|
|
10
10
|
}
|
|
11
11
|
export function blockedHostError(hostname) {
|
|
12
|
-
const error = new CodedError(`Blocked host: ${hostname}. Internal hosts are not allowed`, EBLOCKED);
|
|
12
|
+
const error = new CodedError(`Blocked host: ${hostname}. Internal hosts are not allowed`, SystemErrors.EBLOCKED);
|
|
13
13
|
return error;
|
|
14
14
|
}
|
|
15
15
|
export function blockedCnameError(hostname, cname) {
|
|
16
|
-
const error = new CodedError(`Blocked DNS CNAME detected for ${hostname}: ${cname}`, EBLOCKED);
|
|
16
|
+
const error = new CodedError(`Blocked DNS CNAME detected for ${hostname}: ${cname}`, SystemErrors.EBLOCKED);
|
|
17
17
|
return error;
|
|
18
18
|
}
|
|
19
19
|
export function dnsTimeoutError(hostname) {
|
|
20
|
-
const error = new CodedError(`DNS lookup timed out for ${hostname}`, ETIMEOUT);
|
|
20
|
+
const error = new CodedError(`DNS lookup timed out for ${hostname}`, SystemErrors.ETIMEOUT);
|
|
21
21
|
return error;
|
|
22
22
|
}
|
|
23
23
|
export function dnsNoResultsError(hostname) {
|
|
24
|
-
const error = new CodedError(`No DNS results returned for ${hostname}`, ENODATA);
|
|
24
|
+
const error = new CodedError(`No DNS results returned for ${hostname}`, SystemErrors.ENODATA);
|
|
25
25
|
return error;
|
|
26
26
|
}
|
|
27
27
|
export function invalidAddressFamilyError(hostname) {
|
|
28
|
-
const error = new CodedError(`Invalid address family returned for ${hostname}`, EINVAL);
|
|
28
|
+
const error = new CodedError(`Invalid address family returned for ${hostname}`, SystemErrors.EINVAL);
|
|
29
29
|
return error;
|
|
30
30
|
}
|
|
31
31
|
export function invalidHostnameError() {
|
|
32
|
-
const error = new CodedError('Invalid hostname provided', EINVAL);
|
|
32
|
+
const error = new CodedError('Invalid hostname provided', SystemErrors.EINVAL);
|
|
33
33
|
return error;
|
|
34
34
|
}
|
|
35
35
|
export function invalidUrlError() {
|
|
36
|
-
const error = new CodedError('Invalid URL', EINVAL);
|
|
36
|
+
const error = new CodedError('Invalid URL', SystemErrors.EINVAL);
|
|
37
37
|
return error;
|
|
38
38
|
}
|
|
39
39
|
// ── HTTP Redirect ──────────────────────────────────────────────────
|
|
40
40
|
export function invalidRedirectError() {
|
|
41
|
-
const error = new CodedError('Invalid redirect target', EBADREDIRECT);
|
|
41
|
+
const error = new CodedError('Invalid redirect target', SystemErrors.EBADREDIRECT);
|
|
42
42
|
return error;
|
|
43
43
|
}
|
|
44
44
|
export function redirectCredentialsError() {
|
|
45
|
-
const error = new CodedError('Redirect target includes credentials', EBADREDIRECT);
|
|
45
|
+
const error = new CodedError('Redirect target includes credentials', SystemErrors.EBADREDIRECT);
|
|
46
46
|
return error;
|
|
47
47
|
}
|
|
48
48
|
export function unsupportedProtocolError(protocol) {
|
|
49
|
-
const error = new CodedError(`Unsupported redirect protocol: ${protocol}`, EUNSUPPORTEDPROTOCOL);
|
|
49
|
+
const error = new CodedError(`Unsupported redirect protocol: ${protocol}`, SystemErrors.EUNSUPPORTEDPROTOCOL);
|
|
50
50
|
return error;
|
|
51
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-pipeline.d.ts","sourceRoot":"","sources":["../../src/lib/fetch-pipeline.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAQrE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,CAAC;AAGtB,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AACD,UAAU,mBAAmB;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAmGD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAClC,MAAM,GAAG,SAAS,CAQpB;AAyBD,UAAU,oBAAoB,CAAC,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5C,SAAS,EAAE,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACxE;AACD,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC;IACR,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,cAAc,GACd,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,iBAAiB,CAAC;AAmBtB,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"fetch-pipeline.d.ts","sourceRoot":"","sources":["../../src/lib/fetch-pipeline.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAQrE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,CAAC;AAGtB,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AACD,UAAU,mBAAmB;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAmGD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAClC,MAAM,GAAG,SAAS,CAQpB;AAyBD,UAAU,oBAAoB,CAAC,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5C,SAAS,EAAE,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACxE;AACD,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC;IACR,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,cAAc,GACd,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,iBAAiB,CAAC;AAmBtB,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAqD5B;AAED,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,GAAG;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAwBF,eAAO,MAAM,iBAAiB,GAC5B,OAAO,mBAAmB,EAC1B,KAAK,MAAM,EACX,SAAS,WAAW,KACnB,OAAO,CAAC,sBAAsB,CAchC,CAAC;AAEF,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,SAAS,EAAE,CAClB,KAAK,EAAE,mBAAmB,EAC1B,aAAa,EAAE,MAAM,KAClB,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAC/D;AACD,UAAU,eAAe;IACvB,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,oBAAoB,CAAC;CAC7D;AAMD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,oBAAoB,EAC7B,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC;IACT,QAAQ,EAAE,cAAc,CAAC,sBAAsB,CAAC,CAAC;IACjD,YAAY,EAAE,mBAAmB,CAAC;CACnC,CAAC,CAyBD"}
|
|
@@ -2,7 +2,7 @@ import { transformBufferToMarkdown } from '../transform/transform.js';
|
|
|
2
2
|
import {} from '../transform/types.js';
|
|
3
3
|
import { config, logDebug } from './core.js';
|
|
4
4
|
import { fetchNormalizedUrlBuffer, normalizeUrl, transformToRawUrl, } from './http.js';
|
|
5
|
-
import {
|
|
5
|
+
import { Loggers } from './logger-names.js';
|
|
6
6
|
import { withSignal } from './utils.js';
|
|
7
7
|
export { withSignal };
|
|
8
8
|
const TRUNCATION_MARKER = '...[truncated]';
|
|
@@ -117,16 +117,16 @@ export async function executeFetchPipeline(options) {
|
|
|
117
117
|
if (resolvedUrl.transformed) {
|
|
118
118
|
logDebug('Using transformed raw content URL', {
|
|
119
119
|
original: resolvedUrl.originalUrl,
|
|
120
|
-
}, LOG_FETCH);
|
|
120
|
+
}, Loggers.LOG_FETCH);
|
|
121
121
|
}
|
|
122
122
|
options.onStage?.('fetch_remote');
|
|
123
|
-
logDebug('Fetching URL', { url: resolvedUrl.normalizedUrl }, LOG_FETCH);
|
|
123
|
+
logDebug('Fetching URL', { url: resolvedUrl.normalizedUrl }, Loggers.LOG_FETCH);
|
|
124
124
|
const { buffer, encoding, truncated, finalUrl } = await fetchNormalizedUrlBuffer(resolvedUrl.normalizedUrl, withSignal(options.signal));
|
|
125
125
|
if (finalUrl && finalUrl !== resolvedUrl.normalizedUrl) {
|
|
126
126
|
logDebug('Fetch redirected', {
|
|
127
127
|
fromUrl: resolvedUrl.normalizedUrl,
|
|
128
128
|
toUrl: finalUrl,
|
|
129
|
-
}, LOG_FETCH);
|
|
129
|
+
}, Loggers.LOG_FETCH);
|
|
130
130
|
}
|
|
131
131
|
options.onStage?.('response_ready');
|
|
132
132
|
options.onStage?.('transform_start');
|
|
@@ -178,7 +178,7 @@ export async function performSharedFetch(options, deps = {}) {
|
|
|
178
178
|
url: pipeline.finalUrl ?? pipeline.url,
|
|
179
179
|
contentSize: inlineResult.contentSize,
|
|
180
180
|
maxInlineChars: config.constants.maxInlineContentChars,
|
|
181
|
-
}, LOG_FETCH);
|
|
181
|
+
}, Loggers.LOG_FETCH);
|
|
182
182
|
}
|
|
183
183
|
return { pipeline, inlineResult };
|
|
184
184
|
}
|
package/dist/lib/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/lib/http.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,EAAmB,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/lib/http.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,EAAmB,MAAM,QAAQ,CAAC;AAmBhD,OAAO,EAOL,KAAK,eAAe,EAErB,MAAM,UAAU,CAAC;AAkxClB,UAAU,qBAAqB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAoKD,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AA6ND,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE/C;AACD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAEA;AACD,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjE;AACD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAE9D;AACD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAExD;AACD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACb,qBAAqB,CAEvB;AACD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,QAAQ,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,IAAI,CAEN;AACD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,MAAM,GACd,IAAI,CAEN;AACD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,CAE7D;AACD,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,WAAW,EACpB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CASzC;AACD,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,MAAM,CAAC,CAEjB;AACD,wBAAsB,wBAAwB,CAC5C,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC;IACT,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAED"}
|
package/dist/lib/http.js
CHANGED
|
@@ -8,9 +8,9 @@ import tls from 'node:tls';
|
|
|
8
8
|
import { createBrotliDecompress, createGunzip, createInflate } from 'node:zlib';
|
|
9
9
|
import { Agent } from 'undici';
|
|
10
10
|
import { config, getOperationId, getRequestId, logDebug, logError, logWarn, redactUrl, } from './core.js';
|
|
11
|
-
import {
|
|
11
|
+
import { SystemErrors } from './error-codes.js';
|
|
12
12
|
import { invalidRedirectError, redirectCredentialsError, unsupportedProtocolError, } from './error-messages.js';
|
|
13
|
-
import {
|
|
13
|
+
import { Loggers } from './logger-names.js';
|
|
14
14
|
import { isIP } from './url.js';
|
|
15
15
|
import { BLOCKED_HOST_SUFFIXES, createDnsPreflight, IpBlocker, RawUrlTransformer, SafeDnsResolver, UrlNormalizer, } from './url.js';
|
|
16
16
|
import { composeAbortSignal, FetchError, isAbortError, isError, isObject, isSystemError, toError, } from './utils.js';
|
|
@@ -325,11 +325,11 @@ function resolveErrorUrl(error, fallback) {
|
|
|
325
325
|
return typeof requestUrl === 'string' ? requestUrl : fallback;
|
|
326
326
|
}
|
|
327
327
|
const CLIENT_ERROR_CODES = new Set([
|
|
328
|
-
VALIDATION_ERROR,
|
|
329
|
-
EBADREDIRECT,
|
|
330
|
-
EBLOCKED,
|
|
331
|
-
ENODATA,
|
|
332
|
-
EINVAL,
|
|
328
|
+
SystemErrors.VALIDATION_ERROR,
|
|
329
|
+
SystemErrors.EBADREDIRECT,
|
|
330
|
+
SystemErrors.EBLOCKED,
|
|
331
|
+
SystemErrors.ENODATA,
|
|
332
|
+
SystemErrors.EINVAL,
|
|
333
333
|
]);
|
|
334
334
|
function mapAbortError(error, timeoutMs, url) {
|
|
335
335
|
return isTimeoutError(error)
|
|
@@ -338,7 +338,7 @@ function mapAbortError(error, timeoutMs, url) {
|
|
|
338
338
|
}
|
|
339
339
|
function mapSystemError(error, url) {
|
|
340
340
|
const { code, message } = error;
|
|
341
|
-
if (code ===
|
|
341
|
+
if (code === SystemErrors.ETIMEOUT) {
|
|
342
342
|
const fetchError = new FetchError(message, url, 504, { code });
|
|
343
343
|
return fetchError;
|
|
344
344
|
}
|
|
@@ -567,7 +567,7 @@ function assertSupportedContentType(contentType, url) {
|
|
|
567
567
|
if (!mediaType) {
|
|
568
568
|
logDebug('No Content-Type header; relying on binary-content detection', {
|
|
569
569
|
url: redactUrl(url),
|
|
570
|
-
}, LOG_FETCH);
|
|
570
|
+
}, Loggers.LOG_FETCH);
|
|
571
571
|
return;
|
|
572
572
|
}
|
|
573
573
|
if (!isTextLikeMediaType(mediaType)) {
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Logger names for different components of the application.
|
|
3
3
|
*/
|
|
4
|
-
export declare const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
export declare const Loggers: {
|
|
5
|
+
readonly LOG_AUTH: "auth";
|
|
6
|
+
readonly LOG_HTTP: "http";
|
|
7
|
+
readonly LOG_SESSION: "session";
|
|
8
|
+
readonly LOG_SERVER: "server";
|
|
9
|
+
readonly LOG_FETCH: "fetch";
|
|
10
|
+
readonly LOG_TRANSFORM: "transform";
|
|
11
|
+
readonly LOG_TASKS: "tasks";
|
|
12
|
+
readonly LOG_RATE_LIMIT: "rate-limit";
|
|
13
|
+
readonly LOG_MCP: "mcp";
|
|
14
|
+
readonly LOG_FETCH_URL: "fetch-url";
|
|
15
|
+
};
|
|
14
16
|
//# sourceMappingURL=logger-names.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger-names.d.ts","sourceRoot":"","sources":["../../src/lib/logger-names.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"logger-names.d.ts","sourceRoot":"","sources":["../../src/lib/logger-names.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;CAWV,CAAC"}
|
package/dist/lib/logger-names.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Logger names for different components of the application.
|
|
3
3
|
*/
|
|
4
|
-
export const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
export const Loggers = {
|
|
5
|
+
LOG_AUTH: 'auth',
|
|
6
|
+
LOG_HTTP: 'http',
|
|
7
|
+
LOG_SESSION: 'session',
|
|
8
|
+
LOG_SERVER: 'server',
|
|
9
|
+
LOG_FETCH: 'fetch',
|
|
10
|
+
LOG_TRANSFORM: 'transform',
|
|
11
|
+
LOG_TASKS: 'tasks',
|
|
12
|
+
LOG_RATE_LIMIT: 'rate-limit',
|
|
13
|
+
LOG_MCP: 'mcp',
|
|
14
|
+
LOG_FETCH_URL: 'fetch-url',
|
|
15
|
+
};
|
|
@@ -111,5 +111,6 @@ export interface ProgressReporter {
|
|
|
111
111
|
report: (progress: number, message: string, total?: number) => void;
|
|
112
112
|
}
|
|
113
113
|
export declare const createProgressReporter: (extra?: ToolHandlerExtra) => ProgressReporter;
|
|
114
|
+
export declare function validateOrThrow<T>(schema: z.ZodType<T>, data: unknown, errorCode: number, msg: string, logger: string): T;
|
|
114
115
|
export {};
|
|
115
116
|
//# sourceMappingURL=mcp-interop.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-interop.d.ts","sourceRoot":"","sources":["../../src/lib/mcp-interop.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-interop.d.ts","sourceRoot":"","sources":["../../src/lib/mcp-interop.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/mcp-interop.js
CHANGED
|
@@ -3,8 +3,9 @@ import { ListToolsRequestSchema, ListToolsResultSchema, } from '@modelcontextpro
|
|
|
3
3
|
import { McpError } from '@modelcontextprotocol/sdk/types.js';
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { logError, logWarn } from './core.js';
|
|
6
|
-
import {
|
|
6
|
+
import { Loggers } from './logger-names.js';
|
|
7
7
|
import { getErrorMessage, isObject } from './utils.js';
|
|
8
|
+
import { formatZodError } from './zod.js';
|
|
8
9
|
export function createMcpError(code, message, data) {
|
|
9
10
|
const error = new McpError(code, message, data);
|
|
10
11
|
error.message = message;
|
|
@@ -98,7 +99,7 @@ function drainServerCleanupCallbacks(server) {
|
|
|
98
99
|
callback();
|
|
99
100
|
}
|
|
100
101
|
catch (error) {
|
|
101
|
-
logWarn('Server cleanup callback failed', { error }, LOG_MCP);
|
|
102
|
+
logWarn('Server cleanup callback failed', { error }, Loggers.LOG_MCP);
|
|
102
103
|
}
|
|
103
104
|
}
|
|
104
105
|
}
|
|
@@ -274,7 +275,7 @@ class ToolProgressReporter {
|
|
|
274
275
|
error: getErrorMessage(error),
|
|
275
276
|
progress: effectiveProgress,
|
|
276
277
|
message,
|
|
277
|
-
}, LOG_MCP);
|
|
278
|
+
}, Loggers.LOG_MCP);
|
|
278
279
|
}
|
|
279
280
|
}
|
|
280
281
|
if (!isIncreasing || this.token === null || !this.handlers.send)
|
|
@@ -336,7 +337,7 @@ class ToolProgressReporter {
|
|
|
336
337
|
logWarn('Progress notification timed out', {
|
|
337
338
|
progress: notification.params.progress,
|
|
338
339
|
message: notification.params.message,
|
|
339
|
-
}, LOG_MCP);
|
|
340
|
+
}, Loggers.LOG_MCP);
|
|
340
341
|
}
|
|
341
342
|
}
|
|
342
343
|
catch (error) {
|
|
@@ -344,7 +345,7 @@ class ToolProgressReporter {
|
|
|
344
345
|
error: getErrorMessage(error),
|
|
345
346
|
progress: notification.params.progress,
|
|
346
347
|
message: notification.params.message,
|
|
347
|
-
}, LOG_MCP);
|
|
348
|
+
}, Loggers.LOG_MCP);
|
|
348
349
|
}
|
|
349
350
|
}
|
|
350
351
|
createProgressNotification(params) {
|
|
@@ -365,3 +366,12 @@ class ToolProgressReporter {
|
|
|
365
366
|
}
|
|
366
367
|
}
|
|
367
368
|
export const createProgressReporter = (extra) => ToolProgressReporter.create(extra);
|
|
369
|
+
export function validateOrThrow(schema, data, errorCode, msg, logger) {
|
|
370
|
+
const result = schema.safeParse(data);
|
|
371
|
+
if (!result.success) {
|
|
372
|
+
const issues = formatZodError(result.error);
|
|
373
|
+
logWarn(`Zod validation failed: ${msg}`, { issues }, logger);
|
|
374
|
+
throw createMcpError(errorCode, msg, { issues });
|
|
375
|
+
}
|
|
376
|
+
return result.data;
|
|
377
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-errors.d.ts","sourceRoot":"","sources":["../../src/lib/tool-errors.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"tool-errors.d.ts","sourceRoot":"","sources":["../../src/lib/tool-errors.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGpB,MAAM,oCAAoC,CAAC;AAO5C,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG;IAC/C,OAAO,EAAE,IAAI,CAAC;CACf,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAiB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAuDD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE;IACN,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GACA,iBAAiB,CAOnB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE;IACN,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GACA,gBAAgB,CAgBlB;AAiBD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,GACb,gBAAgB,GAAG,SAAS,CA2B9B;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE1E;AA0JD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,EACX,eAAe,SAAqB,GACnC,iBAAiB,CAInB;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,gBAAgB,EACtB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,GACtB,iBAAiB,CA0CnB"}
|
package/dist/lib/tool-errors.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { McpError, } from '@modelcontextprotocol/sdk/types.js';
|
|
1
|
+
import { ErrorCode, McpError, } from '@modelcontextprotocol/sdk/types.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { logError, logWarn } from './core.js';
|
|
4
|
-
import {
|
|
4
|
+
import { SystemErrors } from './error-codes.js';
|
|
5
5
|
import { FetchError, isAbortError, isObject, isSystemError } from './utils.js';
|
|
6
6
|
const toolErrorPayloadSchema = z.strictObject({
|
|
7
7
|
error: z.string(),
|
|
@@ -13,7 +13,11 @@ const toolErrorPayloadSchema = z.strictObject({
|
|
|
13
13
|
details: z.record(z.string(), z.unknown()).optional(),
|
|
14
14
|
data: z.unknown().optional(),
|
|
15
15
|
});
|
|
16
|
-
const PUBLIC_ERROR_REASONS = new Set([
|
|
16
|
+
const PUBLIC_ERROR_REASONS = new Set([
|
|
17
|
+
'aborted',
|
|
18
|
+
SystemErrors.QUEUE_FULL,
|
|
19
|
+
'timeout',
|
|
20
|
+
]);
|
|
17
21
|
function sanitizeToolErrorDetails(details) {
|
|
18
22
|
const sanitized = {};
|
|
19
23
|
const { retryAfter, timeout, reason } = details;
|
|
@@ -118,22 +122,14 @@ function renderToolErrorResponse(presentation) {
|
|
|
118
122
|
function isValidationError(error) {
|
|
119
123
|
return (error instanceof Error &&
|
|
120
124
|
isSystemError(error) &&
|
|
121
|
-
error.code === VALIDATION_ERROR);
|
|
122
|
-
}
|
|
123
|
-
function extractHttpStatusText(message, statusCode) {
|
|
124
|
-
const prefix = `HTTP ${statusCode}:`;
|
|
125
|
-
if (!message.startsWith(prefix))
|
|
126
|
-
return '';
|
|
127
|
-
return message.slice(prefix.length).trim();
|
|
125
|
+
error.code === SystemErrors.VALIDATION_ERROR);
|
|
128
126
|
}
|
|
129
127
|
function buildUpstreamHttpMessage(error) {
|
|
130
128
|
const { statusCode } = error;
|
|
131
|
-
const statusText = extractHttpStatusText(error.message, statusCode);
|
|
132
|
-
const suffix = statusText ? ` ${statusText}` : '';
|
|
133
129
|
if (statusCode === 404) {
|
|
134
|
-
return `
|
|
130
|
+
return `We couldn't find the resource at the target URL.`;
|
|
135
131
|
}
|
|
136
|
-
return `
|
|
132
|
+
return `An error occurred when communicating with the target URL.`;
|
|
137
133
|
}
|
|
138
134
|
function mapFetchToolError(error, fallbackUrl) {
|
|
139
135
|
const { code: detailsCode, reason } = error.details;
|
|
@@ -141,8 +137,8 @@ function mapFetchToolError(error, fallbackUrl) {
|
|
|
141
137
|
if (typeof detailsCode === 'string') {
|
|
142
138
|
code = detailsCode;
|
|
143
139
|
}
|
|
144
|
-
else if (reason === QUEUE_FULL) {
|
|
145
|
-
code = QUEUE_FULL;
|
|
140
|
+
else if (reason === SystemErrors.QUEUE_FULL) {
|
|
141
|
+
code = SystemErrors.QUEUE_FULL;
|
|
146
142
|
}
|
|
147
143
|
const url = error.url || fallbackUrl;
|
|
148
144
|
const details = sanitizeToolErrorDetails(error.details);
|
|
@@ -168,7 +164,7 @@ function mapFetchToolError(error, fallbackUrl) {
|
|
|
168
164
|
...(details ? { details } : {}),
|
|
169
165
|
};
|
|
170
166
|
}
|
|
171
|
-
if (reason === QUEUE_FULL) {
|
|
167
|
+
if (reason === SystemErrors.QUEUE_FULL) {
|
|
172
168
|
return {
|
|
173
169
|
message: error.message,
|
|
174
170
|
url,
|
|
@@ -207,7 +203,7 @@ function mapGenericToolError(error, url, fallbackMessage) {
|
|
|
207
203
|
message: error.message,
|
|
208
204
|
url,
|
|
209
205
|
category: 'validation_error',
|
|
210
|
-
code: VALIDATION_ERROR,
|
|
206
|
+
code: SystemErrors.VALIDATION_ERROR,
|
|
211
207
|
};
|
|
212
208
|
}
|
|
213
209
|
const isAborted = isAbortError(error);
|
|
@@ -217,7 +213,7 @@ function mapGenericToolError(error, url, fallbackMessage) {
|
|
|
217
213
|
: `${fallbackMessage}: unknown error`,
|
|
218
214
|
url,
|
|
219
215
|
category: isAborted ? 'upstream_aborted' : 'fetch_error',
|
|
220
|
-
code: isAborted ? ABORTED : FETCH_ERROR,
|
|
216
|
+
code: isAborted ? SystemErrors.ABORTED : SystemErrors.FETCH_ERROR,
|
|
221
217
|
};
|
|
222
218
|
}
|
|
223
219
|
function resolveToolErrorPresentation(error, url, fallbackMessage) {
|
|
@@ -231,8 +227,13 @@ export function handleToolError(error, url, fallbackMessage = 'Operation failed'
|
|
|
231
227
|
}
|
|
232
228
|
export function classifyAndLogToolError(error, meta, loggerName, toolName, fallbackMessage) {
|
|
233
229
|
if (error instanceof McpError) {
|
|
234
|
-
|
|
235
|
-
|
|
230
|
+
if (error.code === ErrorCode.InvalidParams ||
|
|
231
|
+
error.code === ErrorCode.MethodNotFound) {
|
|
232
|
+
logError(`${toolName} tool protocol error`, { url: meta.url, durationMs: meta.durationMs, error }, loggerName);
|
|
233
|
+
throw error;
|
|
234
|
+
}
|
|
235
|
+
logWarn(`${toolName} tool domain error`, { url: meta.url, durationMs: meta.durationMs, error }, loggerName);
|
|
236
|
+
return handleToolError(error, meta.url, fallbackMessage);
|
|
236
237
|
}
|
|
237
238
|
if (error instanceof FetchError || isAbortError(error)) {
|
|
238
239
|
logWarn(`${toolName} request failed`, {
|
package/dist/lib/url.d.ts
CHANGED
|
@@ -48,7 +48,7 @@ export interface Logger {
|
|
|
48
48
|
warn(message: string, data?: Record<string, unknown>): void;
|
|
49
49
|
error(message: string, data?: Record<string, unknown>): void;
|
|
50
50
|
}
|
|
51
|
-
export declare const VALIDATION_ERROR_CODE
|
|
51
|
+
export declare const VALIDATION_ERROR_CODE: "VALIDATION_ERROR";
|
|
52
52
|
export declare const BLOCKED_HOST_SUFFIXES: readonly string[];
|
|
53
53
|
type SecurityConfig = typeof config.security;
|
|
54
54
|
type BlockReason = 'cloud-metadata' | 'blocked-host' | 'blocked-ip' | 'blocked-suffix';
|
package/dist/lib/url.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/lib/url.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAiB,MAAM,UAAU,CAAC;AAG1D,OAAO,EAAE,MAAM,EAAY,MAAM,WAAW,CAAC;AA0D7C,qBAAa,eAAe;IAOxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IARtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAG3B;gBAGgB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,cAAc,EACxB,mBAAmB,EAAE,SAAS,MAAM,EAAE;IAGzD,OAAO,CAAC,eAAe;IAWjB,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC;IAmDlB,OAAO,CAAC,iBAAiB;YAIX,oBAAoB;YAwBpB,YAAY;CAqC3B;AACD,KAAK,iBAAiB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAMhF,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,eAAe,GAC3B,iBAAiB,CAKnB;AACD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAc1D;AAWD,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAyChC,wBAAgB,sBAAsB,IAAI,SAAS,CAMlD;AASD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,GACZ;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAA;CAAE,GAAG,IAAI,CAiBzC;AACD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAuDD,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAE3C,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe;IAkB/C,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAW/C,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,qBAAqB;IAwB7B,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,kBAAkB;CAkB3B;AACD,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC9D;AACD,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/lib/url.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/url.js
CHANGED
|
@@ -2,9 +2,9 @@ import dns from 'node:dns';
|
|
|
2
2
|
import { BlockList, isIP, SocketAddress } from 'node:net';
|
|
3
3
|
import { domainToASCII } from 'node:url';
|
|
4
4
|
import { config, logDebug } from './core.js';
|
|
5
|
-
import {
|
|
5
|
+
import { SystemErrors } from './error-codes.js';
|
|
6
6
|
import { blockedCnameError, blockedHostError, blockedIpError, dnsNoResultsError, dnsTimeoutError, invalidAddressFamilyError, invalidHostnameError, invalidUrlError, } from './error-messages.js';
|
|
7
|
-
import {
|
|
7
|
+
import { Loggers } from './logger-names.js';
|
|
8
8
|
import { CodedError, composeAbortSignal, isError, isSystemError, } from './utils.js';
|
|
9
9
|
const DNS_LOOKUP_TIMEOUT_MS = 5000;
|
|
10
10
|
const CNAME_LOOKUP_MAX_DEPTH = 5;
|
|
@@ -129,7 +129,7 @@ export class SafeDnsResolver {
|
|
|
129
129
|
logDebug('DNS CNAME lookup failed; continuing with address lookup', {
|
|
130
130
|
hostname,
|
|
131
131
|
...(isSystemError(error) ? { code: error.code } : {}),
|
|
132
|
-
}, LOG_FETCH);
|
|
132
|
+
}, Loggers.LOG_FETCH);
|
|
133
133
|
return [];
|
|
134
134
|
}
|
|
135
135
|
}
|
|
@@ -441,9 +441,9 @@ export class RawUrlTransformer {
|
|
|
441
441
|
});
|
|
442
442
|
}
|
|
443
443
|
}
|
|
444
|
-
export const VALIDATION_ERROR_CODE = VALIDATION_ERROR;
|
|
444
|
+
export const VALIDATION_ERROR_CODE = SystemErrors.VALIDATION_ERROR;
|
|
445
445
|
function createValidationError(message) {
|
|
446
|
-
const error = new CodedError(message, VALIDATION_ERROR);
|
|
446
|
+
const error = new CodedError(message, SystemErrors.VALIDATION_ERROR);
|
|
447
447
|
return error;
|
|
448
448
|
}
|
|
449
449
|
export const BLOCKED_HOST_SUFFIXES = ['.local', '.internal'];
|
package/dist/lib/utils.d.ts
CHANGED
|
@@ -45,6 +45,7 @@ interface IntervalLoopOptions<T> {
|
|
|
45
45
|
export declare function createUnrefTimeout<T>(timeoutMs: number, value: T): CancellableTimeout<T>;
|
|
46
46
|
export declare function startAbortableIntervalLoop<T>(intervalMs: number, value: T, options: IntervalLoopOptions<T>): void;
|
|
47
47
|
export declare function isObject(value: unknown): value is Record<PropertyKey, unknown>;
|
|
48
|
+
export declare function compactContext<T extends object>(obj: T): Partial<T>;
|
|
48
49
|
export declare function isError(value: unknown): value is Error;
|
|
49
50
|
interface HtmlNode {
|
|
50
51
|
readonly tagName?: string | undefined;
|
package/dist/lib/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/utils.js
CHANGED
|
@@ -3,8 +3,8 @@ import { createHmac, timingSafeEqual } from 'node:crypto';
|
|
|
3
3
|
import { setInterval as setIntervalPromise, setTimeout as setTimeoutPromise, } from 'node:timers/promises';
|
|
4
4
|
import { inspect } from 'node:util';
|
|
5
5
|
import { config, logDebug, logWarn } from './core.js';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { SystemErrors } from './error-codes.js';
|
|
7
|
+
import { Loggers } from './logger-names.js';
|
|
8
8
|
const textEncoder = new TextEncoder();
|
|
9
9
|
const UNKNOWN_ERROR_MESSAGE = 'Unknown error';
|
|
10
10
|
export function composeAbortSignal(signal, timeoutMs) {
|
|
@@ -66,7 +66,7 @@ export class FetchError extends Error {
|
|
|
66
66
|
this.code = `HTTP_${httpStatus}`;
|
|
67
67
|
}
|
|
68
68
|
else {
|
|
69
|
-
this.code = FETCH_ERROR;
|
|
69
|
+
this.code = SystemErrors.FETCH_ERROR;
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
}
|
|
@@ -145,7 +145,7 @@ export function applyHttpServerTuning(server) {
|
|
|
145
145
|
maxConnections,
|
|
146
146
|
dropped: droppedSinceLastLog,
|
|
147
147
|
data,
|
|
148
|
-
}, LOG_HTTP);
|
|
148
|
+
}, Loggers.LOG_HTTP);
|
|
149
149
|
lastLoggedAt = now;
|
|
150
150
|
droppedSinceLastLog = 0;
|
|
151
151
|
};
|
|
@@ -156,7 +156,7 @@ export function applyHttpServerTuning(server) {
|
|
|
156
156
|
export function drainConnectionsOnShutdown(server) {
|
|
157
157
|
if (typeof server.closeIdleConnections === 'function') {
|
|
158
158
|
server.closeIdleConnections();
|
|
159
|
-
logDebug('Closed idle HTTP connections during shutdown', undefined, LOG_HTTP);
|
|
159
|
+
logDebug('Closed idle HTTP connections during shutdown', undefined, Loggers.LOG_HTTP);
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
function createAbortSafeTimeoutPromise(timeoutMs, value, signal) {
|
|
@@ -204,6 +204,9 @@ export function startAbortableIntervalLoop(intervalMs, value, options) {
|
|
|
204
204
|
export function isObject(value) {
|
|
205
205
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
206
206
|
}
|
|
207
|
+
export function compactContext(obj) {
|
|
208
|
+
return Object.fromEntries(Object.entries(obj).filter(([, v]) => v !== undefined));
|
|
209
|
+
}
|
|
207
210
|
export function isError(value) {
|
|
208
211
|
const maybeIsError = Error.isError;
|
|
209
212
|
if (typeof maybeIsError === 'function') {
|
package/dist/resources/index.js
CHANGED
|
@@ -68,10 +68,10 @@ export function buildServerInstructions() {
|
|
|
68
68
|
- Notifications: opt-in. Set \`TASKS_STATUS_NOTIFICATIONS=true\`.
|
|
69
69
|
|
|
70
70
|
# Errors
|
|
71
|
-
- VALIDATION_ERROR: invalid/blocked URL. Do not retry.
|
|
72
|
-
- FETCH_ERROR: network failure. Retry once with backoff.
|
|
71
|
+
- SystemErrors.VALIDATION_ERROR: invalid/blocked URL. Do not retry.
|
|
72
|
+
- SystemErrors.FETCH_ERROR: network failure. Retry once with backoff.
|
|
73
73
|
- HTTP_xxx: upstream error. Retry only for 5xx.
|
|
74
|
-
- ABORTED: cancelled. Retry if needed.
|
|
74
|
+
- SystemErrors.ABORTED: cancelled. Retry if needed.
|
|
75
75
|
- queue_full: worker pool busy. Wait and retry, or use task mode.`;
|
|
76
76
|
}
|
|
77
77
|
function buildTopicSchema() {
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgHpE,wBAAsB,eAAe,IAAI,OAAO,CAAC,SAAS,CAAC,CAE1D;AAkDD,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,SAAS,CAAC,CAExE;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgHpE,wBAAsB,eAAe,IAAI,OAAO,CAAC,SAAS,CAAC,CAE1D;AAkDD,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,SAAS,CAAC,CAExE;AAwHD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC;IAChD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C,CAAC,CASD"}
|