@busy-hour/blaze-types
Version:
<h1 align='center'>🔥 Blaze Types</h1> <div align='center'> An event driven framework for 🔥 Hono.js </div>
54 lines (53 loc) • 1.48 kB
JavaScript
// src/lib/service-loader.ts
import fs from "node:fs";
import path from "node:path";
import { EXTENSION } from "../utils/constant.js";
import { tsModule } from "../utils/module.js";
function getServicesPaths() {
const rootPath = tsModule.getRootPath();
const { servicePaths } = tsModule.getConfig();
return servicePaths.map((p) => path.join(rootPath, p));
}
function readServiceDir(dirPath) {
const infos = fs.readdirSync(dirPath);
return infos.map((info) => {
let finalPath = path.join(dirPath, info);
if (info.match(EXTENSION)) {
return finalPath;
}
if (fs.existsSync(path.join(finalPath, "index.ts"))) {
finalPath = path.join(finalPath, "index.ts");
} else {
finalPath = path.join(finalPath, "index.js");
}
return finalPath;
});
}
function getServiceInformation(servicePath) {
try {
const relativePath = path.relative(
tsModule.getOutputPath(),
path.dirname(servicePath)
);
let fileName = "";
if (fs.lstatSync(servicePath).isDirectory()) {
fileName = path.basename(servicePath);
} else {
fileName = path.basename(path.join(servicePath, ".."));
}
fileName = fileName.replace(/\.|-/g, "_");
return {
importPath: relativePath,
fileName
};
} catch (err) {
tsModule.logger(`Failed to load service: ${servicePath}`);
tsModule.logger(err?.message);
return null;
}
}
export {
getServiceInformation,
getServicesPaths,
readServiceDir
};