{"id":25689019,"url":"https://github.com/alice39s/ourairports-data-js","last_synced_at":"2026-02-01T02:09:18.010Z","repository":{"id":276595341,"uuid":"929671872","full_name":"Alice39s/ourairports-data-js","owner":"Alice39s","description":"A TypeScript library for working with OurAirports Data data. ","archived":false,"fork":false,"pushed_at":"2026-01-01T00:16:19.000Z","size":157,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-05T13:42:21.655Z","etag":null,"topics":["airports","bun","iata-codes","iata-lookup","icao-codes","icao-lookup","typescript"],"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/Alice39s.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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-02-09T05:07:29.000Z","updated_at":"2025-02-09T15:22:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"db39eabf-b9cd-43ab-819c-cf5024070bec","html_url":"https://github.com/Alice39s/ourairports-data-js","commit_stats":null,"previous_names":["alice39s/ourairports-js"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/Alice39s/ourairports-data-js","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alice39s%2Fourairports-data-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alice39s%2Fourairports-data-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alice39s%2Fourairports-data-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alice39s%2Fourairports-data-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Alice39s","download_url":"https://codeload.github.com/Alice39s/ourairports-data-js/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alice39s%2Fourairports-data-js/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28964617,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T01:25:30.373Z","status":"online","status_checked_at":"2026-02-01T02:00:08.102Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["airports","bun","iata-codes","iata-lookup","icao-codes","icao-lookup","typescript"],"created_at":"2025-02-24T21:17:27.981Z","updated_at":"2026-02-01T02:09:18.003Z","avatar_url":"https://github.com/Alice39s.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OurAirports Data - JS Library\n\nA TypeScript library for working with [OurAirports Data](https://github.com/davidmegginson/ourairports-data) data. This library provides easy access to airport information, including IATA/ICAO codes, geographical coordinates, and more.\n\n\u003e [!WARNING]  \n\u003e 🔧 This library is not yet ready for production use. It is still under development.\n\u003e\n\u003e This project uses only clean data containing IATA Code airports in order to reduce the size of the package.\n\n\u003e [!IMPORTANT]  \n\u003e This is not an official project of OurAirports.com!\n\n## Features\n\n- 🌐 Universal package that works in both Node.js and browser environments\n- 🔍 Search airports by IATA/ICAO codes\n- 🗺️ Find airports by country or within a radius\n- ✨ TypeScript support with full type definitions\n- 🚀 Modern ESM package with tree-shaking support\n- ⚡ Efficient data loading with sharding\n- 🔒 Data validation using Zod schemas\n- 📦 Automatic environment detection and optimization\n\n## Installation\n\n### Package Manager\n\n```bash\nnpm install ourairports-data-js\n# or\nyarn add ourairports-data-js\n# or\npnpm add ourairports-data-js\n# or\nbun add ourairports-data-js\n```\n\n### CDN\n\n```html\n\u003c!-- Using unpkg --\u003e\n\u003cscript type=\"module\"\u003e\n  import OurAirports from 'https://unpkg.com/ourairports-data-js/dist/browser/index.js';\n\n  const airports = new OurAirports();\n  await airports.init();\n\u003c/script\u003e\n\n\u003c!-- Using jsDelivr --\u003e\n\u003cscript type=\"module\"\u003e\n  import OurAirports from 'https://cdn.jsdelivr.net/npm/ourairports-data-js/dist/browser/index.js';\n\n  const airports = new OurAirports();\n  await airports.init();\n\u003c/script\u003e\n```\n\n## Usage\n\n### Basic Usage\n\nThe library automatically detects your environment (Node.js or browser) and uses the appropriate implementation:\n\n```typescript\nimport OurAirports from 'ourairports-data-js';\n\nasync function main() {\n  // Create instance\n  const airports = new OurAirports();\n\n  // Initialize (auto-detects environment)\n  await airports.init();\n\n  // Find airport by IATA code\n  const pek = airports.findByIataCode('PEK');\n  console.log(pek?.name); // \"Beijing Capital International Airport\"\n  console.log(pek?.type); // \"large_airport\"\n\n  // Find airport by ICAO code\n  const zbaa = airports.findByIcaoCode('ZBAA');\n  console.log(zbaa?.name); // \"Beijing Capital International Airport\"\n\n  // Find airports in China\n  const chineseAirports = airports.findByCountry('CN');\n  console.log(`Found ${chineseAirports.length} airports in China`);\n\n  // Find airports within 100km radius of Beijing Capital Airport\n  const nearbyAirports = airports.findAirportsInRadius(40.0799, 116.6031, 100);\n  console.log(\n    'Nearby airports:',\n    nearbyAirports.map(a =\u003e a.name)\n  );\n\n  // Search airports with filters\n  const largeAirports = airports.searchAirports({\n    type: 'large_airport',\n    hasIataCode: true,\n    hasScheduledService: true,\n    country: 'CN',\n    continent: 'AS',\n  });\n}\n\nmain().catch(console.error);\n```\n\n### Advanced Usage\n\n#### Environment-Specific Imports\n\nYou can explicitly import the environment-specific version if needed:\n\n```typescript\n// Browser-specific import\nimport OurAirports from 'ourairports-data-js/browser';\n\n// Node.js-specific import\nimport OurAirports from 'ourairports-data-js/node';\n```\n\n#### Type Imports\n\n```typescript\n// Import types\nimport type {\n  BasicInfo, // Airport basic information\n  AirportFilter, // Search filter interface\n  AirportType, // Airport type enum\n  Coordinates, // Airport coordinates\n  Region, // Airport region information\n} from 'ourairports-data-js';\n\n// Import validation schemas\nimport { BasicInfoSchema, CoordinatesSchema, RegionSchema } from 'ourairports-data-js';\n```\n\n### Search Examples\n\n#### Find by IATA/ICAO Code\n\n```typescript\n// Find by IATA code\nconst pek = airports.findByIataCode('PEK');\nconsole.log(pek?.name); // \"Beijing Capital International Airport\"\n\n// Find by ICAO code\nconst zbaa = airports.findByIcaoCode('ZBAA');\nconsole.log(zbaa?.name); // \"Beijing Capital International Airport\"\n```\n\n#### Search with Filters\n\n```typescript\n// Search for major airports in China\nconst majorAirports = airports.searchAirports({\n  type: 'large_airport',\n  country: 'CN',\n  hasIataCode: true,\n  hasScheduledService: true,\n  continent: 'AS',\n});\n\n// Find airports within radius\nconst nearbyAirports = airports.findAirportsInRadius(\n  40.0799, // latitude\n  116.6031, // longitude\n  100 // radius in kilometers\n);\n```\n\n### Advanced Features\n\n#### Raw Data Access\n\n```typescript\n// Get access to raw data for advanced usage\nconst { basicInfo, codes, coordinates, region, references } = airports.data;\n```\n\n#### Environment Detection\n\n```typescript\n// Check current environment\nif (airports.isInBrowser) {\n  console.log('Running in browser');\n} else {\n  console.log('Running in Node.js');\n}\n```\n\n## API Reference\n\n### Constructor\n\n- `new OurAirports()` - Create a new instance\n\n### Initialization Methods\n\n- `init()` - Auto-detect environment and initialize (recommended)\n- `initialize()` - Explicit Node.js initialization\n- `initializeAsync()` - Explicit browser initialization\n\n### Search Methods\n\n- `findByIataCode(code: string): BasicInfo | undefined` - Find airport by IATA code\n- `findByIcaoCode(code: string): BasicInfo | undefined` - Find airport by ICAO code\n- `findByCountry(countryCode: string): BasicInfo[]` - Find airports by country code\n- `findAirportsInRadius(lat: number, lon: number, radiusKm: number): BasicInfo[]` - Find airports within radius\n- `searchAirports(filter: AirportFilter): BasicInfo[]` - Search airports with filters\n\n### Properties\n\n- `isInitialized: boolean` - Check if the instance is initialized\n- `isInBrowser: boolean` - Check if running in browser environment\n- `data: AirportData` - Get raw data for advanced usage\n\n### Types\n\n```typescript\ninterface AirportFilter {\n  type?: string; // e.g., 'large_airport', 'medium_airport', 'small_airport'\n  country?: string; // ISO country code, e.g., 'US', 'CN'\n  continent?: string; // Continent code, e.g., 'NA', 'AS'\n  hasIataCode?: boolean; // Whether the airport has an IATA code\n  hasScheduledService?: boolean; // Whether the airport has scheduled service\n}\n\ninterface BasicInfo {\n  id: number; // Unique identifier\n  ident: string; // Airport identifier (usually ICAO code)\n  type: string; // Airport type\n  name: string; // Airport name\n  // ... more fields available in ./src/types.ts\n}\n```\n\n## Data Updates\n\nThe library uses data from OurAirports, which is updated periodically:\n\n- Node.js: Data is bundled with the package\n- Browser: Data is automatically fetched from CDN\n- Updates are delivered with each package release\n\n## Environment-Specific Features\n\n### Node.js\n\n- Synchronous data loading available\n- File system access for data files\n- Better performance with local data\n- CommonJS and ESM support\n\n### Browser\n\n- Automatic CDN data loading\n- No file system dependencies\n- Optimized bundle size\n- Modern ESM format\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## License\n\nMIT License - see the [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- Data provided by [OurAirports](https://ourairports.com/)\n- Built with TypeScript and Zod\n- Powered by jsDelivr CDN for browser environments\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falice39s%2Fourairports-data-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falice39s%2Fourairports-data-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falice39s%2Fourairports-data-js/lists"}