@pretto/places 0.21.0 → 0.23.0

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/dist/index.js CHANGED
@@ -48,7 +48,7 @@ const convertFirstLetterToUpperCase = (str) => {
48
48
  };
49
49
  const getUri = (search, departmentOnly) => {
50
50
  const PLACES_API = 'https://geo.api.gouv.fr';
51
- const QUERY_FIELDS = `boost=population&fields=departement${departmentOnly ? ',centre' : ',codesPostaux,centre'}`;
51
+ const QUERY_FIELDS = `boost=population&fields=departement${departmentOnly ? ',centre,contour' : ',codesPostaux,centre,contour'}`;
52
52
  const formatedSearch = encodeURIComponent(search);
53
53
  const uri = {
54
54
  departments: `${PLACES_API}/departements/${formatedSearch}/communes?${QUERY_FIELDS}`,
@@ -79,6 +79,7 @@ const responseFormat = (places, country, search, departmentOnly) => {
79
79
  center,
80
80
  city: place.nom,
81
81
  country,
82
+ outline: place.contour.coordinates[0].map(([longitude, latitude]) => ({ longitude, latitude })),
82
83
  zipcode: ((_b = place.departement) === null || _b === void 0 ? void 0 : _b.code) || '',
83
84
  },
84
85
  };
@@ -91,7 +92,13 @@ const responseFormat = (places, country, search, departmentOnly) => {
91
92
  return [
92
93
  {
93
94
  label: `${places[0].nom} (${search})`,
94
- value: { center, city: places[0].nom, country, zipcode: search },
95
+ value: {
96
+ center,
97
+ city: places[0].nom,
98
+ country,
99
+ outline: places[0].contour.coordinates[0].map(([longitude, latitude]) => ({ longitude, latitude })),
100
+ zipcode: search,
101
+ },
95
102
  },
96
103
  ];
97
104
  }
@@ -104,7 +111,13 @@ const responseFormat = (places, country, search, departmentOnly) => {
104
111
  ...acc,
105
112
  {
106
113
  label: `${place.nom} (${curr})`,
107
- value: { center, city: place.nom, country, zipcode: curr },
114
+ value: {
115
+ center,
116
+ city: place.nom,
117
+ country,
118
+ outline: place.contour.coordinates[0].map(([longitude, latitude]) => ({ longitude, latitude })),
119
+ zipcode: curr,
120
+ },
108
121
  },
109
122
  ];
110
123
  }, []);
@@ -289,22 +302,31 @@ var geolocSearch = /*#__PURE__*/Object.freeze({
289
302
  get: get$1
290
303
  });
291
304
 
