vespa-ts
Version:
A reusable TypeScript package for interacting with Vespa search engine with dependency injection support
63 lines • 1.89 kB
JavaScript
import { VespaService } from "./vespa";
/**
* Factory function to create a configured VespaService instance
*/
export function createVespaService(dependencies) {
return new VespaService(dependencies);
}
/**
* Console-based logger implementation
*/
export class ConsoleLogger {
constructor(metadata = {}) {
this.metadata = {};
this.metadata = metadata;
}
debug(message, ...args) {
console.debug(`[DEBUG]${this.formatMetadata()} ${message}`, ...args);
}
info(message, ...args) {
console.info(`[INFO]${this.formatMetadata()} ${message}`, ...args);
}
warn(message, ...args) {
console.warn(`[WARN]${this.formatMetadata()} ${message}`, ...args);
}
error(message, ...args) {
const msg = message instanceof Error ? message.message : message;
console.error(`[ERROR]${this.formatMetadata()} ${msg}`, ...args);
}
child(metadata) {
return new ConsoleLogger({ ...this.metadata, ...metadata });
}
formatMetadata() {
const keys = Object.keys(this.metadata);
if (keys.length === 0)
return '';
const formatted = keys.map(key => `${key}:${this.metadata[key]}`).join(', ');
return ` [${formatted}]`;
}
}
/**
* Helper function to create default config
*/
export function createDefaultConfig(overrides = {}) {
const defaultConfig = {
vespaMaxRetryAttempts: 3,
vespaRetryDelay: 1000,
vespaBaseHost: "localhost",
page: 10,
isDebugMode: false,
userQueryUpdateInterval: 60 * 1000,
namespace: "namespace",
cluster: "my_content",
productionServerUrl: "",
apiKey: "",
};
return {
...defaultConfig,
...overrides,
};
}
// Export the main VespaService class
export { VespaService } from "./vespa";
//# sourceMappingURL=index.js.map