googlemaps-kit 0.2.2 → 0.3.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 CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="https://raw.githubusercontent.com/KumarVandit/googlemaps-kit/main/assets/banner.png" alt="googlemaps-kit — TypeScript SDK for Google Maps consumer surfaces" width="100%">
2
+ <img src="https://raw.githubusercontent.com/KumarVandit/googlemaps-kit/main/assets/banner.png" alt="googlemaps-kit - TypeScript SDK for Google Maps consumer surfaces" width="100%">
3
3
  </p>
4
4
 
5
5
  # googlemaps-kit
@@ -7,6 +7,7 @@
7
7
  > TypeScript SDK for programmatic access to Google Maps consumer surfaces.
8
8
 
9
9
  [![npm version](https://img.shields.io/npm/v/googlemaps-kit.svg)](https://www.npmjs.com/package/googlemaps-kit)
10
+ [![npm downloads](https://img.shields.io/npm/dm/googlemaps-kit.svg)](https://www.npmjs.com/package/googlemaps-kit)
10
11
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue.svg)](https://www.typescriptlang.org/)
11
12
  [![License](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
12
13
  [![Node](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](./package.json)
@@ -174,15 +175,19 @@ const tools = maps.tools(); // or createMapsTools(maps)
174
175
  await tools.discover.execute({ query: 'coffee', nearLat: near.lat, nearLng: near.lng });
175
176
  ```
176
177
 
177
- CLI (JSON by default):
178
+ CLI (pretty tables on TTY, JSON when piped):
178
179
 
179
180
  ```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"
181
+ npx googlemaps-kit discover "cafes in indiranagar" --near 12.98,77.64 --limit 5
182
+ npx googlemaps-kit resolve --query "Cubbon Park Bangalore"
183
+ npx googlemaps-kit profile --query "Third Wave Coffee Indiranagar" --near 12.98,77.64
184
+ npx googlemaps-kit route --from "Cubbon Park, Bangalore" --to "Indiranagar, Bangalore"
185
+ npx googlemaps-kit opinions --query "Third Wave Coffee Indiranagar" --near 12.98,77.64
186
+ npx googlemaps-kit media --query "Cubbon Park Bangalore"
187
+ npx googlemaps-kit pipeline "cafes" --near 12.98,77.64 --max 3
183
188
  ```
184
189
 
185
- Export helpers: `toCsv(places)`, `toGeoJSON(places)`.
190
+ Use `--json` / `--format json|csv|geojson` for machine output. Export helpers: `toCsv(places)`, `toGeoJSON(places)`.
186
191
 
187
192
  ## Advanced (under the hood)
188
193
 
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Human-friendly CLI printers (tables / cards). No color deps.
3
+ */
4
+ import type { ReviewsResult } from '../types/common.js';
5
+ import type { DirectionsResult } from '../types/directions.js';
6
+ import type { PlaceProfile, ResolvedPlace, MediaResult, DiscoverResult } from '../types/dx.js';
7
+ export type OutputFormat = 'table' | 'pretty' | 'json' | 'csv' | 'geojson';
8
+ export declare function isTty(): boolean;
9
+ /** Default format: table/pretty on TTY, json when piped. */
10
+ export declare function defaultFormat(kind?: 'rows' | 'card'): OutputFormat;
11
+ export declare function printJson(value: unknown): void;
12
+ export declare function formatDiscoverTable(result: DiscoverResult): string;
13
+ export declare function formatResolvePretty(r: ResolvedPlace): string;
14
+ export declare function formatProfilePretty(result: PlaceProfile): string;
15
+ export declare function formatRoutePretty(result: DirectionsResult, label?: string): string;
16
+ export declare function formatOpinionsTable(result: ReviewsResult): string;
17
+ export declare function formatMediaPretty(result: MediaResult): string;
18
+ export declare function printDiscover(result: DiscoverResult, format: OutputFormat): void;
19
+ export declare function printResolved(result: ResolvedPlace, format: OutputFormat): void;
20
+ export declare function printProfile(result: PlaceProfile, format: OutputFormat): void;
21
+ export declare function printRoute(result: DirectionsResult, format: OutputFormat, label?: string): void;
22
+ export declare function printOpinions(result: ReviewsResult, format: OutputFormat): void;
23
+ export declare function printMedia(result: MediaResult, format: OutputFormat): void;
24
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/cli/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAgB,aAAa,EAAU,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAI/F,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;AAE3E,wBAAgB,KAAK,IAAI,OAAO,CAE/B;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,IAAI,GAAE,MAAM,GAAG,MAAe,GAAG,YAAY,CAG1E;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAE9C;AA+BD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAgClE;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAU5D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAkBhE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAuBlF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAoBjE;AAcD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAgB7D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAchF;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAM/E;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAM7E;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,YAAY,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,IAAI,CAMN;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAM/E;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAM1E"}
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Human-friendly CLI printers (tables / cards). No color deps.
3
+ */
4
+ import { toCsv, toGeoJSON } from '../utils/export-results.js';
5
+ export function isTty() {
6
+ return Boolean(process.stdout.isTTY);
7
+ }
8
+ /** Default format: table/pretty on TTY, json when piped. */
9
+ export function defaultFormat(kind = 'rows') {
10
+ if (!isTty())
11
+ return 'json';
12
+ return kind === 'rows' ? 'table' : 'pretty';
13
+ }
14
+ export function printJson(value) {
15
+ console.log(JSON.stringify(value, null, 2));
16
+ }
17
+ function truncate(text, max) {
18
+ const t = text.replace(/\s+/g, ' ').trim();
19
+ if (t.length <= max)
20
+ return t;
21
+ return `${t.slice(0, Math.max(0, max - 1))}…`;
22
+ }
23
+ function pad(text, width) {
24
+ const t = text.length > width ? truncate(text, width) : text;
25
+ return t.padEnd(width);
26
+ }
27
+ function stars(rating) {
28
+ if (rating == null || Number.isNaN(rating))
29
+ return '—';
30
+ return rating.toFixed(1);
31
+ }
32
+ function reviews(n) {
33
+ if (n == null)
34
+ return '—';
35
+ if (n >= 1000)
36
+ return `${(n / 1000).toFixed(n >= 10000 ? 0 : 1)}k`;
37
+ return String(n);
38
+ }
39
+ function openLabel(place) {
40
+ if (place.isOpenNow === true)
41
+ return 'Open';
42
+ if (place.isOpenNow === false)
43
+ return 'Closed';
44
+ if (place.openStatus)
45
+ return truncate(place.openStatus, 18);
46
+ return '—';
47
+ }
48
+ export function formatDiscoverTable(result) {
49
+ const rows = result.places;
50
+ const cols = {
51
+ n: 2,
52
+ name: 28,
53
+ rating: 6,
54
+ reviews: 7,
55
+ category: 16,
56
+ open: 10,
57
+ };
58
+ const header = `${pad('#', cols.n)} ${pad('NAME', cols.name)} ${pad('RATING', cols.rating)} ` +
59
+ `${pad('REVIEWS', cols.reviews)} ${pad('CATEGORY', cols.category)} ${pad('OPEN', cols.open)}`;
60
+ const sep = '─'.repeat(header.length);
61
+ const lines = [header, sep];
62
+ rows.forEach((p, i) => {
63
+ lines.push(`${pad(String(i + 1), cols.n)} ${pad(p.name ?? '—', cols.name)} ${pad(stars(p.rating), cols.rating)} ` +
64
+ `${pad(reviews(p.reviewCount), cols.reviews)} ${pad(p.category ?? p.categories?.[0] ?? '—', cols.category)} ` +
65
+ `${pad(openLabel(p), cols.open)}`);
66
+ });
67
+ lines.push('');
68
+ lines.push(`${rows.length} place${rows.length === 1 ? '' : 's'} · ${Math.round(result.timingMs)}ms · mode ${result.mode}`);
69
+ if (result.pagination.hasMore) {
70
+ lines.push(`more available (offset ${result.pagination.nextOffset ?? '—'})`);
71
+ }
72
+ return lines.join('\n');
73
+ }
74
+ export function formatResolvePretty(r) {
75
+ const lines = [
76
+ r.name ?? '(unnamed)',
77
+ r.address ? truncate(r.address, 72) : undefined,
78
+ r.hexId ? `hex ${r.hexId}` : undefined,
79
+ r.placeId ? `id ${r.placeId}` : undefined,
80
+ r.lat != null && r.lng != null ? `coords ${r.lat.toFixed(5)}, ${r.lng.toFixed(5)}` : undefined,
81
+ `via ${r.source}`,
82
+ ].filter(Boolean);
83
+ return lines.join('\n');
84
+ }
85
+ export function formatProfilePretty(result) {
86
+ const p = result.place;
87
+ const lines = [];
88
+ lines.push(p.name ?? '(unnamed)');
89
+ const meta = [];
90
+ if (p.rating != null)
91
+ meta.push(`★ ${stars(p.rating)}`);
92
+ if (p.reviewCount != null)
93
+ meta.push(`(${reviews(p.reviewCount)})`);
94
+ if (p.categories?.[0])
95
+ meta.push(p.categories[0]);
96
+ if (meta.length)
97
+ lines.push(meta.join(' · '));
98
+ if (p.address)
99
+ lines.push(truncate(p.address, 72));
100
+ if (p.openStatus)
101
+ lines.push(p.openStatus);
102
+ if (p.phone)
103
+ lines.push(p.phone);
104
+ if (p.website)
105
+ lines.push(truncate(p.website, 64));
106
+ if (p.hexId)
107
+ lines.push(`hex ${p.hexId}`);
108
+ lines.push(`depth ${result.depth}`);
109
+ return lines.join('\n');
110
+ }
111
+ export function formatRoutePretty(result, label) {
112
+ const lines = [];
113
+ if (label)
114
+ lines.push(label);
115
+ const duration = result.durationInTraffic && result.duration && result.durationInTraffic !== result.duration
116
+ ? `${result.durationInTraffic} (traffic) · normally ${result.duration}`
117
+ : result.durationInTraffic ?? result.duration;
118
+ const primary = [result.distance, duration].filter(Boolean).join(' · ');
119
+ if (primary)
120
+ lines.push(primary);
121
+ if (result.summary)
122
+ lines.push(`via ${result.summary}`);
123
+ const alts = result.routes?.slice(1) ?? [];
124
+ for (const alt of alts.slice(0, 2)) {
125
+ const altDur = alt.durationInTraffic ?? alt.duration;
126
+ const bit = [alt.distance, altDur, alt.summary ? `via ${alt.summary}` : '']
127
+ .filter(Boolean)
128
+ .join(' · ');
129
+ if (bit)
130
+ lines.push(`alt ${bit}`);
131
+ }
132
+ if (lines.length === 0)
133
+ lines.push('(no route metrics)');
134
+ return lines.join('\n');
135
+ }
136
+ export function formatOpinionsTable(result) {
137
+ const lines = [];
138
+ const total = result.totalReviews != null
139
+ ? `${reviews(result.totalReviews)} total`
140
+ : `${result.reviewCount} on page`;
141
+ const agg = result.aggregateRating != null ? ` · ★ ${stars(result.aggregateRating)}` : '';
142
+ lines.push(`Reviews · ${total}${agg}`);
143
+ lines.push('─'.repeat(56));
144
+ for (const r of result.reviews.slice(0, 8)) {
145
+ lines.push(formatReviewLine(r));
146
+ lines.push('');
147
+ }
148
+ if (result.reviews.length > 8) {
149
+ lines.push(`… ${result.reviews.length - 8} more on this page`);
150
+ }
151
+ return lines.join('\n').trimEnd();
152
+ }
153
+ function formatReviewLine(r) {
154
+ const head = [
155
+ r.rating != null ? `★ ${r.rating}` : '★ —',
156
+ r.author ?? 'Anonymous',
157
+ r.date ? `· ${r.date}` : undefined,
158
+ ]
159
+ .filter(Boolean)
160
+ .join(' ');
161
+ const body = truncate(r.textPreview ?? r.text ?? '', 90);
162
+ return body ? `${head}\n ${body}` : head;
163
+ }
164
+ export function formatMediaPretty(result) {
165
+ const lines = [`${result.photoCount} photo${result.photoCount === 1 ? '' : 's'}`];
166
+ if (result.photoSource)
167
+ lines[0] += ` · ${result.photoSource}`;
168
+ lines.push('─'.repeat(56));
169
+ result.photos.slice(0, 6).forEach((photo, i) => {
170
+ const url = photo.normalizedUrl ?? photo.url ?? '—';
171
+ const cap = photo.caption ? ` — ${truncate(photo.caption, 40)}` : '';
172
+ lines.push(`${i + 1}. ${truncate(url, 64)}${cap}`);
173
+ });
174
+ if (result.photos.length > 6) {
175
+ lines.push(`… ${result.photos.length - 6} more`);
176
+ }
177
+ if (result.nextPageToken)
178
+ lines.push('(more pages available)');
179
+ return lines.join('\n');
180
+ }
181
+ export function printDiscover(result, format) {
182
+ if (format === 'csv') {
183
+ console.log(toCsv(result.places));
184
+ return;
185
+ }
186
+ if (format === 'geojson') {
187
+ printJson(toGeoJSON(result.places));
188
+ return;
189
+ }
190
+ if (format === 'table' || format === 'pretty') {
191
+ console.log(formatDiscoverTable(result));
192
+ return;
193
+ }
194
+ printJson(result);
195
+ }
196
+ export function printResolved(result, format) {
197
+ if (format === 'table' || format === 'pretty') {
198
+ console.log(formatResolvePretty(result));
199
+ return;
200
+ }
201
+ printJson(result);
202
+ }
203
+ export function printProfile(result, format) {
204
+ if (format === 'table' || format === 'pretty') {
205
+ console.log(formatProfilePretty(result));
206
+ return;
207
+ }
208
+ printJson(result);
209
+ }
210
+ export function printRoute(result, format, label) {
211
+ if (format === 'table' || format === 'pretty') {
212
+ console.log(formatRoutePretty(result, label));
213
+ return;
214
+ }
215
+ printJson(result);
216
+ }
217
+ export function printOpinions(result, format) {
218
+ if (format === 'table' || format === 'pretty') {
219
+ console.log(formatOpinionsTable(result));
220
+ return;
221
+ }
222
+ printJson(result);
223
+ }
224
+ export function printMedia(result, format) {
225
+ if (format === 'table' || format === 'pretty') {
226
+ console.log(formatMediaPretty(result));
227
+ return;
228
+ }
229
+ printJson(result);
230
+ }
231
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/cli/format.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts CHANGED
@@ -1,11 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Thin CLI — JSON on stdout.
3
+ * Intent CLI — pretty tables on TTY, JSON when piped.
4
4
  *
5
5
  * npx googlemaps-kit discover "cafes" --near 12.98,77.64
6
- * npx googlemaps-kit profile 0x…:0x… --depth card
7
- * npx googlemaps-kit resolve --query "Indiranagar Bangalore"
8
- * npx googlemaps-kit route --from 12.97,77.59 --to 12.98,77.64
6
+ * npx googlemaps-kit resolve --query "Cubbon Park Bangalore"
7
+ * npx googlemaps-kit profile --query "Third Wave Coffee Indiranagar" --near 12.98,77.64
8
+ * npx googlemaps-kit route --from "Cubbon Park, Bangalore" --to "Indiranagar, Bangalore"
9
+ * npx googlemaps-kit opinions --query "Third Wave Coffee Indiranagar" --near 12.98,77.64
10
+ * npx googlemaps-kit media --query "Cubbon Park Bangalore"
11
+ * npx googlemaps-kit pipeline "cafes" --near 12.98,77.64 --max 3
12
+ * npx googlemaps-kit capabilities
9
13
  */
10
14
  export {};
11
15
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG"}
package/dist/cli.js CHANGED
@@ -1,32 +1,44 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Thin CLI — JSON on stdout.
3
+ * Intent CLI — pretty tables on TTY, JSON when piped.
4
4
  *
5
5
  * npx googlemaps-kit discover "cafes" --near 12.98,77.64
6
- * npx googlemaps-kit profile 0x…:0x… --depth card
7
- * npx googlemaps-kit resolve --query "Indiranagar Bangalore"
8
- * npx googlemaps-kit route --from 12.97,77.59 --to 12.98,77.64
6
+ * npx googlemaps-kit resolve --query "Cubbon Park Bangalore"
7
+ * npx googlemaps-kit profile --query "Third Wave Coffee Indiranagar" --near 12.98,77.64
8
+ * npx googlemaps-kit route --from "Cubbon Park, Bangalore" --to "Indiranagar, Bangalore"
9
+ * npx googlemaps-kit opinions --query "Third Wave Coffee Indiranagar" --near 12.98,77.64
10
+ * npx googlemaps-kit media --query "Cubbon Park Bangalore"
11
+ * npx googlemaps-kit pipeline "cafes" --near 12.98,77.64 --max 3
12
+ * npx googlemaps-kit capabilities
9
13
  */
10
14
  import { sdk } from './client/gmaps-client.js';
11
- import { toCsv, toGeoJSON } from './utils/export-results.js';
15
+ import { defaultFormat, printDiscover, printJson, printMedia, printOpinions, printProfile, printResolved, printRoute, } from './cli/format.js';
12
16
  function usage(exit = 1) {
13
- console.error(`Usage:
14
- googlemaps-kit discover <query> --near <lat,lng> [--mode fast|full] [--limit N] [--format json|csv|geojson]
15
- googlemaps-kit profile <hexId> [--name …] [--depth card|full|complete]
17
+ console.error(`googlemaps-kit — Intent CLI
18
+
19
+ Usage:
20
+ googlemaps-kit discover <query> --near <lat,lng> [options]
16
21
  googlemaps-kit resolve --query <text> [--near <lat,lng>] | --url <maps-url>
17
- googlemaps-kit route --from <lat,lng> --to <lat,lng> [--mode driving|walking|…]
22
+ googlemaps-kit profile <hexId> | --query <text> --near <lat,lng> [--depth card|full|complete]
23
+ googlemaps-kit route --from <address|lat,lng> --to <address|lat,lng> [--mode driving|walking|…]
24
+ googlemaps-kit opinions <hexId> | --query <text> --near <lat,lng> [--pages N] [--limit N]
25
+ googlemaps-kit media <hexId> | --query <text> [--near <lat,lng>] [--limit N]
26
+ googlemaps-kit pipeline <query> --near <lat,lng> [--max N] [--profile card|full|false] [--opinions]
27
+ googlemaps-kit capabilities
28
+
29
+ Global:
30
+ --format table|pretty|json|csv|geojson (default: table/pretty on TTY, json when piped)
31
+ --json shorthand for --format json
32
+ --hl <lang> --gl <region> locale (or GMAPS_HL / GMAPS_GL)
33
+
34
+ Discover:
35
+ --mode fast|full --limit N --format csv|geojson
36
+
37
+ Route:
38
+ --from / --to accept place names ("Cubbon Park, Bangalore") or coordinates
18
39
  `);
19
40
  process.exit(exit);
20
41
  }
21
- function parseNear(value) {
22
- if (!value)
23
- return undefined;
24
- const [a, b] = value.split(',').map((s) => Number(s.trim()));
25
- if (a == null || b == null || Number.isNaN(a) || Number.isNaN(b)) {
26
- throw new Error(`Invalid --near/--from/--to: ${value}`);
27
- }
28
- return { lat: a, lng: b };
29
- }
30
42
  function flag(args, name) {
31
43
  const i = args.indexOf(name);
32
44
  if (i < 0)
@@ -36,6 +48,95 @@ function flag(args, name) {
36
48
  function has(args, name) {
37
49
  return args.includes(name);
38
50
  }
51
+ const VALUE_FLAGS = new Set([
52
+ '--near',
53
+ '--from',
54
+ '--to',
55
+ '--mode',
56
+ '--limit',
57
+ '--format',
58
+ '--depth',
59
+ '--query',
60
+ '--url',
61
+ '--name',
62
+ '--pages',
63
+ '--max',
64
+ '--profile',
65
+ '--hl',
66
+ '--gl',
67
+ ]);
68
+ /** First non-flag token that is not a value for a preceding option. */
69
+ function positional(args) {
70
+ for (let i = 0; i < args.length; i++) {
71
+ const a = args[i];
72
+ if (a.startsWith('-')) {
73
+ if (VALUE_FLAGS.has(a))
74
+ i += 1;
75
+ continue;
76
+ }
77
+ return a;
78
+ }
79
+ return undefined;
80
+ }
81
+ function parseCoords(value) {
82
+ if (!value)
83
+ return undefined;
84
+ const [a, b] = value.split(',').map((s) => Number(s.trim()));
85
+ if (a == null || b == null || Number.isNaN(a) || Number.isNaN(b)) {
86
+ throw new Error(`Invalid coordinates: ${value} (expected lat,lng)`);
87
+ }
88
+ return { lat: a, lng: b };
89
+ }
90
+ /** Address string or lat,lng — for route endpoints. */
91
+ function parseEndpoint(value) {
92
+ if (!value)
93
+ throw new Error('Missing endpoint');
94
+ if (/^-?\d+(\.\d+)?\s*,\s*-?\d+(\.\d+)?$/.test(value.trim())) {
95
+ return parseCoords(value);
96
+ }
97
+ return value.trim();
98
+ }
99
+ function resolveFormat(args, kind) {
100
+ if (has(args, '--json'))
101
+ return 'json';
102
+ const raw = flag(args, '--format');
103
+ if (!raw)
104
+ return defaultFormat(kind);
105
+ const allowed = ['table', 'pretty', 'json', 'csv', 'geojson'];
106
+ if (!allowed.includes(raw)) {
107
+ throw new Error(`Invalid --format ${raw} (expected ${allowed.join('|')})`);
108
+ }
109
+ return raw;
110
+ }
111
+ async function placeFromArgs(maps, args) {
112
+ const hexId = positional(args);
113
+ const query = flag(args, '--query');
114
+ const name = flag(args, '--name');
115
+ const near = parseCoords(flag(args, '--near'));
116
+ if (hexId && !hexId.includes(' ') && (hexId.includes('0x') || hexId.startsWith('ChIJ'))) {
117
+ return { hexId, name };
118
+ }
119
+ // Positional hex-like without 0x still allowed (legacy)
120
+ if (hexId && !query && /^[0-9a-fx:]+$/i.test(hexId)) {
121
+ return { hexId, name };
122
+ }
123
+ const q = query ?? (hexId && hexId.includes(' ') ? hexId : undefined);
124
+ if (!q) {
125
+ console.error('Need a place: pass <hexId> or --query "Place name" [--near lat,lng]');
126
+ usage();
127
+ }
128
+ const resolved = await maps.resolve({ query: q, near });
129
+ if (!resolved.hexId) {
130
+ throw new Error(`Could not resolve a place id for: ${q}`);
131
+ }
132
+ return {
133
+ hexId: resolved.hexId,
134
+ name: resolved.name ?? name,
135
+ lat: resolved.lat,
136
+ lng: resolved.lng,
137
+ placeId: resolved.placeId,
138
+ };
139
+ }
39
140
  async function main() {
40
141
  const argv = process.argv.slice(2);
41
142
  if (argv.length === 0 || has(argv, '-h') || has(argv, '--help'))
@@ -45,68 +146,143 @@ async function main() {
45
146
  const maps = sdk({
46
147
  warmOnCreate: false,
47
148
  locale: {
48
- hl: process.env.GMAPS_HL,
49
- gl: process.env.GMAPS_GL,
149
+ hl: flag(rest, '--hl') ?? process.env.GMAPS_HL,
150
+ gl: flag(rest, '--gl') ?? process.env.GMAPS_GL,
50
151
  },
51
152
  });
52
153
  if (cmd === 'discover') {
53
- const query = rest.find((a) => !a.startsWith('-'));
154
+ const query = positional(rest);
54
155
  if (!query)
55
156
  usage();
56
- const near = parseNear(flag(rest, '--near'));
157
+ const near = parseCoords(flag(rest, '--near'));
57
158
  if (!near) {
58
159
  console.error('discover requires --near lat,lng');
59
160
  usage();
60
161
  }
61
162
  const mode = flag(rest, '--mode') ?? 'fast';
62
163
  const limit = flag(rest, '--limit') ? Number(flag(rest, '--limit')) : undefined;
63
- const format = flag(rest, '--format') ?? 'json';
164
+ const format = resolveFormat(rest, 'rows');
64
165
  const result = await maps.discover({ query, near, mode, limit });
65
166
  printDiscover(result, format);
66
167
  return;
67
168
  }
68
- if (cmd === 'profile') {
69
- const hexId = rest.find((a) => !a.startsWith('-'));
70
- if (!hexId)
71
- usage();
72
- const depth = flag(rest, '--depth') ?? 'card';
73
- const name = flag(rest, '--name');
74
- const result = await maps.profile({ hexId, name }, { depth });
75
- console.log(JSON.stringify(result, null, 2));
76
- return;
77
- }
78
169
  if (cmd === 'resolve') {
79
- const query = flag(rest, '--query');
170
+ const query = flag(rest, '--query') ?? positional(rest);
80
171
  const url = flag(rest, '--url');
81
- const near = parseNear(flag(rest, '--near'));
172
+ const near = parseCoords(flag(rest, '--near'));
82
173
  if (!query && !url)
83
174
  usage();
175
+ const format = resolveFormat(rest, 'card');
84
176
  const result = await maps.resolve({ query, url, near });
85
- console.log(JSON.stringify(result, null, 2));
177
+ printResolved(result, format);
178
+ return;
179
+ }
180
+ if (cmd === 'profile') {
181
+ const depth = flag(rest, '--depth') ?? 'card';
182
+ const format = resolveFormat(rest, 'card');
183
+ const ref = await placeFromArgs(maps, rest);
184
+ const result = await maps.profile(ref, { depth });
185
+ printProfile(result, format);
86
186
  return;
87
187
  }
88
188
  if (cmd === 'route') {
89
- const from = parseNear(flag(rest, '--from'));
90
- const to = parseNear(flag(rest, '--to'));
91
- if (!from || !to)
189
+ const fromRaw = flag(rest, '--from');
190
+ const toRaw = flag(rest, '--to');
191
+ if (!fromRaw || !toRaw)
92
192
  usage();
193
+ const from = parseEndpoint(fromRaw);
194
+ const to = parseEndpoint(toRaw);
93
195
  const mode = flag(rest, '--mode');
196
+ const format = resolveFormat(rest, 'card');
94
197
  const result = await maps.route({ from, to, mode });
95
- console.log(JSON.stringify(result, null, 2));
198
+ const label = typeof from === 'string' && typeof to === 'string' ? `${from} → ${to}` : undefined;
199
+ printRoute(result, format, label);
96
200
  return;
97
201
  }
98
- usage();
99
- }
100
- function printDiscover(result, format) {
101
- if (format === 'csv') {
102
- console.log(toCsv(result.places));
202
+ if (cmd === 'opinions') {
203
+ const pages = flag(rest, '--pages') ? Number(flag(rest, '--pages')) : 1;
204
+ const limit = flag(rest, '--limit') ? Number(flag(rest, '--limit')) : 5;
205
+ const includeAggregates = has(rest, '--aggregates');
206
+ const format = resolveFormat(rest, 'rows');
207
+ const ref = await placeFromArgs(maps, rest);
208
+ const result = await maps.opinions(ref, { pages, limit, includeAggregates });
209
+ printOpinions(result, format);
103
210
  return;
104
211
  }
105
- if (format === 'geojson') {
106
- console.log(JSON.stringify(toGeoJSON(result.places), null, 2));
212
+ if (cmd === 'media') {
213
+ const format = resolveFormat(rest, 'card');
214
+ const ref = await placeFromArgs(maps, rest);
215
+ const pageSize = flag(rest, '--limit') ? Number(flag(rest, '--limit')) : 8;
216
+ const result = await maps.media(ref, { pageSize });
217
+ printMedia(result, format);
107
218
  return;
108
219
  }
109
- console.log(JSON.stringify(result, null, 2));
220
+ if (cmd === 'pipeline') {
221
+ const query = positional(rest);
222
+ if (!query)
223
+ usage();
224
+ const near = parseCoords(flag(rest, '--near'));
225
+ if (!near) {
226
+ console.error('pipeline requires --near lat,lng');
227
+ usage();
228
+ }
229
+ const maxPlaces = flag(rest, '--max') ? Number(flag(rest, '--max')) : 3;
230
+ const profileFlag = flag(rest, '--profile') ?? 'card';
231
+ const profile = profileFlag === 'false' ? false : { depth: profileFlag };
232
+ const opinions = has(rest, '--opinions') ? { pages: 1, limit: 3 } : false;
233
+ const format = resolveFormat(rest, 'rows');
234
+ const result = await maps.pipeline({
235
+ discover: { query, near, mode: 'fast' },
236
+ maxPlaces,
237
+ profile,
238
+ opinions,
239
+ });
240
+ if (format === 'json') {
241
+ printJson(result);
242
+ return;
243
+ }
244
+ // Compact table of pipeline rows
245
+ const lines = [`pipeline · ${result.places.length} places · ${Math.round(result.timingMs)}ms`, '─'.repeat(56)];
246
+ for (const row of result.places) {
247
+ const p = row.profile?.place ?? row.hit;
248
+ const rating = p.rating != null ? `★ ${p.rating.toFixed(1)}` : '★ —';
249
+ const reviews = p.reviewCount != null ? `(${p.reviewCount})` : '';
250
+ lines.push(`${p.name ?? '—'} ${rating} ${reviews}`.trim());
251
+ if (p.address)
252
+ lines.push(` ${p.address}`);
253
+ if (row.opinions?.reviews?.[0]?.textPreview ?? row.opinions?.reviews?.[0]?.text) {
254
+ const t = (row.opinions.reviews[0].textPreview ?? row.opinions.reviews[0].text ?? '')
255
+ .replace(/\s+/g, ' ')
256
+ .trim()
257
+ .slice(0, 70);
258
+ if (t)
259
+ lines.push(` “${t}${t.length >= 70 ? '…' : ''}”`);
260
+ }
261
+ lines.push('');
262
+ }
263
+ console.log(lines.join('\n').trimEnd());
264
+ return;
265
+ }
266
+ if (cmd === 'capabilities') {
267
+ const caps = await maps.capabilities();
268
+ const format = resolveFormat(rest, 'card');
269
+ if (format === 'json') {
270
+ printJson(caps);
271
+ return;
272
+ }
273
+ const lines = [
274
+ `session ${caps.session}${caps.signedIn ? ' (signed in)' : ''}`,
275
+ `search yes`,
276
+ `details yes`,
277
+ `reviews boq${caps.reviewsRpc ? ' + rpc' : ''}`,
278
+ `photos yes`,
279
+ `directions yes`,
280
+ `askMaps ${caps.askMaps ? 'yes' : 'no (needs cookies)'}`,
281
+ ];
282
+ console.log(lines.join('\n'));
283
+ return;
284
+ }
285
+ usage();
110
286
  }
111
287
  void main().catch((err) => {
112
288
  console.error(err instanceof Error ? err.message : err);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAG7D,SAAS,KAAK,CAAC,IAAI,GAAG,CAAC;IACrB,OAAO,CAAC,KAAK,CAAC;;;;;CAKf,CAAC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,SAAS,CAAC,KAAyB;IAC1C,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,IAAI,CAAC,IAAc,EAAE,IAAY;IACxC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,GAAG,CAAC,IAAc,EAAE,IAAY;IACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;QAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAE1E,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;IACrB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,GAAG,CAAC;QACf,YAAY,EAAE,KAAK;QACnB,MAAM,EAAE;YACN,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;YACxB,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;SACzB;KACF,CAAC,CAAC;IAEH,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK;YAAE,KAAK,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAClD,KAAK,EAAE,CAAC;QACV,CAAC;QACD,MAAM,IAAI,GAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAiC,IAAI,MAAM,CAAC;QAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACjE,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK;YAAE,KAAK,EAAE,CAAC;QACpB,MAAM,KAAK,GAAI,IAAI,CAAC,IAAI,EAAE,SAAS,CAA8C,IAAI,MAAM,CAAC;QAC5F,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG;YAAE,KAAK,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC7C,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;YAAE,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAKnB,CAAC;QACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,KAAK,EAAE,CAAC;AACV,CAAC;AAED,SAAS,aAAa,CAAC,MAAsB,EAAE,MAAc;IAC3D,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACxB,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "googlemaps-kit",
3
- "version": "0.2.2",
3
+ "version": "0.3.0",
4
4
  "description": "TypeScript SDK for Google Maps consumer HTTP surfaces",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",