@pretto/places 0.35.0 → 0.37.0

Sign up to get free protection for your applications and to get access to all the features.
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",