export function createFunction()

in lib/builtin-types.ts [60:86]


export function createFunction(
    definition: FunctionDefinition, 
    context: ObjectContext): Function {

    if (definition.function != null) {
        // Dynamicly created function.
        // TODO: do security check. 
        return eval('(' + definition.function + ')');
    }

    if (definition.moduleName != null && definition.functionName != null) {
        // create function from module and function name.
        let moduleName = definition.moduleName;
        if (moduleName.startsWith('.')) {
            moduleName = path.resolve(context.baseDir, moduleName);
        }
        return utils.appendMessageOnException("Unable to create function '" 
                + definition.function 
                + "' in module '" 
                + definition.moduleName 
                + "'.", 
                () => {
                    return utils.loadFunction(moduleName, definition.functionName);
                });
    }
    throw new Error("Either property group 'moduleName' and 'functionName' or property 'function' should be present for Function object.");
}