UNPKG

@vepler/http-sdk

Version:

The definitive TypeScript SDK for UK property technology. Access comprehensive property data, school metrics, demographics, planning applications, and more through a single, powerful API.

128 lines 7.25 kB
"use strict"; // config.ts var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.reset = exports.getApiInstance = exports.initializeSDK = exports.initialisedConfig = void 0; var http_client_1 = __importDefault(require("@vepler/http-client")); exports.initialisedConfig = {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any var apiInstances = {}; var isInitialized = false; var defaultConfig = { production: { propertyHost: process.env.SVC_PROPERTY_HOST || 'https://api2.propbar.co.uk/property', areaReferenceHost: process.env.AREA_REFERENCE_HOST || 'https://api2.propbar.co.uk/area-reference', safetyHost: process.env.SAFETY_HOST || 'https://api2.propbar.co.uk/safety', roverHost: process.env.SVC_ROVER_HOST || 'https://api2.propbar.co.uk/rover', schoolsHost: process.env.SCHOOLS_HOST || 'https://api2.propbar.co.uk/schools', planningRegisterHost: process.env.PLANNING_REGISTER_HOST || 'https://api2.propbar.co.uk/planning-register', searchHost: process.env.SEARCH_HOST || 'https://api2.propbar.co.uk/search', propertyPredictorHost: process.env.PROPERTY_PREDICTOR_HOST || 'https://api2.propbar.co.uk/linked-avm', locatorHost: process.env.SVC_LOCATIONS_HOST || 'https://api2.propbar.co.uk/locator', councilRegisterHost: process.env.SVC_COUNCIL_TAX_HOST || 'https://api2.propbar.co.uk/council-tax', timeout: 60000, // 60 seconds default timeout logLevel: 'info', headers: { 'Content-Type': 'application/json', }, }, development: { propertyHost: process.env.SVC_PROPERTY_HOST || 'https://api2.propbar.co.uk/property', areaReferenceHost: process.env.AREA_REFERENCE_HOST || 'https://api2.propbar.co.uk/area-reference', safetyHost: process.env.SAFETY_HOST || 'https://api2.propbar.co.uk/safety', roverHost: process.env.SVC_ROVER_HOST || 'https://api2.propbar.co.uk/rover', schoolsHost: process.env.SCHOOLS_HOST || 'https://api2.propbar.co.uk/schools', planningRegisterHost: process.env.PLANNING_REGISTER_HOST || 'https://api2.propbar.co.uk/planning-register', searchHost: process.env.SEARCH_HOST || 'https://api2.propbar.co.uk/search', propertyPredictorHost: process.env.PROPERTY_PREDICTOR_HOST || 'https://api2.propbar.co.uk/linked-avm', locatorHost: process.env.SVC_LOCATIONS_HOST || 'https://api2.propbar.co.uk/locator', councilRegisterHost: process.env.SVC_COUNCIL_TAX_HOST || 'https://api2.propbar.co.uk/council-tax', timeout: 60000, // 60 seconds default timeout logLevel: 'debug', headers: { 'Content-Type': 'application/json', }, }, }; var initializeSDK = function (config, env) { if (config === void 0) { config = defaultConfig.production; } if (env === void 0) { env = 'production'; } // Prevent re-initialization if (isInitialized) { console.warn('SDK has already been initialized. Call reset() first if you want to re-initialize.'); return; } var environmentConfig = defaultConfig[env]; var commonConfig = { timeout: config.timeout || environmentConfig.timeout, logLevel: config.logLevel || environmentConfig.logLevel, headers: config.headers || environmentConfig.headers, apiKey: config.apiKey || null, }; // If no API key is provided, throw an error if (!commonConfig.apiKey) { throw new Error('An API key must be provided'); } try { apiInstances['property'] = http_client_1.default.create(__assign(__assign({}, commonConfig), { host: config.propertyHost || environmentConfig.propertyHost })); apiInstances['area-reference'] = http_client_1.default.create(__assign(__assign({}, commonConfig), { host: config.areaReferenceHost || environmentConfig.areaReferenceHost })); apiInstances['safety'] = http_client_1.default.create(__assign(__assign({}, commonConfig), { host: config.safetyHost || environmentConfig.safetyHost })); apiInstances['rover'] = http_client_1.default.create(__assign(__assign({}, commonConfig), { host: config.roverHost || environmentConfig.roverHost })); apiInstances['schools'] = http_client_1.default.create(__assign(__assign({}, commonConfig), { host: config.schoolsHost || environmentConfig.schoolsHost })); apiInstances['planning-register'] = http_client_1.default.create(__assign(__assign({}, commonConfig), { host: config.planningRegisterHost || environmentConfig.planningRegisterHost })); apiInstances['search'] = http_client_1.default.create(__assign(__assign({}, commonConfig), { host: config.searchHost || environmentConfig.searchHost })); apiInstances['property-predictor'] = http_client_1.default.create(__assign(__assign({}, commonConfig), { host: config.propertyPredictorHost || environmentConfig.propertyPredictorHost })); apiInstances['locator'] = http_client_1.default.create(__assign(__assign({}, commonConfig), { host: config.locatorHost || environmentConfig.locatorHost })); apiInstances['council-register'] = http_client_1.default.create(__assign(__assign({}, commonConfig), { host: config.councilRegisterHost || environmentConfig.councilRegisterHost })); exports.initialisedConfig = commonConfig; isInitialized = true; return { success: true }; } catch (error) { console.error('Error initializing SDK:', error); throw new Error("Failed to initialize SDK: ".concat(error instanceof Error ? error.message : 'Unknown error')); } }; exports.initializeSDK = initializeSDK; // eslint-disable-next-line @typescript-eslint/no-explicit-any var getApiInstance = function (service) { // Check if SDK is initialized if (!isInitialized) { throw new Error("SDK not initialized. Call initializeSDK() before using any API services. Example: \n import { initializeSDK } from '@vepler/http-sdk';\n initializeSDK({ apiKey: 'your-api-key' });"); } var apiInstance = apiInstances[service]; if (!apiInstance) { throw new Error("Service '".concat(service, "' does not exist. Available services are: ").concat(Object.keys(apiInstances).join(', '))); } return apiInstance; }; exports.getApiInstance = getApiInstance; // Add a reset function for testing and re-initialization var reset = function () { Object.keys(apiInstances).forEach(function (key) { return delete apiInstances[key]; }); exports.initialisedConfig = {}; isInitialized = false; }; exports.reset = reset; //# sourceMappingURL=config.js.map