@nx-ddd/google 19.10.0 → 19.12.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.
@@ -13,52 +13,86 @@ function provideGooglePlacesConfig(useFactory) {
13
13
  ];
14
14
  }
15
15
 
16
+ /**
17
+ * Transform API response from snake_case to camelCase for search results
18
+ */
19
+ function transformPlaceSearchResult(result) {
20
+ return {
21
+ placeId: result.place_id,
22
+ name: result.name,
23
+ formattedAddress: result.formatted_address,
24
+ geometry: result.geometry,
25
+ photos: result.photos?.map((photo) => ({
26
+ photoReference: photo.photo_reference,
27
+ height: photo.height,
28
+ width: photo.width,
29
+ htmlAttributions: photo.html_attributions
30
+ })),
31
+ rating: result.rating,
32
+ userRatingsTotal: result.user_ratings_total
33
+ };
34
+ }
35
+ /**
36
+ * Transform API response from snake_case to camelCase for place details
37
+ */
38
+ function transformPlaceDetailsResult(result) {
39
+ return {
40
+ placeId: result.place_id,
41
+ name: result.name,
42
+ formattedAddress: result.formatted_address,
43
+ formattedPhoneNumber: result.formatted_phone_number,
44
+ website: result.website,
45
+ photos: result.photos?.map((photo) => ({
46
+ photoReference: photo.photo_reference,
47
+ height: photo.height,
48
+ width: photo.width,
49
+ htmlAttributions: photo.html_attributions
50
+ })),
51
+ rating: result.rating,
52
+ userRatingsTotal: result.user_ratings_total,
53
+ geometry: result.geometry
54
+ };
55
+ }
56
+
57
+ /**
58
+ * Get a single place photo as Blob using Place Photos API
59
+ */
60
+ async function getPlacePhoto(http, apiKey, photoReference, maxWidth = 1600) {
61
+ const url = 'https://maps.googleapis.com/maps/api/place/photo';
62
+ const params = {
63
+ photoreference: photoReference,
64
+ maxwidth: maxWidth.toString(),
65
+ key: apiKey
66
+ };
67
+ const response = await lastValueFrom(http.get(url, {
68
+ params,
69
+ responseType: 'blob'
70
+ }));
71
+ return response;
72
+ }
73
+ /**
74
+ * Get multiple place photos as Blobs
75
+ */
76
+ async function getPlacePhotos(http, apiKey, photoReferences, maxWidth = 1600, limit = 5) {
77
+ const results = [];
78
+ const refs = photoReferences.slice(0, limit);
79
+ for (const photoRef of refs) {
80
+ try {
81
+ const blob = await getPlacePhoto(http, apiKey, photoRef, maxWidth);
82
+ results.push({ photoReference: photoRef, blob });
83
+ }
84
+ catch (error) {
85
+ console.warn(`Failed to fetch photo ${photoRef}:`, error);
86
+ // Continue with other photos even if one fails
87
+ }
88
+ }
89
+ return results;
90
+ }
91
+
16
92
  class GooglePlacesService {
17
93
  http = inject(HttpClient);
18
94
  config = inject(GOOGLE_PLACES_CONFIG);
19
- /**
20
- * Transform API response from snake_case to camelCase
21
- */
22
- transformPlaceSearchResult(result) {
23
- return {
24
- placeId: result.place_id,
25
- name: result.name,
26
- formattedAddress: result.formatted_address,
27
- geometry: result.geometry,
28
- photos: result.photos?.map((photo) => ({
29
- photoReference: photo.photo_reference,
30
- height: photo.height,
31
- width: photo.width,
32
- htmlAttributions: photo.html_attributions
33
- })),
34
- rating: result.rating,
35
- userRatingsTotal: result.user_ratings_total
36
- };
37
- }
38
- /**
39
- * Transform API response from snake_case to camelCase
40
- */
41
- transformPlaceDetailsResult(result) {
42
- return {
43
- placeId: result.place_id,
44
- name: result.name,
45
- formattedAddress: result.formatted_address,
46
- formattedPhoneNumber: result.formatted_phone_number,
47
- website: result.website,
48
- photos: result.photos?.map((photo) => ({
49
- photoReference: photo.photo_reference,
50
- height: photo.height,
51
- width: photo.width,
52
- htmlAttributions: photo.html_attributions
53
- })),
54
- rating: result.rating,
55
- userRatingsTotal: result.user_ratings_total,
56
- geometry: result.geometry
57
- };
58
- }
59
- /**
60
- * Search for places using Google Places Text Search API
61
- */
95
+ /** Search for places using Google Places Text Search API */
62
96
  async searchPlaces(query, options = {}) {
63
97
  const { location, radius = 50000, limit = 20 } = options;
64
98
  try {
@@ -78,29 +112,20 @@ class GooglePlacesService {
78
112
  }
79
113
  return response.results
80
114
  .slice(0, limit)
81
- .map((result) => this.transformPlaceSearchResult(result));
115
+ .map((result) => transformPlaceSearchResult(result));
82
116
  }
83
117
  catch (error) {
84
118
  console.error('Error searching places:', error);
85
119
  throw error;
86
120
  }
87
121
  }
88
- /**
89
- * Get detailed information about a place using Place Details API
90
- */
122
+ /** Get detailed information about a place using Place Details API */
91
123
  async getPlaceDetails(placeId, fields) {
92
124
  try {
93
125
  const url = 'https://maps.googleapis.com/maps/api/place/details/json';
94
126
  const defaultFields = [
95
- 'place_id',
96
- 'name',
97
- 'formatted_address',
98
- 'formatted_phone_number',
99
- 'website',
100
- 'photos',
101
- 'rating',
102
- 'user_ratings_total',
103
- 'geometry'
127
+ 'place_id', 'name', 'formatted_address', 'formatted_phone_number',
128
+ 'website', 'photos', 'rating', 'user_ratings_total', 'geometry'
104
129
  ];
105
130
  const params = {
106
131
  place_id: placeId,
@@ -112,71 +137,35 @@ class GooglePlacesService {
112
137
  if (response.status !== 'OK') {
113
138
  throw new Error(`Place Details API error: ${response.status}`);
114
139
  }
115
- return this.transformPlaceDetailsResult(response.result);
140
+ return transformPlaceDetailsResult(response.result);
116
141
  }
117
142
  catch (error) {
118
143
  console.error('Error getting place details:', error);
119
144
  throw error;
120
145
  }
121
146
  }
122
- /**
123
- * Get place photo as Blob using Place Photos API
124
- */
147
+ /** Get place photo as Blob using Place Photos API */
125
148
  async getPlacePhoto(photoReference, maxWidth = 1600) {
126
149
  try {
127
- const url = 'https://maps.googleapis.com/maps/api/place/photo';
128
- const params = {
129
- photoreference: photoReference,
130
- maxwidth: maxWidth.toString(),
131
- key: this.config.apiKey
132
- };
133
- const response = await lastValueFrom(this.http.get(url, {
134
- params,
135
- responseType: 'blob'
136
- }));
137
- return response;
150
+ return await getPlacePhoto(this.http, this.config.apiKey, photoReference, maxWidth);
138
151
  }
139
152
  catch (error) {
140
153
  console.error('Error getting place photo:', error);
141
154
  throw error;
142
155
  }
143
156
  }
144
- /**
145
- * Get multiple place photos as Blobs
146
- */
157
+ /** Get multiple place photos as Blobs */
147
158
  async getPlacePhotos(photoReferences, maxWidth = 1600, limit = 5) {
148
- const results = [];
149
- const refs = photoReferences.slice(0, limit);
150
- for (const photoRef of refs) {
151
- try {
152
- const blob = await this.getPlacePhoto(photoRef, maxWidth);
153
- results.push({ photoReference: photoRef, blob });
154
- }
155
- catch (error) {
156
- console.warn(`Failed to fetch photo ${photoRef}:`, error);
157
- // Continue with other photos even if one fails
158
- }
159
- }
160
- return results;
159
+ return getPlacePhotos(this.http, this.config.apiKey, photoReferences, maxWidth, limit);
161
160
  }
162
- /**
163
- * Search places and get their photos in one operation
164
- */
161
+ /** Search places and get their photos in one operation */
165
162
  async searchPlacesWithPhotos(query, options = {}) {
166
163
  const { location, radius = 50000, maxPlaces = 5, maxPhotosPerPlace = 3, photoMaxWidth = 1600 } = options;
167
- // Step 1: Search places
168
- const places = await this.searchPlaces(query, {
169
- location,
170
- radius,
171
- limit: maxPlaces
172
- });
164
+ const places = await this.searchPlaces(query, { location, radius, limit: maxPlaces });
173
165
  const results = [];
174
- // Step 2: Get details and photos for each place
175
166
  for (const place of places) {
176
167
  try {
177
- // Get detailed information
178
168
  const details = await this.getPlaceDetails(place.placeId);
179
- // Get photos if available
180
169
  let photos = [];
181
170
  if (details.photos && details.photos.length > 0) {
182
171
  const photoRefs = details.photos
@@ -184,14 +173,10 @@ class GooglePlacesService {
184
173
  .slice(0, maxPhotosPerPlace);
185
174
  photos = await this.getPlacePhotos(photoRefs, photoMaxWidth);
186
175
  }
187
- results.push({
188
- place: details,
189
- photos
190
- });
176
+ results.push({ place: details, photos });
191
177
  }
192
178
  catch (error) {
193
179
  console.warn(`Failed to process place ${place.placeId}:`, error);
194
- // Continue with other places
195
180
  }
196
181
  }
197
182
  return results;
@@ -1 +1 @@
1
- {"version":3,"file":"nx-ddd-google-places.mjs","sources":["../tmp-esm2022/places/places.config.js","../tmp-esm2022/places/places.service.js","../tmp-esm2022/places/nx-ddd-google-places.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nexport const GOOGLE_PLACES_CONFIG = new InjectionToken('GOOGLE_PLACES_CONFIG');\nexport function provideGooglePlacesConfig(useFactory) {\n return [\n {\n provide: GOOGLE_PLACES_CONFIG,\n useFactory\n }\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2VzLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvZ29vZ2xlL3NyYy9saWIvcGxhY2VzL3BsYWNlcy5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUd6RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBcUIsc0JBQXNCLENBQUMsQ0FBQztBQUVuRyxNQUFNLFVBQVUseUJBQXlCLENBQUMsVUFBb0M7SUFDNUUsT0FBTztRQUNMO1lBQ0UsT0FBTyxFQUFFLG9CQUFvQjtZQUM3QixVQUFVO1NBQ1g7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR29vZ2xlUGxhY2VzQ29uZmlnIH0gZnJvbSAnLi9wbGFjZXMuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IEdPT0dMRV9QTEFDRVNfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPEdvb2dsZVBsYWNlc0NvbmZpZz4oJ0dPT0dMRV9QTEFDRVNfQ09ORklHJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlR29vZ2xlUGxhY2VzQ29uZmlnKHVzZUZhY3Rvcnk6ICgpID0+IEdvb2dsZVBsYWNlc0NvbmZpZyk6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEdPT0dMRV9QTEFDRVNfQ09ORklHLFxuICAgICAgdXNlRmFjdG9yeVxuICAgIH1cbiAgXTtcbn0iXX0=","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { lastValueFrom } from 'rxjs';\nimport { GOOGLE_PLACES_CONFIG } from './places.config';\nimport * as i0 from \"@angular/core\";\nexport class GooglePlacesService {\n http = inject(HttpClient);\n config = inject(GOOGLE_PLACES_CONFIG);\n /**\n * Transform API response from snake_case to camelCase\n */\n transformPlaceSearchResult(result) {\n return {\n placeId: result.place_id,\n name: result.name,\n formattedAddress: result.formatted_address,\n geometry: result.geometry,\n photos: result.photos?.map((photo) => ({\n photoReference: photo.photo_reference,\n height: photo.height,\n width: photo.width,\n htmlAttributions: photo.html_attributions\n })),\n rating: result.rating,\n userRatingsTotal: result.user_ratings_total\n };\n }\n /**\n * Transform API response from snake_case to camelCase\n */\n transformPlaceDetailsResult(result) {\n return {\n placeId: result.place_id,\n name: result.name,\n formattedAddress: result.formatted_address,\n formattedPhoneNumber: result.formatted_phone_number,\n website: result.website,\n photos: result.photos?.map((photo) => ({\n photoReference: photo.photo_reference,\n height: photo.height,\n width: photo.width,\n htmlAttributions: photo.html_attributions\n })),\n rating: result.rating,\n userRatingsTotal: result.user_ratings_total,\n geometry: result.geometry\n };\n }\n /**\n * Search for places using Google Places Text Search API\n */\n async searchPlaces(query, options = {}) {\n const { location, radius = 50000, limit = 20 } = options;\n try {\n const url = 'https://maps.googleapis.com/maps/api/place/textsearch/json';\n const params = {\n query: query,\n key: this.config.apiKey,\n language: this.config.language || 'ja'\n };\n if (location) {\n params.location = location;\n params.radius = radius;\n }\n const response = await lastValueFrom(this.http.get(url, { params }));\n if (response.status !== 'OK') {\n throw new Error(`Places API error: ${response.status}`);\n }\n return response.results\n .slice(0, limit)\n .map((result) => this.transformPlaceSearchResult(result));\n }\n catch (error) {\n console.error('Error searching places:', error);\n throw error;\n }\n }\n /**\n * Get detailed information about a place using Place Details API\n */\n async getPlaceDetails(placeId, fields) {\n try {\n const url = 'https://maps.googleapis.com/maps/api/place/details/json';\n const defaultFields = [\n 'place_id',\n 'name',\n 'formatted_address',\n 'formatted_phone_number',\n 'website',\n 'photos',\n 'rating',\n 'user_ratings_total',\n 'geometry'\n ];\n const params = {\n place_id: placeId,\n fields: (fields || defaultFields).join(','),\n key: this.config.apiKey,\n language: this.config.language || 'ja'\n };\n const response = await lastValueFrom(this.http.get(url, { params }));\n if (response.status !== 'OK') {\n throw new Error(`Place Details API error: ${response.status}`);\n }\n return this.transformPlaceDetailsResult(response.result);\n }\n catch (error) {\n console.error('Error getting place details:', error);\n throw error;\n }\n }\n /**\n * Get place photo as Blob using Place Photos API\n */\n async getPlacePhoto(photoReference, maxWidth = 1600) {\n try {\n const url = 'https://maps.googleapis.com/maps/api/place/photo';\n const params = {\n photoreference: photoReference,\n maxwidth: maxWidth.toString(),\n key: this.config.apiKey\n };\n const response = await lastValueFrom(this.http.get(url, {\n params,\n responseType: 'blob'\n }));\n return response;\n }\n catch (error) {\n console.error('Error getting place photo:', error);\n throw error;\n }\n }\n /**\n * Get multiple place photos as Blobs\n */\n async getPlacePhotos(photoReferences, maxWidth = 1600, limit = 5) {\n const results = [];\n const refs = photoReferences.slice(0, limit);\n for (const photoRef of refs) {\n try {\n const blob = await this.getPlacePhoto(photoRef, maxWidth);\n results.push({ photoReference: photoRef, blob });\n }\n catch (error) {\n console.warn(`Failed to fetch photo ${photoRef}:`, error);\n // Continue with other photos even if one fails\n }\n }\n return results;\n }\n /**\n * Search places and get their photos in one operation\n */\n async searchPlacesWithPhotos(query, options = {}) {\n const { location, radius = 50000, maxPlaces = 5, maxPhotosPerPlace = 3, photoMaxWidth = 1600 } = options;\n // Step 1: Search places\n const places = await this.searchPlaces(query, {\n location,\n radius,\n limit: maxPlaces\n });\n const results = [];\n // Step 2: Get details and photos for each place\n for (const place of places) {\n try {\n // Get detailed information\n const details = await this.getPlaceDetails(place.placeId);\n // Get photos if available\n let photos = [];\n if (details.photos && details.photos.length > 0) {\n const photoRefs = details.photos\n .map(photo => photo.photoReference)\n .slice(0, maxPhotosPerPlace);\n photos = await this.getPlacePhotos(photoRefs, photoMaxWidth);\n }\n results.push({\n place: details,\n photos\n });\n }\n catch (error) {\n console.warn(`Failed to process place ${place.placeId}:`, error);\n // Continue with other places\n }\n }\n return results;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GooglePlacesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GooglePlacesService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GooglePlacesService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2dvb2dsZS9zcmMvbGliL3BsYWNlcy9wbGFjZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFTdkQsTUFBTSxPQUFPLG1CQUFtQjtJQUNiLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRXZEOztPQUVHO0lBQ0ssMEJBQTBCLENBQUMsTUFBVztRQUM1QyxPQUFPO1lBQ0wsT0FBTyxFQUFFLE1BQU0sQ0FBQyxRQUFRO1lBQ3hCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixnQkFBZ0IsRUFBRSxNQUFNLENBQUMsaUJBQWlCO1lBQzFDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtZQUN6QixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzFDLGNBQWMsRUFBRSxLQUFLLENBQUMsZUFBZTtnQkFDckMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO2dCQUNwQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ2xCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxpQkFBaUI7YUFDMUMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLGdCQUFnQixFQUFFLE1B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Q0gsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7dUdBaFBVLG1CQUFtQjsyR0FBbkIsbUJBQW1CLGNBRE4sTUFBTTs7MkZBQ25CLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHT09HTEVfUExBQ0VTX0NPTkZJRyB9IGZyb20gJy4vcGxhY2VzLmNvbmZpZyc7XG5pbXBvcnQgeyBcbiAgUGxhY2VTZWFyY2hSZXN1bHQsIFxuICBQbGFjZURldGFpbHNSZXN1bHQsIFxuICBQbGFjZVNlYXJjaFJlc3BvbnNlLCBcbiAgUGxhY2VEZXRhaWxzUmVzcG9uc2UgXG59IGZyb20gJy4vcGxhY2VzLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgR29vZ2xlUGxhY2VzU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoR09PR0xFX1BMQUNFU19DT05GSUcpO1xuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gQVBJIHJlc3BvbnNlIGZyb20gc25ha2VfY2FzZSB0byBjYW1lbENhc2VcbiAgICovXG4gIHByaXZhdGUgdHJhbnNmb3JtUGxhY2VTZWFyY2hSZXN1bHQocmVzdWx0OiBhbnkpOiBQbGFjZVNlYXJjaFJlc3VsdCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBsYWNlSWQ6IHJlc3VsdC5wbGFjZV9pZCxcbiAgICAgIG5hbWU6IHJlc3VsdC5uYW1lLFxuICAgICAgZm9ybWF0dGVkQWRkcmVzczogcmVzdWx0LmZvcm1hdHRlZF9hZGRyZXNzLFxuICAgICAgZ2VvbWV0cnk6IHJlc3VsdC5nZW9tZXRyeSxcbiAgICAgIHBob3RvczogcmVzdWx0LnBob3Rvcz8ubWFwKChwaG90bzogYW55KSA9PiAoe1xuICAgICAgICBwaG90b1JlZmVyZW5jZTogcGhvdG8ucGhvdG9fcmVmZXJlbmNlLFxuICAgICAgICBoZWlnaHQ6IHBob3RvLmhlaWdodCxcbiAgICAgICAgd2lkdGg6IHBob3RvLndpZHRoLFxuICAgICAgICBodG1sQXR0cmlidXRpb25zOiBwaG90by5odG1sX2F0dHJpYnV0aW9uc1xuICAgICAgfSkpLFxuICAgICAgcmF0aW5nOiByZXN1bHQucmF0aW5nLFxuICAgICAgdXNlclJhdGluZ3NUb3RhbDogcmVzdWx0LnVzZXJfcmF0aW5nc190b3RhbFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIEFQSSByZXNwb25zZSBmcm9tIHNuYWtlX2Nhc2UgdG8gY2FtZWxDYXNlXG4gICAqL1xuICBwcml2YXRlIHRyYW5zZm9ybVBsYWNlRGV0YWlsc1Jlc3VsdChyZXN1bHQ6IGFueSk6IFBsYWNlRGV0YWlsc1Jlc3VsdCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBsYWNlSWQ6IHJlc3VsdC5wbGFjZV9pZCxcbiAgICAgIG5hbWU6IHJlc3VsdC5uYW1lLFxuICAgICAgZm9ybWF0dGVkQWRkcmVzczogcmVzdWx0LmZvcm1hdHRlZF9hZGRyZXNzLFxuICAgICAgZm9ybWF0dGVkUGhvbmVOdW1iZXI6IHJlc3VsdC5mb3JtYXR0ZWRfcGhvbmVfbnVtYmVyLFxuICAgICAgd2Vic2l0ZTogcmVzdWx0LndlYnNpdGUsXG4gICAgICBwaG90b3M6IHJlc3VsdC5waG90b3M/Lm1hcCgocGhvdG86IGFueSkgPT4gKHtcbiAgICAgICAgcGhvdG9SZWZlcmVuY2U6IHBob3RvLnBob3RvX3JlZmVyZW5jZSxcbiAgICAgICAgaGVpZ2h0OiBwaG90by5oZWlnaHQsXG4gICAgICAgIHdpZHRoOiBwaG90by53aWR0aCxcbiAgICAgICAgaHRtbEF0dHJpYnV0aW9uczogcGhvdG8uaHRtbF9hdHRyaWJ1dGlvbnNcbiAgICAgIH0pKSxcbiAgICAgIHJhdGluZzogcmVzdWx0LnJhdGluZyxcbiAgICAgIHVzZXJSYXRpbmdzVG90YWw6IHJlc3VsdC51c2VyX3JhdGluZ3NfdG90YWwsXG4gICAgICBnZW9tZXRyeTogcmVzdWx0Lmdlb21ldHJ5XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWFyY2ggZm9yIHBsYWNlcyB1c2luZyBHb29nbGUgUGxhY2VzIFRleHQgU2VhcmNoIEFQSVxuICAgKi9cbiAgYXN5bmMgc2VhcmNoUGxhY2VzKHF1ZXJ5OiBzdHJpbmcsIG9wdGlvbnM6IHtcbiAgICBsb2NhdGlvbj86IHN0cmluZztcbiAgICByYWRpdXM/OiBudW1iZXI7XG4gICAgbGltaXQ/OiBudW1iZXI7XG4gIH0gPSB7fSk6IFByb21pc2U8UGxhY2VTZWFyY2hSZXN1bHRbXT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgcmFkaXVzID0gNTAwMDAsXG4gICAgICBsaW1pdCA9IDIwXG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gJ2h0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9wbGFjZS90ZXh0c2VhcmNoL2pzb24nO1xuICAgICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7XG4gICAgICAgIHF1ZXJ5OiBxdWVyeSxcbiAgICAgICAga2V5OiB0aGlzLmNvbmZpZy5hcGlLZXksXG4gICAgICAgIGxhbmd1YWdlOiB0aGlzLmNvbmZpZy5sYW5ndWFnZSB8fCAnamEnXG4gICAgICB9O1xuXG4gICAgICBpZiAobG9jYXRpb24pIHtcbiAgICAgICAgcGFyYW1zLmxvY2F0aW9uID0gbG9jYXRpb247XG4gICAgICAgIHBhcmFtcy5yYWRpdXMgPSByYWRpdXM7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbGFzdFZhbHVlRnJvbShcbiAgICAgICAgdGhpcy5odHRwLmdldDxhbnk+KHVybCwgeyBwYXJhbXMgfSlcbiAgICAgICk7XG5cbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT09ICdPSycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQbGFjZXMgQVBJIGVycm9yOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3BvbnNlLnJlc3VsdHNcbiAgICAgICAgLnNsaWNlKDAsIGxpbWl0KVxuICAgICAgICAubWFwKChyZXN1bHQ6IGFueSkgPT4gdGhpcy50cmFuc2Zvcm1QbGFjZVNlYXJjaFJlc3VsdChyZXN1bHQpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc2VhcmNoaW5nIHBsYWNlczonLCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGEgcGxhY2UgdXNpbmcgUGxhY2UgRGV0YWlscyBBUElcbiAgICovXG4gIGFzeW5jIGdldFBsYWNlRGV0YWlscyhwbGFjZUlkOiBzdHJpbmcsIGZpZWxkcz86IHN0cmluZ1tdKTogUHJvbWlzZTxQbGFjZURldGFpbHNSZXN1bHQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gJ2h0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9wbGFjZS9kZXRhaWxzL2pzb24nO1xuICAgICAgY29uc3QgZGVmYXVsdEZpZWxkcyA9IFtcbiAgICAgICAgJ3BsYWNlX2lkJyxcbiAgICAgICAgJ25hbWUnLFxuICAgICAgICAnZm9ybWF0dGVkX2FkZHJlc3MnLFxuICAgICAgICAnZm9ybWF0dGVkX3Bob25lX251bWJlcicsXG4gICAgICAgICd3ZWJzaXRlJyxcbiAgICAgICAgJ3Bob3RvcycsXG4gICAgICAgICdyYXRpbmcnLFxuICAgICAgICAndXNlcl9yYXRpbmdzX3RvdGFsJyxcbiAgICAgICAgJ2dlb21ldHJ5J1xuICAgICAgXTtcblxuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBwbGFjZV9pZDogcGxhY2VJZCxcbiAgICAgICAgZmllbGRzOiAoZmllbGRzIHx8IGRlZmF1bHRGaWVsZHMpLmpvaW4oJywnKSxcbiAgICAgICAga2V5OiB0aGlzLmNvbmZpZy5hcGlLZXksXG4gICAgICAgIGxhbmd1YWdlOiB0aGlzLmNvbmZpZy5sYW5ndWFnZSB8fCAnamEnXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGxhc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuaHR0cC5nZXQ8YW55Pih1cmwsIHsgcGFyYW1zIH0pXG4gICAgICApO1xuXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAnT0snKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUGxhY2UgRGV0YWlscyBBUEkgZXJyb3I6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1QbGFjZURldGFpbHNSZXN1bHQocmVzcG9uc2UucmVzdWx0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZ2V0dGluZyBwbGFjZSBkZXRhaWxzOicsIGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgcGxhY2UgcGhvdG8gYXMgQmxvYiB1c2luZyBQbGFjZSBQaG90b3MgQVBJXG4gICAqL1xuICBhc3luYyBnZXRQbGFjZVBob3RvKHBob3RvUmVmZXJlbmNlOiBzdHJpbmcsIG1heFdpZHRoID0gMTYwMCk6IFByb21pc2U8QmxvYj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cmwgPSAnaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL3BsYWNlL3Bob3RvJztcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgcGhvdG9yZWZlcmVuY2U6IHBob3RvUmVmZXJlbmNlLFxuICAgICAgICBtYXh3aWR0aDogbWF4V2lkdGgudG9TdHJpbmcoKSxcbiAgICAgICAga2V5OiB0aGlzLmNvbmZpZy5hcGlLZXlcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbGFzdFZhbHVlRnJvbShcbiAgICAgICAgdGhpcy5odHRwLmdldCh1cmwsIHsgXG4gICAgICAgICAgcGFyYW1zLCBcbiAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyBcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZ2V0dGluZyBwbGFjZSBwaG90bzonLCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IG11bHRpcGxlIHBsYWNlIHBob3RvcyBhcyBCbG9ic1xuICAgKi9cbiAgYXN5bmMgZ2V0UGxhY2VQaG90b3MoXG4gICAgcGhvdG9SZWZlcmVuY2VzOiBzdHJpbmdbXSwgXG4gICAgbWF4V2lkdGggPSAxNjAwLFxuICAgIGxpbWl0ID0gNVxuICApOiBQcm9taXNlPHsgcGhvdG9SZWZlcmVuY2U6IHN0cmluZzsgYmxvYjogQmxvYiB9W10+IHtcbiAgICBjb25zdCByZXN1bHRzOiB7IHBob3RvUmVmZXJlbmNlOiBzdHJpbmc7IGJsb2I6IEJsb2IgfVtdID0gW107XG4gICAgY29uc3QgcmVmcyA9IHBob3RvUmVmZXJlbmNlcy5zbGljZSgwLCBsaW1pdCk7XG5cbiAgICBmb3IgKGNvbnN0IHBob3RvUmVmIG9mIHJlZnMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCB0aGlzLmdldFBsYWNlUGhvdG8ocGhvdG9SZWYsIG1heFdpZHRoKTtcbiAgICAgICAgcmVzdWx0cy5wdXNoKHsgcGhvdG9SZWZlcmVuY2U6IHBob3RvUmVmLCBibG9iIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBGYWlsZWQgdG8gZmV0Y2ggcGhvdG8gJHtwaG90b1JlZn06YCwgZXJyb3IpO1xuICAgICAgICAvLyBDb250aW51ZSB3aXRoIG90aGVyIHBob3RvcyBldmVuIGlmIG9uZSBmYWlsc1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaCBwbGFjZXMgYW5kIGdldCB0aGVpciBwaG90b3MgaW4gb25lIG9wZXJhdGlvblxuICAgKi9cbiAgYXN5bmMgc2VhcmNoUGxhY2VzV2l0aFBob3RvcyhcbiAgICBxdWVyeTogc3RyaW5nLCBcbiAgICBvcHRpb25zOiB7XG4gICAgICBsb2NhdGlvbj86IHN0cmluZztcbiAgICAgIHJhZGl1cz86IG51bWJlcjtcbiAgICAgIG1heFBsYWNlcz86IG51bWJlcjtcbiAgICAgIG1heFBob3Rvc1BlclBsYWNlPzogbnVtYmVyO1xuICAgICAgcGhvdG9NYXhXaWR0aD86IG51bWJlcjtcbiAgICB9ID0ge31cbiAgKTogUHJvbWlzZTxBcnJheTx7XG4gICAgcGxhY2U6IFBsYWNlRGV0YWlsc1Jlc3VsdDtcbiAgICBwaG90b3M6IHsgcGhvdG9SZWZlcmVuY2U6IHN0cmluZzsgYmxvYjogQmxvYiB9W107XG4gIH0+PiB7XG4gICAgY29uc3Qge1xuICAgICAgbG9jYXRpb24sXG4gICAgICByYWRpdXMgPSA1MDAwMCxcbiAgICAgIG1heFBsYWNlcyA9IDUsXG4gICAgICBtYXhQaG90b3NQZXJQbGFjZSA9IDMsXG4gICAgICBwaG90b01heFdpZHRoID0gMTYwMFxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgLy8gU3RlcCAxOiBTZWFyY2ggcGxhY2VzXG4gICAgY29uc3QgcGxhY2VzID0gYXdhaXQgdGhpcy5zZWFyY2hQbGFjZXMocXVlcnksIHtcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgcmFkaXVzLFxuICAgICAgbGltaXQ6IG1heFBsYWNlc1xuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuXG4gICAgLy8gU3RlcCAyOiBHZXQgZGV0YWlscyBhbmQgcGhvdG9zIGZvciBlYWNoIHBsYWNlXG4gICAgZm9yIChjb25zdCBwbGFjZSBvZiBwbGFjZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIEdldCBkZXRhaWxlZCBpbmZvcm1hdGlvblxuICAgICAgICBjb25zdCBkZXRhaWxzID0gYXdhaXQgdGhpcy5nZXRQbGFjZURldGFpbHMocGxhY2UucGxhY2VJZCk7XG4gICAgICAgIFxuICAgICAgICAvLyBHZXQgcGhvdG9zIGlmIGF2YWlsYWJsZVxuICAgICAgICBsZXQgcGhvdG9zOiB7IHBob3RvUmVmZXJlbmNlOiBzdHJpbmc7IGJsb2I6IEJsb2IgfVtdID0gW107XG4gICAgICAgIGlmIChkZXRhaWxzLnBob3RvcyAmJiBkZXRhaWxzLnBob3Rvcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgcGhvdG9SZWZzID0gZGV0YWlscy5waG90b3NcbiAgICAgICAgICAgIC5tYXAocGhvdG8gPT4gcGhvdG8ucGhvdG9SZWZlcmVuY2UpXG4gICAgICAgICAgICAuc2xpY2UoMCwgbWF4UGhvdG9zUGVyUGxhY2UpO1xuICAgICAgICAgIFxuICAgICAgICAgIHBob3RvcyA9IGF3YWl0IHRoaXMuZ2V0UGxhY2VQaG90b3MocGhvdG9SZWZzLCBwaG90b01heFdpZHRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgcGxhY2U6IGRldGFpbHMsXG4gICAgICAgICAgcGhvdG9zXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBGYWlsZWQgdG8gcHJvY2VzcyBwbGFjZSAke3BsYWNlLnBsYWNlSWR9OmAsIGVycm9yKTtcbiAgICAgICAgLy8gQ29udGludWUgd2l0aCBvdGhlciBwbGFjZXNcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxufSJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtZGRkLWdvb2dsZS1wbGFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2dvb2dsZS9zcmMvbGliL3BsYWNlcy9ueC1kZGQtZ29vZ2xlLXBsYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nx-ddd-google-places.mjs","sources":["../tmp-esm2022/places/places.config.js","../tmp-esm2022/places/places-transformers.js","../tmp-esm2022/places/places-photo.js","../tmp-esm2022/places/places.service.js","../tmp-esm2022/places/nx-ddd-google-places.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nexport const GOOGLE_PLACES_CONFIG = new InjectionToken('GOOGLE_PLACES_CONFIG');\nexport function provideGooglePlacesConfig(useFactory) {\n return [\n {\n provide: GOOGLE_PLACES_CONFIG,\n useFactory\n }\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2VzLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvZ29vZ2xlL3NyYy9saWIvcGxhY2VzL3BsYWNlcy5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUd6RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBcUIsc0JBQXNCLENBQUMsQ0FBQztBQUVuRyxNQUFNLFVBQVUseUJBQXlCLENBQUMsVUFBb0M7SUFDNUUsT0FBTztRQUNMO1lBQ0UsT0FBTyxFQUFFLG9CQUFvQjtZQUM3QixVQUFVO1NBQ1g7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR29vZ2xlUGxhY2VzQ29uZmlnIH0gZnJvbSAnLi9wbGFjZXMuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IEdPT0dMRV9QTEFDRVNfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPEdvb2dsZVBsYWNlc0NvbmZpZz4oJ0dPT0dMRV9QTEFDRVNfQ09ORklHJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlR29vZ2xlUGxhY2VzQ29uZmlnKHVzZUZhY3Rvcnk6ICgpID0+IEdvb2dsZVBsYWNlc0NvbmZpZyk6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEdPT0dMRV9QTEFDRVNfQ09ORklHLFxuICAgICAgdXNlRmFjdG9yeVxuICAgIH1cbiAgXTtcbn0iXX0=","/**\n * Transform API response from snake_case to camelCase for search results\n */\nexport function transformPlaceSearchResult(result) {\n return {\n placeId: result.place_id,\n name: result.name,\n formattedAddress: result.formatted_address,\n geometry: result.geometry,\n photos: result.photos?.map((photo) => ({\n photoReference: photo.photo_reference,\n height: photo.height,\n width: photo.width,\n htmlAttributions: photo.html_attributions\n })),\n rating: result.rating,\n userRatingsTotal: result.user_ratings_total\n };\n}\n/**\n * Transform API response from snake_case to camelCase for place details\n */\nexport function transformPlaceDetailsResult(result) {\n return {\n placeId: result.place_id,\n name: result.name,\n formattedAddress: result.formatted_address,\n formattedPhoneNumber: result.formatted_phone_number,\n website: result.website,\n photos: result.photos?.map((photo) => ({\n photoReference: photo.photo_reference,\n height: photo.height,\n width: photo.width,\n htmlAttributions: photo.html_attributions\n })),\n rating: result.rating,\n userRatingsTotal: result.user_ratings_total,\n geometry: result.geometry\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2VzLXRyYW5zZm9ybWVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvZ29vZ2xlL3NyYy9saWIvcGxhY2VzL3BsYWNlcy10cmFuc2Zvcm1lcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0E7O0dBRUc7QUFDSCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsTUFBVztJQUNwRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLE1BQU0sQ0FBQyxRQUFRO1FBQ3hCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtRQUNqQixnQkFBZ0IsRUFBRSxNQUFNLENBQUMsaUJBQWlCO1FBQzFDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtRQUN6QixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxlQUFlO1lBQ3JDLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDbEIsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtTQUMxQyxDQUFDLENBQUM7UUFDSCxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07UUFDckIsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtLQUM1QyxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLDJCQUEyQixDQUFDLE1BQVc7SUFDckQsT0FBTztRQUNMLE9BQU8sRUFBRSxNQUFNLENBQUMsUUFBUTtRQUN4QixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7UUFDakIsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLGlCQUFpQjtRQUMxQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsc0JBQXNCO1FBQ25ELE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztRQUN2QixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxlQUFlO1lBQ3JDLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDbEIsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtTQUMxQyxDQUFDLENBQUM7UUFDSCxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07UUFDckIsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtRQUMzQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7S0FDMUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRyYW5zZm9ybSBmdW5jdGlvbnMgZm9yIEdvb2dsZSBQbGFjZXMgQVBJIHJlc3BvbnNlc1xuICovXG5pbXBvcnQgeyBQbGFjZVNlYXJjaFJlc3VsdCwgUGxhY2VEZXRhaWxzUmVzdWx0IH0gZnJvbSAnLi9wbGFjZXMuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBUcmFuc2Zvcm0gQVBJIHJlc3BvbnNlIGZyb20gc25ha2VfY2FzZSB0byBjYW1lbENhc2UgZm9yIHNlYXJjaCByZXN1bHRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1QbGFjZVNlYXJjaFJlc3VsdChyZXN1bHQ6IGFueSk6IFBsYWNlU2VhcmNoUmVzdWx0IHtcbiAgcmV0dXJuIHtcbiAgICBwbGFjZUlkOiByZXN1bHQucGxhY2VfaWQsXG4gICAgbmFtZTogcmVzdWx0Lm5hbWUsXG4gICAgZm9ybWF0dGVkQWRkcmVzczogcmVzdWx0LmZvcm1hdHRlZF9hZGRyZXNzLFxuICAgIGdlb21ldHJ5OiByZXN1bHQuZ2VvbWV0cnksXG4gICAgcGhvdG9zOiByZXN1bHQucGhvdG9zPy5tYXAoKHBob3RvOiBhbnkpID0+ICh7XG4gICAgICBwaG90b1JlZmVyZW5jZTogcGhvdG8ucGhvdG9fcmVmZXJlbmNlLFxuICAgICAgaGVpZ2h0OiBwaG90by5oZWlnaHQsXG4gICAgICB3aWR0aDogcGhvdG8ud2lkdGgsXG4gICAgICBodG1sQXR0cmlidXRpb25zOiBwaG90by5odG1sX2F0dHJpYnV0aW9uc1xuICAgIH0pKSxcbiAgICByYXRpbmc6IHJlc3VsdC5yYXRpbmcsXG4gICAgdXNlclJhdGluZ3NUb3RhbDogcmVzdWx0LnVzZXJfcmF0aW5nc190b3RhbFxuICB9O1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBBUEkgcmVzcG9uc2UgZnJvbSBzbmFrZV9jYXNlIHRvIGNhbWVsQ2FzZSBmb3IgcGxhY2UgZGV0YWlsc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtUGxhY2VEZXRhaWxzUmVzdWx0KHJlc3VsdDogYW55KTogUGxhY2VEZXRhaWxzUmVzdWx0IHtcbiAgcmV0dXJuIHtcbiAgICBwbGFjZUlkOiByZXN1bHQucGxhY2VfaWQsXG4gICAgbmFtZTogcmVzdWx0Lm5hbWUsXG4gICAgZm9ybWF0dGVkQWRkcmVzczogcmVzdWx0LmZvcm1hdHRlZF9hZGRyZXNzLFxuICAgIGZvcm1hdHRlZFBob25lTnVtYmVyOiByZXN1bHQuZm9ybWF0dGVkX3Bob25lX251bWJlcixcbiAgICB3ZWJzaXRlOiByZXN1bHQud2Vic2l0ZSxcbiAgICBwaG90b3M6IHJlc3VsdC5waG90b3M/Lm1hcCgocGhvdG86IGFueSkgPT4gKHtcbiAgICAgIHBob3RvUmVmZXJlbmNlOiBwaG90by5waG90b19yZWZlcmVuY2UsXG4gICAgICBoZWlnaHQ6IHBob3RvLmhlaWdodCxcbiAgICAgIHdpZHRoOiBwaG90by53aWR0aCxcbiAgICAgIGh0bWxBdHRyaWJ1dGlvbnM6IHBob3RvLmh0bWxfYXR0cmlidXRpb25zXG4gICAgfSkpLFxuICAgIHJhdGluZzogcmVzdWx0LnJhdGluZyxcbiAgICB1c2VyUmF0aW5nc1RvdGFsOiByZXN1bHQudXNlcl9yYXRpbmdzX3RvdGFsLFxuICAgIGdlb21ldHJ5OiByZXN1bHQuZ2VvbWV0cnlcbiAgfTtcbn1cbiJdfQ==","import { lastValueFrom } from 'rxjs';\n/**\n * Get a single place photo as Blob using Place Photos API\n */\nexport async function getPlacePhoto(http, apiKey, photoReference, maxWidth = 1600) {\n const url = 'https://maps.googleapis.com/maps/api/place/photo';\n const params = {\n photoreference: photoReference,\n maxwidth: maxWidth.toString(),\n key: apiKey\n };\n const response = await lastValueFrom(http.get(url, {\n params,\n responseType: 'blob'\n }));\n return response;\n}\n/**\n * Get multiple place photos as Blobs\n */\nexport async function getPlacePhotos(http, apiKey, photoReferences, maxWidth = 1600, limit = 5) {\n const results = [];\n const refs = photoReferences.slice(0, limit);\n for (const photoRef of refs) {\n try {\n const blob = await getPlacePhoto(http, apiKey, photoRef, maxWidth);\n results.push({ photoReference: photoRef, blob });\n }\n catch (error) {\n console.warn(`Failed to fetch photo ${photoRef}:`, error);\n // Continue with other photos even if one fails\n }\n }\n return results;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2VzLXBob3RvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9nb29nbGUvc3JjL2xpYi9wbGFjZXMvcGxhY2VzLXBob3RvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFPckM7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGFBQWEsQ0FDakMsSUFBZ0IsRUFDaEIsTUFBYyxFQUNkLGNBQXNCLEVBQ3RCLFFBQVEsR0FBRyxJQUFJO0lBRWYsTUFBTSxHQUFHLEdBQUcsa0RBQWtELENBQUM7SUFDL0QsTUFBTSxNQUFNLEdBQUc7UUFDYixjQUFjLEVBQUUsY0FBYztRQUM5QixRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRTtRQUM3QixHQUFHLEVBQUUsTUFBTTtLQUNaLENBQUM7SUFFRixNQUFNLFFBQVEsR0FBRyxNQUFNLGFBQWEsQ0FDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7UUFDWixNQUFNO1FBQ04sWUFBWSxFQUFFLE1BQU07S0FDckIsQ0FBQyxDQUNILENBQUM7SUFFRixPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FDbEMsSUFBZ0IsRUFDaEIsTUFBYyxFQUNkLGVBQXlCLEVBQ3pCLFFBQVEsR0FBRyxJQUFJLEVBQ2YsS0FBSyxHQUFHLENBQUM7SUFFVCxNQUFNLE9BQU8sR0FBa0IsRUFBRSxDQUFDO0lBQ2xDLE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRTdDLEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLEdBQUcsTUFBTSxhQUFhLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDbkUsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMseUJBQXlCLFFBQVEsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFELCtDQUErQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBob3RvLXJlbGF0ZWQgZnVuY3Rpb25zIGZvciBHb29nbGUgUGxhY2VzIEFQSVxuICovXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgbGFzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBob3RvUmVzdWx0IHtcbiAgcGhvdG9SZWZlcmVuY2U6IHN0cmluZztcbiAgYmxvYjogQmxvYjtcbn1cblxuLyoqXG4gKiBHZXQgYSBzaW5nbGUgcGxhY2UgcGhvdG8gYXMgQmxvYiB1c2luZyBQbGFjZSBQaG90b3MgQVBJXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQbGFjZVBob3RvKFxuICBodHRwOiBIdHRwQ2xpZW50LFxuICBhcGlLZXk6IHN0cmluZyxcbiAgcGhvdG9SZWZlcmVuY2U6IHN0cmluZyxcbiAgbWF4V2lkdGggPSAxNjAwXG4pOiBQcm9taXNlPEJsb2I+IHtcbiAgY29uc3QgdXJsID0gJ2h0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9wbGFjZS9waG90byc7XG4gIGNvbnN0IHBhcmFtcyA9IHtcbiAgICBwaG90b3JlZmVyZW5jZTogcGhvdG9SZWZlcmVuY2UsXG4gICAgbWF4d2lkdGg6IG1heFdpZHRoLnRvU3RyaW5nKCksXG4gICAga2V5OiBhcGlLZXlcbiAgfTtcblxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGxhc3RWYWx1ZUZyb20oXG4gICAgaHR0cC5nZXQodXJsLCB7XG4gICAgICBwYXJhbXMsXG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJ1xuICAgIH0pXG4gICk7XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufVxuXG4vKipcbiAqIEdldCBtdWx0aXBsZSBwbGFjZSBwaG90b3MgYXMgQmxvYnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFBsYWNlUGhvdG9zKFxuICBodHRwOiBIdHRwQ2xpZW50LFxuICBhcGlLZXk6IHN0cmluZyxcbiAgcGhvdG9SZWZlcmVuY2VzOiBzdHJpbmdbXSxcbiAgbWF4V2lkdGggPSAxNjAwLFxuICBsaW1pdCA9IDVcbik6IFByb21pc2U8UGhvdG9SZXN1bHRbXT4ge1xuICBjb25zdCByZXN1bHRzOiBQaG90b1Jlc3VsdFtdID0gW107XG4gIGNvbnN0IHJlZnMgPSBwaG90b1JlZmVyZW5jZXMuc2xpY2UoMCwgbGltaXQpO1xuXG4gIGZvciAoY29uc3QgcGhvdG9SZWYgb2YgcmVmcykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBibG9iID0gYXdhaXQgZ2V0UGxhY2VQaG90byhodHRwLCBhcGlLZXksIHBob3RvUmVmLCBtYXhXaWR0aCk7XG4gICAgICByZXN1bHRzLnB1c2goeyBwaG90b1JlZmVyZW5jZTogcGhvdG9SZWYsIGJsb2IgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybihgRmFpbGVkIHRvIGZldGNoIHBob3RvICR7cGhvdG9SZWZ9OmAsIGVycm9yKTtcbiAgICAgIC8vIENvbnRpbnVlIHdpdGggb3RoZXIgcGhvdG9zIGV2ZW4gaWYgb25lIGZhaWxzXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG4iXX0=","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { lastValueFrom } from 'rxjs';\nimport { GOOGLE_PLACES_CONFIG } from './places.config';\nimport { transformPlaceSearchResult, transformPlaceDetailsResult } from './places-transformers';\nimport { getPlacePhoto, getPlacePhotos } from './places-photo';\nimport * as i0 from \"@angular/core\";\nexport class GooglePlacesService {\n http = inject(HttpClient);\n config = inject(GOOGLE_PLACES_CONFIG);\n /** Search for places using Google Places Text Search API */\n async searchPlaces(query, options = {}) {\n const { location, radius = 50000, limit = 20 } = options;\n try {\n const url = 'https://maps.googleapis.com/maps/api/place/textsearch/json';\n const params = {\n query: query,\n key: this.config.apiKey,\n language: this.config.language || 'ja'\n };\n if (location) {\n params.location = location;\n params.radius = radius;\n }\n const response = await lastValueFrom(this.http.get(url, { params }));\n if (response.status !== 'OK') {\n throw new Error(`Places API error: ${response.status}`);\n }\n return response.results\n .slice(0, limit)\n .map((result) => transformPlaceSearchResult(result));\n }\n catch (error) {\n console.error('Error searching places:', error);\n throw error;\n }\n }\n /** Get detailed information about a place using Place Details API */\n async getPlaceDetails(placeId, fields) {\n try {\n const url = 'https://maps.googleapis.com/maps/api/place/details/json';\n const defaultFields = [\n 'place_id', 'name', 'formatted_address', 'formatted_phone_number',\n 'website', 'photos', 'rating', 'user_ratings_total', 'geometry'\n ];\n const params = {\n place_id: placeId,\n fields: (fields || defaultFields).join(','),\n key: this.config.apiKey,\n language: this.config.language || 'ja'\n };\n const response = await lastValueFrom(this.http.get(url, { params }));\n if (response.status !== 'OK') {\n throw new Error(`Place Details API error: ${response.status}`);\n }\n return transformPlaceDetailsResult(response.result);\n }\n catch (error) {\n console.error('Error getting place details:', error);\n throw error;\n }\n }\n /** Get place photo as Blob using Place Photos API */\n async getPlacePhoto(photoReference, maxWidth = 1600) {\n try {\n return await getPlacePhoto(this.http, this.config.apiKey, photoReference, maxWidth);\n }\n catch (error) {\n console.error('Error getting place photo:', error);\n throw error;\n }\n }\n /** Get multiple place photos as Blobs */\n async getPlacePhotos(photoReferences, maxWidth = 1600, limit = 5) {\n return getPlacePhotos(this.http, this.config.apiKey, photoReferences, maxWidth, limit);\n }\n /** Search places and get their photos in one operation */\n async searchPlacesWithPhotos(query, options = {}) {\n const { location, radius = 50000, maxPlaces = 5, maxPhotosPerPlace = 3, photoMaxWidth = 1600 } = options;\n const places = await this.searchPlaces(query, { location, radius, limit: maxPlaces });\n const results = [];\n for (const place of places) {\n try {\n const details = await this.getPlaceDetails(place.placeId);\n let photos = [];\n if (details.photos && details.photos.length > 0) {\n const photoRefs = details.photos\n .map(photo => photo.photoReference)\n .slice(0, maxPhotosPerPlace);\n photos = await this.getPlacePhotos(photoRefs, photoMaxWidth);\n }\n results.push({ place: details, photos });\n }\n catch (error) {\n console.warn(`Failed to process place ${place.placeId}:`, error);\n }\n }\n return results;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GooglePlacesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GooglePlacesService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GooglePlacesService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2dvb2dsZS9zcmMvbGliL3BsYWNlcy9wbGFjZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRyxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBZSxNQUFNLGdCQUFnQixDQUFDOztBQUc1RSxNQUFNLE9BQU8sbUJBQW1CO0lBQ2IsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQixNQUFNLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFdkQsNERBQTREO0lBQzVELEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBYSxFQUFFLFVBSTlCLEVBQUU7UUFDSixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sR0FBRyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUV6RCxJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyw0REFBNEQsQ0FBQztZQUN6RSxNQUFNLE1BQU0sR0FBUTtnQkFDbEIsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtnQkFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUk7YUFDdkMsQ0FBQztZQUVGLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7Z0JBQzNCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ3pCLENBQUM7WUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLGFBQWEsQ0FDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU0sR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FDcEMsQ0FBQztZQUVGLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDMUQsQ0FBQztZQUVELE9BQU8sUUFBUSxDQUFDLE9BQU87aUJBQ3BCLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO2lCQUNmLEdBQUcsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsMEJBQTBCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMseUJBQXlCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDaEQsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELHFFQUFxRTtJQUNyRSxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQWUsRUFBRSxNQUFpQjtRQUN0RCxJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyx5REFBeUQsQ0FBQztZQUN0RSxNQUFNLGFBQWEsR0FBRztnQkFDcEIsVUFBVSxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0I7Z0JBQ2pFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLFVBQVU7YUFDaEUsQ0FBQztZQUVGLE1BQU0sTUFBTSxHQUFHO2dCQUNiLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixNQUFNLEVBQUUsQ0FBQyxNQUFNLElBQUksYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDM0MsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtnQkFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUk7YUFDdkMsQ0FBQztZQUVGLE1BQU0sUUFBUSxHQUFHLE1BQU0sYUFBYSxDQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTSxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUNwQyxDQUFDO1lBRUYsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNqRSxDQUFDO1lBRUQsT0FBTywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JELE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxxREFBcUQ7SUFDckQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFzQixFQUFFLFFBQVEsR0FBRyxJQUFJO1FBQ3pELElBQUksQ0FBQztZQUNILE9BQU8sTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdEYsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLDRCQUE0QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ25ELE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsS0FBSyxDQUFDLGNBQWMsQ0FDbEIsZUFBeUIsRUFDekIsUUFBUSxHQUFHLElBQUksRUFDZixLQUFLLEdBQUcsQ0FBQztRQUVULE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsMERBQTBEO0lBQzFELEtBQUssQ0FBQyxzQkFBc0IsQ0FDMUIsS0FBYSxFQUNiLFVBTUksRUFBRTtRQUVOLE1BQU0sRUFDSixRQUFRLEVBQ1IsTUFBTSxHQUFHLEtBQUssRUFDZCxTQUFTLEdBQUcsQ0FBQyxFQUNiLGlCQUFpQixHQUFHLENBQUMsRUFDckIsYUFBYSxHQUFHLElBQUksRUFDckIsR0FBRyxPQUFPLENBQUM7UUFFWixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUN0RixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFFbkIsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxNQUFNLEdBQWtCLEVBQUUsQ0FBQztnQkFFL0IsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNoRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsTUFBTTt5QkFDN0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQzt5QkFDbEMsS0FBSyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO29CQUMvQixNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztnQkFDL0QsQ0FBQztnQkFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEtBQUssQ0FBQyxPQUFPLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNuRSxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7dUdBcklVLG1CQUFtQjsyR0FBbkIsbUJBQW1CLGNBRE4sTUFBTTs7MkZBQ25CLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHT09HTEVfUExBQ0VTX0NPTkZJRyB9IGZyb20gJy4vcGxhY2VzLmNvbmZpZyc7XG5pbXBvcnQgeyBQbGFjZVNlYXJjaFJlc3VsdCwgUGxhY2VEZXRhaWxzUmVzdWx0IH0gZnJvbSAnLi9wbGFjZXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IHRyYW5zZm9ybVBsYWNlU2VhcmNoUmVzdWx0LCB0cmFuc2Zvcm1QbGFjZURldGFpbHNSZXN1bHQgfSBmcm9tICcuL3BsYWNlcy10cmFuc2Zvcm1lcnMnO1xuaW1wb3J0IHsgZ2V0UGxhY2VQaG90bywgZ2V0UGxhY2VQaG90b3MsIFBob3RvUmVzdWx0IH0gZnJvbSAnLi9wbGFjZXMtcGhvdG8nO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEdvb2dsZVBsYWNlc1NlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KEdPT0dMRV9QTEFDRVNfQ09ORklHKTtcblxuICAvKiogU2VhcmNoIGZvciBwbGFjZXMgdXNpbmcgR29vZ2xlIFBsYWNlcyBUZXh0IFNlYXJjaCBBUEkgKi9cbiAgYXN5bmMgc2VhcmNoUGxhY2VzKHF1ZXJ5OiBzdHJpbmcsIG9wdGlvbnM6IHtcbiAgICBsb2NhdGlvbj86IHN0cmluZztcbiAgICByYWRpdXM/OiBudW1iZXI7XG4gICAgbGltaXQ/OiBudW1iZXI7XG4gIH0gPSB7fSk6IFByb21pc2U8UGxhY2VTZWFyY2hSZXN1bHRbXT4ge1xuICAgIGNvbnN0IHsgbG9jYXRpb24sIHJhZGl1cyA9IDUwMDAwLCBsaW1pdCA9IDIwIH0gPSBvcHRpb25zO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9ICdodHRwczovL21hcHMuZ29vZ2xlYXBpcy5jb20vbWFwcy9hcGkvcGxhY2UvdGV4dHNlYXJjaC9qc29uJztcbiAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge1xuICAgICAgICBxdWVyeTogcXVlcnksXG4gICAgICAgIGtleTogdGhpcy5jb25maWcuYXBpS2V5LFxuICAgICAgICBsYW5ndWFnZTogdGhpcy5jb25maWcubGFuZ3VhZ2UgfHwgJ2phJ1xuICAgICAgfTtcblxuICAgICAgaWYgKGxvY2F0aW9uKSB7XG4gICAgICAgIHBhcmFtcy5sb2NhdGlvbiA9IGxvY2F0aW9uO1xuICAgICAgICBwYXJhbXMucmFkaXVzID0gcmFkaXVzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGxhc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuaHR0cC5nZXQ8YW55Pih1cmwsIHsgcGFyYW1zIH0pXG4gICAgICApO1xuXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAnT0snKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUGxhY2VzIEFQSSBlcnJvcjogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNwb25zZS5yZXN1bHRzXG4gICAgICAgIC5zbGljZSgwLCBsaW1pdClcbiAgICAgICAgLm1hcCgocmVzdWx0OiBhbnkpID0+IHRyYW5zZm9ybVBsYWNlU2VhcmNoUmVzdWx0KHJlc3VsdCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzZWFyY2hpbmcgcGxhY2VzOicsIGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBHZXQgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgYSBwbGFjZSB1c2luZyBQbGFjZSBEZXRhaWxzIEFQSSAqL1xuICBhc3luYyBnZXRQbGFjZURldGFpbHMocGxhY2VJZDogc3RyaW5nLCBmaWVsZHM/OiBzdHJpbmdbXSk6IFByb21pc2U8UGxhY2VEZXRhaWxzUmVzdWx0PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9ICdodHRwczovL21hcHMuZ29vZ2xlYXBpcy5jb20vbWFwcy9hcGkvcGxhY2UvZGV0YWlscy9qc29uJztcbiAgICAgIGNvbnN0IGRlZmF1bHRGaWVsZHMgPSBbXG4gICAgICAgICdwbGFjZV9pZCcsICduYW1lJywgJ2Zvcm1hdHRlZF9hZGRyZXNzJywgJ2Zvcm1hdHRlZF9waG9uZV9udW1iZXInLFxuICAgICAgICAnd2Vic2l0ZScsICdwaG90b3MnLCAncmF0aW5nJywgJ3VzZXJfcmF0aW5nc190b3RhbCcsICdnZW9tZXRyeSdcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgcGxhY2VfaWQ6IHBsYWNlSWQsXG4gICAgICAgIGZpZWxkczogKGZpZWxkcyB8fCBkZWZhdWx0RmllbGRzKS5qb2luKCcsJyksXG4gICAgICAgIGtleTogdGhpcy5jb25maWcuYXBpS2V5LFxuICAgICAgICBsYW5ndWFnZTogdGhpcy5jb25maWcubGFuZ3VhZ2UgfHwgJ2phJ1xuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBsYXN0VmFsdWVGcm9tKFxuICAgICAgICB0aGlzLmh0dHAuZ2V0PGFueT4odXJsLCB7IHBhcmFtcyB9KVxuICAgICAgKTtcblxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gJ09LJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBsYWNlIERldGFpbHMgQVBJIGVycm9yOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRyYW5zZm9ybVBsYWNlRGV0YWlsc1Jlc3VsdChyZXNwb25zZS5yZXN1bHQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBnZXR0aW5nIHBsYWNlIGRldGFpbHM6JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgLyoqIEdldCBwbGFjZSBwaG90byBhcyBCbG9iIHVzaW5nIFBsYWNlIFBob3RvcyBBUEkgKi9cbiAgYXN5bmMgZ2V0UGxhY2VQaG90byhwaG90b1JlZmVyZW5jZTogc3RyaW5nLCBtYXhXaWR0aCA9IDE2MDApOiBQcm9taXNlPEJsb2I+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGdldFBsYWNlUGhvdG8odGhpcy5odHRwLCB0aGlzLmNvbmZpZy5hcGlLZXksIHBob3RvUmVmZXJlbmNlLCBtYXhXaWR0aCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGdldHRpbmcgcGxhY2UgcGhvdG86JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgLyoqIEdldCBtdWx0aXBsZSBwbGFjZSBwaG90b3MgYXMgQmxvYnMgKi9cbiAgYXN5bmMgZ2V0UGxhY2VQaG90b3MoXG4gICAgcGhvdG9SZWZlcmVuY2VzOiBzdHJpbmdbXSxcbiAgICBtYXhXaWR0aCA9IDE2MDAsXG4gICAgbGltaXQgPSA1XG4gICk6IFByb21pc2U8UGhvdG9SZXN1bHRbXT4ge1xuICAgIHJldHVybiBnZXRQbGFjZVBob3Rvcyh0aGlzLmh0dHAsIHRoaXMuY29uZmlnLmFwaUtleSwgcGhvdG9SZWZlcmVuY2VzLCBtYXhXaWR0aCwgbGltaXQpO1xuICB9XG5cbiAgLyoqIFNlYXJjaCBwbGFjZXMgYW5kIGdldCB0aGVpciBwaG90b3MgaW4gb25lIG9wZXJhdGlvbiAqL1xuICBhc3luYyBzZWFyY2hQbGFjZXNXaXRoUGhvdG9zKFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgbG9jYXRpb24/OiBzdHJpbmc7XG4gICAgICByYWRpdXM/OiBudW1iZXI7XG4gICAgICBtYXhQbGFjZXM/OiBudW1iZXI7XG4gICAgICBtYXhQaG90b3NQZXJQbGFjZT86IG51bWJlcjtcbiAgICAgIHBob3RvTWF4V2lkdGg/OiBudW1iZXI7XG4gICAgfSA9IHt9XG4gICk6IFByb21pc2U8QXJyYXk8eyBwbGFjZTogUGxhY2VEZXRhaWxzUmVzdWx0OyBwaG90b3M6IFBob3RvUmVzdWx0W10gfT4+IHtcbiAgICBjb25zdCB7XG4gICAgICBsb2NhdGlvbixcbiAgICAgIHJhZGl1cyA9IDUwMDAwLFxuICAgICAgbWF4UGxhY2VzID0gNSxcbiAgICAgIG1heFBob3Rvc1BlclBsYWNlID0gMyxcbiAgICAgIHBob3RvTWF4V2lkdGggPSAxNjAwXG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBwbGFjZXMgPSBhd2FpdCB0aGlzLnNlYXJjaFBsYWNlcyhxdWVyeSwgeyBsb2NhdGlvbiwgcmFkaXVzLCBsaW1pdDogbWF4UGxhY2VzIH0pO1xuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcblxuICAgIGZvciAoY29uc3QgcGxhY2Ugb2YgcGxhY2VzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkZXRhaWxzID0gYXdhaXQgdGhpcy5nZXRQbGFjZURldGFpbHMocGxhY2UucGxhY2VJZCk7XG4gICAgICAgIGxldCBwaG90b3M6IFBob3RvUmVzdWx0W10gPSBbXTtcblxuICAgICAgICBpZiAoZGV0YWlscy5waG90b3MgJiYgZGV0YWlscy5waG90b3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IHBob3RvUmVmcyA9IGRldGFpbHMucGhvdG9zXG4gICAgICAgICAgICAubWFwKHBob3RvID0+IHBob3RvLnBob3RvUmVmZXJlbmNlKVxuICAgICAgICAgICAgLnNsaWNlKDAsIG1heFBob3Rvc1BlclBsYWNlKTtcbiAgICAgICAgICBwaG90b3MgPSBhd2FpdCB0aGlzLmdldFBsYWNlUGhvdG9zKHBob3RvUmVmcywgcGhvdG9NYXhXaWR0aCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXN1bHRzLnB1c2goeyBwbGFjZTogZGV0YWlscywgcGhvdG9zIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBGYWlsZWQgdG8gcHJvY2VzcyBwbGFjZSAke3BsYWNlLnBsYWNlSWR9OmAsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtZGRkLWdvb2dsZS1wbGFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2dvb2dsZS9zcmMvbGliL3BsYWNlcy9ueC1kZGQtZ29vZ2xlLXBsYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -102,3 +102,4 @@ declare class GoogleModule {
102
102
 
103
103
  export { GOOGLE_CONFIG, GoogleModule, GoogleService };
104
104
  export type { GoogleConfig };
105
+ //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sources":["../../../../packages/@nx-ddd/google/src/lib/google.config.ts","../../../../packages/@nx-ddd/google/src/lib/google.service.ts","../../../../packages/@nx-ddd/google/src/lib/google.service.impl.ts","../../../../packages/@nx-ddd/google/src/lib/google.module.ts"],"sourcesContent":[null,null,null,null],"names":[],"mappings":";;;;;;;AAGE;AACE;;;;;;;AAOE;;;AAGL;AACD,cAAA,aAAA,EAAA,cAAA,CAAA,YAAA;;ACXA,uBAAA,aAAA;AAEE,6BAAA,MAAA;;AAEA;;;AAAiF,gBAAA,MAAA;;;AAGjF,uDAAA,aAAA,CAAA,QAAA,CAAA,WAAA;AACA,qDAAA,aAAA,CAAA,QAAA,CAAA,WAAA;AACA,wDAAA,OAAA,CAAA,WAAA,CAAA,wBAAA;;;;;;;;;;;;;AAIA,sDAAA,WAAA,CAAA,QAAA;AACA,mFAAA,OAAA;;;AACD;;ACZD,cAAA,iBAAA,SAAA,aAAA;AAG2B;AAAQ,wBAAA,YAAA;AAKjC,kBAAU,mBAAA,CAAA,YAAA;;;;;AAiB8D;AASxE,6BAAsB,mBAAA,CAAA,YAAA;;AAgBhB,8CAAA,aAAA,CAAA,QAAA,CAAA,WAAA;AAKA,4CAAA,aAAA,CAAA,QAAA,CAAA,WAAA;AAKA,+CAAA,OAAA,CAAA,WAAA,CAAA,wBAAA;;;;;;;AAoBkE,QAAA,OAAA;;;;;;;AAY+C,QAAA,OAAA;AAmBjH,oDAAA,OAAA;;;AAIP;;ACrHD,cAAA,YAAA;AAEE,2BAAA,YAAA;;;;;;;;;;;;;;;AASD;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx-ddd/google",
3
- "version": "19.10.0",
3
+ "version": "19.12.0",
4
4
  "peerDependencies": {
5
5
  "@angular/core": ">=17.0.0",
6
6
  "@angular/common": ">=17.0.0"
@@ -15,13 +15,13 @@
15
15
  "types": "./index.d.ts",
16
16
  "default": "./fesm2022/nx-ddd-google.mjs"
17
17
  },
18
- "./search": {
19
- "types": "./search/index.d.ts",
20
- "default": "./fesm2022/nx-ddd-google-search.mjs"
21
- },
22
18
  "./places": {
23
19
  "types": "./places/index.d.ts",
24
20
  "default": "./fesm2022/nx-ddd-google-places.mjs"
21
+ },
22
+ "./search": {
23
+ "types": "./search/index.d.ts",
24
+ "default": "./fesm2022/nx-ddd-google-search.mjs"
25
25
  }
26
26
  },
27
27
  "sideEffects": false,
package/places/index.d.ts CHANGED
@@ -54,43 +54,31 @@ interface PlaceDetailsResponse {
54
54
  declare const GOOGLE_PLACES_CONFIG: InjectionToken<GooglePlacesConfig>;
55
55
  declare function provideGooglePlacesConfig(useFactory: () => GooglePlacesConfig): Provider[];
56
56
 
57
+ /**
58
+ * Photo-related functions for Google Places API
59
+ */
60
+
61
+ interface PhotoResult {
62
+ photoReference: string;
63
+ blob: Blob;
64
+ }
65
+
57
66
  declare class GooglePlacesService {
58
67
  private readonly http;
59
68
  private readonly config;
60
- /**
61
- * Transform API response from snake_case to camelCase
62
- */
63
- private transformPlaceSearchResult;
64
- /**
65
- * Transform API response from snake_case to camelCase
66
- */
67
- private transformPlaceDetailsResult;
68
- /**
69
- * Search for places using Google Places Text Search API
70
- */
69
+ /** Search for places using Google Places Text Search API */
71
70
  searchPlaces(query: string, options?: {
72
71
  location?: string;
73
72
  radius?: number;
74
73
  limit?: number;
75
74
  }): Promise<PlaceSearchResult[]>;
76
- /**
77
- * Get detailed information about a place using Place Details API
78
- */
75
+ /** Get detailed information about a place using Place Details API */
79
76
  getPlaceDetails(placeId: string, fields?: string[]): Promise<PlaceDetailsResult>;
80
- /**
81
- * Get place photo as Blob using Place Photos API
82
- */
77
+ /** Get place photo as Blob using Place Photos API */
83
78
  getPlacePhoto(photoReference: string, maxWidth?: number): Promise<Blob>;
84
- /**
85
- * Get multiple place photos as Blobs
86
- */
87
- getPlacePhotos(photoReferences: string[], maxWidth?: number, limit?: number): Promise<{
88
- photoReference: string;
89
- blob: Blob;
90
- }[]>;
91
- /**
92
- * Search places and get their photos in one operation
93
- */
79
+ /** Get multiple place photos as Blobs */
80
+ getPlacePhotos(photoReferences: string[], maxWidth?: number, limit?: number): Promise<PhotoResult[]>;
81
+ /** Search places and get their photos in one operation */
94
82
  searchPlacesWithPhotos(query: string, options?: {
95
83
  location?: string;
96
84
  radius?: number;
@@ -99,10 +87,7 @@ declare class GooglePlacesService {
99
87
  photoMaxWidth?: number;
100
88
  }): Promise<Array<{
101
89
  place: PlaceDetailsResult;
102
- photos: {
103
- photoReference: string;
104
- blob: Blob;
105
- }[];
90
+ photos: PhotoResult[];
106
91
  }>>;
107
92
  static ɵfac: i0.ɵɵFactoryDeclaration<GooglePlacesService, never>;
108
93
  static ɵprov: i0.ɵɵInjectableDeclaration<GooglePlacesService>;
@@ -110,3 +95,4 @@ declare class GooglePlacesService {
110
95
 
111
96
  export { GOOGLE_PLACES_CONFIG, GooglePlacesService, provideGooglePlacesConfig };
112
97
  export type { GooglePlacesConfig, PlaceDetailsResponse, PlaceDetailsResult, PlacePhoto, PlaceSearchResponse, PlaceSearchResult };
98
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sources":["../../../../../packages/@nx-ddd/google/src/lib/places/places.interface.ts","../../../../../packages/@nx-ddd/google/src/lib/places/places.config.ts","../../../../../packages/@nx-ddd/google/src/lib/places/places-photo.ts","../../../../../packages/@nx-ddd/google/src/lib/places/places.service.ts"],"sourcesContent":[null,null,null,null],"names":[],"mappings":";;;;;;AAGC;;;;;AAMC;AACE;;;;;AAKF,aAAA,UAAA;;;AAGD;;;;;;AAOA;;;;;;;AAQC,aAAA,UAAA;;;AAGA;AACE;;;;;AAKH;;;;;AAMA;;;;AAKA;;AClDD,cAAA,oBAAA,EAAA,cAAA,CAAA,kBAAA;AAEA,iBAAA,yBAAA,mBAAA,kBAAA,GAAA,QAAA;;ACLA;;AAEG;;;;;AAOF;;ACDD,cAAA,mBAAA;AAEE;AACA;;AAGM;;;;AAIA,QAAA,OAAA,CAAA,iBAAA;;AAkCA,yDAAA,OAAA,CAAA,kBAAA;;;;AAyCA,kFAAA,OAAA,CAAA,WAAA;;AASA;;;;;;;;;AAS+D;;;AAgCtE;;;;"}
package/search/index.d.ts CHANGED
@@ -20,3 +20,4 @@ declare class GoogleSearchService {
20
20
  }
21
21
 
22
22
  export { GOOGLE_SEARCH_CONFIG, GoogleSearchService, provideGoogleSearchConfig };
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sources":["../../../../../packages/@nx-ddd/google/src/lib/search/search.service.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAIA,UAAA,kBAAA;;;AAGC;AAED,cAAA,oBAAA,EAAA,cAAA,CAAA,kBAAA;AACA,iBAAA,yBAAA,mBAAA,kBAAA;;;AAEC;AAED,cAAA,mBAAA;;;;;;AAiBC;;;;"}