googlemaps-kit 0.1.3 → 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.
- package/README.md +146 -179
- package/dist/advanced/auth.d.ts +10 -0
- package/dist/advanced/auth.d.ts.map +1 -0
- package/dist/advanced/auth.js +8 -0
- package/dist/advanced/auth.js.map +1 -0
- package/dist/advanced/http.d.ts +10 -0
- package/dist/advanced/http.d.ts.map +1 -0
- package/dist/advanced/http.js +9 -0
- package/dist/advanced/http.js.map +1 -0
- package/dist/advanced/parsers.d.ts +28 -0
- package/dist/advanced/parsers.d.ts.map +1 -0
- package/dist/advanced/parsers.js +25 -0
- package/dist/advanced/parsers.js.map +1 -0
- package/dist/advanced/rpc.d.ts +29 -0
- package/dist/advanced/rpc.d.ts.map +1 -0
- package/dist/advanced/rpc.js +23 -0
- package/dist/advanced/rpc.js.map +1 -0
- package/dist/advanced/services.d.ts +34 -0
- package/dist/advanced/services.d.ts.map +1 -0
- package/dist/advanced/services.js +29 -0
- package/dist/advanced/services.js.map +1 -0
- package/dist/advanced/utils.d.ts +15 -0
- package/dist/advanced/utils.d.ts.map +1 -0
- package/dist/advanced/utils.js +13 -0
- package/dist/advanced/utils.js.map +1 -0
- package/dist/advanced.d.ts +43 -0
- package/dist/advanced.d.ts.map +1 -0
- package/dist/advanced.js +26 -0
- package/dist/advanced.js.map +1 -0
- package/dist/auth/session.d.ts +6 -1
- package/dist/auth/session.d.ts.map +1 -1
- package/dist/auth/session.js +23 -8
- package/dist/auth/session.js.map +1 -1
- package/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +115 -0
- package/dist/cli.js.map +1 -0
- package/dist/client/gmaps-client.d.ts +91 -52
- package/dist/client/gmaps-client.d.ts.map +1 -1
- package/dist/client/gmaps-client.js +209 -109
- package/dist/client/gmaps-client.js.map +1 -1
- package/dist/client/http-client.d.ts +28 -3
- package/dist/client/http-client.d.ts.map +1 -1
- package/dist/client/http-client.js +163 -14
- package/dist/client/http-client.js.map +1 -1
- package/dist/client/intent.d.ts +75 -0
- package/dist/client/intent.d.ts.map +1 -0
- package/dist/client/intent.js +546 -0
- package/dist/client/intent.js.map +1 -0
- package/dist/client/maps-tools.d.ts +80 -0
- package/dist/client/maps-tools.d.ts.map +1 -0
- package/dist/client/maps-tools.js +187 -0
- package/dist/client/maps-tools.js.map +1 -0
- package/dist/client/namespaces.d.ts +121 -0
- package/dist/client/namespaces.d.ts.map +1 -0
- package/dist/client/namespaces.js +169 -0
- package/dist/client/namespaces.js.map +1 -0
- package/dist/client/place-enrichment.d.ts +19 -0
- package/dist/client/place-enrichment.d.ts.map +1 -0
- package/dist/client/place-enrichment.js +71 -0
- package/dist/client/place-enrichment.js.map +1 -0
- package/dist/client/product-namespaces.d.ts +30 -0
- package/dist/client/product-namespaces.d.ts.map +1 -0
- package/dist/client/product-namespaces.js +47 -0
- package/dist/client/product-namespaces.js.map +1 -0
- package/dist/index.d.ts +31 -37
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -28
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +3 -137
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +3 -94
- package/dist/internal.js.map +1 -1
- package/dist/parsers/place.d.ts.map +1 -1
- package/dist/parsers/place.js +2 -0
- package/dist/parsers/place.js.map +1 -1
- package/dist/parsers/reviews.d.ts +0 -2
- package/dist/parsers/reviews.d.ts.map +1 -1
- package/dist/parsers/reviews.js +0 -2
- package/dist/parsers/reviews.js.map +1 -1
- package/dist/parsers/search.d.ts +13 -1
- package/dist/parsers/search.d.ts.map +1 -1
- package/dist/parsers/search.js +130 -71
- package/dist/parsers/search.js.map +1 -1
- package/dist/rpc/batch-execute.d.ts.map +1 -1
- package/dist/rpc/batch-execute.js +20 -3
- package/dist/rpc/batch-execute.js.map +1 -1
- package/dist/rpc/batch-rpc.d.ts.map +1 -1
- package/dist/rpc/batch-rpc.js +5 -6
- package/dist/rpc/batch-rpc.js.map +1 -1
- package/dist/rpc/batch-services.d.ts +2 -0
- package/dist/rpc/batch-services.d.ts.map +1 -1
- package/dist/rpc/batch-services.js +4 -0
- package/dist/rpc/batch-services.js.map +1 -1
- package/dist/rpc/pb-builders.d.ts +0 -2
- package/dist/rpc/pb-builders.d.ts.map +1 -1
- package/dist/rpc/pb-builders.js +2 -5
- package/dist/rpc/pb-builders.js.map +1 -1
- package/dist/rpc/rpc-client.d.ts +6 -2
- package/dist/rpc/rpc-client.d.ts.map +1 -1
- package/dist/rpc/rpc-client.js +26 -10
- package/dist/rpc/rpc-client.js.map +1 -1
- package/dist/rpc/rpc-methods.d.ts +0 -7
- package/dist/rpc/rpc-methods.d.ts.map +1 -1
- package/dist/rpc/rpc-methods.js +0 -7
- package/dist/rpc/rpc-methods.js.map +1 -1
- package/dist/services/ask-maps.js +1 -1
- package/dist/services/ask-maps.js.map +1 -1
- package/dist/services/directions.d.ts +3 -8
- package/dist/services/directions.d.ts.map +1 -1
- package/dist/services/directions.js +37 -13
- package/dist/services/directions.js.map +1 -1
- package/dist/services/geocode.js +1 -1
- package/dist/services/photos.d.ts.map +1 -1
- package/dist/services/photos.js +2 -5
- package/dist/services/photos.js.map +1 -1
- package/dist/services/places.d.ts.map +1 -1
- package/dist/services/places.js +13 -4
- package/dist/services/places.js.map +1 -1
- package/dist/services/reviews.d.ts +7 -0
- package/dist/services/reviews.d.ts.map +1 -1
- package/dist/services/reviews.js +10 -1
- package/dist/services/reviews.js.map +1 -1
- package/dist/services/search.d.ts +7 -5
- package/dist/services/search.d.ts.map +1 -1
- package/dist/services/search.js +46 -17
- package/dist/services/search.js.map +1 -1
- package/dist/services/ugc-aggregates.d.ts.map +1 -1
- package/dist/services/ugc-aggregates.js +1 -17
- package/dist/services/ugc-aggregates.js.map +1 -1
- package/dist/types/common.d.ts +92 -6
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/common.js +12 -0
- package/dist/types/common.js.map +1 -1
- package/dist/types/directions.d.ts +16 -2
- package/dist/types/directions.d.ts.map +1 -1
- package/dist/types/dx.d.ts +289 -0
- package/dist/types/dx.d.ts.map +1 -0
- package/dist/types/dx.js +7 -0
- package/dist/types/dx.js.map +1 -0
- package/dist/types/hooks.d.ts +48 -0
- package/dist/types/hooks.d.ts.map +1 -0
- package/dist/types/hooks.js +5 -0
- package/dist/types/hooks.js.map +1 -0
- package/dist/utils/abort.d.ts +7 -0
- package/dist/utils/abort.d.ts.map +1 -0
- package/dist/utils/abort.js +43 -0
- package/dist/utils/abort.js.map +1 -0
- package/dist/utils/coords.d.ts +24 -0
- package/dist/utils/coords.d.ts.map +1 -0
- package/dist/utils/coords.js +37 -0
- package/dist/utils/coords.js.map +1 -0
- package/dist/utils/export-results.d.ts +24 -0
- package/dist/utils/export-results.d.ts.map +1 -0
- package/dist/utils/export-results.js +105 -0
- package/dist/utils/export-results.js.map +1 -0
- package/dist/utils/hooks.d.ts +10 -0
- package/dist/utils/hooks.d.ts.map +1 -0
- package/dist/utils/hooks.js +47 -0
- package/dist/utils/hooks.js.map +1 -0
- package/dist/utils/place-ref.d.ts +39 -0
- package/dist/utils/place-ref.d.ts.map +1 -0
- package/dist/utils/place-ref.js +109 -0
- package/dist/utils/place-ref.js.map +1 -0
- package/dist/utils/pooled.d.ts +2 -0
- package/dist/utils/pooled.d.ts.map +1 -1
- package/dist/utils/pooled.js +8 -0
- package/dist/utils/pooled.js.map +1 -1
- package/dist/utils/request-context.d.ts +9 -0
- package/dist/utils/request-context.d.ts.map +1 -0
- package/dist/utils/request-context.js +12 -0
- package/dist/utils/request-context.js.map +1 -0
- package/dist/utils/ttl-cache.d.ts +17 -0
- package/dist/utils/ttl-cache.d.ts.map +1 -0
- package/dist/utils/ttl-cache.js +43 -0
- package/dist/utils/ttl-cache.js.map +1 -0
- package/package.json +27 -12
package/README.md
CHANGED
|
@@ -11,12 +11,19 @@
|
|
|
11
11
|
[](./LICENSE)
|
|
12
12
|
[](./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
|
-
|
|
17
|
-
and more.
|
|
18
|
-
|
|
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. **
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
44
|
+
## Quick start
|
|
113
45
|
|
|
114
46
|
```bash
|
|
115
|
-
|
|
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 {
|
|
51
|
+
import { sdk } from 'googlemaps-kit';
|
|
124
52
|
|
|
125
|
-
const maps =
|
|
53
|
+
const maps = sdk({
|
|
54
|
+
locale: { hl: 'en', gl: 'in' },
|
|
55
|
+
});
|
|
126
56
|
|
|
127
|
-
const { places } = await maps.
|
|
57
|
+
const { places } = await maps.discover({
|
|
128
58
|
query: 'cafes in indiranagar',
|
|
129
|
-
|
|
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.
|
|
135
|
-
|
|
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
|
-
|
|
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
|
-
```
|
|
154
|
-
|
|
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
|
-
`
|
|
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` |
|
|
169
|
-
| `
|
|
170
|
-
| `
|
|
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
|
-
|
|
149
|
+
## DX extras
|
|
173
150
|
|
|
174
|
-
|
|
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
|
-
|
|
159
|
+
// cancel in-flight work
|
|
160
|
+
const ac = new AbortController();
|
|
161
|
+
await maps.discover({ query: 'coffee', near, signal: ac.signal });
|
|
177
162
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
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
|
-
|
|
184
|
-
|
|
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
|
-
|
|
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
|
-
|
|
189
|
-
`decodeEncodedPolyline`, error classes, and domain types.
|
|
177
|
+
CLI (JSON by default):
|
|
190
178
|
|
|
191
|
-
|
|
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
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
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
|
-
|
|
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
|
-
-
|
|
236
|
-
-
|
|
237
|
-
- `
|
|
238
|
-
-
|
|
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
|
|
250
|
-
npm run verify:all
|
|
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
|
|
@@ -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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service classes — prefer `sdk()` namespaces in app code; use these when wiring custom clients.
|
|
3
|
+
*/
|
|
4
|
+
export { AskMapsService, buildAskMapsArgs, MAPS_AI_CAPABILITIES, PLATFORM_AI_FIELD_MASKS } from '../services/ask-maps.js';
|
|
5
|
+
export type { AskMapsOptions, AskMapsResult, AskMapsPlaceRef, AskMapsHistoryThread, MapsAiCapability, PlatformAiFieldMask, } from '../services/ask-maps.js';
|
|
6
|
+
export { SearchService, searchResultToPlaceDetails } from '../services/search.js';
|
|
7
|
+
export { PlacesService } from '../services/places.js';
|
|
8
|
+
export type { GetPlaceOptions, PlacePreviewFetchResult } from '../services/places.js';
|
|
9
|
+
export { ReviewsService } from '../services/reviews.js';
|
|
10
|
+
export type { GetReviewsOptions } from '../services/reviews.js';
|
|
11
|
+
export { RevealService } from '../services/reveal.js';
|
|
12
|
+
export { PassiveAssistService } from '../services/passiveassist.js';
|
|
13
|
+
export { LocalPostsService } from '../services/local-posts.js';
|
|
14
|
+
export type { GetLocalPostsOptions } from '../services/local-posts.js';
|
|
15
|
+
export { KnowledgeService } from '../services/knowledge.js';
|
|
16
|
+
export type { GetKnowledgeOptions } from '../services/knowledge.js';
|
|
17
|
+
export { DirectionsService } from '../services/directions.js';
|
|
18
|
+
export { SuggestService } from '../services/suggest.js';
|
|
19
|
+
export { PanoramaService } from '../services/panorama.js';
|
|
20
|
+
export { TilesService } from '../services/tiles.js';
|
|
21
|
+
export { ListsService } from '../services/lists.js';
|
|
22
|
+
export { GeocodeService } from '../services/geocode.js';
|
|
23
|
+
export { PhotosService } from '../services/photos.js';
|
|
24
|
+
export { LinksService } from '../services/links.js';
|
|
25
|
+
export { TrafficService } from '../services/traffic.js';
|
|
26
|
+
export { TransitService } from '../services/transit.js';
|
|
27
|
+
export { CategoriesService } from '../services/categories.js';
|
|
28
|
+
export { UgcAggregatesService } from '../services/ugc-aggregates.js';
|
|
29
|
+
export { BatchUrlService } from '../services/batch-url.js';
|
|
30
|
+
export { DistanceMatrixService } from '../services/distance-matrix.js';
|
|
31
|
+
export { ElevationService } from '../services/elevation.js';
|
|
32
|
+
export { TimezoneService } from '../services/timezone.js';
|
|
33
|
+
export { StaticMapService } from '../services/static-map.js';
|
|
34
|
+
//# sourceMappingURL=services.d.ts.map
|