UNPKG

idn-area-data

Version:

Indonesia administrative area data, based on the latest regulation

63 lines (61 loc) 3.09 kB
type ToCsv<T, RemovedKeys extends string, NewKeys extends string> = { [K in keyof T as Exclude<K, RemovedKeys> | NewKeys]: string; }; type Province = { code: string; name: string; }; type Regency = { code: string; name: string; provinceCode: string; }; type RegencyCsv = ToCsv<Regency, 'provinceCode', 'province_code'>; type District = { code: string; name: string; regencyCode: string; }; type DistrictCsv = ToCsv<District, 'regencyCode', 'regency_code'>; type Village = { code: string; districtCode: string; name: string; }; type VillageCsv = ToCsv<Village, 'districtCode', 'district_code'>; type Island = { code: string; coordinate: string; isOutermostSmall: boolean; isPopulated: boolean; name: string; regencyCode: string | null; }; type IslandCsv = ToCsv<Island, 'isOutermostSmall' | 'isPopulated' | 'regencyCode', 'is_outermost_small' | 'is_populated' | 'regency_code'>; type Areas = 'provinces' | 'regencies' | 'districts' | 'villages' | 'islands'; type AreaHeaders<A extends Areas> = A extends 'provinces' ? keyof Province : A extends 'regencies' ? keyof RegencyCsv : A extends 'districts' ? keyof DistrictCsv : A extends 'villages' ? keyof VillageCsv : A extends 'islands' ? keyof IslandCsv : never; type HeaderTransformer = { [A in Areas]?: { [H in AreaHeaders<A>]?: string; }; }; type ValueTransformer = { [A in Areas]?: { [H in AreaHeaders<A>]?: (value: string) => unknown; }; }; type Transformer<A extends Areas> = { headers?: HeaderTransformer[A]; values?: ValueTransformer[A]; }; type BaseOptions<A extends Areas, Tr = Transformer<A>> = { transform?: Tr; }; type Options<A extends Areas, Tr extends boolean = false> = BaseOptions<A, Tr>; declare function getData<T, A extends Areas = Areas>(area: A, options?: BaseOptions<A>): Promise<T[]>; declare function getProvinces(): Promise<Province[]>; declare function getRegencies<Tr extends boolean = false>(options?: Options<'regencies', Tr>): Promise<(Tr extends false ? ToCsv<Regency, "provinceCode", "province_code"> : Regency)[]>; declare function getDistricts<Tr extends boolean = false>(options?: Options<'districts', Tr>): Promise<(Tr extends false ? ToCsv<District, "regencyCode", "regency_code"> : District)[]>; declare function getIslands<Tr extends boolean = false>(options?: Options<'islands', Tr>): Promise<(Tr extends false ? ToCsv<Island, "regencyCode" | "isOutermostSmall" | "isPopulated", "regency_code" | "is_outermost_small" | "is_populated"> : Island)[]>; declare function getVillages<Tr extends boolean = false>(options?: Options<'villages', Tr>): Promise<(Tr extends false ? ToCsv<Village, "districtCode", "district_code"> : Village)[]>; export { type AreaHeaders, type Areas, type BaseOptions, type District, type DistrictCsv, type HeaderTransformer, type Island, type IslandCsv, type Options, type Province, type Regency, type RegencyCsv, type Transformer, type ValueTransformer, type Village, type VillageCsv, getData, getDistricts, getIslands, getProvinces, getRegencies, getVillages };