googlemaps-kit 0.1.3 → 0.2.1

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.
Files changed (181) hide show
  1. package/README.md +146 -179
  2. package/dist/advanced/auth.d.ts +10 -0
  3. package/dist/advanced/auth.d.ts.map +1 -0
  4. package/dist/advanced/auth.js +8 -0
  5. package/dist/advanced/auth.js.map +1 -0
  6. package/dist/advanced/http.d.ts +10 -0
  7. package/dist/advanced/http.d.ts.map +1 -0
  8. package/dist/advanced/http.js +9 -0
  9. package/dist/advanced/http.js.map +1 -0
  10. package/dist/advanced/parsers.d.ts +28 -0
  11. package/dist/advanced/parsers.d.ts.map +1 -0
  12. package/dist/advanced/parsers.js +25 -0
  13. package/dist/advanced/parsers.js.map +1 -0
  14. package/dist/advanced/rpc.d.ts +29 -0
  15. package/dist/advanced/rpc.d.ts.map +1 -0
  16. package/dist/advanced/rpc.js +23 -0
  17. package/dist/advanced/rpc.js.map +1 -0
  18. package/dist/advanced/services.d.ts +34 -0
  19. package/dist/advanced/services.d.ts.map +1 -0
  20. package/dist/advanced/services.js +29 -0
  21. package/dist/advanced/services.js.map +1 -0
  22. package/dist/advanced/utils.d.ts +15 -0
  23. package/dist/advanced/utils.d.ts.map +1 -0
  24. package/dist/advanced/utils.js +13 -0
  25. package/dist/advanced/utils.js.map +1 -0
  26. package/dist/advanced.d.ts +43 -0
  27. package/dist/advanced.d.ts.map +1 -0
  28. package/dist/advanced.js +26 -0
  29. package/dist/advanced.js.map +1 -0
  30. package/dist/auth/session.d.ts +6 -1
  31. package/dist/auth/session.d.ts.map +1 -1
  32. package/dist/auth/session.js +23 -8
  33. package/dist/auth/session.js.map +1 -1
  34. package/dist/cli.d.ts +11 -0
  35. package/dist/cli.d.ts.map +1 -0
  36. package/dist/cli.js +115 -0
  37. package/dist/cli.js.map +1 -0
  38. package/dist/client/gmaps-client.d.ts +91 -52
  39. package/dist/client/gmaps-client.d.ts.map +1 -1
  40. package/dist/client/gmaps-client.js +209 -109
  41. package/dist/client/gmaps-client.js.map +1 -1
  42. package/dist/client/http-client.d.ts +28 -3
  43. package/dist/client/http-client.d.ts.map +1 -1
  44. package/dist/client/http-client.js +163 -14
  45. package/dist/client/http-client.js.map +1 -1
  46. package/dist/client/intent.d.ts +75 -0
  47. package/dist/client/intent.d.ts.map +1 -0
  48. package/dist/client/intent.js +546 -0
  49. package/dist/client/intent.js.map +1 -0
  50. package/dist/client/maps-tools.d.ts +80 -0
  51. package/dist/client/maps-tools.d.ts.map +1 -0
  52. package/dist/client/maps-tools.js +187 -0
  53. package/dist/client/maps-tools.js.map +1 -0
  54. package/dist/client/namespaces.d.ts +121 -0
  55. package/dist/client/namespaces.d.ts.map +1 -0
  56. package/dist/client/namespaces.js +169 -0
  57. package/dist/client/namespaces.js.map +1 -0
  58. package/dist/client/place-enrichment.d.ts +19 -0
  59. package/dist/client/place-enrichment.d.ts.map +1 -0
  60. package/dist/client/place-enrichment.js +71 -0
  61. package/dist/client/place-enrichment.js.map +1 -0
  62. package/dist/client/product-namespaces.d.ts +30 -0
  63. package/dist/client/product-namespaces.d.ts.map +1 -0
  64. package/dist/client/product-namespaces.js +47 -0
  65. package/dist/client/product-namespaces.js.map +1 -0
  66. package/dist/index.d.ts +31 -37
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +13 -28
  69. package/dist/index.js.map +1 -1
  70. package/dist/parsers/place.d.ts.map +1 -1
  71. package/dist/parsers/place.js +2 -0
  72. package/dist/parsers/place.js.map +1 -1
  73. package/dist/parsers/reviews.d.ts +0 -2
  74. package/dist/parsers/reviews.d.ts.map +1 -1
  75. package/dist/parsers/reviews.js +0 -2
  76. package/dist/parsers/reviews.js.map +1 -1
  77. package/dist/parsers/search.d.ts +13 -1
  78. package/dist/parsers/search.d.ts.map +1 -1
  79. package/dist/parsers/search.js +130 -71
  80. package/dist/parsers/search.js.map +1 -1
  81. package/dist/rpc/batch-execute.d.ts.map +1 -1
  82. package/dist/rpc/batch-execute.js +20 -3
  83. package/dist/rpc/batch-execute.js.map +1 -1
  84. package/dist/rpc/batch-rpc.d.ts.map +1 -1
  85. package/dist/rpc/batch-rpc.js +5 -6
  86. package/dist/rpc/batch-rpc.js.map +1 -1
  87. package/dist/rpc/batch-services.d.ts +2 -0
  88. package/dist/rpc/batch-services.d.ts.map +1 -1
  89. package/dist/rpc/batch-services.js +4 -0
  90. package/dist/rpc/batch-services.js.map +1 -1
  91. package/dist/rpc/pb-builders.d.ts +0 -2
  92. package/dist/rpc/pb-builders.d.ts.map +1 -1
  93. package/dist/rpc/pb-builders.js +2 -5
  94. package/dist/rpc/pb-builders.js.map +1 -1
  95. package/dist/rpc/rpc-client.d.ts +6 -2
  96. package/dist/rpc/rpc-client.d.ts.map +1 -1
  97. package/dist/rpc/rpc-client.js +26 -10
  98. package/dist/rpc/rpc-client.js.map +1 -1
  99. package/dist/rpc/rpc-methods.d.ts +0 -7
  100. package/dist/rpc/rpc-methods.d.ts.map +1 -1
  101. package/dist/rpc/rpc-methods.js +0 -7
  102. package/dist/rpc/rpc-methods.js.map +1 -1
  103. package/dist/services/ask-maps.js +1 -1
  104. package/dist/services/ask-maps.js.map +1 -1
  105. package/dist/services/directions.d.ts +3 -8
  106. package/dist/services/directions.d.ts.map +1 -1
  107. package/dist/services/directions.js +37 -13
  108. package/dist/services/directions.js.map +1 -1
  109. package/dist/services/geocode.js +1 -1
  110. package/dist/services/photos.d.ts.map +1 -1
  111. package/dist/services/photos.js +2 -5
  112. package/dist/services/photos.js.map +1 -1
  113. package/dist/services/places.d.ts.map +1 -1
  114. package/dist/services/places.js +13 -4
  115. package/dist/services/places.js.map +1 -1
  116. package/dist/services/reviews.d.ts +7 -0
  117. package/dist/services/reviews.d.ts.map +1 -1
  118. package/dist/services/reviews.js +10 -1
  119. package/dist/services/reviews.js.map +1 -1
  120. package/dist/services/search.d.ts +7 -5
  121. package/dist/services/search.d.ts.map +1 -1
  122. package/dist/services/search.js +46 -17
  123. package/dist/services/search.js.map +1 -1
  124. package/dist/services/ugc-aggregates.d.ts.map +1 -1
  125. package/dist/services/ugc-aggregates.js +1 -17
  126. package/dist/services/ugc-aggregates.js.map +1 -1
  127. package/dist/types/common.d.ts +92 -6
  128. package/dist/types/common.d.ts.map +1 -1
  129. package/dist/types/common.js +12 -0
  130. package/dist/types/common.js.map +1 -1
  131. package/dist/types/directions.d.ts +16 -2
  132. package/dist/types/directions.d.ts.map +1 -1
  133. package/dist/types/dx.d.ts +289 -0
  134. package/dist/types/dx.d.ts.map +1 -0
  135. package/dist/types/dx.js +7 -0
  136. package/dist/types/dx.js.map +1 -0
  137. package/dist/types/hooks.d.ts +48 -0
  138. package/dist/types/hooks.d.ts.map +1 -0
  139. package/dist/types/hooks.js +5 -0
  140. package/dist/types/hooks.js.map +1 -0
  141. package/dist/utils/abort.d.ts +7 -0
  142. package/dist/utils/abort.d.ts.map +1 -0
  143. package/dist/utils/abort.js +43 -0
  144. package/dist/utils/abort.js.map +1 -0
  145. package/dist/utils/coords.d.ts +24 -0
  146. package/dist/utils/coords.d.ts.map +1 -0
  147. package/dist/utils/coords.js +37 -0
  148. package/dist/utils/coords.js.map +1 -0
  149. package/dist/utils/export-results.d.ts +24 -0
  150. package/dist/utils/export-results.d.ts.map +1 -0
  151. package/dist/utils/export-results.js +105 -0
  152. package/dist/utils/export-results.js.map +1 -0
  153. package/dist/utils/hooks.d.ts +10 -0
  154. package/dist/utils/hooks.d.ts.map +1 -0
  155. package/dist/utils/hooks.js +47 -0
  156. package/dist/utils/hooks.js.map +1 -0
  157. package/dist/utils/place-ref.d.ts +39 -0
  158. package/dist/utils/place-ref.d.ts.map +1 -0
  159. package/dist/utils/place-ref.js +109 -0
  160. package/dist/utils/place-ref.js.map +1 -0
  161. package/dist/utils/pooled.d.ts +2 -0
  162. package/dist/utils/pooled.d.ts.map +1 -1
  163. package/dist/utils/pooled.js +8 -0
  164. package/dist/utils/pooled.js.map +1 -1
  165. package/dist/utils/request-context.d.ts +9 -0
  166. package/dist/utils/request-context.d.ts.map +1 -0
  167. package/dist/utils/request-context.js +12 -0
  168. package/dist/utils/request-context.js.map +1 -0
  169. package/dist/utils/ttl-cache.d.ts +17 -0
  170. package/dist/utils/ttl-cache.d.ts.map +1 -0
  171. package/dist/utils/ttl-cache.js +43 -0
  172. package/dist/utils/ttl-cache.js.map +1 -0
  173. package/package.json +28 -13
  174. package/dist/internal.d.ts +0 -140
  175. package/dist/internal.d.ts.map +0 -1
  176. package/dist/internal.js +0 -97
  177. package/dist/internal.js.map +0 -1
  178. package/dist/server/api-server.d.ts +0 -9
  179. package/dist/server/api-server.d.ts.map +0 -1
  180. package/dist/server/api-server.js +0 -293
  181. package/dist/server/api-server.js.map +0 -1
