googlemaps-kit 0.1.2 → 0.2.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.
Files changed (178) hide show
  1. package/README.md +147 -180
  2. package/assets/banner.png +0 -0
  3. package/dist/advanced/auth.d.ts +10 -0
  4. package/dist/advanced/auth.d.ts.map +1 -0
  5. package/dist/advanced/auth.js +8 -0
  6. package/dist/advanced/auth.js.map +1 -0
  7. package/dist/advanced/http.d.ts +10 -0
  8. package/dist/advanced/http.d.ts.map +1 -0
  9. package/dist/advanced/http.js +9 -0
  10. package/dist/advanced/http.js.map +1 -0
  11. package/dist/advanced/parsers.d.ts +28 -0
  12. package/dist/advanced/parsers.d.ts.map +1 -0
  13. package/dist/advanced/parsers.js +25 -0
  14. package/dist/advanced/parsers.js.map +1 -0
  15. package/dist/advanced/rpc.d.ts +29 -0
  16. package/dist/advanced/rpc.d.ts.map +1 -0
  17. package/dist/advanced/rpc.js +23 -0
  18. package/dist/advanced/rpc.js.map +1 -0
  19. package/dist/advanced/services.d.ts +34 -0
  20. package/dist/advanced/services.d.ts.map +1 -0
  21. package/dist/advanced/services.js +29 -0
  22. package/dist/advanced/services.js.map +1 -0
  23. package/dist/advanced/utils.d.ts +15 -0
  24. package/dist/advanced/utils.d.ts.map +1 -0
  25. package/dist/advanced/utils.js +13 -0
  26. package/dist/advanced/utils.js.map +1 -0
  27. package/dist/advanced.d.ts +43 -0
  28. package/dist/advanced.d.ts.map +1 -0
  29. package/dist/advanced.js +26 -0
  30. package/dist/advanced.js.map +1 -0
  31. package/dist/auth/session.d.ts +6 -1
  32. package/dist/auth/session.d.ts.map +1 -1
  33. package/dist/auth/session.js +23 -8
  34. package/dist/auth/session.js.map +1 -1
  35. package/dist/cli.d.ts +11 -0
  36. package/dist/cli.d.ts.map +1 -0
  37. package/dist/cli.js +115 -0
  38. package/dist/cli.js.map +1 -0
  39. package/dist/client/gmaps-client.d.ts +91 -52
  40. package/dist/client/gmaps-client.d.ts.map +1 -1
  41. package/dist/client/gmaps-client.js +209 -109
  42. package/dist/client/gmaps-client.js.map +1 -1
  43. package/dist/client/http-client.d.ts +28 -3
  44. package/dist/client/http-client.d.ts.map +1 -1
  45. package/dist/client/http-client.js +163 -14
  46. package/dist/client/http-client.js.map +1 -1
  47. package/dist/client/intent.d.ts +75 -0
  48. package/dist/client/intent.d.ts.map +1 -0
  49. package/dist/client/intent.js +546 -0
  50. package/dist/client/intent.js.map +1 -0
  51. package/dist/client/maps-tools.d.ts +80 -0
  52. package/dist/client/maps-tools.d.ts.map +1 -0
  53. package/dist/client/maps-tools.js +187 -0
  54. package/dist/client/maps-tools.js.map +1 -0
  55. package/dist/client/namespaces.d.ts +121 -0
  56. package/dist/client/namespaces.d.ts.map +1 -0
  57. package/dist/client/namespaces.js +169 -0
  58. package/dist/client/namespaces.js.map +1 -0
  59. package/dist/client/place-enrichment.d.ts +19 -0
  60. package/dist/client/place-enrichment.d.ts.map +1 -0
  61. package/dist/client/place-enrichment.js +71 -0
  62. package/dist/client/place-enrichment.js.map +1 -0
  63. package/dist/client/product-namespaces.d.ts +30 -0
  64. package/dist/client/product-namespaces.d.ts.map +1 -0
  65. package/dist/client/product-namespaces.js +47 -0
  66. package/dist/client/product-namespaces.js.map +1 -0
  67. package/dist/index.d.ts +31 -37
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +13 -28
  70. package/dist/index.js.map +1 -1
  71. package/dist/internal.d.ts +3 -137
  72. package/dist/internal.d.ts.map +1 -1
  73. package/dist/internal.js +3 -94
  74. package/dist/internal.js.map +1 -1
  75. package/dist/parsers/place.d.ts.map +1 -1
  76. package/dist/parsers/place.js +2 -0
  77. package/dist/parsers/place.js.map +1 -1
  78. package/dist/parsers/reviews.d.ts +0 -2
  79. package/dist/parsers/reviews.d.ts.map +1 -1
  80. package/dist/parsers/reviews.js +0 -2
  81. package/dist/parsers/reviews.js.map +1 -1
  82. package/dist/parsers/search.d.ts +13 -1
  83. package/dist/parsers/search.d.ts.map +1 -1
  84. package/dist/parsers/search.js +130 -71
  85. package/dist/parsers/search.js.map +1 -1
  86. package/dist/rpc/batch-execute.d.ts.map +1 -1
  87. package/dist/rpc/batch-execute.js +20 -3
  88. package/dist/rpc/batch-execute.js.map +1 -1
  89. package/dist/rpc/batch-rpc.d.ts.map +1 -1
  90. package/dist/rpc/batch-rpc.js +5 -6
  91. package/dist/rpc/batch-rpc.js.map +1 -1
  92. package/dist/rpc/batch-services.d.ts +2 -0
  93. package/dist/rpc/batch-services.d.ts.map +1 -1
  94. package/dist/rpc/batch-services.js +4 -0
  95. package/dist/rpc/batch-services.js.map +1 -1
  96. package/dist/rpc/pb-builders.d.ts +0 -2
  97. package/dist/rpc/pb-builders.d.ts.map +1 -1
  98. package/dist/rpc/pb-builders.js +2 -5
  99. package/dist/rpc/pb-builders.js.map +1 -1
  100. package/dist/rpc/rpc-client.d.ts +6 -2
  101. package/dist/rpc/rpc-client.d.ts.map +1 -1
  102. package/dist/rpc/rpc-client.js +26 -10
  103. package/dist/rpc/rpc-client.js.map +1 -1
  104. package/dist/rpc/rpc-methods.d.ts +0 -7
  105. package/dist/rpc/rpc-methods.d.ts.map +1 -1
  106. package/dist/rpc/rpc-methods.js +0 -7
  107. package/dist/rpc/rpc-methods.js.map +1 -1
  108. package/dist/services/ask-maps.js +1 -1
  109. package/dist/services/ask-maps.js.map +1 -1
  110. package/dist/services/directions.d.ts +3 -8
  111. package/dist/services/directions.d.ts.map +1 -1
  112. package/dist/services/directions.js +37 -13
  113. package/dist/services/directions.js.map +1 -1
  114. package/dist/services/geocode.js +1 -1
  115. package/dist/services/photos.d.ts.map +1 -1
  116. package/dist/services/photos.js +2 -5
  117. package/dist/services/photos.js.map +1 -1
  118. package/dist/services/places.d.ts.map +1 -1
  119. package/dist/services/places.js +13 -4
  120. package/dist/services/places.js.map +1 -1
  121. package/dist/services/reviews.d.ts +7 -0
  122. package/dist/services/reviews.d.ts.map +1 -1
  123. package/dist/services/reviews.js +10 -1
  124. package/dist/services/reviews.js.map +1 -1
  125. package/dist/services/search.d.ts +7 -5
  126. package/dist/services/search.d.ts.map +1 -1
  127. package/dist/services/search.js +46 -17
  128. package/dist/services/search.js.map +1 -1
  129. package/dist/services/ugc-aggregates.d.ts.map +1 -1
  130. package/dist/services/ugc-aggregates.js +1 -17
  131. package/dist/services/ugc-aggregates.js.map +1 -1
  132. package/dist/types/common.d.ts +92 -6
  133. package/dist/types/common.d.ts.map +1 -1
  134. package/dist/types/common.js +12 -0
  135. package/dist/types/common.js.map +1 -1
  136. package/dist/types/directions.d.ts +16 -2
  137. package/dist/types/directions.d.ts.map +1 -1
  138. package/dist/types/dx.d.ts +289 -0
  139. package/dist/types/dx.d.ts.map +1 -0
  140. package/dist/types/dx.js +7 -0
  141. package/dist/types/dx.js.map +1 -0
  142. package/dist/types/hooks.d.ts +48 -0
  143. package/dist/types/hooks.d.ts.map +1 -0
  144. package/dist/types/hooks.js +5 -0
  145. package/dist/types/hooks.js.map +1 -0
  146. package/dist/utils/abort.d.ts +7 -0
  147. package/dist/utils/abort.d.ts.map +1 -0
  148. package/dist/utils/abort.js +43 -0
  149. package/dist/utils/abort.js.map +1 -0
  150. package/dist/utils/coords.d.ts +24 -0
  151. package/dist/utils/coords.d.ts.map +1 -0
  152. package/dist/utils/coords.js +37 -0
  153. package/dist/utils/coords.js.map +1 -0
  154. package/dist/utils/export-results.d.ts +24 -0
  155. package/dist/utils/export-results.d.ts.map +1 -0
  156. package/dist/utils/export-results.js +105 -0
  157. package/dist/utils/export-results.js.map +1 -0
  158. package/dist/utils/hooks.d.ts +10 -0
  159. package/dist/utils/hooks.d.ts.map +1 -0
  160. package/dist/utils/hooks.js +47 -0
  161. package/dist/utils/hooks.js.map +1 -0
  162. package/dist/utils/place-ref.d.ts +39 -0
  163. package/dist/utils/place-ref.d.ts.map +1 -0
  164. package/dist/utils/place-ref.js +109 -0
  165. package/dist/utils/place-ref.js.map +1 -0
  166. package/dist/utils/pooled.d.ts +2 -0
  167. package/dist/utils/pooled.d.ts.map +1 -1
  168. package/dist/utils/pooled.js +8 -0
  169. package/dist/utils/pooled.js.map +1 -1
  170. package/dist/utils/request-context.d.ts +9 -0
  171. package/dist/utils/request-context.d.ts.map +1 -0
  172. package/dist/utils/request-context.js +12 -0
  173. package/dist/utils/request-context.js.map +1 -0
  174. package/dist/utils/ttl-cache.d.ts +17 -0
  175. package/dist/utils/ttl-cache.d.ts.map +1 -0
  176. package/dist/utils/ttl-cache.js +43 -0
  177. package/dist/utils/ttl-cache.js.map +1 -0
  178. package/package.json +27 -12
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="./assets/banner.png" alt="googlemaps-kit — TypeScript SDK for Google Maps consumer surfaces" width="2048" style="max-width: 100%; height: auto;">
2
+ <img src="./assets/banner.png" alt="googlemaps-kit — TypeScript SDK for Google Maps consumer surfaces" width="1536" style="max-width: 100%; height: auto;">
3
3
  </p>
