mapnests-browser-sdk 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +177 -85
- package/dist/build_url.d.ts +1 -0
- package/dist/build_url.js +10 -9
- package/dist/client.d.ts +8 -5
- package/dist/client.js +25 -17
- package/dist/fetch_remote_time.d.ts +1 -0
- package/dist/fetch_remote_time.js +13 -0
- package/dist/generate_token.js +8 -7
- package/dist/index.d.ts +9 -6
- package/dist/index.js +27 -6
- package/dist/main.js +94 -24
- package/dist/modules/distance_matrix.d.ts +2 -0
- package/dist/modules/distance_matrix.js +5 -2
- package/dist/modules/distance_matrix_details.js +2 -1
- package/dist/modules/multi_source_route_summary.d.ts +20 -0
- package/dist/modules/multi_source_route_summary.js +2 -0
- package/dist/modules/pairwise_route_summary.js +2 -0
- package/dist/modules/reverse.js +2 -1
- package/dist/modules/search.js +2 -1
- package/dist/request.js +7 -3
- package/dist/secure_req.js +6 -3
- package/dist/secure_request.js +20 -13
- package/package.json +2 -3
- package/dist/modules/pairwise_summary.js +0 -1
- /package/dist/modules/{pairwise_summary.d.ts → pairwise_route_summary.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
##### Readme Top
|
|
4
4
|
|
|
5
|
-
|
|
6
5
|
<br />
|
|
7
6
|
<div align="center">
|
|
8
7
|
<a href="#">
|
|
@@ -16,25 +15,25 @@ Map Nests
|
|
|
16
15
|
</p>
|
|
17
16
|
</div>
|
|
18
17
|
|
|
19
|
-
|
|
20
18
|
A secure and efficient TS SDK for the **Mapnests Platform**, enabling powerful geospatial capabilities such as **Search (Geocoding)**, **Reverse (Reverse Geocoding)**, and **Distance Matrix**.
|
|
21
19
|
|
|
22
|
-
|
|
23
20
|
---
|
|
24
21
|
|
|
25
22
|
## 📚 Table of Contents
|
|
26
23
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
- [Installation](#installation)
|
|
25
|
+
- [Quick Start](#quick-start)
|
|
26
|
+
- [Core Features](#core-features)
|
|
27
|
+
|
|
28
|
+
- [Distance Matrix](#distance-matrix)
|
|
29
|
+
- [Pairwise Route Summary](#pairwise-route-summary)
|
|
30
|
+
- [Multi Source Route Summary](#multi-source-route-summary)
|
|
31
|
+
- [Distance Matrix Details](#distance-matrix-details)
|
|
32
|
+
- [Search (Geocoding)](#search-geocoding)
|
|
33
|
+
- [Reverse Geocoding](#reverse-geocoding)
|
|
30
34
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
* [Distance Matrix Details](#distance-matrix-details)
|
|
34
|
-
* [Search (Geocoding)](#search-geocoding)
|
|
35
|
-
* [Reverse Geocoding](#reverse-geocoding)
|
|
36
|
-
* [License](#license)
|
|
37
|
-
* [Contact](#contact)
|
|
35
|
+
- [License](#license)
|
|
36
|
+
- [Contact](#contact)
|
|
38
37
|
|
|
39
38
|
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
40
39
|
|
|
@@ -43,13 +42,13 @@ A secure and efficient TS SDK for the **Mapnests Platform**, enabling powerful g
|
|
|
43
42
|
## Installation
|
|
44
43
|
|
|
45
44
|
```bash
|
|
46
|
-
npm install mapnests-sdk
|
|
45
|
+
npm install mapnests-browser-sdk"
|
|
47
46
|
```
|
|
48
47
|
|
|
49
48
|
Import into your project:
|
|
50
49
|
|
|
51
50
|
```ts
|
|
52
|
-
import { Client, Mode } from
|
|
51
|
+
import { Client, Mode } from "mapnests-browser-sdk"";
|
|
53
52
|
```
|
|
54
53
|
|
|
55
54
|
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
@@ -59,13 +58,13 @@ import { Client, Mode } from 'mapnests-sdk';
|
|
|
59
58
|
## Quick Start
|
|
60
59
|
|
|
61
60
|
```ts
|
|
62
|
-
import { Client, Mode } from
|
|
61
|
+
import { Client, Mode } from "mapnests-browser-sdk"";
|
|
63
62
|
|
|
64
63
|
(async function () {
|
|
65
|
-
|
|
64
|
+
const client = new Client("YOUR_API_KEY", "your.package.name");
|
|
66
65
|
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
const result = await client.search({ Query: "Dhaka" });
|
|
67
|
+
console.log("Search result:", result);
|
|
69
68
|
})();
|
|
70
69
|
```
|
|
71
70
|
|
|
@@ -83,11 +82,11 @@ import { Client, Mode } from 'mapnests-sdk';
|
|
|
83
82
|
|
|
84
83
|
```ts
|
|
85
84
|
const res = await client.distanceMatrix({
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
85
|
+
OriginLat: 23.8103,
|
|
86
|
+
OriginLon: 90.4125,
|
|
87
|
+
DestLat: 23.75,
|
|
88
|
+
DestLon: 90.42,
|
|
89
|
+
Mode: Mode.Walking,
|
|
91
90
|
});
|
|
92
91
|
console.log(res);
|
|
93
92
|
```
|
|
@@ -96,10 +95,10 @@ console.log(res);
|
|
|
96
95
|
|
|
97
96
|
```json
|
|
98
97
|
{
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
98
|
+
"data": {
|
|
99
|
+
"distanceInMetres": 8900,
|
|
100
|
+
"etaInSeconds": 1300
|
|
101
|
+
}
|
|
103
102
|
}
|
|
104
103
|
```
|
|
105
104
|
|
|
@@ -107,51 +106,142 @@ console.log(res);
|
|
|
107
106
|
|
|
108
107
|
### Pairwise Route Summary
|
|
109
108
|
|
|
110
|
-
> Computes distances, ETAs and geometries
|
|
109
|
+
> Computes distances, ETAs and geometries for multiple source-destination pairs in a single request. This is ideal for optimizing batch operations and comparing route statistics efficiently.
|
|
111
110
|
|
|
112
111
|
**Example Input:**
|
|
113
112
|
|
|
114
113
|
```ts
|
|
115
114
|
const summary = await client.pairwiseRouteSummary({
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
115
|
+
pairs: [
|
|
116
|
+
{
|
|
117
|
+
id: 1,
|
|
118
|
+
src: { lat: 23.8103, lon: 90.4125 },
|
|
119
|
+
dest: { lat: 23.75, lon: 90.42 },
|
|
120
|
+
mode: Mode.Walking,
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
id: 2,
|
|
124
|
+
src: { lat: 23.7806, lon: 90.3984 },
|
|
125
|
+
dest: { lat: 23.774, lon: 90.3681 },
|
|
126
|
+
mode: Mode.Car,
|
|
127
|
+
},
|
|
128
|
+
],
|
|
130
129
|
});
|
|
131
130
|
console.log(summary);
|
|
131
|
+
```
|
|
132
132
|
|
|
133
|
+
**Example Output:**
|
|
134
|
+
|
|
135
|
+
```json
|
|
136
|
+
{
|
|
137
|
+
"status": true,
|
|
138
|
+
"message": "success",
|
|
139
|
+
"data": [
|
|
140
|
+
{
|
|
141
|
+
"id": 1,
|
|
142
|
+
"distanceInMeters": 8900,
|
|
143
|
+
"etaInSeconds": 1300,
|
|
144
|
+
"geometry": "encoded_polyline_string"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"id": 2,
|
|
148
|
+
"distanceInMeters": 4800,
|
|
149
|
+
"etaInSeconds": 700,
|
|
150
|
+
"geometry": "another_encoded_polyline"
|
|
151
|
+
}
|
|
152
|
+
]
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
157
|
+
|
|
158
|
+
### Multi Source Route Summary
|
|
159
|
+
|
|
160
|
+
> Computes distances, ETAs and geometries for multiple source-destination pairs in a single request. This is ideal for optimizing batch operations and comparing route statistics efficiently.
|
|
161
|
+
|
|
162
|
+
**Example Input:**
|
|
163
|
+
|
|
164
|
+
```ts
|
|
165
|
+
const summary = await client.multiSourceRouteSummary({
|
|
166
|
+
sources: [
|
|
167
|
+
{
|
|
168
|
+
id: 1,
|
|
169
|
+
lat: 23.7805733,
|
|
170
|
+
lon: 90.2792399,
|
|
171
|
+
mode: "car",
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
id: 2,
|
|
175
|
+
lat: 23.75,
|
|
176
|
+
lon: 90.36,
|
|
177
|
+
mode: "car",
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
id: 3,
|
|
181
|
+
lat: 23.7,
|
|
182
|
+
lon: 90.42,
|
|
183
|
+
mode: "car",
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
id: 4,
|
|
187
|
+
lat: 23.7654321,
|
|
188
|
+
lon: 90.3456789,
|
|
189
|
+
mode: "car",
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
id: 5,
|
|
193
|
+
lat: 23.7123456,
|
|
194
|
+
lon: 90.3765432,
|
|
195
|
+
mode: "car",
|
|
196
|
+
},
|
|
197
|
+
],
|
|
198
|
+
destination: {
|
|
199
|
+
lat: 23.810332,
|
|
200
|
+
lon: 90.412518,
|
|
201
|
+
},
|
|
202
|
+
});
|
|
133
203
|
```
|
|
134
204
|
|
|
135
205
|
**Example Output:**
|
|
136
206
|
|
|
137
207
|
```json
|
|
138
208
|
{
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
209
|
+
"data": {
|
|
210
|
+
"routeSummaries": [
|
|
211
|
+
{
|
|
212
|
+
"id": 1,
|
|
213
|
+
"distanceInMeters": 23782.9,
|
|
214
|
+
"etaInSeconds": 1720,
|
|
215
|
+
"geometry": "encoded_polyline_string"
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"id": 2,
|
|
219
|
+
"distanceInMeters": 13421.9,
|
|
220
|
+
"etaInSeconds": 1084.9,
|
|
221
|
+
"geometry": "encoded_polyline_string"
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"id": 3,
|
|
225
|
+
"distanceInMeters": 15212.3,
|
|
226
|
+
"etaInSeconds": 1285.3,
|
|
227
|
+
"geometry": "encoded_polyline_string"
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"id": 4,
|
|
231
|
+
"distanceInMeters": 14120.2,
|
|
232
|
+
"etaInSeconds": 1129.3,
|
|
233
|
+
"geometry": "encoded_polyline_string"
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"id": 5,
|
|
237
|
+
"distanceInMeters": 16555.4,
|
|
238
|
+
"etaInSeconds": 1388,
|
|
239
|
+
"geometry": "encoded_polyline_string"
|
|
240
|
+
}
|
|
241
|
+
]
|
|
147
242
|
},
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
"distanceInMeters": 4800,
|
|
151
|
-
"etaInSeconds": 700,
|
|
152
|
-
"geometry": "another_encoded_polyline"
|
|
153
|
-
}
|
|
154
|
-
]
|
|
243
|
+
"message": "Success",
|
|
244
|
+
"status": true
|
|
155
245
|
}
|
|
156
246
|
```
|
|
157
247
|
|
|
@@ -165,11 +255,11 @@ console.log(summary);
|
|
|
165
255
|
|
|
166
256
|
```ts
|
|
167
257
|
const details = await client.distanceMatrixDetails({
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
258
|
+
OriginLat: 23.7806,
|
|
259
|
+
OriginLon: 90.3984,
|
|
260
|
+
DestLat: 23.774,
|
|
261
|
+
DestLon: 90.3681,
|
|
262
|
+
Mode: Mode.Car,
|
|
173
263
|
});
|
|
174
264
|
console.log(details);
|
|
175
265
|
```
|
|
@@ -206,7 +296,9 @@ console.log(details);
|
|
|
206
296
|
**Example Input:**
|
|
207
297
|
|
|
208
298
|
```ts
|
|
209
|
-
const searchRes = await client.search({
|
|
299
|
+
const searchRes = await client.search({
|
|
300
|
+
Query: "Bashundhara Residential Area, Dhaka",
|
|
301
|
+
});
|
|
210
302
|
console.log(searchRes);
|
|
211
303
|
```
|
|
212
304
|
|
|
@@ -214,16 +306,16 @@ console.log(searchRes);
|
|
|
214
306
|
|
|
215
307
|
```json
|
|
216
308
|
{
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
309
|
+
"data": [
|
|
310
|
+
{
|
|
311
|
+
"place_id": "123456",
|
|
312
|
+
"lat": "23.8156",
|
|
313
|
+
"lon": "90.4287",
|
|
314
|
+
"display_name": "Bashundhara Residential Area, Dhaka, Bangladesh"
|
|
315
|
+
}
|
|
316
|
+
],
|
|
317
|
+
"status": true,
|
|
318
|
+
"message": "success"
|
|
227
319
|
}
|
|
228
320
|
```
|
|
229
321
|
|
|
@@ -244,16 +336,16 @@ console.log(revRes);
|
|
|
244
336
|
|
|
245
337
|
```json
|
|
246
338
|
{
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
339
|
+
"data": {
|
|
340
|
+
"displayName": "Farmgate, Tejgaon, Dhaka, Bangladesh",
|
|
341
|
+
"address": {
|
|
342
|
+
"country": "Bangladesh",
|
|
343
|
+
"state": "Dhaka Division",
|
|
344
|
+
"city": "Dhaka"
|
|
345
|
+
}
|
|
346
|
+
},
|
|
347
|
+
"status": true,
|
|
348
|
+
"message": "success"
|
|
257
349
|
}
|
|
258
350
|
```
|
|
259
351
|
|
|
@@ -270,4 +362,4 @@ This project is licensed under the [MIT License](LICENSE).
|
|
|
270
362
|
## Contact
|
|
271
363
|
|
|
272
364
|
📧 [support@example.com](mailto:support@example.com)
|
|
273
|
-
Explain
|
|
365
|
+
Explain
|
package/dist/build_url.d.ts
CHANGED
package/dist/build_url.js
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BASE_URL = void 0;
|
|
4
|
+
exports.buildURLFromJSON = buildURLFromJSON;
|
|
5
|
+
exports.BASE_URL = 'https://engine.mapnests.com';
|
|
6
|
+
function buildURLFromJSON(label, baseUrl, jsonStr) {
|
|
3
7
|
const data = JSON.parse(jsonStr);
|
|
4
8
|
switch (label) {
|
|
5
|
-
case '
|
|
6
|
-
const query = encodeURIComponent(data.Query);
|
|
7
|
-
const lang = encodeURIComponent(data.Language);
|
|
8
|
-
const limit = data.Limit;
|
|
9
|
-
return `${baseUrl}/geomap/api/v1/geocode?q=${query}&language=${lang}&limit=${limit}`;
|
|
10
|
-
}
|
|
11
|
-
case 'reverseGeocode': {
|
|
9
|
+
case 'reverse': {
|
|
12
10
|
return `${baseUrl}/geomap/api/v1/reverse?lat=${data.Lat}&lon=${data.Lon}`;
|
|
13
11
|
}
|
|
14
12
|
case 'distanceMatrix':
|
|
@@ -24,6 +22,9 @@ export function buildURLFromJSON(label, baseUrl, jsonStr) {
|
|
|
24
22
|
case 'pairwiseRouteSummary': {
|
|
25
23
|
return `${baseUrl}/routemap/api/v1/routes/pairwise-summary`;
|
|
26
24
|
}
|
|
25
|
+
case 'multiSourceSummary': {
|
|
26
|
+
return `${baseUrl}/routemap/api/v1/routes/multi-source-summary`;
|
|
27
|
+
}
|
|
27
28
|
case 'search': {
|
|
28
29
|
const query = encodeURIComponent(data.Query);
|
|
29
30
|
return `${baseUrl}/geomap/api/v1/search?q=${query}`;
|
package/dist/client.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { SearchRequest, SearchResponse } from
|
|
2
|
-
import { ReverseRequest, ReverseResponse } from
|
|
3
|
-
import { DistanceMatrixRequest, DistanceMatrixResponse } from
|
|
4
|
-
import { PairwiseRouteSummaryRequest, PairwiseRouteSummaryResponse } from
|
|
5
|
-
import { DistanceMatrixDetailsRequest, DistanceMatrixDetailsResponse } from
|
|
1
|
+
import { SearchRequest, SearchResponse } from "./modules/search";
|
|
2
|
+
import { ReverseRequest, ReverseResponse } from "./modules/reverse";
|
|
3
|
+
import { DistanceMatrixRequest, DistanceMatrixResponse } from "./modules/distance_matrix";
|
|
4
|
+
import { PairwiseRouteSummaryRequest, PairwiseRouteSummaryResponse } from "./modules/pairwise_route_summary";
|
|
5
|
+
import { DistanceMatrixDetailsRequest, DistanceMatrixDetailsResponse } from "./modules/distance_matrix_details";
|
|
6
|
+
import { MultiSourceRouteSummaryRequest, MultiSourceRouteSummaryResponse } from "./modules/multi_source_route_summary";
|
|
6
7
|
export interface IClient {
|
|
7
8
|
distanceMatrix(request: DistanceMatrixRequest): Promise<DistanceMatrixResponse>;
|
|
8
9
|
pairwiseRouteSummary(request: PairwiseRouteSummaryRequest): Promise<PairwiseRouteSummaryResponse>;
|
|
10
|
+
multiSourceRouteSummary(request: MultiSourceRouteSummaryRequest): Promise<MultiSourceRouteSummaryResponse>;
|
|
9
11
|
distanceMatrixDetails(request: DistanceMatrixDetailsRequest): Promise<DistanceMatrixDetailsResponse>;
|
|
10
12
|
reverse(request: ReverseRequest): Promise<ReverseResponse>;
|
|
11
13
|
search(request: SearchRequest): Promise<SearchResponse>;
|
|
@@ -17,6 +19,7 @@ export declare class Client implements IClient {
|
|
|
17
19
|
private makeRequest;
|
|
18
20
|
distanceMatrix(request: DistanceMatrixRequest): Promise<DistanceMatrixResponse>;
|
|
19
21
|
pairwiseRouteSummary(request: PairwiseRouteSummaryRequest): Promise<PairwiseRouteSummaryResponse>;
|
|
22
|
+
multiSourceRouteSummary(request: MultiSourceRouteSummaryRequest): Promise<MultiSourceRouteSummaryResponse>;
|
|
20
23
|
distanceMatrixDetails(request: DistanceMatrixDetailsRequest): Promise<DistanceMatrixDetailsResponse>;
|
|
21
24
|
reverse(request: ReverseRequest): Promise<ReverseResponse>;
|
|
22
25
|
search(request: SearchRequest): Promise<SearchResponse>;
|
package/dist/client.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Client = void 0;
|
|
4
|
+
const secure_req_1 = require("./secure_req");
|
|
5
|
+
class Client {
|
|
3
6
|
constructor(apiKey, packageName) {
|
|
4
7
|
this.apiKey = apiKey;
|
|
5
8
|
this.packageName = packageName;
|
|
6
9
|
}
|
|
7
10
|
async makeRequest(label, request) {
|
|
8
|
-
const { statusCode, response, errorMessage } = await callSecureRequest(label, this.apiKey, this.packageName, request);
|
|
11
|
+
const { statusCode, response, errorMessage } = await (0, secure_req_1.callSecureRequest)(label, this.apiKey, this.packageName, request);
|
|
9
12
|
if (errorMessage) {
|
|
10
13
|
throw new Error(`[${label}] native error: ${errorMessage}`);
|
|
11
14
|
}
|
|
@@ -15,31 +18,36 @@ export class Client {
|
|
|
15
18
|
return response;
|
|
16
19
|
}
|
|
17
20
|
async distanceMatrix(request) {
|
|
18
|
-
console.log(
|
|
19
|
-
const response = await this.makeRequest(
|
|
20
|
-
console.log(
|
|
21
|
+
console.log("📍 DistanceMatrix request:", request);
|
|
22
|
+
const response = await this.makeRequest("distanceMatrix", request);
|
|
23
|
+
console.log("📍 DistanceMatrix response:", response);
|
|
21
24
|
return response;
|
|
22
25
|
}
|
|
23
26
|
async pairwiseRouteSummary(request) {
|
|
24
|
-
console.log(
|
|
25
|
-
return this.makeRequest(
|
|
27
|
+
console.log("📍 PairwiseRouteSummary request:", request);
|
|
28
|
+
return this.makeRequest("pairwiseRouteSummary", request);
|
|
29
|
+
}
|
|
30
|
+
async multiSourceRouteSummary(request) {
|
|
31
|
+
console.log("📍 MultiSourceSummary request:", request);
|
|
32
|
+
return this.makeRequest("multiSourceSummary", request);
|
|
26
33
|
}
|
|
27
34
|
async distanceMatrixDetails(request) {
|
|
28
|
-
console.log(
|
|
29
|
-
const response = await this.makeRequest(
|
|
30
|
-
console.log(
|
|
35
|
+
console.log("📍 DistanceMatrixDetails request:", request);
|
|
36
|
+
const response = await this.makeRequest("distanceMatrixDetails", request);
|
|
37
|
+
console.log("📍 DistanceMatrixDetails response:", response);
|
|
31
38
|
return response;
|
|
32
39
|
}
|
|
33
40
|
async reverse(request) {
|
|
34
|
-
console.log(
|
|
35
|
-
const response = await this.makeRequest(
|
|
36
|
-
console.log(
|
|
41
|
+
console.log("📍 Reverse request:", request);
|
|
42
|
+
const response = await this.makeRequest("reverse", request);
|
|
43
|
+
console.log("📍 Reverse response:", response);
|
|
37
44
|
return response;
|
|
38
45
|
}
|
|
39
46
|
async search(request) {
|
|
40
|
-
console.log(
|
|
41
|
-
const response = await this.makeRequest(
|
|
42
|
-
console.log(
|
|
47
|
+
console.log("📍 Search request:", request);
|
|
48
|
+
const response = await this.makeRequest("search", request);
|
|
49
|
+
console.log("📍 Search response:", response);
|
|
43
50
|
return response;
|
|
44
51
|
}
|
|
45
52
|
}
|
|
53
|
+
exports.Client = Client;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const fetchRemoteTime: () => Promise<number>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchRemoteTime = void 0;
|
|
4
|
+
const build_url_1 = require("./build_url");
|
|
5
|
+
const fetchRemoteTime = async () => {
|
|
6
|
+
const res = await fetch(`${build_url_1.BASE_URL}/system-meta`);
|
|
7
|
+
if (!res.ok) {
|
|
8
|
+
throw new Error(`Failed to fetch remote time: ${res.status}`);
|
|
9
|
+
}
|
|
10
|
+
const { utc_time } = await res.json();
|
|
11
|
+
return utc_time;
|
|
12
|
+
};
|
|
13
|
+
exports.fetchRemoteTime = fetchRemoteTime;
|
package/dist/generate_token.js
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateToken = generateToken;
|
|
4
|
+
async function generateToken(apiKey) {
|
|
5
5
|
const randInt = Math.floor(Math.random() * 1000000);
|
|
6
6
|
const expires = Math.floor(Date.now() / 1000) + 30;
|
|
7
7
|
const input = `${expires}:${randInt}:${apiKey}`;
|
|
8
8
|
const encoder = new TextEncoder();
|
|
9
9
|
const data = encoder.encode(input);
|
|
10
|
-
const hashBuffer = await
|
|
10
|
+
const hashBuffer = await crypto.subtle.digest('SHA-256', data);
|
|
11
11
|
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
12
12
|
const hash = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
|
|
13
13
|
const jsonPayload = {
|
|
14
14
|
random: randInt,
|
|
15
|
-
expires,
|
|
15
|
+
expires: expires,
|
|
16
16
|
sign: hash,
|
|
17
17
|
};
|
|
18
|
-
const
|
|
18
|
+
const jsonStr = JSON.stringify(jsonPayload);
|
|
19
|
+
const base64 = btoa(jsonStr);
|
|
19
20
|
return base64;
|
|
20
21
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
6
|
-
export
|
|
1
|
+
export * from "./modules/distance_matrix";
|
|
2
|
+
export * from "./modules/pairwise_route_summary";
|
|
3
|
+
export * from "./modules/distance_matrix_details";
|
|
4
|
+
export * from "./modules/reverse";
|
|
5
|
+
export * from "./modules/search";
|
|
6
|
+
export * from "./modules/multi_source_route_summary";
|
|
7
|
+
export * from "./modules/pairwise_route_summary";
|
|
8
|
+
export * from "./fetch_remote_time";
|
|
9
|
+
export { Client } from "./client";
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.Client = void 0;
|
|
18
|
+
__exportStar(require("./modules/distance_matrix"), exports);
|
|
19
|
+
__exportStar(require("./modules/pairwise_route_summary"), exports);
|
|
20
|
+
__exportStar(require("./modules/distance_matrix_details"), exports);
|
|
21
|
+
__exportStar(require("./modules/reverse"), exports);
|
|
22
|
+
__exportStar(require("./modules/search"), exports);
|
|
23
|
+
__exportStar(require("./modules/multi_source_route_summary"), exports);
|
|
24
|
+
__exportStar(require("./modules/pairwise_route_summary"), exports);
|
|
25
|
+
__exportStar(require("./fetch_remote_time"), exports);
|
|
26
|
+
var client_1 = require("./client");
|
|
27
|
+
Object.defineProperty(exports, "Client", { enumerable: true, get: function () { return client_1.Client; } });
|
package/dist/main.js
CHANGED
|
@@ -1,46 +1,116 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const index_1 = require("./index");
|
|
2
4
|
(async function () {
|
|
3
5
|
try {
|
|
4
|
-
const cl = new Client("", "");
|
|
6
|
+
const cl = new index_1.Client("", "");
|
|
5
7
|
const res = await cl.distanceMatrix({
|
|
6
8
|
OriginLat: 23.8103,
|
|
7
9
|
OriginLon: 90.4125,
|
|
8
10
|
DestLat: 23.7805,
|
|
9
11
|
DestLon: 90.4113,
|
|
10
|
-
Mode: Mode.Walking
|
|
12
|
+
Mode: index_1.Mode.Walking,
|
|
11
13
|
});
|
|
12
|
-
console.log("============================> ", res);
|
|
13
|
-
const
|
|
14
|
+
console.log("============================> DistanceMatrix:", res);
|
|
15
|
+
const deRes = await cl.distanceMatrixDetails({
|
|
16
|
+
OriginLat: 23.8103,
|
|
17
|
+
OriginLon: 90.4125,
|
|
18
|
+
DestLat: 23.7805,
|
|
19
|
+
DestLon: 90.4113,
|
|
20
|
+
Mode: index_1.Mode.Walking,
|
|
21
|
+
});
|
|
22
|
+
console.log("============================> DistanceMatrixDetails:", deRes);
|
|
23
|
+
const searchRes = await cl.search({ Query: "uttara" });
|
|
24
|
+
console.log("============================> Search:", searchRes);
|
|
25
|
+
const revRes = await cl.reverse({
|
|
26
|
+
Lat: 23.8103,
|
|
27
|
+
Lon: 90.4125,
|
|
28
|
+
});
|
|
29
|
+
console.log("============================> Reverse Geocode:", revRes);
|
|
30
|
+
// ✅ PairwiseRouteSummaryRequest Example
|
|
31
|
+
const pairwiseRes = await cl.pairwiseRouteSummary({
|
|
14
32
|
pairs: [
|
|
15
33
|
{
|
|
16
34
|
id: 1,
|
|
17
|
-
src: {
|
|
18
|
-
|
|
19
|
-
|
|
35
|
+
src: {
|
|
36
|
+
lat: 23.8113,
|
|
37
|
+
lon: 90.4135,
|
|
38
|
+
},
|
|
39
|
+
dest: {
|
|
40
|
+
lat: 23.7815,
|
|
41
|
+
lon: 90.4123,
|
|
42
|
+
},
|
|
43
|
+
mode: "bicycle",
|
|
20
44
|
},
|
|
21
45
|
{
|
|
22
46
|
id: 2,
|
|
23
|
-
src: {
|
|
24
|
-
|
|
25
|
-
|
|
47
|
+
src: {
|
|
48
|
+
lat: 23.8123,
|
|
49
|
+
lon: 90.4145,
|
|
50
|
+
},
|
|
51
|
+
dest: {
|
|
52
|
+
lat: 23.7825,
|
|
53
|
+
lon: 90.4133,
|
|
54
|
+
},
|
|
55
|
+
mode: "bicycle",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
id: 3,
|
|
59
|
+
src: {
|
|
60
|
+
lat: 23.8133,
|
|
61
|
+
lon: 90.4155,
|
|
62
|
+
},
|
|
63
|
+
dest: {
|
|
64
|
+
lat: 23.7835,
|
|
65
|
+
lon: 90.4143,
|
|
66
|
+
},
|
|
67
|
+
mode: "bicycle",
|
|
26
68
|
},
|
|
27
69
|
],
|
|
28
70
|
});
|
|
29
|
-
console.log("
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
71
|
+
console.log("============================> PairwiseRouteSummary:", pairwiseRes);
|
|
72
|
+
// ✅ MultiSourceRouteSummaryRequest Example
|
|
73
|
+
const multiSourceRes = await cl.multiSourceRouteSummary({
|
|
74
|
+
sources: [
|
|
75
|
+
{
|
|
76
|
+
id: 1,
|
|
77
|
+
lat: 23.7805733,
|
|
78
|
+
lon: 90.2792399,
|
|
79
|
+
mode: "car",
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
id: 2,
|
|
83
|
+
lat: 23.75,
|
|
84
|
+
lon: 90.36,
|
|
85
|
+
mode: "car",
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
id: 3,
|
|
89
|
+
lat: 23.7,
|
|
90
|
+
lon: 90.42,
|
|
91
|
+
mode: "car",
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
id: 4,
|
|
95
|
+
lat: 23.7654321,
|
|
96
|
+
lon: 90.3456789,
|
|
97
|
+
mode: "car",
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
id: 5,
|
|
101
|
+
lat: 23.7123456,
|
|
102
|
+
lon: 90.3765432,
|
|
103
|
+
mode: "car",
|
|
104
|
+
},
|
|
105
|
+
],
|
|
106
|
+
destination: {
|
|
107
|
+
lat: 23.810332,
|
|
108
|
+
lon: 90.412518,
|
|
109
|
+
},
|
|
36
110
|
});
|
|
37
|
-
console.log("============================> ",
|
|
38
|
-
const searchRes = await cl.search({ Query: "uttara" });
|
|
39
|
-
console.log("============================> ", searchRes);
|
|
40
|
-
const revRes = await cl.reverse({ Lat: 23.8103, Lon: 90.4125 });
|
|
41
|
-
console.log("============================> ", revRes);
|
|
111
|
+
console.log("============================> MultiSourceRouteSummary:", multiSourceRes);
|
|
42
112
|
}
|
|
43
113
|
catch (err) {
|
|
44
|
-
console.
|
|
114
|
+
console.error("🔥 Error:", err);
|
|
45
115
|
}
|
|
46
116
|
})();
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Mode = void 0;
|
|
4
|
+
var Mode;
|
|
2
5
|
(function (Mode) {
|
|
3
6
|
Mode["Walking"] = "walking";
|
|
4
7
|
Mode["Bicycle"] = "bicycle";
|
|
5
8
|
Mode["Car"] = "car";
|
|
6
|
-
})(Mode || (Mode = {}));
|
|
9
|
+
})(Mode || (exports.Mode = Mode = {}));
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { RouteSummary } from "./pairwise_route_summary";
|
|
2
|
+
export type Source = {
|
|
3
|
+
id: number;
|
|
4
|
+
lat: number;
|
|
5
|
+
lon: number;
|
|
6
|
+
mode: string;
|
|
7
|
+
};
|
|
8
|
+
export type Destination = {
|
|
9
|
+
lat: number;
|
|
10
|
+
lon: number;
|
|
11
|
+
};
|
|
12
|
+
export type MultiSourceRouteSummaryRequest = {
|
|
13
|
+
sources: Source[];
|
|
14
|
+
destination: Destination;
|
|
15
|
+
};
|
|
16
|
+
export type MultiSourceRouteSummaryResponse = {
|
|
17
|
+
data: RouteSummary[];
|
|
18
|
+
message: string;
|
|
19
|
+
status: boolean;
|
|
20
|
+
};
|
package/dist/modules/reverse.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/dist/modules/search.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/dist/request.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Client = void 0;
|
|
4
|
+
const secure_req_1 = require("./secure_req");
|
|
5
|
+
class Client {
|
|
3
6
|
constructor(apiKey, packageName) {
|
|
4
7
|
this.apiKey = apiKey;
|
|
5
8
|
this.packageName = packageName;
|
|
6
9
|
}
|
|
7
10
|
async request(label, request) {
|
|
8
|
-
const { statusCode, response, errorMessage } = await callSecureRequest(label, this.apiKey, this.packageName, request);
|
|
11
|
+
const { statusCode, response, errorMessage } = await (0, secure_req_1.callSecureRequest)(label, this.apiKey, this.packageName, request);
|
|
9
12
|
if (errorMessage) {
|
|
10
13
|
throw new Error(`[${label}] native error: ${errorMessage}`);
|
|
11
14
|
}
|
|
@@ -15,3 +18,4 @@ export class Client {
|
|
|
15
18
|
return new TextEncoder().encode(response); // Similar to []byte in Go
|
|
16
19
|
}
|
|
17
20
|
}
|
|
21
|
+
exports.Client = Client;
|
package/dist/secure_req.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.callSecureRequest = callSecureRequest;
|
|
4
|
+
const secure_request_1 = require("./secure_request");
|
|
5
|
+
async function callSecureRequest(label, apiKey, origin, request) {
|
|
3
6
|
try {
|
|
4
7
|
const jsonRequest = JSON.stringify(request);
|
|
5
|
-
const result = await performSecureRequest(label, apiKey, origin, jsonRequest);
|
|
8
|
+
const result = await (0, secure_request_1.performSecureRequest)(label, apiKey, origin, jsonRequest);
|
|
6
9
|
if (!result.success) {
|
|
7
10
|
return {
|
|
8
11
|
statusCode: result.statusCode,
|
package/dist/secure_request.js
CHANGED
|
@@ -1,27 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.performSecureRequest = performSecureRequest;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const generate_token_1 = require("./generate_token");
|
|
9
|
+
const build_url_1 = require("./build_url");
|
|
4
10
|
const BASE_URL = 'https://engine.mapnests.com';
|
|
5
11
|
const HTTP_METHOD_MAP = {
|
|
6
|
-
|
|
7
|
-
reverseGeocode: 'GET',
|
|
12
|
+
reverse: 'GET',
|
|
8
13
|
search: 'GET',
|
|
9
14
|
distanceMatrix: 'GET',
|
|
10
15
|
distanceMatrixDetails: 'GET',
|
|
11
16
|
pairwiseRouteSummary: 'POST',
|
|
17
|
+
multiSourceSummary: 'POST',
|
|
12
18
|
};
|
|
13
|
-
|
|
19
|
+
async function performSecureRequest(label, apiKey, origin, jsonRequest) {
|
|
14
20
|
let urlStr;
|
|
15
21
|
try {
|
|
16
|
-
urlStr = buildURLFromJSON(label, BASE_URL, jsonRequest);
|
|
22
|
+
urlStr = (0, build_url_1.buildURLFromJSON)(label, BASE_URL, jsonRequest);
|
|
17
23
|
}
|
|
18
24
|
catch (err) {
|
|
19
25
|
return { success: false, statusCode: 0, response: '', errorMessage: err.message };
|
|
20
26
|
}
|
|
21
|
-
let tokenHeader = await generateToken(apiKey);
|
|
27
|
+
let tokenHeader = await (0, generate_token_1.generateToken)(apiKey);
|
|
22
28
|
const method = HTTP_METHOD_MAP[label] || 'GET';
|
|
23
29
|
const headers = {
|
|
24
30
|
'X-API-KEY': apiKey,
|
|
31
|
+
'Origin': origin,
|
|
25
32
|
'fxsrf': tokenHeader,
|
|
26
33
|
'Content-Type': 'application/json',
|
|
27
34
|
};
|
|
@@ -31,8 +38,8 @@ export async function performSecureRequest(label, apiKey, origin, jsonRequest) {
|
|
|
31
38
|
};
|
|
32
39
|
try {
|
|
33
40
|
const response = method === 'POST'
|
|
34
|
-
? await
|
|
35
|
-
: await
|
|
41
|
+
? await axios_1.default.post(urlStr, JSON.parse(jsonRequest), axiosConfig)
|
|
42
|
+
: await axios_1.default.get(urlStr, axiosConfig);
|
|
36
43
|
return {
|
|
37
44
|
success: response.status >= 200 && response.status < 300,
|
|
38
45
|
statusCode: response.status,
|
|
@@ -41,12 +48,12 @@ export async function performSecureRequest(label, apiKey, origin, jsonRequest) {
|
|
|
41
48
|
}
|
|
42
49
|
catch (err) {
|
|
43
50
|
if (err.response?.status === 401 && err.response.headers['cf-ray-status-id-tn']) {
|
|
44
|
-
tokenHeader = await generateToken(apiKey);
|
|
51
|
+
tokenHeader = await (0, generate_token_1.generateToken)(apiKey);
|
|
45
52
|
headers.fxsrf = tokenHeader;
|
|
46
53
|
try {
|
|
47
54
|
const retryResponse = method === 'POST'
|
|
48
|
-
? await
|
|
49
|
-
: await
|
|
55
|
+
? await axios_1.default.post(urlStr, JSON.parse(jsonRequest), axiosConfig)
|
|
56
|
+
: await axios_1.default.get(urlStr, axiosConfig);
|
|
50
57
|
return {
|
|
51
58
|
success: retryResponse.status >= 200 && retryResponse.status < 300,
|
|
52
59
|
statusCode: retryResponse.status,
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mapnests-browser-sdk",
|
|
3
|
-
"description": "TypeScript
|
|
4
|
-
"version": "1.0.
|
|
3
|
+
"description": "TypeScript SDK for Mapnests API integration (Distance Matrix, Distance Matrix Details, Geocode, Reverse Geocode)",
|
|
4
|
+
"version": "1.0.6",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"exports": {
|
|
@@ -28,7 +28,6 @@
|
|
|
28
28
|
"mapnests",
|
|
29
29
|
"typescript",
|
|
30
30
|
"sdk",
|
|
31
|
-
"geocode",
|
|
32
31
|
"reverse-geocode",
|
|
33
32
|
"distance-matrix",
|
|
34
33
|
"distance-matrix-details"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
File without changes
|