import { join, dirname, relative } from "path";

const moduleImporter = async (middlewarePath: string, basePath: string = ""): Promise<any> => {
    try {
        let npmPackageMainDir = "";

        if (process.env && process.env.npm_package_main) {
            npmPackageMainDir = dirname(process.env.npm_package_main);
        }

        const fullBasePath = join(npmPackageMainDir, basePath, middlewarePath);
        const middleWareModule = await import(fullBasePath);

        return middleWareModule.hasOwnProperty("default") ? middleWareModule.default : middleWareModule;
    } catch (error) {
        console.log(error);
        return false;
    }
};

export default moduleImporter;