4
4
 
5
5
  # googlemaps-kit
@@ -11,12 +11,19 @@
11
11
  [![License](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
12
12
  [![Node](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](./package.json)
13
13
 
14
+ **Site:** [googlemapskit.vaandeetttt.com](https://googlemapskit.vaandeetttt.com) · **npm:** [`googlemaps-kit`](https://www.npmjs.com/package/googlemaps-kit)
15
+
16
+ Agent bootstrap (Cursor / Claude / Codex): use **Copy Agent Instruction** on the site, or:
17
+
18
+ ```bash
19
+ npx skills add KumarVandit/googlemaps-kit --skill googlemaps-kit --agent '*'
20
+ ```
21
+
14
22
  ## Overview
15
23
 
16
- Service-based client for search, places, reviews, directions, photos, geocoding, tiles,
17
- and more. Calls the same HTTP endpoints the Maps web app uses. **No Maps Platform API
18
- key. No browser or Playwright dependency** — plain `fetch` via Node (`undici`) with
19
- browser-like headers and an automatically warmed anonymous cookie jar.
24
+ Intent-first client for search, places, reviews, directions, photos, geocoding, tiles,
25
+ and more. **No Maps Platform API key. No browser dependency** — works out of the box
26
+ from Node 18+ with automatic client initialization.
20
27
 
21
28
  ## Disclaimer
22
29
 
@@ -25,231 +32,191 @@ block without notice. Intended for research and personal tooling, not bulk scrap
25
32
 
26
33
  ## How it works
27
34
 
28
- 1. **Anonymous bootstrap** — On first use, the client makes a short HTTP handshake
29
- (`google.com` → consent → Maps) and keeps **anonymous** cookies such as `NID` and
30
- `AEC`. No Google account, API key, or cookies to configure — this is bot/consent
31
- context, not user login. See `src/auth/session.ts`.
32
- 2. **API calls** — Services build request URLs and protobuf payloads, then parse JSON
33
- responses into typed results.
34
- 3. **No headless browser** — Chromium/Playwright is not used at runtime. The only
35
- exception is `passiveAssist`, which needs a viewport `psi` token you obtain outside
36
- the SDK (for example from a browser session you control).
37
-
38
- ## Features
39
-
40
- ### Search and places
41
-
42
- | Feature | Method | Example |
43
- |---------|--------|---------|
44
- | Text search | `maps.search.searchText()` | [search-text.ts](examples/search-text.ts) |
45
- | Search (full rows) | `maps.search.search()` | [search-text.ts](examples/search-text.ts) |
46
- | Search pagination | `maps.search.searchPage()` | [search-pagination.ts](examples/search-pagination.ts) |
47
- | Place details | `maps.places.get()` | [place-get.ts](examples/place-get.ts) |
48
- | Place + reviews | `maps.getPlaceFull()` | [place-full.ts](examples/place-full.ts) |
49
- | Reviews (Boq, paginated) | `maps.reviews.listAll()` | [reviews-list.ts](examples/reviews-list.ts) |
50
- | Autocomplete | `maps.suggest.suggest()` | [suggest.ts](examples/suggest.ts) |
51
- | Map-click POI | `maps.reveal.revealAtClick()` | — |
52
-
53
- `reviews.list()` tries Boq first, then embedded snippets from the place preview.
54
-
55
- ### Directions and location
56
-
57
- | Feature | Method | Example |
58
- |---------|--------|---------|
59
- | Directions | `maps.directions.get()` | [directions-get.ts](examples/directions-get.ts) |
60
- | Geocode | `maps.geocode.geocode()` | [geocode.ts](examples/geocode.ts) |
61
- | Reverse geocode | `maps.geocode.reverseGeocode()` | [geocode.ts](examples/geocode.ts) |
62
- | Timezone | `maps.timezone.get()` | — |
63
- | Distance matrix | `maps.distanceMatrix.getMatrix()` | — |
64
- | Elevation | `maps.elevation.getAtPoint()` | — |
65
-
66
- Distance matrix and elevation are **derived** by fanning out directions requests, not a
67
- single Google matrix/elevation API.
68
-
69
- ### Media and maps
70
-
71
- | Feature | Method | Notes |
72
- |---------|--------|-------|
73
- | Place photos | `maps.photos.list()` | `batchexecute` when `lat`/`lng` set; else `place_preview` |
74
- | Street View nearby | `maps.panorama.findNearby()` | Coverage tiles first |
75
- | Map tiles | `maps.tiles.getTileByLatLng()` | 256px roadmap verified |
76
- | Static map PNG | `maps.staticMap.getStaticMap()` | Stitched from `vt/proto` tiles |
77
-
78
- ### Links and lists
79
-
80
- | Feature | Method | Example |
81
- |---------|--------|---------|
82
- | Short link resolve | `maps.links.resolve()` | — |
83
- | Parse Maps URL | `parseMapsUrl()` | [maps-url.ts](examples/maps-url.ts) |
84
- | Build share link | `buildPlaceLink()`, … | [maps-url.ts](examples/maps-url.ts) |
85
- | Public place lists | `maps.lists.get()` | — |
86
-
87
- ### batchexecute
88
-
89
- | Feature | Method |
90
- |---------|--------|
91
- | Area traffic | `maps.traffic.getAreaTraffic()` |
92
- | Category taxonomy | `maps.categories.getHierarchy()` |
93
- | Category suggestions | `maps.categories.suggest()` |
94
- | Rating histogram | `maps.ugcAggregates.getPlaceAggregates()` |
95
- | URL decode | `maps.batchUrl.decode()` |
96
- | Short URL create | `maps.batchUrl.createShortUrl()` |
97
- | Transit departures | `maps.transit.getStationDepartures()` |
98
-
99
- Traffic, UGC aggregates, and batchexecute photo galleries resolve a Maps session `psi`
100
- from the warmed HTTP session when you do not pass one.
101
-
102
- Low-level RPC builders and parsers: `import from 'googlemaps-kit/internal'`.
103
-
104
- ## Installation
105
-
106
- ```bash
107
- npm install googlemaps-kit
108
- ```
109
-
110
- **Requirements:** Node.js >= 18
35
+ 1. **Zero config** — `sdk()` initializes automatically; no API keys or
36
+ manual setup.
37
+ 2. **Same surfaces as Maps** — Search, place details, reviews, directions, and photos
38
+ use the same HTTP and RPC paths as the Maps web app, merged into typed results.
39
+ 3. **Intent + namespaces** — call `discover` / `profile` / `route` for common flows, or
40
+ use domain namespaces (`places`, `travel`, `map`, …) for full control.
41
+ 4. **No headless browser** — except `passiveAssist`, which needs a viewport token you
42
+ supply externally.
111
43
 
112
- **From source:**
44
+ ## Quick start
113
45
 
114
46
  ```bash
115
- git clone https://github.com/KumarVandit/googlemaps-kit.git
116
- cd googlemaps-kit
117
- npm install && npm run build
47
+ npm install googlemaps-kit
118
48
  ```
119
49
 
120
- ## Quick start
121
-
122
50
  ```typescript
123
- import { createGMapsClient } from 'googlemaps-kit';
51
+ import { sdk } from 'googlemaps-kit';
124
52
 
125
- const maps = createGMapsClient({ hl: 'en', gl: 'in' });
53
+ const maps = sdk({
54
+ locale: { hl: 'en', gl: 'in' },
55
+ });
126
56
 
127
- const { places } = await maps.search.searchText({
57
+ const { places } = await maps.discover({
128
58
  query: 'cafes in indiranagar',
129
- location: { lat: 12.98, lng: 77.64 },
130
- limit: 5,
59
+ near: { lat: 12.98, lng: 77.64 },
131
60
  });
132
61
 
133
62
  const top = places[0]!;
134
- const place = await maps.places.get({
135
- hexId: top.hexId!,
136
- name: top.name,
137
- lat: top.latitude ?? 12.98,
138
- lng: top.longitude ?? 77.64,
139
- mode: 'rich',
140
- });
141
-
142
- const reviews = await maps.reviews.listAll({
143
- hexId: place.hexId!,
144
- limit: 10,
145
- maxPages: 1,
146
- });
63
+ const { place } = await maps.profile(top, { depth: 'card' });
64
+ const reviews = await maps.opinions(top, { pages: 1 });
147
65
 
148
66
  console.log(place.name, place.rating, reviews.reviews.length, 'reviews');
149
67
  ```
150
68
 
151
- From a git checkout:
69
+ ## Package layout
70
+
71
+ | Import | Use for |
72
+ |--------|---------|
73
+ | `googlemaps-kit` | Apps & agents — `sdk()`, Intent API, namespaces, result types |
74
+ | `googlemaps-kit/advanced` | Under the hood — HTTP client, protobuf builders, RPC, parsers |
75
+
76
+ ## Intent API
77
+
78
+ | Method | Input | Output | Latency notes |
79
+ |--------|-------|--------|---------------|
80
+ | `discover({ query, near })` | query + coords (`near` or `location`) | `{ places, timingMs, mode, pagination }` | Default `mode:'fast'` ~400 ms; pass `offset` to paginate |
81
+ | `discoverPages(…)` | same + `maxPages` | async iterable of `DiscoverResult` | Streams pages; dedupes across pages |
82
+ | `resolve({ query \| url, near? })` | text or URL | `{ hexId?, name?, lat?, lng?, source }` | Identity only — check `hexId` before `profile` |
83
+ | `profile(ref, { depth? })` | PlaceRef | `{ place, depth, reviews?, … }` | Use **`place.name`** (not top-level `.name`) |
84
+ | `profileMany(refs)` | PlaceRef[] | `PlaceProfile[]` | Bounded concurrency + `onProgress` |
85
+ | `route({ from, to })` | coords / address / PlaceRef | DirectionsResult | Default metrics only |
86
+ | `opinions(ref)` | PlaceRef | ReviewsResult | `reviewCount` = page size; `totalReviews` needs aggregates |
87
+ | `opinionsPages(ref)` | PlaceRef | async iterable of review pages | Streams Boq pages |
88
+ | `media(ref)` | PlaceRef | `{ photos[], photoCount, nextPageToken? }` | Flat `PlacePhoto[]` |
89
+ | `mediaMany(refs)` | PlaceRef[] | `MediaResult[]` | Bounded concurrency |
90
+ | `pipeline({ discover, … })` | discover + optional profile/opinions | enriched rows | One-shot lead scrape |
91
+ | `tools()` | — | agent tool map | Same as `createMapsTools(maps)` |
92
+ | `capabilities()` | — | capability flags | Async; cookie presence only |
93
+
94
+ ### Common mistakes
95
+
96
+ | Mistake | Do this instead |
97
+ |---------|-----------------|
98
+ | `const p = await maps.profile(…); p.name` | `p.place.name` |
99
+ | `route({ from: hexId })` | Pass coords or address — bare ids need lat/lng |
100
+ | `reviews.reviewCount` as place total | Use `totalReviews` with `includeAggregates: true` |
101
+ | `place.photos[0].normalizedUrl` after `profile` | Profile photos are URL strings; use `media()` for `PlacePhoto` |
102
+ | `session: 'authenticated'` without cookies | Throws at create — cookies are the real gate |
103
+
104
+ ## Namespaces
105
+
106
+ | Namespace | Contains |
107
+ |-----------|----------|
108
+ | `maps.places` | `search`, `suggest`, `details`, `get()`, `reviews`, `photos`, `knowledge`, `localPosts` |
109
+ | `maps.location` | `geocode`, `timezone`, `reveal`, `passiveAssist` |
110
+ | `maps.travel` | `directions`, `distanceMatrix`, `elevation`, `transit`, `traffic` |
111
+ | `maps.map` | `tiles`, `staticMap`, `panorama` |
112
+ | `maps.meta` | `categories`, `ugcAggregates`, `lists`, `links`, `batchUrl` |
113
+ | `maps.agent` | `ask()`, `askMaps` (signed-in) |
114
+ | `maps.auth` | `status()`, `summarize()` |
115
+ | `maps.surfaces` | `list()`, `working()`, `get(name)` |
152
116
 
153
- ```bash
154
- npm run example:quick-start
117
+ ```typescript
118
+ await maps.places.search.searchText({ query: 'coffee', near, mode: 'fast' });
119
+ await maps.travel.directions.get({ origin: 'A', destination: 'B' });
120
+ await maps.location.geocode.geocode('HSR Layout, Bengaluru');
155
121
  ```
156
122
 
123
+ ## Auth tiers
124
+
125
+ | Tier | How | Unlocks |
126
+ |------|-----|---------|
127
+ | **Anonymous** (default) | Session warms itself | Search, places, Boq reviews, photos, directions, traffic, categories |
128
+ | **Authenticated** | `cookies` / `GMAPS_COOKIES` | Ask Maps, `reviews` `source:'rpc'`, private lists |
129
+
130
+ Signed-in surfaces throw `AuthRequiredError` when cookies are missing.
131
+
157
132
  ## Configuration
158
133
 
159
- `createGMapsClient()` loads `.env.local` then `.env` from the working directory
160
- (see `loadProjectEnv()`). Existing `process.env` values are not overwritten.
134
+ `sdk()` loads `.env.local` then `.env` from the working directory.
161
135
 
162
136
  | Option | Env var | Default | Description |
163
137
  |--------|---------|---------|-------------|
164
- | `hl` | `GMAPS_HL` | `en` | Language |
165
- | `gl` | `GMAPS_GL` | `us` | Region |
138
+ | `locale.hl` / `hl` | `GMAPS_HL` | `en` | Language |
139
+ | `locale.gl` / `gl` | `GMAPS_GL` | `us` | Region |
140
+ | `session` | — | `anonymous` | Capability profile |
141
+ | `cookies` | `GMAPS_COOKIES` | — | Optional signed-in cookie string |
142
+ | `performance.mode` | — | `fast` | Default `discover()` search mode |
166
143
  | `requestDelayMs` | `GMAPS_REQUEST_DELAY_MS` | `0` | Min delay between request starts |
167
144
  | `concurrency` | `GMAPS_CONCURRENCY` | `6` | Max parallel in-flight requests |
168
- | `debug` | — | `false` | Log requests/responses (pass in config, not an env var) |
169
- | `maxRetries` | — | `2` | Retries on transient failures |
170
- | `retryDelay` | — | `500` | Base retry delay (ms) |
145
+ | `debug` | `GMAPS_DEBUG` | `false` | Log requests/responses |
146
+ | `hooks` | — | — | `onAction` / `onRetry` / `onError` lifecycle callbacks |
147
+ | `cache` | — | off | Optional TTL cache for `discover` / `profile` (card) |
171
148
 
172
- Copy [`.env.example`](./.env.example) to `.env.local` for local overrides.
149
+ ## DX extras
173
150
 
174
- ## Client
151
+ ```typescript
152
+ const maps = sdk({
153
+ hooks: {
154
+ onAction: ({ type, status, durationMs }) => console.log(type, status, durationMs),
155
+ },
156
+ cache: { ttlMs: 60_000 },
157
+ });
175
158
 
176
- `createGMapsClient()` exposes **24 services**:
159
+ // cancel in-flight work
160
+ const ac = new AbortController();
161
+ await maps.discover({ query: 'coffee', near, signal: ac.signal });
177
162
 
178
- `search`, `places`, `reviews`, `directions`, `geocode`, `distanceMatrix`, `elevation`,
179
- `timezone`, `staticMap`, `suggest`, `panorama`, `tiles`, `lists`, `photos`, `links`,
180
- `traffic`, `transit`, `categories`, `ugcAggregates`, `batchUrl`, `knowledge`,
181
- `localPosts`, `reveal`, `passiveAssist`
163
+ // stream pages
164
+ for await (const page of maps.discoverPages({ query: 'coffee', near, maxPages: 3 })) {
165
+ console.log(page.places.length, page.pagination.hasMore);
166
+ }
182
167
 
183
- **Convenience methods on the client:** `getPlaceFull`, `getPlaceComplete`, `getDirections`,
184
- `searchEnriched`, `getHttpStats()`
168
+ // batch + pipeline
169
+ await maps.profileMany(hits, { concurrency: 4, onProgress: console.log });
170
+ await maps.pipeline({ discover: { query: 'coffee', near }, maxPlaces: 5, profile: { depth: 'card' } });
185
171
 
186
- **Advanced (lazy-loaded):** `rpc()`, `features()`, `runtime()`
172
+ // agent tools
173
+ const tools = maps.tools(); // or createMapsTools(maps)
174
+ await tools.discover.execute({ query: 'coffee', nearLat: near.lat, nearLng: near.lng });
175
+ ```
187
176
 
188
- **Standalone exports:** `parseMapsUrl`, `buildPlaceLink`, `encodePolyline`,
189
- `decodeEncodedPolyline`, error classes, and domain types.
177
+ CLI (JSON by default):
190
178
 
191
- ## Error handling
179
+ ```bash
180
+ npx googlemaps-kit discover "cafes" --near 12.98,77.64
181
+ npx googlemaps-kit profile 0x…:0x… --depth card
182
+ npx googlemaps-kit resolve --query "Indiranagar"
183
+ ```
184
+
185
+ Export helpers: `toCsv(places)`, `toGeoJSON(places)`.
186
+
187
+ ## Advanced (under the hood)
188
+
189
+ When you need protobuf `pb=` builders, batchexecute RPC IDs, or raw parsers:
192
190
 
193
191
  ```typescript
194
192
  import {
195
- createGMapsClient,
196
- GMapsThrottleError,
197
- GMapsPhotosBlockedError,
198
- GMapsEmptyPayloadError,
199
- } from 'googlemaps-kit';
200
-
201
- const maps = createGMapsClient();
202
-
203
- try {
204
- await maps.photos.list({
205
- hexId: '0x…',
206
- lat: 12.91,
207
- lng: 77.65,
208
- source: 'listentityphotos', // GET RPC; often blocked
209
- });
210
- } catch (error) {
211
- if (error instanceof GMapsThrottleError) {
212
- // Back off (client also retries with jitter)
213
- } else if (error instanceof GMapsPhotosBlockedError) {
214
- // Prefer default source or `source: 'batchexecute'`
215
- } else if (error instanceof GMapsEmptyPayloadError) {
216
- // HTTP 200 but empty/stub body
217
- }
218
- }
193
+ HttpClient,
194
+ buildSearchPb,
195
+ extractBusinesses,
196
+ BATCH_EXECUTE_PATH,
197
+ } from 'googlemaps-kit/advanced';
219
198
  ```
220
199
 
221
- ## Best practices
222
-
223
- - Set `requestDelayMs` and `concurrency` for scheduled or high-volume jobs.
224
- - Under load, Google may return **HTTP 200 with truncated payloads** (fewer photos, missing
225
- `reviewCount`). Check field presence, not status codes alone.
226
- - Pass `lat` and `lng` to `maps.photos.list()` for batchexecute galleries with metadata;
227
- without coordinates it uses place preview URLs only.
228
- - Avoid `source: 'listentityphotos'`; many IPs get an abuse block (`GMapsPhotosBlockedError`).
229
- - `distanceMatrix.getMatrix()` costs **N×M directions requests** (deduped, bounded concurrency).
230
- - First batchexecute call may warm the session; empty 200 responses often mean the jar was
231
- not warmed yet, not that the place has no data.
200
+ Organized modules: HTTP transport, auth/session, RPC/protobuf, parsers, service classes.
232
201
 
233
202
  ## Limitations
234
203
 
235
- - Unofficial reverse-engineered surfaces; no stability guarantee.
236
- - No logged-in Google account support in the public API.
237
- - `knowledge.get()` uses place-preview fields as fallback (not a live knowledge-graph RPC).
238
- - `localPosts.list()` is unverified (sampled businesses returned empty payloads).
239
- - `passiveAssist.getViewportChips()` requires a viewport `psi` you supply; the SDK does not
240
- open a browser.
241
- - Map tiles: 256px roadmap layer verified; other layers/sizes may return HTTP 400.
242
- - Bicycling directions are sparse in some regions.
204
+ - Undocumented consumer surfaces; no stability guarantee.
205
+ - Signed-in features need cookies you supply — the kit does not perform Google login.
206
+ - `passiveAssist` needs a viewport `psi` you supply externally.
207
+ - Map tiles: 256px roadmap layer verified; other layers may return HTTP 400.
243
208
 
244
209
  ## Development
245
210
 
246
211
  ```bash
247
212
  npm test
248
213
  npm run build
249
- npm run examples:all # build + run every public example (live network)
250
- npm run verify:all # live HTTP checks against Google
214
+ npm run examples:all
215
+ npm run verify:all
251
216
  ```
252
217
 
218
+ **Website:** [googlemapskit.vaandeetttt.com](https://googlemapskit.vaandeetttt.com)
219
+
253
220
  ## License
254
221
 
255
222
  MIT
package/assets/banner.png CHANGED
Binary file
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Session bootstrap, cookies, and auth headers.
3
+ */
4
+ export { bootstrapSession, buildBrowserHeaders, clearSessionCache, randomUserAgent, cookiesToHeader, DEFAULT_SOCS, getCachedSession, } from '../auth/session.js';
5
+ export type { CookieJarState } from '../auth/session.js';
6
+ export { AuthService, summarizeAuthStatus } from '../auth/auth-status.js';
7
+ export type { AuthStatusOptions } from '../auth/auth-status.js';
8
+ export { buildGoogleAuthorization, buildAuthenticatedHeaders, } from '../auth/google-auth.js';
9
+ export { extractMapsPageTokens } from '../auth/maps-tokens.js';
10
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/advanced/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC1E,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EACL,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Session bootstrap, cookies, and auth headers.
3
+ */
4
+ export { bootstrapSession, buildBrowserHeaders, clearSessionCache, randomUserAgent, cookiesToHeader, DEFAULT_SOCS, getCachedSession, } from '../auth/session.js';
5
+ export { AuthService, summarizeAuthStatus } from '../auth/auth-status.js';
6
+ export { buildGoogleAuthorization, buildAuthenticatedHeaders, } from '../auth/google-auth.js';
7
+ export { extractMapsPageTokens } from '../auth/maps-tokens.js';
8
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/advanced/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG1E,OAAO,EACL,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * HTTP transport for Maps consumer surfaces.
3
+ */
4
+ export { HttpClient } from '../client/http-client.js';
5
+ export type { HttpClientStats } from '../client/http-client.js';
6
+ export { RequestScheduler } from '../utils/request-scheduler.js';
7
+ export { parseGoogleResponse, isValidResponseBody } from '../utils/response-parser.js';
8
+ export { isListUgcUnauthenticatedStub, isBatchAuthStub, isEmptySuccessPayload, classifyThrottleFailure, } from '../utils/throttle-detection.js';
9
+ export { backoffWithJitter, parseRetryAfterMs } from '../utils/retry-backoff.js';
10
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/advanced/http.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EACL,4BAA4B,EAC5B,eAAe,EACf,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * HTTP transport for Maps consumer surfaces.
3
+ */
4
+ export { HttpClient } from '../client/http-client.js';
5
+ export { RequestScheduler } from '../utils/request-scheduler.js';
6
+ export { parseGoogleResponse, isValidResponseBody } from '../utils/response-parser.js';
7
+ export { isListUgcUnauthenticatedStub, isBatchAuthStub, isEmptySuccessPayload, classifyThrottleFailure, } from '../utils/throttle-detection.js';
8
+ export { backoffWithJitter, parseRetryAfterMs } from '../utils/retry-backoff.js';
9
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/advanced/http.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EACL,4BAA4B,EAC5B,eAAe,EACf,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Response parsers for Maps consumer payloads.
3
+ */
4
+ export { extractSuggestions } from '../parsers/suggest.js';
5
+ export { extractRevealPlace } from '../parsers/reveal.js';
6
+ export { extractCoveragePanoramas, extractNearbyPanoramas, extractPanoramaMetadata, isPanoramaMetadataStub, } from '../parsers/panorama.js';
7
+ export { findPngOffset, unwrapTilePng, readPngDimensions, isPngBytes, } from '../parsers/tiles.js';
8
+ export { extractPlaceList, detectListErrorEnvelope, parseListIdFromInput, } from '../parsers/lists.js';
9
+ export { extractPlacePhotos, extractPlacePreviewPhotos, resizePhotoUrl } from '../parsers/photos.js';
10
+ export { parseMapsUrl, isShortMapsLink } from '../parsers/maps-url.js';
11
+ export { extractBusinesses } from '../parsers/search.js';
12
+ export { extractGeocodeResults, toGeocodeResponse } from '../parsers/geocode.js';
13
+ export { extractPlaceDetails, extractEmbeddedReviews, extractPhotosDeep, } from '../parsers/place.js';
14
+ export { extractOpeningSchedule, extractAttributeGroups, extractAccessibilityFeatures, extractPlaceAggregateAttributes, extractPlusCode, extractTimezone, flattenAttributeLabels, } from '../parsers/place-attributes.js';
15
+ export { extractListUgcReviews } from '../parsers/reviews.js';
16
+ export { extractBoqReviews } from '../parsers/boq-reviews.js';
17
+ export { applyReviewClientFilters } from '../parsers/review-client-filters.js';
18
+ export { placeAggregatesToRatingDistribution, sumRatingDistribution, } from '../parsers/review-aggregates.js';
19
+ export { extractLocalPosts } from '../parsers/local-posts.js';
20
+ export { extractKnowledgeEntity, extractKnowledgeFromPlaceDetails } from '../parsers/knowledge.js';
21
+ export { extractDirections } from '../parsers/directions.js';
22
+ export { extractSearchPagination } from '../parsers/search-pagination.js';
23
+ export type { SearchPaginationMeta } from '../parsers/search-pagination.js';
24
+ export { parseReviewCount, parseReviewCountFromBlock, parsePriceRange, parseWebsiteFromContact, collectHourDayEntries, } from '../parsers/shared.js';
25
+ export type { HourDayEntry, RatingBlockNode } from '../parsers/shared.js';
26
+ export { asPlaceDataNode, asSearchRoot, asPreviewResponse, asBoqRoot, asListUgcRoot, } from '../types/protobuf.js';
27
+ export type { PbNode, PlaceDataNode, MapsPreviewPlaceResponse, SearchMapResponseRoot, BoqReviewsResponseRoot, ListUgcReviewsResponseRoot, DirectionsPreviewResponse, KnowledgeEntityResponse, } from '../types/protobuf.js';
28
+ //# sourceMappingURL=parsers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../src/advanced/parsers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,UAAU,GACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrG,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,EAC5B,+BAA+B,EAC/B,eAAe,EACf,eAAe,EACf,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EACL,mCAAmC,EACnC,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,gCAAgC,EAAE,MAAM,yBAAyB,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,YAAY,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,EACf,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,EACL,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,MAAM,EACN,aAAa,EACb,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Response parsers for Maps consumer payloads.
3
+ */
4
+ export { extractSuggestions } from '../parsers/suggest.js';
5
+ export { extractRevealPlace } from '../parsers/reveal.js';
6
+ export { extractCoveragePanoramas, extractNearbyPanoramas, extractPanoramaMetadata, isPanoramaMetadataStub, } from '../parsers/panorama.js';
7
+ export { findPngOffset, unwrapTilePng, readPngDimensions, isPngBytes, } from '../parsers/tiles.js';
8
+ export { extractPlaceList, detectListErrorEnvelope, parseListIdFromInput, } from '../parsers/lists.js';
9
+ export { extractPlacePhotos, extractPlacePreviewPhotos, resizePhotoUrl } from '../parsers/photos.js';
10
+ export { parseMapsUrl, isShortMapsLink } from '../parsers/maps-url.js';
11
+ export { extractBusinesses } from '../parsers/search.js';
12
+ export { extractGeocodeResults, toGeocodeResponse } from '../parsers/geocode.js';
13
+ export { extractPlaceDetails, extractEmbeddedReviews, extractPhotosDeep, } from '../parsers/place.js';
14
+ export { extractOpeningSchedule, extractAttributeGroups, extractAccessibilityFeatures, extractPlaceAggregateAttributes, extractPlusCode, extractTimezone, flattenAttributeLabels, } from '../parsers/place-attributes.js';
15
+ export { extractListUgcReviews } from '../parsers/reviews.js';
16
+ export { extractBoqReviews } from '../parsers/boq-reviews.js';
17
+ export { applyReviewClientFilters } from '../parsers/review-client-filters.js';
18
+ export { placeAggregatesToRatingDistribution, sumRatingDistribution, } from '../parsers/review-aggregates.js';
19
+ export { extractLocalPosts } from '../parsers/local-posts.js';
20
+ export { extractKnowledgeEntity, extractKnowledgeFromPlaceDetails } from '../parsers/knowledge.js';
21
+ export { extractDirections } from '../parsers/directions.js';
22
+ export { extractSearchPagination } from '../parsers/search-pagination.js';
23
+ export { parseReviewCount, parseReviewCountFromBlock, parsePriceRange, parseWebsiteFromContact, collectHourDayEntries, } from '../parsers/shared.js';
24
+ export { asPlaceDataNode, asSearchRoot, asPreviewResponse, asBoqRoot, asListUgcRoot, } from '../types/protobuf.js';
25
+ //# sourceMappingURL=parsers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../src/advanced/parsers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,UAAU,GACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrG,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,EAC5B,+BAA+B,EAC/B,eAAe,EACf,eAAe,EACf,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EACL,mCAAmC,EACnC,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,gCAAgC,EAAE,MAAM,yBAAyB,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,EACf,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,aAAa,GACd,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Protobuf URL builders, batchexecute RPC, and Maps wire constants.
3
+ */
4
+ export { BATCH_SERVICES, BATCH_SERVICE_RPCIDS } from '../rpc/batch-services.js';
5
+ export { buildAreaTrafficArgs, buildPlaceUgcAggregatesArgs, buildListEntityPhotosBatchArgs, } from '../rpc/batch-request-builders.js';
6
+ export { buildSuggestCameraPb, buildSuggestUrl } from '../rpc/suggest-pb.js';
7
+ export { buildRevealPb, buildRevealUrl, normalizeRevealFtid } from '../rpc/reveal-pb.js';
8
+ export { buildListEntityPhotosPb, buildListEntityPhotosUrl, buildPhotometaPb, buildPhotometaUrl, buildCoverageTilePb, buildCoverageTileUrl, buildThumbnailUrl, buildTileUrl, } from '../rpc/panorama-pb.js';
9
+ export { buildMapTilePb, buildMapTileUrl, buildIconUrl, DEFAULT_MAP_TILE_VERSION, DEFAULT_POI_ICON, } from '../rpc/tiles-pb.js';
10
+ export { buildGetListPb, buildGetListUrl } from '../rpc/lists-pb.js';
11
+ export { buildPlacePhotosPb, buildPlacePhotosUrl } from '../rpc/photos-pb.js';
12
+ export { CAPTURED_FOOD_CATEGORY_TOKEN, CLIENT_FILTERABLE_CATEGORIES, encodePhotoCategoryToken, filterPhotosByCategory, isClientFilterableCategory, PHOTO_TAB_ID_LABELS, } from '../rpc/photo-category-tokens.js';
13
+ export { buildSearchPb, buildSearchUrl, buildPlaceDetailPb, buildPlaceRichPb, buildPlaceUrl, buildReviewsPb, buildReviewsUrl, buildLocalPostsPb, buildLocalPostsUrl, buildDirectionsPb, buildDirectionsUrls, buildKnowledgePbVariants, buildKnowledgeUrl, } from '../rpc/pb-builders.js';
14
+ export type { PlacePbMode } from '../rpc/pb-builders.js';
15
+ export { BatchExecuteClient } from '../rpc/batch-execute.js';
16
+ export { GMapsRpcClient } from '../rpc/rpc-client.js';
17
+ export type { GMapsRpcClientConfig } from '../rpc/rpc-client.js';
18
+ export { MapsRuntime } from '../rpc/maps-runtime.js';
19
+ export type { MapsJsBundleInfo, MapsRuntimeSnapshot } from '../rpc/maps-runtime.js';
20
+ export { buildEndpointRegistry, extractClosureModuleIds, extractModuleManifest, extractPathsFromHtml, extractProtoServiceIds, parseMapsPageTokens, extractAppOptionsPsi, } from '../rpc/app-options.js';
21
+ export { MAPS_WIZ_UI_APP, MAPS_WIZ_UI_PATH, BATCH_EXECUTE_PATH, RPC_LIST_UGC_POSTS, RPC_INFRA, FEATURE_RPC, MAPS_AI_AGENT_RPC, PREVIEW, RPC_HTTP, SERVICE_GET_LOCAL_BOQ_PROXY, BOQ_PROXY_MSC, REVIEW_SORT, PROTO_SERVICE_IDS, INITIAL_MODULES, } from '../rpc/rpc-methods.js';
22
+ export { encodeRpcId, decodeRpcId, isNxaRpcId } from '../rpc/nxa.js';
23
+ export { getDescriptorRegistry, getRpcMethodById, getRpcMethodByField, getFeatureService, listFeatureServices, listMapsAiAgentRpcIds, resolveSemanticSurface, describeRpcId, } from '../rpc/descriptor-registry.js';
24
+ export type { RpcMethodDescriptor, FeatureServiceDescriptor, DescriptorRegistry, } from '../rpc/descriptor-registry.js';
25
+ export { FeatureRpcService, createFeatureRpcService } from '../rpc/feature-rpc.js';
26
+ export type { FeatureRpcName, FeatureRpcCallOptions } from '../rpc/feature-rpc.js';
27
+ export { buildBoqReviewsPayload, buildBoqReviewsUrl } from '../rpc/boq-reviews.js';
28
+ export type { BoqReviewsRequest } from '../rpc/boq-reviews.js';
29
+ //# sourceMappingURL=rpc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/advanced/rpc.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACzF,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,GACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,EACd,eAAe,EACf,YAAY,EACZ,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,OAAO,EACP,QAAQ,EACR,2BAA2B,EAC3B,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,GACd,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACnF,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACnF,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Protobuf URL builders, batchexecute RPC, and Maps wire constants.
3
+ */
4
+ export { BATCH_SERVICES, BATCH_SERVICE_RPCIDS } from '../rpc/batch-services.js';
5
+ export { buildAreaTrafficArgs, buildPlaceUgcAggregatesArgs, buildListEntityPhotosBatchArgs, } from '../rpc/batch-request-builders.js';
6
+ export { buildSuggestCameraPb, buildSuggestUrl } from '../rpc/suggest-pb.js';
7
+ export { buildRevealPb, buildRevealUrl, normalizeRevealFtid } from '../rpc/reveal-pb.js';
8
+ export { buildListEntityPhotosPb, buildListEntityPhotosUrl, buildPhotometaPb, buildPhotometaUrl, buildCoverageTilePb, buildCoverageTileUrl, buildThumbnailUrl, buildTileUrl, } from '../rpc/panorama-pb.js';
9
+ export { buildMapTilePb, buildMapTileUrl, buildIconUrl, DEFAULT_MAP_TILE_VERSION, DEFAULT_POI_ICON, } from '../rpc/tiles-pb.js';
10
+ export { buildGetListPb, buildGetListUrl } from '../rpc/lists-pb.js';
11
+ export { buildPlacePhotosPb, buildPlacePhotosUrl } from '../rpc/photos-pb.js';
12
+ export { CAPTURED_FOOD_CATEGORY_TOKEN, CLIENT_FILTERABLE_CATEGORIES, encodePhotoCategoryToken, filterPhotosByCategory, isClientFilterableCategory, PHOTO_TAB_ID_LABELS, } from '../rpc/photo-category-tokens.js';
13
+ export { buildSearchPb, buildSearchUrl, buildPlaceDetailPb, buildPlaceRichPb, buildPlaceUrl, buildReviewsPb, buildReviewsUrl, buildLocalPostsPb, buildLocalPostsUrl, buildDirectionsPb, buildDirectionsUrls, buildKnowledgePbVariants, buildKnowledgeUrl, } from '../rpc/pb-builders.js';
14
+ export { BatchExecuteClient } from '../rpc/batch-execute.js';
15
+ export { GMapsRpcClient } from '../rpc/rpc-client.js';
16
+ export { MapsRuntime } from '../rpc/maps-runtime.js';
17
+ export { buildEndpointRegistry, extractClosureModuleIds, extractModuleManifest, extractPathsFromHtml, extractProtoServiceIds, parseMapsPageTokens, extractAppOptionsPsi, } from '../rpc/app-options.js';
18
+ export { MAPS_WIZ_UI_APP, MAPS_WIZ_UI_PATH, BATCH_EXECUTE_PATH, RPC_LIST_UGC_POSTS, RPC_INFRA, FEATURE_RPC, MAPS_AI_AGENT_RPC, PREVIEW, RPC_HTTP, SERVICE_GET_LOCAL_BOQ_PROXY, BOQ_PROXY_MSC, REVIEW_SORT, PROTO_SERVICE_IDS, INITIAL_MODULES, } from '../rpc/rpc-methods.js';
19
+ export { encodeRpcId, decodeRpcId, isNxaRpcId } from '../rpc/nxa.js';
20
+ export { getDescriptorRegistry, getRpcMethodById, getRpcMethodByField, getFeatureService, listFeatureServices, listMapsAiAgentRpcIds, resolveSemanticSurface, describeRpcId, } from '../rpc/descriptor-registry.js';
21
+ export { FeatureRpcService, createFeatureRpcService } from '../rpc/feature-rpc.js';
22
+ export { buildBoqReviewsPayload, buildBoqReviewsUrl } from '../rpc/boq-reviews.js';
23
+ //# sourceMappingURL=rpc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../src/advanced/rpc.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACzF,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,GACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,EACd,eAAe,EACf,YAAY,EACZ,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,OAAO,EACP,QAAQ,EACR,2BAA2B,EAC3B,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,GACd,MAAM,+BAA+B,CAAC;AAMvC,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEnF,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}