@shophost/rest-api 2.0.18 → 2.0.20

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/db.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./src/db";
package/next.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./src/integrations/next";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shophost/rest-api",
3
- "version": "2.0.18",
3
+ "version": "2.0.20",
4
4
  "type": "module",
5
5
  "main": "./src/index.js",
6
6
  "types": "./src/index.d.ts",
@@ -11,23 +11,36 @@
11
11
  "require": "./src/index.cjs"
12
12
  },
13
13
  "./next": {
14
- "types": "./src/integrations/next.d.ts",
15
14
  "import": "./src/integrations/next.js",
16
15
  "require": "./src/integrations/next.cjs"
17
16
  },
18
17
  "./db": {
19
- "types": "./src/db.d.ts",
20
18
  "import": "./src/db.js",
21
19
  "require": "./src/db.cjs"
22
20
  },
23
21
  "./schemas": {
24
- "types": "./src/schemas/index.d.ts",
25
22
  "import": "./src/schemas/index.js",
26
23
  "require": "./src/schemas/index.cjs"
27
24
  }
28
25
  },
26
+ "typesVersions": {
27
+ "*": {
28
+ "next": [
29
+ "next.d.ts"
30
+ ],
31
+ "db": [
32
+ "db.d.ts"
33
+ ],
34
+ "schemas": [
35
+ "schemas.d.ts"
36
+ ]
37
+ }
38
+ },
29
39
  "files": [
30
40
  "src",
41
+ "next.d.ts",
42
+ "db.d.ts",
43
+ "schemas.d.ts",
31
44
  "global.d.ts",
32
45
  "LICENSE"
33
46
  ],
package/schemas.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./src/schemas";
@@ -1,5 +1,6 @@
1
1
  import { __awaiter } from "tslib";
2
- import axios from "axios";
2
+ import axios, { isAxiosError } from "axios";
3
+ import { logger } from "../../core/logging/pino";
3
4
  class LocationService {
4
5
  constructor(apiKey) {
5
6
  this.apiKey = apiKey;
@@ -16,27 +17,44 @@ class LocationService {
16
17
  */
17
18
  getPredictions(query, radius) {
18
19
  return __awaiter(this, void 0, void 0, function* () {
20
+ var _a, _b, _c;
19
21
  if (!query || query.trim() === "" || query.length < 3) {
20
22
  return [];
21
23
  }
22
- const { data } = yield this.client.post("/places:autocomplete", {
23
- input: query,
24
- locationBias: {
25
- circle: {
26
- center: {
27
- latitude: 37.7937,
28
- longitude: -122.3965,
24
+ try {
25
+ const { data } = yield this.client.post("/places:autocomplete", {
26
+ input: query,
27
+ locationBias: {
28
+ circle: {
29
+ center: {
30
+ latitude: 37.7937,
31
+ longitude: -122.3965,
32
+ },
33
+ radius: radius || 100000,
29
34
  },
30
- radius: radius || 100000,
31
35
  },
32
- },
33
- });
34
- return data.suggestions.map(({ placePrediction }) => ({
35
- placeId: placePrediction.placeId,
36
- text: placePrediction.text.text,
37
- addressLineOne: placePrediction.structuredFormat.mainText.text,
38
- addressLineTwo: placePrediction.structuredFormat.secondaryText.text,
39
- }));
36
+ });
37
+ return data.suggestions.map(({ placePrediction }) => ({
38
+ placeId: placePrediction.placeId,
39
+ text: placePrediction.text.text,
40
+ addressLineOne: placePrediction.structuredFormat.mainText.text,
41
+ addressLineTwo: placePrediction.structuredFormat.secondaryText.text,
42
+ }));
43
+ }
44
+ catch (error) {
45
+ if (isAxiosError(error)) {
46
+ logger.error({
47
+ status: (_a = error.response) === null || _a === void 0 ? void 0 : _a.status,
48
+ statusText: (_b = error.response) === null || _b === void 0 ? void 0 : _b.statusText,
49
+ data: (_c = error.response) === null || _c === void 0 ? void 0 : _c.data,
50
+ query,
51
+ }, "Google Places Autocomplete request failed");
52
+ }
53
+ else {
54
+ logger.error({ err: error, query }, "Unexpected error during Places Autocomplete");
55
+ }
56
+ throw error;
57
+ }
40
58
  });
41
59
  }
42
60
  findDistanceBetweenCoordinates(from, to) {
@@ -62,12 +80,30 @@ class LocationService {
62
80
  }
63
81
  getPlaceDetails(placeId) {
64
82
  return __awaiter(this, void 0, void 0, function* () {
65
- const { data } = yield this.client.get(`/places/${placeId}`, {
66
- headers: {
67
- "X-Goog-FieldMask": "addressComponents,adrFormatAddress,formattedAddress,location,plusCode,postalAddress,shortFormattedAddress,types",
68
- },
69
- });
70
- // Extract the required fields from the response
83
+ var _a, _b, _c;
84
+ let data;
85
+ try {
86
+ const response = yield this.client.get(`/places/${placeId}`, {
87
+ headers: {
88
+ "X-Goog-FieldMask": "addressComponents,adrFormatAddress,formattedAddress,location,plusCode,postalAddress,shortFormattedAddress,types",
89
+ },
90
+ });
91
+ data = response.data;
92
+ }
93
+ catch (error) {
94
+ if (isAxiosError(error)) {
95
+ logger.error({
96
+ status: (_a = error.response) === null || _a === void 0 ? void 0 : _a.status,
97
+ statusText: (_b = error.response) === null || _b === void 0 ? void 0 : _b.statusText,
98
+ data: (_c = error.response) === null || _c === void 0 ? void 0 : _c.data,
99
+ placeId,
100
+ }, "Google Place Details request failed");
101
+ }
102
+ else {
103
+ logger.error({ err: error, placeId }, "Unexpected error during Place Details");
104
+ }
105
+ throw error;
106
+ }
71
107
  const result = {
72
108
  addressLineOne: "",
73
109
  zipCode: "",
@@ -76,7 +112,6 @@ class LocationService {
76
112
  latitude: data.location.latitude,
77
113
  longitude: data.location.longitude,
78
114
  };
79
- // Process address components to extract zipCode, countryCode and city
80
115
  if (!data.addressComponents) {
81
116
  return result;
82
117
  }
@@ -88,15 +123,12 @@ class LocationService {
88
123
  result.addressLineOne =
89
124
  component.shortText + " " + result.addressLineOne;
90
125
  }
91
- // Find postal code
92
126
  if (component.types.includes("postal_code")) {
93
127
  result.zipCode = component.shortText;
94
128
  }
95
- // Find country code
96
129
  if (component.types.includes("country")) {
97
130
  result.country = component.shortText;
98
131
  }
99
- // Find city
100
132
  if (component.types.includes("locality")) {
101
133
  result.city = component.longText;
102
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"location.service.js","sourceRoot":"","sources":["../../../../../../packages/rest-api/src/features/location/location.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"location.service.js","sourceRoot":"","sources":["../../../../../../packages/rest-api/src/features/location/location.service.ts"],"names":[],"mappings":"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"}