recker 1.0.15-next.7944604 → 1.0.15-next.99ff876
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 +10 -1
- package/dist/ai/providers/anthropic.d.ts.map +1 -1
- package/dist/ai/providers/anthropic.js +4 -1
- package/dist/ai/providers/base.d.ts.map +1 -1
- package/dist/ai/providers/base.js +7 -2
- package/dist/ai/rate-limiter.d.ts.map +1 -1
- package/dist/ai/rate-limiter.js +4 -1
- package/dist/bench/generator.d.ts.map +1 -1
- package/dist/bench/generator.js +7 -3
- package/dist/bench/stats.d.ts.map +1 -1
- package/dist/bench/stats.js +43 -10
- package/dist/cache/memory-storage.d.ts.map +1 -1
- package/dist/cache/memory-storage.js +3 -2
- package/dist/cli/handler.js +14 -14
- package/dist/cli/index.js +602 -48
- package/dist/cli/presets.js +5 -5
- package/dist/cli/tui/ai-chat.js +10 -10
- package/dist/cli/tui/load-dashboard.d.ts.map +1 -1
- package/dist/cli/tui/load-dashboard.js +96 -55
- package/dist/cli/tui/scroll-buffer.d.ts +43 -0
- package/dist/cli/tui/scroll-buffer.d.ts.map +1 -0
- package/dist/cli/tui/scroll-buffer.js +162 -0
- package/dist/cli/tui/search-panel.d.ts +41 -0
- package/dist/cli/tui/search-panel.d.ts.map +1 -0
- package/dist/cli/tui/search-panel.js +419 -0
- package/dist/cli/tui/shell.d.ts +14 -0
- package/dist/cli/tui/shell.d.ts.map +1 -1
- package/dist/cli/tui/shell.js +424 -46
- package/dist/cli/tui/websocket.js +17 -17
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +18 -26
- package/dist/core/errors.d.ts +109 -1
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +214 -1
- package/dist/core/request-promise.d.ts.map +1 -1
- package/dist/core/request-promise.js +5 -6
- package/dist/core/response.d.ts.map +1 -1
- package/dist/core/response.js +5 -6
- package/dist/dns/index.d.ts +1 -0
- package/dist/dns/index.d.ts.map +1 -1
- package/dist/dns/index.js +1 -0
- package/dist/dns/propagation.d.ts +21 -0
- package/dist/dns/propagation.d.ts.map +1 -0
- package/dist/dns/propagation.js +169 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js +10 -11
- package/dist/mcp/embeddings-loader.d.ts.map +1 -1
- package/dist/mcp/embeddings-loader.js +12 -2
- package/dist/mcp/geoip-loader.d.ts +11 -0
- package/dist/mcp/geoip-loader.d.ts.map +1 -0
- package/dist/mcp/geoip-loader.js +107 -0
- package/dist/mcp/ip-intel.d.ts +28 -0
- package/dist/mcp/ip-intel.d.ts.map +1 -0
- package/dist/mcp/ip-intel.js +209 -0
- package/dist/mcp/search/hybrid-search.d.ts.map +1 -1
- package/dist/mcp/search/hybrid-search.js +5 -1
- package/dist/mcp/search/math.d.ts.map +1 -1
- package/dist/mcp/search/math.js +5 -1
- package/dist/mcp/server.d.ts +4 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +114 -1
- package/dist/plugins/compression.js +4 -2
- package/dist/plugins/har-player.d.ts.map +1 -1
- package/dist/plugins/har-player.js +8 -11
- package/dist/plugins/odata.d.ts.map +1 -1
- package/dist/plugins/odata.js +5 -2
- package/dist/protocols/ftp.d.ts.map +1 -1
- package/dist/protocols/ftp.js +69 -16
- package/dist/protocols/sftp.d.ts.map +1 -1
- package/dist/protocols/sftp.js +13 -3
- package/dist/protocols/telnet.d.ts.map +1 -1
- package/dist/protocols/telnet.js +25 -6
- package/dist/transport/base-udp.d.ts.map +1 -1
- package/dist/transport/base-udp.js +7 -4
- package/dist/transport/udp-response.d.ts.map +1 -1
- package/dist/transport/udp-response.js +10 -3
- package/dist/transport/udp.d.ts.map +1 -1
- package/dist/transport/udp.js +5 -1
- package/dist/transport/undici.d.ts.map +1 -1
- package/dist/transport/undici.js +75 -63
- package/dist/utils/agent-manager.d.ts +1 -0
- package/dist/utils/agent-manager.d.ts.map +1 -1
- package/dist/utils/agent-manager.js +11 -0
- package/dist/utils/client-pool.d.ts.map +1 -1
- package/dist/utils/client-pool.js +4 -1
- package/dist/utils/dns-toolkit.d.ts +88 -1
- package/dist/utils/dns-toolkit.d.ts.map +1 -1
- package/dist/utils/dns-toolkit.js +704 -6
- package/dist/utils/doh.d.ts.map +1 -1
- package/dist/utils/doh.js +13 -16
- package/dist/utils/download.d.ts.map +1 -1
- package/dist/utils/download.js +10 -11
- package/dist/utils/rdap.d.ts +9 -0
- package/dist/utils/rdap.d.ts.map +1 -1
- package/dist/utils/rdap.js +78 -9
- package/dist/utils/security-grader.d.ts +47 -0
- package/dist/utils/security-grader.d.ts.map +1 -0
- package/dist/utils/security-grader.js +637 -0
- package/dist/utils/sparkline.d.ts +18 -0
- package/dist/utils/sparkline.d.ts.map +1 -0
- package/dist/utils/sparkline.js +55 -0
- package/dist/utils/sse.d.ts.map +1 -1
- package/dist/utils/sse.js +5 -6
- package/dist/utils/system-metrics.d.ts +26 -0
- package/dist/utils/system-metrics.d.ts.map +1 -0
- package/dist/utils/system-metrics.js +81 -0
- package/dist/utils/tls-inspector.d.ts +6 -0
- package/dist/utils/tls-inspector.d.ts.map +1 -1
- package/dist/utils/tls-inspector.js +35 -1
- package/dist/webrtc/index.d.ts.map +1 -1
- package/dist/webrtc/index.js +21 -7
- package/dist/websocket/client.d.ts.map +1 -1
- package/dist/websocket/client.js +13 -16
- package/package.json +2 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Fuse from 'fuse.js';
|
|
2
2
|
import { cosineSimilarity, combineScores, levenshtein } from './math.js';
|
|
3
3
|
import { loadEmbeddings } from '../embeddings-loader.js';
|
|
4
|
+
import { StateError } from '../../core/errors.js';
|
|
4
5
|
let cachedEmbeddings = null;
|
|
5
6
|
export class HybridSearch {
|
|
6
7
|
fuse = null;
|
|
@@ -68,7 +69,10 @@ export class HybridSearch {
|
|
|
68
69
|
async search(query, options = {}) {
|
|
69
70
|
const { limit = 10, category, mode = 'hybrid', minScore = 0 } = options;
|
|
70
71
|
if (!this.initialized) {
|
|
71
|
-
throw new
|
|
72
|
+
throw new StateError('HybridSearch not initialized. Call initialize() first.', {
|
|
73
|
+
expectedState: 'initialized',
|
|
74
|
+
actualState: 'not-initialized',
|
|
75
|
+
});
|
|
72
76
|
}
|
|
73
77
|
const cleanedQuery = this.cleanQuery(query);
|
|
74
78
|
this.log(`Original query: "${query}" → Cleaned: "${cleanedQuery}"`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../../src/mcp/search/math.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../../src/mcp/search/math.ts"],"names":[],"mappings":"AAsBA,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAwBjE;AAgBD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAyCxD;AAeD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAI7D;AAmBD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,SAAK,GAAG,MAAM,CAEpE;AAWD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,SAAK,GAAG,MAAM,CAK5E"}
|
package/dist/mcp/search/math.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { ValidationError } from '../../core/errors.js';
|
|
1
2
|
export function cosineSimilarity(a, b) {
|
|
2
3
|
if (a.length !== b.length) {
|
|
3
|
-
throw new
|
|
4
|
+
throw new ValidationError(`Vector length mismatch: ${a.length} vs ${b.length}`, {
|
|
5
|
+
field: 'vectorLength',
|
|
6
|
+
value: { a: a.length, b: b.length },
|
|
7
|
+
});
|
|
4
8
|
}
|
|
5
9
|
if (a.length === 0) {
|
|
6
10
|
return 0;
|
package/dist/mcp/server.d.ts
CHANGED
|
@@ -51,6 +51,10 @@ export declare class MCPServer {
|
|
|
51
51
|
private getCodeExamples;
|
|
52
52
|
private getApiSchema;
|
|
53
53
|
private getSuggestions;
|
|
54
|
+
private ipLookupResult;
|
|
55
|
+
private ipLookupPending;
|
|
56
|
+
private ipLookup;
|
|
57
|
+
private formatIpResult;
|
|
54
58
|
private getFeatureConfig;
|
|
55
59
|
private getCombinedConfig;
|
|
56
60
|
handleRequest(req: JsonRpcRequest): JsonRpcResponse;
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EAMhB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EAMhB,MAAM,YAAY,CAAC;AAIpB,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AA0CD,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,MAAM,CAAC,CAAkC;IACjD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,GAAE,gBAAqB;IAsB1C,OAAO,CAAC,UAAU,CAA8B;YAKlC,gBAAgB;IAO9B,OAAO,CAAC,GAAG;IAUX,OAAO,CAAC,YAAY;IAyBpB,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,WAAW;YAwBL,UAAU;YAoBV,SAAS;IAiCvB,OAAO,CAAC,iBAAiB;IA6BzB,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,eAAe;IA4BvB,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,sBAAsB;IA0E9B,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,OAAO;IAyBf,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,QAAQ;IAgIhB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,UAAU;IA0ElB,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,MAAM;IAmCd,OAAO,CAAC,eAAe;IAgDvB,OAAO,CAAC,YAAY;IAmEpB,OAAO,CAAC,cAAc;IAmFtB,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,eAAe,CAA8B;IAErD,OAAO,CAAC,QAAQ;IA+DhB,OAAO,CAAC,cAAc;IA6CtB,OAAO,CAAC,gBAAgB;IA+DxB,OAAO,CAAC,iBAAiB;IAuCzB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,eAAe;IA8DnD,OAAO,CAAC,gBAAgB;YAOV,UAAU;YAgCV,SAAS;YA8CT,QAAQ;IAuFhB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B,OAAO,IAAI,MAAM;IAIjB,YAAY,IAAI,MAAM;IAItB,gBAAgB,IAAI,MAAM;IAI1B,aAAa,IAAI,MAAM;IAIvB,YAAY,IAAI,gBAAgB;CAGjC;AAoBD,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAErE"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -4,6 +4,8 @@ import { join, relative, extname, basename, dirname } from 'path';
|
|
|
4
4
|
import { createInterface } from 'readline';
|
|
5
5
|
import { fileURLToPath } from 'url';
|
|
6
6
|
import { createHybridSearch } from './search/index.js';
|
|
7
|
+
import { UnsupportedError } from '../core/errors.js';
|
|
8
|
+
import { getIpInfo, isValidIP, isGeoIPAvailable, isBogon, isIPv6 } from './ip-intel.js';
|
|
7
9
|
export class MCPServer {
|
|
8
10
|
options;
|
|
9
11
|
server;
|
|
@@ -505,6 +507,20 @@ export class MCPServer {
|
|
|
505
507
|
required: ['useCase'],
|
|
506
508
|
},
|
|
507
509
|
},
|
|
510
|
+
{
|
|
511
|
+
name: 'ip_lookup',
|
|
512
|
+
description: 'Get geolocation and network information for an IP address using the local MaxMind GeoLite2 database. Returns city, country, coordinates, timezone, and more. Works offline after first download.',
|
|
513
|
+
inputSchema: {
|
|
514
|
+
type: 'object',
|
|
515
|
+
properties: {
|
|
516
|
+
ip: {
|
|
517
|
+
type: 'string',
|
|
518
|
+
description: 'IPv4 or IPv6 address to lookup (e.g., "8.8.8.8", "2001:4860:4860::8888")',
|
|
519
|
+
},
|
|
520
|
+
},
|
|
521
|
+
required: ['ip'],
|
|
522
|
+
},
|
|
523
|
+
},
|
|
508
524
|
];
|
|
509
525
|
if (this.options.toolsFilter.length > 0) {
|
|
510
526
|
return allTools.filter(tool => this.isToolEnabled(tool.name));
|
|
@@ -546,6 +562,8 @@ export class MCPServer {
|
|
|
546
562
|
return this.getApiSchema(args);
|
|
547
563
|
case 'suggest':
|
|
548
564
|
return this.getSuggestions(args);
|
|
565
|
+
case 'ip_lookup':
|
|
566
|
+
return this.ipLookup(args);
|
|
549
567
|
default:
|
|
550
568
|
return {
|
|
551
569
|
content: [{ type: 'text', text: `Unknown tool: ${name}` }],
|
|
@@ -820,6 +838,99 @@ export class MCPServer {
|
|
|
820
838
|
}],
|
|
821
839
|
};
|
|
822
840
|
}
|
|
841
|
+
ipLookupResult = null;
|
|
842
|
+
ipLookupPending = null;
|
|
843
|
+
ipLookup(args) {
|
|
844
|
+
const ip = String(args.ip || '').trim();
|
|
845
|
+
if (!ip) {
|
|
846
|
+
return {
|
|
847
|
+
content: [{ type: 'text', text: 'Error: ip is required' }],
|
|
848
|
+
isError: true,
|
|
849
|
+
};
|
|
850
|
+
}
|
|
851
|
+
if (!isValidIP(ip)) {
|
|
852
|
+
return {
|
|
853
|
+
content: [{ type: 'text', text: `Error: "${ip}" is not a valid IP address` }],
|
|
854
|
+
isError: true,
|
|
855
|
+
};
|
|
856
|
+
}
|
|
857
|
+
const bogonCheck = isBogon(ip);
|
|
858
|
+
const ipv6 = isIPv6(ip);
|
|
859
|
+
if (bogonCheck.isBogon) {
|
|
860
|
+
return {
|
|
861
|
+
content: [{
|
|
862
|
+
type: 'text',
|
|
863
|
+
text: this.formatIpResult({
|
|
864
|
+
ip,
|
|
865
|
+
bogon: true,
|
|
866
|
+
bogonType: bogonCheck.type,
|
|
867
|
+
isIPv6: ipv6,
|
|
868
|
+
org: bogonCheck.type,
|
|
869
|
+
}),
|
|
870
|
+
}],
|
|
871
|
+
};
|
|
872
|
+
}
|
|
873
|
+
if (!isGeoIPAvailable()) {
|
|
874
|
+
getIpInfo(ip).catch(() => { });
|
|
875
|
+
return {
|
|
876
|
+
content: [{
|
|
877
|
+
type: 'text',
|
|
878
|
+
text: `# GeoIP Database Required\n\nThe MaxMind GeoLite2 database is being downloaded (~70MB).\n\nPlease try again in a few seconds, or use the CLI:\n\n\`\`\`bash\nrek ip ${ip}\n\`\`\``,
|
|
879
|
+
}],
|
|
880
|
+
};
|
|
881
|
+
}
|
|
882
|
+
this.ipLookupPending = getIpInfo(ip).then(info => {
|
|
883
|
+
this.ipLookupResult = info;
|
|
884
|
+
});
|
|
885
|
+
return {
|
|
886
|
+
content: [{
|
|
887
|
+
type: 'text',
|
|
888
|
+
text: `# IP Intelligence: ${ip}\n\n**Status:** Public ${ipv6 ? 'IPv6' : 'IPv4'} Address\n\nFor detailed geolocation data (city, country, coordinates, timezone), use the CLI:\n\n\`\`\`bash\nrek ip ${ip}\n\`\`\`\n\n_Note: The MCP server uses a synchronous protocol. Full GeoIP lookups are available via CLI._`,
|
|
889
|
+
}],
|
|
890
|
+
};
|
|
891
|
+
}
|
|
892
|
+
formatIpResult(info) {
|
|
893
|
+
const lines = [`# IP Intelligence: ${info.ip}\n`];
|
|
894
|
+
if (info.bogon) {
|
|
895
|
+
lines.push(`**Type:** Private/Reserved IP (Bogon)`);
|
|
896
|
+
lines.push(`**Category:** ${info.bogonType}`);
|
|
897
|
+
lines.push(`\nThis is a non-routable IP address used for internal networks or special purposes.`);
|
|
898
|
+
}
|
|
899
|
+
else {
|
|
900
|
+
if (info.city || info.region || info.country) {
|
|
901
|
+
const location = [info.city, info.region, info.country].filter(Boolean).join(', ');
|
|
902
|
+
lines.push(`**Location:** ${location}`);
|
|
903
|
+
}
|
|
904
|
+
if (info.countryCode) {
|
|
905
|
+
lines.push(`**Country Code:** ${info.countryCode}`);
|
|
906
|
+
}
|
|
907
|
+
if (info.continent) {
|
|
908
|
+
lines.push(`**Continent:** ${info.continent}`);
|
|
909
|
+
}
|
|
910
|
+
if (info.loc) {
|
|
911
|
+
lines.push(`**Coordinates:** ${info.loc}`);
|
|
912
|
+
}
|
|
913
|
+
if (info.timezone) {
|
|
914
|
+
lines.push(`**Timezone:** ${info.timezone}`);
|
|
915
|
+
}
|
|
916
|
+
if (info.postal) {
|
|
917
|
+
lines.push(`**Postal Code:** ${info.postal}`);
|
|
918
|
+
}
|
|
919
|
+
if (info.org) {
|
|
920
|
+
lines.push(`**Organization:** ${info.org}`);
|
|
921
|
+
}
|
|
922
|
+
if (info.asn) {
|
|
923
|
+
lines.push(`**ASN:** ${info.asn}`);
|
|
924
|
+
}
|
|
925
|
+
if (info.accuracy) {
|
|
926
|
+
lines.push(`**Accuracy:** ~${info.accuracy} km`);
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
if (info.isIPv6) {
|
|
930
|
+
lines.push(`\n_IPv6 Address_`);
|
|
931
|
+
}
|
|
932
|
+
return lines.join('\n');
|
|
933
|
+
}
|
|
823
934
|
getFeatureConfig(feature) {
|
|
824
935
|
const configs = {
|
|
825
936
|
retry: `retry: {
|
|
@@ -1127,7 +1238,9 @@ const client = createClient({
|
|
|
1127
1238
|
case 'sse':
|
|
1128
1239
|
return this.startSSE();
|
|
1129
1240
|
default:
|
|
1130
|
-
throw new
|
|
1241
|
+
throw new UnsupportedError(`Unknown transport: ${this.options.transport}`, {
|
|
1242
|
+
feature: this.options.transport,
|
|
1243
|
+
});
|
|
1131
1244
|
}
|
|
1132
1245
|
}
|
|
1133
1246
|
async stop() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { gzip, deflate, brotliCompress } from 'node:zlib';
|
|
2
2
|
import { promisify } from 'node:util';
|
|
3
|
-
import {
|
|
3
|
+
import { UnsupportedError } from '../core/errors.js';
|
|
4
4
|
const gzipAsync = promisify(gzip);
|
|
5
5
|
const deflateAsync = promisify(deflate);
|
|
6
6
|
const brotliAsync = promisify(brotliCompress);
|
|
@@ -72,7 +72,9 @@ async function compress(data, algorithm) {
|
|
|
72
72
|
case 'br':
|
|
73
73
|
return await brotliAsync(data);
|
|
74
74
|
default:
|
|
75
|
-
throw new
|
|
75
|
+
throw new UnsupportedError(`Unsupported compression algorithm: ${algorithm}`, {
|
|
76
|
+
feature: algorithm,
|
|
77
|
+
});
|
|
76
78
|
}
|
|
77
79
|
}
|
|
78
80
|
export function compression(options = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"har-player.d.ts","sourceRoot":"","sources":["../../src/plugins/har-player.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA6C,MAAM,mBAAmB,CAAC;AAKtF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IAEb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAgBD,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"har-player.d.ts","sourceRoot":"","sources":["../../src/plugins/har-player.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA6C,MAAM,mBAAmB,CAAC;AAKtF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IAEb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAgBD,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAgF3D"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
2
|
import { HttpResponse } from '../core/response.js';
|
|
3
|
-
import {
|
|
3
|
+
import { ParseError, NotFoundError } from '../core/errors.js';
|
|
4
4
|
export function harPlayer(options) {
|
|
5
5
|
let entries = [];
|
|
6
6
|
try {
|
|
@@ -9,11 +9,9 @@ export function harPlayer(options) {
|
|
|
9
9
|
entries = har.log.entries;
|
|
10
10
|
}
|
|
11
11
|
catch (err) {
|
|
12
|
-
throw new
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
'Verify the HAR file has the correct structure (log.entries).'
|
|
16
|
-
]);
|
|
12
|
+
throw new ParseError(`Failed to load HAR file: ${options.path}`, {
|
|
13
|
+
format: 'har',
|
|
14
|
+
});
|
|
17
15
|
}
|
|
18
16
|
const matchEntry = (req, entry) => {
|
|
19
17
|
if (req.method !== entry.request.method)
|
|
@@ -48,11 +46,10 @@ export function harPlayer(options) {
|
|
|
48
46
|
return new HttpResponse(nativeRes);
|
|
49
47
|
}
|
|
50
48
|
if (options.strict) {
|
|
51
|
-
throw new
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
]);
|
|
49
|
+
throw new NotFoundError(`[Recker HAR Player] No matching recording found for ${req.method} ${req.url}`, {
|
|
50
|
+
resource: `${req.method} ${req.url}`,
|
|
51
|
+
request: req,
|
|
52
|
+
});
|
|
56
53
|
}
|
|
57
54
|
return next(req);
|
|
58
55
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"odata.d.ts","sourceRoot":"","sources":["../../src/plugins/odata.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"odata.d.ts","sourceRoot":"","sources":["../../src/plugins/odata.ts"],"names":[],"mappings":"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"}
|
package/dist/plugins/odata.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { UnsupportedError, HttpError } from '../core/errors.js';
|
|
1
2
|
export class ODataException extends Error {
|
|
2
3
|
code;
|
|
3
4
|
target;
|
|
@@ -360,7 +361,9 @@ export class ODataClient {
|
|
|
360
361
|
response = await this.client.delete(url, options);
|
|
361
362
|
break;
|
|
362
363
|
default:
|
|
363
|
-
throw new
|
|
364
|
+
throw new UnsupportedError(`Unsupported HTTP method: ${method}`, {
|
|
365
|
+
feature: method,
|
|
366
|
+
});
|
|
364
367
|
}
|
|
365
368
|
return this.handleResponse(response);
|
|
366
369
|
}
|
|
@@ -374,7 +377,7 @@ export class ODataClient {
|
|
|
374
377
|
if (error.error) {
|
|
375
378
|
throw new ODataException(error.error);
|
|
376
379
|
}
|
|
377
|
-
throw new
|
|
380
|
+
throw new HttpError(response);
|
|
378
381
|
}
|
|
379
382
|
return data;
|
|
380
383
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ftp.d.ts","sourceRoot":"","sources":["../../src/protocols/ftp.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAyB,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ftp.d.ts","sourceRoot":"","sources":["../../src/protocols/ftp.ts"],"names":[],"mappings":"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"}
|
package/dist/protocols/ftp.js
CHANGED
|
@@ -3,6 +3,7 @@ import { connect as tlsConnect } from 'node:tls';
|
|
|
3
3
|
import { Readable, Writable } from 'node:stream';
|
|
4
4
|
import { createWriteStream, createReadStream } from 'node:fs';
|
|
5
5
|
import { EventEmitter } from 'node:events';
|
|
6
|
+
import { ProtocolError, StateError, AuthenticationError, ConnectionError, TimeoutError, ParseError, } from '../core/errors.js';
|
|
6
7
|
const ResponseCode = {
|
|
7
8
|
RESTART_MARKER: 110,
|
|
8
9
|
SERVICE_READY_IN: 120,
|
|
@@ -88,7 +89,11 @@ export class FTP extends EventEmitter {
|
|
|
88
89
|
const welcome = await this.readResponse();
|
|
89
90
|
this.debug('Welcome: %s', welcome.message);
|
|
90
91
|
if (welcome.code !== ResponseCode.SERVICE_READY) {
|
|
91
|
-
throw new
|
|
92
|
+
throw new ProtocolError(`Server not ready: ${welcome.message}`, {
|
|
93
|
+
protocol: 'ftp',
|
|
94
|
+
code: welcome.code,
|
|
95
|
+
phase: 'connect',
|
|
96
|
+
});
|
|
92
97
|
}
|
|
93
98
|
await this.authenticate();
|
|
94
99
|
await this.sendCommand('TYPE I');
|
|
@@ -173,7 +178,11 @@ export class FTP extends EventEmitter {
|
|
|
173
178
|
const response = await this.readResponse();
|
|
174
179
|
if (response.code !== ResponseCode.CLOSING_DATA_CONNECTION &&
|
|
175
180
|
response.code !== ResponseCode.FILE_ACTION_OK) {
|
|
176
|
-
throw new
|
|
181
|
+
throw new ProtocolError(response.message, {
|
|
182
|
+
protocol: 'ftp',
|
|
183
|
+
code: response.code,
|
|
184
|
+
phase: 'transfer',
|
|
185
|
+
});
|
|
177
186
|
}
|
|
178
187
|
return {
|
|
179
188
|
success: true,
|
|
@@ -259,7 +268,11 @@ export class FTP extends EventEmitter {
|
|
|
259
268
|
const response = await this.readResponse();
|
|
260
269
|
if (response.code !== ResponseCode.CLOSING_DATA_CONNECTION &&
|
|
261
270
|
response.code !== ResponseCode.FILE_ACTION_OK) {
|
|
262
|
-
throw new
|
|
271
|
+
throw new ProtocolError(response.message, {
|
|
272
|
+
protocol: 'ftp',
|
|
273
|
+
code: response.code,
|
|
274
|
+
phase: 'transfer',
|
|
275
|
+
});
|
|
263
276
|
}
|
|
264
277
|
return {
|
|
265
278
|
success: true,
|
|
@@ -356,7 +369,11 @@ export class FTP extends EventEmitter {
|
|
|
356
369
|
try {
|
|
357
370
|
const rnfrResponse = await this.sendCommand(`RNFR ${oldPath}`);
|
|
358
371
|
if (rnfrResponse.code !== ResponseCode.FILE_ACTION_PENDING) {
|
|
359
|
-
throw new
|
|
372
|
+
throw new ProtocolError(rnfrResponse.message, {
|
|
373
|
+
protocol: 'ftp',
|
|
374
|
+
code: rnfrResponse.code,
|
|
375
|
+
phase: 'rename',
|
|
376
|
+
});
|
|
360
377
|
}
|
|
361
378
|
const rntoResponse = await this.sendCommand(`RNTO ${newPath}`);
|
|
362
379
|
return {
|
|
@@ -459,7 +476,10 @@ export class FTP extends EventEmitter {
|
|
|
459
476
|
}
|
|
460
477
|
getSocket() {
|
|
461
478
|
if (!this.controlSocket) {
|
|
462
|
-
throw new
|
|
479
|
+
throw new StateError('Not connected. Call connect() first.', {
|
|
480
|
+
expectedState: 'connected',
|
|
481
|
+
actualState: 'disconnected',
|
|
482
|
+
});
|
|
463
483
|
}
|
|
464
484
|
return this.controlSocket;
|
|
465
485
|
}
|
|
@@ -476,7 +496,10 @@ export class FTP extends EventEmitter {
|
|
|
476
496
|
});
|
|
477
497
|
socket.on('timeout', () => {
|
|
478
498
|
socket.destroy();
|
|
479
|
-
reject(new
|
|
499
|
+
reject(new TimeoutError(undefined, {
|
|
500
|
+
phase: 'connect',
|
|
501
|
+
timeout: this.config.timeout,
|
|
502
|
+
}));
|
|
480
503
|
});
|
|
481
504
|
socket.connect(this.config.port, this.config.host);
|
|
482
505
|
});
|
|
@@ -499,14 +522,21 @@ export class FTP extends EventEmitter {
|
|
|
499
522
|
socket.setTimeout(this.config.timeout);
|
|
500
523
|
socket.on('timeout', () => {
|
|
501
524
|
socket.destroy();
|
|
502
|
-
reject(new
|
|
525
|
+
reject(new TimeoutError(undefined, {
|
|
526
|
+
phase: 'secureConnect',
|
|
527
|
+
timeout: this.config.timeout,
|
|
528
|
+
}));
|
|
503
529
|
});
|
|
504
530
|
});
|
|
505
531
|
}
|
|
506
532
|
async upgradeToTLS() {
|
|
507
533
|
const authResponse = await this.sendCommand('AUTH TLS');
|
|
508
534
|
if (authResponse.code !== ResponseCode.AUTH_OK) {
|
|
509
|
-
throw new
|
|
535
|
+
throw new ProtocolError(`AUTH TLS failed: ${authResponse.message}`, {
|
|
536
|
+
protocol: 'ftp',
|
|
537
|
+
code: authResponse.code,
|
|
538
|
+
phase: 'tls-upgrade',
|
|
539
|
+
});
|
|
510
540
|
}
|
|
511
541
|
return new Promise((resolve, reject) => {
|
|
512
542
|
const options = {
|
|
@@ -528,11 +558,15 @@ export class FTP extends EventEmitter {
|
|
|
528
558
|
return;
|
|
529
559
|
}
|
|
530
560
|
if (userResponse.code !== ResponseCode.NEED_PASSWORD) {
|
|
531
|
-
throw new
|
|
561
|
+
throw new AuthenticationError(`Authentication failed: ${userResponse.message}`, {
|
|
562
|
+
authType: 'ftp-user',
|
|
563
|
+
});
|
|
532
564
|
}
|
|
533
565
|
const passResponse = await this.sendCommand(`PASS ${this.config.password}`);
|
|
534
566
|
if (passResponse.code !== ResponseCode.USER_LOGGED_IN) {
|
|
535
|
-
throw new
|
|
567
|
+
throw new AuthenticationError(`Authentication failed: ${passResponse.message}`, {
|
|
568
|
+
authType: 'ftp-password',
|
|
569
|
+
});
|
|
536
570
|
}
|
|
537
571
|
if (this.secureConnection) {
|
|
538
572
|
await this.sendCommand('PBSZ 0');
|
|
@@ -542,11 +576,17 @@ export class FTP extends EventEmitter {
|
|
|
542
576
|
async openDataConnection() {
|
|
543
577
|
const pasvResponse = await this.sendCommand('PASV');
|
|
544
578
|
if (pasvResponse.code !== ResponseCode.ENTERING_PASSIVE) {
|
|
545
|
-
throw new
|
|
579
|
+
throw new ProtocolError(`PASV failed: ${pasvResponse.message}`, {
|
|
580
|
+
protocol: 'ftp',
|
|
581
|
+
code: pasvResponse.code,
|
|
582
|
+
phase: 'pasv',
|
|
583
|
+
});
|
|
546
584
|
}
|
|
547
585
|
const match = pasvResponse.message.match(/\((\d+),(\d+),(\d+),(\d+),(\d+),(\d+)\)/);
|
|
548
586
|
if (!match) {
|
|
549
|
-
throw new
|
|
587
|
+
throw new ParseError('Failed to parse PASV response', {
|
|
588
|
+
format: 'pasv',
|
|
589
|
+
});
|
|
550
590
|
}
|
|
551
591
|
const host = `${match[1]}.${match[2]}.${match[3]}.${match[4]}`;
|
|
552
592
|
const port = parseInt(match[5], 10) * 256 + parseInt(match[6], 10);
|
|
@@ -584,7 +624,11 @@ export class FTP extends EventEmitter {
|
|
|
584
624
|
const response = await this.readResponse();
|
|
585
625
|
if (response.code !== ResponseCode.CLOSING_DATA_CONNECTION &&
|
|
586
626
|
response.code !== ResponseCode.FILE_ACTION_OK) {
|
|
587
|
-
reject(new
|
|
627
|
+
reject(new ProtocolError(response.message, {
|
|
628
|
+
protocol: 'ftp',
|
|
629
|
+
code: response.code,
|
|
630
|
+
phase: 'data-transfer',
|
|
631
|
+
}));
|
|
588
632
|
}
|
|
589
633
|
else {
|
|
590
634
|
resolve(data);
|
|
@@ -599,7 +643,10 @@ export class FTP extends EventEmitter {
|
|
|
599
643
|
}
|
|
600
644
|
async sendCommand(command) {
|
|
601
645
|
if (!this.controlSocket) {
|
|
602
|
-
throw new
|
|
646
|
+
throw new StateError('Not connected', {
|
|
647
|
+
expectedState: 'connected',
|
|
648
|
+
actualState: 'disconnected',
|
|
649
|
+
});
|
|
603
650
|
}
|
|
604
651
|
const displayCommand = command.startsWith('PASS ')
|
|
605
652
|
? 'PASS ****'
|
|
@@ -765,7 +812,10 @@ export class FTP extends EventEmitter {
|
|
|
765
812
|
}
|
|
766
813
|
ensureConnected() {
|
|
767
814
|
if (!this.connected || !this.controlSocket || this.controlSocket.destroyed) {
|
|
768
|
-
throw new
|
|
815
|
+
throw new StateError('Not connected to FTP server. Call connect() first.', {
|
|
816
|
+
expectedState: 'connected',
|
|
817
|
+
actualState: 'disconnected',
|
|
818
|
+
});
|
|
769
819
|
}
|
|
770
820
|
}
|
|
771
821
|
cleanup() {
|
|
@@ -791,7 +841,10 @@ export async function ftp(config, operation) {
|
|
|
791
841
|
try {
|
|
792
842
|
const result = await client.connect();
|
|
793
843
|
if (!result.success) {
|
|
794
|
-
throw new
|
|
844
|
+
throw new ConnectionError(result.message || 'Failed to connect to FTP server', {
|
|
845
|
+
host: config.host,
|
|
846
|
+
port: config.port,
|
|
847
|
+
});
|
|
795
848
|
}
|
|
796
849
|
return await operation(client);
|
|
797
850
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sftp.d.ts","sourceRoot":"","sources":["../../src/protocols/sftp.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"sftp.d.ts","sourceRoot":"","sources":["../../src/protocols/sftp.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAKjD,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAA4B,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAY5E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,IAAI;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAmBD,qBAAa,IAAI;IACf,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,UAAU;YAOhB,iBAAiB;IAWzB,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;IAmCtC,WAAW,IAAI,OAAO;IAOhB,IAAI,CAAC,UAAU,GAAE,MAAY,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC;IAgCrE,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;IAarD,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAoB1D,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAqBtE,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IAqB7E,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IA6BnE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAqBpE,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAqB7E,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAqBlF,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAoBjD,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAE,OAAc,GAAG,OAAO,CAAC,YAAY,CAAC;IAoB3E,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAE,OAAe,GAAG,OAAO,CAAC,YAAY,CAAC;IAoB5E,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAoB/D,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAoBvE,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAoBpC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAoBxE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B,SAAS,IAAI,UAAU;IAUvB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,WAAW;CAYpB;AAaD,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAEnD;AAkBD,wBAAsB,IAAI,CAAC,CAAC,EAC1B,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GACtC,OAAO,CAAC,CAAC,CAAC,CAgBZ"}
|
package/dist/protocols/sftp.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { requireOptional } from '../utils/optional-require.js';
|
|
2
|
+
import { StateError, ConnectionError } from '../core/errors.js';
|
|
2
3
|
async function loadSFTP() {
|
|
3
4
|
return requireOptional('ssh2-sftp-client', 'recker/protocols/sftp');
|
|
4
5
|
}
|
|
@@ -320,13 +321,19 @@ export class SFTP {
|
|
|
320
321
|
}
|
|
321
322
|
getClient() {
|
|
322
323
|
if (!this.initialized) {
|
|
323
|
-
throw new
|
|
324
|
+
throw new StateError('Client not initialized. Call connect() first.', {
|
|
325
|
+
expectedState: 'initialized',
|
|
326
|
+
actualState: 'not-initialized',
|
|
327
|
+
});
|
|
324
328
|
}
|
|
325
329
|
return this.client;
|
|
326
330
|
}
|
|
327
331
|
ensureConnected() {
|
|
328
332
|
if (!this.connected) {
|
|
329
|
-
throw new
|
|
333
|
+
throw new StateError('Not connected to SFTP server. Call connect() first.', {
|
|
334
|
+
expectedState: 'connected',
|
|
335
|
+
actualState: 'disconnected',
|
|
336
|
+
});
|
|
330
337
|
}
|
|
331
338
|
}
|
|
332
339
|
mapFileType(type) {
|
|
@@ -350,7 +357,10 @@ export async function sftp(config, operation) {
|
|
|
350
357
|
try {
|
|
351
358
|
const result = await client.connect();
|
|
352
359
|
if (!result.success) {
|
|
353
|
-
throw new
|
|
360
|
+
throw new ConnectionError(result.message || 'Failed to connect to SFTP server', {
|
|
361
|
+
host: config.host,
|
|
362
|
+
port: config.port,
|
|
363
|
+
});
|
|
354
364
|
}
|
|
355
365
|
return await operation(client);
|
|
356
366
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telnet.d.ts","sourceRoot":"","sources":["../../src/protocols/telnet.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"telnet.d.ts","sourceRoot":"","sources":["../../src/protocols/telnet.ts"],"names":[],"mappings":"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"}
|