{"id":38058823,"url":"https://github.com/funish/axis","last_synced_at":"2026-01-20T17:55:42.683Z","repository":{"id":324305158,"uuid":"1096342569","full_name":"funish/axis","owner":"funish","description":"Unified DNS management library for multi-provider DNS operations","archived":false,"fork":false,"pushed_at":"2026-01-01T15:33:36.000Z","size":347,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-06T20:05:40.403Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/funish.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-14T09:34:38.000Z","updated_at":"2025-12-26T03:03:17.000Z","dependencies_parsed_at":"2026-01-02T02:05:18.386Z","dependency_job_id":null,"html_url":"https://github.com/funish/axis","commit_stats":null,"previous_names":["demomacro/undns","funish/axis"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/funish/axis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/funish%2Faxis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/funish%2Faxis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/funish%2Faxis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/funish%2Faxis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/funish","download_url":"https://codeload.github.com/funish/axis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/funish%2Faxis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28482267,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-16T20:27:48.573Z","updated_at":"2026-01-16T20:27:48.724Z","avatar_url":"https://github.com/funish.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Axis\n\n![GitHub](https://img.shields.io/github/license/funish/axis)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](https://www.contributor-covenant.org/version/2/1/code_of_conduct/)\n\n\u003e Unified network toolkit for IP address manipulation, RDAP operations, DNS management, geolocation queries, and network connectivity detection\n\n## Packages\n\nThis is a monorepo that contains the following packages:\n\n- **[ipdo](./packages/ipdo/README.md)** - Powerful IP address manipulation library\n- **[rdap](./packages/rdap/README.md)** - Modern RDAP (Registration Data Access Protocol) client\n- **[undns](./packages/undns/README.md)** - Core DNS management library with unified API\n- **[geoip0](./packages/geoip0/README.md)** - Unified geolocation information query library with multi-provider support\n- **[unping](./packages/unping/README.md)** - Unified network connectivity detection library with multi-driver support\n\n## Quick Start\n\n### Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/funish/axis.git\ncd axis\n\n# Install dependencies\npnpm install\n```\n\n### Basic Usage\n\n```typescript\n// IP address manipulation with ipdo\nimport { isValidIP, parseCIDR, ipInRange } from \"ipdo\";\n\nconsole.log(isValidIP(\"192.168.1.1\")); // true\nconst range = parseCIDR(\"192.168.0.0/24\");\nconsole.log(ipInRange(\"192.168.0.0/24\", \"192.168.0.1\")); // true\n\n// DNS management with undns\nimport { createDNSManager } from \"undns\";\nimport nodeDriver from \"undns/drivers/node\";\n\nconst dns = createDNSManager({\n  driver: nodeDriver({\n    servers: [\"8.8.8.8\", \"1.1.1.1\"],\n  }),\n});\n\nconst records = await dns.getRecords(\"example.com\");\nconsole.log(`Found ${records.length} records`);\n\n// RDAP queries with rdap\nimport { queryDomain, queryIP, queryASN } from \"rdap\";\n\nconst domainInfo = await queryDomain(\"example.com\");\nconst ipInfo = await queryIP(\"8.8.8.8\");\nconst asnInfo = await queryASN(\"15169\");\n\nconsole.log(\"Domain:\", domainInfo.handle);\nconsole.log(\"IP Network:\", ipInfo.handle);\nconsole.log(\"ASN:\", asnInfo.handle);\n\n// Geolocation queries with geoip0\nimport { createGeoIPManager } from \"geoip0\";\nimport ipsbDriver from \"geoip0/drivers/ipsb\";\n\nconst geoip = createGeoIPManager({\n  driver: ipsbDriver(),\n});\n\nconst location = await geoip.lookup(\"1.1.1.1\");\nconst currentLocation = await geoip.current();\n\nconsole.log(\"Location for 1.1.1.1:\", location?.country, location?.city);\nconsole.log(\n  \"Current IP location:\",\n  currentLocation?.country,\n  currentLocation?.city,\n);\n\n// Network connectivity detection with unping\nimport { createPingManager } from \"unping\";\nimport tcpDriver from \"unping/drivers/tcp\";\n\nconst ping = createPingManager({\n  driver: tcpDriver({ port: 80 }),\n});\n\nconst results = await ping.ping(\"example.com\");\nconsole.log(\n  `Host is ${results[0].alive ? \"reachable\" : \"unreachable\"} (${results[0].time}ms)`,\n);\n```\n\n### Development\n\n```bash\n# Development mode\npnpm dev\n\n# Build the project\npnpm build\n\n# Run linting\npnpm lint\n\n# Test the implementation\nbun playground/drivers/node.ts\nbun playground/geoip0/drivers/ipsb.ts\nbun playground/geoip0/server.ts\nbun playground/unping/drivers/tcp.ts\n```\n\n## Contributing\n\nWe welcome contributions! Here's how to get started:\n\n### Quick Setup\n\n1. **Fork the repository** on GitHub\n2. **Clone your fork**:\n\n   ```bash\n   git clone https://github.com/YOUR_USERNAME/axis.git\n   cd axis\n   ```\n\n3. **Add upstream remote**:\n\n   ```bash\n   git remote add upstream https://github.com/funish/axis.git\n   ```\n\n4. **Install dependencies**:\n\n   ```bash\n   pnpm install\n   ```\n\n5. **Development mode**:\n\n   ```bash\n   pnpm dev\n   ```\n\n### Development Workflow\n\n1. **Code**: Follow our project standards\n2. **Test**: `pnpm build`\n3. **Commit**: Use conventional commits (`feat:`, `fix:`, etc.)\n4. **Push**: Push to your fork\n5. **Submit**: Create a Pull Request to upstream repository\n\n## Support \u0026 Community\n\n- 📫 [Report Issues](https://github.com/funish/axis/issues)\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details.\n\n---\n\nBuilt with ❤️ by [Funish](http://www.funish.net/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffunish%2Faxis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffunish%2Faxis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffunish%2Faxis/lists"}