@googlemaps/google-maps-services-js
Version:
Node.js client library for Google Maps API Web Services
216 lines • 8.37 kB
JavaScript
"use strict";
/**
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Client = exports.defaultAxiosInstance = exports.X_GOOG_MAPS_EXPERIENCE_ID = exports.acceptEncoding = exports.userAgent = exports.defaultTimeout = exports.defaultHttpsAgent = exports.version = void 0;
const rax = __importStar(require("retry-axios"));
const directions_1 = require("./directions");
const distance_1 = require("./distance");
const elevation_1 = require("./elevation");
const findplacefromtext_1 = require("./places/findplacefromtext");
const geocode_1 = require("./geocode/geocode");
const geolocate_1 = require("./geolocate");
const nearestroads_1 = require("./roads/nearestroads");
const autocomplete_1 = require("./places/autocomplete");
const details_1 = require("./places/details");
const photo_1 = require("./places/photo");
const queryautocomplete_1 = require("./places/queryautocomplete");
const placesnearby_1 = require("./places/placesnearby");
const reversegeocode_1 = require("./geocode/reversegeocode");
const snaptoroads_1 = require("./roads/snaptoroads");
const textsearch_1 = require("./places/textsearch");
const timezone_1 = require("./timezone");
const axios_1 = __importDefault(require("axios"));
const agentkeepalive_1 = require("agentkeepalive");
const adapter_1 = require("./adapter");
// Cannot be `import` as it's not under TS root dir
exports.version = require("../package.json").version;
exports.defaultHttpsAgent = new agentkeepalive_1.HttpsAgent({ keepAlive: true });
exports.defaultTimeout = 10000;
exports.userAgent = `google-maps-services-node-${exports.version}`;
exports.acceptEncoding = "gzip";
exports.X_GOOG_MAPS_EXPERIENCE_ID = "X-GOOG-MAPS-EXPERIENCE-ID";
const defaultConfig = {
timeout: exports.defaultTimeout,
httpsAgent: exports.defaultHttpsAgent,
adapter: adapter_1.customAdapter,
headers: {
"User-Agent": exports.userAgent,
"Accept-Encoding": exports.acceptEncoding,
},
};
exports.defaultAxiosInstance = axios_1.default.create(defaultConfig);
rax.attach(exports.defaultAxiosInstance);
/**
* Client is a light wrapper around API methods providing shared configuration for Axios
* settings such as retry logic using the default retry-axios settings and gzip encoding.
*
* ### Instantiate with defaults
* ```
* const client = Client()
* ```
*
* ### Instantiate with config
* ```
* const client = Client({config})
* ```
*
* ### Instantiate with axiosInstance **Advanced**
* ```
* const axiosInstance = axios.create(config)
* const client = Client({axiosInstance})
* ```
*/
class Client {
constructor({ axiosInstance, config, experienceId } = {}) {
if (axiosInstance && config) {
throw new Error("Provide one of axiosInstance or config.");
}
if (axiosInstance) {
this.axiosInstance = axiosInstance;
this.axiosInstance.defaults.headers = Object.assign(Object.assign({}, defaultConfig.headers), this.axiosInstance.defaults.headers);
}
else if (config) {
config = Object.assign(Object.assign({}, defaultConfig), config);
config.headers = Object.assign(Object.assign({}, defaultConfig.headers), (config.headers || {}));
this.axiosInstance = axios_1.default.create(config);
rax.attach(this.axiosInstance);
}
else {
this.axiosInstance = exports.defaultAxiosInstance;
}
if (experienceId) {
this.setExperienceId(...experienceId);
}
}
setExperienceId(...ids) {
this.experienceId = ids;
this.axiosInstance.defaults.headers[exports.X_GOOG_MAPS_EXPERIENCE_ID] =
ids.join(",");
}
clearExperienceId() {
this.experienceId = null;
delete this.axiosInstance.defaults.headers[exports.X_GOOG_MAPS_EXPERIENCE_ID];
}
getExperienceId() {
return this.experienceId;
}
directions(request) {
return (0, directions_1.directions)(request, this.axiosInstance);
}
distancematrix(request) {
return (0, distance_1.distancematrix)(request, this.axiosInstance);
}
elevation(request) {
return (0, elevation_1.elevation)(request, this.axiosInstance);
}
timezone(request) {
return (0, timezone_1.timezone)(request, this.axiosInstance);
}
geolocate(request) {
return (0, geolocate_1.geolocate)(request, this.axiosInstance);
}
/**
* An example use of this function.
*
* ```javascript
* import { Client } from '@googlemaps/google-maps-services-js';
*
* const args = {
* params: {
* key: '<your-api-key>',
* address: 'Perth 4WD & Commercial Centre',
* }
* };
* const client = new Client();
* client.geocode(args).then(gcResponse => {
* const str = JSON.stringify(gcResponse.data.results[0]);
* console.log(`First result is: ${str}`);
* });
* ```
*/
geocode(request) {
return (0, geocode_1.geocode)(request, this.axiosInstance);
}
reverseGeocode(request) {
return (0, reversegeocode_1.reverseGeocode)(request, this.axiosInstance);
}
placeAutocomplete(request) {
return (0, autocomplete_1.placeAutocomplete)(request, this.axiosInstance);
}
placeDetails(request) {
return (0, details_1.placeDetails)(request, this.axiosInstance);
}
findPlaceFromText(request) {
return (0, findplacefromtext_1.findPlaceFromText)(request, this.axiosInstance);
}
placePhoto(request) {
return (0, photo_1.placePhoto)(request, this.axiosInstance);
}
placesNearby(request) {
return (0, placesnearby_1.placesNearby)(request, this.axiosInstance);
}
placeQueryAutocomplete(request) {
return (0, queryautocomplete_1.placeQueryAutocomplete)(request, this.axiosInstance);
}
textSearch(request) {
return (0, textsearch_1.textSearch)(request, this.axiosInstance);
}
nearestRoads(request) {
return (0, nearestroads_1.nearestRoads)(request, this.axiosInstance);
}
snapToRoads(request) {
return (0, snaptoroads_1.snapToRoads)(request, this.axiosInstance);
}
}
exports.Client = Client;
//# sourceMappingURL=client.js.map