Skip to content

Commit

Permalink
fix: better TypeScript inference for createGeocoder, geocode and geod…
Browse files Browse the repository at this point in the history
…ecode (#19)
  • Loading branch information
alanpoulain committed Jun 26, 2021
1 parent d934f78 commit 3454903
Show file tree
Hide file tree
Showing 37 changed files with 642 additions and 232 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

## 0.14.0

* Better TypeScript inference for `createGeocoder`, `geocode` and `geodecode`

## 0.13.0

* [Nominatim] Add `shape` and `shapeThreshold` geocode and geodecode parameters
Expand Down
5 changes: 3 additions & 2 deletions example/node/bing.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
/* eslint-disable no-console */
import UniversalGeocoder from "../../dist/cjs/UniversalGeocoder";
import GeoJsonDumper from "../../dist/cjs/GeoJsonDumper";
import UniversalGeocoder from "UniversalGeocoder";
import GeoJsonDumper from "GeoJsonDumper";

const bingGeocoder = UniversalGeocoder.createGeocoder({
provider: "bing",
apiKey: "api_key",
});

bingGeocoder.geocode("1600 Pennsylvania Ave NW, Washington, DC", (result) => {
Expand Down
2 changes: 1 addition & 1 deletion example/node/chain.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* eslint-disable no-console */
import UniversalGeocoder from "../../dist/cjs/UniversalGeocoder";
import UniversalGeocoder from "UniversalGeocoder";

const yandexGeocoder = UniversalGeocoder.createGeocoder("yandex");
const openStreetMapGeocoder = UniversalGeocoder.createGeocoder({
Expand Down
2 changes: 1 addition & 1 deletion example/node/geoplugin.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* eslint-disable no-console */
import UniversalGeocoder from "../../dist/cjs/UniversalGeocoder";
import UniversalGeocoder from "UniversalGeocoder";

const geoPluginGeocoder = UniversalGeocoder.createGeocoder({
provider: "geoplugin",
Expand Down
2 changes: 1 addition & 1 deletion example/node/googlemaps.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* eslint-disable no-console */
import UniversalGeocoder from "../../dist/cjs/UniversalGeocoder";
import UniversalGeocoder from "UniversalGeocoder";

const googleGeocoder = UniversalGeocoder.createGeocoder({
provider: "googlemaps",
Expand Down
3 changes: 2 additions & 1 deletion example/node/locationiq.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
/* eslint-disable no-console */
import UniversalGeocoder from "../../dist/cjs/UniversalGeocoder";
import UniversalGeocoder from "UniversalGeocoder";

const locationIQGeocoder = UniversalGeocoder.createGeocoder({
provider: "locationiq",
apiKey: "api_key",
});

const asyncGeocode = async () => {
Expand Down
7 changes: 5 additions & 2 deletions example/node/mapbox.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
/* eslint-disable no-console */
import UniversalGeocoder from "../../dist/cjs/UniversalGeocoder";
import UniversalGeocoder from "UniversalGeocoder";

const mapboxGeocoder = UniversalGeocoder.createGeocoder({ provider: "mapbox" });
const mapboxGeocoder = UniversalGeocoder.createGeocoder({
provider: "mapbox",
apiKey: "api_key",
});

mapboxGeocoder.geocode("1600 Pennsylvania Ave NW, Washington, DC", (result) => {
console.log("geocode", result);
Expand Down
12 changes: 5 additions & 7 deletions example/node/mapquest.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
/* eslint-disable no-console */
import UniversalGeocoder from "../../dist/cjs/UniversalGeocoder";
import Geocoded from "../../dist/cjs/Geocoded";
import {
MapQuestGeocodeQuery,
MapQuestLocation,
} from "../../dist/cjs/provider";
import UniversalGeocoder from "UniversalGeocoder";
import Geocoded from "Geocoded";
import { MapQuestGeocodeQuery, MapQuestLocation } from "provider";

let mapQuestGeocoder = UniversalGeocoder.createGeocoder({
provider: "mapquest",
apiKey: "api_key",
});

mapQuestGeocoder.geocode(
Expand Down Expand Up @@ -36,7 +34,7 @@ asyncGeodecode();
mapQuestGeocoder.geocode(
MapQuestGeocodeQuery.create({
location: Geocoded.create({
streetNumber: 1600,
streetNumber: "1600",
streetName: "Pennsylvania Ave NW",
locality: "Washington",
}),
Expand Down
3 changes: 2 additions & 1 deletion example/node/opencage.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
/* eslint-disable no-console */
import UniversalGeocoder from "../../dist/cjs/UniversalGeocoder";
import UniversalGeocoder from "UniversalGeocoder";

const openCageGeocoder = UniversalGeocoder.createGeocoder({
provider: "opencage",
apiKey: "api_key",
});

openCageGeocoder.geocode(
Expand Down
2 changes: 1 addition & 1 deletion example/node/openstreetmap.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* eslint-disable no-console */
import UniversalGeocoder from "../../dist/cjs/UniversalGeocoder";
import UniversalGeocoder from "UniversalGeocoder";

const openStreetMapGeocoder = UniversalGeocoder.createGeocoder({
provider: "openstreetmap",
Expand Down
5 changes: 0 additions & 5 deletions example/node/tsconfig.json

This file was deleted.

2 changes: 1 addition & 1 deletion example/node/yandex.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* eslint-disable no-console */
import UniversalGeocoder from "../../dist/cjs/UniversalGeocoder";
import UniversalGeocoder from "UniversalGeocoder";

const yandexGeocoder = UniversalGeocoder.createGeocoder("yandex");

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@
"serve": "http-server",
"test": "ts-node --project tsconfig-cjs.json --compiler ttypescript -r tsconfig-paths/register node_modules/.bin/jasmine",
"test-record": "POLLY_RECORD=1 npm test",
"ts-node": "ts-node --project example/node/tsconfig.json",
"ts-node": "ts-node --project tsconfig-cjs.json --compiler ttypescript -r tsconfig-paths/register",
"watch": "concurrently -k \"webpack --config webpack.dev.js --watch\" \"ttsc -p tsconfig-cjs.json --watch\" \"ttsc --watch\""
},
"lint-staged": {
Expand Down
12 changes: 5 additions & 7 deletions spec/GeocoderProviderFactory.spec.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
import ProviderFactory, {
GeocoderProviderFactoryOptions,
} from "GeocoderProviderFactory";
import { OpenStreetMapProviderOptionsInterface } from "provider";
import ProviderFactory from "GeocoderProviderFactory";

describe("Geocoder Factory", () => {
it("expects createProvider method to return undefined for an unregistered provider", () => {
Expand All @@ -15,9 +12,10 @@ describe("Geocoder Factory", () => {
});

it("expects createProvider method to return an OpenStreetMap Provider", () => {
const provider = ProviderFactory.createProvider(<
GeocoderProviderFactoryOptions & OpenStreetMapProviderOptionsInterface
>{ provider: "openstreetmap", userAgent: "Test User-Agent" });
const provider = ProviderFactory.createProvider({
provider: "openstreetmap",
userAgent: "Test User-Agent",
});
expect(provider).toBeDefined();
});
});
8 changes: 4 additions & 4 deletions spec/provider/BingProvider.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ describe("Bing Geocoder Provider", () => {
});

expect(() =>
provider?.geocode(
provider.geocode(
"66.147.244.214",
// eslint-disable-next-line @typescript-eslint/no-empty-function
() => {}
Expand All @@ -48,7 +48,7 @@ describe("Bing Geocoder Provider", () => {
apiKey: "api_key",
});

provider?.geocode(
provider.geocode(
"1600 Pennsylvania Ave, Washington, DC",
(results: BingGeocoded[]) => {
const geocoded = results[0];
Expand Down Expand Up @@ -102,7 +102,7 @@ describe("Bing Geocoder Provider", () => {
apiKey: "api_key",
});

provider?.geodecode(48.8631507, 2.388911, (results: BingGeocoded[]) => {
provider.geodecode(48.8631507, 2.388911, (results: BingGeocoded[]) => {
const geocoded = results[0];

expect(geocoded).toBeDefined();
Expand Down Expand Up @@ -153,7 +153,7 @@ describe("Bing Geocoder Provider", () => {
apiKey: "api_key",
});

provider?.geocode(
provider.geocode(
"1600 Pennsylvania Ave, Washington, DC",
() => {
done();
Expand Down
20 changes: 10 additions & 10 deletions spec/provider/ChainProvider.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ describe("Chain Geocoder Provider", () => {
providers: [yandexGeocoder, openStreetMapGeocoder],
});

provider?.geocode(
provider.geocode(
{ text: "1600 Pennsylvania Ave, Washington, DC", locale: "en_US" },
(results: Geocoded[]) => {
const geocoded = results[0];
Expand Down Expand Up @@ -163,7 +163,7 @@ describe("Chain Geocoder Provider", () => {
providers: [yandexGeocoder, openStreetMapGeocoder],
});

provider?.geocode(
provider.geocode(
{ text: "1600 Pennsylvania Ave, Washington, DC", locale: "en_US" },
(results: Geocoded[]) => {
const geocoded = results[0];
Expand Down Expand Up @@ -192,7 +192,7 @@ describe("Chain Geocoder Provider", () => {
parallelize: true,
});

provider?.geocode(
provider.geocode(
{ text: "1600 Pennsylvania Ave, Washington, DC", locale: "en_US" },
(results: Geocoded[]) => {
const geocoded = results[0];
Expand Down Expand Up @@ -221,7 +221,7 @@ describe("Chain Geocoder Provider", () => {
parallelize: true,
});

provider?.geocode(
provider.geocode(
{ text: "1600 Pennsylvania Ave, Washington, DC", locale: "en_US" },
(results: Geocoded[]) => {
const geocoded = results[0];
Expand Down Expand Up @@ -250,7 +250,7 @@ describe("Chain Geocoder Provider", () => {
first: true,
});

provider?.geocode(
provider.geocode(
{ text: "1600 Pennsylvania Ave, Washington, DC", locale: "en_US" },
(results: Geocoded[]) => {
const geocoded = results[0];
Expand Down Expand Up @@ -278,7 +278,7 @@ describe("Chain Geocoder Provider", () => {
providers: [yandexGeocoder, openStreetMapGeocoder],
});

provider?.geodecode(
provider.geodecode(
{
coordinates: { latitude: 48.8631507, longitude: 2.388911 },
locale: "en_US",
Expand Down Expand Up @@ -309,7 +309,7 @@ describe("Chain Geocoder Provider", () => {
providers: [yandexGeocoder, openStreetMapGeocoder],
});

provider?.geodecode(
provider.geodecode(
{
coordinates: { latitude: 48.8631507, longitude: 2.388911 },
locale: "en_US",
Expand Down Expand Up @@ -341,7 +341,7 @@ describe("Chain Geocoder Provider", () => {
parallelize: true,
});

provider?.geodecode(
provider.geodecode(
{
coordinates: { latitude: 48.8631507, longitude: 2.388911 },
locale: "en_US",
Expand Down Expand Up @@ -373,7 +373,7 @@ describe("Chain Geocoder Provider", () => {
parallelize: true,
});

provider?.geodecode(
provider.geodecode(
{
coordinates: { latitude: 48.8631507, longitude: 2.388911 },
locale: "en_US",
Expand Down Expand Up @@ -405,7 +405,7 @@ describe("Chain Geocoder Provider", () => {
first: true,
});

provider?.geodecode(
provider.geodecode(
{
coordinates: { latitude: 48.8631507, longitude: 2.388911 },
locale: "en_US",
Expand Down
10 changes: 5 additions & 5 deletions spec/provider/GeoPluginProvider.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ describe("GeoPlugin Geocoder Provider", () => {
});

expect(() =>
provider?.geocode(
provider.geocode(
"1600 Pennsylvania Ave, Washington, DC",
// eslint-disable-next-line @typescript-eslint/no-empty-function
() => {}
Expand All @@ -37,7 +37,7 @@ describe("GeoPlugin Geocoder Provider", () => {
});

expect(() =>
provider?.geodecode(
provider.geodecode(
48.8631507,
2.388911,
// eslint-disable-next-line @typescript-eslint/no-empty-function
Expand All @@ -54,7 +54,7 @@ describe("GeoPlugin Geocoder Provider", () => {
provider: "geoplugin",
});

provider?.geocode("190.226.155.134", (results: GeoPluginGeocoded[]) => {
provider.geocode("190.226.155.134", (results: GeoPluginGeocoded[]) => {
const geocoded = results[0];

expect(geocoded).toBeDefined();
Expand Down Expand Up @@ -85,7 +85,7 @@ describe("GeoPlugin Geocoder Provider", () => {
provider: "geoplugin",
});

provider?.geocode("127.0.0.1", (results: GeoPluginGeocoded[]) => {
provider.geocode("127.0.0.1", (results: GeoPluginGeocoded[]) => {
const geocoded = results[0];

expect(geocoded).toBeDefined();
Expand All @@ -111,7 +111,7 @@ describe("GeoPlugin Geocoder Provider", () => {
provider: "geoplugin",
});

provider?.geocode(
provider.geocode(
"192.168.1.10",
() => {
done();
Expand Down
8 changes: 4 additions & 4 deletions spec/provider/GoogleMapsProvider.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ describe("Google Maps Geocoder Provider", () => {
});

expect(() =>
provider?.geocode(
provider.geocode(
"66.147.244.214",
// eslint-disable-next-line @typescript-eslint/no-empty-function
() => {}
Expand All @@ -73,7 +73,7 @@ describe("Google Maps Geocoder Provider", () => {
apiKey: "api_key",
});

provider?.geocode("1600 Pennsylvania Ave, Washington, DC", (results) => {
provider.geocode("1600 Pennsylvania Ave, Washington, DC", (results) => {
const geocoded = results[0];

expect(geocoded).toBeDefined();
Expand Down Expand Up @@ -126,7 +126,7 @@ describe("Google Maps Geocoder Provider", () => {
apiKey: "api_key",
});

provider?.geodecode(
provider.geodecode(
48.8631507,
2.388911,
(results: GoogleMapsGeocoded[]) => {
Expand Down Expand Up @@ -183,7 +183,7 @@ describe("Google Maps Geocoder Provider", () => {
apiKey: "api_key",
});

provider?.geocode(
provider.geocode(
"1600 Pennsylvania Ave, Washington, DC",
() => {
done();
Expand Down

0 comments on commit 3454903

Please sign in to comment.