n8n-nodes-nextcloud-tables
Version:
Production-Ready n8n Node fΓΌr Nextcloud Tables - VollstΓ€ndige API-Abdeckung mit erweiterten Filtern, Multi-Column-Sorting, CSV-Import und professioneller Datenvalidierung
284 lines β’ 9.01 kB
JavaScript
;
/**
* π Debug-Helper fΓΌr Nextcloud Tables n8n-Node
* Zentrale Debug-Infrastruktur mit Kategorisierung und Inventar
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.registerDebugPoints = exports.DebugHelper = exports.DebugInventory = void 0;
/**
* ποΈ Debug-Inventar - Alle Debug-Points registriert
*/
class DebugInventory {
/**
* Debug-Point registrieren
*/
static register(entry) {
this.entries.set(entry.id, entry);
}
/**
* Alle Debug-Points abrufen
*/
static getAll() {
return Array.from(this.entries.values());
}
/**
* Debug-Points nach Kategorie filtern
*/
static getByCategory(category) {
return this.getAll().filter(entry => entry.category === category);
}
/**
* Debug-Points nach Test-Phase filtern
*/
static getByPhase(phase) {
return this.getAll().filter(entry => entry.testPhase === phase);
}
/**
* Debug-Point aktivieren/deaktivieren
*/
static setEnabled(id, enabled) {
const entry = this.entries.get(id);
if (entry) {
entry.enabled = enabled;
}
}
/**
* Kategorie komplett aktivieren/deaktivieren
*/
static setCategoryEnabled(category, enabled) {
this.getByCategory(category).forEach(entry => {
entry.enabled = enabled;
});
}
/**
* Markdown-Report generieren
*/
static generateReport() {
const categories = [...new Set(this.getAll().map(e => e.category))];
let report = '# π Debug-Inventar - Nextcloud Tables n8n-Node\n\n';
report += `**Gesamt Debug-Points:** ${this.getAll().length}\n\n`;
categories.forEach(category => {
const entries = this.getByCategory(category);
const enabledCount = entries.filter(e => e.enabled).length;
report += `## π ${category.toUpperCase()} (${enabledCount}/${entries.length} aktiv)\n\n`;
entries.forEach(entry => {
const status = entry.enabled ? 'β
' : 'β';
const phase = entry.testPhase ? ` [${entry.testPhase}]` : '';
report += `- ${status} **${entry.id}** - ${entry.description} ${phase}\n`;
report += ` - π Location: \`${entry.location}\`\n`;
report += ` - π·οΈ Level: ${entry.level}\n\n`;
});
});
return report;
}
}
exports.DebugInventory = DebugInventory;
DebugInventory.entries = new Map();
/**
* π Debug-Helper Hauptklasse
*/
class DebugHelper {
/**
* Debug-System global aktivieren/deaktivieren
*/
static setEnabled(enabled) {
this.isEnabled = enabled;
}
/**
* Minimum Log-Level setzen
*/
static setMinLevel(level) {
this.minLevel = level;
}
/**
* Debug-Message ausgeben
*/
static log(id, message, data, category, level = 'DEBUG') {
if (!this.isEnabled)
return;
const entry = DebugInventory.getAll().find(e => e.id === id);
if (entry && !entry.enabled)
return;
if (!this.shouldLog(level))
return;
const timestamp = new Date().toISOString();
const categoryTag = category ? `[${category.toUpperCase()}]` : '';
const prefix = `π ${timestamp} ${categoryTag} [${level}] ${id}:`;
console.log(prefix, message);
if (data !== undefined) {
console.log('π Data:', JSON.stringify(data, null, 2));
}
}
/**
* API-Request Debug
*/
static logApiRequest(method, url, data) {
this.log('api-request', `${method} ${url}`, data, 'api', 'INFO');
}
/**
* API-Response Debug
*/
static logApiResponse(method, url, status, data) {
this.log('api-response', `${method} ${url} - Status: ${status}`, data, 'api', 'INFO');
}
/**
* Resource Locator Debug
*/
static logResourceLocator(type, value) {
this.log('resource-locator', `Resource Locator: ${type}`, value, 'resource-locator', 'DEBUG');
}
/**
* Validation Debug
*/
static logValidation(field, value, result, error) {
this.log('validation', `Validation ${field}: ${result ? 'β
PASS' : 'β FAIL'}`, { value, error }, 'validation', 'DEBUG');
}
/**
* Row Operation Debug
*/
static logRowOperation(operation, tableId, data) {
this.log('row-operation', `Row ${operation} - Table ${tableId}`, data, 'row-operations', 'INFO');
}
/**
* Share Operation Debug
*/
static logShareOperation(operation, shareType, receiver) {
this.log('share-operation', `Share ${operation} - Type: ${shareType}, Receiver: ${receiver}`, undefined, 'share-operations', 'INFO');
}
/**
* Error Debug
*/
static logError(context, error) {
this.log('error', `Error in ${context}`, {
message: error.message,
stack: error.stack,
name: error.name
}, 'error-handling', 'ERROR');
}
/**
* Performance Debug
*/
static logPerformance(operation, startTime, additionalData) {
const duration = Date.now() - startTime;
this.log('performance', `${operation} completed in ${duration}ms`, additionalData, 'api', 'DEBUG');
}
/**
* Load Options Debug
*/
static logLoadOptions(method, resultCount, data) {
this.log('load-options', `Load Options ${method}: ${resultCount} items`, data, 'resource-locator', 'DEBUG');
}
/**
* PrΓΌft ob Log-Level ausgegeben werden soll
*/
static shouldLog(level) {
const levels = {
'ERROR': 0,
'WARN': 1,
'INFO': 2,
'DEBUG': 3,
'TRACE': 4
};
return levels[level] <= levels[this.minLevel];
}
}
exports.DebugHelper = DebugHelper;
DebugHelper.isEnabled = true;
DebugHelper.minLevel = 'DEBUG';
/**
* ποΈ Debug-Points registrieren
*/
function registerDebugPoints() {
// API Debug Points
DebugInventory.register({
id: 'api-request',
category: 'api',
level: 'INFO',
description: 'API-Requests verfolgen',
location: 'api.helper.ts - makeApiRequest()',
enabled: true,
testPhase: 'testing'
});
DebugInventory.register({
id: 'api-response',
category: 'api',
level: 'INFO',
description: 'API-Responses verfolgen',
location: 'api.helper.ts - makeApiRequest()',
enabled: true,
testPhase: 'testing'
});
// Resource Locator Debug Points
DebugInventory.register({
id: 'resource-locator',
category: 'resource-locator',
level: 'DEBUG',
description: 'Resource Locator Werte debuggen',
location: 'api.helper.ts - getResourceId()',
enabled: true,
testPhase: 'development'
});
DebugInventory.register({
id: 'load-options',
category: 'resource-locator',
level: 'DEBUG',
description: 'Load Options Methoden debuggen',
location: 'node.methods.ts - NodeLoadOptions',
enabled: true,
testPhase: 'testing'
});
// Validation Debug Points
DebugInventory.register({
id: 'validation',
category: 'validation',
level: 'DEBUG',
description: 'Datenvalidierung verfolgen',
location: 'data.formatter.ts - formatColumnValue()',
enabled: true,
testPhase: 'development'
});
// Row Operations Debug Points
DebugInventory.register({
id: 'row-operation',
category: 'row-operations',
level: 'INFO',
description: 'Zeilen-Operationen verfolgen',
location: 'row.handler.ts - create/update/delete/get',
enabled: true,
testPhase: 'testing'
});
// Share Operations Debug Points
DebugInventory.register({
id: 'share-operation',
category: 'share-operations',
level: 'INFO',
description: 'Share-Operationen verfolgen',
location: 'share.handler.ts - create/update/delete',
enabled: true,
testPhase: 'testing'
});
// Error Handling Debug Points
DebugInventory.register({
id: 'error',
category: 'error-handling',
level: 'ERROR',
description: 'Fehlerbehandlung verfolgen',
location: 'api.helper.ts - handleApiError()',
enabled: true,
testPhase: 'production'
});
// Performance Debug Points
DebugInventory.register({
id: 'performance',
category: 'api',
level: 'DEBUG',
description: 'Performance-Metriken sammeln',
location: 'Verschiedene Handler',
enabled: false,
testPhase: 'development'
});
}
exports.registerDebugPoints = registerDebugPoints;
// Debug-Points beim Import registrieren
registerDebugPoints();
//# sourceMappingURL=debug.helper.js.map