@innv/nest-initializer
Version:
Uma plataforma fluente e opinativa para inicializar e configurar aplicações NestJS com as melhores práticas.
44 lines • 1.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.discoverComponents = discoverComponents;
const path_1 = require("path");
const glob_1 = require("glob");
const nexus_1 = require("@innv/nexus");
function discoverComponents(basePath, reflectorInst, requireFn = require) {
const providers = [];
const controllers = [];
const nexusClients = [];
const files = (0, glob_1.globSync)((0, path_1.join)(basePath, '**/*.{ts,js}'), {
ignore: [
'**/*.module.{ts,js}',
'**/*.spec.{ts,js}',
'**/node_modules/**',
'**/features/**',
'**/plugins/**',
],
absolute: true,
});
for (const file of files) {
try {
const exports = requireFn(file);
for (const key in exports) {
const exportedClass = exports[key];
if (typeof exportedClass === 'function' && exportedClass.prototype) {
if (reflectorInst.get('path', exportedClass)) {
controllers.push(exportedClass);
}
else if (reflectorInst.get('__injectable__', exportedClass)) {
providers.push(exportedClass);
}
else if (reflectorInst.get(nexus_1.API_CLIENT_META_KEY, exportedClass)) {
nexusClients.push(exportedClass);
}
}
}
}
catch (_) {
}
}
return { providers, controllers, nexusClients };
}
//# sourceMappingURL=auto-discovery.helper.js.map