@@ -0,0 +1,546 @@
1
+ /**
2
+ * Intent-layer helpers — discover / resolve / profile / route / opinions / media.
3
+ *
4
+ * Return shapes are stable and documented in `types/dx.ts` so agents/devs
5
+ * always know where fields live (`place.name`, `photos[]`, etc.).
6
+ */
7
+ import { GMapsError } from '../types/common.js';
8
+ import { AuthRequiredError } from '../types/common.js';
9
+ import { normalizePlaceRef, resolveDirectionsEndpoints, resolveSearchCenter, } from '../utils/place-ref.js';
10
+ import { isShortMapsLink, parseMapsUrl } from '../parsers/maps-url.js';
11
+ import { throwIfAborted } from '../utils/abort.js';
12
+ import { withActionHook } from '../utils/hooks.js';
13
+ import { pooledMap } from '../utils/pooled.js';
14
+ import { runWithRequestContext } from '../utils/request-context.js';
15
+ export class IntentApi {
16
+ services;
17
+ config;
18
+ isSignedIn;
19
+ getPlaceComplete;
20
+ cache;
21
+ constructor(services, config, isSignedIn, getPlaceComplete, cache) {
22
+ this.services = services;
23
+ this.config = config;
24
+ this.isSignedIn = isSignedIn;
25
+ this.getPlaceComplete = getPlaceComplete;
26
+ this.cache = cache;
27
+ }
28
+ get hooks() {
29
+ return this.config.hooks;
30
+ }
31
+ runIntent(type, signal, fn) {
32
+ return withActionHook(this.hooks, type, () => runWithRequestContext({ signal }, async () => {
33
+ throwIfAborted(signal);
34
+ return fn();
35
+ }));
36
+ }
37
+ /**
38
+ * Find places near a point.
39
+ * One GET search — default `mode: 'fast'` (~5 rows, ~400 ms warm).
40
+ * Accepts `near` or `location` for the bias center.
41
+ */
42
+ async discover(options) {
43
+ return this.runIntent('discover', options.signal, async () => {
44
+ const near = resolveSearchCenter(options);
45
+ const mode = options.mode ?? this.config.performance?.mode ?? 'fast';
46
+ const cacheKey = this.cache &&
47
+ `discover:${mode}:${options.query}:${near.lat},${near.lng}:${options.offset ?? 0}:${options.limit ?? ''}`;
48
+ if (cacheKey) {
49
+ const hit = this.cache.get(cacheKey);
50
+ if (hit)
51
+ return hit;
52
+ }
53
+ const result = await this.services.search.searchText({
54
+ query: options.query,
55
+ location: near,
56
+ mode,
57
+ limit: options.limit,
58
+ radiusMeters: options.radiusMeters,
59
+ filters: options.filters,
60
+ offset: options.offset,
61
+ psi: options.psi,
62
+ });
63
+ const out = {
64
+ places: result.places,
65
+ timingMs: result.timingMs,
66
+ mode,
67
+ pagination: {
68
+ offset: result.pagination.offset,
69
+ pageSize: result.pagination.pageSize,
70
+ hasMore: result.pagination.hasMore,
71
+ nextOffset: result.pagination.nextOffset,
72
+ psi: result.pagination.psi,
73
+ },
74
+ };
75
+ if (cacheKey)
76
+ this.cache.set(cacheKey, out);
77
+ options.onProgress?.({
78
+ type: 'discover',
79
+ index: 1,
80
+ total: 1,
81
+ loaded: out.places.length,
82
+ done: true,
83
+ });
84
+ return out;
85
+ });
86
+ }
87
+ /**
88
+ * Stream discover pages as an async iterable (deduped across pages).
89
+ */
90
+ async *discoverPages(options) {
91
+ const near = resolveSearchCenter(options);
92
+ const mode = options.mode ?? this.config.performance?.mode ?? 'fast';
93
+ const maxPages = options.maxPages ?? 5;
94
+ let offset = options.offset ?? 0;
95
+ let psi = options.psi;
96
+ const seen = new Set();
97
+ let loaded = 0;
98
+ for (let page = 0; page < maxPages; page++) {
99
+ throwIfAborted(options.signal);
100
+ const result = await this.runIntent('discoverPages', options.signal, async () => {
101
+ const text = await this.services.search.searchText({
102
+ query: options.query,
103
+ location: near,
104
+ mode,
105
+ limit: options.limit,
106
+ radiusMeters: options.radiusMeters,
107
+ filters: options.filters,
108
+ offset,
109
+ psi,
110
+ });
111
+ const places = [];
112
+ for (const biz of text.places) {
113
+ const key = biz.placeId ?? biz.hexId ?? biz.name;
114
+ if (key && seen.has(key))
115
+ continue;
116
+ if (key)
117
+ seen.add(key);
118
+ places.push(biz);
119
+ }
120
+ return {
121
+ places,
122
+ timingMs: text.timingMs,
123
+ mode,
124
+ pagination: {
125
+ offset: text.pagination.offset,
126
+ pageSize: text.pagination.pageSize,
127
+ hasMore: text.pagination.hasMore,
128
+ nextOffset: text.pagination.nextOffset,
129
+ psi: text.pagination.psi,
130
+ },
131
+ };
132
+ });
133
+ loaded += result.places.length;
134
+ options.onProgress?.({
135
+ type: 'discoverPages',
136
+ index: page + 1,
137
+ total: maxPages,
138
+ loaded,
139
+ done: !result.pagination.hasMore || result.pagination.nextOffset == null,
140
+ });
141
+ yield result;
142
+ if (!result.pagination.hasMore || result.pagination.nextOffset == null)
143
+ break;
144
+ if (result.places.length === 0 && page > 0)
145
+ break;
146
+ offset = result.pagination.nextOffset;
147
+ psi = result.pagination.psi ?? psi;
148
+ }
149
+ }
150
+ /**
151
+ * Resolve a URL, address, or query into a place identity (not a full card).
152
+ * Chain: URL parse → suggest → fast search → geocode.
153
+ */
154
+ async resolve(options) {
155
+ return this.runIntent('resolve', options.signal, async () => {
156
+ if (!options.url && !options.query) {
157
+ throw new GMapsError('resolve() requires url and/or query');
158
+ }
159
+ const near = options.near ?? options.location;
160
+ let working = options;
161
+ if (working.url) {
162
+ let url = working.url;
163
+ if (isShortMapsLink(url)) {
164
+ url = await this.services.links.expand(url);
165
+ }
166
+ const parsed = parseMapsUrl(url);
167
+ if (parsed.kind === 'place') {
168
+ return {
169
+ hexId: parsed.hexId,
170
+ placeId: parsed.placeId,
171
+ name: parsed.name,
172
+ lat: parsed.lat,
173
+ lng: parsed.lng,
174
+ ftid: parsed.featureId,
175
+ source: 'url',
176
+ };
177
+ }
178
+ if (parsed.kind === 'viewport') {
179
+ return {
180
+ lat: parsed.lat,
181
+ lng: parsed.lng,
182
+ source: 'url',
183
+ };
184
+ }
185
+ if (parsed.kind === 'search' && parsed.query) {
186
+ working = {
187
+ ...working,
188
+ query: working.query ?? parsed.query,
189
+ near: near ??
190
+ (parsed.lat != null && parsed.lng != null
191
+ ? { lat: parsed.lat, lng: parsed.lng }
192
+ : undefined),
193
+ };
194
+ }
195
+ }
196
+ const bias = working.near ?? working.location ?? near;
197
+ if (working.query) {
198
+ if (bias) {
199
+ const suggest = await this.services.suggest.suggest({
200
+ query: working.query,
201
+ lat: bias.lat,
202
+ lng: bias.lng,
203
+ });
204
+ const hit = suggest.suggestions.find((s) => s.hexId || s.placeId);
205
+ if (hit) {
206
+ return {
207
+ hexId: hit.hexId,
208
+ placeId: hit.placeId,
209
+ name: hit.primaryText ?? hit.text,
210
+ address: hit.secondaryText,
211
+ ftid: hit.featureId,
212
+ source: 'suggest',
213
+ };
214
+ }
215
+ const search = await this.services.search.searchText({
216
+ query: working.query,
217
+ location: bias,
218
+ mode: 'fast',
219
+ limit: 1,
220
+ });
221
+ const place = search.places[0];
222
+ if (place) {
223
+ return {
224
+ hexId: place.hexId,
225
+ placeId: place.placeId,
226
+ name: place.name,
227
+ address: place.address,
228
+ lat: place.lat ?? place.latitude,
229
+ lng: place.lng ?? place.longitude,
230
+ ftid: place.ftid,
231
+ source: 'search',
232
+ };
233
+ }
234
+ }
235
+ const geo = await this.services.geocode.geocode(working.query, {
236
+ lat: bias?.lat,
237
+ lng: bias?.lng,
238
+ });
239
+ const first = geo.result;
240
+ if (first) {
241
+ return {
242
+ hexId: first.hexId,
243
+ placeId: first.placeId,
244
+ name: first.name || first.formattedAddress || working.query,
245
+ address: first.formattedAddress,
246
+ lat: first.lat,
247
+ lng: first.lng,
248
+ source: 'geocode',
249
+ };
250
+ }
251
+ }
252
+ throw new GMapsError('resolve() could not identify a place from the given input');
253
+ });
254
+ }
255
+ /**
256
+ * Place profile — always returns `{ place, depth, reviews?, … }`.
257
+ * Default depth `card` is the low-latency path.
258
+ */
259
+ async profile(ref, options = {}) {
260
+ return this.runIntent('profile', options.signal, async () => {
261
+ const place = normalizePlaceRef(ref);
262
+ const depth = options.depth ?? 'card';
263
+ const cacheKey = this.cache && depth === 'card'
264
+ ? `profile:card:${place.hexId}`
265
+ : undefined;
266
+ if (cacheKey) {
267
+ const hit = this.cache.get(cacheKey);
268
+ if (hit)
269
+ return hit;
270
+ }
271
+ const skipIncompleteRetry = place.reviewCount != null;
272
+ const base = {
273
+ hexId: place.hexId,
274
+ name: place.name,
275
+ lat: place.lat,
276
+ lng: place.lng,
277
+ ftid: place.ftid,
278
+ skipIncompleteRetry,
279
+ };
280
+ let out;
281
+ if (depth === 'card') {
282
+ const details = await this.services.places.get(base);
283
+ out = { place: details, depth: 'card' };
284
+ }
285
+ else if (depth === 'full') {
286
+ const full = await this.services.places.getFull({
287
+ ...base,
288
+ maxReviewPages: options.maxReviewPages ?? 1,
289
+ includeLocalPosts: options.includeLocalPosts ?? false,
290
+ }, this.services.reviews);
291
+ out = {
292
+ place: full.details,
293
+ reviews: full.reviews,
294
+ localPosts: full.localPosts,
295
+ depth: 'full',
296
+ meta: full.meta,
297
+ };
298
+ }
299
+ else {
300
+ const complete = await this.getPlaceComplete({
301
+ ...base,
302
+ maxReviewPages: options.maxReviewPages ?? 3,
303
+ includeLocalPosts: options.includeLocalPosts ?? false,
304
+ });
305
+ out = {
306
+ place: complete.details,
307
+ reviews: complete.reviews,
308
+ localPosts: complete.localPosts,
309
+ knowledge: complete.knowledge,
310
+ depth: 'complete',
311
+ meta: complete.meta,
312
+ };
313
+ }
314
+ if (cacheKey)
315
+ this.cache.set(cacheKey, out);
316
+ return out;
317
+ });
318
+ }
319
+ /** Profile many places with bounded concurrency. */
320
+ async profileMany(refs, options = {}) {
321
+ return this.runIntent('profileMany', options.signal, async () => {
322
+ const concurrency = options.concurrency ?? this.config.concurrency ?? this.config.performance?.concurrency ?? 6;
323
+ const { signal, onProgress, concurrency: _c, ...profileOpts } = options;
324
+ const results = await pooledMap(refs, concurrency, async (ref, index) => {
325
+ throwIfAborted(signal);
326
+ const profile = await this.profile(ref, { ...profileOpts, signal });
327
+ onProgress?.({
328
+ type: 'profileMany',
329
+ index: index + 1,
330
+ total: refs.length,
331
+ loaded: index + 1,
332
+ key: normalizePlaceRef(ref).hexId,
333
+ done: index + 1 >= refs.length,
334
+ });
335
+ return profile;
336
+ });
337
+ return results;
338
+ });
339
+ }
340
+ /**
341
+ * Directions. Default: duration/distance only (`includeSteps: false`).
342
+ * Accepts `from`/`to` or `origin`/`destination`.
343
+ */
344
+ async route(options) {
345
+ return this.runIntent('route', options.signal, async () => {
346
+ const { origin, destination } = resolveDirectionsEndpoints(options);
347
+ return this.services.directions.get({
348
+ origin,
349
+ destination,
350
+ mode: options.mode,
351
+ includeSteps: options.includeSteps,
352
+ });
353
+ });
354
+ }
355
+ /**
356
+ * Reviews. Default: one page, no aggregates RPC (fastest anonymous path).
357
+ */
358
+ async opinions(ref, options = {}) {
359
+ return this.runIntent('opinions', options.signal, async () => {
360
+ const place = normalizePlaceRef(ref);
361
+ const source = options.source ?? 'auto';
362
+ if (source === 'rpc' && !this.isSignedIn()) {
363
+ throw new AuthRequiredError('reviewsRpc requires signed-in SAPISID cookies (GMAPS_COOKIES).', 'reviewsRpc');
364
+ }
365
+ const pages = options.pages ?? 1;
366
+ const base = {
367
+ hexId: place.hexId,
368
+ name: place.name,
369
+ lat: place.lat,
370
+ lng: place.lng,
371
+ ftid: place.ftid,
372
+ limit: options.limit ?? 10,
373
+ source,
374
+ includeAggregates: options.includeAggregates === true,
375
+ filters: options.filters,
376
+ };
377
+ if (pages <= 1) {
378
+ return this.services.reviews.list(base);
379
+ }
380
+ return this.services.reviews.listAll({ ...base, maxPages: pages });
381
+ });
382
+ }
383
+ /**
384
+ * Stream review pages (Boq). Each yield is one page (not cumulative).
385
+ */
386
+ async *opinionsPages(ref, options = {}) {
387
+ const place = normalizePlaceRef(ref);
388
+ const source = options.source ?? 'auto';
389
+ if (source === 'rpc' && !this.isSignedIn()) {
390
+ throw new AuthRequiredError('reviewsRpc requires signed-in SAPISID cookies (GMAPS_COOKIES).', 'reviewsRpc');
391
+ }
392
+ const maxPages = options.maxPages ?? options.pages ?? 10;
393
+ let token;
394
+ let loaded = 0;
395
+ const seen = new Set();
396
+ for (let page = 0; page < maxPages; page++) {
397
+ throwIfAborted(options.signal);
398
+ const result = await this.runIntent('opinionsPages', options.signal, async () => {
399
+ return this.services.reviews.list({
400
+ hexId: place.hexId,
401
+ name: place.name,
402
+ lat: place.lat,
403
+ lng: place.lng,
404
+ ftid: place.ftid,
405
+ limit: options.limit ?? 10,
406
+ source,
407
+ includeAggregates: page === 0 && options.includeAggregates === true,
408
+ filters: options.filters,
409
+ paginationToken: token,
410
+ });
411
+ });
412
+ const fresh = result.reviews.filter((r) => {
413
+ if (!r.reviewId)
414
+ return true;
415
+ if (seen.has(r.reviewId))
416
+ return false;
417
+ seen.add(r.reviewId);
418
+ return true;
419
+ });
420
+ loaded += fresh.length;
421
+ options.onProgress?.({
422
+ type: 'opinionsPages',
423
+ index: page + 1,
424
+ total: maxPages,
425
+ loaded,
426
+ key: place.hexId,
427
+ done: !result.nextPageToken,
428
+ });
429
+ yield {
430
+ ...result,
431
+ reviews: fresh,
432
+ reviewCount: fresh.length,
433
+ };
434
+ if (!result.nextPageToken || fresh.length === 0)
435
+ break;
436
+ token = result.nextPageToken;
437
+ }
438
+ }
439
+ /**
440
+ * Photos (and optional Street View). Flat `photos[]` — not nested.
441
+ */
442
+ async media(ref, options = {}) {
443
+ return this.runIntent('media', options.signal, async () => {
444
+ const place = normalizePlaceRef(ref);
445
+ const wantPhotos = options.photos !== false;
446
+ const wantSv = options.streetView === true;
447
+ const result = {
448
+ photos: [],
449
+ photoCount: 0,
450
+ };
451
+ if (wantPhotos) {
452
+ const page = await this.services.photos.list({
453
+ hexId: place.hexId,
454
+ name: place.name,
455
+ lat: place.lat,
456
+ lng: place.lng,
457
+ pageSize: options.pageSize,
458
+ category: options.category,
459
+ source: options.source,
460
+ });
461
+ result.photos = page.photos;
462
+ result.photoCount = page.photos.length;
463
+ result.nextPageToken = page.nextPageToken;
464
+ result.photoSource = page.source;
465
+ }
466
+ if (wantSv && place.lat != null && place.lng != null) {
467
+ result.panoramas = await this.services.panorama.findNearby({
468
+ lat: place.lat,
469
+ lng: place.lng,
470
+ });
471
+ }
472
+ return result;
473
+ });
474
+ }
475
+ /** Fetch media for many places with bounded concurrency. */
476
+ async mediaMany(refs, options = {}) {
477
+ return this.runIntent('mediaMany', options.signal, async () => {
478
+ const concurrency = options.concurrency ?? this.config.concurrency ?? this.config.performance?.concurrency ?? 6;
479
+ const { signal, onProgress, concurrency: _c, ...mediaOpts } = options;
480
+ return pooledMap(refs, concurrency, async (ref, index) => {
481
+ throwIfAborted(signal);
482
+ const media = await this.media(ref, { ...mediaOpts, signal });
483
+ onProgress?.({
484
+ type: 'mediaMany',
485
+ index: index + 1,
486
+ total: refs.length,
487
+ loaded: index + 1,
488
+ key: normalizePlaceRef(ref).hexId,
489
+ done: index + 1 >= refs.length,
490
+ });
491
+ return media;
492
+ });
493
+ });
494
+ }
495
+ /**
496
+ * Discover → optional profile → optional opinions in one call.
497
+ */
498
+ async pipeline(options) {
499
+ return this.runIntent('pipeline', options.signal, async () => {
500
+ const start = performance.now();
501
+ const discover = await this.discover({
502
+ ...options.discover,
503
+ signal: options.signal,
504
+ });
505
+ const hits = discover.places.slice(0, options.maxPlaces ?? discover.places.length);
506
+ const concurrency = options.concurrency ?? this.config.concurrency ?? this.config.performance?.concurrency ?? 6;
507
+ const wantProfile = options.profile !== false;
508
+ const wantOpinions = options.opinions != null && options.opinions !== false;
509
+ const profileOpts = wantProfile
510
+ ? options.profile === false
511
+ ? {}
512
+ : (options.profile ?? {})
513
+ : null;
514
+ const opinionsOpts = wantOpinions
515
+ ? options.opinions === false
516
+ ? {}
517
+ : (options.opinions ?? {})
518
+ : null;
519
+ const places = await pooledMap(hits, concurrency, async (hit, index) => {
520
+ throwIfAborted(options.signal);
521
+ const row = { hit };
522
+ if (profileOpts) {
523
+ row.profile = await this.profile(hit, { ...profileOpts, signal: options.signal });
524
+ }
525
+ if (opinionsOpts) {
526
+ row.opinions = await this.opinions(hit, { ...opinionsOpts, signal: options.signal });
527
+ }
528
+ options.onProgress?.({
529
+ type: 'pipeline',
530
+ index: index + 1,
531
+ total: hits.length,
532
+ loaded: index + 1,
533
+ key: hit.hexId,
534
+ done: index + 1 >= hits.length,
535
+ });
536
+ return row;
537
+ });
538
+ return {
539
+ places,
540
+ discover,
541
+ timingMs: performance.now() - start,
542
+ };
543
+ });
544
+ }
545
+ }
546
+ //# sourceMappingURL=intent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent.js","sourceRoot":"","sources":["../../src/client/intent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Ready-made Intent tools for agents (Vercel AI SDK / OpenAI-style).
3
+ *
4
+ * @example
5
+ * import { sdk, createMapsTools } from 'googlemaps-kit';
6
+ * const maps = sdk();
7
+ * const tools = createMapsTools(maps);
8
+ * await tools.discover.execute({ query: 'coffee', nearLat: 12.98, nearLng: 77.64 });
9
+ */
10
+ import type { GMapsClient } from './gmaps-client.js';
11
+ import type { TravelMode } from '../types/common.js';
12
+ import type { ProfileDepth } from '../types/dx.js';
13
+ export interface MapsToolDefinition<TArgs extends Record<string, unknown>, TResult> {
14
+ description: string;
15
+ parameters: {
16
+ type: 'object';
17
+ properties: Record<string, unknown>;
18
+ required?: string[];
19
+ };
20
+ execute: (args: TArgs) => Promise<TResult>;
21
+ }
22
+ export interface CreateMapsToolsOptions {
23
+ /**
24
+ * When true for a tool name, execute throws until the host confirms.
25
+ * Hosts should check `requireApproval` before calling execute.
26
+ */
27
+ requireApproval?: Partial<Record<'discover' | 'resolve' | 'profile' | 'route' | 'opinions' | 'media' | 'pipeline', boolean>>;
28
+ }
29
+ /** Build Intent-backed tools for coding agents. */
30
+ export declare function createMapsTools(maps: GMapsClient, options?: CreateMapsToolsOptions): {
31
+ readonly discover: MapsToolDefinition<{
32
+ query: string;
33
+ nearLat?: number;
34
+ nearLng?: number;
35
+ mode?: "fast" | "full";
36
+ limit?: number;
37
+ }, unknown>;
38
+ readonly resolve: MapsToolDefinition<{
39
+ query?: string;
40
+ url?: string;
41
+ nearLat?: number;
42
+ nearLng?: number;
43
+ }, unknown>;
44
+ readonly profile: MapsToolDefinition<{
45
+ hexId: string;
46
+ name?: string;
47
+ lat?: number;
48
+ lng?: number;
49
+ depth?: ProfileDepth;
50
+ }, unknown>;
51
+ readonly route: MapsToolDefinition<{
52
+ fromLat: number;
53
+ fromLng: number;
54
+ toLat: number;
55
+ toLng: number;
56
+ mode?: TravelMode;
57
+ includeSteps?: boolean;
58
+ }, unknown>;
59
+ readonly opinions: MapsToolDefinition<{
60
+ hexId: string;
61
+ name?: string;
62
+ pages?: number;
63
+ includeAggregates?: boolean;
64
+ }, unknown>;
65
+ readonly media: MapsToolDefinition<{
66
+ hexId: string;
67
+ name?: string;
68
+ streetView?: boolean;
69
+ }, unknown>;
70
+ readonly pipeline: MapsToolDefinition<{
71
+ query: string;
72
+ nearLat: number;
73
+ nearLng: number;
74
+ maxPlaces?: number;
75
+ depth?: ProfileDepth;
76
+ includeOpinions?: boolean;
77
+ }, unknown>;
78
+ };
79
+ export type MapsTools = ReturnType<typeof createMapsTools>;
80
+ //# sourceMappingURL=maps-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maps-tools.d.ts","sourceRoot":"","sources":["../../src/client/maps-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,WAAW,kBAAkB,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;IAChF,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CACvB,MAAM,CAAC,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,EAAE,OAAO,CAAC,CAClG,CAAC;CACH;AAoBD,mDAAmD;AACnD,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE,sBAA2B;;eAK1E,MAAM;kBACH,MAAM;kBACN,MAAM;eACT,MAAM,GAAG,MAAM;gBACd,MAAM;;;gBA+BN,MAAM;cAAQ,MAAM;kBAAY,MAAM;kBAAY,MAAM;;;eAwBzD,MAAM;eAAS,MAAM;cAAQ,MAAM;cAAQ,MAAM;gBAAU,YAAY;;;iBAgCrE,MAAM;iBACN,MAAM;eACR,MAAM;eACN,MAAM;eACN,UAAU;uBACF,OAAO;;;eA6Bf,MAAM;eAAS,MAAM;gBAAU,MAAM;4BAAsB,OAAO;;;eAuBpC,MAAM;eAAS,MAAM;qBAAe,OAAO;;;eAsBzE,MAAM;iBACJ,MAAM;iBACN,MAAM;oBACH,MAAM;gBACV,YAAY;0BACF,OAAO;;EAwC9B;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC"}