DefinitelyTyped/maxmind/index.d.ts
2016-10-11 15:35:26 -05:00

76 lines
2.3 KiB
TypeScript

// Type definitions for maxmind v2.0
// Project: https://github.com/runk/node-maxmind
// Definitions by: Joshua DeVinney <https://github.com/geoffreak>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
export declare function open(database: string, cb: (err: Error, reader: Reader) => void): void;
export declare function open(database: string, opts: Options, cb: (err: Error, reader: Reader) => void): void;
export declare function openSync(database: string, opts?: Options): Reader;
export declare function validate(ip: string): boolean;
export declare interface Reader {
get(ip: string): Response | null;
readonly metadata: Metadata;
}
export declare interface Options {
cache?: {
max?: number;
maxAge?: number;
}
}
export declare interface Metadata {
readonly binaryFormatMajorVersion: number;
readonly binaryFormatMinorVersion: number;
readonly buildEpoch: Date;
readonly databaseType: string;
readonly languages: string[];
readonly description: Translations;
readonly ipVersion: number;
readonly nodeCount: number;
readonly recordSize: number;
readonly nodeByteSize: number;
readonly searchTreeSize: number;
readonly treeDepth: number;
}
export declare interface Response {
readonly continent?: {
readonly geoname_id: number;
readonly names: Translations;
readonly code: string;
};
readonly country?: {
readonly geoname_id: number;
readonly names: Translations;
readonly iso_code: string;
};
readonly registered_country?: {
readonly geoname_id: number;
readonly names: Translations;
readonly iso_code: string;
};
readonly location?: {
readonly accuracy_radius: number;
readonly latitude: number;
readonly longitude: number;
readonly metro_code?: number;
readonly time_zone?: string;
};
readonly subdivisions?: {
readonly geoname_id: number;
readonly names: Translations;
readonly iso_code: string;
}[];
readonly city?: {
readonly geoname_id: number;
readonly names: Translations;
};
readonly postal?: { code: string };
}
export declare interface Translations {
readonly [index: string]: string;
}