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
@@ -0,0 +1,147 @@
1
+ import { parseReviewCountLabel } from '../utils/feature-id.js';
2
+ import { safeGet } from '../utils/safe-get.js';
3
+ /** Parse review count from place/search rating block at index [4]. */
4
+ export function parseReviewCountFromBlock(block) {
5
+ if (!Array.isArray(block))
6
+ return undefined;
7
+ const direct = block[8];
8
+ if (typeof direct === 'number' && Number.isFinite(direct)) {
9
+ return direct;
10
+ }
11
+ const label = block[3];
12
+ if (Array.isArray(label)) {
13
+ const fromLabel = parseReviewCountLabel(label[1]);
14
+ if (fromLabel != null)
15
+ return fromLabel;
16
+ }
17
+ return undefined;
18
+ }
19
+ export function parseReviewCount(placeData) {
20
+ return parseReviewCountFromBlock(placeData[4]);
21
+ }
22
+ export function parsePriceRange(block) {
23
+ if (!Array.isArray(block))
24
+ return undefined;
25
+ const direct = block[2];
26
+ if (typeof direct === 'string' && direct.length > 0)
27
+ return direct;
28
+ const alt = block[10];
29
+ if (typeof alt === 'string' && alt.length > 0)
30
+ return alt;
31
+ return undefined;
32
+ }
33
+ export function parsePriceLevel(block) {
34
+ if (!Array.isArray(block))
35
+ return undefined;
36
+ const level = block[14];
37
+ if (typeof level === 'number' && level >= 1 && level <= 4)
38
+ return level;
39
+ return undefined;
40
+ }
41
+ export function parseWebsiteFromContact(contact) {
42
+ if (!Array.isArray(contact))
43
+ return undefined;
44
+ const directUrl = contact[0];
45
+ if (typeof directUrl === 'string' && directUrl.startsWith('http') && !directUrl.includes('google.com')) {
46
+ return directUrl;
47
+ }
48
+ for (const item of contact.slice(0, 12)) {
49
+ if (typeof item === 'string' && item.includes('/url?q=')) {
50
+ try {
51
+ const url = new URL(item, 'https://www.google.com');
52
+ const q = url.searchParams.get('q');
53
+ if (q)
54
+ return q;
55
+ }
56
+ catch {
57
+ // ignore
58
+ }
59
+ }
60
+ else if (typeof item === 'string' && item.startsWith('http') && !item.includes('google.com')) {
61
+ return item;
62
+ }
63
+ }
64
+ return undefined;
65
+ }
66
+ export function parsePhone(placeData) {
67
+ const phoneData = safeGet(placeData, 178);
68
+ if (!Array.isArray(phoneData) || phoneData.length === 0)
69
+ return undefined;
70
+ const inner = phoneData[0];
71
+ if (Array.isArray(inner) && typeof inner[0] === 'string') {
72
+ return inner[0];
73
+ }
74
+ if (typeof inner === 'string') {
75
+ return inner;
76
+ }
77
+ return safeGet(placeData, 178, 0, 0);
78
+ }
79
+ export function normalizeHoursText(value) {
80
+ return value.replace(/\u202f/g, ' ').replace(/\u2013/g, '-').replace(/\u2014/g, '-').trim();
81
+ }
82
+ /**
83
+ * Convert user-authored HTML into plain text.
84
+ *
85
+ * Google returns review bodies with markup intact — `<br>` for the author's line breaks
86
+ * and HTML entities — so callers rendering the text elsewhere would otherwise leak tags.
87
+ */
88
+ export function htmlToPlainText(value) {
89
+ return value
90
+ .replace(/<br\s*\/?>/gi, '\n')
91
+ .replace(/<\/p>\s*<p[^>]*>/gi, '\n\n')
92
+ .replace(/<[^>]+>/g, '')
93
+ .replace(/&nbsp;/g, ' ')
94
+ .replace(/&lt;/g, '<')
95
+ .replace(/&gt;/g, '>')
96
+ .replace(/&quot;/g, '"')
97
+ .replace(/&#39;/g, "'")
98
+ .replace(/&amp;/g, '&')
99
+ .replace(/[ \t]+/g, ' ')
100
+ .replace(/\n{3,}/g, '\n\n')
101
+ .replace(/[ \t]*\n[ \t]*/g, '\n')
102
+ .trim();
103
+ }
104
+ const DAY_NAME_RE = /^(monday|tuesday|wednesday|thursday|friday|saturday|sunday)$/i;
105
+ /** Collect day-hour entries from nested Maps hours protobuf trees. */
106
+ export function collectHourDayEntries(hoursRoot, maxDepth = 6) {
107
+ const entries = [];
108
+ function walk(node, depth) {
109
+ if (!Array.isArray(node) || depth > maxDepth)
110
+ return;
111
+ if (node.length >= 4 &&
112
+ typeof node[0] === 'string' &&
113
+ DAY_NAME_RE.test(node[0])) {
114
+ entries.push(node);
115
+ return;
116
+ }
117
+ for (const item of node) {
118
+ walk(item, depth + 1);
119
+ }
120
+ }
121
+ walk(hoursRoot, 0);
122
+ return entries;
123
+ }
124
+ export function parseOpenStatus(hoursRoot) {
125
+ if (!Array.isArray(hoursRoot))
126
+ return undefined;
127
+ function walk(node, depth = 0) {
128
+ if (depth > 8)
129
+ return undefined;
130
+ if (typeof node === 'string') {
131
+ if (/^(open|closed)\b/i.test(node) || /open ·|closed ·/i.test(node)) {
132
+ return normalizeHoursText(node);
133
+ }
134
+ return undefined;
135
+ }
136
+ if (!Array.isArray(node))
137
+ return undefined;
138
+ for (const item of node) {
139
+ const found = walk(item, depth + 1);
140
+ if (found)
141
+ return found;
142
+ }
143
+ return undefined;
144
+ }
145
+ return walk(hoursRoot);
146
+ }
147
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/parsers/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { SuggestResult } from '../types/suggest.js';
2
+ /**
3
+ * Extract omnibox suggestions from a parsed (or chunked-wrapped) suggest response.
4
+ *
5
+ * Defensive against sparse null-filled arrays — missing indices never throw.
6
+ */
7
+ export declare function extractSuggestions(data: unknown, options?: {
8
+ raw?: boolean;
9
+ }): SuggestResult;
10
+ //# sourceMappingURL=suggest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../src/parsers/suggest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAA8B,MAAM,qBAAqB,CAAC;AAsIrF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,aAAa,CAmC5F"}
@@ -0,0 +1,153 @@
1
+ import { htmlToPlainText } from './shared.js';
2
+ import { parseGoogleResponse } from '../utils/response-parser.js';
3
+ import { safeGet } from '../utils/safe-get.js';
4
+ function isChunkedWrapper(value) {
5
+ return (value != null &&
6
+ typeof value === 'object' &&
7
+ !Array.isArray(value) &&
8
+ typeof value.d === 'string' &&
9
+ 'c' in value);
10
+ }
11
+ /** Unwrap `{c,d}` chunked envelopes emitted when `tch=1` is sent. */
12
+ function unwrapSuggestPayload(data) {
13
+ if (isChunkedWrapper(data)) {
14
+ return parseGoogleResponse(data.d);
15
+ }
16
+ return data;
17
+ }
18
+ function asPlainText(value) {
19
+ if (typeof value !== 'string')
20
+ return undefined;
21
+ const trimmed = value.trim();
22
+ if (!trimmed)
23
+ return undefined;
24
+ return htmlToPlainText(trimmed);
25
+ }
26
+ /**
27
+ * Decode the wrapped place id at S[0][27]: `BChIJ…=` → `ChIJ…`.
28
+ */
29
+ function parseWrappedPlaceId(value) {
30
+ if (typeof value !== 'string' || !value)
31
+ return undefined;
32
+ let id = value.trim();
33
+ if (id.startsWith('B') && id.endsWith('=')) {
34
+ id = id.slice(1, -1);
35
+ }
36
+ else if (id.endsWith('=')) {
37
+ id = id.slice(0, -1);
38
+ }
39
+ if (/^ChIJ|^GhIJ|^EhIJ/.test(id)) {
40
+ return id;
41
+ }
42
+ return undefined;
43
+ }
44
+ function parseHexId(value) {
45
+ if (typeof value !== 'string' || !value.includes(':0x'))
46
+ return undefined;
47
+ return value;
48
+ }
49
+ function parseFeatureId(value) {
50
+ if (typeof value !== 'string')
51
+ return undefined;
52
+ if (value.startsWith('/m/') || value.startsWith('/g/'))
53
+ return value;
54
+ return undefined;
55
+ }
56
+ function parseThumbnail(payload) {
57
+ // Brand/chain logo URLs live at [23][6][0] (verified on starbucks suggest probe).
58
+ // Legacy parsers also checked [24][6][0] — kept as fallback.
59
+ for (const blockIndex of [23, 24]) {
60
+ const direct = safeGet(payload, blockIndex, 6, 0);
61
+ if (typeof direct === 'string' && direct.startsWith('http'))
62
+ return direct;
63
+ const nested = safeGet(payload, blockIndex, 6);
64
+ if (Array.isArray(nested)) {
65
+ for (const item of nested) {
66
+ if (typeof item === 'string' && item.startsWith('http'))
67
+ return item;
68
+ }
69
+ }
70
+ }
71
+ return undefined;
72
+ }
73
+ function classifyKind(hexId, placeId) {
74
+ if (hexId || placeId)
75
+ return 'place';
76
+ return 'query';
77
+ }
78
+ function suggestionKey(suggestion) {
79
+ return [
80
+ suggestion.kind,
81
+ suggestion.text,
82
+ suggestion.primaryText ?? '',
83
+ suggestion.secondaryText ?? '',
84
+ suggestion.hexId ?? '',
85
+ suggestion.placeId ?? '',
86
+ ].join('\0');
87
+ }
88
+ function parseSuggestionPayload(payload) {
89
+ if (!Array.isArray(payload))
90
+ return undefined;
91
+ const fullText = asPlainText(safeGet(payload, 0, 0));
92
+ const primaryText = asPlainText(safeGet(payload, 1, 0));
93
+ const secondaryText = asPlainText(safeGet(payload, 2, 0));
94
+ const placeId = parseWrappedPlaceId(safeGet(payload, 0, 27));
95
+ const hexFrom13 = parseHexId(safeGet(payload, 13, 0, 0));
96
+ const hexFrom14 = parseHexId(safeGet(payload, 14, 1));
97
+ const hexId = hexFrom13 ?? hexFrom14;
98
+ const featureId = parseFeatureId(safeGet(payload, 13, 0, 10));
99
+ const thumbnailUrl = parseThumbnail(payload);
100
+ const countryCode = asPlainText(payload[34]);
101
+ const text = fullText ?? primaryText;
102
+ if (!text)
103
+ return undefined;
104
+ const kind = classifyKind(hexId, placeId);
105
+ return {
106
+ kind,
107
+ text,
108
+ primaryText,
109
+ secondaryText,
110
+ placeId,
111
+ hexId,
112
+ featureId,
113
+ thumbnailUrl,
114
+ countryCode: countryCode && countryCode.length === 2 ? countryCode.toUpperCase() : undefined,
115
+ };
116
+ }
117
+ /**
118
+ * Extract omnibox suggestions from a parsed (or chunked-wrapped) suggest response.
119
+ *
120
+ * Defensive against sparse null-filled arrays — missing indices never throw.
121
+ */
122
+ export function extractSuggestions(data, options) {
123
+ const unwrapped = unwrapSuggestPayload(data);
124
+ const root = Array.isArray(unwrapped) ? unwrapped : [];
125
+ const query = asPlainText(safeGet(root, 0, 0)) ?? '';
126
+ const sessionToken = asPlainText(root[7]);
127
+ const entries = safeGet(root, 0, 1);
128
+ const suggestions = [];
129
+ const seen = new Set();
130
+ if (Array.isArray(entries)) {
131
+ for (const entry of entries) {
132
+ const payload = safeGet(entry, 22);
133
+ const suggestion = parseSuggestionPayload(payload);
134
+ if (!suggestion)
135
+ continue;
136
+ const key = suggestionKey(suggestion);
137
+ if (seen.has(key))
138
+ continue;
139
+ seen.add(key);
140
+ suggestions.push(suggestion);
141
+ }
142
+ }
143
+ const result = {
144
+ query,
145
+ suggestions,
146
+ sessionToken,
147
+ };
148
+ if (options?.raw) {
149
+ result.raw = unwrapped;
150
+ }
151
+ return result;
152
+ }
153
+ //# sourceMappingURL=suggest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest.js","sourceRoot":"","sources":["../../src/parsers/suggest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Parse protobuf-wrapped basemap tile responses.
3
+ *
4
+ * `/maps/vt/proto` and `/maps/vt/stream` return `application/x-octet-stream` bodies
5
+ * where a PNG image is embedded inside a protobuf envelope. The PNG magic `\x89PNG`
6
+ * appears after a short protobuf header; locate it and slice through the IEND chunk.
7
+ */
8
+ /** Locate the PNG signature inside a protobuf-wrapped tile body. */
9
+ export declare function findPngOffset(data: Uint8Array): number;
10
+ /**
11
+ * Extract raw PNG bytes from a protobuf-wrapped tile response.
12
+ * Returns null when no valid PNG envelope is found.
13
+ */
14
+ export declare function unwrapTilePng(data: Uint8Array): Uint8Array | null;
15
+ /** Read PNG width/height from the IHDR chunk (first chunk after the 8-byte signature). */
16
+ export declare function readPngDimensions(data: Uint8Array): {
17
+ width: number;
18
+ height: number;
19
+ } | null;
20
+ /** True when the buffer contains a PNG signature (raw or protobuf-wrapped). */
21
+ export declare function isPngBytes(data: Uint8Array): boolean;
22
+ //# sourceMappingURL=tiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiles.d.ts","sourceRoot":"","sources":["../../src/parsers/tiles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH,oEAAoE;AACpE,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAKtD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAmBjE;AAED,0FAA0F;AAC1F,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAc5F;AAED,+EAA+E;AAC/E,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAGpD"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Parse protobuf-wrapped basemap tile responses.
3
+ *
4
+ * `/maps/vt/proto` and `/maps/vt/stream` return `application/x-octet-stream` bodies
5
+ * where a PNG image is embedded inside a protobuf envelope. The PNG magic `\x89PNG`
6
+ * appears after a short protobuf header; locate it and slice through the IEND chunk.
7
+ */
8
+ const PNG_SIGNATURE = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
9
+ const IEND_TYPE = new Uint8Array([0x49, 0x45, 0x4e, 0x44]); // "IEND"
10
+ const IEND_TRAILER = new Uint8Array([0xae, 0x42, 0x60, 0x82]);
11
+ function bytesEqual(a, offset, pattern) {
12
+ if (offset + pattern.length > a.length)
13
+ return false;
14
+ for (let i = 0; i < pattern.length; i++) {
15
+ if (a[offset + i] !== pattern[i])
16
+ return false;
17
+ }
18
+ return true;
19
+ }
20
+ /** Locate the PNG signature inside a protobuf-wrapped tile body. */
21
+ export function findPngOffset(data) {
22
+ for (let i = 0; i <= data.length - PNG_SIGNATURE.length; i++) {
23
+ if (bytesEqual(data, i, PNG_SIGNATURE))
24
+ return i;
25
+ }
26
+ return -1;
27
+ }
28
+ /**
29
+ * Extract raw PNG bytes from a protobuf-wrapped tile response.
30
+ * Returns null when no valid PNG envelope is found.
31
+ */
32
+ export function unwrapTilePng(data) {
33
+ const start = findPngOffset(data);
34
+ if (start < 0)
35
+ return null;
36
+ for (let i = start + 8; i <= data.length - 8; i++) {
37
+ if (bytesEqual(data, i, IEND_TYPE) &&
38
+ i >= 4 &&
39
+ data[i - 4] === 0 &&
40
+ data[i - 3] === 0 &&
41
+ data[i - 2] === 0 &&
42
+ data[i - 1] === 0 &&
43
+ bytesEqual(data, i + 4, IEND_TRAILER)) {
44
+ return data.slice(start, i + 8);
45
+ }
46
+ }
47
+ return null;
48
+ }
49
+ /** Read PNG width/height from the IHDR chunk (first chunk after the 8-byte signature). */
50
+ export function readPngDimensions(data) {
51
+ if (data.length < 24 || !bytesEqual(data, 0, PNG_SIGNATURE))
52
+ return null;
53
+ const ihdrOffset = 8;
54
+ if (!bytesEqual(data, ihdrOffset + 4, new Uint8Array([0x49, 0x48, 0x44, 0x52]))) {
55
+ return null;
56
+ }
57
+ const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
58
+ const width = view.getUint32(ihdrOffset + 8, false);
59
+ const height = view.getUint32(ihdrOffset + 12, false);
60
+ if (width === 0 || height === 0)
61
+ return null;
62
+ return { width, height };
63
+ }
64
+ /** True when the buffer contains a PNG signature (raw or protobuf-wrapped). */
65
+ export function isPngBytes(data) {
66
+ if (bytesEqual(data, 0, PNG_SIGNATURE))
67
+ return true;
68
+ return findPngOffset(data) >= 0;
69
+ }
70
+ //# sourceMappingURL=tiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiles.js","sourceRoot":"","sources":["../../src/parsers/tiles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACvF,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;AACrE,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAE9D,SAAS,UAAU,CAAC,CAAa,EAAE,MAAc,EAAE,OAAmB;IACpE,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACjD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,aAAa,CAAC,IAAgB;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7D,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,aAAa,CAAC;YAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAgB;IAC5C,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3B,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,IACE,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC;YAC9B,CAAC,IAAI,CAAC;YACN,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YACjB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YACjB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YACjB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YACjB,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,EACrC,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,iBAAiB,CAAC,IAAgB;IAChD,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,aAAa,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzE,MAAM,UAAU,GAAG,CAAC,CAAC;IACrB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;IAEtD,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,UAAU,CAAC,IAAgB;IACzC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,aAAa,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { GeocodeResult } from '../types/geocode.js';
2
+ import type { TimezoneOffsetSource, TimezoneResult } from '../types/timezone.js';
3
+ /** Pick the first IANA timezone from geocode rows. */
4
+ export declare function extractTimezoneFromGeocodeResults(results: Array<GeocodeResult | null | undefined>): string | undefined;
5
+ /**
6
+ * Build forward-geocode queries from a reverse hit's plus-code address.
7
+ * e.g. `46J5+FPF Sydney, New South Wales, Australia` → `Sydney, Australia`.
8
+ */
9
+ export declare function localityQueriesFromReverseHit(hit: GeocodeResult): string[];
10
+ export interface DerivedTimezoneOffset {
11
+ rawOffsetMinutes: number;
12
+ dstOffsetMinutes: number;
13
+ totalOffsetMinutes: number;
14
+ isDst: boolean;
15
+ offsetSource: TimezoneOffsetSource;
16
+ }
17
+ /** Derive UTC offset for an IANA timezone at `at` using Intl (not from Google payload). */
18
+ export declare function deriveTimezoneOffset(timeZoneId: string, at?: Date): DerivedTimezoneOffset | undefined;
19
+ export declare function buildTimezoneResult(lat: number, lng: number, timeZoneId: string | undefined, at?: Date): TimezoneResult;
20
+ //# sourceMappingURL=timezone-geocode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timezone-geocode.d.ts","sourceRoot":"","sources":["../../src/parsers/timezone-geocode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAIjF,sDAAsD;AACtD,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,KAAK,CAAC,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC,GAC/C,MAAM,GAAG,SAAS,CAKpB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,EAAE,CAmB1E;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,oBAAoB,CAAC;CACpC;AAED,2FAA2F;AAC3F,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,EAAE,GAAE,IAAiB,GACpB,qBAAqB,GAAG,SAAS,CAiCnC;AAgBD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,EAAE,GAAE,IAAiB,GACpB,cAAc,CAiBhB"}
@@ -0,0 +1,96 @@
1
+ const PLUS_CODE_PREFIX_RE = /^[23456789CFGHJMPQRVWX]{4,8}\+[23456789CFGHJMPQRVWX]{2,3}\s+/i;
2
+ /** Pick the first IANA timezone from geocode rows. */
3
+ export function extractTimezoneFromGeocodeResults(results) {
4
+ for (const row of results) {
5
+ if (row?.timezone && row.timezone.includes('/'))
6
+ return row.timezone;
7
+ }
8
+ return undefined;
9
+ }
10
+ /**
11
+ * Build forward-geocode queries from a reverse hit's plus-code address.
12
+ * e.g. `46J5+FPF Sydney, New South Wales, Australia` → `Sydney, Australia`.
13
+ */
14
+ export function localityQueriesFromReverseHit(hit) {
15
+ const raw = hit.plusCodeAddress ?? hit.formattedAddress;
16
+ if (!raw)
17
+ return [];
18
+ const withoutCode = raw.replace(PLUS_CODE_PREFIX_RE, '').trim();
19
+ if (!withoutCode)
20
+ return [];
21
+ const parts = withoutCode.split(',').map((part) => part.trim()).filter(Boolean);
22
+ const queries = new Set();
23
+ queries.add(withoutCode);
24
+ if (parts.length >= 2) {
25
+ queries.add(`${parts[0]}, ${parts[parts.length - 1]}`);
26
+ }
27
+ if (parts.length >= 3) {
28
+ queries.add(`${parts[0]}, ${parts[1]}, ${parts[parts.length - 1]}`);
29
+ }
30
+ return [...queries];
31
+ }
32
+ /** Derive UTC offset for an IANA timezone at `at` using Intl (not from Google payload). */
33
+ export function deriveTimezoneOffset(timeZoneId, at = new Date()) {
34
+ try {
35
+ const parts = new Intl.DateTimeFormat('en-US', {
36
+ timeZone: timeZoneId,
37
+ timeZoneName: 'longOffset',
38
+ }).formatToParts(at);
39
+ const offsetText = parts.find((part) => part.type === 'timeZoneName')?.value;
40
+ const match = offsetText?.match(/GMT([+-])(\d{1,2})(?::(\d{2}))?/i);
41
+ if (!match)
42
+ return undefined;
43
+ const sign = match[1] === '-' ? -1 : 1;
44
+ const hours = Number.parseInt(match[2], 10);
45
+ const minutes = match[3] ? Number.parseInt(match[3], 10) : 0;
46
+ const totalOffsetMinutes = sign * (hours * 60 + minutes);
47
+ const jan = new Date(Date.UTC(at.getUTCFullYear(), 0, 1));
48
+ const jul = new Date(Date.UTC(at.getUTCFullYear(), 6, 1));
49
+ const janOffset = deriveTotalOffsetMinutes(timeZoneId, jan);
50
+ const julOffset = deriveTotalOffsetMinutes(timeZoneId, jul);
51
+ const rawOffsetMinutes = Math.min(janOffset, julOffset);
52
+ const dstOffsetMinutes = totalOffsetMinutes - rawOffsetMinutes;
53
+ return {
54
+ rawOffsetMinutes,
55
+ dstOffsetMinutes,
56
+ totalOffsetMinutes,
57
+ isDst: dstOffsetMinutes !== 0,
58
+ offsetSource: 'derived-intl',
59
+ };
60
+ }
61
+ catch {
62
+ return undefined;
63
+ }
64
+ }
65
+ function deriveTotalOffsetMinutes(timeZoneId, at) {
66
+ const parts = new Intl.DateTimeFormat('en-US', {
67
+ timeZone: timeZoneId,
68
+ timeZoneName: 'longOffset',
69
+ }).formatToParts(at);
70
+ const offsetText = parts.find((part) => part.type === 'timeZoneName')?.value;
71
+ const match = offsetText?.match(/GMT([+-])(\d{1,2})(?::(\d{2}))?/i);
72
+ if (!match)
73
+ return 0;
74
+ const sign = match[1] === '-' ? -1 : 1;
75
+ const hours = Number.parseInt(match[2], 10);
76
+ const minutes = match[3] ? Number.parseInt(match[3], 10) : 0;
77
+ return sign * (hours * 60 + minutes);
78
+ }
79
+ export function buildTimezoneResult(lat, lng, timeZoneId, at = new Date()) {
80
+ if (!timeZoneId) {
81
+ return { lat, lng, status: 'NOT_FOUND' };
82
+ }
83
+ const derived = deriveTimezoneOffset(timeZoneId, at);
84
+ return {
85
+ lat,
86
+ lng,
87
+ timeZoneId,
88
+ status: 'OK',
89
+ rawOffsetMinutes: derived?.rawOffsetMinutes,
90
+ dstOffsetMinutes: derived?.dstOffsetMinutes,
91
+ totalOffsetMinutes: derived?.totalOffsetMinutes,
92
+ isDst: derived?.isDst,
93
+ offsetSource: derived?.offsetSource,
94
+ };
95
+ }
96
+ //# sourceMappingURL=timezone-geocode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timezone-geocode.js","sourceRoot":"","sources":["../../src/parsers/timezone-geocode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { AreaTrafficReport } from '../types/traffic.js';
2
+ /**
3
+ * Parse GetAreaTraffic batchexecute response.
4
+ * Verified paths (inner payload): summary [19][0][1][0], detail [20][0][1][0], icons [14][4][*][0].
5
+ * Some responses wrap payload at [1] with hasTraffic flag at [0].
6
+ */
7
+ export declare function extractAreaTraffic(data: unknown, options?: {
8
+ raw?: boolean;
9
+ }): AreaTrafficReport;
10
+ //# sourceMappingURL=traffic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traffic.d.ts","sourceRoot":"","sources":["../../src/parsers/traffic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAa7D;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,iBAAiB,CAyBhG"}
@@ -0,0 +1,38 @@
1
+ import { safeGet } from '../utils/safe-get.js';
2
+ import { parseBatchPayload } from '../rpc/batch-rpc.js';
3
+ function resolveTrafficRoot(root) {
4
+ const inner = safeGet(root, 1);
5
+ if (inner != null && safeGet(inner, 19, 0, 1, 0)) {
6
+ return inner;
7
+ }
8
+ return root;
9
+ }
10
+ /**
11
+ * Parse GetAreaTraffic batchexecute response.
12
+ * Verified paths (inner payload): summary [19][0][1][0], detail [20][0][1][0], icons [14][4][*][0].
13
+ * Some responses wrap payload at [1] with hasTraffic flag at [0].
14
+ */
15
+ export function extractAreaTraffic(data, options) {
16
+ const root = parseBatchPayload(data);
17
+ const payload = resolveTrafficRoot(root);
18
+ const report = {
19
+ hasTraffic: safeGet(root, 0) === true || safeGet(payload, 0) === true,
20
+ raw: options?.raw ? root : undefined,
21
+ };
22
+ report.severity = safeGet(payload, 8) ?? undefined;
23
+ const iconBlock = safeGet(payload, 14, 4);
24
+ if (Array.isArray(iconBlock)) {
25
+ const urls = [];
26
+ for (const item of iconBlock) {
27
+ const url = safeGet(item, 0);
28
+ if (url)
29
+ urls.push(url);
30
+ }
31
+ if (urls.length > 0)
32
+ report.iconUrls = urls;
33
+ }
34
+ report.summary = safeGet(payload, 19, 0, 1, 0);
35
+ report.detail = safeGet(payload, 20, 0, 1, 0);
36
+ return report;
37
+ }
38
+ //# sourceMappingURL=traffic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traffic.js","sourceRoot":"","sources":["../../src/parsers/traffic.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,KAAK,GAAG,OAAO,CAAS,IAAI,EAAE,CAAC,CAAC,CAAC;IACvC,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,CAAS,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAa,EAAE,OAA2B;IAC3E,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAsB;QAChC,UAAU,EAAE,OAAO,CAAU,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAU,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI;QACvF,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;KACrC,CAAC;IAEF,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAS,OAAO,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC;IAE3D,MAAM,SAAS,GAAG,OAAO,CAAW,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACpD,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,OAAO,CAAS,IAAI,EAAE,CAAC,CAAC,CAAC;YACrC,IAAI,GAAG;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,OAAO,GAAG,OAAO,CAAS,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD,MAAM,CAAC,MAAM,GAAG,OAAO,CAAS,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEtD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { TransitStationBoard } from '../types/transit.js';
2
+ import type { PlaceDataNode } from '../types/protobuf.js';
3
+ /**
4
+ * Parse transit station departure boards from place preview placeData[62].
5
+ *
6
+ * Verified on King's Cross (2026-07-31): mode tabs at [62][1][*][1], departure rows at
7
+ * [62][1][mode][2][*]. Per row: headsign [1][0][0], time block [1][0][3][0][0][0]
8
+ * (unix, tz, label), trip id [1][0][3][0][0][7], platform [1][0][3][0][0][8],
9
+ * line hex [4], operator/colour [5][1][1].
10
+ */
11
+ export declare function extractTransitStationBoard(placeData: PlaceDataNode): TransitStationBoard | undefined;
12
+ //# sourceMappingURL=transit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transit.d.ts","sourceRoot":"","sources":["../../src/parsers/transit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAU,MAAM,sBAAsB,CAAC;AAGlE;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,aAAa,GAAG,mBAAmB,GAAG,SAAS,CAiCpG"}