googlemaps-kit 0.1.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 (525) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +249 -0
  3. package/dist/auth/auth-status.d.ts +30 -0
  4. package/dist/auth/auth-status.d.ts.map +1 -0
  5. package/dist/auth/auth-status.js +169 -0
  6. package/dist/auth/auth-status.js.map +1 -0
  7. package/dist/auth/google-auth.d.ts +9 -0
  8. package/dist/auth/google-auth.d.ts.map +1 -0
  9. package/dist/auth/google-auth.js +40 -0
  10. package/dist/auth/google-auth.js.map +1 -0
  11. package/dist/auth/maps-tokens.d.ts +6 -0
  12. package/dist/auth/maps-tokens.d.ts.map +1 -0
  13. package/dist/auth/maps-tokens.js +18 -0
  14. package/dist/auth/maps-tokens.js.map +1 -0
  15. package/dist/auth/session.d.ts +28 -0
  16. package/dist/auth/session.d.ts.map +1 -0
  17. package/dist/auth/session.js +104 -0
  18. package/dist/auth/session.js.map +1 -0
  19. package/dist/client/gmaps-client.d.ts +92 -0
  20. package/dist/client/gmaps-client.d.ts.map +1 -0
  21. package/dist/client/gmaps-client.js +254 -0
  22. package/dist/client/gmaps-client.js.map +1 -0
  23. package/dist/client/http-client.d.ts +91 -0
  24. package/dist/client/http-client.d.ts.map +1 -0
  25. package/dist/client/http-client.js +393 -0
  26. package/dist/client/http-client.js.map +1 -0
  27. package/dist/index.d.ts +64 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +36 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/internal.d.ts +140 -0
  32. package/dist/internal.d.ts.map +1 -0
  33. package/dist/internal.js +97 -0
  34. package/dist/internal.js.map +1 -0
  35. package/dist/known-surfaces.d.ts +280 -0
  36. package/dist/known-surfaces.d.ts.map +1 -0
  37. package/dist/known-surfaces.js +276 -0
  38. package/dist/known-surfaces.js.map +1 -0
  39. package/dist/parsers/batch-url.d.ts +13 -0
  40. package/dist/parsers/batch-url.d.ts.map +1 -0
  41. package/dist/parsers/batch-url.js +42 -0
  42. package/dist/parsers/batch-url.js.map +1 -0
  43. package/dist/parsers/boq-reviews.d.ts +8 -0
  44. package/dist/parsers/boq-reviews.d.ts.map +1 -0
  45. package/dist/parsers/boq-reviews.js +254 -0
  46. package/dist/parsers/boq-reviews.js.map +1 -0
  47. package/dist/parsers/categories.d.ts +14 -0
  48. package/dist/parsers/categories.d.ts.map +1 -0
  49. package/dist/parsers/categories.js +128 -0
  50. package/dist/parsers/categories.js.map +1 -0
  51. package/dist/parsers/directions.d.ts +6 -0
  52. package/dist/parsers/directions.d.ts.map +1 -0
  53. package/dist/parsers/directions.js +388 -0
  54. package/dist/parsers/directions.js.map +1 -0
  55. package/dist/parsers/elevation-directions.d.ts +18 -0
  56. package/dist/parsers/elevation-directions.d.ts.map +1 -0
  57. package/dist/parsers/elevation-directions.js +102 -0
  58. package/dist/parsers/elevation-directions.js.map +1 -0
  59. package/dist/parsers/geocode.d.ts +11 -0
  60. package/dist/parsers/geocode.d.ts.map +1 -0
  61. package/dist/parsers/geocode.js +104 -0
  62. package/dist/parsers/geocode.js.map +1 -0
  63. package/dist/parsers/knowledge.d.ts +13 -0
  64. package/dist/parsers/knowledge.d.ts.map +1 -0
  65. package/dist/parsers/knowledge.js +93 -0
  66. package/dist/parsers/knowledge.js.map +1 -0
  67. package/dist/parsers/lists.d.ts +23 -0
  68. package/dist/parsers/lists.d.ts.map +1 -0
  69. package/dist/parsers/lists.js +219 -0
  70. package/dist/parsers/lists.js.map +1 -0
  71. package/dist/parsers/local-posts.d.ts +12 -0
  72. package/dist/parsers/local-posts.d.ts.map +1 -0
  73. package/dist/parsers/local-posts.js +112 -0
  74. package/dist/parsers/local-posts.js.map +1 -0
  75. package/dist/parsers/maps-url.d.ts +15 -0
  76. package/dist/parsers/maps-url.d.ts.map +1 -0
  77. package/dist/parsers/maps-url.js +326 -0
  78. package/dist/parsers/maps-url.js.map +1 -0
  79. package/dist/parsers/panorama.d.ts +24 -0
  80. package/dist/parsers/panorama.d.ts.map +1 -0
  81. package/dist/parsers/panorama.js +161 -0
  82. package/dist/parsers/panorama.js.map +1 -0
  83. package/dist/parsers/passiveassist.d.ts +10 -0
  84. package/dist/parsers/passiveassist.d.ts.map +1 -0
  85. package/dist/parsers/passiveassist.js +61 -0
  86. package/dist/parsers/passiveassist.js.map +1 -0
  87. package/dist/parsers/photos.d.ts +21 -0
  88. package/dist/parsers/photos.d.ts.map +1 -0
  89. package/dist/parsers/photos.js +287 -0
  90. package/dist/parsers/photos.js.map +1 -0
  91. package/dist/parsers/place-attributes.d.ts +25 -0
  92. package/dist/parsers/place-attributes.d.ts.map +1 -0
  93. package/dist/parsers/place-attributes.js +266 -0
  94. package/dist/parsers/place-attributes.js.map +1 -0
  95. package/dist/parsers/place.d.ts +9 -0
  96. package/dist/parsers/place.d.ts.map +1 -0
  97. package/dist/parsers/place.js +291 -0
  98. package/dist/parsers/place.js.map +1 -0
  99. package/dist/parsers/reveal.d.ts +5 -0
  100. package/dist/parsers/reveal.d.ts.map +1 -0
  101. package/dist/parsers/reveal.js +99 -0
  102. package/dist/parsers/reveal.js.map +1 -0
  103. package/dist/parsers/review-aggregates.d.ts +7 -0
  104. package/dist/parsers/review-aggregates.d.ts.map +1 -0
  105. package/dist/parsers/review-aggregates.js +18 -0
  106. package/dist/parsers/review-aggregates.js.map +1 -0
  107. package/dist/parsers/review-client-filters.d.ts +8 -0
  108. package/dist/parsers/review-client-filters.d.ts.map +1 -0
  109. package/dist/parsers/review-client-filters.js +28 -0
  110. package/dist/parsers/review-client-filters.js.map +1 -0
  111. package/dist/parsers/reviews.d.ts +8 -0
  112. package/dist/parsers/reviews.d.ts.map +1 -0
  113. package/dist/parsers/reviews.js +55 -0
  114. package/dist/parsers/reviews.js.map +1 -0
  115. package/dist/parsers/search-client-filters.d.ts +7 -0
  116. package/dist/parsers/search-client-filters.d.ts.map +1 -0
  117. package/dist/parsers/search-client-filters.js +44 -0
  118. package/dist/parsers/search-client-filters.js.map +1 -0
  119. package/dist/parsers/search-pagination.d.ts +12 -0
  120. package/dist/parsers/search-pagination.d.ts.map +1 -0
  121. package/dist/parsers/search-pagination.js +34 -0
  122. package/dist/parsers/search-pagination.js.map +1 -0
  123. package/dist/parsers/search.d.ts +5 -0
  124. package/dist/parsers/search.d.ts.map +1 -0
  125. package/dist/parsers/search.js +187 -0
  126. package/dist/parsers/search.js.map +1 -0
  127. package/dist/parsers/shared.d.ts +24 -0
  128. package/dist/parsers/shared.d.ts.map +1 -0
  129. package/dist/parsers/shared.js +147 -0
  130. package/dist/parsers/shared.js.map +1 -0
  131. package/dist/parsers/suggest.d.ts +10 -0
  132. package/dist/parsers/suggest.d.ts.map +1 -0
  133. package/dist/parsers/suggest.js +153 -0
  134. package/dist/parsers/suggest.js.map +1 -0
  135. package/dist/parsers/tiles.d.ts +22 -0
  136. package/dist/parsers/tiles.d.ts.map +1 -0
  137. package/dist/parsers/tiles.js +70 -0
  138. package/dist/parsers/tiles.js.map +1 -0
  139. package/dist/parsers/timezone-geocode.d.ts +20 -0
  140. package/dist/parsers/timezone-geocode.d.ts.map +1 -0
  141. package/dist/parsers/timezone-geocode.js +96 -0
  142. package/dist/parsers/timezone-geocode.js.map +1 -0
  143. package/dist/parsers/traffic.d.ts +10 -0
  144. package/dist/parsers/traffic.d.ts.map +1 -0
  145. package/dist/parsers/traffic.js +38 -0
  146. package/dist/parsers/traffic.js.map +1 -0
  147. package/dist/parsers/transit.d.ts +12 -0
  148. package/dist/parsers/transit.d.ts.map +1 -0
  149. package/dist/parsers/transit.js +77 -0
  150. package/dist/parsers/transit.js.map +1 -0
  151. package/dist/parsers/ugc-aggregates.d.ts +9 -0
  152. package/dist/parsers/ugc-aggregates.d.ts.map +1 -0
  153. package/dist/parsers/ugc-aggregates.js +23 -0
  154. package/dist/parsers/ugc-aggregates.js.map +1 -0
  155. package/dist/rpc/app-options.d.ts +25 -0
  156. package/dist/rpc/app-options.d.ts.map +1 -0
  157. package/dist/rpc/app-options.js +147 -0
  158. package/dist/rpc/app-options.js.map +1 -0
  159. package/dist/rpc/batch-execute.d.ts +30 -0
  160. package/dist/rpc/batch-execute.d.ts.map +1 -0
  161. package/dist/rpc/batch-execute.js +217 -0
  162. package/dist/rpc/batch-execute.js.map +1 -0
  163. package/dist/rpc/batch-request-builders.d.ts +65 -0
  164. package/dist/rpc/batch-request-builders.d.ts.map +1 -0
  165. package/dist/rpc/batch-request-builders.js +174 -0
  166. package/dist/rpc/batch-request-builders.js.map +1 -0
  167. package/dist/rpc/batch-rpc.d.ts +34 -0
  168. package/dist/rpc/batch-rpc.d.ts.map +1 -0
  169. package/dist/rpc/batch-rpc.js +70 -0
  170. package/dist/rpc/batch-rpc.js.map +1 -0
  171. package/dist/rpc/batch-services.d.ts +38 -0
  172. package/dist/rpc/batch-services.d.ts.map +1 -0
  173. package/dist/rpc/batch-services.js +69 -0
  174. package/dist/rpc/batch-services.js.map +1 -0
  175. package/dist/rpc/batchexecute-args.d.ts +30 -0
  176. package/dist/rpc/batchexecute-args.d.ts.map +1 -0
  177. package/dist/rpc/batchexecute-args.js +35 -0
  178. package/dist/rpc/batchexecute-args.js.map +1 -0
  179. package/dist/rpc/boq-reviews.d.ts +16 -0
  180. package/dist/rpc/boq-reviews.d.ts.map +1 -0
  181. package/dist/rpc/boq-reviews.js +45 -0
  182. package/dist/rpc/boq-reviews.js.map +1 -0
  183. package/dist/rpc/descriptor-registry.d.ts +61 -0
  184. package/dist/rpc/descriptor-registry.d.ts.map +1 -0
  185. package/dist/rpc/descriptor-registry.js +47 -0
  186. package/dist/rpc/descriptor-registry.js.map +1 -0
  187. package/dist/rpc/feature-rpc.d.ts +27 -0
  188. package/dist/rpc/feature-rpc.d.ts.map +1 -0
  189. package/dist/rpc/feature-rpc.js +44 -0
  190. package/dist/rpc/feature-rpc.js.map +1 -0
  191. package/dist/rpc/lists-pb.d.ts +20 -0
  192. package/dist/rpc/lists-pb.d.ts.map +1 -0
  193. package/dist/rpc/lists-pb.js +20 -0
  194. package/dist/rpc/lists-pb.js.map +1 -0
  195. package/dist/rpc/maps-endpoint-registry.json +185 -0
  196. package/dist/rpc/maps-runtime.d.ts +42 -0
  197. package/dist/rpc/maps-runtime.d.ts.map +1 -0
  198. package/dist/rpc/maps-runtime.js +140 -0
  199. package/dist/rpc/maps-runtime.js.map +1 -0
  200. package/dist/rpc/maps-url-builders.d.ts +35 -0
  201. package/dist/rpc/maps-url-builders.d.ts.map +1 -0
  202. package/dist/rpc/maps-url-builders.js +266 -0
  203. package/dist/rpc/maps-url-builders.js.map +1 -0
  204. package/dist/rpc/nxa.d.ts +13 -0
  205. package/dist/rpc/nxa.d.ts.map +1 -0
  206. package/dist/rpc/nxa.js +44 -0
  207. package/dist/rpc/nxa.js.map +1 -0
  208. package/dist/rpc/panorama-pb.d.ts +60 -0
  209. package/dist/rpc/panorama-pb.d.ts.map +1 -0
  210. package/dist/rpc/panorama-pb.js +71 -0
  211. package/dist/rpc/panorama-pb.js.map +1 -0
  212. package/dist/rpc/passiveassist-pb.d.ts +21 -0
  213. package/dist/rpc/passiveassist-pb.d.ts.map +1 -0
  214. package/dist/rpc/passiveassist-pb.js +24 -0
  215. package/dist/rpc/passiveassist-pb.js.map +1 -0
  216. package/dist/rpc/pb-builders.d.ts +136 -0
  217. package/dist/rpc/pb-builders.d.ts.map +1 -0
  218. package/dist/rpc/pb-builders.js +290 -0
  219. package/dist/rpc/pb-builders.js.map +1 -0
  220. package/dist/rpc/photo-category-tokens.d.ts +29 -0
  221. package/dist/rpc/photo-category-tokens.d.ts.map +1 -0
  222. package/dist/rpc/photo-category-tokens.js +97 -0
  223. package/dist/rpc/photo-category-tokens.js.map +1 -0
  224. package/dist/rpc/photos-pb.d.ts +29 -0
  225. package/dist/rpc/photos-pb.d.ts.map +1 -0
  226. package/dist/rpc/photos-pb.js +73 -0
  227. package/dist/rpc/photos-pb.js.map +1 -0
  228. package/dist/rpc/reveal-pb.d.ts +26 -0
  229. package/dist/rpc/reveal-pb.d.ts.map +1 -0
  230. package/dist/rpc/reveal-pb.js +32 -0
  231. package/dist/rpc/reveal-pb.js.map +1 -0
  232. package/dist/rpc/rpc-client.d.ts +50 -0
  233. package/dist/rpc/rpc-client.d.ts.map +1 -0
  234. package/dist/rpc/rpc-client.js +136 -0
  235. package/dist/rpc/rpc-client.js.map +1 -0
  236. package/dist/rpc/rpc-descriptor-registry.json +776 -0
  237. package/dist/rpc/rpc-methods.d.ts +75 -0
  238. package/dist/rpc/rpc-methods.d.ts.map +1 -0
  239. package/dist/rpc/rpc-methods.js +130 -0
  240. package/dist/rpc/rpc-methods.js.map +1 -0
  241. package/dist/rpc/search-filters.d.ts +43 -0
  242. package/dist/rpc/search-filters.d.ts.map +1 -0
  243. package/dist/rpc/search-filters.js +92 -0
  244. package/dist/rpc/search-filters.js.map +1 -0
  245. package/dist/rpc/suggest-pb.d.ts +34 -0
  246. package/dist/rpc/suggest-pb.d.ts.map +1 -0
  247. package/dist/rpc/suggest-pb.js +42 -0
  248. package/dist/rpc/suggest-pb.js.map +1 -0
  249. package/dist/rpc/tiles-pb.d.ts +45 -0
  250. package/dist/rpc/tiles-pb.d.ts.map +1 -0
  251. package/dist/rpc/tiles-pb.js +71 -0
  252. package/dist/rpc/tiles-pb.js.map +1 -0
  253. package/dist/rpc/xsrf-bootstrap.d.ts +24 -0
  254. package/dist/rpc/xsrf-bootstrap.d.ts.map +1 -0
  255. package/dist/rpc/xsrf-bootstrap.js +63 -0
  256. package/dist/rpc/xsrf-bootstrap.js.map +1 -0
  257. package/dist/server/api-server.d.ts +9 -0
  258. package/dist/server/api-server.d.ts.map +1 -0
  259. package/dist/server/api-server.js +293 -0
  260. package/dist/server/api-server.js.map +1 -0
  261. package/dist/services/ask-maps.d.ts +91 -0
  262. package/dist/services/ask-maps.d.ts.map +1 -0
  263. package/dist/services/ask-maps.js +221 -0
  264. package/dist/services/ask-maps.js.map +1 -0
  265. package/dist/services/batch-url.d.ts +18 -0
  266. package/dist/services/batch-url.d.ts.map +1 -0
  267. package/dist/services/batch-url.js +30 -0
  268. package/dist/services/batch-url.js.map +1 -0
  269. package/dist/services/categories.d.ts +21 -0
  270. package/dist/services/categories.d.ts.map +1 -0
  271. package/dist/services/categories.js +43 -0
  272. package/dist/services/categories.js.map +1 -0
  273. package/dist/services/directions.d.ts +26 -0
  274. package/dist/services/directions.d.ts.map +1 -0
  275. package/dist/services/directions.js +104 -0
  276. package/dist/services/directions.js.map +1 -0
  277. package/dist/services/distance-matrix.d.ts +17 -0
  278. package/dist/services/distance-matrix.d.ts.map +1 -0
  279. package/dist/services/distance-matrix.js +144 -0
  280. package/dist/services/distance-matrix.js.map +1 -0
  281. package/dist/services/elevation.d.ts +30 -0
  282. package/dist/services/elevation.d.ts.map +1 -0
  283. package/dist/services/elevation.js +149 -0
  284. package/dist/services/elevation.js.map +1 -0
  285. package/dist/services/geocode.d.ts +20 -0
  286. package/dist/services/geocode.d.ts.map +1 -0
  287. package/dist/services/geocode.js +63 -0
  288. package/dist/services/geocode.js.map +1 -0
  289. package/dist/services/knowledge.d.ts +25 -0
  290. package/dist/services/knowledge.d.ts.map +1 -0
  291. package/dist/services/knowledge.js +58 -0
  292. package/dist/services/knowledge.js.map +1 -0
  293. package/dist/services/links.d.ts +22 -0
  294. package/dist/services/links.d.ts.map +1 -0
  295. package/dist/services/links.js +145 -0
  296. package/dist/services/links.js.map +1 -0
  297. package/dist/services/lists.d.ts +20 -0
  298. package/dist/services/lists.d.ts.map +1 -0
  299. package/dist/services/lists.js +74 -0
  300. package/dist/services/lists.js.map +1 -0
  301. package/dist/services/local-posts.d.ts +14 -0
  302. package/dist/services/local-posts.d.ts.map +1 -0
  303. package/dist/services/local-posts.js +32 -0
  304. package/dist/services/local-posts.js.map +1 -0
  305. package/dist/services/panorama.d.ts +39 -0
  306. package/dist/services/panorama.d.ts.map +1 -0
  307. package/dist/services/panorama.js +175 -0
  308. package/dist/services/panorama.js.map +1 -0
  309. package/dist/services/passiveassist.d.ts +21 -0
  310. package/dist/services/passiveassist.d.ts.map +1 -0
  311. package/dist/services/passiveassist.js +70 -0
  312. package/dist/services/passiveassist.js.map +1 -0
  313. package/dist/services/photos.d.ts +46 -0
  314. package/dist/services/photos.d.ts.map +1 -0
  315. package/dist/services/photos.js +341 -0
  316. package/dist/services/photos.js.map +1 -0
  317. package/dist/services/places.d.ts +58 -0
  318. package/dist/services/places.d.ts.map +1 -0
  319. package/dist/services/places.js +240 -0
  320. package/dist/services/places.js.map +1 -0
  321. package/dist/services/reveal.d.ts +15 -0
  322. package/dist/services/reveal.d.ts.map +1 -0
  323. package/dist/services/reveal.js +41 -0
  324. package/dist/services/reveal.js.map +1 -0
  325. package/dist/services/reviews.d.ts +70 -0
  326. package/dist/services/reviews.d.ts.map +1 -0
  327. package/dist/services/reviews.js +245 -0
  328. package/dist/services/reviews.js.map +1 -0
  329. package/dist/services/search.d.ts +25 -0
  330. package/dist/services/search.d.ts.map +1 -0
  331. package/dist/services/search.js +130 -0
  332. package/dist/services/search.js.map +1 -0
  333. package/dist/services/static-map.d.ts +14 -0
  334. package/dist/services/static-map.d.ts.map +1 -0
  335. package/dist/services/static-map.js +182 -0
  336. package/dist/services/static-map.js.map +1 -0
  337. package/dist/services/suggest.d.ts +12 -0
  338. package/dist/services/suggest.d.ts.map +1 -0
  339. package/dist/services/suggest.js +36 -0
  340. package/dist/services/suggest.js.map +1 -0
  341. package/dist/services/tiles.d.ts +19 -0
  342. package/dist/services/tiles.d.ts.map +1 -0
  343. package/dist/services/tiles.js +77 -0
  344. package/dist/services/tiles.js.map +1 -0
  345. package/dist/services/timezone.d.ts +19 -0
  346. package/dist/services/timezone.d.ts.map +1 -0
  347. package/dist/services/timezone.js +91 -0
  348. package/dist/services/timezone.js.map +1 -0
  349. package/dist/services/traffic.d.ts +12 -0
  350. package/dist/services/traffic.d.ts.map +1 -0
  351. package/dist/services/traffic.js +40 -0
  352. package/dist/services/traffic.js.map +1 -0
  353. package/dist/services/transit.d.ts +22 -0
  354. package/dist/services/transit.d.ts.map +1 -0
  355. package/dist/services/transit.js +62 -0
  356. package/dist/services/transit.js.map +1 -0
  357. package/dist/services/ugc-aggregates.d.ts +17 -0
  358. package/dist/services/ugc-aggregates.d.ts.map +1 -0
  359. package/dist/services/ugc-aggregates.js +46 -0
  360. package/dist/services/ugc-aggregates.js.map +1 -0
  361. package/dist/types/batch-url.d.ts +21 -0
  362. package/dist/types/batch-url.d.ts.map +1 -0
  363. package/dist/types/batch-url.js +2 -0
  364. package/dist/types/batch-url.js.map +1 -0
  365. package/dist/types/categories.d.ts +43 -0
  366. package/dist/types/categories.d.ts.map +1 -0
  367. package/dist/types/categories.js +2 -0
  368. package/dist/types/categories.js.map +1 -0
  369. package/dist/types/common.d.ts +538 -0
  370. package/dist/types/common.d.ts.map +1 -0
  371. package/dist/types/common.js +77 -0
  372. package/dist/types/common.js.map +1 -0
  373. package/dist/types/directions.d.ts +88 -0
  374. package/dist/types/directions.d.ts.map +1 -0
  375. package/dist/types/directions.js +2 -0
  376. package/dist/types/directions.js.map +1 -0
  377. package/dist/types/distance-matrix.d.ts +40 -0
  378. package/dist/types/distance-matrix.d.ts.map +1 -0
  379. package/dist/types/distance-matrix.js +2 -0
  380. package/dist/types/distance-matrix.js.map +1 -0
  381. package/dist/types/elevation.d.ts +59 -0
  382. package/dist/types/elevation.d.ts.map +1 -0
  383. package/dist/types/elevation.js +2 -0
  384. package/dist/types/elevation.js.map +1 -0
  385. package/dist/types/geocode.d.ts +60 -0
  386. package/dist/types/geocode.d.ts.map +1 -0
  387. package/dist/types/geocode.js +2 -0
  388. package/dist/types/geocode.js.map +1 -0
  389. package/dist/types/links.d.ts +74 -0
  390. package/dist/types/links.d.ts.map +1 -0
  391. package/dist/types/links.js +2 -0
  392. package/dist/types/links.js.map +1 -0
  393. package/dist/types/lists.d.ts +41 -0
  394. package/dist/types/lists.d.ts.map +1 -0
  395. package/dist/types/lists.js +2 -0
  396. package/dist/types/lists.js.map +1 -0
  397. package/dist/types/maps-urls.d.ts +78 -0
  398. package/dist/types/maps-urls.d.ts.map +1 -0
  399. package/dist/types/maps-urls.js +2 -0
  400. package/dist/types/maps-urls.js.map +1 -0
  401. package/dist/types/panorama.d.ts +74 -0
  402. package/dist/types/panorama.d.ts.map +1 -0
  403. package/dist/types/panorama.js +2 -0
  404. package/dist/types/panorama.js.map +1 -0
  405. package/dist/types/passiveassist.d.ts +50 -0
  406. package/dist/types/passiveassist.d.ts.map +1 -0
  407. package/dist/types/passiveassist.js +2 -0
  408. package/dist/types/passiveassist.js.map +1 -0
  409. package/dist/types/photos.d.ts +101 -0
  410. package/dist/types/photos.d.ts.map +1 -0
  411. package/dist/types/photos.js +75 -0
  412. package/dist/types/photos.js.map +1 -0
  413. package/dist/types/protobuf.d.ts +33 -0
  414. package/dist/types/protobuf.d.ts.map +1 -0
  415. package/dist/types/protobuf.js +25 -0
  416. package/dist/types/protobuf.js.map +1 -0
  417. package/dist/types/reveal.d.ts +46 -0
  418. package/dist/types/reveal.d.ts.map +1 -0
  419. package/dist/types/reveal.js +2 -0
  420. package/dist/types/reveal.js.map +1 -0
  421. package/dist/types/reviews.d.ts +79 -0
  422. package/dist/types/reviews.d.ts.map +1 -0
  423. package/dist/types/reviews.js +5 -0
  424. package/dist/types/reviews.js.map +1 -0
  425. package/dist/types/search-filters.d.ts +59 -0
  426. package/dist/types/search-filters.d.ts.map +1 -0
  427. package/dist/types/search-filters.js +35 -0
  428. package/dist/types/search-filters.js.map +1 -0
  429. package/dist/types/static-map.d.ts +61 -0
  430. package/dist/types/static-map.d.ts.map +1 -0
  431. package/dist/types/static-map.js +2 -0
  432. package/dist/types/static-map.js.map +1 -0
  433. package/dist/types/suggest.d.ts +57 -0
  434. package/dist/types/suggest.d.ts.map +1 -0
  435. package/dist/types/suggest.js +2 -0
  436. package/dist/types/suggest.js.map +1 -0
  437. package/dist/types/tiles.d.ts +65 -0
  438. package/dist/types/tiles.d.ts.map +1 -0
  439. package/dist/types/tiles.js +2 -0
  440. package/dist/types/tiles.js.map +1 -0
  441. package/dist/types/timezone.d.ts +36 -0
  442. package/dist/types/timezone.d.ts.map +1 -0
  443. package/dist/types/timezone.js +2 -0
  444. package/dist/types/timezone.js.map +1 -0
  445. package/dist/types/traffic.d.ts +22 -0
  446. package/dist/types/traffic.d.ts.map +1 -0
  447. package/dist/types/traffic.js +2 -0
  448. package/dist/types/traffic.js.map +1 -0
  449. package/dist/types/transit.d.ts +46 -0
  450. package/dist/types/transit.d.ts.map +1 -0
  451. package/dist/types/transit.js +3 -0
  452. package/dist/types/transit.js.map +1 -0
  453. package/dist/types/ugc-aggregates.d.ts +14 -0
  454. package/dist/types/ugc-aggregates.d.ts.map +1 -0
  455. package/dist/types/ugc-aggregates.js +2 -0
  456. package/dist/types/ugc-aggregates.js.map +1 -0
  457. package/dist/utils/chunked-decoder.d.ts +9 -0
  458. package/dist/utils/chunked-decoder.d.ts.map +1 -0
  459. package/dist/utils/chunked-decoder.js +175 -0
  460. package/dist/utils/chunked-decoder.js.map +1 -0
  461. package/dist/utils/directions-metrics.d.ts +5 -0
  462. package/dist/utils/directions-metrics.d.ts.map +1 -0
  463. package/dist/utils/directions-metrics.js +62 -0
  464. package/dist/utils/directions-metrics.js.map +1 -0
  465. package/dist/utils/encoded-polyline.d.ts +9 -0
  466. package/dist/utils/encoded-polyline.d.ts.map +1 -0
  467. package/dist/utils/encoded-polyline.js +67 -0
  468. package/dist/utils/encoded-polyline.js.map +1 -0
  469. package/dist/utils/feature-id.d.ts +2 -0
  470. package/dist/utils/feature-id.d.ts.map +1 -0
  471. package/dist/utils/feature-id.js +11 -0
  472. package/dist/utils/feature-id.js.map +1 -0
  473. package/dist/utils/geo.d.ts +18 -0
  474. package/dist/utils/geo.d.ts.map +1 -0
  475. package/dist/utils/geo.js +40 -0
  476. package/dist/utils/geo.js.map +1 -0
  477. package/dist/utils/ids.d.ts +23 -0
  478. package/dist/utils/ids.d.ts.map +1 -0
  479. package/dist/utils/ids.js +81 -0
  480. package/dist/utils/ids.js.map +1 -0
  481. package/dist/utils/load-env.d.ts +7 -0
  482. package/dist/utils/load-env.d.ts.map +1 -0
  483. package/dist/utils/load-env.js +49 -0
  484. package/dist/utils/load-env.js.map +1 -0
  485. package/dist/utils/photo-url.d.ts +4 -0
  486. package/dist/utils/photo-url.d.ts.map +1 -0
  487. package/dist/utils/photo-url.js +35 -0
  488. package/dist/utils/photo-url.js.map +1 -0
  489. package/dist/utils/plus-code.d.ts +11 -0
  490. package/dist/utils/plus-code.d.ts.map +1 -0
  491. package/dist/utils/plus-code.js +83 -0
  492. package/dist/utils/plus-code.js.map +1 -0
  493. package/dist/utils/png.d.ts +25 -0
  494. package/dist/utils/png.d.ts.map +1 -0
  495. package/dist/utils/png.js +314 -0
  496. package/dist/utils/png.js.map +1 -0
  497. package/dist/utils/pooled.d.ts +6 -0
  498. package/dist/utils/pooled.d.ts.map +1 -0
  499. package/dist/utils/pooled.js +19 -0
  500. package/dist/utils/pooled.js.map +1 -0
  501. package/dist/utils/request-scheduler.d.ts +28 -0
  502. package/dist/utils/request-scheduler.d.ts.map +1 -0
  503. package/dist/utils/request-scheduler.js +58 -0
  504. package/dist/utils/request-scheduler.js.map +1 -0
  505. package/dist/utils/response-parser.d.ts +7 -0
  506. package/dist/utils/response-parser.d.ts.map +1 -0
  507. package/dist/utils/response-parser.js +50 -0
  508. package/dist/utils/response-parser.js.map +1 -0
  509. package/dist/utils/retry-backoff.d.ts +5 -0
  510. package/dist/utils/retry-backoff.d.ts.map +1 -0
  511. package/dist/utils/retry-backoff.js +23 -0
  512. package/dist/utils/retry-backoff.js.map +1 -0
  513. package/dist/utils/safe-get.d.ts +6 -0
  514. package/dist/utils/safe-get.d.ts.map +1 -0
  515. package/dist/utils/safe-get.js +29 -0
  516. package/dist/utils/safe-get.js.map +1 -0
  517. package/dist/utils/static-map-grid.d.ts +71 -0
  518. package/dist/utils/static-map-grid.d.ts.map +1 -0
  519. package/dist/utils/static-map-grid.js +103 -0
  520. package/dist/utils/static-map-grid.js.map +1 -0
  521. package/dist/utils/throttle-detection.d.ts +17 -0
  522. package/dist/utils/throttle-detection.d.ts.map +1 -0
  523. package/dist/utils/throttle-detection.js +71 -0
  524. package/dist/utils/throttle-detection.js.map +1 -0
  525. package/package.json +85 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Kumar Vandit
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,249 @@
1
+ # googlemaps-kit
2
+
3
+ > TypeScript SDK for programmatic access to Google Maps consumer surfaces.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/googlemaps-kit.svg)](https://www.npmjs.com/package/googlemaps-kit)
6
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue.svg)](https://www.typescriptlang.org/)
7
+ [![License](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
8
+ [![Node](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](./package.json)
9
+
10
+ ## Overview
11
+
12
+ Service-based client for search, places, reviews, directions, photos, geocoding, tiles,
13
+ and more. Calls the same HTTP endpoints the Maps web app uses. **No Maps Platform API
14
+ key. No browser or Playwright dependency** — plain `fetch` via Node (`undici`) with
15
+ browser-like headers and an automatically warmed anonymous cookie jar.
16
+
17
+ ## Disclaimer
18
+
19
+ Not an official Google product. Endpoints are undocumented and can change, throttle, or
20
+ block without notice. Intended for research and personal tooling, not bulk scraping.
21
+
22
+ ## How it works
23
+
24
+ 1. **Session bootstrap** — On first use, the client fetches Google/Maps HTML over HTTP and
25
+ stores anonymous cookies (for example `NID`, `AEC`). See `src/auth/session.ts`.
26
+ 2. **API calls** — Services build request URLs and protobuf payloads, then parse JSON
27
+ responses into typed results.
28
+ 3. **No headless browser** — Chromium/Playwright is not used at runtime. The only
29
+ exception is `passiveAssist`, which needs a viewport `psi` token you obtain outside
30
+ the SDK (for example from a browser session you control).
31
+
32
+ ## Features
33
+
34
+ ### Search and places
35
+
36
+ | Feature | Method | Example |
37
+ |---------|--------|---------|
38
+ | Text search | `maps.search.searchText()` | [search-text.ts](examples/search-text.ts) |
39
+ | Search (full rows) | `maps.search.search()` | [search-text.ts](examples/search-text.ts) |
40
+ | Search pagination | `maps.search.searchPage()` | [search-pagination.ts](examples/search-pagination.ts) |
41
+ | Place details | `maps.places.get()` | [place-get.ts](examples/place-get.ts) |
42
+ | Place + reviews | `maps.getPlaceFull()` | [place-full.ts](examples/place-full.ts) |
43
+ | Reviews (Boq, paginated) | `maps.reviews.listAll()` | [reviews-list.ts](examples/reviews-list.ts) |
44
+ | Autocomplete | `maps.suggest.suggest()` | [suggest.ts](examples/suggest.ts) |
45
+ | Map-click POI | `maps.reveal.revealAtClick()` | — |
46
+
47
+ `reviews.list()` tries Boq first, then embedded snippets from the place preview.
48
+
49
+ ### Directions and location
50
+
51
+ | Feature | Method | Example |
52
+ |---------|--------|---------|
53
+ | Directions | `maps.directions.get()` | [directions-get.ts](examples/directions-get.ts) |
54
+ | Geocode | `maps.geocode.geocode()` | [geocode.ts](examples/geocode.ts) |
55
+ | Reverse geocode | `maps.geocode.reverseGeocode()` | [geocode.ts](examples/geocode.ts) |
56
+ | Timezone | `maps.timezone.get()` | — |
57
+ | Distance matrix | `maps.distanceMatrix.getMatrix()` | — |
58
+ | Elevation | `maps.elevation.getAtPoint()` | — |
59
+
60
+ Distance matrix and elevation are **derived** by fanning out directions requests, not a
61
+ single Google matrix/elevation API.
62
+
63
+ ### Media and maps
64
+
65
+ | Feature | Method | Notes |
66
+ |---------|--------|-------|
67
+ | Place photos | `maps.photos.list()` | `batchexecute` when `lat`/`lng` set; else `place_preview` |
68
+ | Street View nearby | `maps.panorama.findNearby()` | Coverage tiles first |
69
+ | Map tiles | `maps.tiles.getTileByLatLng()` | 256px roadmap verified |
70
+ | Static map PNG | `maps.staticMap.getStaticMap()` | Stitched from `vt/proto` tiles |
71
+
72
+ ### Links and lists
73
+
74
+ | Feature | Method | Example |
75
+ |---------|--------|---------|
76
+ | Short link resolve | `maps.links.resolve()` | — |
77
+ | Parse Maps URL | `parseMapsUrl()` | [maps-url.ts](examples/maps-url.ts) |
78
+ | Build share link | `buildPlaceLink()`, … | [maps-url.ts](examples/maps-url.ts) |
79
+ | Public place lists | `maps.lists.get()` | — |
80
+
81
+ ### batchexecute
82
+
83
+ | Feature | Method |
84
+ |---------|--------|
85
+ | Area traffic | `maps.traffic.getAreaTraffic()` |
86
+ | Category taxonomy | `maps.categories.getHierarchy()` |
87
+ | Category suggestions | `maps.categories.suggest()` |
88
+ | Rating histogram | `maps.ugcAggregates.getPlaceAggregates()` |
89
+ | URL decode | `maps.batchUrl.decode()` |
90
+ | Short URL create | `maps.batchUrl.createShortUrl()` |
91
+ | Transit departures | `maps.transit.getStationDepartures()` |
92
+
93
+ Traffic, UGC aggregates, and batchexecute photo galleries resolve a Maps session `psi`
94
+ from the warmed HTTP session when you do not pass one.
95
+
96
+ Low-level RPC builders and parsers: `import from 'googlemaps-kit/internal'`.
97
+
98
+ ## Installation
99
+
100
+ ```bash
101
+ npm install googlemaps-kit
102
+ ```
103
+
104
+ **Requirements:** Node.js >= 18
105
+
106
+ **From source:**
107
+
108
+ ```bash
109
+ git clone https://github.com/KumarVandit/googlemaps-kit.git
110
+ cd googlemaps-kit
111
+ npm install && npm run build
112
+ ```
113
+
114
+ ## Quick start
115
+
116
+ ```typescript
117
+ import { createGMapsClient } from 'googlemaps-kit';
118
+
119
+ const maps = createGMapsClient({ hl: 'en', gl: 'in' });
120
+
121
+ const { places } = await maps.search.searchText({
122
+ query: 'cafes in indiranagar',
123
+ location: { lat: 12.98, lng: 77.64 },
124
+ limit: 5,
125
+ });
126
+
127
+ const top = places[0]!;
128
+ const place = await maps.places.get({
129
+ hexId: top.hexId!,
130
+ name: top.name,
131
+ lat: top.latitude ?? 12.98,
132
+ lng: top.longitude ?? 77.64,
133
+ mode: 'rich',
134
+ });
135
+
136
+ const reviews = await maps.reviews.listAll({
137
+ hexId: place.hexId!,
138
+ limit: 10,
139
+ maxPages: 1,
140
+ });
141
+
142
+ console.log(place.name, place.rating, reviews.reviews.length, 'reviews');
143
+ ```
144
+
145
+ From a git checkout:
146
+
147
+ ```bash
148
+ npm run example:quick-start
149
+ ```
150
+
151
+ ## Configuration
152
+
153
+ `createGMapsClient()` loads `.env.local` then `.env` from the working directory
154
+ (see `loadProjectEnv()`). Existing `process.env` values are not overwritten.
155
+
156
+ | Option | Env var | Default | Description |
157
+ |--------|---------|---------|-------------|
158
+ | `hl` | `GMAPS_HL` | `en` | Language |
159
+ | `gl` | `GMAPS_GL` | `us` | Region |
160
+ | `requestDelayMs` | `GMAPS_REQUEST_DELAY_MS` | `0` | Min delay between request starts |
161
+ | `concurrency` | `GMAPS_CONCURRENCY` | `6` | Max parallel in-flight requests |
162
+ | `debug` | — | `false` | Log requests/responses (pass in config, not an env var) |
163
+ | `maxRetries` | — | `2` | Retries on transient failures |
164
+ | `retryDelay` | — | `500` | Base retry delay (ms) |
165
+
166
+ Copy [`.env.example`](./.env.example) to `.env.local` for local overrides.
167
+
168
+ ## Client
169
+
170
+ `createGMapsClient()` exposes **24 services**:
171
+
172
+ `search`, `places`, `reviews`, `directions`, `geocode`, `distanceMatrix`, `elevation`,
173
+ `timezone`, `staticMap`, `suggest`, `panorama`, `tiles`, `lists`, `photos`, `links`,
174
+ `traffic`, `transit`, `categories`, `ugcAggregates`, `batchUrl`, `knowledge`,
175
+ `localPosts`, `reveal`, `passiveAssist`
176
+
177
+ **Convenience methods on the client:** `getPlaceFull`, `getPlaceComplete`, `getDirections`,
178
+ `searchEnriched`, `getHttpStats()`
179
+
180
+ **Advanced (lazy-loaded):** `rpc()`, `features()`, `runtime()`
181
+
182
+ **Standalone exports:** `parseMapsUrl`, `buildPlaceLink`, `encodePolyline`,
183
+ `decodeEncodedPolyline`, error classes, and domain types.
184
+
185
+ ## Error handling
186
+
187
+ ```typescript
188
+ import {
189
+ createGMapsClient,
190
+ GMapsThrottleError,
191
+ GMapsPhotosBlockedError,
192
+ GMapsEmptyPayloadError,
193
+ } from 'googlemaps-kit';
194
+
195
+ const maps = createGMapsClient();
196
+
197
+ try {
198
+ await maps.photos.list({
199
+ hexId: '0x…',
200
+ lat: 12.91,
201
+ lng: 77.65,
202
+ source: 'listentityphotos', // GET RPC; often blocked
203
+ });
204
+ } catch (error) {
205
+ if (error instanceof GMapsThrottleError) {
206
+ // Back off (client also retries with jitter)
207
+ } else if (error instanceof GMapsPhotosBlockedError) {
208
+ // Prefer default source or `source: 'batchexecute'`
209
+ } else if (error instanceof GMapsEmptyPayloadError) {
210
+ // HTTP 200 but empty/stub body
211
+ }
212
+ }
213
+ ```
214
+
215
+ ## Best practices
216
+
217
+ - Set `requestDelayMs` and `concurrency` for scheduled or high-volume jobs.
218
+ - Under load, Google may return **HTTP 200 with truncated payloads** (fewer photos, missing
219
+ `reviewCount`). Check field presence, not status codes alone.
220
+ - Pass `lat` and `lng` to `maps.photos.list()` for batchexecute galleries with metadata;
221
+ without coordinates it uses place preview URLs only.
222
+ - Avoid `source: 'listentityphotos'`; many IPs get an abuse block (`GMapsPhotosBlockedError`).
223
+ - `distanceMatrix.getMatrix()` costs **N×M directions requests** (deduped, bounded concurrency).
224
+ - First batchexecute call may warm the session; empty 200 responses often mean the jar was
225
+ not warmed yet, not that the place has no data.
226
+
227
+ ## Limitations
228
+
229
+ - Unofficial reverse-engineered surfaces; no stability guarantee.
230
+ - No logged-in Google account support in the public API.
231
+ - `knowledge.get()` uses place-preview fields as fallback (not a live knowledge-graph RPC).
232
+ - `localPosts.list()` is unverified (sampled businesses returned empty payloads).
233
+ - `passiveAssist.getViewportChips()` requires a viewport `psi` you supply; the SDK does not
234
+ open a browser.
235
+ - Map tiles: 256px roadmap layer verified; other layers/sizes may return HTTP 400.
236
+ - Bicycling directions are sparse in some regions.
237
+
238
+ ## Development
239
+
240
+ ```bash
241
+ npm test
242
+ npm run build
243
+ npm run examples:all # build + run every public example (live network)
244
+ npm run verify:all # live HTTP checks against Google
245
+ ```
246
+
247
+ ## License
248
+
249
+ MIT
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Signed-in session detection for googlemaps-kit.
3
+ *
4
+ * Never logs or returns cookie/token values — only names and lengths.
5
+ */
6
+ import type { HttpClient } from '../client/http-client.js';
7
+ import { type AuthStatus } from '../types/common.js';
8
+ export interface AuthStatusOptions {
9
+ liveCheck?: boolean;
10
+ hl?: string;
11
+ gl?: string;
12
+ }
13
+ export declare class AuthService {
14
+ private http;
15
+ private configuredCookies?;
16
+ private configuredAuthToken?;
17
+ private lastStatus;
18
+ private lastCheckedAt;
19
+ private readonly statusTtlMs;
20
+ constructor(http: HttpClient, options?: {
21
+ cookies?: string;
22
+ authToken?: string;
23
+ });
24
+ getStatus(options?: AuthStatusOptions): Promise<AuthStatus>;
25
+ assertSignedIn(options?: AuthStatusOptions): Promise<AuthStatus>;
26
+ private cacheStatus;
27
+ private probeListUgc;
28
+ }
29
+ export declare function summarizeAuthStatus(status: AuthStatus): string;
30
+ //# sourceMappingURL=auth-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-status.d.ts","sourceRoot":"","sources":["../../src/auth/auth-status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAA4B,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAM/E,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAUD,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,iBAAiB,CAAC,CAAS;IACnC,OAAO,CAAC,mBAAmB,CAAC,CAAS;IACrC,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;gBAG3C,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;IAOlD,SAAS,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IAsF/D,cAAc,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IAW1E,OAAO,CAAC,WAAW;YAKL,YAAY;CA0C3B;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAQ9D"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Signed-in session detection for googlemaps-kit.
3
+ *
4
+ * Never logs or returns cookie/token values — only names and lengths.
5
+ */
6
+ import { buildGoogleAuthorization, buildAuthenticatedHeaders } from './google-auth.js';
7
+ import { extractMapsPageTokens } from './maps-tokens.js';
8
+ import { cookiesToHeader, randomUserAgent } from './session.js';
9
+ import { GMapsCookiesExpiredError } from '../types/common.js';
10
+ import { buildReviewsUrl } from '../rpc/pb-builders.js';
11
+ import { isListUgcUnauthenticatedStub } from '../utils/throttle-detection.js';
12
+ import { parseGoogleResponse } from '../utils/response-parser.js';
13
+ function redactCookieNames(jar) {
14
+ return Object.keys(jar);
15
+ }
16
+ function hasSapisidFamily(jar) {
17
+ return Boolean(jar.SAPISID || jar['__Secure-1PAPISID'] || jar['__Secure-3PAPISID']);
18
+ }
19
+ export class AuthService {
20
+ http;
21
+ configuredCookies;
22
+ configuredAuthToken;
23
+ lastStatus = null;
24
+ lastCheckedAt = 0;
25
+ statusTtlMs = 5 * 60 * 1000;
26
+ constructor(http, options = {}) {
27
+ this.http = http;
28
+ this.configuredCookies = options.cookies;
29
+ this.configuredAuthToken = options.authToken;
30
+ }
31
+ async getStatus(options = {}) {
32
+ const runLive = options.liveCheck !== false;
33
+ if (!runLive &&
34
+ this.lastStatus &&
35
+ Date.now() - this.lastCheckedAt < this.statusTtlMs) {
36
+ return this.lastStatus;
37
+ }
38
+ const jar = this.http.getCookieJar();
39
+ const cookieNames = redactCookieNames(jar);
40
+ const cookiesPresent = cookieNames.length > 0 || Boolean(this.configuredCookies);
41
+ const authToken = this.configuredAuthToken ?? this.http.getConfiguredAuthToken() ?? '';
42
+ const authTokenPresent = authToken.length > 0;
43
+ const sapisidHash = hasSapisidFamily(jar) && Boolean(buildGoogleAuthorization(jar));
44
+ const batchexecuteXsrf = authTokenPresent;
45
+ const base = {
46
+ signedIn: false,
47
+ cookiesPresent,
48
+ cookieNames,
49
+ authTokenPresent,
50
+ authTokenLength: authToken.length,
51
+ capabilities: {
52
+ sapisidHash,
53
+ batchexecuteXsrf,
54
+ batchUgcPosts: sapisidHash && batchexecuteXsrf,
55
+ },
56
+ };
57
+ if (!cookiesPresent) {
58
+ base.message =
59
+ 'No signed-in cookies configured. Anonymous mode is active — run `npm run auth:login` to upgrade.';
60
+ this.cacheStatus(base);
61
+ return base;
62
+ }
63
+ if (!runLive) {
64
+ base.signedIn = sapisidHash;
65
+ base.message = sapisidHash
66
+ ? 'Auth cookies present (live check skipped).'
67
+ : 'Cookies present but no SAPISID — listugcposts will not work.';
68
+ this.cacheStatus(base);
69
+ return base;
70
+ }
71
+ try {
72
+ const tokens = await extractMapsPageTokens(jar, this.http.getUserAgent());
73
+ if (tokens.authToken && tokens.authToken.length > 0 && !authTokenPresent) {
74
+ base.authTokenPresent = true;
75
+ base.authTokenLength = tokens.authToken.length;
76
+ base.capabilities.batchexecuteXsrf = true;
77
+ base.capabilities.batchUgcPosts = sapisidHash;
78
+ }
79
+ const listUgc = await this.probeListUgc(options);
80
+ if (listUgc === 'valid') {
81
+ base.signedIn = true;
82
+ base.liveCheck = 'valid';
83
+ base.message = 'Signed-in session is valid.';
84
+ }
85
+ else if (listUgc === 'expired') {
86
+ base.signedIn = false;
87
+ base.liveCheck = 'expired';
88
+ base.message =
89
+ 'Cookies expired or rejected — re-run: npm run auth:login';
90
+ }
91
+ else if (sapisidHash && tokens.authToken.length > 0) {
92
+ base.signedIn = true;
93
+ base.liveCheck = 'valid';
94
+ base.message = 'Signed-in (SAPISID + SNlM0e present; listugcposts stub not re-probed).';
95
+ }
96
+ else {
97
+ base.signedIn = false;
98
+ base.liveCheck = 'anonymous';
99
+ base.message =
100
+ 'Cookies present but session behaves as anonymous — re-run: npm run auth:login';
101
+ }
102
+ }
103
+ catch {
104
+ base.liveCheck = 'error';
105
+ base.message = 'Live auth check failed — cookies may be stale.';
106
+ }
107
+ this.cacheStatus(base);
108
+ return base;
109
+ }
110
+ async assertSignedIn(options = {}) {
111
+ const status = await this.getStatus(options);
112
+ if (!this.configuredCookies && !status.cookiesPresent) {
113
+ return status;
114
+ }
115
+ if (status.liveCheck === 'expired' || (status.cookiesPresent && !status.signedIn)) {
116
+ throw new GMapsCookiesExpiredError(status.message);
117
+ }
118
+ return status;
119
+ }
120
+ cacheStatus(status) {
121
+ this.lastStatus = status;
122
+ this.lastCheckedAt = Date.now();
123
+ }
124
+ async probeListUgc(options) {
125
+ if (!hasSapisidFamily(this.http.getCookieJar())) {
126
+ return 'anonymous';
127
+ }
128
+ const url = buildReviewsUrl({
129
+ hexId: '0x3bae1500315fdff7:0x9fe54cd44a84f1c7',
130
+ limit: 3,
131
+ hl: options.hl ?? 'en',
132
+ gl: options.gl ?? 'in',
133
+ });
134
+ const jar = this.http.getCookieJar();
135
+ const response = await fetch(url, {
136
+ headers: {
137
+ 'User-Agent': this.http.getUserAgent() || randomUserAgent(),
138
+ Cookie: cookiesToHeader(jar),
139
+ Accept: '*/*',
140
+ ...buildAuthenticatedHeaders(jar, { referer: 'https://www.google.com/' }),
141
+ },
142
+ redirect: 'follow',
143
+ });
144
+ const body = await response.text();
145
+ if (response.url.includes('accounts.google.com')) {
146
+ return 'expired';
147
+ }
148
+ const parsed = parseGoogleResponse(body);
149
+ const root = Array.isArray(parsed) && Array.isArray(parsed[0]) ? parsed[0] : parsed;
150
+ if (isListUgcUnauthenticatedStub(root)) {
151
+ return 'expired';
152
+ }
153
+ if (Array.isArray(root) && JSON.stringify(root).length > 40) {
154
+ return 'valid';
155
+ }
156
+ return 'anonymous';
157
+ }
158
+ }
159
+ export function summarizeAuthStatus(status) {
160
+ const parts = [
161
+ status.signedIn ? 'signed-in' : 'anonymous',
162
+ `cookies=${status.cookieNames.length}`,
163
+ `authTokenLen=${status.authTokenLength}`,
164
+ ];
165
+ if (status.liveCheck)
166
+ parts.push(`live=${status.liveCheck}`);
167
+ return parts.join(', ');
168
+ }
169
+ //# sourceMappingURL=auth-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-status.js","sourceRoot":"","sources":["../../src/auth/auth-status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Build Google SAPISIDHASH Authorization header required by /maps/rpc/listugcposts.
3
+ */
4
+ export declare function buildGoogleAuthorization(cookies: Record<string, string>, now?: number): string | undefined;
5
+ export declare function buildAuthenticatedHeaders(cookies: Record<string, string>, options?: {
6
+ referer?: string;
7
+ now?: number;
8
+ }): Record<string, string>;
9
+ //# sourceMappingURL=google-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-auth.d.ts","sourceRoot":"","sources":["../../src/auth/google-auth.ts"],"names":[],"mappings":"AAgBA;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,GAAG,SAAa,GACf,MAAM,GAAG,SAAS,CAUpB;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB"}
@@ -0,0 +1,40 @@
1
+ import { createHash } from 'node:crypto';
2
+ const GOOGLE_ORIGIN = 'https://www.google.com';
3
+ const SAPISID_COOKIES = [
4
+ { name: 'SAPISID', label: 'SAPISIDHASH' },
5
+ { name: '__Secure-1PAPISID', label: 'SAPISID1PHASH' },
6
+ { name: '__Secure-3PAPISID', label: 'SAPISID3PHASH' },
7
+ ];
8
+ function sapisidHash(timestampMs, sapisid, origin) {
9
+ const payload = `${timestampMs} ${sapisid} ${origin}`;
10
+ const digest = createHash('sha1').update(payload).digest('hex');
11
+ return `${timestampMs}_${digest}`;
12
+ }
13
+ /**
14
+ * Build Google SAPISIDHASH Authorization header required by /maps/rpc/listugcposts.
15
+ */
16
+ export function buildGoogleAuthorization(cookies, now = Date.now()) {
17
+ const parts = [];
18
+ for (const { name, label } of SAPISID_COOKIES) {
19
+ const value = cookies[name];
20
+ if (!value)
21
+ continue;
22
+ parts.push(`${label} ${sapisidHash(now, value, GOOGLE_ORIGIN)}`);
23
+ }
24
+ return parts.length > 0 ? parts.join(' ') : undefined;
25
+ }
26
+ export function buildAuthenticatedHeaders(cookies, options) {
27
+ const headers = {
28
+ Origin: GOOGLE_ORIGIN,
29
+ Referer: options?.referer ?? `${GOOGLE_ORIGIN}/maps/`,
30
+ 'X-Goog-AuthUser': '0',
31
+ 'X-Same-Domain': '1',
32
+ 'x-maps-diversion-context-bin': 'CAE=',
33
+ };
34
+ const auth = buildGoogleAuthorization(cookies, options?.now);
35
+ if (auth) {
36
+ headers.Authorization = auth;
37
+ }
38
+ return headers;
39
+ }
40
+ //# sourceMappingURL=google-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-auth.js","sourceRoot":"","sources":["../../src/auth/google-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAE/C,MAAM,eAAe,GAA2C;IAC9D,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE;IACzC,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,EAAE;IACrD,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,EAAE;CACtD,CAAC;AAEF,SAAS,WAAW,CAAC,WAAmB,EAAE,OAAe,EAAE,MAAc;IACvE,MAAM,OAAO,GAAG,GAAG,WAAW,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;IACtD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChE,OAAO,GAAG,WAAW,IAAI,MAAM,EAAE,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAA+B,EAC/B,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAEhB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,eAAe,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,OAA+B,EAC/B,OAA4C;IAE5C,MAAM,OAAO,GAA2B;QACtC,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,GAAG,aAAa,QAAQ;QACrD,iBAAiB,EAAE,GAAG;QACtB,eAAe,EAAE,GAAG;QACpB,8BAA8B,EAAE,MAAM;KACvC,CAAC;IAEF,MAAM,IAAI,GAAG,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC7D,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Extract batchexecute tokens from a Maps HTML bootstrap page.
3
+ */
4
+ import type { MapsPageTokens } from '../types/common.js';
5
+ export declare function extractMapsPageTokens(cookies: Record<string, string>, userAgent: string, fetchImpl?: typeof fetch): Promise<MapsPageTokens>;
6
+ //# sourceMappingURL=maps-tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maps-tokens.d.ts","sourceRoot":"","sources":["../../src/auth/maps-tokens.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,cAAc,CAAC,CAYzB"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Extract batchexecute tokens from a Maps HTML bootstrap page.
3
+ */
4
+ import { buildBrowserHeaders } from './session.js';
5
+ import { parseMapsPageTokens } from '../rpc/app-options.js';
6
+ export async function extractMapsPageTokens(cookies, userAgent, fetchImpl = fetch) {
7
+ const response = await fetchImpl('https://www.google.com/maps', {
8
+ headers: buildBrowserHeaders({
9
+ userAgent,
10
+ cookies,
11
+ mode: 'document',
12
+ }),
13
+ redirect: 'follow',
14
+ });
15
+ const html = await response.text();
16
+ return parseMapsPageTokens(html);
17
+ }
18
+ //# sourceMappingURL=maps-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maps-tokens.js","sourceRoot":"","sources":["../../src/auth/maps-tokens.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA+B,EAC/B,SAAiB,EACjB,YAA0B,KAAK;IAE/B,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,6BAA6B,EAAE;QAC9D,OAAO,EAAE,mBAAmB,CAAC;YAC3B,SAAS;YACT,OAAO;YACP,IAAI,EAAE,UAAU;SACjB,CAAC;QACF,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Session bootstrap for Google Maps internal APIs (raw HTTP, no browser).
3
+ *
4
+ * Follows the google.com → consent.google.com → maps cookie chain used by
5
+ * production scrapers to obtain NID/AEC session cookies.
6
+ */
7
+ export declare function randomUserAgent(): string;
8
+ export interface CookieJarState {
9
+ cookies: Record<string, string>;
10
+ userAgent: string;
11
+ fetchedAt: number;
12
+ }
13
+ export declare function cookiesToHeader(jar: Record<string, string>): string;
14
+ export declare function buildBrowserHeaders(options?: {
15
+ userAgent?: string;
16
+ referer?: string;
17
+ cookies?: Record<string, string> | string;
18
+ mode?: 'document' | 'cors';
19
+ }): Record<string, string>;
20
+ /** Default SOCS consent cookie for anonymous Maps sessions. */
21
+ export declare const DEFAULT_SOCS = "CAISNQgEEitib3FfaWRlbnRpdHlmcm9udGVuZHVpc2VydmVyXzIwMjYwMTE4LjA5X3AwGgJlbiACGgYIgIu7ywY";
22
+ /**
23
+ * Bootstrap cookies via the 3-step chain. Returns a cookie jar with NID when successful.
24
+ */
25
+ export declare function bootstrapSession(force?: boolean, fetchImpl?: typeof fetch): Promise<CookieJarState>;
26
+ export declare function clearSessionCache(): void;
27
+ export declare function getCachedSession(): CookieJarState | null;
28
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/auth/session.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAmBD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAInE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;IAC1C,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;CAC5B,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA8BzB;AAED,+DAA+D;AAC/D,eAAO,MAAM,YAAY,4FACkE,CAAC;AAE5F;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,UAAQ,EACb,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,cAAc,CAAC,CAgCzB;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED,wBAAgB,gBAAgB,IAAI,cAAc,GAAG,IAAI,CAExD"}