UNPKG

@lineai/municipal-intel

Version:

AI-first municipal data API providing natural language descriptions of building permits and planning applications from major US cities

89 lines 5.59 kB
"use strict"; /** * Municipal data clients */ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ClientFactory = void 0; __exportStar(require("./base-client"), exports); __exportStar(require("./socrata"), exports); const socrata_1 = require("./socrata"); /** * Factory to create appropriate client for a municipal source */ class ClientFactory { constructor(config = {}) { this.config = config; } /** * Create a client for the given municipal source */ createClient(source, params) { const baseConfig = { source, timeout: this.config.timeout, retries: this.config.retries, debug: this.config.debug }; switch (source.type) { case 'api': return this.createApiClient(baseConfig, params); case 'portal': // TODO: Implement portal clients throw new Error(`Portal clients not yet implemented for ${source.id}`); case 'scraping': // TODO: Implement scraping clients throw new Error(`Scraping clients not yet implemented for ${source.id}`); default: throw new Error(`Unknown source type: ${source.type}`); } } /** * Create API client based on API type */ createApiClient(baseConfig, params) { if (!baseConfig.source.api) { throw new Error(`API configuration missing for ${baseConfig.source.id}`); } switch (baseConfig.source.api.type) { case 'socrata': const socrataConfig = Object.assign(Object.assign({}, baseConfig), { appToken: this.config.socrataToken }); return new socrata_1.SocrataClient(socrataConfig, params); case 'arcgis': // TODO: Implement ArcGIS client throw new Error(`ArcGIS clients not yet implemented`); case 'custom': // TODO: Implement custom API clients throw new Error(`Custom API clients not yet implemented for ${baseConfig.source.id}`); default: throw new Error(`Unknown API type: ${baseConfig.source.api.type}`); } } /** * Update configuration */ updateConfig(config) { this.config = Object.assign(Object.assign({}, this.config), config); } /** * Set universal Socrata token */ setSocrataToken(token) { this.config.socrataToken = token; } } exports.ClientFactory = ClientFactory; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsZ0RBQThCO0FBQzlCLDRDQUEwQjtBQUkxQix1Q0FBK0Q7QUFlL0Q7O0dBRUc7QUFDSCxNQUFhLGFBQWE7SUFHeEIsWUFBWSxTQUE4QixFQUFFO1FBQzFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVksQ0FBQyxNQUF1QixFQUFFLE1BQTZCO1FBQ2pFLE1BQU0sVUFBVSxHQUFxQjtZQUNuQyxNQUFNO1lBQ04sT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztZQUM1QixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUs7U0FDekIsQ0FBQztRQUVGLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRTtZQUNuQixLQUFLLEtBQUs7Z0JBQ1IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUVsRCxLQUFLLFFBQVE7Z0JBQ1gsaUNBQWlDO2dCQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUV6RSxLQUFLLFVBQVU7Z0JBQ2IsbUNBQW1DO2dCQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUUzRTtnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUMxRDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLGVBQWUsQ0FBQyxVQUE0QixFQUFFLE1BQTZCO1FBQ2pGLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDMUU7UUFFRCxRQUFRLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRTtZQUNsQyxLQUFLLFNBQVM7Z0JBQ1osTUFBTSxhQUFhLG1DQUNkLFVBQVUsS0FDYixRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQ25DLENBQUM7Z0JBQ0YsT0FBTyxJQUFJLHVCQUFhLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRWxELEtBQUssUUFBUTtnQkFDWCxnQ0FBZ0M7Z0JBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztZQUV4RCxLQUFLLFFBQVE7Z0JBQ1gscUNBQXFDO2dCQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFeEY7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUN0RTtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVksQ0FBQyxNQUFvQztRQUMvQyxJQUFJLENBQUMsTUFBTSxtQ0FBUSxJQUFJLENBQUMsTUFBTSxHQUFLLE1BQU0sQ0FBRSxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWUsQ0FBQyxLQUFhO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDO0NBQ0Y7QUE3RUQsc0NBNkVDIn0=