@pretto/places 0.35.0 → 0.37.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.d.ts CHANGED
@@ -1,17 +1,17 @@
1
1
  import { CustomFetchOptions, LongLat, MunicipalitySearchResult } from './types';
2
- declare type SearchType = 'city' | 'zipcode' | 'coordinates';
3
- export declare const searchPlaces: (searchValue: string | LongLat, options?: CustomFetchOptions | undefined, searchType?: SearchType[]) => Promise<MunicipalitySearchResult[]>;
4
- export declare const searchDepartment: (searchValue: string, options?: CustomFetchOptions | undefined) => Promise<import("./types").DepartmentSearchResult[]>;
5
- export declare const searchAddress: (searchValue: string, options?: CustomFetchOptions | undefined) => Promise<import("./types").AddressSearchResult[]>;
2
+ type SearchType = 'city' | 'zipcode' | 'coordinates';
3
+ export declare const searchPlaces: (searchValue: string | LongLat, options?: CustomFetchOptions, searchType?: SearchType[]) => Promise<MunicipalitySearchResult[]>;
4
+ export declare const searchDepartment: (searchValue: string, options?: CustomFetchOptions) => Promise<import("./types").DepartmentSearchResult[]>;
5
+ export declare const searchAddress: (searchValue: string, options?: CustomFetchOptions) => Promise<import("./types").AddressSearchResult[]>;
6
6
  export * as searchCountry from './searchByCountry';
7
7
  /**
8
8
  * @deprecated Use searchPlaces instead
9
9
  */
10
- export declare const municipalitySearch: (searchValue: string | LongLat, options?: CustomFetchOptions | undefined, searchType?: SearchType[]) => Promise<MunicipalitySearchResult[]>;
10
+ export declare const municipalitySearch: (searchValue: string | LongLat, options?: CustomFetchOptions, searchType?: SearchType[]) => Promise<MunicipalitySearchResult[]>;
11
11
  /**
12
12
  * @deprecated Use searchPlaces instead
13
13
  */
14
- export declare const geolocSearch: (searchValue: string | LongLat, options?: CustomFetchOptions | undefined, searchType?: SearchType[]) => Promise<MunicipalitySearchResult[]>;
14
+ export declare const geolocSearch: (searchValue: string | LongLat, options?: CustomFetchOptions, searchType?: SearchType[]) => Promise<MunicipalitySearchResult[]>;
15
15
  /**
16
16
  * @deprecated Use searchByCoordinates instead
17
17
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAEhF,aAAK,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAA;AAEpD,eAAO,MAAM,YAAY,gBACV,MAAM,GAAG,OAAO,yDAEjB,UAAU,EAAE,KACvB,QAAQ,wBAAwB,EAAE,CAkCpC,CAAA;AAED,eAAO,MAAM,gBAAgB,gBAAiB,MAAM,kGACV,CAAA;AAE1C,eAAO,MAAM,aAAa,gBAAiB,MAAM,+FACV,CAAA;AAEvC,OAAO,KAAK,aAAa,MAAM,mBAAmB,CAAA;AAIlD;;GAEG;AACH,eAAO,MAAM,kBAAkB,gBApDhB,MAAM,GAAG,OAAO,yDAEjB,UAAU,EAAE,KACvB,QAAQ,wBAAwB,EAAE,CAiDS,CAAA;AAE9C;;GAEG;AACH,eAAO,MAAM,YAAY,gBAzDV,MAAM,GAAG,OAAO,yDAEjB,UAAU,EAAE,KACvB,QAAQ,wBAAwB,EAAE,CAsDG,CAAA;AAExC;;GAEG;AACH,eAAO,MAAM,mBAAmB,qHAAsB,CAAA;AAEtD;;GAEG;AACH,eAAO,MAAM,aAAa,qHAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAEhF,KAAK,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAA;AAEpD,eAAO,MAAM,YAAY,gBACV,MAAM,GAAG,OAAO,YACnB,kBAAkB,eAChB,UAAU,EAAE,KACvB,QAAQ,wBAAwB,EAAE,CAmCpC,CAAA;AAED,eAAO,MAAM,gBAAgB,gBAAuB,MAAM,YAAY,kBAAkB,wDAWvF,CAAA;AAED,eAAO,MAAM,aAAa,gBAAuB,MAAM,YAAY,kBAAkB,qDAOpF,CAAA;AAED,OAAO,KAAK,aAAa,MAAM,mBAAmB,CAAA;AAIlD;;GAEG;AACH,eAAO,MAAM,kBAAkB,gBArEhB,MAAM,GAAG,OAAO,YACnB,kBAAkB,eAChB,UAAU,EAAE,KACvB,QAAQ,wBAAwB,EAAE,CAkES,CAAA;AAE9C;;GAEG;AACH,eAAO,MAAM,YAAY,gBA1EV,MAAM,GAAG,OAAO,YACnB,kBAAkB,eAChB,UAAU,EAAE,KACvB,QAAQ,wBAAwB,EAAE,CAuEG,CAAA;AAExC;;GAEG;AACH,eAAO,MAAM,mBAAmB,qHAAsB,CAAA;AAEtD;;GAEG;AACH,eAAO,MAAM,aAAa,qHAAkB,CAAA"}
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
8
8
 
9
9
  var algoliasearch__default = /*#__PURE__*/_interopDefaultLegacy(algoliasearch);
