1.0.1 • Published 2 months ago
@slynhq/geo v1.0.1
@slynhq/geo
A lightweight Next.js package for accessing geolocation data from Vercel's edge network headers.
Features
- Get complete geolocation data (city, country, region, coordinates, continent)
- Individual helper functions for specific geolocation data
- Middleware compatibility
- TypeScript support
- Zero dependencies
Installation
npm install @slynhq/geo
# or
yarn add @slynhq/geo
# or
pnpm add @slynhq/geo
Usage
Get Complete Geolocation Data
import { getGeoLocation } from "@slynhq/geo";
// In a route handler
export async function GET() {
const geo = await getGeoLocation();
return Response.json({ geo });
}
The getGeoLocation()
function returns an object with the following properties:
city
: City namecountry
: Country code (e.g., 'US', 'GB')countryRegion
: Country regionlatitude
: Latitude coordinatelongitude
: Longitude coordinateregion
: Region nameuserAgent
: User agent stringcontinent
: Continent name
Individual Helper Functions
import { getCountry, getCity, getRegion, getContinent } from "@slynhq/geo";
// Get country code
const country = await getCountry(); // e.g., 'US'
// Get city name
const city = await getCity(); // e.g., 'San Francisco'
// Get region name
const region = await getRegion(); // e.g., 'California'
// Get continent name
const continent = await getContinent(); // e.g., 'North America'
Middleware Usage
import { getGeo } from "@slynhq/geo";
import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";
export function middleware(request: NextRequest) {
const geo = getGeo(request);
// Use geo data in middleware
return NextResponse.next();
}
Get All Headers
import { getAllHeaders } from "@slynhq/geo";
export async function GET() {
const headers = await getAllHeaders();
return Response.json({ headers });
}
Requirements
- Next.js 13 or later
- Vercel deployment (for geolocation headers)
Note
This package relies on Vercel's edge network headers for geolocation data. It will only work when deployed on Vercel's platform.
License
MIT