UNPKG

@blockprotocol/external-api

Version:

Implementation of the Block Protocol external API service specification for blocks and embedding applications

210 lines 6.98 kB
import { writeFileSync } from "node:fs"; /* eslint-disable import/no-extraneous-dependencies */ import { resolve } from "node:path"; import { generateSchema, getProgramFromFiles } from "typescript-json-schema"; const program = getProgramFromFiles([resolve("./src/types.ts")]); const generateExternalApiSchema = (params) => { const schema = generateSchema(program, params.typeName, { required: true, ref: false, }); if (!schema) { throw new Error(`The JSON Schema for the "${params.typeName}" TS type could not be generated.`); } return schema; }; export const mapboxMessages = [ /** Mapbox Geocoding API */ { messageName: "mapboxForwardGeocoding", description: "Forward geocoding request", source: "block", respondedToBy: "mapboxForwardGeocodingResponse", sentOnInitialization: false, data: generateExternalApiSchema({ typeName: "MapboxForwardGeocodingData", }), errorCodes: [], }, { messageName: "mapboxForwardGeocodingResponse", description: "Response to a forward geocoding request", source: "embedder", respondedToBy: null, sentOnInitialization: false, data: generateExternalApiSchema({ typeName: "MapboxForwardGeocodingResponseData", }), errorCodes: [], }, { messageName: "mapboxReverseGeocoding", description: "Reverse geocoding request", source: "block", respondedToBy: "mapboxReverseGeocodingResponse", sentOnInitialization: false, data: generateExternalApiSchema({ typeName: "MapboxReverseGeocodingData", }), errorCodes: [], }, { messageName: "mapboxReverseGeocodingResponse", description: "The response to a request geocoding request", source: "embedder", respondedToBy: null, sentOnInitialization: false, data: generateExternalApiSchema({ typeName: "MapboxReverseGeocodingResponseData", }), errorCodes: [], }, /** Mapbox Directions API */ { messageName: "mapboxRetrieveDirections", description: "Retrieve directions request", source: "block", respondedToBy: "mapboxRetrieveDirectionsResponse", sentOnInitialization: false, data: generateExternalApiSchema({ typeName: "MapboxRetrieveDirectionsData", }), errorCodes: [], }, { messageName: "mapboxRetrieveRetrieveDirectionsResponse", description: "The response to a retrieve directions request", source: "embedder", respondedToBy: null, sentOnInitialization: false, data: generateExternalApiSchema({ typeName: "MapboxRetrieveDirectionsResponseData", }), errorCodes: [], }, /** Mapbox Isochrone API */ { messageName: "mapboxRetrieveIsochrones", description: "Retrieve isochrones", source: "block", respondedToBy: "mapboxRetrieveIsochronesResponse", sentOnInitialization: false, data: generateExternalApiSchema({ typeName: "MapboxRetrieveIsochronesData", }), errorCodes: [], }, { messageName: "mapboxRetrieveIsochronesResponse", description: "The response to a retrieve isochrones request", source: "embedder", respondedToBy: null, sentOnInitialization: false, data: generateExternalApiSchema({ typeName: "MapboxRetrieveIsochronesResponseData", }), errorCodes: [], }, /** Autofill API */ { messageName: "mapboxSuggestAddress", description: "Suggest an address", source: "block", respondedToBy: "mapboxSuggestAddressResponse", sentOnInitialization: false, data: generateExternalApiSchema({ typeName: "MapboxSuggestAddressData" }), errorCodes: [], }, { messageName: "mapboxSuggestAddressResponse", description: "The response to a request to suggest an address", source: "embedder", respondedToBy: null, sentOnInitialization: false, data: generateExternalApiSchema({ typeName: "MapboxSuggestAddressResponseData", }), errorCodes: [], }, { messageName: "mapboxRetrieveAddress", description: "Retrieve an address", source: "block", respondedToBy: "mapboxRetrieveAddressResponse", sentOnInitialization: false, data: generateExternalApiSchema({ typeName: "MapboxRetrieveAddressData", }), errorCodes: [], }, { messageName: "mapboxRetrieveAddressResponse", description: "The response to a retrieve an address", source: "embedder", respondedToBy: null, sentOnInitialization: false, data: generateExternalApiSchema({ typeName: "MapboxRetrieveAddressResponseData", }), errorCodes: [], }, { messageName: "mapboxCanRetrieveAddress", description: "Whether an address can be retrieved", source: "block", respondedToBy: "mapboxCanRetrieveAddressResponse", sentOnInitialization: false, data: generateExternalApiSchema({ typeName: "MapboxCanRetrieveAddressData", }), errorCodes: [], }, { messageName: "mapboxCanRetrieveAddressResponse", description: "The response to a can retrieve an address request", source: "embedder", respondedToBy: null, sentOnInitialization: false, data: generateExternalApiSchema({ typeName: "MapboxCanRetrieveAddressResponseData", }), errorCodes: [], }, /** Static Image API */ { messageName: "mapboxRetrieveStaticMap", description: "Retrieve a static map", source: "block", respondedToBy: "mapboxRetrieveStaticMapResponse", sentOnInitialization: false, data: generateExternalApiSchema({ typeName: "MapboxRetrieveStaticMapData", }), errorCodes: [], }, { messageName: "mapboxRetrieveStaticMapResponse", description: "The response to a retrieve static map request", source: "embedder", respondedToBy: null, sentOnInitialization: false, data: generateExternalApiSchema({ typeName: "MapboxRetrieveStaticMapResponseData", }), errorCodes: [], }, ]; const serviceDefinition = { name: "external-api", version: "0.1", coreVersion: "0.1", messages: [ ...mapboxMessages, /** * @todo: add OpenAI message definitions * @see TODO */ ], }; writeFileSync("./src/external-api-service.json", JSON.stringify(serviceDefinition, null, 2)); //# sourceMappingURL=generate-service-json.js.map