it-praxisportal/assets/runners/runner_registry.js

52 lines
1.4 KiB
JavaScript

/**
* 🔌 UNIVERSAL LANGUAGE RUNNER REGISTRY 🔌
* =========================================
* Verwaltet austauschbare Language-Runner für polyglotte Code-Ausführung
* (Python, JavaScript, SQL, Rust etc.) in der Monaco Web-IDE.
*/
(function () {
const runners = new Map();
window.RunnerRegistry = {
/**
* Registriert einen neuen Language Runner Adapter
* @param {Object} adapter
*/
register(adapter) {
if (!adapter || !adapter.id) {
throw new Error("Runner Adapter muss eine gültige 'id' besitzen.");
}
runners.set(adapter.id.toLowerCase(), adapter);
console.log(`🔌 [RunnerRegistry] Runner '${adapter.displayName || adapter.id}' erfolgreich registriert.`);
},
/**
* Ruft einen registrierten Runner anhand der Sprach-ID ab
* @param {string} languageId
* @returns {Object|null}
*/
get(languageId) {
if (!languageId) return null;
return runners.get(languageId.toLowerCase()) || null;
},
/**
* Gibt alle registrierten Sprach-IDs zurück
* @returns {string[]}
*/
list() {
return Array.from(runners.keys());
},
/**
* Prüft, ob ein Runner für eine Sprache verfügbar ist
* @param {string} languageId
* @returns {boolean}
*/
has(languageId) {
if (!languageId) return false;
return runners.has(languageId.toLowerCase());
}
};
})();