Dynamic access to Operators in both front and backend
This commit is contained in:
24
shared-operations/src/workflow/operatorAccessor.ts
Normal file
24
shared-operations/src/workflow/operatorAccessor.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import { Operator } from "../functions";
|
||||
import i18next from "i18next";
|
||||
|
||||
function getCompileTimeOperatorList(): string[] {
|
||||
return import.meta.compileTime("./listOperatorsInDir.ts");
|
||||
}
|
||||
|
||||
export async function getOperatorByName(name: string): Promise<typeof Operator | undefined> {
|
||||
// Check if exists
|
||||
if(!getCompileTimeOperatorList().includes(name)) return;
|
||||
|
||||
i18next.loadNamespaces(name, (err, t) => { if (err) throw err; });
|
||||
return (await import("../functions/" + name + ".ts"))[capitalizeFirstLetter(name)];
|
||||
}
|
||||
|
||||
export function listOperatorNames(): string[] {
|
||||
const availableOperators = getCompileTimeOperatorList();
|
||||
// TODO: Implement this
|
||||
return availableOperators;
|
||||
}
|
||||
|
||||
function capitalizeFirstLetter(string: String) {
|
||||
return string.charAt(0).toUpperCase() + string.slice(1);
|
||||
}
|
||||
Reference in New Issue
Block a user