Files
Stirling-PDF/shared-operations/src/workflow/operatorAccessor.ts

26 lines
1.0 KiB
TypeScript
Raw Normal View History

import { Operator } from "../functions";
import i18next from "i18next";
2024-07-13 21:20:47 +02:00
const compileTimeOperatorList: {basename: string}[] = import.meta.compileTime("../compiletime/operatorDescription.ts"); // The will compile to ["impose", "extractPages", etc...]
export async function getOperatorByName(name: string): Promise<typeof Operator | undefined> {
// Check if exists
2024-07-13 21:20:47 +02:00
if(!compileTimeOperatorList.find(e => e.basename == name)) return;
i18next.loadNamespaces(name, (err, t) => { if (err) throw err; console.log(t) });
2024-02-27 21:51:03 +01:00
const loadedModule = await import("../functions/" + name + ".ts");
const operator = loadedModule[capitalizeFirstLetter(name)];
if(!operator) {
throw Error("This operator does not export its class in the correct format.")
}
return operator;
}
export function listOperatorNames(): string[] {
2024-07-13 21:20:47 +02:00
const availableOperators = compileTimeOperatorList.map(e => e.basename);
return availableOperators;
}
function capitalizeFirstLetter(string: String) {
return string.charAt(0).toUpperCase() + string.slice(1);
}