{"_id":"@cogito.ai/searxng-sdk","name":"@cogito.ai/searxng-sdk","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.1":{"name":"@cogito.ai/searxng-sdk","version":"0.1.1","description":"The Enterprise-grade SDK for SearXNG integration","type":"module","main":"/index.js","types":"dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"keywords":["searxng","search","ai","typescript","cogito","cogito.ai"],"author":{"name":"Sunny","email":"fujia.site@gmail.com","url":"https://fujia.site"},"license":"MIT","devDependencies":{"@changesets/cli":"^2.29.4","@types/jest":"^29.5.5","@types/node":"^20.8.2","@typescript-eslint/eslint-plugin":"^6.7.4","@typescript-eslint/parser":"^6.7.4","eslint":"^8.50.0","jest":"^29.7.0","prettier":"^3.0.3","ts-jest":"^29.1.1","tsx":"^4.19.4","typescript":"^5.2.2"},"dependencies":{"axios":"^1.5.1","dotenv":"^16.3.1"},"scripts":{"build":"tsup src/index.ts --format esm,cjs --experimental-dts --clean --treeshake=smallest --splitting","build:watch":"pnpm build --watch","test":"jest","lint":"eslint src/**/*.ts","format":"prettier --write \"src/**/*.ts\"","log":"changeset && changeset version","release":"npm run build && changeset publish"},"_id":"@cogito.ai/searxng-sdk@0.1.1","_integrity":"sha512-HARIG4Gc7aZHiiyXz3m/4dOHJ5mCeFkvUjfMBhjZn7MQVpb3ovFHrPMmpZvpgkCiEjXp9LTK1YcDfsZ9kp3ZNg==","_resolved":"/private/var/folders/70/x0nk_t0s2m93xbzq4x7px0t40000gn/T/73c6a2df08de829f73d980f7cedaedb9/cogito.ai-searxng-sdk-0.1.1.tgz","_from":"file:cogito.ai-searxng-sdk-0.1.1.tgz","_nodeVersion":"22.14.0","_npmVersion":"11.2.0","dist":{"integrity":"sha512-HARIG4Gc7aZHiiyXz3m/4dOHJ5mCeFkvUjfMBhjZn7MQVpb3ovFHrPMmpZvpgkCiEjXp9LTK1YcDfsZ9kp3ZNg==","shasum":"03af0d90db48e5c67797214bdd3bcad5c0bab03d","tarball":"https://registry.npmjs.org/@cogito.ai/searxng-sdk/-/searxng-sdk-0.1.1.tgz","fileCount":8,"unpackedSize":46127,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDmvxsfF3ObP5pUOIw5q7hQRVvdzMBTUM/JuEGNMUd42AiBGU+nA63qqj6x0Pegv6i+PPsvnJpTu/mSKAWNiURCIAQ=="}]},"_npmUser":{"name":"sunnyfu","email":"fujia.site@outlook.com"},"directories":{},"maintainers":[{"name":"sunnyfu","email":"fujia.site@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/searxng-sdk_0.1.1_1747278820895_0.012544049899268161"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-15T03:13:40.789Z","0.1.1":"2025-05-15T03:13:41.090Z","modified":"2025-05-15T03:13:41.397Z"},"maintainers":[{"name":"sunnyfu","email":"fujia.site@outlook.com"}],"description":"The Enterprise-grade SDK for SearXNG integration","keywords":["searxng","search","ai","typescript","cogito","cogito.ai"],"author":{"name":"Sunny","email":"fujia.site@gmail.com","url":"https://fujia.site"},"license":"MIT","readme":"# SearXNG SDK\n\nAn enterprise-grade TypeScript SDK for integrating with SearXNG search engine.\n\n## Features\n\n- Type-safe API with full TypeScript support\n- Comprehensive error handling\n- Page content retrieval\n- Configurable search parameters\n- Result processing utilities\n- Enterprise-grade implementation with timeout handling, retries, and rate limiting awareness\n\n## Installation\n\n```bash\nnpm install searxng-sdk\n```\n\n## Quick Start\n\n```typescript\nimport { createSearXNGClient } from 'searxng-sdk';\n\n// Create a client instance\nconst searxng = createSearXNGClient({\n  baseUrl: 'http://localhost:8888',  // Your local SearXNG instance URL\n});\n\n// Perform a search\nasync function search() {\n  try {\n    const results = await searxng.search({\n      query: 'typescript AI projects',\n      limit: 10,\n      fetchContent: true  // Retrieve full page content\n    });\n    \n    console.log(`Found ${results.totalResults} results`);\n    \n    results.items.forEach(item => {\n      console.log(`- ${item.title} (${item.url})`);\n      if (item.content) {\n        console.log(`  Content length: ${item.content.length} characters`);\n      }\n    });\n  } catch (error) {\n    console.error('Search failed:', error);\n  }\n}\n\nsearch();\n```\n\n## Advanced Usage\n\n### Custom Configuration\n\n```typescript\nconst searxng = createSearXNGClient({\n  baseUrl: 'http://localhost:8888',\n  timeout: 60000,  // 60 seconds\n  headers: {\n    'X-Custom-Header': 'value'\n  },\n  defaultSearchOptions: {\n    language: 'en-US',\n    safesearch: 0,  // Disable safe search\n    limit: 20\n  }\n});\n```\n\n### Processing Search Results\n\n```typescript\nimport { ResultProcessor } from 'searxng-sdk';\n\n// After performing a search:\nconst results = await searxng.search({ query: 'machine learning', fetchContent: true });\n\n// Extract text from HTML content\nconst textContent = ResultProcessor.extractTextFromHtml(results.items[0].content || '');\n\n// Summarize content\nconst summary = ResultProcessor.summarizeContent(results.items[0]);\n\n// Extract keywords from results\nconst keywords = ResultProcessor.extractKeywords(results.items);\n\n// Categorize results by domain\nconst domainCounts = ResultProcessor.categorizeByDomain(results.items);\n```\n\n### Fetching Content for a Specific URL\n\n```typescript\nconst content = await searxng.fetchContentForUrl('https://example.com');\nconsole.log('Page content:', content);\n```\n\n## Error Handling\n\nThe SDK uses custom error types to make error handling more predictable:\n\n```typescript\nimport { SearchErrorType } from 'searxng-sdk';\n\ntry {\n  const results = await searxng.search({ query: 'example' });\n} catch (error) {\n  if (error instanceof SearchError) {\n    switch (error.type) {\n      case SearchErrorType.NETWORK_ERROR:\n        console.error('Network connection issue:', error.message);\n        break;\n      case SearchErrorType.RATE_LIMIT:\n        console.error('Rate limit reached:', error.message);\n        break;\n      case SearchErrorType.SERVER_ERROR:\n        console.error('SearXNG server error:', error.message);\n        break;\n      // Handle other error types...\n      default:\n        console.error('Unknown error occurred:', error.message);\n    }\n  } else {\n    console.error('Unexpected error:', error);\n  }\n}\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-a3adfea731b31fdad962e58cad32f1aa"}