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.
Files changed (117) hide show
  1. package/README.md +10 -1
  2. package/dist/ai/providers/anthropic.d.ts.map +1 -1
  3. package/dist/ai/providers/anthropic.js +4 -1
  4. package/dist/ai/providers/base.d.ts.map +1 -1
  5. package/dist/ai/providers/base.js +7 -2
  6. package/dist/ai/rate-limiter.d.ts.map +1 -1
  7. package/dist/ai/rate-limiter.js +4 -1
  8. package/dist/bench/generator.d.ts.map +1 -1
  9. package/dist/bench/generator.js +7 -3
  10. package/dist/bench/stats.d.ts.map +1 -1
  11. package/dist/bench/stats.js +43 -10
  12. package/dist/cache/memory-storage.d.ts.map +1 -1
  13. package/dist/cache/memory-storage.js +3 -2
  14. package/dist/cli/handler.js +14 -14
  15. package/dist/cli/index.js +602 -48
  16. package/dist/cli/presets.js +5 -5
  17. package/dist/cli/tui/ai-chat.js +10 -10
  18. package/dist/cli/tui/load-dashboard.d.ts.map +1 -1
  19. package/dist/cli/tui/load-dashboard.js +96 -55
  20. package/dist/cli/tui/scroll-buffer.d.ts +43 -0
  21. package/dist/cli/tui/scroll-buffer.d.ts.map +1 -0
  22. package/dist/cli/tui/scroll-buffer.js +162 -0
  23. package/dist/cli/tui/search-panel.d.ts +41 -0
  24. package/dist/cli/tui/search-panel.d.ts.map +1 -0
  25. package/dist/cli/tui/search-panel.js +419 -0
  26. package/dist/cli/tui/shell.d.ts +14 -0
  27. package/dist/cli/tui/shell.d.ts.map +1 -1
  28. package/dist/cli/tui/shell.js +424 -46
  29. package/dist/cli/tui/websocket.js +17 -17
  30. package/dist/core/client.d.ts.map +1 -1
  31. package/dist/core/client.js +18 -26
  32. package/dist/core/errors.d.ts +109 -1
  33. package/dist/core/errors.d.ts.map +1 -1
  34. package/dist/core/errors.js +214 -1
  35. package/dist/core/request-promise.d.ts.map +1 -1
  36. package/dist/core/request-promise.js +5 -6
  37. package/dist/core/response.d.ts.map +1 -1
  38. package/dist/core/response.js +5 -6
  39. package/dist/dns/index.d.ts +1 -0
  40. package/dist/dns/index.d.ts.map +1 -1
  41. package/dist/dns/index.js +1 -0
  42. package/dist/dns/propagation.d.ts +21 -0
  43. package/dist/dns/propagation.d.ts.map +1 -0
  44. package/dist/dns/propagation.js +169 -0
  45. package/dist/index.d.ts +1 -0
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +1 -0
  48. package/dist/mcp/client.d.ts.map +1 -1
  49. package/dist/mcp/client.js +10 -11
  50. package/dist/mcp/embeddings-loader.d.ts.map +1 -1
  51. package/dist/mcp/embeddings-loader.js +12 -2
  52. package/dist/mcp/geoip-loader.d.ts +11 -0
  53. package/dist/mcp/geoip-loader.d.ts.map +1 -0
  54. package/dist/mcp/geoip-loader.js +107 -0
  55. package/dist/mcp/ip-intel.d.ts +28 -0
  56. package/dist/mcp/ip-intel.d.ts.map +1 -0
  57. package/dist/mcp/ip-intel.js +209 -0
  58. package/dist/mcp/search/hybrid-search.d.ts.map +1 -1
  59. package/dist/mcp/search/hybrid-search.js +5 -1
  60. package/dist/mcp/search/math.d.ts.map +1 -1
  61. package/dist/mcp/search/math.js +5 -1
  62. package/dist/mcp/server.d.ts +4 -0
  63. package/dist/mcp/server.d.ts.map +1 -1
  64. package/dist/mcp/server.js +114 -1
  65. package/dist/plugins/compression.js +4 -2
  66. package/dist/plugins/har-player.d.ts.map +1 -1
  67. package/dist/plugins/har-player.js +8 -11
  68. package/dist/plugins/odata.d.ts.map +1 -1
  69. package/dist/plugins/odata.js +5 -2
  70. package/dist/protocols/ftp.d.ts.map +1 -1
  71. package/dist/protocols/ftp.js +69 -16
  72. package/dist/protocols/sftp.d.ts.map +1 -1
  73. package/dist/protocols/sftp.js +13 -3
  74. package/dist/protocols/telnet.d.ts.map +1 -1
  75. package/dist/protocols/telnet.js +25 -6
  76. package/dist/transport/base-udp.d.ts.map +1 -1
  77. package/dist/transport/base-udp.js +7 -4
  78. package/dist/transport/udp-response.d.ts.map +1 -1
  79. package/dist/transport/udp-response.js +10 -3
  80. package/dist/transport/udp.d.ts.map +1 -1
  81. package/dist/transport/udp.js +5 -1
  82. package/dist/transport/undici.d.ts.map +1 -1
  83. package/dist/transport/undici.js +75 -63
  84. package/dist/utils/agent-manager.d.ts +1 -0
  85. package/dist/utils/agent-manager.d.ts.map +1 -1
  86. package/dist/utils/agent-manager.js +11 -0
  87. package/dist/utils/client-pool.d.ts.map +1 -1
  88. package/dist/utils/client-pool.js +4 -1
  89. package/dist/utils/dns-toolkit.d.ts +88 -1
  90. package/dist/utils/dns-toolkit.d.ts.map +1 -1
  91. package/dist/utils/dns-toolkit.js +704 -6
  92. package/dist/utils/doh.d.ts.map +1 -1
  93. package/dist/utils/doh.js +13 -16
  94. package/dist/utils/download.d.ts.map +1 -1
  95. package/dist/utils/download.js +10 -11
  96. package/dist/utils/rdap.d.ts +9 -0
  97. package/dist/utils/rdap.d.ts.map +1 -1
  98. package/dist/utils/rdap.js +78 -9
  99. package/dist/utils/security-grader.d.ts +47 -0
  100. package/dist/utils/security-grader.d.ts.map +1 -0
  101. package/dist/utils/security-grader.js +637 -0
  102. package/dist/utils/sparkline.d.ts +18 -0
  103. package/dist/utils/sparkline.d.ts.map +1 -0
  104. package/dist/utils/sparkline.js +55 -0
  105. package/dist/utils/sse.d.ts.map +1 -1
  106. package/dist/utils/sse.js +5 -6
  107. package/dist/utils/system-metrics.d.ts +26 -0
  108. package/dist/utils/system-metrics.d.ts.map +1 -0
  109. package/dist/utils/system-metrics.js +81 -0
  110. package/dist/utils/tls-inspector.d.ts +6 -0
  111. package/dist/utils/tls-inspector.d.ts.map +1 -1
  112. package/dist/utils/tls-inspector.js +35 -1
  113. package/dist/webrtc/index.d.ts.map +1 -1
  114. package/dist/webrtc/index.js +21 -7
  115. package/dist/websocket/client.d.ts.map +1 -1
  116. package/dist/websocket/client.js +13 -16
  117. 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 Error('HybridSearch not initialized. Call initialize() first.');
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":"AAoBA,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBjE;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"}
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"}
@@ -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 Error(`Vector length mismatch: ${a.length} vs ${b.length}`);
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;
@@ -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;
@@ -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;AAEpB,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;IAkHhB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,cAAc;IAoBtB,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,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;IAgBtB,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"}
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"}
@@ -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 Error(`Unknown transport: ${this.options.transport}`);
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 { ReckerError } from '../core/errors.js';
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 ReckerError(`Unsupported compression algorithm: ${algorithm}`, undefined, undefined, ['Use one of: gzip, br, deflate.', 'Remove compression setting or switch to a supported algorithm.']);
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,CAuF3D"}
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 { ReckerError } from '../core/errors.js';
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 ReckerError(`Failed to load HAR file: ${options.path}`, undefined, undefined, [
13
- 'Ensure the HAR file exists at the specified path.',
14
- 'Check that the file is valid JSON.',
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 ReckerError(`[Recker HAR Player] No matching recording found for ${req.method} ${req.url}`, req, undefined, [
52
- 'Ensure the HAR file contains an entry for this URL/method.',
53
- 'Normalize query parameters or body to match the recorded request.',
54
- 'Regenerate the HAR with the exact same request.'
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":"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"}
1
+ {"version":3,"file":"odata.d.ts","sourceRoot":"","sources":["../../src/plugins/odata.ts"],"names":[],"mappings":"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"}
@@ -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 Error(`Unsupported method: ${method}`);
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 Error(`OData request failed: ${response.status}`);
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":"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"}
1
+ {"version":3,"file":"ftp.d.ts","sourceRoot":"","sources":["../../src/protocols/ftp.ts"],"names":[],"mappings":"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"}
@@ -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 Error(`Server not ready: ${welcome.message}`);
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 Error(response.message);
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 Error(response.message);
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 Error(rnfrResponse.message);
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 Error('Not connected. Call connect() first.');
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 Error('Connection timeout'));
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 Error('Connection timeout'));
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 Error(`AUTH TLS failed: ${authResponse.message}`);
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 Error(`Authentication failed: ${userResponse.message}`);
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 Error(`Authentication failed: ${passResponse.message}`);
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 Error(`PASV failed: ${pasvResponse.message}`);
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 Error('Failed to parse PASV response');
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 Error(response.message));
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 Error('Not connected');
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 Error('Not connected to FTP server. Call connect() first.');
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 Error(result.message || 'Failed to connect to FTP server');
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":"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"}
1
+ {"version":3,"file":"sftp.d.ts","sourceRoot":"","sources":["../../src/protocols/sftp.ts"],"names":[],"mappings":"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"}
@@ -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 Error('Client not initialized. Call connect() first.');
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 Error('Not connected to SFTP server. Call connect() first.');
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 Error(result.message || 'Failed to connect to SFTP server');
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":"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"}
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;AAwI3C,MAAM,WAAW,YAAY;IAE3B,IAAI,EAAE,MAAM,CAAC;IAEb,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE9B,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE9B,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEhC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,IAAI;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAEhC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE9B,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,EAAE,CAAC;IACZ,KAAK,EAAE,EAAE,CAAC;IACV,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;IACf,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;IACf,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3B;AA4BD,qBAAa,MAAO,SAAQ,YAAY;IACtC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,UAAU,CAAoE;IAGtF,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,aAAa,CAAqB;gBAE9B,MAAM,EAAE,YAAY;IA+B1B,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC;IAgExC,WAAW,IAAI,OAAO;IAOhB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAkCnF,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IA6B9G,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAOvD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAoB1F,SAAS,IAAI,MAAM;IAab,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAW5B,OAAO,IAAI,IAAI;IAef,OAAO,CAAC,UAAU;IA0BlB,OAAO,CAAC,aAAa;IA4DrB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,iBAAiB;IA0CzB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,kBAAkB;YAqCZ,mBAAmB;IAoCjC,OAAO,CAAC,KAAK;IAgBb,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,WAAW;IA2BnB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,OAAO;IAaf,OAAO,CAAC,KAAK;CAKd;AAiBD,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAEzD;AAsBD,wBAAsB,MAAM,CAAC,CAAC,EAC5B,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GACxC,OAAO,CAAC,CAAC,CAAC,CAgBZ"}