@mapbox/mcp-server 0.17.0-dev.1 → 0.17.0-dev.3
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/dist/commonjs/resources/BaseResource.d.ts +7 -0
- package/dist/commonjs/resources/BaseResource.d.ts.map +1 -1
- package/dist/commonjs/resources/BaseResource.js +13 -2
- package/dist/commonjs/resources/BaseResource.js.map +1 -1
- package/dist/commonjs/resources/category-list/CategoryListResource.d.ts +7 -2
- package/dist/commonjs/resources/category-list/CategoryListResource.d.ts.map +1 -1
- package/dist/commonjs/resources/category-list/CategoryListResource.js +14 -4
- package/dist/commonjs/resources/category-list/CategoryListResource.js.map +1 -1
- package/dist/commonjs/resources/place-photo/PlacePhotoResource.d.ts +1 -1
- package/dist/commonjs/resources/place-photo/PlacePhotoResource.js +2 -2
- package/dist/commonjs/resources/place-photo/PlacePhotoResource.js.map +1 -1
- package/dist/commonjs/resources/resourceRegistry.d.ts +2 -1
- package/dist/commonjs/resources/resourceRegistry.d.ts.map +1 -1
- package/dist/commonjs/resources/resourceRegistry.js +10 -5
- package/dist/commonjs/resources/resourceRegistry.js.map +1 -1
- package/dist/commonjs/resources/tool-response/ToolResponseResource.d.ts +6 -5
- package/dist/commonjs/resources/tool-response/ToolResponseResource.d.ts.map +1 -1
- package/dist/commonjs/resources/tool-response/ToolResponseResource.js +29 -5
- package/dist/commonjs/resources/tool-response/ToolResponseResource.js.map +1 -1
- package/dist/commonjs/resources/ui-apps/StaticMapViewerUIResource.d.ts +28 -0
- package/dist/commonjs/resources/ui-apps/StaticMapViewerUIResource.d.ts.map +1 -0
- package/dist/commonjs/resources/ui-apps/StaticMapViewerUIResource.js +64 -0
- package/dist/commonjs/resources/ui-apps/StaticMapViewerUIResource.js.map +1 -0
- package/dist/commonjs/resources/ui-apps/mapAppHtml.d.ts.map +1 -1
- package/dist/commonjs/resources/ui-apps/mapAppHtml.js +977 -252
- package/dist/commonjs/resources/ui-apps/mapAppHtml.js.map +1 -1
- package/dist/commonjs/resources/ui-apps/staticMapViewerHtml.d.ts +17 -0
- package/dist/commonjs/resources/ui-apps/staticMapViewerHtml.d.ts.map +1 -0
- package/dist/commonjs/resources/ui-apps/staticMapViewerHtml.js +180 -0
- package/dist/commonjs/resources/ui-apps/staticMapViewerHtml.js.map +1 -0
- package/dist/commonjs/tools/MapboxApiBasedTool.d.ts.map +1 -1
- package/dist/commonjs/tools/MapboxApiBasedTool.js +6 -2
- package/dist/commonjs/tools/MapboxApiBasedTool.js.map +1 -1
- package/dist/commonjs/tools/category-search-tool/CategorySearchTool.d.ts.map +1 -1
- package/dist/commonjs/tools/category-search-tool/CategorySearchTool.js +1 -1
- package/dist/commonjs/tools/category-search-tool/CategorySearchTool.js.map +1 -1
- package/dist/commonjs/tools/list-public-tokens-tool/ListPublicTokensTool.d.ts.map +1 -1
- package/dist/commonjs/tools/list-public-tokens-tool/ListPublicTokensTool.js +2 -0
- package/dist/commonjs/tools/list-public-tokens-tool/ListPublicTokensTool.js.map +1 -1
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.d.ts.map +1 -1
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.d.ts +1 -0
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.d.ts.map +1 -1
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.js +10 -6
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.js.map +1 -1
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.js +26 -12
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.js.map +1 -1
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.output.schema.d.ts +1 -0
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.output.schema.d.ts.map +1 -1
- package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.d.ts.map +1 -1
- package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.js +43 -9
- package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.js.map +1 -1
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.d.ts.map +1 -1
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.js +1 -1
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.js.map +1 -1
- package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.d.ts +8 -1
- package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -1
- package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js +113 -90
- package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -1
- package/dist/commonjs/tools/static-map-image-tool/buildStaticMapRequestUrl.d.ts +23 -0
- package/dist/commonjs/tools/static-map-image-tool/buildStaticMapRequestUrl.d.ts.map +1 -0
- package/dist/commonjs/tools/static-map-image-tool/buildStaticMapRequestUrl.js +84 -0
- package/dist/commonjs/tools/static-map-image-tool/buildStaticMapRequestUrl.js.map +1 -0
- package/dist/commonjs/utils/mapAppPayload.d.ts +15 -6
- package/dist/commonjs/utils/mapAppPayload.d.ts.map +1 -1
- package/dist/commonjs/utils/mapAppPayload.js +2 -1
- package/dist/commonjs/utils/mapAppPayload.js.map +1 -1
- package/dist/commonjs/utils/mapboxPublicToken.d.ts +5 -1
- package/dist/commonjs/utils/mapboxPublicToken.d.ts.map +1 -1
- package/dist/commonjs/utils/mapboxPublicToken.js +6 -1
- package/dist/commonjs/utils/mapboxPublicToken.js.map +1 -1
- package/dist/commonjs/utils/responseRef.d.ts +1 -1
- package/dist/commonjs/utils/responseRef.d.ts.map +1 -1
- package/dist/commonjs/utils/responseRef.js +1 -1
- package/dist/commonjs/utils/responseRef.js.map +1 -1
- package/dist/commonjs/utils/selfFetchRef.d.ts +24 -0
- package/dist/commonjs/utils/selfFetchRef.d.ts.map +1 -1
- package/dist/commonjs/utils/selfFetchRef.js +68 -0
- package/dist/commonjs/utils/selfFetchRef.js.map +1 -1
- package/dist/commonjs/utils/serverInstructions.js +1 -1
- package/dist/commonjs/utils/serverInstructions.js.map +1 -1
- package/dist/commonjs/version.json +3 -3
- package/dist/esm/resources/BaseResource.d.ts +7 -0
- package/dist/esm/resources/BaseResource.d.ts.map +1 -1
- package/dist/esm/resources/BaseResource.js +13 -2
- package/dist/esm/resources/BaseResource.js.map +1 -1
- package/dist/esm/resources/category-list/CategoryListResource.d.ts +7 -2
- package/dist/esm/resources/category-list/CategoryListResource.d.ts.map +1 -1
- package/dist/esm/resources/category-list/CategoryListResource.js +14 -4
- package/dist/esm/resources/category-list/CategoryListResource.js.map +1 -1
- package/dist/esm/resources/place-photo/PlacePhotoResource.d.ts +1 -1
- package/dist/esm/resources/place-photo/PlacePhotoResource.js +2 -2
- package/dist/esm/resources/place-photo/PlacePhotoResource.js.map +1 -1
- package/dist/esm/resources/resourceRegistry.d.ts +2 -1
- package/dist/esm/resources/resourceRegistry.d.ts.map +1 -1
- package/dist/esm/resources/resourceRegistry.js +10 -5
- package/dist/esm/resources/resourceRegistry.js.map +1 -1
- package/dist/esm/resources/tool-response/ToolResponseResource.d.ts +6 -5
- package/dist/esm/resources/tool-response/ToolResponseResource.d.ts.map +1 -1
- package/dist/esm/resources/tool-response/ToolResponseResource.js +29 -5
- package/dist/esm/resources/tool-response/ToolResponseResource.js.map +1 -1
- package/dist/esm/resources/ui-apps/StaticMapViewerUIResource.d.ts +28 -0
- package/dist/esm/resources/ui-apps/StaticMapViewerUIResource.d.ts.map +1 -0
- package/dist/esm/resources/ui-apps/StaticMapViewerUIResource.js +59 -0
- package/dist/esm/resources/ui-apps/StaticMapViewerUIResource.js.map +1 -0
- package/dist/esm/resources/ui-apps/mapAppHtml.d.ts.map +1 -1
- package/dist/esm/resources/ui-apps/mapAppHtml.js +977 -252
- package/dist/esm/resources/ui-apps/mapAppHtml.js.map +1 -1
- package/dist/esm/resources/ui-apps/staticMapViewerHtml.d.ts +17 -0
- package/dist/esm/resources/ui-apps/staticMapViewerHtml.d.ts.map +1 -0
- package/dist/esm/resources/ui-apps/staticMapViewerHtml.js +177 -0
- package/dist/esm/resources/ui-apps/staticMapViewerHtml.js.map +1 -0
- package/dist/esm/tools/MapboxApiBasedTool.d.ts.map +1 -1
- package/dist/esm/tools/MapboxApiBasedTool.js +6 -2
- package/dist/esm/tools/MapboxApiBasedTool.js.map +1 -1
- package/dist/esm/tools/category-search-tool/CategorySearchTool.d.ts.map +1 -1
- package/dist/esm/tools/category-search-tool/CategorySearchTool.js +2 -2
- package/dist/esm/tools/category-search-tool/CategorySearchTool.js.map +1 -1
- package/dist/esm/tools/list-public-tokens-tool/ListPublicTokensTool.d.ts.map +1 -1
- package/dist/esm/tools/list-public-tokens-tool/ListPublicTokensTool.js +2 -0
- package/dist/esm/tools/list-public-tokens-tool/ListPublicTokensTool.js.map +1 -1
- package/dist/esm/tools/render-map-tool/RenderMapTool.d.ts.map +1 -1
- package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.d.ts +1 -0
- package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.d.ts.map +1 -1
- package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.js +10 -6
- package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.js.map +1 -1
- package/dist/esm/tools/render-map-tool/RenderMapTool.js +26 -12
- package/dist/esm/tools/render-map-tool/RenderMapTool.js.map +1 -1
- package/dist/esm/tools/render-map-tool/RenderMapTool.output.schema.d.ts +1 -0
- package/dist/esm/tools/render-map-tool/RenderMapTool.output.schema.d.ts.map +1 -1
- package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.d.ts.map +1 -1
- package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.js +43 -9
- package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.js.map +1 -1
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.d.ts.map +1 -1
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.js +2 -2
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.js.map +1 -1
- package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.d.ts +8 -1
- package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -1
- package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.js +114 -91
- package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -1
- package/dist/esm/tools/static-map-image-tool/buildStaticMapRequestUrl.d.ts +23 -0
- package/dist/esm/tools/static-map-image-tool/buildStaticMapRequestUrl.d.ts.map +1 -0
- package/dist/esm/tools/static-map-image-tool/buildStaticMapRequestUrl.js +78 -0
- package/dist/esm/tools/static-map-image-tool/buildStaticMapRequestUrl.js.map +1 -0
- package/dist/esm/utils/mapAppPayload.d.ts +15 -6
- package/dist/esm/utils/mapAppPayload.d.ts.map +1 -1
- package/dist/esm/utils/mapAppPayload.js +2 -1
- package/dist/esm/utils/mapAppPayload.js.map +1 -1
- package/dist/esm/utils/mapboxPublicToken.d.ts +5 -1
- package/dist/esm/utils/mapboxPublicToken.d.ts.map +1 -1
- package/dist/esm/utils/mapboxPublicToken.js +6 -1
- package/dist/esm/utils/mapboxPublicToken.js.map +1 -1
- package/dist/esm/utils/responseRef.d.ts +1 -1
- package/dist/esm/utils/responseRef.d.ts.map +1 -1
- package/dist/esm/utils/responseRef.js +1 -1
- package/dist/esm/utils/responseRef.js.map +1 -1
- package/dist/esm/utils/selfFetchRef.d.ts +24 -0
- package/dist/esm/utils/selfFetchRef.d.ts.map +1 -1
- package/dist/esm/utils/selfFetchRef.js +67 -0
- package/dist/esm/utils/selfFetchRef.js.map +1 -1
- package/dist/esm/utils/serverInstructions.js +1 -1
- package/dist/esm/utils/serverInstructions.js.map +1 -1
- package/dist/esm/version.json +3 -3
- package/package.json +1 -1
|
@@ -7,13 +7,17 @@ const BaseTool_js_1 = require("../BaseTool.js");
|
|
|
7
7
|
const ResourceReaderTool_input_schema_js_1 = require("./ResourceReaderTool.input.schema.js");
|
|
8
8
|
const ResourceReaderTool_output_schema_js_1 = require("./ResourceReaderTool.output.schema.js");
|
|
9
9
|
const resourceRegistry_js_1 = require("../../resources/resourceRegistry.js");
|
|
10
|
+
const selfFetchRef_js_1 = require("../../utils/selfFetchRef.js");
|
|
11
|
+
// Base64 grows a blob by about a third, so this keeps an image result under
|
|
12
|
+
// Claude Desktop's 1 MB tool-result cap (same limit as static_map_image_tool).
|
|
13
|
+
const BLOB_INLINE_LIMIT = 700 * 1024;
|
|
10
14
|
/**
|
|
11
15
|
* Tool for reading MCP resources via the tool interface.
|
|
12
16
|
* This provides a fallback mechanism for clients that don't support the MCP resource API.
|
|
13
17
|
*/
|
|
14
18
|
class ResourceReaderTool extends BaseTool_js_1.BaseTool {
|
|
15
19
|
name = 'resource_reader_tool';
|
|
16
|
-
description = 'Reads an MCP resource by URI. This tool is a fallback for clients that do not support the native MCP resource API. Supports reading category lists and other
|
|
20
|
+
description = 'Reads an MCP resource by URI. This tool is a fallback for clients that do not support the native MCP resource API. Supports reading category lists and the mapbox:// refs other tools return (mapbox://temp/..., mapbox://response/..., mapbox://inline/..., mapbox://compute/...); pass a ref exactly as returned. mapbox://selffetch/... refs are not readable: pass them to render_map_tool in payload_refs, which fetches the data itself. Use "mapbox://categories" for default categories or "mapbox://categories/{language}" for localized versions (e.g., "mapbox://categories/ja" for Japanese).';
|
|
17
21
|
annotations = {
|
|
18
22
|
title: 'Resource Reader Tool',
|
|
19
23
|
readOnlyHint: true,
|
|
@@ -52,6 +56,17 @@ class ResourceReaderTool extends BaseTool_js_1.BaseTool {
|
|
|
52
56
|
}
|
|
53
57
|
}
|
|
54
58
|
async execute(input, extra) {
|
|
59
|
+
if ((0, selfFetchRef_js_1.isSelfFetchRef)(input.uri)) {
|
|
60
|
+
return {
|
|
61
|
+
content: [
|
|
62
|
+
{
|
|
63
|
+
type: 'text',
|
|
64
|
+
text: `${input.uri} is not a readable resource. Pass it unchanged to render_map_tool in payload_refs; the map fetches its data itself.`
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
isError: true
|
|
68
|
+
};
|
|
69
|
+
}
|
|
55
70
|
// Find the resource by URI
|
|
56
71
|
const resource = (0, resourceRegistry_js_1.getResourceByUri)(input.uri);
|
|
57
72
|
if (!resource) {
|
|
@@ -89,17 +104,36 @@ class ResourceReaderTool extends BaseTool_js_1.BaseTool {
|
|
|
89
104
|
catch (validationError) {
|
|
90
105
|
this.log('warning', `Output schema validation failed: ${validationError instanceof Error ? validationError.message : 'Unknown validation error'}`);
|
|
91
106
|
}
|
|
92
|
-
//
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
107
|
+
// A blob goes back once, not as base64 text plus a copy in
|
|
108
|
+
// structuredContent: an image the host can show, or a short note when
|
|
109
|
+
// it's too big to send (or isn't an image).
|
|
110
|
+
if ('blob' in content && typeof content.blob === 'string') {
|
|
111
|
+
const mimeType = content.mimeType ?? 'application/octet-stream';
|
|
112
|
+
const bytes = Math.floor((content.blob.length * 3) / 4);
|
|
113
|
+
const structuredContent = { uri: content.uri, mimeType };
|
|
114
|
+
if ((mimeType === 'image/png' || mimeType === 'image/jpeg') &&
|
|
115
|
+
bytes <= BLOB_INLINE_LIMIT) {
|
|
116
|
+
return {
|
|
117
|
+
content: [{ type: 'image', data: content.blob, mimeType }],
|
|
118
|
+
structuredContent,
|
|
119
|
+
isError: false
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
content: [
|
|
124
|
+
{
|
|
125
|
+
type: 'text',
|
|
126
|
+
text: `${input.uri} holds ${mimeType} data (${Math.round(bytes / 1024)} KB), too large to return through this tool. For a static map, give the user the image link from static_map_image_tool's result, or call it again with a smaller size.`
|
|
127
|
+
}
|
|
128
|
+
],
|
|
129
|
+
structuredContent,
|
|
130
|
+
isError: false
|
|
131
|
+
};
|
|
99
132
|
}
|
|
100
|
-
|
|
133
|
+
if (!('text' in content) || typeof content.text !== 'string') {
|
|
101
134
|
throw new Error('Resource content must contain either text or blob');
|
|
102
135
|
}
|
|
136
|
+
const textContent = content.text;
|
|
103
137
|
return {
|
|
104
138
|
content: [
|
|
105
139
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceReaderTool.js","sourceRoot":"","sources":["../../../../src/tools/resource-reader-tool/ResourceReaderTool.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;;AAElC,gDAA0C;AAM1C,6FAAqF;AACrF,+FAAuF;AACvF,6EAAuE;
|
|
1
|
+
{"version":3,"file":"ResourceReaderTool.js","sourceRoot":"","sources":["../../../../src/tools/resource-reader-tool/ResourceReaderTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchAndGeocodeTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/search-and-geocode-tool/SearchAndGeocodeTool.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,EACL,uBAAuB,EAExB,MAAM,yCAAyC,CAAC;AAKjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchAndGeocodeTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/search-and-geocode-tool/SearchAndGeocodeTool.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,EACL,uBAAuB,EAExB,MAAM,yCAAyC,CAAC;AAKjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAUnE,qBAAa,oBAAqB,SAAQ,kBAAkB,CAC1D,OAAO,2BAA2B,EAClC,OAAO,uBAAuB,CAC/B;IACC,IAAI,SAA6B;IACjC,WAAW,SACsvB;IACjwB,WAAW;;;;;;MAMT;gBACU,MAAM,EAAE;QAAE,WAAW,EAAE,WAAW,CAAA;KAAE;IAQhD,OAAO,CAAC,mBAAmB;cA6DX,OAAO,CACrB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,EAClD,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC;IAuJ1B;;;;;;;;OAQG;IACH,OAAO,CAAC,cAAc;CA0CvB"}
|
|
@@ -209,7 +209,7 @@ class SearchAndGeocodeTool extends MapboxApiBasedTool_js_1.MapboxApiBasedTool {
|
|
|
209
209
|
const ref = (0, selfFetchRef_js_1.buildSelfFetchRef)('search', {
|
|
210
210
|
q: input.q,
|
|
211
211
|
language: input.language,
|
|
212
|
-
|
|
212
|
+
...(0, selfFetchRef_js_1.searchSelfFetchProximity)(input, data),
|
|
213
213
|
bbox: input.bbox,
|
|
214
214
|
country: input.country,
|
|
215
215
|
types: input.types,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchAndGeocodeTool.js","sourceRoot":"","sources":["../../../../src/tools/search-and-geocode-tool/SearchAndGeocodeTool.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;;AAGlC,oEAA8D;AAE9D,+DAAyD;AACzD,iGAAqF;AACrF,mGAGiD;AAMjD,6FAAuF;AACvF,uEAA4D;AAC5D,
|
|
1
|
+
{"version":3,"file":"SearchAndGeocodeTool.js","sourceRoot":"","sources":["../../../../src/tools/search-and-geocode-tool/SearchAndGeocodeTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,10 +13,17 @@ export declare class StaticMapImageTool extends MapboxApiBasedTool<typeof Static
|
|
|
13
13
|
idempotentHint: boolean;
|
|
14
14
|
openWorldHint: boolean;
|
|
15
15
|
};
|
|
16
|
+
readonly meta: {
|
|
17
|
+
ui: {
|
|
18
|
+
resourceUri: string;
|
|
19
|
+
csp: {
|
|
20
|
+
resourceDomains: string[];
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
};
|
|
16
24
|
constructor(params: {
|
|
17
25
|
httpRequest: HttpRequest;
|
|
18
26
|
});
|
|
19
|
-
private encodeOverlay;
|
|
20
27
|
protected execute(input: z.infer<typeof StaticMapImageInputSchema>, accessToken: string): Promise<CallToolResult>;
|
|
21
28
|
}
|
|
22
29
|
//# sourceMappingURL=StaticMapImageTool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticMapImageTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/static-map-image-tool/StaticMapImageTool.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"StaticMapImageTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/static-map-image-tool/StaticMapImageTool.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAqBnE,qBAAa,kBAAmB,SAAQ,kBAAkB,CACxD,OAAO,yBAAyB,CACjC;IACC,IAAI,SAA2B;IAC/B,WAAW,SAC6Y;IACxZ,WAAW;;;;;;MAMT;IAKF,QAAQ,CAAC,IAAI;;;;;;;MAKX;gBAEU,MAAM,EAAE;QAAE,WAAW,EAAE,WAAW,CAAA;KAAE;cAOhC,OAAO,CACrB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,EAChD,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC;CAwI3B"}
|
|
@@ -6,24 +6,15 @@ exports.StaticMapImageTool = void 0;
|
|
|
6
6
|
const node_crypto_1 = require("node:crypto");
|
|
7
7
|
const MapboxApiBasedTool_js_1 = require("../MapboxApiBasedTool.js");
|
|
8
8
|
const StaticMapImageTool_input_schema_js_1 = require("./StaticMapImageTool.input.schema.js");
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
|
|
9
|
+
const responseRef_js_1 = require("../../utils/responseRef.js");
|
|
10
|
+
const buildStaticMapRequestUrl_js_1 = require("./buildStaticMapRequestUrl.js");
|
|
11
|
+
const mapboxPublicToken_js_1 = require("../../utils/mapboxPublicToken.js");
|
|
12
|
+
const server_1 = require("@modelcontextprotocol/ext-apps/server");
|
|
13
|
+
const StaticMapViewerUIResource_js_1 = require("../../resources/ui-apps/StaticMapViewerUIResource.js");
|
|
14
|
+
// Images larger than this threshold get a `mapbox://response/` ref instead
|
|
12
15
|
// of being inlined as base64, to avoid exceeding Claude Desktop's 1MB tool
|
|
13
16
|
// result limit. base64 adds ~33% overhead, so 700KB raw ≈ 933KB encoded.
|
|
14
17
|
const IMAGE_INLINE_THRESHOLD = 700 * 1024; // 700KB
|
|
15
|
-
// encodeURIComponent leaves (, ), !, ', and * unescaped (they're valid in a
|
|
16
|
-
// URI component per RFC 3986's "unreserved" carve-out from the older
|
|
17
|
-
// escape() behaviour). Every overlay value below is embedded inside a
|
|
18
|
-
// path segment delimited by literal parentheses (e.g. `url-<value>(lon,lat)`,
|
|
19
|
-
// `geojson(<value>)`), so a raw `)` in the value can terminate that segment
|
|
20
|
-
// early from the Static Images API's own overlay-syntax parser's point of
|
|
21
|
-
// view, even though this value already passed URL/JSON validation on our
|
|
22
|
-
// side. Escape those characters explicitly so both parsers agree on where
|
|
23
|
-
// the value actually ends.
|
|
24
|
-
function encodeOverlayComponent(value) {
|
|
25
|
-
return encodeURIComponent(value).replace(/[()!'*]/g, (c) => '%' + c.charCodeAt(0).toString(16).toUpperCase());
|
|
26
|
-
}
|
|
27
18
|
class StaticMapImageTool extends MapboxApiBasedTool_js_1.MapboxApiBasedTool {
|
|
28
19
|
name = 'static_map_image_tool';
|
|
29
20
|
description = 'Generates a static map image from Mapbox Static Images API. Supports center coordinates, zoom level (0-22), image size (up to 1280x1280), various Mapbox styles, and overlays (markers, paths, GeoJSON). Returns PNG for vector styles, JPEG for raster-only styles. Use only when the user explicitly asks for a static image file — to show a map, use render_map_tool instead, which renders an interactive map.';
|
|
@@ -34,72 +25,35 @@ class StaticMapImageTool extends MapboxApiBasedTool_js_1.MapboxApiBasedTool {
|
|
|
34
25
|
idempotentHint: true,
|
|
35
26
|
openWorldHint: true
|
|
36
27
|
};
|
|
28
|
+
// MCP Apps hosts show the image at full width in this viewer instead of as
|
|
29
|
+
// a thumbnail. The result is the same either way, so hosts without MCP
|
|
30
|
+
// Apps still get the image item and the link.
|
|
31
|
+
meta = {
|
|
32
|
+
ui: {
|
|
33
|
+
resourceUri: StaticMapViewerUIResource_js_1.STATIC_MAP_VIEWER_URI,
|
|
34
|
+
csp: (0, StaticMapViewerUIResource_js_1.staticMapViewerCsp)(MapboxApiBasedTool_js_1.MapboxApiBasedTool.mapboxApiEndpoint)
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
37
|
constructor(params) {
|
|
38
38
|
super({
|
|
39
39
|
inputSchema: StaticMapImageTool_input_schema_js_1.StaticMapImageInputSchema,
|
|
40
40
|
httpRequest: params.httpRequest
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
|
-
encodeOverlay(overlay) {
|
|
44
|
-
switch (overlay.type) {
|
|
45
|
-
case 'marker': {
|
|
46
|
-
const size = overlay.size === 'large' ? 'pin-l' : 'pin-s';
|
|
47
|
-
let marker = size;
|
|
48
|
-
if (overlay.label) {
|
|
49
|
-
marker += `-${overlay.label}`;
|
|
50
|
-
}
|
|
51
|
-
if (overlay.color) {
|
|
52
|
-
marker += `+${overlay.color}`;
|
|
53
|
-
}
|
|
54
|
-
return `${marker}(${overlay.longitude},${overlay.latitude})`;
|
|
55
|
-
}
|
|
56
|
-
case 'custom-marker': {
|
|
57
|
-
const encodedUrl = encodeOverlayComponent(overlay.url);
|
|
58
|
-
return `url-${encodedUrl}(${overlay.longitude},${overlay.latitude})`;
|
|
59
|
-
}
|
|
60
|
-
case 'path': {
|
|
61
|
-
let path = `path-${overlay.strokeWidth}`;
|
|
62
|
-
if (overlay.strokeColor) {
|
|
63
|
-
path += `+${overlay.strokeColor}`;
|
|
64
|
-
if (overlay.strokeOpacity !== undefined) {
|
|
65
|
-
path += `-${overlay.strokeOpacity}`;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
if (overlay.fillColor) {
|
|
69
|
-
path += `+${overlay.fillColor}`;
|
|
70
|
-
if (overlay.fillOpacity !== undefined) {
|
|
71
|
-
path += `-${overlay.fillOpacity}`;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
// URL encode the polyline to handle special characters
|
|
75
|
-
return `${path}(${encodeOverlayComponent(overlay.encodedPolyline)})`;
|
|
76
|
-
}
|
|
77
|
-
case 'geojson': {
|
|
78
|
-
const geojsonString = JSON.stringify(overlay.data);
|
|
79
|
-
return `geojson(${encodeOverlayComponent(geojsonString)})`;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
43
|
async execute(input, accessToken) {
|
|
84
|
-
const { longitude: lng, latitude: lat } = input.center;
|
|
85
44
|
const { width, height } = input.size;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
.split('/')
|
|
97
|
-
.map(encodeURIComponent)
|
|
98
|
-
.join('/');
|
|
99
|
-
const publicUrl = `${MapboxApiBasedTool_js_1.MapboxApiBasedTool.mapboxApiEndpoint}styles/v1/${encodedStyle}/static/${overlayString}${lng},${lat},${input.zoom}/${width}x${height}${density}`;
|
|
100
|
-
const url = `${publicUrl}?access_token=${accessToken}`;
|
|
45
|
+
const apiEndpoint = MapboxApiBasedTool_js_1.MapboxApiBasedTool.mapboxApiEndpoint;
|
|
46
|
+
// The input the returned image was rendered from: the 1x fallback below
|
|
47
|
+
// swaps it, so a mapbox://response/ ref renders the same image again.
|
|
48
|
+
let rendered = input;
|
|
49
|
+
const requested = (0, buildStaticMapRequestUrl_js_1.buildStaticMapRequestUrl)({
|
|
50
|
+
input,
|
|
51
|
+
accessToken,
|
|
52
|
+
apiEndpoint
|
|
53
|
+
});
|
|
54
|
+
let publicUrl = requested.publicUrl;
|
|
101
55
|
// Fetch image
|
|
102
|
-
const response = await this.httpRequest(url);
|
|
56
|
+
const response = await this.httpRequest(requested.url);
|
|
103
57
|
if (!response.ok) {
|
|
104
58
|
const errorMessage = await this.getErrorMessage(response);
|
|
105
59
|
return {
|
|
@@ -107,29 +61,98 @@ class StaticMapImageTool extends MapboxApiBasedTool_js_1.MapboxApiBasedTool {
|
|
|
107
61
|
isError: true
|
|
108
62
|
};
|
|
109
63
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
//
|
|
64
|
+
let buffer = await response.arrayBuffer();
|
|
65
|
+
// A 2x image is about three times the bytes of the same map at 1x (a
|
|
66
|
+
// 1000x800 streets map: 877KB vs 295KB). Rather than hand back a
|
|
67
|
+
// resource ref the host can't show (Codex showed no image at all),
|
|
68
|
+
// try the 1x image, which usually fits inline.
|
|
69
|
+
if (input.highDensity && buffer.byteLength > IMAGE_INLINE_THRESHOLD) {
|
|
70
|
+
const oneX = { ...input, highDensity: false };
|
|
71
|
+
const fallbackUrls = (0, buildStaticMapRequestUrl_js_1.buildStaticMapRequestUrl)({
|
|
72
|
+
input: oneX,
|
|
73
|
+
accessToken,
|
|
74
|
+
apiEndpoint
|
|
75
|
+
});
|
|
76
|
+
const fallback = await this.httpRequest(fallbackUrls.url);
|
|
77
|
+
if (fallback.ok) {
|
|
78
|
+
const fallbackBuffer = await fallback.arrayBuffer();
|
|
79
|
+
if (fallbackBuffer.byteLength < buffer.byteLength) {
|
|
80
|
+
buffer = fallbackBuffer;
|
|
81
|
+
rendered = oneX;
|
|
82
|
+
publicUrl = fallbackUrls.publicUrl;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const mimeType = (0, buildStaticMapRequestUrl_js_1.getStaticMapMimeType)(input.style);
|
|
87
|
+
// Hosts show the image from this result, but a model can't put it in its
|
|
88
|
+
// own reply, so it hands the user a URL instead or says "the map above"
|
|
89
|
+
// over nothing (Codex did both). Give it a link that works: the request
|
|
90
|
+
// URL with a public (pk.) token, never the
|
|
91
|
+
// access token used for the fetch (#201). The server's own
|
|
92
|
+
// MAPBOX_PUBLIC_TOKEN is only used when the caller runs on the server's
|
|
93
|
+
// own access token (a local install), so a hosted caller never gets it
|
|
94
|
+
// in their chat history. With no public token, say not to link the URL.
|
|
95
|
+
const inline = buffer.byteLength <= IMAGE_INLINE_THRESHOLD;
|
|
96
|
+
const publicToken = await (0, mapboxPublicToken_js_1.resolveMapboxPublicToken)({
|
|
97
|
+
accessToken,
|
|
98
|
+
apiEndpoint: MapboxApiBasedTool_js_1.MapboxApiBasedTool.mapboxApiEndpoint,
|
|
99
|
+
httpRequest: this.httpRequest,
|
|
100
|
+
allowEnvFallback: accessToken === MapboxApiBasedTool_js_1.MapboxApiBasedTool.mapboxAccessToken
|
|
101
|
+
});
|
|
102
|
+
const describedSize = `${width}x${height}${publicUrl.endsWith('@2x') ? ' @2x' : ''}`;
|
|
103
|
+
const attached = `Static map image (${describedSize}, ${input.style}) is attached to this result, which is where the host shows it to the user. `;
|
|
104
|
+
// A client that supports MCP Apps shows the image at full size in the
|
|
105
|
+
// viewer (see StaticMapViewerUIResource), so a link in the reply would
|
|
106
|
+
// show it twice. Clients that don't say so (or a stateless server that
|
|
107
|
+
// never saw their initialize) get the link text.
|
|
108
|
+
const imageUrl = publicToken
|
|
109
|
+
? `${publicUrl}?access_token=${publicToken}`
|
|
110
|
+
: undefined;
|
|
111
|
+
const showsViewer = (inline || imageUrl !== undefined) &&
|
|
112
|
+
(0, server_1.getUiCapability)(this.activeServer?.server.getClientCapabilities())?.mimeTypes?.includes(server_1.RESOURCE_MIME_TYPE) === true;
|
|
113
|
+
const urlNote = showsViewer
|
|
114
|
+
? `Static map image (${describedSize}, ${input.style}) is shown to the user at full size in this tool's map viewer, so don't embed or link it again in your reply.` +
|
|
115
|
+
(imageUrl
|
|
116
|
+
? `\nIf the user asks for a link to the image, use this URL; it carries the account's public token: ${imageUrl}`
|
|
117
|
+
: '')
|
|
118
|
+
: imageUrl
|
|
119
|
+
? (inline
|
|
120
|
+
? attached + "Your reply can't include that attachment, and "
|
|
121
|
+
: 'The image is not attached, and ') +
|
|
122
|
+
// Neither Claude's UI nor Codex renders images from other domains
|
|
123
|
+
// in a reply (both left a broken image), so ask for a link.
|
|
124
|
+
"chat interfaces generally don't show images from external URLs, so don't embed this URL as a Markdown image. " +
|
|
125
|
+
"Give it as a link instead; it carries the account's public token, so it opens in a browser.\n" +
|
|
126
|
+
`Image URL: ${imageUrl}`
|
|
127
|
+
: inline
|
|
128
|
+
? attached +
|
|
129
|
+
"Don't link or embed the request URL below: it has no access token, so it won't load for the user. " +
|
|
130
|
+
'If they ask to see the map again, point them to this result or call this tool again.\n' +
|
|
131
|
+
`Request URL: ${publicUrl}`
|
|
132
|
+
: `Request URL (it has no access token, so don't link or embed it): ${publicUrl}`;
|
|
114
133
|
const content = [
|
|
115
|
-
{ type: 'text', text:
|
|
134
|
+
{ type: 'text', text: urlNote }
|
|
116
135
|
];
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
136
|
+
// Say so when the 1x fallback replaced the @2x image the caller asked
|
|
137
|
+
// for, so the model can tell the user. Its own item, so the first one
|
|
138
|
+
// still starts with the size (the viewer's alt text).
|
|
139
|
+
if (rendered !== input) {
|
|
140
|
+
content.push({
|
|
141
|
+
type: 'text',
|
|
142
|
+
text: 'The @2x image was too large to send, so this is the 1x image. For @2x, call this tool again with a smaller size.'
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
if (!inline) {
|
|
146
|
+
// Image is too large to inline safely. The ref carries the request's
|
|
147
|
+
// inputs, not the image, so any server process can answer a later
|
|
148
|
+
// read by rendering it again (see responseRef.ts).
|
|
149
|
+
const resourceUri = (0, responseRef_js_1.buildResponseRef)({
|
|
150
|
+
tool: 'static-map',
|
|
151
|
+
input: rendered
|
|
129
152
|
});
|
|
130
153
|
content.push({
|
|
131
154
|
type: 'text',
|
|
132
|
-
text: `⚠️ Image (${Math.round(buffer.byteLength / 1024)}KB)
|
|
155
|
+
text: `⚠️ Image (${Math.round(buffer.byteLength / 1024)}KB) is too large to return inline.\nRead ${resourceUri} with the MCP resource API to get it. Reading it renders the same image again.`
|
|
133
156
|
});
|
|
134
157
|
}
|
|
135
158
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticMapImageTool.js","sourceRoot":"","sources":["../../../../src/tools/static-map-image-tool/StaticMapImageTool.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;;AAElC,
|
|
1
|
+
{"version":3,"file":"StaticMapImageTool.js","sourceRoot":"","sources":["../../../../src/tools/static-map-image-tool/StaticMapImageTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import type { StaticMapImageInputSchema, OverlaySchema } from './StaticMapImageTool.input.schema.js';
|
|
3
|
+
export declare function encodeOverlayComponent(value: string): string;
|
|
4
|
+
export declare function encodeOverlay(overlay: z.infer<typeof OverlaySchema>): string;
|
|
5
|
+
export declare function getStaticMapMimeType(style: string): 'image/jpeg' | 'image/png';
|
|
6
|
+
export interface StaticMapRequestUrls {
|
|
7
|
+
/** The request URL without the access token, safe to show the model. */
|
|
8
|
+
publicUrl: string;
|
|
9
|
+
/** The same URL with the access token, for the request itself. */
|
|
10
|
+
url: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Builds the Static Images API request for a given input. Shared by
|
|
14
|
+
* StaticMapImageTool and ToolResponseResource, which fetches a large image
|
|
15
|
+
* again from its `mapbox://response/` ref. The API renders the same image
|
|
16
|
+
* for the same parameters, so the two requests return the same bytes.
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildStaticMapRequestUrl(params: {
|
|
19
|
+
input: z.infer<typeof StaticMapImageInputSchema>;
|
|
20
|
+
accessToken: string;
|
|
21
|
+
apiEndpoint: string;
|
|
22
|
+
}): StaticMapRequestUrls;
|
|
23
|
+
//# sourceMappingURL=buildStaticMapRequestUrl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildStaticMapRequestUrl.d.ts","sourceRoot":"","sources":["../../../../src/tools/static-map-image-tool/buildStaticMapRequestUrl.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EACV,yBAAyB,EACzB,aAAa,EACd,MAAM,sCAAsC,CAAC;AAW9C,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,GAAG,MAAM,CAgD5E;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,GACZ,YAAY,GAAG,WAAW,CAE5B;AAED,MAAM,WAAW,oBAAoB;IACnC,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC/C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,oBAAoB,CAgBvB"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Mapbox, Inc.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.encodeOverlayComponent = encodeOverlayComponent;
|
|
6
|
+
exports.encodeOverlay = encodeOverlay;
|
|
7
|
+
exports.getStaticMapMimeType = getStaticMapMimeType;
|
|
8
|
+
exports.buildStaticMapRequestUrl = buildStaticMapRequestUrl;
|
|
9
|
+
// encodeURIComponent leaves (, ), !, ', and * unescaped (they're valid in a
|
|
10
|
+
// URI component per RFC 3986's "unreserved" carve-out from the older
|
|
11
|
+
// escape() behaviour). Every overlay value below is embedded inside a
|
|
12
|
+
// path segment delimited by literal parentheses (e.g. `url-<value>(lon,lat)`,
|
|
13
|
+
// `geojson(<value>)`), so a raw `)` in the value can terminate that segment
|
|
14
|
+
// early from the Static Images API's own overlay-syntax parser's point of
|
|
15
|
+
// view, even though this value already passed URL/JSON validation on our
|
|
16
|
+
// side. Escape those characters explicitly so both parsers agree on where
|
|
17
|
+
// the value actually ends.
|
|
18
|
+
function encodeOverlayComponent(value) {
|
|
19
|
+
return encodeURIComponent(value).replace(/[()!'*]/g, (c) => '%' + c.charCodeAt(0).toString(16).toUpperCase());
|
|
20
|
+
}
|
|
21
|
+
function encodeOverlay(overlay) {
|
|
22
|
+
switch (overlay.type) {
|
|
23
|
+
case 'marker': {
|
|
24
|
+
const size = overlay.size === 'large' ? 'pin-l' : 'pin-s';
|
|
25
|
+
let marker = size;
|
|
26
|
+
if (overlay.label) {
|
|
27
|
+
marker += `-${overlay.label}`;
|
|
28
|
+
}
|
|
29
|
+
if (overlay.color) {
|
|
30
|
+
marker += `+${overlay.color}`;
|
|
31
|
+
}
|
|
32
|
+
return `${marker}(${overlay.longitude},${overlay.latitude})`;
|
|
33
|
+
}
|
|
34
|
+
case 'custom-marker': {
|
|
35
|
+
const encodedUrl = encodeOverlayComponent(overlay.url);
|
|
36
|
+
return `url-${encodedUrl}(${overlay.longitude},${overlay.latitude})`;
|
|
37
|
+
}
|
|
38
|
+
case 'path': {
|
|
39
|
+
let path = `path-${overlay.strokeWidth}`;
|
|
40
|
+
if (overlay.strokeColor) {
|
|
41
|
+
path += `+${overlay.strokeColor}`;
|
|
42
|
+
if (overlay.strokeOpacity !== undefined) {
|
|
43
|
+
path += `-${overlay.strokeOpacity}`;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (overlay.fillColor) {
|
|
47
|
+
path += `+${overlay.fillColor}`;
|
|
48
|
+
if (overlay.fillOpacity !== undefined) {
|
|
49
|
+
path += `-${overlay.fillOpacity}`;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// URL encode the polyline to handle special characters
|
|
53
|
+
return `${path}(${encodeOverlayComponent(overlay.encodedPolyline)})`;
|
|
54
|
+
}
|
|
55
|
+
case 'geojson': {
|
|
56
|
+
const geojsonString = JSON.stringify(overlay.data);
|
|
57
|
+
return `geojson(${encodeOverlayComponent(geojsonString)})`;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function getStaticMapMimeType(style) {
|
|
62
|
+
return style.includes('satellite') ? 'image/jpeg' : 'image/png';
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Builds the Static Images API request for a given input. Shared by
|
|
66
|
+
* StaticMapImageTool and ToolResponseResource, which fetches a large image
|
|
67
|
+
* again from its `mapbox://response/` ref. The API renders the same image
|
|
68
|
+
* for the same parameters, so the two requests return the same bytes.
|
|
69
|
+
*/
|
|
70
|
+
function buildStaticMapRequestUrl(params) {
|
|
71
|
+
const { input, accessToken, apiEndpoint } = params;
|
|
72
|
+
const { longitude: lng, latitude: lat } = input.center;
|
|
73
|
+
const { width, height } = input.size;
|
|
74
|
+
let overlayString = '';
|
|
75
|
+
if (input.overlays && input.overlays.length > 0) {
|
|
76
|
+
overlayString = input.overlays.map(encodeOverlay).join(',') + '/';
|
|
77
|
+
}
|
|
78
|
+
const density = input.highDensity ? '@2x' : '';
|
|
79
|
+
const encodedStyle = input.style.split('/').map(encodeURIComponent).join('/');
|
|
80
|
+
const publicUrl = `${apiEndpoint}styles/v1/${encodedStyle}/static/${overlayString}${lng},${lat},${input.zoom}/${width}x${height}${density}`;
|
|
81
|
+
const url = `${publicUrl}?access_token=${accessToken}`;
|
|
82
|
+
return { publicUrl, url };
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=buildStaticMapRequestUrl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildStaticMapRequestUrl.js","sourceRoot":"","sources":["../../../../src/tools/static-map-image-tool/buildStaticMapRequestUrl.ts"],"names":[],"mappings":"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"}
|