@j0hanz/fetch-url-mcp 1.11.5 → 1.11.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 +1 -1
- package/dist/http/health.js +1 -1
- package/dist/http/native.d.ts.map +1 -1
- package/dist/http/native.js +2 -6
- package/dist/lib/cache.d.ts +48 -0
- package/dist/lib/cache.d.ts.map +1 -0
- package/dist/lib/cache.js +264 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +5 -2
- package/dist/lib/core.d.ts +1 -40
- package/dist/lib/core.d.ts.map +1 -1
- package/dist/lib/core.js +2 -233
- package/dist/lib/fetch-pipeline.d.ts.map +1 -1
- package/dist/lib/fetch-pipeline.js +7 -6
- package/dist/lib/http.d.ts.map +1 -1
- package/dist/lib/http.js +2 -3
- package/dist/lib/mcp-interop.d.ts +2 -2
- package/dist/lib/mcp-interop.d.ts.map +1 -1
- package/dist/lib/mcp-interop.js +15 -13
- package/dist/lib/session.d.ts.map +1 -1
- package/dist/lib/session.js +5 -9
- package/dist/lib/url.d.ts +1 -1
- package/dist/lib/url.d.ts.map +1 -1
- package/dist/lib/url.js +67 -82
- package/dist/lib/utils.d.ts +2 -2
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +21 -12
- package/dist/lib/zod.d.ts.map +1 -1
- package/dist/lib/zod.js +11 -17
- package/dist/resources/index.d.ts +21 -0
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +47 -72
- package/dist/schemas.d.ts +1 -1
- package/dist/schemas.d.ts.map +1 -1
- package/dist/tasks/execution.d.ts.map +1 -1
- package/dist/tasks/execution.js +19 -4
- package/dist/tasks/handlers.d.ts.map +1 -1
- package/dist/tasks/handlers.js +3 -4
- package/dist/tasks/manager.d.ts.map +1 -1
- package/dist/tasks/manager.js +11 -8
- package/dist/tasks/owner.d.ts.map +1 -1
- package/dist/tasks/owner.js +4 -4
- package/dist/tasks/waiters.js +1 -1
- package/dist/tools/fetch-url.d.ts.map +1 -1
- package/dist/tools/fetch-url.js +3 -6
- package/dist/transform/html-translators.js +7 -7
- package/dist/transform/next-flight.d.ts.map +1 -1
- package/dist/transform/next-flight.js +8 -2
- package/dist/transform/transform.d.ts.map +1 -1
- package/dist/transform/transform.js +5 -7
- package/package.json +1 -1
- package/dist/lib/task-handlers.d.ts +0 -11
- package/dist/lib/task-handlers.d.ts.map +0 -1
- package/dist/lib/task-handlers.js +0 -151
package/dist/lib/core.js
CHANGED
|
@@ -1,242 +1,11 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
-
import { EventEmitter } from 'node:events';
|
|
3
2
|
import process from 'node:process';
|
|
4
3
|
import { getSystemErrorMessage, inspect, stripVTControlCharacters, } from 'node:util';
|
|
5
4
|
import {} from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
5
|
import { config } from './config.js';
|
|
7
|
-
import { getErrorMessage, isAbortError,
|
|
6
|
+
import { getErrorMessage, isAbortError, startAbortableIntervalLoop, } from './utils.js';
|
|
8
7
|
export { config, enableHttpMode, serverVersion } from './config.js';
|
|
9
|
-
|
|
10
|
-
const VARY_HASH_LENGTH = 16;
|
|
11
|
-
export function createCacheKey(namespace, url, vary) {
|
|
12
|
-
if (!namespace || !url)
|
|
13
|
-
return null;
|
|
14
|
-
const urlHash = sha256Hex(url).substring(0, PRIMARY_HASH_LENGTH);
|
|
15
|
-
if (!vary)
|
|
16
|
-
return `${namespace}:${urlHash}`;
|
|
17
|
-
const varyString = typeof vary === 'string'
|
|
18
|
-
? vary
|
|
19
|
-
: (() => {
|
|
20
|
-
try {
|
|
21
|
-
return stableJsonStringify(vary);
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
})();
|
|
27
|
-
if (varyString === null)
|
|
28
|
-
return null;
|
|
29
|
-
const varyHash = varyString
|
|
30
|
-
? sha256Hex(varyString).substring(0, VARY_HASH_LENGTH)
|
|
31
|
-
: undefined;
|
|
32
|
-
return varyHash
|
|
33
|
-
? `${namespace}:${urlHash}.${varyHash}`
|
|
34
|
-
: `${namespace}:${urlHash}`;
|
|
35
|
-
}
|
|
36
|
-
export function parseCacheKey(cacheKey) {
|
|
37
|
-
if (!cacheKey)
|
|
38
|
-
return null;
|
|
39
|
-
const separatorIndex = cacheKey.indexOf(':');
|
|
40
|
-
if (separatorIndex === -1)
|
|
41
|
-
return null;
|
|
42
|
-
const namespace = cacheKey.slice(0, separatorIndex);
|
|
43
|
-
const urlHash = cacheKey.slice(separatorIndex + 1);
|
|
44
|
-
if (!namespace || !urlHash)
|
|
45
|
-
return null;
|
|
46
|
-
return { namespace, urlHash };
|
|
47
|
-
}
|
|
48
|
-
class InMemoryCacheStore {
|
|
49
|
-
max = config.cache.maxKeys;
|
|
50
|
-
maxBytes = config.cache.maxSizeBytes;
|
|
51
|
-
ttlMs = config.cache.ttl * 1000;
|
|
52
|
-
entries = new Map();
|
|
53
|
-
updateEmitter = new EventEmitter();
|
|
54
|
-
currentBytes = 0;
|
|
55
|
-
isEnabled() {
|
|
56
|
-
return config.cache.enabled;
|
|
57
|
-
}
|
|
58
|
-
isExpired(entry, now = Date.now()) {
|
|
59
|
-
return entry.expiresAtMs <= now;
|
|
60
|
-
}
|
|
61
|
-
keys() {
|
|
62
|
-
if (!this.isEnabled())
|
|
63
|
-
return [];
|
|
64
|
-
const now = Date.now();
|
|
65
|
-
const result = [];
|
|
66
|
-
for (const [key, entry] of this.entries) {
|
|
67
|
-
if (!this.isExpired(entry, now))
|
|
68
|
-
result.push(key);
|
|
69
|
-
}
|
|
70
|
-
return result;
|
|
71
|
-
}
|
|
72
|
-
onUpdate(listener) {
|
|
73
|
-
const wrapped = (event) => {
|
|
74
|
-
try {
|
|
75
|
-
const result = listener(event);
|
|
76
|
-
if (result instanceof Promise) {
|
|
77
|
-
void result.catch((error) => {
|
|
78
|
-
this.logError('Cache update listener failed (async)', event.cacheKey, error);
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
catch (error) {
|
|
83
|
-
this.logError('Cache update listener failed', event.cacheKey, error);
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
this.updateEmitter.on('update', wrapped);
|
|
87
|
-
return () => {
|
|
88
|
-
this.updateEmitter.off('update', wrapped);
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
get(cacheKey, options) {
|
|
92
|
-
if (!cacheKey || (!this.isEnabled() && !options?.force))
|
|
93
|
-
return undefined;
|
|
94
|
-
const entry = this.entries.get(cacheKey);
|
|
95
|
-
if (!entry)
|
|
96
|
-
return undefined;
|
|
97
|
-
const now = Date.now();
|
|
98
|
-
if (this.isExpired(entry, now)) {
|
|
99
|
-
this.delete(cacheKey);
|
|
100
|
-
// listChanged=false: lazy eviction on read is silent — only writes change
|
|
101
|
-
// the list. Clients must not rely on list-changed events from reads.
|
|
102
|
-
this.notify(cacheKey, false);
|
|
103
|
-
return undefined;
|
|
104
|
-
}
|
|
105
|
-
// Refresh LRU position
|
|
106
|
-
this.entries.delete(cacheKey);
|
|
107
|
-
this.entries.set(cacheKey, entry);
|
|
108
|
-
return entry;
|
|
109
|
-
}
|
|
110
|
-
delete(cacheKey) {
|
|
111
|
-
const entry = this.entries.get(cacheKey);
|
|
112
|
-
if (entry) {
|
|
113
|
-
this.currentBytes -= entry.content.length;
|
|
114
|
-
this.entries.delete(cacheKey);
|
|
115
|
-
return true;
|
|
116
|
-
}
|
|
117
|
-
return false;
|
|
118
|
-
}
|
|
119
|
-
evictOldestEntry() {
|
|
120
|
-
const firstKey = this.entries.keys().next();
|
|
121
|
-
return !firstKey.done && this.delete(firstKey.value);
|
|
122
|
-
}
|
|
123
|
-
ensureCapacity(cacheKey, entrySize) {
|
|
124
|
-
if (entrySize > this.maxBytes) {
|
|
125
|
-
logWarn('Cache entry exceeds max size', {
|
|
126
|
-
key: cacheKey,
|
|
127
|
-
size: entrySize,
|
|
128
|
-
max: this.maxBytes,
|
|
129
|
-
});
|
|
130
|
-
return { ok: false, listChanged: false };
|
|
131
|
-
}
|
|
132
|
-
let listChanged = false;
|
|
133
|
-
while (this.currentBytes + entrySize > this.maxBytes) {
|
|
134
|
-
if (this.evictOldestEntry()) {
|
|
135
|
-
listChanged = true;
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
break;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
return { ok: true, listChanged };
|
|
142
|
-
}
|
|
143
|
-
set(cacheKey, content, metadata, options) {
|
|
144
|
-
if (!cacheKey || !content)
|
|
145
|
-
return;
|
|
146
|
-
if (!this.isEnabled() && !options?.force)
|
|
147
|
-
return;
|
|
148
|
-
const now = Date.now();
|
|
149
|
-
const expiresAtMs = now + this.ttlMs;
|
|
150
|
-
const entrySize = content.length;
|
|
151
|
-
// Reject oversized entries before deleting the old one to avoid data loss
|
|
152
|
-
if (entrySize > this.maxBytes) {
|
|
153
|
-
logWarn('Cache entry exceeds max size', {
|
|
154
|
-
key: cacheKey,
|
|
155
|
-
size: entrySize,
|
|
156
|
-
max: this.maxBytes,
|
|
157
|
-
});
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
const isUpdate = this.entries.has(cacheKey);
|
|
161
|
-
if (isUpdate) {
|
|
162
|
-
this.delete(cacheKey);
|
|
163
|
-
}
|
|
164
|
-
const capacity = this.ensureCapacity(cacheKey, entrySize);
|
|
165
|
-
if (!capacity.ok)
|
|
166
|
-
return;
|
|
167
|
-
let listChanged = !isUpdate || capacity.listChanged;
|
|
168
|
-
const entry = {
|
|
169
|
-
url: metadata.url,
|
|
170
|
-
content,
|
|
171
|
-
fetchedAt: new Date(now).toISOString(),
|
|
172
|
-
expiresAt: new Date(expiresAtMs).toISOString(),
|
|
173
|
-
expiresAtMs,
|
|
174
|
-
...(metadata.title ? { title: metadata.title } : {}),
|
|
175
|
-
};
|
|
176
|
-
this.entries.set(cacheKey, entry);
|
|
177
|
-
this.currentBytes += entrySize;
|
|
178
|
-
// Eviction (LRU: first insertion-order key) - Count based
|
|
179
|
-
if (this.entries.size > this.max && this.evictOldestEntry()) {
|
|
180
|
-
listChanged = true;
|
|
181
|
-
}
|
|
182
|
-
this.notify(cacheKey, listChanged);
|
|
183
|
-
}
|
|
184
|
-
notify(cacheKey, listChanged) {
|
|
185
|
-
if (this.updateEmitter.listenerCount('update') === 0)
|
|
186
|
-
return;
|
|
187
|
-
const parts = parseCacheKey(cacheKey);
|
|
188
|
-
if (!parts)
|
|
189
|
-
return;
|
|
190
|
-
this.updateEmitter.emit('update', { cacheKey, ...parts, listChanged });
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Read an entry without updating its LRU position.
|
|
194
|
-
* Use this for metadata access (e.g. resource listing) to avoid polluting the
|
|
195
|
-
* eviction order; expired entries are treated as absent but not evicted here.
|
|
196
|
-
*/
|
|
197
|
-
peek(cacheKey) {
|
|
198
|
-
if (!cacheKey)
|
|
199
|
-
return undefined;
|
|
200
|
-
const entry = this.entries.get(cacheKey);
|
|
201
|
-
if (!entry)
|
|
202
|
-
return undefined;
|
|
203
|
-
if (this.isExpired(entry))
|
|
204
|
-
return undefined;
|
|
205
|
-
return entry;
|
|
206
|
-
}
|
|
207
|
-
logError(message, cacheKey, error) {
|
|
208
|
-
logWarn(message, {
|
|
209
|
-
key: cacheKey.length > 100 ? cacheKey.slice(0, 100) : cacheKey,
|
|
210
|
-
error: getErrorMessage(error),
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
const store = new InMemoryCacheStore();
|
|
215
|
-
export function onCacheUpdate(listener) {
|
|
216
|
-
return store.onUpdate(listener);
|
|
217
|
-
}
|
|
218
|
-
export function get(cacheKey, options) {
|
|
219
|
-
return store.get(cacheKey, options);
|
|
220
|
-
}
|
|
221
|
-
export function set(cacheKey, content, metadata, options) {
|
|
222
|
-
store.set(cacheKey, content, metadata, options);
|
|
223
|
-
}
|
|
224
|
-
export function keys() {
|
|
225
|
-
return store.keys();
|
|
226
|
-
}
|
|
227
|
-
export function getEntryMeta(cacheKey) {
|
|
228
|
-
const entry = store.peek(cacheKey);
|
|
229
|
-
if (!entry)
|
|
230
|
-
return undefined;
|
|
231
|
-
return {
|
|
232
|
-
url: entry.url,
|
|
233
|
-
...(entry.title !== undefined ? { title: entry.title } : {}),
|
|
234
|
-
...(entry.fetchedAt ? { fetchedAt: entry.fetchedAt } : {}),
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
export function isEnabled() {
|
|
238
|
-
return store.isEnabled();
|
|
239
|
-
}
|
|
8
|
+
export { createCacheKey, get, getEntryMeta, isEnabled, keys, onCacheUpdate, parseCacheKey, set, } from './cache.js';
|
|
240
9
|
const requestContext = new AsyncLocalStorage({
|
|
241
10
|
name: 'requestContext',
|
|
242
11
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-pipeline.d.ts","sourceRoot":"","sources":["../../src/lib/fetch-pipeline.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch-pipeline.d.ts","sourceRoot":"","sources":["../../src/lib/fetch-pipeline.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AASrE,OAAO,EAA6B,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnE,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,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;IAC7C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,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;IACvE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,CAAC;IAClC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC;CACjD;AACD,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC;IACR,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AACD,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,aAAa,GACb,WAAW,GACX,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,iBAAiB,CAAC;AAoKtB,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CA2D5B;AAED,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,GAAG;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AA4DF,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,GACb,sBAAsB,GAAG,SAAS,CAKpC;AAED,eAAO,MAAM,iBAAiB,GAC5B,OAAO,mBAAmB,EAC1B,KAAK,MAAM,EACX,SAAS,WAAW,KACnB,OAAO,CAAC,sBAAsB,CAchC,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,sBAAsB,GAC7B,MAAM,CAER;AAED,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;IACtD,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,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;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,MAAM,CAAC;IAChE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,sBAAsB,GAAG,SAAS,CAAC;CAC/E;AACD,UAAU,eAAe;IACvB,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,oBAAoB,CAAC;CAC7D;AASD,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,CAaD"}
|
|
@@ -2,7 +2,9 @@ import { z } from 'zod';
|
|
|
2
2
|
import { cachedPayloadValueSchema, extractedMetadataSchema, normalizeExtractedMetadata, normalizePageTitle, parseCachedPayload, stringifyCachedPayload, } from '../schemas.js';
|
|
3
3
|
import { transformBufferToMarkdown } from '../transform/transform.js';
|
|
4
4
|
import {} from '../transform/types.js';
|
|
5
|
-
import {
|
|
5
|
+
import { createCacheKey, get, isEnabled, set } from './cache.js';
|
|
6
|
+
import { toCacheScopeId } from './cache.js';
|
|
7
|
+
import { config, getSessionId, logDebug, logError, logWarn } from './core.js';
|
|
6
8
|
import { fetchNormalizedUrlBuffer, normalizeUrl, transformToRawUrl, } from './http.js';
|
|
7
9
|
import { getErrorMessage, isObject, withSignal } from './utils.js';
|
|
8
10
|
export { withSignal };
|
|
@@ -129,7 +131,7 @@ function logCacheMiss(reason, cacheNamespace, normalizedUrl, error) {
|
|
|
129
131
|
function attemptCacheRetrieval(cacheKey, deserialize, cacheNamespace, normalizedUrl) {
|
|
130
132
|
if (!cacheKey)
|
|
131
133
|
return null;
|
|
132
|
-
const cached = get(cacheKey);
|
|
134
|
+
const cached = get(cacheKey, { scopeId: toCacheScopeId(getSessionId()) });
|
|
133
135
|
if (!cached)
|
|
134
136
|
return null;
|
|
135
137
|
if (!deserialize) {
|
|
@@ -172,12 +174,11 @@ function restoreCachedPipelineResult(options, resolvedUrl, cacheKey) {
|
|
|
172
174
|
}
|
|
173
175
|
function persistCacheEntry(cacheKey, data, serialize, normalizedUrl, cacheNamespace) {
|
|
174
176
|
const serializer = serialize ?? JSON.stringify;
|
|
175
|
-
const dataRecord = isObject(data)
|
|
176
|
-
|
|
177
|
-
: undefined;
|
|
178
|
-
const title = typeof dataRecord?.title === 'string' ? dataRecord.title : undefined;
|
|
177
|
+
const dataRecord = isObject(data) ? data : undefined;
|
|
178
|
+
const title = typeof dataRecord?.['title'] === 'string' ? dataRecord['title'] : undefined;
|
|
179
179
|
const metadata = {
|
|
180
180
|
url: normalizedUrl,
|
|
181
|
+
scopeIds: [toCacheScopeId(getSessionId())],
|
|
181
182
|
...(title === undefined ? {} : { title }),
|
|
182
183
|
};
|
|
183
184
|
try {
|
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":"AAGA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAQhD,OAAO,EAAE,KAAK,EAAmB,MAAM,QAAQ,CAAC;AAehD,OAAO,EAOL,KAAK,eAAe,EAGrB,MAAM,UAAU,CAAC;AAsElB,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,SAAQ,GAChB,MAAM,CAIR;AAkBD,wBAAgB,cAAc,CAC5B,GAAG,EAAE,cAAc,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,IAAI,CA6CN;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/lib/http.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAQhD,OAAO,EAAE,KAAK,EAAmB,MAAM,QAAQ,CAAC;AAehD,OAAO,EAOL,KAAK,eAAe,EAGrB,MAAM,UAAU,CAAC;AAsElB,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,SAAQ,GAChB,MAAM,CAIR;AAkBD,wBAAgB,cAAc,CAC5B,GAAG,EAAE,cAAc,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,IAAI,CA6CN;AAivCD,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
|
@@ -434,9 +434,8 @@ function mapFetchError(error, fallbackUrl, timeoutMs) {
|
|
|
434
434
|
if (isSystemError(error)) {
|
|
435
435
|
return mapSystemError(error, url);
|
|
436
436
|
}
|
|
437
|
-
const
|
|
438
|
-
|
|
439
|
-
return createFetchError({ kind: 'network', message: `${err.message}. Cause: ${causeStr}` }, url);
|
|
437
|
+
const causeStr = error.cause instanceof Error ? error.cause.message : String(error.cause);
|
|
438
|
+
return createFetchError({ kind: 'network', message: `${error.message}. Cause: ${causeStr}` }, url);
|
|
440
439
|
}
|
|
441
440
|
// ═══════════════════════════════════════════════════════════════════
|
|
442
441
|
// REDIRECT FOLLOWING
|
|
@@ -67,14 +67,14 @@ export declare function registerServerLifecycleCleanup(server: McpServer, callba
|
|
|
67
67
|
/**
|
|
68
68
|
* Retrieves the SDK's internal request-handler map.
|
|
69
69
|
*
|
|
70
|
-
* Depends on SDK private API `_requestHandlers` (verified against ^1.
|
|
70
|
+
* Depends on SDK private API `_requestHandlers` (verified against ^1.28).
|
|
71
71
|
* If the SDK changes this internal, the sdk-compat-guard.test.ts tests will fail.
|
|
72
72
|
*/
|
|
73
73
|
export declare function getSdkCallToolHandler(server: McpServer): RequestHandlerFn | null;
|
|
74
74
|
/**
|
|
75
75
|
* Patches the SDK's internal capabilities to enable/disable task-mode tool calls.
|
|
76
76
|
*
|
|
77
|
-
* Depends on SDK private API `_capabilities.tasks.requests` (verified against ^1.
|
|
77
|
+
* Depends on SDK private API `_capabilities.tasks.requests` (verified against ^1.28).
|
|
78
78
|
* If the SDK changes this internal, the sdk-compat-guard.test.ts tests will fail.
|
|
79
79
|
*/
|
|
80
80
|
export declare function setTaskToolCallCapability(server: McpServer, enabled: boolean): void;
|
|
@@ -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;AACzE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAK/C,QAAA,MAAM,oBAAoB;;;;;;;kBAKxB,CAAC;AAeH,QAAA,MAAM,qBAAqB;;;;;;;;;;;;oBAGzB,CAAC;AACH,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;sBAGxB,CAAC;AACH,KAAK,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAC3D,KAAK,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACjE,KAAK,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAC/D,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAE5D;AACD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,cAAc,CAEtE;AACD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,OAAO,GACZ,IAAI,IAAI,mBAAmB,CAE7B;AACD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,kBAAkB,CAE1E;AAUD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAG7E;AACD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC,OAAO,CAUT;AAMD,KAAK,iBAAiB,GAAG,cAAc,GAAG;IACxC,OAAO,EAAE,IAAI,CAAC;CACf,CAAC;AA6BF,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE;IACN,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,GACA,iBAAiB,CAenB;AAQD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,EACX,eAAe,SAAqB,GACnC,iBAAiB,CA2BnB;AAMD,KAAK,eAAe,GAAG,MAAM,IAAI,CAAC;AAClC,KAAK,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,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
|
@@ -106,11 +106,13 @@ function isValidationError(error) {
|
|
|
106
106
|
export function handleToolError(error, url, fallbackMessage = 'Operation failed') {
|
|
107
107
|
if (error instanceof FetchError) {
|
|
108
108
|
const { code: detailsCode, reason } = error.details;
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
109
|
+
let { code } = error;
|
|
110
|
+
if (typeof detailsCode === 'string') {
|
|
111
|
+
code = detailsCode;
|
|
112
|
+
}
|
|
113
|
+
else if (reason === 'queue_full') {
|
|
114
|
+
code = 'queue_full';
|
|
115
|
+
}
|
|
114
116
|
const details = sanitizeToolErrorDetails(error.details);
|
|
115
117
|
return createToolErrorResponse(error.message, url, {
|
|
116
118
|
code,
|
|
@@ -129,6 +131,10 @@ export function handleToolError(error, url, fallbackMessage = 'Operation failed'
|
|
|
129
131
|
: `${fallbackMessage}: Unknown error`;
|
|
130
132
|
return createToolErrorResponse(message, url, { code });
|
|
131
133
|
}
|
|
134
|
+
function getNestedRecord(value, key) {
|
|
135
|
+
const nested = value[key];
|
|
136
|
+
return isObject(nested) ? nested : undefined;
|
|
137
|
+
}
|
|
132
138
|
const patchedCleanupServers = new WeakSet();
|
|
133
139
|
const serverCleanupCallbacks = new WeakMap();
|
|
134
140
|
function getServerCleanupCallbackSet(server) {
|
|
@@ -176,7 +182,7 @@ export function registerServerLifecycleCleanup(server, callback) {
|
|
|
176
182
|
/**
|
|
177
183
|
* Retrieves the SDK's internal request-handler map.
|
|
178
184
|
*
|
|
179
|
-
* Depends on SDK private API `_requestHandlers` (verified against ^1.
|
|
185
|
+
* Depends on SDK private API `_requestHandlers` (verified against ^1.28).
|
|
180
186
|
* If the SDK changes this internal, the sdk-compat-guard.test.ts tests will fail.
|
|
181
187
|
*/
|
|
182
188
|
export function getSdkCallToolHandler(server) {
|
|
@@ -189,21 +195,17 @@ export function getSdkCallToolHandler(server) {
|
|
|
189
195
|
/**
|
|
190
196
|
* Patches the SDK's internal capabilities to enable/disable task-mode tool calls.
|
|
191
197
|
*
|
|
192
|
-
* Depends on SDK private API `_capabilities.tasks.requests` (verified against ^1.
|
|
198
|
+
* Depends on SDK private API `_capabilities.tasks.requests` (verified against ^1.28).
|
|
193
199
|
* If the SDK changes this internal, the sdk-compat-guard.test.ts tests will fail.
|
|
194
200
|
*/
|
|
195
201
|
export function setTaskToolCallCapability(server, enabled) {
|
|
196
202
|
const capabilities = Reflect.get(server.server, '_capabilities');
|
|
197
203
|
if (!isObject(capabilities))
|
|
198
204
|
return;
|
|
199
|
-
const tasks =
|
|
200
|
-
? capabilities.tasks
|
|
201
|
-
: undefined;
|
|
205
|
+
const tasks = getNestedRecord(capabilities, 'tasks');
|
|
202
206
|
if (!tasks)
|
|
203
207
|
return;
|
|
204
|
-
const requests =
|
|
205
|
-
? tasks.requests
|
|
206
|
-
: undefined;
|
|
208
|
+
const requests = getNestedRecord(tasks, 'requests');
|
|
207
209
|
if (!requests)
|
|
208
210
|
return;
|
|
209
211
|
if (enabled) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAMxG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,6BAA6B,CAAC;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,yBAAyB,EAAE,MAAM,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,CAAC;IACrD,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACtD,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,CAAC;IACxD,IAAI,EAAE,MAAM,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,KAAK,EAAE,MAAM,YAAY,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,YAAY,CAAA;KAAE,EAAE,CAAC;IAC1D,WAAW,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC;CAC7C;AAED,UAAU,WAAW;IACnB,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,OAAO,CAAC;CACvC;AAMD,KAAK,YAAY,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;AAE7C,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,YAAY,GACnB,YAAY,CAWd;AA0FD,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAErE;AAMD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,CAiBlE;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAMT;AAED,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,WAAW,EACX,WAAW,GACZ,EAAE;IACD,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;CAC/C,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAMxG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,6BAA6B,CAAC;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,yBAAyB,EAAE,MAAM,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,CAAC;IACrD,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACtD,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,CAAC;IACxD,IAAI,EAAE,MAAM,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,KAAK,EAAE,MAAM,YAAY,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,YAAY,CAAA;KAAE,EAAE,CAAC;IAC1D,WAAW,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC;CAC7C;AAED,UAAU,WAAW;IACnB,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,OAAO,CAAC;CACvC;AAMD,KAAK,YAAY,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;AAE7C,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,YAAY,GACnB,YAAY,CAWd;AA0FD,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAErE;AAMD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,CAiBlE;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAMT;AAED,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,WAAW,EACX,WAAW,GACZ,EAAE;IACD,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;CAC/C,GAAG,OAAO,CAUV"}
|
package/dist/lib/session.js
CHANGED
|
@@ -127,14 +127,10 @@ export function reserveSessionSlot(store, maxSessions) {
|
|
|
127
127
|
export function ensureSessionCapacity({ store, maxSessions, evictOldest, }) {
|
|
128
128
|
if (maxSessions <= 0)
|
|
129
129
|
return false;
|
|
130
|
-
|
|
131
|
-
const inflight = store.inFlight();
|
|
132
|
-
if (currentSize + inflight < maxSessions)
|
|
130
|
+
if (store.size() + store.inFlight() < maxSessions)
|
|
133
131
|
return true;
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
return false;
|
|
139
|
-
return store.size() + store.inFlight() < maxSessions;
|
|
132
|
+
if (store.size() > 0 && evictOldest(store)) {
|
|
133
|
+
return store.size() + store.inFlight() < maxSessions;
|
|
134
|
+
}
|
|
135
|
+
return false;
|
|
140
136
|
}
|
package/dist/lib/url.d.ts
CHANGED
|
@@ -35,6 +35,7 @@ export declare class RawUrlTransformer {
|
|
|
35
35
|
private isRawUrl;
|
|
36
36
|
private splitParams;
|
|
37
37
|
private tryTransformWithUrl;
|
|
38
|
+
private matchAndTransform;
|
|
38
39
|
private transformGithubBlob;
|
|
39
40
|
private transformGithubGist;
|
|
40
41
|
private transformRawGist;
|
|
@@ -77,7 +78,6 @@ export declare class UrlNormalizer {
|
|
|
77
78
|
};
|
|
78
79
|
validateAndNormalize(urlString: string): string;
|
|
79
80
|
private requireTrimmedUrl;
|
|
80
|
-
private normalizeHostname;
|
|
81
81
|
private assertHostnameAllowed;
|
|
82
82
|
}
|
|
83
83
|
export { isIP };
|
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;AA6C7C,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;IAajB,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC;IAgElB,OAAO,CAAC,iBAAiB;YAIX,oBAAoB;YA2BpB,YAAY;CAiC3B;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;
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/lib/url.ts"],"names":[],"mappings":"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"}
|