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.
- package/LICENSE +21 -0
- package/README.md +249 -0
- package/dist/auth/auth-status.d.ts +30 -0
- package/dist/auth/auth-status.d.ts.map +1 -0
- package/dist/auth/auth-status.js +169 -0
- package/dist/auth/auth-status.js.map +1 -0
- package/dist/auth/google-auth.d.ts +9 -0
- package/dist/auth/google-auth.d.ts.map +1 -0
- package/dist/auth/google-auth.js +40 -0
- package/dist/auth/google-auth.js.map +1 -0
- package/dist/auth/maps-tokens.d.ts +6 -0
- package/dist/auth/maps-tokens.d.ts.map +1 -0
- package/dist/auth/maps-tokens.js +18 -0
- package/dist/auth/maps-tokens.js.map +1 -0
- package/dist/auth/session.d.ts +28 -0
- package/dist/auth/session.d.ts.map +1 -0
- package/dist/auth/session.js +104 -0
- package/dist/auth/session.js.map +1 -0
- package/dist/client/gmaps-client.d.ts +92 -0
- package/dist/client/gmaps-client.d.ts.map +1 -0
- package/dist/client/gmaps-client.js +254 -0
- package/dist/client/gmaps-client.js.map +1 -0
- package/dist/client/http-client.d.ts +91 -0
- package/dist/client/http-client.d.ts.map +1 -0
- package/dist/client/http-client.js +393 -0
- package/dist/client/http-client.js.map +1 -0
- package/dist/index.d.ts +64 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/internal.d.ts +140 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +97 -0
- package/dist/internal.js.map +1 -0
- package/dist/known-surfaces.d.ts +280 -0
- package/dist/known-surfaces.d.ts.map +1 -0
- package/dist/known-surfaces.js +276 -0
- package/dist/known-surfaces.js.map +1 -0
- package/dist/parsers/batch-url.d.ts +13 -0
- package/dist/parsers/batch-url.d.ts.map +1 -0
- package/dist/parsers/batch-url.js +42 -0
- package/dist/parsers/batch-url.js.map +1 -0
- package/dist/parsers/boq-reviews.d.ts +8 -0
- package/dist/parsers/boq-reviews.d.ts.map +1 -0
- package/dist/parsers/boq-reviews.js +254 -0
- package/dist/parsers/boq-reviews.js.map +1 -0
- package/dist/parsers/categories.d.ts +14 -0
- package/dist/parsers/categories.d.ts.map +1 -0
- package/dist/parsers/categories.js +128 -0
- package/dist/parsers/categories.js.map +1 -0
- package/dist/parsers/directions.d.ts +6 -0
- package/dist/parsers/directions.d.ts.map +1 -0
- package/dist/parsers/directions.js +388 -0
- package/dist/parsers/directions.js.map +1 -0
- package/dist/parsers/elevation-directions.d.ts +18 -0
- package/dist/parsers/elevation-directions.d.ts.map +1 -0
- package/dist/parsers/elevation-directions.js +102 -0
- package/dist/parsers/elevation-directions.js.map +1 -0
- package/dist/parsers/geocode.d.ts +11 -0
- package/dist/parsers/geocode.d.ts.map +1 -0
- package/dist/parsers/geocode.js +104 -0
- package/dist/parsers/geocode.js.map +1 -0
- package/dist/parsers/knowledge.d.ts +13 -0
- package/dist/parsers/knowledge.d.ts.map +1 -0
- package/dist/parsers/knowledge.js +93 -0
- package/dist/parsers/knowledge.js.map +1 -0
- package/dist/parsers/lists.d.ts +23 -0
- package/dist/parsers/lists.d.ts.map +1 -0
- package/dist/parsers/lists.js +219 -0
- package/dist/parsers/lists.js.map +1 -0
- package/dist/parsers/local-posts.d.ts +12 -0
- package/dist/parsers/local-posts.d.ts.map +1 -0
- package/dist/parsers/local-posts.js +112 -0
- package/dist/parsers/local-posts.js.map +1 -0
- package/dist/parsers/maps-url.d.ts +15 -0
- package/dist/parsers/maps-url.d.ts.map +1 -0
- package/dist/parsers/maps-url.js +326 -0
- package/dist/parsers/maps-url.js.map +1 -0
- package/dist/parsers/panorama.d.ts +24 -0
- package/dist/parsers/panorama.d.ts.map +1 -0
- package/dist/parsers/panorama.js +161 -0
- package/dist/parsers/panorama.js.map +1 -0
- package/dist/parsers/passiveassist.d.ts +10 -0
- package/dist/parsers/passiveassist.d.ts.map +1 -0
- package/dist/parsers/passiveassist.js +61 -0
- package/dist/parsers/passiveassist.js.map +1 -0
- package/dist/parsers/photos.d.ts +21 -0
- package/dist/parsers/photos.d.ts.map +1 -0
- package/dist/parsers/photos.js +287 -0
- package/dist/parsers/photos.js.map +1 -0
- package/dist/parsers/place-attributes.d.ts +25 -0
- package/dist/parsers/place-attributes.d.ts.map +1 -0
- package/dist/parsers/place-attributes.js +266 -0
- package/dist/parsers/place-attributes.js.map +1 -0
- package/dist/parsers/place.d.ts +9 -0
- package/dist/parsers/place.d.ts.map +1 -0
- package/dist/parsers/place.js +291 -0
- package/dist/parsers/place.js.map +1 -0
- package/dist/parsers/reveal.d.ts +5 -0
- package/dist/parsers/reveal.d.ts.map +1 -0
- package/dist/parsers/reveal.js +99 -0
- package/dist/parsers/reveal.js.map +1 -0
- package/dist/parsers/review-aggregates.d.ts +7 -0
- package/dist/parsers/review-aggregates.d.ts.map +1 -0
- package/dist/parsers/review-aggregates.js +18 -0
- package/dist/parsers/review-aggregates.js.map +1 -0
- package/dist/parsers/review-client-filters.d.ts +8 -0
- package/dist/parsers/review-client-filters.d.ts.map +1 -0
- package/dist/parsers/review-client-filters.js +28 -0
- package/dist/parsers/review-client-filters.js.map +1 -0
- package/dist/parsers/reviews.d.ts +8 -0
- package/dist/parsers/reviews.d.ts.map +1 -0
- package/dist/parsers/reviews.js +55 -0
- package/dist/parsers/reviews.js.map +1 -0
- package/dist/parsers/search-client-filters.d.ts +7 -0
- package/dist/parsers/search-client-filters.d.ts.map +1 -0
- package/dist/parsers/search-client-filters.js +44 -0
- package/dist/parsers/search-client-filters.js.map +1 -0
- package/dist/parsers/search-pagination.d.ts +12 -0
- package/dist/parsers/search-pagination.d.ts.map +1 -0
- package/dist/parsers/search-pagination.js +34 -0
- package/dist/parsers/search-pagination.js.map +1 -0
- package/dist/parsers/search.d.ts +5 -0
- package/dist/parsers/search.d.ts.map +1 -0
- package/dist/parsers/search.js +187 -0
- package/dist/parsers/search.js.map +1 -0
- package/dist/parsers/shared.d.ts +24 -0
- package/dist/parsers/shared.d.ts.map +1 -0
- package/dist/parsers/shared.js +147 -0
- package/dist/parsers/shared.js.map +1 -0
- package/dist/parsers/suggest.d.ts +10 -0
- package/dist/parsers/suggest.d.ts.map +1 -0
- package/dist/parsers/suggest.js +153 -0
- package/dist/parsers/suggest.js.map +1 -0
- package/dist/parsers/tiles.d.ts +22 -0
- package/dist/parsers/tiles.d.ts.map +1 -0
- package/dist/parsers/tiles.js +70 -0
- package/dist/parsers/tiles.js.map +1 -0
- package/dist/parsers/timezone-geocode.d.ts +20 -0
- package/dist/parsers/timezone-geocode.d.ts.map +1 -0
- package/dist/parsers/timezone-geocode.js +96 -0
- package/dist/parsers/timezone-geocode.js.map +1 -0
- package/dist/parsers/traffic.d.ts +10 -0
- package/dist/parsers/traffic.d.ts.map +1 -0
- package/dist/parsers/traffic.js +38 -0
- package/dist/parsers/traffic.js.map +1 -0
- package/dist/parsers/transit.d.ts +12 -0
- package/dist/parsers/transit.d.ts.map +1 -0
- package/dist/parsers/transit.js +77 -0
- package/dist/parsers/transit.js.map +1 -0
- package/dist/parsers/ugc-aggregates.d.ts +9 -0
- package/dist/parsers/ugc-aggregates.d.ts.map +1 -0
- package/dist/parsers/ugc-aggregates.js +23 -0
- package/dist/parsers/ugc-aggregates.js.map +1 -0
- package/dist/rpc/app-options.d.ts +25 -0
- package/dist/rpc/app-options.d.ts.map +1 -0
- package/dist/rpc/app-options.js +147 -0
- package/dist/rpc/app-options.js.map +1 -0
- package/dist/rpc/batch-execute.d.ts +30 -0
- package/dist/rpc/batch-execute.d.ts.map +1 -0
- package/dist/rpc/batch-execute.js +217 -0
- package/dist/rpc/batch-execute.js.map +1 -0
- package/dist/rpc/batch-request-builders.d.ts +65 -0
- package/dist/rpc/batch-request-builders.d.ts.map +1 -0
- package/dist/rpc/batch-request-builders.js +174 -0
- package/dist/rpc/batch-request-builders.js.map +1 -0
- package/dist/rpc/batch-rpc.d.ts +34 -0
- package/dist/rpc/batch-rpc.d.ts.map +1 -0
- package/dist/rpc/batch-rpc.js +70 -0
- package/dist/rpc/batch-rpc.js.map +1 -0
- package/dist/rpc/batch-services.d.ts +38 -0
- package/dist/rpc/batch-services.d.ts.map +1 -0
- package/dist/rpc/batch-services.js +69 -0
- package/dist/rpc/batch-services.js.map +1 -0
- package/dist/rpc/batchexecute-args.d.ts +30 -0
- package/dist/rpc/batchexecute-args.d.ts.map +1 -0
- package/dist/rpc/batchexecute-args.js +35 -0
- package/dist/rpc/batchexecute-args.js.map +1 -0
- package/dist/rpc/boq-reviews.d.ts +16 -0
- package/dist/rpc/boq-reviews.d.ts.map +1 -0
- package/dist/rpc/boq-reviews.js +45 -0
- package/dist/rpc/boq-reviews.js.map +1 -0
- package/dist/rpc/descriptor-registry.d.ts +61 -0
- package/dist/rpc/descriptor-registry.d.ts.map +1 -0
- package/dist/rpc/descriptor-registry.js +47 -0
- package/dist/rpc/descriptor-registry.js.map +1 -0
- package/dist/rpc/feature-rpc.d.ts +27 -0
- package/dist/rpc/feature-rpc.d.ts.map +1 -0
- package/dist/rpc/feature-rpc.js +44 -0
- package/dist/rpc/feature-rpc.js.map +1 -0
- package/dist/rpc/lists-pb.d.ts +20 -0
- package/dist/rpc/lists-pb.d.ts.map +1 -0
- package/dist/rpc/lists-pb.js +20 -0
- package/dist/rpc/lists-pb.js.map +1 -0
- package/dist/rpc/maps-endpoint-registry.json +185 -0
- package/dist/rpc/maps-runtime.d.ts +42 -0
- package/dist/rpc/maps-runtime.d.ts.map +1 -0
- package/dist/rpc/maps-runtime.js +140 -0
- package/dist/rpc/maps-runtime.js.map +1 -0
- package/dist/rpc/maps-url-builders.d.ts +35 -0
- package/dist/rpc/maps-url-builders.d.ts.map +1 -0
- package/dist/rpc/maps-url-builders.js +266 -0
- package/dist/rpc/maps-url-builders.js.map +1 -0
- package/dist/rpc/nxa.d.ts +13 -0
- package/dist/rpc/nxa.d.ts.map +1 -0
- package/dist/rpc/nxa.js +44 -0
- package/dist/rpc/nxa.js.map +1 -0
- package/dist/rpc/panorama-pb.d.ts +60 -0
- package/dist/rpc/panorama-pb.d.ts.map +1 -0
- package/dist/rpc/panorama-pb.js +71 -0
- package/dist/rpc/panorama-pb.js.map +1 -0
- package/dist/rpc/passiveassist-pb.d.ts +21 -0
- package/dist/rpc/passiveassist-pb.d.ts.map +1 -0
- package/dist/rpc/passiveassist-pb.js +24 -0
- package/dist/rpc/passiveassist-pb.js.map +1 -0
- package/dist/rpc/pb-builders.d.ts +136 -0
- package/dist/rpc/pb-builders.d.ts.map +1 -0
- package/dist/rpc/pb-builders.js +290 -0
- package/dist/rpc/pb-builders.js.map +1 -0
- package/dist/rpc/photo-category-tokens.d.ts +29 -0
- package/dist/rpc/photo-category-tokens.d.ts.map +1 -0
- package/dist/rpc/photo-category-tokens.js +97 -0
- package/dist/rpc/photo-category-tokens.js.map +1 -0
- package/dist/rpc/photos-pb.d.ts +29 -0
- package/dist/rpc/photos-pb.d.ts.map +1 -0
- package/dist/rpc/photos-pb.js +73 -0
- package/dist/rpc/photos-pb.js.map +1 -0
- package/dist/rpc/reveal-pb.d.ts +26 -0
- package/dist/rpc/reveal-pb.d.ts.map +1 -0
- package/dist/rpc/reveal-pb.js +32 -0
- package/dist/rpc/reveal-pb.js.map +1 -0
- package/dist/rpc/rpc-client.d.ts +50 -0
- package/dist/rpc/rpc-client.d.ts.map +1 -0
- package/dist/rpc/rpc-client.js +136 -0
- package/dist/rpc/rpc-client.js.map +1 -0
- package/dist/rpc/rpc-descriptor-registry.json +776 -0
- package/dist/rpc/rpc-methods.d.ts +75 -0
- package/dist/rpc/rpc-methods.d.ts.map +1 -0
- package/dist/rpc/rpc-methods.js +130 -0
- package/dist/rpc/rpc-methods.js.map +1 -0
- package/dist/rpc/search-filters.d.ts +43 -0
- package/dist/rpc/search-filters.d.ts.map +1 -0
- package/dist/rpc/search-filters.js +92 -0
- package/dist/rpc/search-filters.js.map +1 -0
- package/dist/rpc/suggest-pb.d.ts +34 -0
- package/dist/rpc/suggest-pb.d.ts.map +1 -0
- package/dist/rpc/suggest-pb.js +42 -0
- package/dist/rpc/suggest-pb.js.map +1 -0
- package/dist/rpc/tiles-pb.d.ts +45 -0
- package/dist/rpc/tiles-pb.d.ts.map +1 -0
- package/dist/rpc/tiles-pb.js +71 -0
- package/dist/rpc/tiles-pb.js.map +1 -0
- package/dist/rpc/xsrf-bootstrap.d.ts +24 -0
- package/dist/rpc/xsrf-bootstrap.d.ts.map +1 -0
- package/dist/rpc/xsrf-bootstrap.js +63 -0
- package/dist/rpc/xsrf-bootstrap.js.map +1 -0
- package/dist/server/api-server.d.ts +9 -0
- package/dist/server/api-server.d.ts.map +1 -0
- package/dist/server/api-server.js +293 -0
- package/dist/server/api-server.js.map +1 -0
- package/dist/services/ask-maps.d.ts +91 -0
- package/dist/services/ask-maps.d.ts.map +1 -0
- package/dist/services/ask-maps.js +221 -0
- package/dist/services/ask-maps.js.map +1 -0
- package/dist/services/batch-url.d.ts +18 -0
- package/dist/services/batch-url.d.ts.map +1 -0
- package/dist/services/batch-url.js +30 -0
- package/dist/services/batch-url.js.map +1 -0
- package/dist/services/categories.d.ts +21 -0
- package/dist/services/categories.d.ts.map +1 -0
- package/dist/services/categories.js +43 -0
- package/dist/services/categories.js.map +1 -0
- package/dist/services/directions.d.ts +26 -0
- package/dist/services/directions.d.ts.map +1 -0
- package/dist/services/directions.js +104 -0
- package/dist/services/directions.js.map +1 -0
- package/dist/services/distance-matrix.d.ts +17 -0
- package/dist/services/distance-matrix.d.ts.map +1 -0
- package/dist/services/distance-matrix.js +144 -0
- package/dist/services/distance-matrix.js.map +1 -0
- package/dist/services/elevation.d.ts +30 -0
- package/dist/services/elevation.d.ts.map +1 -0
- package/dist/services/elevation.js +149 -0
- package/dist/services/elevation.js.map +1 -0
- package/dist/services/geocode.d.ts +20 -0
- package/dist/services/geocode.d.ts.map +1 -0
- package/dist/services/geocode.js +63 -0
- package/dist/services/geocode.js.map +1 -0
- package/dist/services/knowledge.d.ts +25 -0
- package/dist/services/knowledge.d.ts.map +1 -0
- package/dist/services/knowledge.js +58 -0
- package/dist/services/knowledge.js.map +1 -0
- package/dist/services/links.d.ts +22 -0
- package/dist/services/links.d.ts.map +1 -0
- package/dist/services/links.js +145 -0
- package/dist/services/links.js.map +1 -0
- package/dist/services/lists.d.ts +20 -0
- package/dist/services/lists.d.ts.map +1 -0
- package/dist/services/lists.js +74 -0
- package/dist/services/lists.js.map +1 -0
- package/dist/services/local-posts.d.ts +14 -0
- package/dist/services/local-posts.d.ts.map +1 -0
- package/dist/services/local-posts.js +32 -0
- package/dist/services/local-posts.js.map +1 -0
- package/dist/services/panorama.d.ts +39 -0
- package/dist/services/panorama.d.ts.map +1 -0
- package/dist/services/panorama.js +175 -0
- package/dist/services/panorama.js.map +1 -0
- package/dist/services/passiveassist.d.ts +21 -0
- package/dist/services/passiveassist.d.ts.map +1 -0
- package/dist/services/passiveassist.js +70 -0
- package/dist/services/passiveassist.js.map +1 -0
- package/dist/services/photos.d.ts +46 -0
- package/dist/services/photos.d.ts.map +1 -0
- package/dist/services/photos.js +341 -0
- package/dist/services/photos.js.map +1 -0
- package/dist/services/places.d.ts +58 -0
- package/dist/services/places.d.ts.map +1 -0
- package/dist/services/places.js +240 -0
- package/dist/services/places.js.map +1 -0
- package/dist/services/reveal.d.ts +15 -0
- package/dist/services/reveal.d.ts.map +1 -0
- package/dist/services/reveal.js +41 -0
- package/dist/services/reveal.js.map +1 -0
- package/dist/services/reviews.d.ts +70 -0
- package/dist/services/reviews.d.ts.map +1 -0
- package/dist/services/reviews.js +245 -0
- package/dist/services/reviews.js.map +1 -0
- package/dist/services/search.d.ts +25 -0
- package/dist/services/search.d.ts.map +1 -0
- package/dist/services/search.js +130 -0
- package/dist/services/search.js.map +1 -0
- package/dist/services/static-map.d.ts +14 -0
- package/dist/services/static-map.d.ts.map +1 -0
- package/dist/services/static-map.js +182 -0
- package/dist/services/static-map.js.map +1 -0
- package/dist/services/suggest.d.ts +12 -0
- package/dist/services/suggest.d.ts.map +1 -0
- package/dist/services/suggest.js +36 -0
- package/dist/services/suggest.js.map +1 -0
- package/dist/services/tiles.d.ts +19 -0
- package/dist/services/tiles.d.ts.map +1 -0
- package/dist/services/tiles.js +77 -0
- package/dist/services/tiles.js.map +1 -0
- package/dist/services/timezone.d.ts +19 -0
- package/dist/services/timezone.d.ts.map +1 -0
- package/dist/services/timezone.js +91 -0
- package/dist/services/timezone.js.map +1 -0
- package/dist/services/traffic.d.ts +12 -0
- package/dist/services/traffic.d.ts.map +1 -0
- package/dist/services/traffic.js +40 -0
- package/dist/services/traffic.js.map +1 -0
- package/dist/services/transit.d.ts +22 -0
- package/dist/services/transit.d.ts.map +1 -0
- package/dist/services/transit.js +62 -0
- package/dist/services/transit.js.map +1 -0
- package/dist/services/ugc-aggregates.d.ts +17 -0
- package/dist/services/ugc-aggregates.d.ts.map +1 -0
- package/dist/services/ugc-aggregates.js +46 -0
- package/dist/services/ugc-aggregates.js.map +1 -0
- package/dist/types/batch-url.d.ts +21 -0
- package/dist/types/batch-url.d.ts.map +1 -0
- package/dist/types/batch-url.js +2 -0
- package/dist/types/batch-url.js.map +1 -0
- package/dist/types/categories.d.ts +43 -0
- package/dist/types/categories.d.ts.map +1 -0
- package/dist/types/categories.js +2 -0
- package/dist/types/categories.js.map +1 -0
- package/dist/types/common.d.ts +538 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +77 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/directions.d.ts +88 -0
- package/dist/types/directions.d.ts.map +1 -0
- package/dist/types/directions.js +2 -0
- package/dist/types/directions.js.map +1 -0
- package/dist/types/distance-matrix.d.ts +40 -0
- package/dist/types/distance-matrix.d.ts.map +1 -0
- package/dist/types/distance-matrix.js +2 -0
- package/dist/types/distance-matrix.js.map +1 -0
- package/dist/types/elevation.d.ts +59 -0
- package/dist/types/elevation.d.ts.map +1 -0
- package/dist/types/elevation.js +2 -0
- package/dist/types/elevation.js.map +1 -0
- package/dist/types/geocode.d.ts +60 -0
- package/dist/types/geocode.d.ts.map +1 -0
- package/dist/types/geocode.js +2 -0
- package/dist/types/geocode.js.map +1 -0
- package/dist/types/links.d.ts +74 -0
- package/dist/types/links.d.ts.map +1 -0
- package/dist/types/links.js +2 -0
- package/dist/types/links.js.map +1 -0
- package/dist/types/lists.d.ts +41 -0
- package/dist/types/lists.d.ts.map +1 -0
- package/dist/types/lists.js +2 -0
- package/dist/types/lists.js.map +1 -0
- package/dist/types/maps-urls.d.ts +78 -0
- package/dist/types/maps-urls.d.ts.map +1 -0
- package/dist/types/maps-urls.js +2 -0
- package/dist/types/maps-urls.js.map +1 -0
- package/dist/types/panorama.d.ts +74 -0
- package/dist/types/panorama.d.ts.map +1 -0
- package/dist/types/panorama.js +2 -0
- package/dist/types/panorama.js.map +1 -0
- package/dist/types/passiveassist.d.ts +50 -0
- package/dist/types/passiveassist.d.ts.map +1 -0
- package/dist/types/passiveassist.js +2 -0
- package/dist/types/passiveassist.js.map +1 -0
- package/dist/types/photos.d.ts +101 -0
- package/dist/types/photos.d.ts.map +1 -0
- package/dist/types/photos.js +75 -0
- package/dist/types/photos.js.map +1 -0
- package/dist/types/protobuf.d.ts +33 -0
- package/dist/types/protobuf.d.ts.map +1 -0
- package/dist/types/protobuf.js +25 -0
- package/dist/types/protobuf.js.map +1 -0
- package/dist/types/reveal.d.ts +46 -0
- package/dist/types/reveal.d.ts.map +1 -0
- package/dist/types/reveal.js +2 -0
- package/dist/types/reveal.js.map +1 -0
- package/dist/types/reviews.d.ts +79 -0
- package/dist/types/reviews.d.ts.map +1 -0
- package/dist/types/reviews.js +5 -0
- package/dist/types/reviews.js.map +1 -0
- package/dist/types/search-filters.d.ts +59 -0
- package/dist/types/search-filters.d.ts.map +1 -0
- package/dist/types/search-filters.js +35 -0
- package/dist/types/search-filters.js.map +1 -0
- package/dist/types/static-map.d.ts +61 -0
- package/dist/types/static-map.d.ts.map +1 -0
- package/dist/types/static-map.js +2 -0
- package/dist/types/static-map.js.map +1 -0
- package/dist/types/suggest.d.ts +57 -0
- package/dist/types/suggest.d.ts.map +1 -0
- package/dist/types/suggest.js +2 -0
- package/dist/types/suggest.js.map +1 -0
- package/dist/types/tiles.d.ts +65 -0
- package/dist/types/tiles.d.ts.map +1 -0
- package/dist/types/tiles.js +2 -0
- package/dist/types/tiles.js.map +1 -0
- package/dist/types/timezone.d.ts +36 -0
- package/dist/types/timezone.d.ts.map +1 -0
- package/dist/types/timezone.js +2 -0
- package/dist/types/timezone.js.map +1 -0
- package/dist/types/traffic.d.ts +22 -0
- package/dist/types/traffic.d.ts.map +1 -0
- package/dist/types/traffic.js +2 -0
- package/dist/types/traffic.js.map +1 -0
- package/dist/types/transit.d.ts +46 -0
- package/dist/types/transit.d.ts.map +1 -0
- package/dist/types/transit.js +3 -0
- package/dist/types/transit.js.map +1 -0
- package/dist/types/ugc-aggregates.d.ts +14 -0
- package/dist/types/ugc-aggregates.d.ts.map +1 -0
- package/dist/types/ugc-aggregates.js +2 -0
- package/dist/types/ugc-aggregates.js.map +1 -0
- package/dist/utils/chunked-decoder.d.ts +9 -0
- package/dist/utils/chunked-decoder.d.ts.map +1 -0
- package/dist/utils/chunked-decoder.js +175 -0
- package/dist/utils/chunked-decoder.js.map +1 -0
- package/dist/utils/directions-metrics.d.ts +5 -0
- package/dist/utils/directions-metrics.d.ts.map +1 -0
- package/dist/utils/directions-metrics.js +62 -0
- package/dist/utils/directions-metrics.js.map +1 -0
- package/dist/utils/encoded-polyline.d.ts +9 -0
- package/dist/utils/encoded-polyline.d.ts.map +1 -0
- package/dist/utils/encoded-polyline.js +67 -0
- package/dist/utils/encoded-polyline.js.map +1 -0
- package/dist/utils/feature-id.d.ts +2 -0
- package/dist/utils/feature-id.d.ts.map +1 -0
- package/dist/utils/feature-id.js +11 -0
- package/dist/utils/feature-id.js.map +1 -0
- package/dist/utils/geo.d.ts +18 -0
- package/dist/utils/geo.d.ts.map +1 -0
- package/dist/utils/geo.js +40 -0
- package/dist/utils/geo.js.map +1 -0
- package/dist/utils/ids.d.ts +23 -0
- package/dist/utils/ids.d.ts.map +1 -0
- package/dist/utils/ids.js +81 -0
- package/dist/utils/ids.js.map +1 -0
- package/dist/utils/load-env.d.ts +7 -0
- package/dist/utils/load-env.d.ts.map +1 -0
- package/dist/utils/load-env.js +49 -0
- package/dist/utils/load-env.js.map +1 -0
- package/dist/utils/photo-url.d.ts +4 -0
- package/dist/utils/photo-url.d.ts.map +1 -0
- package/dist/utils/photo-url.js +35 -0
- package/dist/utils/photo-url.js.map +1 -0
- package/dist/utils/plus-code.d.ts +11 -0
- package/dist/utils/plus-code.d.ts.map +1 -0
- package/dist/utils/plus-code.js +83 -0
- package/dist/utils/plus-code.js.map +1 -0
- package/dist/utils/png.d.ts +25 -0
- package/dist/utils/png.d.ts.map +1 -0
- package/dist/utils/png.js +314 -0
- package/dist/utils/png.js.map +1 -0
- package/dist/utils/pooled.d.ts +6 -0
- package/dist/utils/pooled.d.ts.map +1 -0
- package/dist/utils/pooled.js +19 -0
- package/dist/utils/pooled.js.map +1 -0
- package/dist/utils/request-scheduler.d.ts +28 -0
- package/dist/utils/request-scheduler.d.ts.map +1 -0
- package/dist/utils/request-scheduler.js +58 -0
- package/dist/utils/request-scheduler.js.map +1 -0
- package/dist/utils/response-parser.d.ts +7 -0
- package/dist/utils/response-parser.d.ts.map +1 -0
- package/dist/utils/response-parser.js +50 -0
- package/dist/utils/response-parser.js.map +1 -0
- package/dist/utils/retry-backoff.d.ts +5 -0
- package/dist/utils/retry-backoff.d.ts.map +1 -0
- package/dist/utils/retry-backoff.js +23 -0
- package/dist/utils/retry-backoff.js.map +1 -0
- package/dist/utils/safe-get.d.ts +6 -0
- package/dist/utils/safe-get.d.ts.map +1 -0
- package/dist/utils/safe-get.js +29 -0
- package/dist/utils/safe-get.js.map +1 -0
- package/dist/utils/static-map-grid.d.ts +71 -0
- package/dist/utils/static-map-grid.d.ts.map +1 -0
- package/dist/utils/static-map-grid.js +103 -0
- package/dist/utils/static-map-grid.js.map +1 -0
- package/dist/utils/throttle-detection.d.ts +17 -0
- package/dist/utils/throttle-detection.d.ts.map +1 -0
- package/dist/utils/throttle-detection.js +71 -0
- package/dist/utils/throttle-detection.js.map +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decode Google's standard encoded polyline (precision 5).
|
|
3
|
+
* Algorithm: https://developers.google.com/maps/documentation/utilities/polylinealgorithm
|
|
4
|
+
*/
|
|
5
|
+
export function decodeEncodedPolyline(encoded, precision = 5) {
|
|
6
|
+
const coordinates = [];
|
|
7
|
+
let index = 0;
|
|
8
|
+
let lat = 0;
|
|
9
|
+
let lng = 0;
|
|
10
|
+
const factor = 10 ** precision;
|
|
11
|
+
while (index < encoded.length) {
|
|
12
|
+
let shift = 0;
|
|
13
|
+
let result = 0;
|
|
14
|
+
let byte;
|
|
15
|
+
do {
|
|
16
|
+
byte = encoded.charCodeAt(index++) - 63;
|
|
17
|
+
result |= (byte & 0x1f) << shift;
|
|
18
|
+
shift += 5;
|
|
19
|
+
} while (byte >= 0x20);
|
|
20
|
+
const deltaLat = (result & 1) !== 0 ? ~(result >> 1) : result >> 1;
|
|
21
|
+
lat += deltaLat;
|
|
22
|
+
shift = 0;
|
|
23
|
+
result = 0;
|
|
24
|
+
do {
|
|
25
|
+
byte = encoded.charCodeAt(index++) - 63;
|
|
26
|
+
result |= (byte & 0x1f) << shift;
|
|
27
|
+
shift += 5;
|
|
28
|
+
} while (byte >= 0x20);
|
|
29
|
+
const deltaLng = (result & 1) !== 0 ? ~(result >> 1) : result >> 1;
|
|
30
|
+
lng += deltaLng;
|
|
31
|
+
coordinates.push({ lat: lat / factor, lng: lng / factor });
|
|
32
|
+
}
|
|
33
|
+
return coordinates;
|
|
34
|
+
}
|
|
35
|
+
/** Encode coordinates to Google's standard encoded polyline (precision 5). */
|
|
36
|
+
export function encodePolyline(points, precision = 5) {
|
|
37
|
+
const factor = 10 ** precision;
|
|
38
|
+
let output = '';
|
|
39
|
+
let prevLat = 0;
|
|
40
|
+
let prevLng = 0;
|
|
41
|
+
for (const point of points) {
|
|
42
|
+
const lat = Math.round(point.lat * factor);
|
|
43
|
+
const lng = Math.round(point.lng * factor);
|
|
44
|
+
output += encodeSigned(lat - prevLat);
|
|
45
|
+
output += encodeSigned(lng - prevLng);
|
|
46
|
+
prevLat = lat;
|
|
47
|
+
prevLng = lng;
|
|
48
|
+
}
|
|
49
|
+
return output;
|
|
50
|
+
}
|
|
51
|
+
function encodeSigned(value) {
|
|
52
|
+
let signed = value << 1;
|
|
53
|
+
if (value < 0)
|
|
54
|
+
signed = ~signed;
|
|
55
|
+
return encodeUnsigned(signed);
|
|
56
|
+
}
|
|
57
|
+
function encodeUnsigned(value) {
|
|
58
|
+
let remaining = value;
|
|
59
|
+
let output = '';
|
|
60
|
+
while (remaining >= 0x20) {
|
|
61
|
+
output += String.fromCharCode((0x20 | (remaining & 0x1f)) + 63);
|
|
62
|
+
remaining >>= 5;
|
|
63
|
+
}
|
|
64
|
+
output += String.fromCharCode(remaining + 63);
|
|
65
|
+
return output;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=encoded-polyline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoded-polyline.js","sourceRoot":"","sources":["../../src/utils/encoded-polyline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-id.d.ts","sourceRoot":"","sources":["../../src/utils/feature-id.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAOxE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function parseReviewCountLabel(value) {
|
|
2
|
+
if (typeof value === 'number' && Number.isFinite(value))
|
|
3
|
+
return value;
|
|
4
|
+
if (typeof value === 'string') {
|
|
5
|
+
const match = value.match(/([\d,]+)/);
|
|
6
|
+
if (match)
|
|
7
|
+
return parseInt(match[1].replace(/,/g, ''), 10);
|
|
8
|
+
}
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=feature-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-id.js","sourceRoot":"","sources":["../../src/utils/feature-id.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,KAAK;YAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Maps viewport altitude ↔ zoom conversion.
|
|
3
|
+
* Reverse-engineered from Maps JS (see SerpAPI pagination article).
|
|
4
|
+
*/
|
|
5
|
+
/** Convert map zoom level to viewport altitude (`!1d` in search pb). */
|
|
6
|
+
export declare function altitudeFromZoom(zoom: number, latitude: number): number;
|
|
7
|
+
/** Convert viewport altitude to approximate zoom level. */
|
|
8
|
+
export declare function zoomFromAltitude(altitude: number, latitude: number): number;
|
|
9
|
+
/** Default viewport distance for local search (~5km). */
|
|
10
|
+
export declare function defaultViewportDist(lat: number, zoom?: number): number;
|
|
11
|
+
/** Web Mercator tile indices, the coordinate space Street View coverage tiles use. */
|
|
12
|
+
export declare function webMercatorTile(lat: number, lng: number, zoom: number): {
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
};
|
|
16
|
+
/** Great-circle distance in metres, used to rank panoramas by proximity. */
|
|
17
|
+
export declare function haversineMeters(lat1: number, lng1: number, lat2: number, lng2: number): number;
|
|
18
|
+
//# sourceMappingURL=geo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geo.d.ts","sourceRoot":"","sources":["../../src/utils/geo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAI3E;AAED,yDAAyD;AACzD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,SAAK,GAAG,MAAM,CAElE;AAED,sFAAsF;AACtF,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAO1B;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,CAQR"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Maps viewport altitude ↔ zoom conversion.
|
|
3
|
+
* Reverse-engineered from Maps JS (see SerpAPI pagination article).
|
|
4
|
+
*/
|
|
5
|
+
const EARTH_RADIUS_METERS = 6_371_010;
|
|
6
|
+
const TILE_SIZE = 256;
|
|
7
|
+
const SCREEN_PIXEL_HEIGHT = 768;
|
|
8
|
+
const RADIUS_X_PIXEL_HEIGHT = 27.3611 * EARTH_RADIUS_METERS * SCREEN_PIXEL_HEIGHT;
|
|
9
|
+
/** Convert map zoom level to viewport altitude (`!1d` in search pb). */
|
|
10
|
+
export function altitudeFromZoom(zoom, latitude) {
|
|
11
|
+
return (RADIUS_X_PIXEL_HEIGHT * Math.cos((latitude * Math.PI) / 180)) / (2 ** zoom * TILE_SIZE);
|
|
12
|
+
}
|
|
13
|
+
/** Convert viewport altitude to approximate zoom level. */
|
|
14
|
+
export function zoomFromAltitude(altitude, latitude) {
|
|
15
|
+
const ratio = (RADIUS_X_PIXEL_HEIGHT * Math.cos((latitude * Math.PI) / 180)) / (TILE_SIZE * altitude);
|
|
16
|
+
return Math.log2(ratio);
|
|
17
|
+
}
|
|
18
|
+
/** Default viewport distance for local search (~5km). */
|
|
19
|
+
export function defaultViewportDist(lat, zoom = 15) {
|
|
20
|
+
return altitudeFromZoom(zoom, lat);
|
|
21
|
+
}
|
|
22
|
+
/** Web Mercator tile indices, the coordinate space Street View coverage tiles use. */
|
|
23
|
+
export function webMercatorTile(lat, lng, zoom) {
|
|
24
|
+
const scale = 2 ** zoom;
|
|
25
|
+
const latRad = (lat * Math.PI) / 180;
|
|
26
|
+
return {
|
|
27
|
+
x: Math.floor(((lng + 180) / 360) * scale),
|
|
28
|
+
y: Math.floor(((1 - Math.log(Math.tan(latRad) + 1 / Math.cos(latRad)) / Math.PI) / 2) * scale),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/** Great-circle distance in metres, used to rank panoramas by proximity. */
|
|
32
|
+
export function haversineMeters(lat1, lng1, lat2, lng2) {
|
|
33
|
+
const toRad = (deg) => (deg * Math.PI) / 180;
|
|
34
|
+
const dLat = toRad(lat2 - lat1);
|
|
35
|
+
const dLng = toRad(lng2 - lng1);
|
|
36
|
+
const a = Math.sin(dLat / 2) ** 2 +
|
|
37
|
+
Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) * Math.sin(dLng / 2) ** 2;
|
|
38
|
+
return 2 * EARTH_RADIUS_METERS * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=geo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geo.js","sourceRoot":"","sources":["../../src/utils/geo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,mBAAmB,GAAG,SAAS,CAAC;AACtC,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,qBAAqB,GAAG,OAAO,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AAElF,wEAAwE;AACxE,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,QAAgB;IAC7D,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG,SAAS,CAAC,CAAC;AAClG,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,QAAgB;IACjE,MAAM,KAAK,GACT,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC;IAC1F,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,IAAI,GAAG,EAAE;IACxD,OAAO,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,eAAe,CAC7B,GAAW,EACX,GAAW,EACX,IAAY;IAEZ,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC;IACxB,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACrC,OAAO;QACL,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;QAC1C,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;KAC/F,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,IAAY;IAEZ,MAAM,KAAK,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,GACL,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert between Google Maps place identifier formats.
|
|
3
|
+
*
|
|
4
|
+
* - Feature ID (hex): `0x808fb73b6141f7b3:0x109239be3293d9ca`
|
|
5
|
+
* - Place ID (ChIJ): base64url-encoded protobuf of two uint64 values
|
|
6
|
+
* - Ludocid: decimal representation of the low 64 bits
|
|
7
|
+
*/
|
|
8
|
+
export interface FeatureIdParts {
|
|
9
|
+
hi: bigint;
|
|
10
|
+
lo: bigint;
|
|
11
|
+
}
|
|
12
|
+
/** Parse hex feature ID `0xHI:0xLO` into uint64 pair. */
|
|
13
|
+
export declare function parseFeatureId(featureId: string): FeatureIdParts;
|
|
14
|
+
/** Encode uint64 pair as hex feature ID. */
|
|
15
|
+
export declare function toFeatureId(hi: bigint, lo: bigint): string;
|
|
16
|
+
/** Decode ChIJ... place ID to feature ID parts. */
|
|
17
|
+
export declare function placeIdToFeatureParts(placeId: string): FeatureIdParts;
|
|
18
|
+
export declare function placeIdToFeatureId(placeId: string): string;
|
|
19
|
+
export declare function featureIdToLudocid(featureId: string): string;
|
|
20
|
+
/** Encode feature ID parts to ChIJ place ID (simplified protobuf fixed64 encoding). */
|
|
21
|
+
export declare function featurePartsToPlaceId(parts: FeatureIdParts): string;
|
|
22
|
+
export declare function featureIdToPlaceId(featureId: string): string;
|
|
23
|
+
//# sourceMappingURL=ids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/utils/ids.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AASD,yDAAyD;AACzD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAShE;AAED,4CAA4C;AAC5C,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,mDAAmD;AACnD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAyBrE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAcnE;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE5D"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert between Google Maps place identifier formats.
|
|
3
|
+
*
|
|
4
|
+
* - Feature ID (hex): `0x808fb73b6141f7b3:0x109239be3293d9ca`
|
|
5
|
+
* - Place ID (ChIJ): base64url-encoded protobuf of two uint64 values
|
|
6
|
+
* - Ludocid: decimal representation of the low 64 bits
|
|
7
|
+
*/
|
|
8
|
+
function base64UrlDecode(input) {
|
|
9
|
+
let str = input.replace(/-/g, '+').replace(/_/g, '/');
|
|
10
|
+
while (str.length % 4)
|
|
11
|
+
str += '=';
|
|
12
|
+
const binary = Buffer.from(str, 'base64');
|
|
13
|
+
return new Uint8Array(binary);
|
|
14
|
+
}
|
|
15
|
+
/** Parse hex feature ID `0xHI:0xLO` into uint64 pair. */
|
|
16
|
+
export function parseFeatureId(featureId) {
|
|
17
|
+
const match = featureId.match(/^0x([0-9a-f]+):0x([0-9a-f]+)$/i);
|
|
18
|
+
if (!match) {
|
|
19
|
+
throw new Error(`Invalid feature ID format: ${featureId}`);
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
hi: BigInt(`0x${match[1]}`),
|
|
23
|
+
lo: BigInt(`0x${match[2]}`),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/** Encode uint64 pair as hex feature ID. */
|
|
27
|
+
export function toFeatureId(hi, lo) {
|
|
28
|
+
return `0x${hi.toString(16)}:0x${lo.toString(16)}`;
|
|
29
|
+
}
|
|
30
|
+
/** Decode ChIJ... place ID to feature ID parts. */
|
|
31
|
+
export function placeIdToFeatureParts(placeId) {
|
|
32
|
+
const bytes = base64UrlDecode(placeId);
|
|
33
|
+
// Protobuf: field 1 (hi) and field 2 (lo) as fixed64
|
|
34
|
+
let hi = 0n;
|
|
35
|
+
let lo = 0n;
|
|
36
|
+
let i = 0;
|
|
37
|
+
while (i < bytes.length) {
|
|
38
|
+
const tag = bytes[i];
|
|
39
|
+
i++;
|
|
40
|
+
const field = tag >> 3;
|
|
41
|
+
const wire = tag & 0x7;
|
|
42
|
+
if (wire === 1 && i + 8 <= bytes.length) {
|
|
43
|
+
const view = new DataView(bytes.buffer, bytes.byteOffset + i, 8);
|
|
44
|
+
const value = view.getBigUint64(0, true);
|
|
45
|
+
i += 8;
|
|
46
|
+
if (field === 1)
|
|
47
|
+
hi = value;
|
|
48
|
+
else if (field === 2)
|
|
49
|
+
lo = value;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return { hi, lo };
|
|
56
|
+
}
|
|
57
|
+
export function placeIdToFeatureId(placeId) {
|
|
58
|
+
const { hi, lo } = placeIdToFeatureParts(placeId);
|
|
59
|
+
return toFeatureId(hi, lo);
|
|
60
|
+
}
|
|
61
|
+
export function featureIdToLudocid(featureId) {
|
|
62
|
+
const { lo } = parseFeatureId(featureId);
|
|
63
|
+
return lo.toString(10);
|
|
64
|
+
}
|
|
65
|
+
/** Encode feature ID parts to ChIJ place ID (simplified protobuf fixed64 encoding). */
|
|
66
|
+
export function featurePartsToPlaceId(parts) {
|
|
67
|
+
const buf = Buffer.alloc(20);
|
|
68
|
+
let offset = 0;
|
|
69
|
+
// field 1, wire type 1 (fixed64) = tag 0x09
|
|
70
|
+
buf.writeUInt8(0x09, offset++);
|
|
71
|
+
buf.writeBigUInt64LE(parts.hi, offset);
|
|
72
|
+
offset += 8;
|
|
73
|
+
// field 2, wire type 1 = tag 0x11
|
|
74
|
+
buf.writeUInt8(0x11, offset++);
|
|
75
|
+
buf.writeBigUInt64LE(parts.lo, offset);
|
|
76
|
+
return buf.toString('base64url');
|
|
77
|
+
}
|
|
78
|
+
export function featureIdToPlaceId(featureId) {
|
|
79
|
+
return featurePartsToPlaceId(parseFeatureId(featureId));
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=ids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/utils/ids.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load `.env.local` then `.env` into `process.env` without overwriting existing keys.
|
|
3
|
+
* Keeps secrets out of git — files are listed in `.gitignore`.
|
|
4
|
+
*/
|
|
5
|
+
/** Idempotent — safe to call from multiple entry points. */
|
|
6
|
+
export declare function loadProjectEnv(cwd?: string): void;
|
|
7
|
+
//# sourceMappingURL=load-env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-env.d.ts","sourceRoot":"","sources":["../../src/utils/load-env.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2BH,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,GAAG,SAAgB,GAAG,IAAI,CAkBxD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load `.env.local` then `.env` into `process.env` without overwriting existing keys.
|
|
3
|
+
* Keeps secrets out of git — files are listed in `.gitignore`.
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
function parseEnvFile(content) {
|
|
8
|
+
const out = {};
|
|
9
|
+
for (const line of content.split('\n')) {
|
|
10
|
+
const trimmed = line.trim();
|
|
11
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
12
|
+
continue;
|
|
13
|
+
const eq = trimmed.indexOf('=');
|
|
14
|
+
if (eq <= 0)
|
|
15
|
+
continue;
|
|
16
|
+
const key = trimmed.slice(0, eq).trim();
|
|
17
|
+
let value = trimmed.slice(eq + 1).trim();
|
|
18
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
19
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
20
|
+
value = value.slice(1, -1);
|
|
21
|
+
}
|
|
22
|
+
out[key] = value;
|
|
23
|
+
}
|
|
24
|
+
return out;
|
|
25
|
+
}
|
|
26
|
+
let loaded = false;
|
|
27
|
+
/** Idempotent — safe to call from multiple entry points. */
|
|
28
|
+
export function loadProjectEnv(cwd = process.cwd()) {
|
|
29
|
+
if (loaded)
|
|
30
|
+
return;
|
|
31
|
+
loaded = true;
|
|
32
|
+
for (const filename of ['.env.local', '.env']) {
|
|
33
|
+
const path = join(cwd, filename);
|
|
34
|
+
if (!existsSync(path))
|
|
35
|
+
continue;
|
|
36
|
+
try {
|
|
37
|
+
const vars = parseEnvFile(readFileSync(path, 'utf-8'));
|
|
38
|
+
for (const [key, value] of Object.entries(vars)) {
|
|
39
|
+
if (process.env[key] === undefined) {
|
|
40
|
+
process.env[key] = value;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Missing or unreadable env files are non-fatal.
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=load-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-env.js","sourceRoot":"","sources":["../../src/utils/load-env.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAClD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS;QACtB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACzC,IACE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC9C,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC9C,CAAC;YACD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB,4DAA4D;AAC5D,MAAM,UAAU,cAAc,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAChD,IAAI,MAAM;QAAE,OAAO;IACnB,MAAM,GAAG,IAAI,CAAC;IAEd,KAAK,MAAM,QAAQ,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAChC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YACvD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChD,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;oBACnC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,iDAAiD;QACnD,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Upgrade googleusercontent photo URLs to a larger display size when possible. */
|
|
2
|
+
export declare function normalizePhotoUrl(url: string, minWidth?: number): string;
|
|
3
|
+
export declare function dedupePhotos(urls: string[], max?: number): string[];
|
|
4
|
+
//# sourceMappingURL=photo-url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"photo-url.d.ts","sourceRoot":"","sources":["../../src/utils/photo-url.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,SAAM,GAAG,MAAM,CAuBrE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,SAAK,GAAG,MAAM,EAAE,CAa/D"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** Upgrade googleusercontent photo URLs to a larger display size when possible. */
|
|
2
|
+
export function normalizePhotoUrl(url, minWidth = 800) {
|
|
3
|
+
if (!url.includes('googleusercontent.com'))
|
|
4
|
+
return url;
|
|
5
|
+
let normalized = url.startsWith('//') ? `https:${url}` : url;
|
|
6
|
+
if (/=s\d+-[a-z]-cc-rp-mo/i.test(normalized) || /=s40-/i.test(normalized)) {
|
|
7
|
+
return normalized;
|
|
8
|
+
}
|
|
9
|
+
if (/=w\d+-h\d+/i.test(normalized)) {
|
|
10
|
+
return normalized.replace(/=w\d+-h\d+[^/]*/i, `=w${minWidth}-h${Math.round(minWidth * 0.75)}-k-no`);
|
|
11
|
+
}
|
|
12
|
+
if (/=s\d+/i.test(normalized)) {
|
|
13
|
+
return normalized.replace(/=s\d+[^/]*/i, `=s${minWidth}`);
|
|
14
|
+
}
|
|
15
|
+
if (!/=[whs]\d+/i.test(normalized) && !normalized.includes('=s')) {
|
|
16
|
+
const separator = normalized.includes('?') ? '&' : '?';
|
|
17
|
+
return `${normalized}${separator}w=${minWidth}`;
|
|
18
|
+
}
|
|
19
|
+
return normalized;
|
|
20
|
+
}
|
|
21
|
+
export function dedupePhotos(urls, max = 50) {
|
|
22
|
+
const seen = new Set();
|
|
23
|
+
const result = [];
|
|
24
|
+
for (const url of urls) {
|
|
25
|
+
const base = url.split('=')[0] ?? url;
|
|
26
|
+
if (seen.has(base))
|
|
27
|
+
continue;
|
|
28
|
+
seen.add(base);
|
|
29
|
+
result.push(normalizePhotoUrl(url));
|
|
30
|
+
if (result.length >= max)
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=photo-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"photo-url.js","sourceRoot":"","sources":["../../src/utils/photo-url.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,QAAQ,GAAG,GAAG;IAC3D,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAAE,OAAO,GAAG,CAAC;IAEvD,IAAI,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAE7D,IAAI,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1E,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,OAAO,UAAU,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IACtG,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjE,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACvD,OAAO,GAAG,UAAU,GAAG,SAAS,KAAK,QAAQ,EAAE,CAAC;IAClD,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAc,EAAE,GAAG,GAAG,EAAE;IACnD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;QACtC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG;YAAE,MAAM;IAClC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Open Location Code (Plus Code) encoder — ported from Google's reference implementation.
|
|
3
|
+
*
|
|
4
|
+
* Forward geocode hits carry address metadata at placeData[183] but omit the compact
|
|
5
|
+
* code at [183][2][1][0]; that slot appears on reverse-geocode coordinate hits only.
|
|
6
|
+
* When coordinates are known, a derived code matches Google's mathematically.
|
|
7
|
+
*/
|
|
8
|
+
/** Encode a full Plus Code from WGS84 coordinates (default 10-digit pair precision). */
|
|
9
|
+
export declare function encodePlusCode(latitude: number, longitude: number, codeLength?: number): string;
|
|
10
|
+
export type PlusCodeSource = 'payload' | 'derived-olc';
|
|
11
|
+
//# sourceMappingURL=plus-code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plus-code.d.ts","sourceRoot":"","sources":["../../src/utils/plus-code.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkFH,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,SAAmB,GAAG,MAAM,CAGzG;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,aAAa,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Open Location Code (Plus Code) encoder — ported from Google's reference implementation.
|
|
3
|
+
*
|
|
4
|
+
* Forward geocode hits carry address metadata at placeData[183] but omit the compact
|
|
5
|
+
* code at [183][2][1][0]; that slot appears on reverse-geocode coordinate hits only.
|
|
6
|
+
* When coordinates are known, a derived code matches Google's mathematically.
|
|
7
|
+
*/
|
|
8
|
+
const SEPARATOR = '+';
|
|
9
|
+
const SEPARATOR_POSITION = 8;
|
|
10
|
+
const PADDING_CHARACTER = '0';
|
|
11
|
+
const CODE_ALPHABET = '23456789CFGHJMPQRVWX';
|
|
12
|
+
const ENCODING_BASE = CODE_ALPHABET.length;
|
|
13
|
+
const LATITUDE_MAX = 90;
|
|
14
|
+
const LONGITUDE_MAX = 180;
|
|
15
|
+
const PAIR_CODE_LENGTH = 10;
|
|
16
|
+
const MAX_DIGIT_COUNT = 15;
|
|
17
|
+
const GRID_COLUMNS = 4;
|
|
18
|
+
const GRID_ROWS = 5;
|
|
19
|
+
const PAIR_PRECISION = ENCODING_BASE ** 3;
|
|
20
|
+
const GRID_CODE_LENGTH = MAX_DIGIT_COUNT - PAIR_CODE_LENGTH;
|
|
21
|
+
const FINAL_LAT_PRECISION = PAIR_PRECISION * GRID_ROWS ** (MAX_DIGIT_COUNT - PAIR_CODE_LENGTH);
|
|
22
|
+
const FINAL_LNG_PRECISION = PAIR_PRECISION * GRID_COLUMNS ** (MAX_DIGIT_COUNT - PAIR_CODE_LENGTH);
|
|
23
|
+
function locationToIntegers(latitude, longitude) {
|
|
24
|
+
let latVal = Math.floor(latitude * FINAL_LAT_PRECISION);
|
|
25
|
+
latVal += LATITUDE_MAX * FINAL_LAT_PRECISION;
|
|
26
|
+
if (latVal < 0) {
|
|
27
|
+
latVal = 0;
|
|
28
|
+
}
|
|
29
|
+
else if (latVal >= 2 * LATITUDE_MAX * FINAL_LAT_PRECISION) {
|
|
30
|
+
latVal = 2 * LATITUDE_MAX * FINAL_LAT_PRECISION - 1;
|
|
31
|
+
}
|
|
32
|
+
let lngVal = Math.floor(longitude * FINAL_LNG_PRECISION);
|
|
33
|
+
lngVal += LONGITUDE_MAX * FINAL_LNG_PRECISION;
|
|
34
|
+
if (lngVal < 0) {
|
|
35
|
+
lngVal =
|
|
36
|
+
(lngVal % (2 * LONGITUDE_MAX * FINAL_LNG_PRECISION)) +
|
|
37
|
+
2 * LONGITUDE_MAX * FINAL_LNG_PRECISION;
|
|
38
|
+
}
|
|
39
|
+
else if (lngVal >= 2 * LONGITUDE_MAX * FINAL_LNG_PRECISION) {
|
|
40
|
+
lngVal = lngVal % (2 * LONGITUDE_MAX * FINAL_LNG_PRECISION);
|
|
41
|
+
}
|
|
42
|
+
return [latVal, lngVal];
|
|
43
|
+
}
|
|
44
|
+
function encodeIntegers(latInt, lngInt, codeLength = PAIR_CODE_LENGTH) {
|
|
45
|
+
const code = new Array(MAX_DIGIT_COUNT + 1);
|
|
46
|
+
code[SEPARATOR_POSITION] = SEPARATOR;
|
|
47
|
+
if (codeLength > PAIR_CODE_LENGTH) {
|
|
48
|
+
for (let i = MAX_DIGIT_COUNT - PAIR_CODE_LENGTH; i >= 1; i--) {
|
|
49
|
+
const latDigit = latInt % GRID_ROWS;
|
|
50
|
+
const lngDigit = lngInt % GRID_COLUMNS;
|
|
51
|
+
const ndx = latDigit * GRID_COLUMNS + lngDigit;
|
|
52
|
+
code[SEPARATOR_POSITION + 2 + i] = CODE_ALPHABET[ndx];
|
|
53
|
+
latInt = Math.floor(latInt / GRID_ROWS);
|
|
54
|
+
lngInt = Math.floor(lngInt / GRID_COLUMNS);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
latInt = Math.floor(latInt / GRID_ROWS ** GRID_CODE_LENGTH);
|
|
59
|
+
lngInt = Math.floor(lngInt / GRID_COLUMNS ** GRID_CODE_LENGTH);
|
|
60
|
+
}
|
|
61
|
+
code[SEPARATOR_POSITION + 1] = CODE_ALPHABET[latInt % ENCODING_BASE];
|
|
62
|
+
code[SEPARATOR_POSITION + 2] = CODE_ALPHABET[lngInt % ENCODING_BASE];
|
|
63
|
+
latInt = Math.floor(latInt / ENCODING_BASE);
|
|
64
|
+
lngInt = Math.floor(lngInt / ENCODING_BASE);
|
|
65
|
+
for (let i = PAIR_CODE_LENGTH / 2 + 1; i >= 0; i -= 2) {
|
|
66
|
+
code[i] = CODE_ALPHABET[latInt % ENCODING_BASE];
|
|
67
|
+
code[i + 1] = CODE_ALPHABET[lngInt % ENCODING_BASE];
|
|
68
|
+
latInt = Math.floor(latInt / ENCODING_BASE);
|
|
69
|
+
lngInt = Math.floor(lngInt / ENCODING_BASE);
|
|
70
|
+
}
|
|
71
|
+
if (codeLength >= SEPARATOR_POSITION) {
|
|
72
|
+
return code.slice(0, codeLength + 1).join('');
|
|
73
|
+
}
|
|
74
|
+
return (code.slice(0, codeLength).join('') +
|
|
75
|
+
PADDING_CHARACTER.repeat(SEPARATOR_POSITION - codeLength) +
|
|
76
|
+
SEPARATOR);
|
|
77
|
+
}
|
|
78
|
+
/** Encode a full Plus Code from WGS84 coordinates (default 10-digit pair precision). */
|
|
79
|
+
export function encodePlusCode(latitude, longitude, codeLength = PAIR_CODE_LENGTH) {
|
|
80
|
+
const [latInt, lngInt] = locationToIntegers(latitude, longitude);
|
|
81
|
+
return encodeIntegers(latInt, lngInt, codeLength);
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=plus-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plus-code.js","sourceRoot":"","sources":["../../src/utils/plus-code.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal PNG decode/encode for 8-bit RGB/RGBA tiles.
|
|
3
|
+
*
|
|
4
|
+
* Supports color types 2 (RGB) and 6 (RGBA). Output is always RGBA for compositing.
|
|
5
|
+
* Uses node:zlib for IDAT inflate/deflate — no third-party image dependency.
|
|
6
|
+
*/
|
|
7
|
+
export interface RgbaImage {
|
|
8
|
+
width: number;
|
|
9
|
+
height: number;
|
|
10
|
+
/** Row-major RGBA bytes, length width * height * 4. */
|
|
11
|
+
data: Uint8Array;
|
|
12
|
+
}
|
|
13
|
+
/** Decode a PNG buffer into RGBA pixels. */
|
|
14
|
+
export declare function decodePng(png: Uint8Array): RgbaImage;
|
|
15
|
+
/** Encode RGBA pixels as an 8-bit truecolour-with-alpha PNG. */
|
|
16
|
+
export declare function encodePng(image: RgbaImage): Uint8Array;
|
|
17
|
+
/** Create a blank RGBA canvas filled with a solid colour. */
|
|
18
|
+
export declare function createRgbaCanvas(width: number, height: number, fill?: [number, number, number, number]): RgbaImage;
|
|
19
|
+
/** Blit source RGBA onto dest at (dx, dy), clipping at dest edges. */
|
|
20
|
+
export declare function blitRgba(dest: RgbaImage, src: RgbaImage, dx: number, dy: number): void;
|
|
21
|
+
/** Extract a sub-rectangle from an RGBA image. */
|
|
22
|
+
export declare function cropRgba(image: RgbaImage, x: number, y: number, w: number, h: number): RgbaImage;
|
|
23
|
+
/** Sample pixel channel variance — detects uniform/blank stitch output. */
|
|
24
|
+
export declare function pixelVariance(image: RgbaImage): number;
|
|
25
|
+
//# sourceMappingURL=png.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"png.d.ts","sourceRoot":"","sources":["../../src/utils/png.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,IAAI,EAAE,UAAU,CAAC;CAClB;AA6FD,4CAA4C;AAC5C,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,CAqGpD;AAUD,gEAAgE;AAChE,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,CAmCtD;AAED,6DAA6D;AAC7D,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAwB,GAC5D,SAAS,CAUX;AAED,sEAAsE;AACtE,wBAAgB,QAAQ,CACtB,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,SAAS,EACd,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,IAAI,CA4BN;AAED,kDAAkD;AAClD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAiBhG;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAsBtD"}
|