@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
JavaScript
;
// 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