UNPKG

jsev

Version:

Environment for building Web API's.

79 lines 3.11 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const util_1 = require("util"); const readdir = util_1.promisify(fs_1.default.readdir); const lstat = util_1.promisify(fs_1.default.lstat); const DEFAULT_EXTENSIONS = [".js", ".jsx"]; async function exportModule(modulePath, name, extensions) { const fullPath = `${modulePath}/${name}`; const info = await lstat(fullPath); if (info.isDirectory()) { return [name, await Promise.resolve().then(() => __importStar(require(fullPath)))]; } const parsedPath = path_1.default.parse(fullPath); if (parsedPath.name !== "index" && extensions.includes(parsedPath.ext) && !parsedPath.name.includes(".test")) { let mod = await Promise.resolve().then(() => __importStar(require(fullPath))); if (mod.default) { mod = mod.default; } return [parsedPath.name, mod]; } } async function exportModules(exportPath, extensions = DEFAULT_EXTENSIONS) { const normalizedExportPath = path_1.default.normalize(exportPath); const directoryContents = await readdir(normalizedExportPath); const modulePromises = directoryContents.map((x) => exportModule(normalizedExportPath, x, extensions)); const modules = {}; for (const m of modulePromises) { const loaded = await m; if (!loaded) { continue; } const [name, mod] = loaded; modules[name] = mod; } return modules; } exports.exportModules = exportModules; function exportModulesSync(exportPath, extensions = DEFAULT_EXTENSIONS) { const normalizedExportPath = path_1.default.normalize(exportPath); const directoryContents = fs_1.default.readdirSync(normalizedExportPath); const modules = directoryContents.reduce((a, x) => { const fullPath = `${normalizedExportPath}/${x}`; const info = fs_1.default.lstatSync(fullPath); const parsedPath = path_1.default.parse(fullPath); if (info.isDirectory()) { if (parsedPath.name !== "__tests__") { a[x] = require(fullPath); } return a; } if (parsedPath.name !== "index" && extensions.includes(parsedPath.ext) && !parsedPath.name.includes(".test")) { let mod = require(fullPath); if (mod.default) { mod = mod.default; } a[parsedPath.name] = mod; } return a; }, {}); return modules; } exports.exportModulesSync = exportModulesSync; //# sourceMappingURL=exporter.js.map