10
10
 
11
- /*! *****************************************************************************
11
+ /******************************************************************************
12
12
  Copyright (c) Microsoft Corporation.
13
13
 
14
14
  Permission to use, copy, modify, and/or distribute this software for any
@@ -31,7 +31,21 @@ function __awaiter(thisArg, _arguments, P, generator) {
31
31
  function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
32
32
  step((generator = generator.apply(thisArg, _arguments || [])).next());
33
33
  });
34
- }
34
+ }
35
+
36
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
37
+ var e = new Error(message);
38
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
39
+ };
40
+
41
+ let controller = { current: null };
42
+ const getSignal = () => {
43
+ if (controller.current) {
44
+ controller.current.abort();
45
+ }
46
+ controller.current = new AbortController();
47
+ return controller.current.signal;
48
+ };
35
49
 
36
50
  const MUNICIPALITY_API_URL = 'https://geo.api.gouv.fr/communes';
37
51
  const DEPARTMENT_API_URL = 'https://geo.api.gouv.fr/departements';
@@ -41,49 +55,55 @@ const BOOST = '&boost=population';
41
55
  const TYPES = '&type=arrondissement-municipal,commune-actuelle';
42
56
 
43
57
  const DEFAULT_DEBOUNCE_TIME = 300;
44
- let getDelayedData;
45
- function customFetch(url, options = { debouncetime: DEFAULT_DEBOUNCE_TIME }) {
58
+ let getDelayedData = null;
59
+ const fetchData = (url, signal) => __awaiter(void 0, void 0, void 0, function* () {
60
+ try {
61
+ const response = yield fetch(url, { signal });
62
+ if (!response.ok) {
63
+ throw new Error('Error: ' + response.status);
64
+ }
65
+ return response;
66
+ }
67
+ catch (error) {
68
+ if (error instanceof DOMException && error.name === 'AbortError') {
69
+ return new Promise(() => { });
70
+ }
71
+ throw error;
72
+ }
73
+ });
74
+ function customFetch(url, options) {
75
+ var _a;
46
76
  return __awaiter(this, void 0, void 0, function* () {
47
- clearTimeout(getDelayedData);
77
+ if (getDelayedData) {
78
+ clearTimeout(getDelayedData);
79
+ }
80
+ const debounceTime = (_a = options === null || options === void 0 ? void 0 : options.debouncetime) !== null && _a !== void 0 ? _a : DEFAULT_DEBOUNCE_TIME;
48
81
  return new Promise((resolve, reject) => {
49
82
  getDelayedData = setTimeout(() => __awaiter(this, void 0, void 0, function* () {
50
- const fetchData = (singleUrl) => __awaiter(this, void 0, void 0, function* () {
51
- const response = yield fetch(singleUrl, { signal: options.signal });
52
- if (!response.ok) {
53
- throw new Error('Error: ' + response.status);
54
- }
55
- return response;
56
- });
57
83
  try {
58
84
  if (Array.isArray(url)) {
59
- const responses = yield Promise.all(url.map(singleUrl => fetchData(singleUrl)));
85
+ const responses = yield Promise.all(url.map(singleUrl => fetchData(singleUrl, options === null || options === void 0 ? void 0 : options.signal)));
60
86
  resolve(responses);
61
87
  }
62
88
  else {
63
- const response = yield fetchData(url);
89
+ const response = yield fetchData(url, options === null || options === void 0 ? void 0 : options.signal);
64
90
  resolve(response);
65
91
  }
66
92
  }
67
93
  catch (error) {
94
+ if (error instanceof DOMException && error.name === 'AbortError') {
95
+ return;
96
+ }
68
97
  reject(error);
69
98
  }
70
- }), options.debouncetime);
99
+ }), debounceTime);
71
100
  });
72
101
  });
73
102
  }
74
103
 
75
- const getSignal = (controller) => {
76
- if (controller) {
77
- controller.abort();
78
- }
79
- controller = new AbortController();
80
- return controller.signal;
81
- };
82
-
83
- let controller$4 = null;
84
104
  const searchByAddress = (searchValue, options) => __awaiter(void 0, void 0, void 0, function* () {
85
105
  const url = `${ADDRESS_API_URL}/?q=${searchValue}&autocomplete=1&limit=${(options === null || options === void 0 ? void 0 : options.limit) || 10}`;
86
- const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal(controller$4);
106
+ const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal();
87
107
  const addressResponse = yield customFetch(url, Object.assign(Object.assign({}, options), { signal }));
88
108
  const addressResult = yield addressResponse.json();
89
109
  const formatAddressResult = addressResult.features.reduce((acc, { properties }) => {
@@ -116,10 +136,9 @@ const formatToMunicipalitySearchResult = (results) => {
116
136
  }));
117
137
  };
118
138
 
119
- let controller$3 = null;
120
139
  const searchByCoordinates = ({ latitude, longitude }, options) => __awaiter(void 0, void 0, void 0, function* () {
121
140
  const url = `${MUNICIPALITY_API_URL}?lat=${latitude}&lon=${longitude}${FIELDS}${BOOST}`;
122
- const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal(controller$3);
141
+ const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal();
123
142
  try {
124
143
  const gpsResponse = yield customFetch([url + TYPES, url], Object.assign(Object.assign({}, options), { signal }));
125
144
  const arrondissementsResponse = yield gpsResponse[0].json();
@@ -133,11 +152,10 @@ const searchByCoordinates = ({ latitude, longitude }, options) => __awaiter(void
133
152
  }
134
153
  });
135
154
 
136
- let controller$2 = null;
137
155
  const searchByDepartment = (searchValue, options) => __awaiter(void 0, void 0, void 0, function* () {
138
156
  if (isNaN(parseInt(searchValue))) {
139
157
  const nameDepartmentUrl = `${DEPARTMENT_API_URL}?nom=${searchValue}&fields=region,codeRegion&limit=21`;
140
- const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal(controller$2);
158
+ const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal();
141
159
  const departmentResponse = yield customFetch(nameDepartmentUrl, Object.assign(Object.assign({}, options), { signal }));
142
160
  const departmentResult = yield departmentResponse.json();
143
161
  return departmentResult.map(result => ({
@@ -166,7 +184,6 @@ function isStartsWith(arr, value) {
166
184
 
167
185
  const SPECIAL_CITIES = ['paris ', 'lyon ', 'marseille '];
168
186
  let CURRENT_RESULT = [];
169
- let controller$1 = null;
170
187
  const filterOnCurrentResult = (searchValue) => {
171
188
  const searchRegex = new RegExp(searchValue
172
189
  .split(' ')
@@ -182,13 +199,13 @@ const searchByMunicipality = (searchValue, options) => __awaiter(void 0, void 0,
182
199
  }
183
200
  CURRENT_RESULT = [];
184
201
  const url = `${MUNICIPALITY_API_URL}?nom=${searchValue}${FIELDS}${BOOST}&limit=${(options === null || options === void 0 ? void 0 : options.limit) || 10}`;
185
- const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal(controller$1);
202
+ const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal();
186
203
  const cityResponse = yield customFetch(url, Object.assign(Object.assign({}, options), { signal }));
187
204
  const cityResult = yield cityResponse.json();
188
205
  // The first result is Paris, Lyon or Marseille, we want get all arrondissements
189
206
  if (cityResult.length > 0 && ['75', '13', '69'].includes(cityResult[0].codeDepartement)) {
190
207
  const url = `${MUNICIPALITY_API_URL}?nom=${searchValue}&codeDepartement=${cityResult[0].codeDepartement}${FIELDS}${BOOST}${TYPES}&limit=21`;
191
- const arrondissementsResponse = yield customFetch(url, options);
208
+ const arrondissementsResponse = yield customFetch(url);
192
209
  const arrondissementsResult = yield arrondissementsResponse.json();
193
210
  const filtredAndSortArrondissementsResult = arrondissementsResult
194
211
  .filter(item => item.codesPostaux.length === 1)
@@ -203,10 +220,9 @@ const searchByMunicipality = (searchValue, options) => __awaiter(void 0, void 0,
203
220
  return formatToMunicipalitySearchResult(filterCityResults(cityResult));
204
221
  });
205
222
 
206
- let controller = null;
207
223
  const searchByZipcode = (searchValue, options) => __awaiter(void 0, void 0, void 0, function* () {
208
224
  const url = `${MUNICIPALITY_API_URL}?codePostal=${searchValue}${FIELDS}${BOOST}${TYPES}`;
209
- const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal(controller);
225
+ const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal();
210
226
  const zipCodeResponse = yield customFetch(url, Object.assign(Object.assign({}, options), { signal }));
211
227
  const zipCodeResult = yield zipCodeResponse.json();
212
228
  const filtredZipCodeResult = zipCodeResult.filter(item => item.codesPostaux.length <= 1);
@@ -268,6 +284,7 @@ var searchByCountry = /*#__PURE__*/Object.freeze({
268
284
 
269
285
  const searchPlaces = (searchValue, options, searchType = ['city', 'zipcode', 'coordinates']) => __awaiter(void 0, void 0, void 0, function* () {
270
286
  if (!searchValue) {
287
+ getSignal();
271
288
  return [];
272
289
  }
273
290
  try {
@@ -294,8 +311,23 @@ const searchPlaces = (searchValue, options, searchType = ['city', 'zipcode', 'co
294
311
  return [];
295
312
  }
296
313
  });
297
- const searchDepartment = (searchValue, options) => searchByDepartment(searchValue, options);
298
- const searchAddress = (searchValue, options) => searchByAddress(searchValue, options);
314
+ const searchDepartment = (searchValue, options) => __awaiter(void 0, void 0, void 0, function* () {
315
+ if (/\d/.test(searchValue)) {
316
+ throw new Error('Search value cannot contain numbers');
317
+ }
318
+ if (!searchValue) {
319
+ getSignal();
320
+ return [];
321
+ }
322
+ return searchByDepartment(searchValue, options);
323
+ });
324
+ const searchAddress = (searchValue, options) => __awaiter(void 0, void 0, void 0, function* () {
325
+ if (!searchValue || searchValue.length < 3) {
326
+ getSignal();
327
+ return [];
328
+ }
329
+ return searchByAddress(searchValue, options);
330
+ });
299
331
  /* Deprecated names */
300
332
  /**
301
333
  * @deprecated Use searchPlaces instead
@@ -1 +1 @@
1
- {"version":3,"file":"customFetch.d.ts","sourceRoot":"","sources":["../../src/lib/customFetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAO9C,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;AAC3G,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"customFetch.d.ts","sourceRoot":"","sources":["../../src/lib/customFetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAwB9C,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;AAC3G,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA"}
@@ -1,2 +1,2 @@
1
- export declare const getSignal: (controller: AbortController | null) => AbortSignal;
1
+ export declare const getSignal: () => AbortSignal;
2
2
  //# sourceMappingURL=getSignal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getSignal.d.ts","sourceRoot":"","sources":["../../src/lib/getSignal.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,eAAgB,eAAe,GAAG,IAAI,gBAO3D,CAAA"}
1
+ {"version":3,"file":"getSignal.d.ts","sourceRoot":"","sources":["../../src/lib/getSignal.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,mBAQrB,CAAA"}
package/dist/module.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import algoliasearch from 'algoliasearch';
2
2
 
3
- /*! *****************************************************************************
3
+ /******************************************************************************
4
4
  Copyright (c) Microsoft Corporation.
5
5
 
6
6
  Permission to use, copy, modify, and/or distribute this software for any
@@ -23,7 +23,21 @@ function __awaiter(thisArg, _arguments, P, generator) {
23
23
  function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
24
24
  step((generator = generator.apply(thisArg, _arguments || [])).next());
25
25
  });
26
- }
26
+ }
27
+
28
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
29
+ var e = new Error(message);
30
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
31
+ };
32
+
33
+ let controller = { current: null };
34
+ const getSignal = () => {
35
+ if (controller.current) {
36
+ controller.current.abort();
37
+ }
38
+ controller.current = new AbortController();
39
+ return controller.current.signal;
40
+ };
27
41
 
28
42
  const MUNICIPALITY_API_URL = 'https://geo.api.gouv.fr/communes';
29
43
  const DEPARTMENT_API_URL = 'https://geo.api.gouv.fr/departements';
@@ -33,49 +47,55 @@ const BOOST = '&boost=population';
33
47
  const TYPES = '&type=arrondissement-municipal,commune-actuelle';
34
48
 
35
49
  const DEFAULT_DEBOUNCE_TIME = 300;
36
- let getDelayedData;
37
- function customFetch(url, options = { debouncetime: DEFAULT_DEBOUNCE_TIME }) {
50
+ let getDelayedData = null;
51
+ const fetchData = (url, signal) => __awaiter(void 0, void 0, void 0, function* () {
52
+ try {
53
+ const response = yield fetch(url, { signal });
54
+ if (!response.ok) {
55
+ throw new Error('Error: ' + response.status);
56
+ }
57
+ return response;
58
+ }
59
+ catch (error) {
60
+ if (error instanceof DOMException && error.name === 'AbortError') {
61
+ return new Promise(() => { });
62
+ }
63
+ throw error;
64
+ }
65
+ });
66
+ function customFetch(url, options) {
67
+ var _a;
38
68
  return __awaiter(this, void 0, void 0, function* () {
39
- clearTimeout(getDelayedData);
69
+ if (getDelayedData) {
70
+ clearTimeout(getDelayedData);
71
+ }
72
+ const debounceTime = (_a = options === null || options === void 0 ? void 0 : options.debouncetime) !== null && _a !== void 0 ? _a : DEFAULT_DEBOUNCE_TIME;
40
73
  return new Promise((resolve, reject) => {
41
74
  getDelayedData = setTimeout(() => __awaiter(this, void 0, void 0, function* () {
42
- const fetchData = (singleUrl) => __awaiter(this, void 0, void 0, function* () {
43
- const response = yield fetch(singleUrl, { signal: options.signal });
44
- if (!response.ok) {
45
- throw new Error('Error: ' + response.status);
46
- }
47
- return response;
48
- });
49
75
  try {
50
76
  if (Array.isArray(url)) {
51
- const responses = yield Promise.all(url.map(singleUrl => fetchData(singleUrl)));
77
+ const responses = yield Promise.all(url.map(singleUrl => fetchData(singleUrl, options === null || options === void 0 ? void 0 : options.signal)));
52
78
  resolve(responses);
53
79
  }
54
80
  else {
55
- const response = yield fetchData(url);
81
+ const response = yield fetchData(url, options === null || options === void 0 ? void 0 : options.signal);
56
82
  resolve(response);
57
83
  }
58
84
  }
59
85
  catch (error) {
86
+ if (error instanceof DOMException && error.name === 'AbortError') {
87
+ return;
88
+ }
60
89
  reject(error);
61
90
  }
62
- }), options.debouncetime);
91
+ }), debounceTime);
63
92
  });
64
93
  });
65
94
  }
66
95
 
67
- const getSignal = (controller) => {
68
- if (controller) {
69
- controller.abort();
70
- }
71
- controller = new AbortController();
72
- return controller.signal;
73
- };
74
-
75
- let controller$4 = null;
76
96
  const searchByAddress = (searchValue, options) => __awaiter(void 0, void 0, void 0, function* () {
77
97
  const url = `${ADDRESS_API_URL}/?q=${searchValue}&autocomplete=1&limit=${(options === null || options === void 0 ? void 0 : options.limit) || 10}`;
78
- const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal(controller$4);
98
+ const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal();
79
99
  const addressResponse = yield customFetch(url, Object.assign(Object.assign({}, options), { signal }));
80
100
  const addressResult = yield addressResponse.json();
81
101
  const formatAddressResult = addressResult.features.reduce((acc, { properties }) => {
@@ -108,10 +128,9 @@ const formatToMunicipalitySearchResult = (results) => {
108
128
  }));
109
129
  };
110
130
 
111
- let controller$3 = null;
112
131
  const searchByCoordinates = ({ latitude, longitude }, options) => __awaiter(void 0, void 0, void 0, function* () {
113
132
  const url = `${MUNICIPALITY_API_URL}?lat=${latitude}&lon=${longitude}${FIELDS}${BOOST}`;
114
- const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal(controller$3);
133
+ const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal();
115
134
  try {
116
135
  const gpsResponse = yield customFetch([url + TYPES, url], Object.assign(Object.assign({}, options), { signal }));
117
136
  const arrondissementsResponse = yield gpsResponse[0].json();
@@ -125,11 +144,10 @@ const searchByCoordinates = ({ latitude, longitude }, options) => __awaiter(void
125
144
  }
126
145
  });
127
146
 
128
- let controller$2 = null;
129
147
  const searchByDepartment = (searchValue, options) => __awaiter(void 0, void 0, void 0, function* () {
130
148
  if (isNaN(parseInt(searchValue))) {
131
149
  const nameDepartmentUrl = `${DEPARTMENT_API_URL}?nom=${searchValue}&fields=region,codeRegion&limit=21`;
132
- const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal(controller$2);
150
+ const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal();
133
151
  const departmentResponse = yield customFetch(nameDepartmentUrl, Object.assign(Object.assign({}, options), { signal }));
134
152
  const departmentResult = yield departmentResponse.json();
135
153
  return departmentResult.map(result => ({
@@ -158,7 +176,6 @@ function isStartsWith(arr, value) {
158
176
 
159
177
  const SPECIAL_CITIES = ['paris ', 'lyon ', 'marseille '];
160
178
  let CURRENT_RESULT = [];
161
- let controller$1 = null;
162
179
  const filterOnCurrentResult = (searchValue) => {
163
180
  const searchRegex = new RegExp(searchValue
164
181
  .split(' ')
@@ -174,13 +191,13 @@ const searchByMunicipality = (searchValue, options) => __awaiter(void 0, void 0,
174
191
  }
175
192
  CURRENT_RESULT = [];
176
193
  const url = `${MUNICIPALITY_API_URL}?nom=${searchValue}${FIELDS}${BOOST}&limit=${(options === null || options === void 0 ? void 0 : options.limit) || 10}`;
177
- const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal(controller$1);
194
+ const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal();
178
195
  const cityResponse = yield customFetch(url, Object.assign(Object.assign({}, options), { signal }));
179
196
  const cityResult = yield cityResponse.json();
180
197
  // The first result is Paris, Lyon or Marseille, we want get all arrondissements
181
198
  if (cityResult.length > 0 && ['75', '13', '69'].includes(cityResult[0].codeDepartement)) {
182
199
  const url = `${MUNICIPALITY_API_URL}?nom=${searchValue}&codeDepartement=${cityResult[0].codeDepartement}${FIELDS}${BOOST}${TYPES}&limit=21`;
183
- const arrondissementsResponse = yield customFetch(url, options);
200
+ const arrondissementsResponse = yield customFetch(url);
184
201
  const arrondissementsResult = yield arrondissementsResponse.json();
185
202
  const filtredAndSortArrondissementsResult = arrondissementsResult
186
203
  .filter(item => item.codesPostaux.length === 1)
@@ -195,10 +212,9 @@ const searchByMunicipality = (searchValue, options) => __awaiter(void 0, void 0,
195
212
  return formatToMunicipalitySearchResult(filterCityResults(cityResult));
196
213
  });
197
214
 
198
- let controller = null;
199
215
  const searchByZipcode = (searchValue, options) => __awaiter(void 0, void 0, void 0, function* () {
200
216
  const url = `${MUNICIPALITY_API_URL}?codePostal=${searchValue}${FIELDS}${BOOST}${TYPES}`;
201
- const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal(controller);
217
+ const signal = (options === null || options === void 0 ? void 0 : options.signal) || getSignal();
202
218
  const zipCodeResponse = yield customFetch(url, Object.assign(Object.assign({}, options), { signal }));
203
219
  const zipCodeResult = yield zipCodeResponse.json();
204
220
  const filtredZipCodeResult = zipCodeResult.filter(item => item.codesPostaux.length <= 1);
@@ -260,6 +276,7 @@ var searchByCountry = /*#__PURE__*/Object.freeze({
260
276
 
261
277
  const searchPlaces = (searchValue, options, searchType = ['city', 'zipcode', 'coordinates']) => __awaiter(void 0, void 0, void 0, function* () {
262
278
  if (!searchValue) {
279
+ getSignal();
263
280
  return [];
264
281
  }
265
282
  try {
@@ -286,8 +303,23 @@ const searchPlaces = (searchValue, options, searchType = ['city', 'zipcode', 'co
286
303
  return [];
287
304
  }
288
305
  });
289
- const searchDepartment = (searchValue, options) => searchByDepartment(searchValue, options);
290
- const searchAddress = (searchValue, options) => searchByAddress(searchValue, options);
306
+ const searchDepartment = (searchValue, options) => __awaiter(void 0, void 0, void 0, function* () {
307
+ if (/\d/.test(searchValue)) {
308
+ throw new Error('Search value cannot contain numbers');
309
+ }
310
+ if (!searchValue) {
311
+ getSignal();
312
+ return [];
313
+ }
314
+ return searchByDepartment(searchValue, options);
315
+ });
316
+ const searchAddress = (searchValue, options) => __awaiter(void 0, void 0, void 0, function* () {
317
+ if (!searchValue || searchValue.length < 3) {
318
+ getSignal();
319
+ return [];
320
+ }
321
+ return searchByAddress(searchValue, options);
322
+ });
291
323
  /* Deprecated names */
292
324
  /**
293
325
  * @deprecated Use searchPlaces instead
@@ -1,3 +1,3 @@
1
1
  import { AddressSearchResult, CustomFetchOptions } from './types';
2
- export declare const searchByAddress: (searchValue: string, options?: CustomFetchOptions | undefined) => Promise<AddressSearchResult[]>;
2
+ export declare const searchByAddress: (searchValue: string, options?: CustomFetchOptions) => Promise<AddressSearchResult[]>;
3
3
  //# sourceMappingURL=searchByAddress.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"searchByAddress.d.ts","sourceRoot":"","sources":["../src/searchByAddress.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAelE,eAAO,MAAM,eAAe,gBACb,MAAM,+CAElB,QAAQ,mBAAmB,EAAE,CAuB/B,CAAA"}
1
+ {"version":3,"file":"searchByAddress.d.ts","sourceRoot":"","sources":["../src/searchByAddress.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAalE,eAAO,MAAM,eAAe,gBACb,MAAM,YACT,kBAAkB,KAC3B,QAAQ,mBAAmB,EAAE,CAuB/B,CAAA"}
@@ -1,3 +1,3 @@
1
1
  import { CustomFetchOptions, LongLat, MunicipalitySearchResult } from './types';
2
- export declare const searchByCoordinates: ({ latitude, longitude }: LongLat, options?: CustomFetchOptions | undefined) => Promise<MunicipalitySearchResult[]>;
2
+ export declare const searchByCoordinates: ({ latitude, longitude }: LongLat, options?: CustomFetchOptions) => Promise<MunicipalitySearchResult[]>;
3
3
  //# sourceMappingURL=searchByCoordinates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"searchByCoordinates.d.ts","sourceRoot":"","sources":["../src/searchByCoordinates.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAgB,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAI9F,eAAO,MAAM,mBAAmB,4BACL,OAAO,+CAE/B,QAAQ,wBAAwB,EAAE,CAiBpC,CAAA"}
1
+ {"version":3,"file":"searchByCoordinates.d.ts","sourceRoot":"","sources":["../src/searchByCoordinates.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAgB,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAE9F,eAAO,MAAM,mBAAmB,4BACL,OAAO,YACtB,kBAAkB,KAC3B,QAAQ,wBAAwB,EAAE,CAiBpC,CAAA"}
@@ -4,8 +4,8 @@ interface Options {
4
4
  limit?: number;
5
5
  language?: 'fr' | 'en';
6
6
  }
7
- export declare const init: (appId: string, apiKey: string, options?: AlgoliaSearchOptions | undefined) => "An error occurred." | {
8
- get(search: string, options?: Options | undefined): Promise<CountriesSearchResult[]>;
7
+ export declare const init: (appId: string, apiKey: string, options?: AlgoliaSearchOptions) => "An error occurred." | {
8
+ get(search: string, options?: Options): Promise<CountriesSearchResult[]>;
9
9
  };
10
10
  export {};
11
11
  //# sourceMappingURL=searchByCountry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"searchByCountry.d.ts","sourceRoot":"","sources":["../src/searchByCountry.ts"],"names":[],"mappings":"AAAA,OAAsB,EAAE,oBAAoB,EAAgB,MAAM,eAAe,CAAC;AAGlF,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAShD,UAAU,OAAO;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CACvB;AAyBD,eAAO,MAAM,IAAI,UAAW,MAAM,UAAU,MAAM;gBAK1B,MAAM;CAS7B,CAAA"}
1
+ {"version":3,"file":"searchByCountry.d.ts","sourceRoot":"","sources":["../src/searchByCountry.ts"],"names":[],"mappings":"AAAA,OAAsB,EAAE,oBAAoB,EAAgB,MAAM,eAAe,CAAC;AAGlF,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAShD,UAAU,OAAO;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CACvB;AAyBD,eAAO,MAAM,IAAI,UAAW,MAAM,UAAU,MAAM,YAAY,oBAAoB;gBAK1D,MAAM,YAAY,OAAO;CAShD,CAAA"}
@@ -1,3 +1,3 @@
1
1
  import { CustomFetchOptions, DepartmentSearchResult } from './types';
2
- export declare const searchByDepartment: (searchValue: string, options?: CustomFetchOptions | undefined) => Promise<DepartmentSearchResult[]>;
2
+ export declare const searchByDepartment: (searchValue: string, options?: CustomFetchOptions) => Promise<DepartmentSearchResult[]>;
3
3
  //# sourceMappingURL=searchByDepartment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"searchByDepartment.d.ts","sourceRoot":"","sources":["../src/searchByDepartment.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,kBAAkB,EAAE,sBAAsB,EAC7C,MAAM,SAAS,CAAC;AAIjB,eAAO,MAAM,kBAAkB,gBAChB,MAAM,+CAElB,QAAQ,sBAAsB,EAAE,CA4BlC,CAAA"}
1
+ {"version":3,"file":"searchByDepartment.d.ts","sourceRoot":"","sources":["../src/searchByDepartment.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,kBAAkB,EAAE,sBAAsB,EAC7C,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,kBAAkB,gBAChB,MAAM,YACT,kBAAkB,KAC3B,QAAQ,sBAAsB,EAAE,CA4BlC,CAAA"}
@@ -1,3 +1,3 @@
1
1
  import { CustomFetchOptions, MunicipalitySearchResult } from './types';
2
- export declare const searchByMunicipality: (searchValue: string, options?: CustomFetchOptions | undefined) => Promise<MunicipalitySearchResult[]>;
2
+ export declare const searchByMunicipality: (searchValue: string, options?: CustomFetchOptions) => Promise<MunicipalitySearchResult[]>;
3
3
  //# sourceMappingURL=searchByMunicipality.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"searchByMunicipality.d.ts","sourceRoot":"","sources":["../src/searchByMunicipality.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAgB,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAqBrF,eAAO,MAAM,oBAAoB,gBAClB,MAAM,+CAElB,QAAQ,wBAAwB,EAAE,CAqCpC,CAAA"}
1
+ {"version":3,"file":"searchByMunicipality.d.ts","sourceRoot":"","sources":["../src/searchByMunicipality.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAgB,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAoBrF,eAAO,MAAM,oBAAoB,gBAClB,MAAM,YACT,kBAAkB,KAC3B,QAAQ,wBAAwB,EAAE,CAqCpC,CAAA"}
@@ -1,3 +1,3 @@
1
1
  import { CustomFetchOptions, MunicipalitySearchResult } from './types';
2
- export declare const searchByZipcode: (searchValue: string, options?: CustomFetchOptions | undefined) => Promise<MunicipalitySearchResult[]>;
2
+ export declare const searchByZipcode: (searchValue: string, options?: CustomFetchOptions) => Promise<MunicipalitySearchResult[]>;
3
3
  //# sourceMappingURL=searchByZipcode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"searchByZipcode.d.ts","sourceRoot":"","sources":["../src/searchByZipcode.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAgB,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAIrF,eAAO,MAAM,eAAe,gBACb,MAAM,+CAElB,QAAQ,wBAAwB,EAAE,CAUpC,CAAA"}
1
+ {"version":3,"file":"searchByZipcode.d.ts","sourceRoot":"","sources":["../src/searchByZipcode.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAgB,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAErF,eAAO,MAAM,eAAe,gBACb,MAAM,YACT,kBAAkB,KAC3B,QAAQ,wBAAwB,EAAE,CAUpC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pretto/places",
3
- "version": "0.35.0",
3
+ "version": "0.37.0",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",