googlemaps-kit 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/advanced/parsers.d.ts +1 -1
- package/dist/advanced/parsers.d.ts.map +1 -1
- package/dist/advanced/parsers.js +1 -1
- package/dist/advanced/parsers.js.map +1 -1
- package/dist/advanced.d.ts +2 -2
- package/dist/advanced.d.ts.map +1 -1
- package/dist/advanced.js.map +1 -1
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +9 -11
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/tui/app.d.ts.map +1 -1
- package/dist/cli/tui/app.js +7 -7
- package/dist/cli/tui/app.js.map +1 -1
- package/dist/cli.js +14 -11
- package/dist/cli.js.map +1 -1
- package/dist/client/gmaps-client.d.ts +7 -29
- package/dist/client/gmaps-client.d.ts.map +1 -1
- package/dist/client/gmaps-client.js +15 -131
- package/dist/client/gmaps-client.js.map +1 -1
- package/dist/client/intent.d.ts +1 -11
- package/dist/client/intent.d.ts.map +1 -1
- package/dist/client/intent.js +17 -13
- package/dist/client/intent.js.map +1 -1
- package/dist/client/maps-tools.d.ts +8 -4
- package/dist/client/maps-tools.d.ts.map +1 -1
- package/dist/client/maps-tools.js +20 -11
- package/dist/client/maps-tools.js.map +1 -1
- package/dist/client/namespaces.d.ts +54 -19
- package/dist/client/namespaces.d.ts.map +1 -1
- package/dist/client/namespaces.js +86 -28
- package/dist/client/namespaces.js.map +1 -1
- package/dist/client/place-workflows.d.ts +7 -0
- package/dist/client/place-workflows.d.ts.map +1 -0
- package/dist/client/place-workflows.js +113 -0
- package/dist/client/place-workflows.js.map +1 -0
- package/dist/index.d.ts +10 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/known-surfaces.d.ts +41 -5
- package/dist/known-surfaces.d.ts.map +1 -1
- package/dist/known-surfaces.js +41 -5
- package/dist/known-surfaces.js.map +1 -1
- package/dist/parsers/geocode.d.ts.map +1 -1
- package/dist/parsers/geocode.js +30 -1
- package/dist/parsers/geocode.js.map +1 -1
- package/dist/parsers/reviews.d.ts +8 -1
- package/dist/parsers/reviews.d.ts.map +1 -1
- package/dist/parsers/reviews.js +46 -9
- package/dist/parsers/reviews.js.map +1 -1
- package/dist/platform/catalog.d.ts +18 -0
- package/dist/platform/catalog.d.ts.map +1 -0
- package/dist/platform/catalog.js +329 -0
- package/dist/platform/catalog.js.map +1 -0
- package/dist/platform/parity.d.ts +12 -0
- package/dist/platform/parity.d.ts.map +1 -0
- package/dist/platform/parity.js +25 -0
- package/dist/platform/parity.js.map +1 -0
- package/dist/services/aerial-view.d.ts +22 -0
- package/dist/services/aerial-view.d.ts.map +1 -0
- package/dist/services/aerial-view.js +107 -0
- package/dist/services/aerial-view.js.map +1 -0
- package/dist/services/elevation.d.ts +6 -4
- package/dist/services/elevation.d.ts.map +1 -1
- package/dist/services/elevation.js +39 -4
- package/dist/services/elevation.js.map +1 -1
- package/dist/services/environment/air-quality.d.ts +39 -0
- package/dist/services/environment/air-quality.d.ts.map +1 -0
- package/dist/services/environment/air-quality.js +86 -0
- package/dist/services/environment/air-quality.js.map +1 -0
- package/dist/services/environment/weather.d.ts +39 -0
- package/dist/services/environment/weather.d.ts.map +1 -0
- package/dist/services/environment/weather.js +54 -0
- package/dist/services/environment/weather.js.map +1 -0
- package/dist/services/geocode.d.ts +5 -1
- package/dist/services/geocode.d.ts.map +1 -1
- package/dist/services/geocode.js +13 -0
- package/dist/services/geocode.js.map +1 -1
- package/dist/services/keyed.d.ts +80 -0
- package/dist/services/keyed.d.ts.map +1 -0
- package/dist/services/keyed.js +152 -0
- package/dist/services/keyed.js.map +1 -0
- package/dist/services/knowledge.d.ts +6 -2
- package/dist/services/knowledge.d.ts.map +1 -1
- package/dist/services/knowledge.js +30 -5
- package/dist/services/knowledge.js.map +1 -1
- package/dist/services/mobility.d.ts.map +1 -1
- package/dist/services/mobility.js +13 -2
- package/dist/services/mobility.js.map +1 -1
- package/dist/services/nearby-search.d.ts +32 -0
- package/dist/services/nearby-search.d.ts.map +1 -0
- package/dist/services/nearby-search.js +85 -0
- package/dist/services/nearby-search.js.map +1 -0
- package/dist/services/panorama.d.ts +8 -1
- package/dist/services/panorama.d.ts.map +1 -1
- package/dist/services/panorama.js +48 -0
- package/dist/services/panorama.js.map +1 -1
- package/dist/services/photos.d.ts.map +1 -1
- package/dist/services/photos.js +9 -2
- package/dist/services/photos.js.map +1 -1
- package/dist/services/places.d.ts.map +1 -1
- package/dist/services/places.js +1 -0
- package/dist/services/places.js.map +1 -1
- package/dist/services/search.d.ts +8 -3
- package/dist/services/search.d.ts.map +1 -1
- package/dist/services/search.js +28 -9
- package/dist/services/search.js.map +1 -1
- package/dist/types/aerial-view.d.ts +39 -0
- package/dist/types/aerial-view.d.ts.map +1 -0
- package/dist/types/aerial-view.js +2 -0
- package/dist/types/aerial-view.js.map +1 -0
- package/dist/types/common.d.ts +30 -2
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/common.js.map +1 -1
- package/dist/types/directions.d.ts +1 -1
- package/dist/types/directions.d.ts.map +1 -1
- package/dist/types/dx.d.ts +23 -10
- package/dist/types/dx.d.ts.map +1 -1
- package/dist/types/panorama.d.ts +19 -0
- package/dist/types/panorama.d.ts.map +1 -1
- package/dist/types/reviews.d.ts +3 -4
- package/dist/types/reviews.d.ts.map +1 -1
- package/dist/types/suggest.d.ts +4 -6
- package/dist/types/suggest.d.ts.map +1 -1
- package/dist/utils/place-ref.d.ts +14 -4
- package/dist/utils/place-ref.d.ts.map +1 -1
- package/dist/utils/place-ref.js +49 -1
- package/dist/utils/place-ref.js.map +1 -1
- package/package.json +1 -1
package/dist/parsers/reviews.js
CHANGED
|
@@ -78,18 +78,55 @@ export function applyReviewClientFilters(result, filters) {
|
|
|
78
78
|
pageRatingDistribution: undefined,
|
|
79
79
|
};
|
|
80
80
|
}
|
|
81
|
-
|
|
81
|
+
function namedBucketsFromWire(buckets, descending) {
|
|
82
|
+
return descending
|
|
83
|
+
? {
|
|
84
|
+
fiveStar: buckets[0] ?? 0,
|
|
85
|
+
fourStar: buckets[1] ?? 0,
|
|
86
|
+
threeStar: buckets[2] ?? 0,
|
|
87
|
+
twoStar: buckets[3] ?? 0,
|
|
88
|
+
oneStar: buckets[4] ?? 0,
|
|
89
|
+
}
|
|
90
|
+
: {
|
|
91
|
+
oneStar: buckets[0] ?? 0,
|
|
92
|
+
twoStar: buckets[1] ?? 0,
|
|
93
|
+
threeStar: buckets[2] ?? 0,
|
|
94
|
+
fourStar: buckets[3] ?? 0,
|
|
95
|
+
fiveStar: buckets[4] ?? 0,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/** Weighted mean star rating from a named histogram (1–5 scale). */
|
|
99
|
+
export function ratingDistributionWeightedMean(dist) {
|
|
100
|
+
const total = sumRatingDistribution(dist);
|
|
101
|
+
if (total === 0)
|
|
102
|
+
return 0;
|
|
103
|
+
return ((dist.oneStar +
|
|
104
|
+
2 * dist.twoStar +
|
|
105
|
+
3 * dist.threeStar +
|
|
106
|
+
4 * dist.fourStar +
|
|
107
|
+
5 * dist.fiveStar) /
|
|
108
|
+
total);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Convert GetPlaceUgcPostAggregates histogram to named buckets.
|
|
112
|
+
* Wire order is `[1★, 2★, 3★, 4★, 5★]` (Kake Di Hatti fixture + Sparq on Rio).
|
|
113
|
+
* When `rating` is present, pick the orientation whose weighted mean is closer
|
|
114
|
+
* so a reversed payload still labels buckets correctly.
|
|
115
|
+
*/
|
|
82
116
|
export function placeAggregatesToRatingDistribution(aggregates) {
|
|
83
117
|
const buckets = aggregates.ratingDistribution;
|
|
84
118
|
if (!Array.isArray(buckets) || buckets.length < 5)
|
|
85
119
|
return undefined;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
120
|
+
const ascending = namedBucketsFromWire(buckets, false);
|
|
121
|
+
const rating = aggregates.rating;
|
|
122
|
+
if (typeof rating !== 'number') {
|
|
123
|
+
return ascending;
|
|
124
|
+
}
|
|
125
|
+
const descending = namedBucketsFromWire(buckets, true);
|
|
126
|
+
return Math.abs(ratingDistributionWeightedMean(ascending) - rating) <=
|
|
127
|
+
Math.abs(ratingDistributionWeightedMean(descending) - rating)
|
|
128
|
+
? ascending
|
|
129
|
+
: descending;
|
|
93
130
|
}
|
|
94
131
|
/** Sum histogram buckets — should match totalCount when Google sends a complete aggregate. */
|
|
95
132
|
export function sumRatingDistribution(dist) {
|
|
@@ -108,7 +145,7 @@ export function extractPlaceUgcAggregates(data, options) {
|
|
|
108
145
|
const rating = safeGet(block, 0);
|
|
109
146
|
const distribution = safeGet(block, 1);
|
|
110
147
|
const totalCount = safeGet(block, 2);
|
|
111
|
-
//
|
|
148
|
+
// Wire format is 5 elements [1★, 2★, 3★, 4★, 5★]; nulls appear when a
|
|
112
149
|
// star bucket has no data. Only expose the tuple when all five are numeric.
|
|
113
150
|
const ratingDistribution = Array.isArray(distribution) &&
|
|
114
151
|
distribution.length === 5 &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reviews.js","sourceRoot":"","sources":["../../src/parsers/reviews.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"reviews.js","sourceRoot":"","sources":["../../src/parsers/reviews.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM,IAAI,CAAC;QAChB,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;QAChB,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;QAChB,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;QAChB,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;QAChB,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;QAChB,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CACd,CAAC;AACJ,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,aAAa,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE3D,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAEpE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAChF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;YAAE,SAAS;QAEzC,MAAM,MAAM,GAAG,OAAO,CAAS,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,OAAO,CAAS,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,MAAM,GAAW;YACrB,QAAQ,EAAE,OAAO,CAAS,UAAU,EAAE,CAAC,CAAC;YACxC,MAAM,EAAE,OAAO,CAAS,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC/C,WAAW,EAAE,OAAO,CAAS,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACpD,IAAI,EAAE,OAAO,CAAS,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,EAAE,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACrF,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;YACpD,MAAM,EAAE,KAAK;SACd,CAAC;QAEF,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,MAAM;QAC3B,OAAO;QACP,aAAa;KACd,CAAC;AACJ,CAAC;AAID;;GAEG;AAEH,SAAS,aAAa,CAAC,MAAc,EAAE,IAAY;IACjD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClG,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,wBAAwB,CACtC,MAAqB,EACrB,OAA6B;IAE7B,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,MAAO,CAAC,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;QAC3B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACzE,CAAC;IAED,OAAO;QACL,GAAG,MAAM;QACT,WAAW,EAAE,OAAO,CAAC,MAAM;QAC3B,OAAO;QACP,sBAAsB,EAAE,SAAS;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAA0B,EAC1B,UAAmB;IAEnB,OAAO,UAAU;QACf,CAAC,CAAC;YACE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YACzB,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YACzB,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YACxB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;SACzB;QACH,CAAC,CAAC;YACE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YACxB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YACxB,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1B,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YACzB,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;SAC1B,CAAC;AACR,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,8BAA8B,CAAC,IAAmC;IAChF,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,OAAO,CACL,CAAC,IAAI,CAAC,OAAO;QACX,CAAC,GAAG,IAAI,CAAC,OAAO;QAChB,CAAC,GAAG,IAAI,CAAC,SAAS;QAClB,CAAC,GAAG,IAAI,CAAC,QAAQ;QACjB,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACpB,KAAK,CACN,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mCAAmC,CACjD,UAA8B;IAE9B,MAAM,OAAO,GAAG,UAAU,CAAC,kBAAkB,CAAC;IAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAEpE,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IACjC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvD,OAAO,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;QACjE,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;QAC7D,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,UAAU,CAAC;AACjB,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,qBAAqB,CAAC,IAAmC;IACvE,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AACtF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAa,EAAE,OAA2B;IAClF,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,OAAO,CAAW,IAAI,EAAE,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAS,KAAK,EAAE,CAAC,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,OAAO,CAAW,KAAK,EAAE,CAAC,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,OAAO,CAAS,KAAK,EAAE,CAAC,CAAC,CAAC;IAE7C,sEAAsE;IACtE,4EAA4E;IAC5E,MAAM,kBAAkB,GACtB,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;QAC3B,YAAY,CAAC,MAAM,KAAK,CAAC;QACzB,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;QAC3D,CAAC,CAAE,YAAyD;QAC5D,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO;QACL,MAAM,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QACvD,kBAAkB;QAClB,UAAU,EAAE,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QACnE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;KACrC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type PlatformCategory = 'maps' | 'routes' | 'places' | 'environment';
|
|
2
|
+
export type PlatformKitStatus = 'working' | 'partial' | 'missing' | 'api-key-required' | 'not-applicable';
|
|
3
|
+
export type PlatformAuth = 'none' | 'optional-key' | 'api-key-required' | 'auth-cookies';
|
|
4
|
+
export interface PlatformProduct {
|
|
5
|
+
id: string;
|
|
6
|
+
category: PlatformCategory;
|
|
7
|
+
/** Product label on mapsplatform.google.com */
|
|
8
|
+
name: string;
|
|
9
|
+
auth: PlatformAuth;
|
|
10
|
+
kitStatus: PlatformKitStatus;
|
|
11
|
+
kitPath: string;
|
|
12
|
+
notes: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const PLATFORM_CATALOG: readonly PlatformProduct[];
|
|
15
|
+
export type PlatformProductId = (typeof PLATFORM_CATALOG)[number]['id'];
|
|
16
|
+
export declare function listPlatformProducts(category?: PlatformCategory): readonly PlatformProduct[];
|
|
17
|
+
export declare function getPlatformProduct(id: string): PlatformProduct;
|
|
18
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/platform/catalog.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAC;AAE5E,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,SAAS,GACT,SAAS,GACT,kBAAkB,GAClB,gBAAgB,CAAC;AAErB,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,cAAc,GAAG,kBAAkB,GAAG,cAAc,CAAC;AAEzF,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,gBAAgB,EAAE,SAAS,eAAe,EA4T7C,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAExE,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,SAAS,eAAe,EAAE,CAG5F;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,CAI9D"}
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
export const PLATFORM_CATALOG = [
|
|
2
|
+
{
|
|
3
|
+
id: '3dMaps',
|
|
4
|
+
category: 'maps',
|
|
5
|
+
name: '3D Maps',
|
|
6
|
+
auth: 'none',
|
|
7
|
+
kitStatus: 'partial',
|
|
8
|
+
kitPath: 'map.map3d',
|
|
9
|
+
notes: 'Rocktree mesh decode from kh.google.com/rt/earth.',
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
id: 'aerialView',
|
|
13
|
+
category: 'maps',
|
|
14
|
+
name: 'Aerial View',
|
|
15
|
+
auth: 'api-key-required',
|
|
16
|
+
kitStatus: 'api-key-required',
|
|
17
|
+
kitPath: 'map.aerialView',
|
|
18
|
+
notes: 'Cinematic video via aerialview.googleapis.com when apiKey is set.',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: 'dynamicMaps',
|
|
22
|
+
category: 'maps',
|
|
23
|
+
name: 'Dynamic Maps',
|
|
24
|
+
auth: 'none',
|
|
25
|
+
kitStatus: 'partial',
|
|
26
|
+
kitPath: 'map.tiles',
|
|
27
|
+
notes: 'Composable vt/proto tile sessions and viewport share URLs.',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
id: 'dynamicStreetView',
|
|
31
|
+
category: 'maps',
|
|
32
|
+
name: 'Dynamic Street View',
|
|
33
|
+
auth: 'none',
|
|
34
|
+
kitStatus: 'working',
|
|
35
|
+
kitPath: 'map.panorama',
|
|
36
|
+
notes: 'Photometa, coverage tiles, tile pyramid manifest.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: 'elevation',
|
|
40
|
+
category: 'maps',
|
|
41
|
+
name: 'Elevation',
|
|
42
|
+
auth: 'none',
|
|
43
|
+
kitStatus: 'partial',
|
|
44
|
+
kitPath: 'travel.elevation',
|
|
45
|
+
notes: 'Panorama heights first, then bicycling directions fallback.',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
id: 'mapTiles',
|
|
49
|
+
category: 'maps',
|
|
50
|
+
name: 'Map Tiles',
|
|
51
|
+
auth: 'none',
|
|
52
|
+
kitStatus: 'partial',
|
|
53
|
+
kitPath: 'map.tiles / map.layers',
|
|
54
|
+
notes: '/maps/vt/proto roadmap and named overlay layers.',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
id: 'mapsEmbed',
|
|
58
|
+
category: 'maps',
|
|
59
|
+
name: 'Maps Embed',
|
|
60
|
+
auth: 'optional-key',
|
|
61
|
+
kitStatus: 'working',
|
|
62
|
+
kitPath: 'map.buildEmbedUrl',
|
|
63
|
+
notes: 'Keyless /maps/embed?pb= or embed v1 with apiKey.',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
id: 'photorealistic3dTiles',
|
|
67
|
+
category: 'maps',
|
|
68
|
+
name: 'Photorealistic 3D Tiles',
|
|
69
|
+
auth: 'none',
|
|
70
|
+
kitStatus: 'partial',
|
|
71
|
+
kitPath: 'map.map3d / map.earth',
|
|
72
|
+
notes: 'Consumer rocktree octree mesh decode.',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
id: 'staticMaps',
|
|
76
|
+
category: 'maps',
|
|
77
|
+
name: 'Static Maps',
|
|
78
|
+
auth: 'none',
|
|
79
|
+
kitStatus: 'partial',
|
|
80
|
+
kitPath: 'map.staticMap',
|
|
81
|
+
notes: 'Local vt/proto tile stitch.',
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
id: 'staticStreetView',
|
|
85
|
+
category: 'maps',
|
|
86
|
+
name: 'Static Street View',
|
|
87
|
+
auth: 'none',
|
|
88
|
+
kitStatus: 'working',
|
|
89
|
+
kitPath: 'map.panorama.fetchStaticImage',
|
|
90
|
+
notes: 'streetviewpixels thumbnail JPEG.',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
id: 'streetViewTiles',
|
|
94
|
+
category: 'maps',
|
|
95
|
+
name: 'Street View Tiles',
|
|
96
|
+
auth: 'none',
|
|
97
|
+
kitStatus: 'working',
|
|
98
|
+
kitPath: 'map.panorama.getTileGrid',
|
|
99
|
+
notes: 'Equirectangular JPEG tile pyramid.',
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
id: 'computeRoutes',
|
|
103
|
+
category: 'routes',
|
|
104
|
+
name: 'Compute Routes',
|
|
105
|
+
auth: 'none',
|
|
106
|
+
kitStatus: 'partial',
|
|
107
|
+
kitPath: 'travel.directions',
|
|
108
|
+
notes: '/maps/preview/directions consumer transport.',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
id: 'computeRouteMatrix',
|
|
112
|
+
category: 'routes',
|
|
113
|
+
name: 'Compute Routes Matrix',
|
|
114
|
+
auth: 'none',
|
|
115
|
+
kitStatus: 'partial',
|
|
116
|
+
kitPath: 'travel.distanceMatrix',
|
|
117
|
+
notes: 'N×M directions fan-out with dedupe.',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
id: 'navigationConnect',
|
|
121
|
+
category: 'routes',
|
|
122
|
+
name: 'Navigation Connect',
|
|
123
|
+
auth: 'none',
|
|
124
|
+
kitStatus: 'not-applicable',
|
|
125
|
+
kitPath: '—',
|
|
126
|
+
notes: 'OEM/mobile product — no server HTTP surface.',
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
id: 'navigationSdk',
|
|
130
|
+
category: 'routes',
|
|
131
|
+
name: 'Navigation SDK',
|
|
132
|
+
auth: 'none',
|
|
133
|
+
kitStatus: 'not-applicable',
|
|
134
|
+
kitPath: '—',
|
|
135
|
+
notes: 'Android/iOS native SDK — out of scope for Node kit.',
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
id: 'roads',
|
|
139
|
+
category: 'routes',
|
|
140
|
+
name: 'Roads',
|
|
141
|
+
auth: 'api-key-required',
|
|
142
|
+
kitStatus: 'api-key-required',
|
|
143
|
+
kitPath: 'travel.roads',
|
|
144
|
+
notes: 'snapToRoads / nearestRoads — requires apiKey.',
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
id: 'routeOptimization',
|
|
148
|
+
category: 'routes',
|
|
149
|
+
name: 'Route Optimization',
|
|
150
|
+
auth: 'none',
|
|
151
|
+
kitStatus: 'partial',
|
|
152
|
+
kitPath: 'travel.waypointOptimizer',
|
|
153
|
+
notes: 'Client TSP over distance-matrix fan-out.',
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
id: 'addressValidation',
|
|
157
|
+
category: 'places',
|
|
158
|
+
name: 'Address Validation',
|
|
159
|
+
auth: 'api-key-required',
|
|
160
|
+
kitStatus: 'api-key-required',
|
|
161
|
+
kitPath: 'location.addressValidation',
|
|
162
|
+
notes: 'Requires apiKey — no consumer surface.',
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
id: 'autocomplete',
|
|
166
|
+
category: 'places',
|
|
167
|
+
name: 'Autocomplete',
|
|
168
|
+
auth: 'none',
|
|
169
|
+
kitStatus: 'working',
|
|
170
|
+
kitPath: 'places.suggest',
|
|
171
|
+
notes: '/s?tbm=map suggest=p with camera pb.',
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
id: 'geocoding',
|
|
175
|
+
category: 'places',
|
|
176
|
+
name: 'Geocoding',
|
|
177
|
+
auth: 'none',
|
|
178
|
+
kitStatus: 'partial',
|
|
179
|
+
kitPath: 'location.geocode',
|
|
180
|
+
notes: 'Forward and reverse via search RPC.',
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
id: 'geolocation',
|
|
184
|
+
category: 'places',
|
|
185
|
+
name: 'Geolocation',
|
|
186
|
+
auth: 'api-key-required',
|
|
187
|
+
kitStatus: 'api-key-required',
|
|
188
|
+
kitPath: 'location.geolocation',
|
|
189
|
+
notes: 'WiFi/cell geolocation — requires apiKey.',
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
id: 'groundingMaps',
|
|
193
|
+
category: 'places',
|
|
194
|
+
name: 'Grounding with Google Maps',
|
|
195
|
+
auth: 'api-key-required',
|
|
196
|
+
kitStatus: 'missing',
|
|
197
|
+
kitPath: '—',
|
|
198
|
+
notes: 'Gemini grounding — not on consumer Maps.',
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
id: 'isochrones',
|
|
202
|
+
category: 'places',
|
|
203
|
+
name: 'Isochrones API',
|
|
204
|
+
auth: 'api-key-required',
|
|
205
|
+
kitStatus: 'missing',
|
|
206
|
+
kitPath: '—',
|
|
207
|
+
notes: 'Reachability polygons — not reverse-engineered yet.',
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
id: 'groundingLite',
|
|
211
|
+
category: 'places',
|
|
212
|
+
name: 'Maps Grounding Lite',
|
|
213
|
+
auth: 'api-key-required',
|
|
214
|
+
kitStatus: 'missing',
|
|
215
|
+
kitPath: '—',
|
|
216
|
+
notes: 'MCP grounding product.',
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
id: 'nearbySearch',
|
|
220
|
+
category: 'places',
|
|
221
|
+
name: 'Nearby Search',
|
|
222
|
+
auth: 'none',
|
|
223
|
+
kitStatus: 'partial',
|
|
224
|
+
kitPath: 'places.nearbySearch',
|
|
225
|
+
notes: 'Categorical search per includedType, radius-filtered.',
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
id: 'placeDetails',
|
|
229
|
+
category: 'places',
|
|
230
|
+
name: 'Place Details',
|
|
231
|
+
auth: 'none',
|
|
232
|
+
kitStatus: 'working',
|
|
233
|
+
kitPath: 'places.get',
|
|
234
|
+
notes: '/maps/preview/place rich/detail modes.',
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
id: 'placePhotos',
|
|
238
|
+
category: 'places',
|
|
239
|
+
name: 'Place Photos',
|
|
240
|
+
auth: 'none',
|
|
241
|
+
kitStatus: 'working',
|
|
242
|
+
kitPath: 'places.photos',
|
|
243
|
+
notes: 'ListEntityPhotos batchexecute + preview URLs.',
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
id: 'placesAggregate',
|
|
247
|
+
category: 'places',
|
|
248
|
+
name: 'Places Aggregate',
|
|
249
|
+
auth: 'auth-cookies',
|
|
250
|
+
kitStatus: 'partial',
|
|
251
|
+
kitPath: 'meta.ugcAggregates',
|
|
252
|
+
notes: 'Review star histogram via GetPlaceUgcPostAggregates.',
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
id: 'placesUiKit',
|
|
256
|
+
category: 'places',
|
|
257
|
+
name: 'Places UI Kit',
|
|
258
|
+
auth: 'none',
|
|
259
|
+
kitStatus: 'not-applicable',
|
|
260
|
+
kitPath: '—',
|
|
261
|
+
notes: 'Client web component library.',
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
id: 'textSearch',
|
|
265
|
+
category: 'places',
|
|
266
|
+
name: 'Text Search',
|
|
267
|
+
auth: 'none',
|
|
268
|
+
kitStatus: 'working',
|
|
269
|
+
kitPath: 'places.search',
|
|
270
|
+
notes: '/search?tbm=map text search.',
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
id: 'timeZone',
|
|
274
|
+
category: 'places',
|
|
275
|
+
name: 'Time Zone',
|
|
276
|
+
auth: 'none',
|
|
277
|
+
kitStatus: 'working',
|
|
278
|
+
kitPath: 'location.timezone',
|
|
279
|
+
notes: 'geo-tz offline or Google geocode timezone field.',
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
id: 'airQuality',
|
|
283
|
+
category: 'environment',
|
|
284
|
+
name: 'Air Quality',
|
|
285
|
+
auth: 'auth-cookies',
|
|
286
|
+
kitStatus: 'partial',
|
|
287
|
+
kitPath: 'environment.airQuality',
|
|
288
|
+
notes: 'Batchexecute GivvBd with cookies; heatmap tiles are keyless.',
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
id: 'solar',
|
|
292
|
+
category: 'environment',
|
|
293
|
+
name: 'Solar',
|
|
294
|
+
auth: 'api-key-required',
|
|
295
|
+
kitStatus: 'api-key-required',
|
|
296
|
+
kitPath: 'environment.solar',
|
|
297
|
+
notes: 'Building insights — requires apiKey.',
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
id: 'pollen',
|
|
301
|
+
category: 'environment',
|
|
302
|
+
name: 'Pollen',
|
|
303
|
+
auth: 'api-key-required',
|
|
304
|
+
kitStatus: 'api-key-required',
|
|
305
|
+
kitPath: 'environment.pollen',
|
|
306
|
+
notes: 'Forecast lookup — requires apiKey.',
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
id: 'weather',
|
|
310
|
+
category: 'environment',
|
|
311
|
+
name: 'Weather',
|
|
312
|
+
auth: 'none',
|
|
313
|
+
kitStatus: 'partial',
|
|
314
|
+
kitPath: 'environment.weather',
|
|
315
|
+
notes: 'Passive-assist viewport chips; full forecast needs apiKey.',
|
|
316
|
+
},
|
|
317
|
+
];
|
|
318
|
+
export function listPlatformProducts(category) {
|
|
319
|
+
if (!category)
|
|
320
|
+
return PLATFORM_CATALOG;
|
|
321
|
+
return PLATFORM_CATALOG.filter((p) => p.category === category);
|
|
322
|
+
}
|
|
323
|
+
export function getPlatformProduct(id) {
|
|
324
|
+
const product = PLATFORM_CATALOG.find((p) => p.id === id);
|
|
325
|
+
if (!product)
|
|
326
|
+
throw new Error(`Unknown platform product: ${id}`);
|
|
327
|
+
return product;
|
|
328
|
+
}
|
|
329
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/platform/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type PlatformKitStatus, type PlatformProduct } from './catalog.js';
|
|
2
|
+
export interface PlatformCoverageSummary {
|
|
3
|
+
total: number;
|
|
4
|
+
byStatus: Record<PlatformKitStatus, number>;
|
|
5
|
+
byAuth: Record<string, number>;
|
|
6
|
+
keyless: PlatformProduct[];
|
|
7
|
+
apiKeyOnly: PlatformProduct[];
|
|
8
|
+
notApplicable: PlatformProduct[];
|
|
9
|
+
}
|
|
10
|
+
/** Summarize platform product coverage. */
|
|
11
|
+
export declare function summarizePlatformCoverage(): PlatformCoverageSummary;
|
|
12
|
+
//# sourceMappingURL=parity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parity.d.ts","sourceRoot":"","sources":["../../src/platform/parity.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACrB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,aAAa,EAAE,eAAe,EAAE,CAAC;CAClC;AAED,2CAA2C;AAC3C,wBAAgB,yBAAyB,IAAI,uBAAuB,CA2BnE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { PLATFORM_CATALOG, } from './catalog.js';
|
|
2
|
+
/** Summarize platform product coverage. */
|
|
3
|
+
export function summarizePlatformCoverage() {
|
|
4
|
+
const byStatus = {
|
|
5
|
+
working: 0,
|
|
6
|
+
partial: 0,
|
|
7
|
+
missing: 0,
|
|
8
|
+
'api-key-required': 0,
|
|
9
|
+
'not-applicable': 0,
|
|
10
|
+
};
|
|
11
|
+
const byAuth = {};
|
|
12
|
+
for (const product of PLATFORM_CATALOG) {
|
|
13
|
+
byStatus[product.kitStatus]++;
|
|
14
|
+
byAuth[product.auth] = (byAuth[product.auth] ?? 0) + 1;
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
total: PLATFORM_CATALOG.length,
|
|
18
|
+
byStatus,
|
|
19
|
+
byAuth,
|
|
20
|
+
keyless: PLATFORM_CATALOG.filter((p) => p.auth === 'none' || p.auth === 'optional-key' || p.auth === 'auth-cookies'),
|
|
21
|
+
apiKeyOnly: PLATFORM_CATALOG.filter((p) => p.kitStatus === 'api-key-required' || p.auth === 'api-key-required'),
|
|
22
|
+
notApplicable: PLATFORM_CATALOG.filter((p) => p.kitStatus === 'not-applicable'),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=parity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parity.js","sourceRoot":"","sources":["../../src/platform/parity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,GAGjB,MAAM,cAAc,CAAC;AAWtB,2CAA2C;AAC3C,MAAM,UAAU,yBAAyB;IACvC,MAAM,QAAQ,GAAsC;QAClD,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,kBAAkB,EAAE,CAAC;QACrB,gBAAgB,EAAE,CAAC;KACpB,CAAC;IACF,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;QACvC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC;IAED,OAAO;QACL,KAAK,EAAE,gBAAgB,CAAC,MAAM;QAC9B,QAAQ;QACR,MAAM;QACN,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,CACnF;QACD,UAAU,EAAE,gBAAgB,CAAC,MAAM,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,kBAAkB,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAC3E;QACD,aAAa,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,gBAAgB,CAAC;KAChF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { HttpClient } from '../client/http-client.js';
|
|
2
|
+
import type { GMapsConfig } from '../types/common.js';
|
|
3
|
+
import type { AerialViewLookupOptions, AerialViewLookupResult, AerialViewRenderOptions } from '../types/aerial-view.js';
|
|
4
|
+
export declare class AerialViewService {
|
|
5
|
+
private http;
|
|
6
|
+
private defaultApiKey?;
|
|
7
|
+
constructor(http: HttpClient, config?: GMapsConfig);
|
|
8
|
+
/** Check whether a cinematic aerial video exists for an address (requires apiKey). */
|
|
9
|
+
lookupMetadata(options: AerialViewLookupOptions): Promise<AerialViewLookupResult>;
|
|
10
|
+
/**
|
|
11
|
+
* Fetch short-lived video URIs for an address or stored video id.
|
|
12
|
+
* Call on every display — URIs expire quickly.
|
|
13
|
+
*/
|
|
14
|
+
lookupVideo(options: AerialViewLookupOptions): Promise<AerialViewLookupResult>;
|
|
15
|
+
/** Request rendering when lookup returns 404 / not found. */
|
|
16
|
+
renderVideo(options: AerialViewRenderOptions): Promise<AerialViewLookupResult>;
|
|
17
|
+
private call;
|
|
18
|
+
private resolveApiKey;
|
|
19
|
+
private parsePayload;
|
|
20
|
+
private errorResult;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=aerial-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aerial-view.d.ts","sourceRoot":"","sources":["../../src/services/aerial-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EACV,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,yBAAyB,CAAC;AAIjC,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,aAAa,CAAC,CAAS;gBAEnB,IAAI,EAAE,UAAU,EAAE,MAAM,GAAE,WAAgB;IAMtD,sFAAsF;IAChF,cAAc,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAIvF;;;OAGG;IACG,WAAW,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAIpF,6DAA6D;IACvD,WAAW,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;YAmBtE,IAAI;IA2BlB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,YAAY;IAgCpB,OAAO,CAAC,WAAW;CAUpB"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { GMapsError } from '../types/common.js';
|
|
2
|
+
const AERIAL_VIEW_BASE = 'https://aerialview.googleapis.com/v1';
|
|
3
|
+
export class AerialViewService {
|
|
4
|
+
http;
|
|
5
|
+
defaultApiKey;
|
|
6
|
+
constructor(http, config = {}) {
|
|
7
|
+
this.http = http;
|
|
8
|
+
this.defaultApiKey =
|
|
9
|
+
config.aerialViewApiKey ?? process.env.GMAPS_AERIAL_VIEW_API_KEY;
|
|
10
|
+
}
|
|
11
|
+
/** Check whether a cinematic aerial video exists for an address (requires apiKey). */
|
|
12
|
+
async lookupMetadata(options) {
|
|
13
|
+
return this.call('videos:lookupVideoMetadata', options);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Fetch short-lived video URIs for an address or stored video id.
|
|
17
|
+
* Call on every display — URIs expire quickly.
|
|
18
|
+
*/
|
|
19
|
+
async lookupVideo(options) {
|
|
20
|
+
return this.call('videos:lookupVideo', options);
|
|
21
|
+
}
|
|
22
|
+
/** Request rendering when lookup returns 404 / not found. */
|
|
23
|
+
async renderVideo(options) {
|
|
24
|
+
const apiKey = this.resolveApiKey(options.apiKey);
|
|
25
|
+
const params = new URLSearchParams();
|
|
26
|
+
params.set('address', options.address);
|
|
27
|
+
const url = `${AERIAL_VIEW_BASE}/videos:renderVideo?${params.toString()}`;
|
|
28
|
+
try {
|
|
29
|
+
const body = await this.http.get(url, {
|
|
30
|
+
extraHeaders: { 'X-Goog-Api-Key': apiKey },
|
|
31
|
+
raw: true,
|
|
32
|
+
noRetry: true,
|
|
33
|
+
referer: 'https://mapsplatform.google.com/',
|
|
34
|
+
});
|
|
35
|
+
return this.parsePayload(JSON.parse(body));
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
return this.errorResult(error);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
async call(method, options) {
|
|
42
|
+
const apiKey = this.resolveApiKey(options.apiKey);
|
|
43
|
+
if (!options.address && !options.videoId) {
|
|
44
|
+
throw new GMapsError('Aerial View lookup requires address or videoId');
|
|
45
|
+
}
|
|
46
|
+
const params = new URLSearchParams();
|
|
47
|
+
if (options.address)
|
|
48
|
+
params.set('address', options.address);
|
|
49
|
+
if (options.videoId)
|
|
50
|
+
params.set('videoId', options.videoId);
|
|
51
|
+
const url = `${AERIAL_VIEW_BASE}/${method}?${params.toString()}`;
|
|
52
|
+
try {
|
|
53
|
+
const body = await this.http.get(url, {
|
|
54
|
+
extraHeaders: { 'X-Goog-Api-Key': apiKey },
|
|
55
|
+
raw: true,
|
|
56
|
+
noRetry: true,
|
|
57
|
+
referer: 'https://mapsplatform.google.com/',
|
|
58
|
+
});
|
|
59
|
+
return this.parsePayload(JSON.parse(body));
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
return this.errorResult(error);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
resolveApiKey(override) {
|
|
66
|
+
const key = override ?? this.defaultApiKey;
|
|
67
|
+
if (!key) {
|
|
68
|
+
throw new GMapsError('Aerial View requires apiKey (options.apiKey, config.aerialViewApiKey, or GMAPS_AERIAL_VIEW_API_KEY).');
|
|
69
|
+
}
|
|
70
|
+
return key;
|
|
71
|
+
}
|
|
72
|
+
parsePayload(data) {
|
|
73
|
+
if (!data || typeof data !== 'object') {
|
|
74
|
+
return { state: 'PROCESSING', error: 'Empty aerial view response' };
|
|
75
|
+
}
|
|
76
|
+
const record = data;
|
|
77
|
+
if (record.error && typeof record.error === 'object') {
|
|
78
|
+
const err = record.error;
|
|
79
|
+
return {
|
|
80
|
+
state: 'PROCESSING',
|
|
81
|
+
error: String(err.message ?? 'Aerial view request failed'),
|
|
82
|
+
statusCode: typeof err.code === 'number' ? err.code : undefined,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
const state = record.state === 'ACTIVE' || record.state === 'PROCESSING'
|
|
86
|
+
? record.state
|
|
87
|
+
: 'PROCESSING';
|
|
88
|
+
const metadata = record.metadata && typeof record.metadata === 'object'
|
|
89
|
+
? record.metadata
|
|
90
|
+
: undefined;
|
|
91
|
+
const uris = record.uris && typeof record.uris === 'object'
|
|
92
|
+
? record.uris
|
|
93
|
+
: undefined;
|
|
94
|
+
return { state, metadata, uris };
|
|
95
|
+
}
|
|
96
|
+
errorResult(error) {
|
|
97
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
98
|
+
const statusMatch = /HTTP (\d+)/.exec(message);
|
|
99
|
+
const statusCode = statusMatch ? Number(statusMatch[1]) : undefined;
|
|
100
|
+
return {
|
|
101
|
+
state: 'PROCESSING',
|
|
102
|
+
error: message,
|
|
103
|
+
statusCode,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=aerial-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aerial-view.js","sourceRoot":"","sources":["../../src/services/aerial-view.ts"],"names":[],"mappings":"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"}
|