@pretto/places 0.15.0 → 0.16.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +14 -1
- package/dist/geolocSearch.d.ts +7 -0
- package/dist/geolocSearch.d.ts.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +57 -17
- package/dist/module.js +57 -18
- package/package.json +1 -1
package/README.md
CHANGED
@@ -129,9 +129,22 @@ const results = await countriesApi.get('al', { limit: 10 })[
|
|
129
129
|
]
|
130
130
|
```
|
131
131
|
|
132
|
+
For geolocalisation
|
133
|
+
|
134
|
+
```typescript
|
135
|
+
import { geolocSearch } from '@pretto/places'
|
136
|
+
|
137
|
+
const results = await geolocSearch.get('75010')
|
138
|
+
// result object format :
|
139
|
+
// [{
|
140
|
+
// code: '75010',
|
141
|
+
// coordinates: [2.347, 48.8589],
|
142
|
+
// }]
|
143
|
+
```
|
144
|
+
|
132
145
|
### Debounce
|
133
146
|
|
134
|
-
`addressSearch` and `
|
147
|
+
`addressSearch`, `municipalitySearch` and `geolocSearch` have defaut debounce value fixed to **300ms**\
|
135
148
|
You can override this value by passing debounce value as last argument
|
136
149
|
|
137
150
|
```jsx
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"geolocSearch.d.ts","sourceRoot":"","sources":["../src/geolocSearch.ts"],"names":[],"mappings":"AAAA,aAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC9B,CAAA;AAwCD,eAAO,MAAM,GAAG,WAAY,MAAM,kBAAiB,MAAM,KAAS,QAAQ,kBAAkB,EAAE,CAQ7F,CAAA"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,kBAAkB,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAA"}
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,kBAAkB,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAA"}
|
package/dist/index.js
CHANGED
@@ -100,7 +100,7 @@ const responseFormat = (places, country, search, departmentOnly) => {
|
|
100
100
|
});
|
101
101
|
return flat__default["default"](allPlaces);
|
102
102
|
};
|
103
|
-
const getData$
|
103
|
+
const getData$2 = (search, options) => __awaiter(void 0, void 0, void 0, function* () {
|
104
104
|
const { country = 'fr', limit = 5, departmentOnly = false } = options || {};
|
105
105
|
const isNumber = !isNaN(parseInt(search, 10));
|
106
106
|
if (!search || (isNumber && search.length < 2))
|
@@ -133,23 +133,23 @@ const getData$1 = (search, options) => __awaiter(void 0, void 0, void 0, functio
|
|
133
133
|
return 'An error occurred.';
|
134
134
|
}
|
135
135
|
});
|
136
|
-
let getDelayedData$
|
137
|
-
const get$
|
138
|
-
clearTimeout(getDelayedData$
|
136
|
+
let getDelayedData$2;
|
137
|
+
const get$3 = (search, options, debounceValue = 300) => {
|
138
|
+
clearTimeout(getDelayedData$2);
|
139
139
|
return new Promise((resolve, reject) => {
|
140
|
-
getDelayedData$
|
141
|
-
resolve(getData$
|
140
|
+
getDelayedData$2 = setTimeout(() => {
|
141
|
+
resolve(getData$2(search, options));
|
142
142
|
}, debounceValue);
|
143
143
|
});
|
144
144
|
};
|
145
145
|
|
146
146
|
var municipalitySearch = /*#__PURE__*/Object.freeze({
|
147
147
|
__proto__: null,
|
148
|
-
getData: getData$
|
149
|
-
get: get$
|
148
|
+
getData: getData$2,
|
149
|
+
get: get$3
|
150
150
|
});
|
151
151
|
|
152
|
-
const getData = (search, options) => __awaiter(void 0, void 0, void 0, function* () {
|
152
|
+
const getData$1 = (search, options) => __awaiter(void 0, void 0, void 0, function* () {
|
153
153
|
if (!search || search.length < 2)
|
154
154
|
return [];
|
155
155
|
try {
|
@@ -182,22 +182,22 @@ const getData = (search, options) => __awaiter(void 0, void 0, void 0, function*
|
|
182
182
|
return 'An error occurred.';
|
183
183
|
}
|
184
184
|
});
|
185
|
-
let getDelayedData;
|
186
|
-
const get$
|
187
|
-
clearTimeout(getDelayedData);
|
185
|
+
let getDelayedData$1;
|
186
|
+
const get$2 = (search, options, debounceValue = 300) => {
|
187
|
+
clearTimeout(getDelayedData$1);
|
188
188
|
return new Promise((resolve, reject) => {
|
189
|
-
getDelayedData = setTimeout(() => {
|
190
|
-
resolve(getData(search, options));
|
189
|
+
getDelayedData$1 = setTimeout(() => {
|
190
|
+
resolve(getData$1(search, options));
|
191
191
|
}, debounceValue);
|
192
192
|
});
|
193
193
|
};
|
194
194
|
|
195
195
|
var addressSearch = /*#__PURE__*/Object.freeze({
|
196
196
|
__proto__: null,
|
197
|
-
get: get$
|
197
|
+
get: get$2
|
198
198
|
});
|
199
199
|
|
200
|
-
const get = (instance, search, options) => __awaiter(void 0, void 0, void 0, function* () {
|
200
|
+
const get$1 = (instance, search, options) => __awaiter(void 0, void 0, void 0, function* () {
|
201
201
|
if (!search)
|
202
202
|
return [];
|
203
203
|
const { limit = 5 } = options || {};
|
@@ -219,7 +219,7 @@ const init = (appId, apiKey, options) => {
|
|
219
219
|
return {
|
220
220
|
get(search, options) {
|
221
221
|
return __awaiter(this, void 0, void 0, function* () {
|
222
|
-
return yield get(ALGOLIA_COUNTRIES_API, search, options);
|
222
|
+
return yield get$1(ALGOLIA_COUNTRIES_API, search, options);
|
223
223
|
});
|
224
224
|
},
|
225
225
|
};
|
@@ -238,6 +238,46 @@ var countrySearch = /*#__PURE__*/Object.freeze({
|
|
238
238
|
init: init
|
239
239
|
});
|
240
240
|
|
241
|
+
const formatData = (results) => results.map(result => ({
|
242
|
+
code: result.code,
|
243
|
+
coordinates: result.centre.coordinates,
|
244
|
+
}));
|
245
|
+
// All french zipcode are only numbers, even particular cases like Corse (2A, 2B > 20), Finistère (29N, 29S > 29x), etc..
|
246
|
+
// For more information: https://fr.wikipedia.org/wiki/Code_postal_en_France
|
247
|
+
// Kept as string for consistency with geo.api.gouv.fr
|
248
|
+
const getData = (search) => __awaiter(void 0, void 0, void 0, function* () {
|
249
|
+
if (!search || !/(\d){5}/.test(search))
|
250
|
+
return [];
|
251
|
+
try {
|
252
|
+
const formattedSearch = encodeURIComponent(search);
|
253
|
+
const response = yield fetch(`https://geo.api.gouv.fr/communes?codePostal=${formattedSearch}&fields=centre`);
|
254
|
+
if (!response.ok)
|
255
|
+
return Promise.reject(response);
|
256
|
+
const results = yield response.json();
|
257
|
+
return formatData(results);
|
258
|
+
}
|
259
|
+
catch (error) {
|
260
|
+
if (typeof error === 'string')
|
261
|
+
throw new Error(error);
|
262
|
+
throw new Error(error instanceof Error && error.message ? error.message : 'An error occurred.');
|
263
|
+
}
|
264
|
+
});
|
265
|
+
let getDelayedData;
|
266
|
+
const get = (search, debounceValue = 300) => {
|
267
|
+
clearTimeout(getDelayedData);
|
268
|
+
return new Promise((resolve, reject) => {
|
269
|
+
getDelayedData = setTimeout(() => {
|
270
|
+
resolve(getData(search));
|
271
|
+
}, debounceValue);
|
272
|
+
});
|
273
|
+
};
|
274
|
+
|
275
|
+
var geolocSearch = /*#__PURE__*/Object.freeze({
|
276
|
+
__proto__: null,
|
277
|
+
get: get
|
278
|
+
});
|
279
|
+
|
241
280
|
exports.addressSearch = addressSearch;
|
242
281
|
exports.countrySearch = countrySearch;
|
282
|
+
exports.geolocSearch = geolocSearch;
|
243
283
|
exports.municipalitySearch = municipalitySearch;
|
package/dist/module.js
CHANGED
@@ -90,7 +90,7 @@ const responseFormat = (places, country, search, departmentOnly) => {
|
|
90
90
|
});
|
91
91
|
return flat(allPlaces);
|
92
92
|
};
|
93
|
-
const getData$
|
93
|
+
const getData$2 = (search, options) => __awaiter(void 0, void 0, void 0, function* () {
|
94
94
|
const { country = 'fr', limit = 5, departmentOnly = false } = options || {};
|
95
95
|
const isNumber = !isNaN(parseInt(search, 10));
|
96
96
|
if (!search || (isNumber && search.length < 2))
|
@@ -123,23 +123,23 @@ const getData$1 = (search, options) => __awaiter(void 0, void 0, void 0, functio
|
|
123
123
|
return 'An error occurred.';
|
124
124
|
}
|
125
125
|
});
|
126
|
-
let getDelayedData$
|
127
|
-
const get$
|
128
|
-
clearTimeout(getDelayedData$
|
126
|
+
let getDelayedData$2;
|
127
|
+
const get$3 = (search, options, debounceValue = 300) => {
|
128
|
+
clearTimeout(getDelayedData$2);
|
129
129
|
return new Promise((resolve, reject) => {
|
130
|
-
getDelayedData$
|
131
|
-
resolve(getData$
|
130
|
+
getDelayedData$2 = setTimeout(() => {
|
131
|
+
resolve(getData$2(search, options));
|
132
132
|
}, debounceValue);
|
133
133
|
});
|
134
134
|
};
|
135
135
|
|
136
136
|
var municipalitySearch = /*#__PURE__*/Object.freeze({
|
137
137
|
__proto__: null,
|
138
|
-
getData: getData$
|
139
|
-
get: get$
|
138
|
+
getData: getData$2,
|
139
|
+
get: get$3
|
140
140
|
});
|
141
141
|
|
142
|
-
const getData = (search, options) => __awaiter(void 0, void 0, void 0, function* () {
|
142
|
+
const getData$1 = (search, options) => __awaiter(void 0, void 0, void 0, function* () {
|
143
143
|
if (!search || search.length < 2)
|
144
144
|
return [];
|
145
145
|
try {
|
@@ -172,22 +172,22 @@ const getData = (search, options) => __awaiter(void 0, void 0, void 0, function*
|
|
172
172
|
return 'An error occurred.';
|
173
173
|
}
|
174
174
|
});
|
175
|
-
let getDelayedData;
|
176
|
-
const get$
|
177
|
-
clearTimeout(getDelayedData);
|
175
|
+
let getDelayedData$1;
|
176
|
+
const get$2 = (search, options, debounceValue = 300) => {
|
177
|
+
clearTimeout(getDelayedData$1);
|
178
178
|
return new Promise((resolve, reject) => {
|
179
|
-
getDelayedData = setTimeout(() => {
|
180
|
-
resolve(getData(search, options));
|
179
|
+
getDelayedData$1 = setTimeout(() => {
|
180
|
+
resolve(getData$1(search, options));
|
181
181
|
}, debounceValue);
|
182
182
|
});
|
183
183
|
};
|
184
184
|
|
185
185
|
var addressSearch = /*#__PURE__*/Object.freeze({
|
186
186
|
__proto__: null,
|
187
|
-
get: get$
|
187
|
+
get: get$2
|
188
188
|
});
|
189
189
|
|
190
|
-
const get = (instance, search, options) => __awaiter(void 0, void 0, void 0, function* () {
|
190
|
+
const get$1 = (instance, search, options) => __awaiter(void 0, void 0, void 0, function* () {
|
191
191
|
if (!search)
|
192
192
|
return [];
|
193
193
|
const { limit = 5 } = options || {};
|
@@ -209,7 +209,7 @@ const init = (appId, apiKey, options) => {
|
|
209
209
|
return {
|
210
210
|
get(search, options) {
|
211
211
|
return __awaiter(this, void 0, void 0, function* () {
|
212
|
-
return yield get(ALGOLIA_COUNTRIES_API, search, options);
|
212
|
+
return yield get$1(ALGOLIA_COUNTRIES_API, search, options);
|
213
213
|
});
|
214
214
|
},
|
215
215
|
};
|
@@ -228,4 +228,43 @@ var countrySearch = /*#__PURE__*/Object.freeze({
|
|
228
228
|
init: init
|
229
229
|
});
|
230
230
|
|
231
|
-
|
231
|
+
const formatData = (results) => results.map(result => ({
|
232
|
+
code: result.code,
|
233
|
+
coordinates: result.centre.coordinates,
|
234
|
+
}));
|
235
|
+
// All french zipcode are only numbers, even particular cases like Corse (2A, 2B > 20), Finistère (29N, 29S > 29x), etc..
|
236
|
+
// For more information: https://fr.wikipedia.org/wiki/Code_postal_en_France
|
237
|
+
// Kept as string for consistency with geo.api.gouv.fr
|
238
|
+
const getData = (search) => __awaiter(void 0, void 0, void 0, function* () {
|
239
|
+
if (!search || !/(\d){5}/.test(search))
|
240
|
+
return [];
|
241
|
+
try {
|
242
|
+
const formattedSearch = encodeURIComponent(search);
|
243
|
+
const response = yield fetch(`https://geo.api.gouv.fr/communes?codePostal=${formattedSearch}&fields=centre`);
|
244
|
+
if (!response.ok)
|
245
|
+
return Promise.reject(response);
|
246
|
+
const results = yield response.json();
|
247
|
+
return formatData(results);
|
248
|
+
}
|
249
|
+
catch (error) {
|
250
|
+
if (typeof error === 'string')
|
251
|
+
throw new Error(error);
|
252
|
+
throw new Error(error instanceof Error && error.message ? error.message : 'An error occurred.');
|
253
|
+
}
|
254
|
+
});
|
255
|
+
let getDelayedData;
|
256
|
+
const get = (search, debounceValue = 300) => {
|
257
|
+
clearTimeout(getDelayedData);
|
258
|
+
return new Promise((resolve, reject) => {
|
259
|
+
getDelayedData = setTimeout(() => {
|
260
|
+
resolve(getData(search));
|
261
|
+
}, debounceValue);
|
262
|
+
});
|
263
|
+
};
|
264
|
+
|
265
|
+
var geolocSearch = /*#__PURE__*/Object.freeze({
|
266
|
+
__proto__: null,
|
267
|
+
get: get
|
268
|
+
});
|
269
|
+
|
270
|
+
export { addressSearch, countrySearch, geolocSearch, municipalitySearch };
|