292
- const formatData = (results) => {
293
- return results.map(result => ({
305
+ const formatData = (geoResults, addressResults) => {
306
+ const district = addressResults.features.length > 0 ? addressResults.features[0].properties.district : null;
307
+ const postcode = addressResults.features.length > 0 ? addressResults.features[0].properties.postcode : null;
308
+ return geoResults.map(result => ({
294
309
  center: { latitude: result.centre.coordinates[1], longitude: result.centre.coordinates[0] },
295
310
  city: result.nom,
296
311
  code: result.code,
297
312
  coordinates: result.centre.coordinates,
298
313
  zipcode: result.codesPostaux[0],
314
+ outline: result.contour.coordinates[0].map(([longitude, latitude]) => ({ longitude, latitude })),
315
+ district,
316
+ postcode,
299
317
  }));
300
318
  };
301
- const getData = (search) => __awaiter(void 0, void 0, void 0, function* () {
319
+ const getData = (search, signal) => __awaiter(void 0, void 0, void 0, function* () {
302
320
  try {
303
- const response = yield fetch(`https://geo.api.gouv.fr/communes?lat=${search.latitude}&lon=${search.longitude}&fields=departement,codesPostaux,centre`);
304
- if (!response.ok)
305
- return Promise.reject(response);
306
- const results = yield response.json();
307
- return formatData(results);
321
+ const [geoResponse, addressResponse] = yield Promise.all([
322
+ fetch(`https://geo.api.gouv.fr/communes?lat=${search.latitude}&lon=${search.longitude}&fields=departement,codesPostaux,centre,contour`, { signal }),
323
+ fetch(`https://api-adresse.data.gouv.fr/reverse/?lat=${search.latitude}&lon=${search.longitude}&limit=1&&autocomplete=0`, { signal }),
324
+ ]);
325
+ if (!geoResponse.ok)
326
+ return Promise.reject(geoResponse);
327
+ const geoResults = yield geoResponse.json();
328
+ const addressResults = yield addressResponse.json();
329
+ return formatData(geoResults, addressResults);
308
330
  }
309
331
  catch (error) {
310
332
  if (typeof error === 'string')
@@ -313,11 +335,11 @@ const getData = (search) => __awaiter(void 0, void 0, void 0, function* () {
313
335
  }
314
336
  });
315
337
  let getDelayedData;
316
- const get = (search, debounceValue = 300) => {
338
+ const get = (search, debounceValue = 300, signal) => {
317
339
  clearTimeout(getDelayedData);
318
340
  return new Promise((resolve, reject) => {
319
341
  getDelayedData = setTimeout(() => {
320
- resolve(getData(search));
342
+ resolve(getData(search, signal));
321
343
  }, debounceValue);
322
344
  });
323
345
  };
package/dist/module.js CHANGED
@@ -38,7 +38,7 @@ const convertFirstLetterToUpperCase = (str) => {
38
38
  };
39
39
  const getUri = (search, departmentOnly) => {
40
40
  const PLACES_API = 'https://geo.api.gouv.fr';
41
- const QUERY_FIELDS = `boost=population&fields=departement${departmentOnly ? ',centre' : ',codesPostaux,centre'}`;
41
+ const QUERY_FIELDS = `boost=population&fields=departement${departmentOnly ? ',centre,contour' : ',codesPostaux,centre,contour'}`;
42
42
  const formatedSearch = encodeURIComponent(search);
43
43
  const uri = {
44
44
  departments: `${PLACES_API}/departements/${formatedSearch}/communes?${QUERY_FIELDS}`,
@@ -69,6 +69,7 @@ const responseFormat = (places, country, search, departmentOnly) => {
69
69
  center,
70
70
  city: place.nom,
71
71
  country,
72
+ outline: place.contour.coordinates[0].map(([longitude, latitude]) => ({ longitude, latitude })),
72
73
  zipcode: ((_b = place.departement) === null || _b === void 0 ? void 0 : _b.code) || '',
73
74
  },
74
75
  };
@@ -81,7 +82,13 @@ const responseFormat = (places, country, search, departmentOnly) => {
81
82
  return [
82
83
  {
83
84
  label: `${places[0].nom} (${search})`,
84
- value: { center, city: places[0].nom, country, zipcode: search },
85
+ value: {
86
+ center,
87
+ city: places[0].nom,
88
+ country,
89
+ outline: places[0].contour.coordinates[0].map(([longitude, latitude]) => ({ longitude, latitude })),
90
+ zipcode: search,
91
+ },
85
92
  },
86
93
  ];
87
94
  }
@@ -94,7 +101,13 @@ const responseFormat = (places, country, search, departmentOnly) => {
94
101
  ...acc,
95
102
  {
96
103
  label: `${place.nom} (${curr})`,
97
- value: { center, city: place.nom, country, zipcode: curr },
104
+ value: {
105
+ center,
106
+ city: place.nom,
107
+ country,
108
+ outline: place.contour.coordinates[0].map(([longitude, latitude]) => ({ longitude, latitude })),
109
+ zipcode: curr,
110
+ },
98
111
  },
99
112
  ];
100
113
  }, []);
@@ -279,22 +292,31 @@ var geolocSearch = /*#__PURE__*/Object.freeze({
279
292
  get: get$1
280
293
  });
281
294
 
282
- const formatData = (results) => {
283
- return results.map(result => ({
295
+ const formatData = (geoResults, addressResults) => {
296
+ const district = addressResults.features.length > 0 ? addressResults.features[0].properties.district : null;
297
+ const postcode = addressResults.features.length > 0 ? addressResults.features[0].properties.postcode : null;
298
+ return geoResults.map(result => ({
284
299
  center: { latitude: result.centre.coordinates[1], longitude: result.centre.coordinates[0] },
285
300
  city: result.nom,
286
301
  code: result.code,
287
302
  coordinates: result.centre.coordinates,
288
303
  zipcode: result.codesPostaux[0],
304
+ outline: result.contour.coordinates[0].map(([longitude, latitude]) => ({ longitude, latitude })),
305
+ district,
306
+ postcode,
289
307
  }));
290
308
  };
291
- const getData = (search) => __awaiter(void 0, void 0, void 0, function* () {
309
+ const getData = (search, signal) => __awaiter(void 0, void 0, void 0, function* () {
292
310
  try {
293
- const response = yield fetch(`https://geo.api.gouv.fr/communes?lat=${search.latitude}&lon=${search.longitude}&fields=departement,codesPostaux,centre`);
294
- if (!response.ok)
295
- return Promise.reject(response);
296
- const results = yield response.json();
297
- return formatData(results);
311
+ const [geoResponse, addressResponse] = yield Promise.all([
312
+ fetch(`https://geo.api.gouv.fr/communes?lat=${search.latitude}&lon=${search.longitude}&fields=departement,codesPostaux,centre,contour`, { signal }),
313
+ fetch(`https://api-adresse.data.gouv.fr/reverse/?lat=${search.latitude}&lon=${search.longitude}&limit=1&&autocomplete=0`, { signal }),
314
+ ]);
315
+ if (!geoResponse.ok)
316
+ return Promise.reject(geoResponse);
317
+ const geoResults = yield geoResponse.json();
318
+ const addressResults = yield addressResponse.json();
319
+ return formatData(geoResults, addressResults);
298
320
  }
299
321
  catch (error) {
300
322
  if (typeof error === 'string')
@@ -303,11 +325,11 @@ const getData = (search) => __awaiter(void 0, void 0, void 0, function* () {
303
325
  }
304
326
  });
305
327
  let getDelayedData;
306
- const get = (search, debounceValue = 300) => {
328
+ const get = (search, debounceValue = 300, signal) => {
307
329
  clearTimeout(getDelayedData);
308
330
  return new Promise((resolve, reject) => {
309
331
  getDelayedData = setTimeout(() => {
310
- resolve(getData(search));
332
+ resolve(getData(search, signal));
311
333
  }, debounceValue);
312
334
  });
313
335
  };
@@ -7,6 +7,10 @@ export interface MunicipalitySearchResult {
7
7
  } | null;
8
8
  city: string;
9
9
  country: string;
10
+ outline: Array<{
11
+ latitude: number;
12
+ longitude: number;
13
+ }>;
10
14
  zipcode: string;
11
15
  };
12
16
  }
@@ -21,6 +25,9 @@ export interface MunicipalityApiResult {
21
25
  nom: string;
22
26
  };
23
27
  codesPostaux: string[];
28
+ contour: {
29
+ coordinates: Array<Array<Array<number>>>;
30
+ };
24
31
  }
25
32
  interface Options {
26
33
  country?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"municipalitySearch.d.ts","sourceRoot":"","sources":["../src/municipalitySearch.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE;QACL,MAAM,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAA;QACtD,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;CACF;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACvD,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB;AAED,UAAU,OAAO;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,aAAK,2BAA2B,GAAG,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,EACjB,aAAa,CAAC,EAAE,MAAM,KACnB,OAAO,CAAC,wBAAwB,EAAE,GAAG,MAAM,CAAC,CAAA;AAEjD,aAAK,kBAAkB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,wBAAwB,EAAE,GAAG,MAAM,CAAC,CAAA;AAgE7G,eAAO,MAAM,OAAO,EAAE,kBAoCrB,CAAA;AAID,eAAO,MAAM,GAAG,EAAE,2BAQjB,CAAA"}
1
+ {"version":3,"file":"municipalitySearch.d.ts","sourceRoot":"","sources":["../src/municipalitySearch.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE;QACL,MAAM,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAA;QACtD,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QACvD,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;CACF;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACvD,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,OAAO,EAAE;QAAE,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;KAAE,CAAA;CACtD;AAED,UAAU,OAAO;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,aAAK,2BAA2B,GAAG,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,EACjB,aAAa,CAAC,EAAE,MAAM,KACnB,OAAO,CAAC,wBAAwB,EAAE,GAAG,MAAM,CAAC,CAAA;AAEjD,aAAK,kBAAkB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,wBAAwB,EAAE,GAAG,MAAM,CAAC,CAAA;AA6E7G,eAAO,MAAM,OAAO,EAAE,kBAoCrB,CAAA;AAID,eAAO,MAAM,GAAG,EAAE,2BAQjB,CAAA"}
@@ -6,10 +6,16 @@ export declare type ReverseGeolocSearchResult = {
6
6
  city: string;
7
7
  code: string;
8
8
  coordinates: [number, number];
9
+ outline: Array<{
10
+ latitude: number;
11
+ longitude: number;
12
+ }>;
9
13
  zipcode: string;
14
+ postcode: string | null;
15
+ district: string | null;
10
16
  };
11
17
  export declare const get: (search: {
12
18
  latitude: number;
13
19
  longitude: number;
14
- }, debounceValue?: number) => Promise<ReverseGeolocSearchResult[]>;
20
+ }, debounceValue?: number, signal?: AbortSignal | undefined) => Promise<ReverseGeolocSearchResult[]>;
15
21
  //# sourceMappingURL=reverseGeolocSearch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reverseGeolocSearch.d.ts","sourceRoot":"","sources":["../src/reverseGeolocSearch.ts"],"names":[],"mappings":"AAAA,oBAAY,yBAAyB,GAAG;IACtC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/C,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAyCD,eAAO,MAAM,GAAG,WACN;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,kBAChC,MAAM,KACpB,QAAQ,yBAAyB,EAAE,CAQrC,CAAA"}
1
+ {"version":3,"file":"reverseGeolocSearch.d.ts","sourceRoot":"","sources":["../src/reverseGeolocSearch.ts"],"names":[],"mappings":"AAAA,oBAAY,yBAAyB,GAAG;IACtC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/C,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,OAAO,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvD,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB,CAAA;AAuED,eAAO,MAAM,GAAG,WACN;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,kBAChC,MAAM,uCAEpB,QAAQ,yBAAyB,EAAE,CAQrC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B,QAAS,MAAM,WAMxD,CAAA;AAED,eAAO,MAAM,MAAM,WAAY,MAAM,kBAAkB,OAAO,WAa7D,CAAA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B,QAAS,MAAM,WAMxD,CAAA;AAED,eAAO,MAAM,MAAM,WAAY,MAAM,kBAAkB,OAAO,WAe7D,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pretto/places",
3
- "version": "0.21.0",
3
+ "version": "0.23.0",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",