docusaurus-openai-search
Version:
AI-powered search plugin for Docusaurus - extends Algolia search with intelligent keyword generation and RAG-based answers
91 lines (90 loc) • 1.95 kB
JavaScript
/**
* Simple logger utility for Docusaurus AI Search
*/
export class AISearchLogger {
constructor(enabled) {
this.prefix = '[AI Search]';
this.enabled = enabled;
}
/**
* Log general information
*/
log(message, data) {
if (!this.enabled)
return;
if (data !== undefined) {
console.log(`${this.prefix} ${message}`, data);
}
else {
console.log(`${this.prefix} ${message}`);
}
}
/**
* Log error with context
*/
logError(context, error) {
if (!this.enabled)
return;
console.error(`${this.prefix} Error in ${context}:`, error);
}
/**
* Log error (interface compatibility)
*/
error(...args) {
if (!this.enabled)
return;
console.error(this.prefix, ...args);
}
/**
* Log warning
*/
warn(...args) {
if (!this.enabled)
return;
console.warn(this.prefix, ...args);
}
/**
* Enable or disable logging
*/
setEnabled(enabled) {
this.enabled = enabled;
}
/**
* Get current logging state
*/
isEnabled() {
return this.enabled;
}
/**
* Reset logger state
*/
reset() {
this.enabled = false;
}
}
// Create a singleton logger instance
let loggerInstance = null;
export function createLogger(enabled = false) {
loggerInstance = new AISearchLogger(enabled);
return loggerInstance;
}
export function getLogger() {
if (!loggerInstance) {
loggerInstance = new AISearchLogger(false);
}
return loggerInstance;
}
/**
* Reset the logger instance (for cleanup/testing)
*/
export function resetLogger() {
if (loggerInstance) {
loggerInstance = null;
}
}
/**
* Check if logger instance exists
*/
export function hasLoggerInstance() {
return loggerInstance !== null;
}