@brewww/authentication-service
Version:
Authenticator service for Brew projects.
68 lines • 3.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs");
const path = require("path");
const swagger_1 = require("@nestjs/swagger");
const config_1 = require("./config");
const api_key_guard_1 = require("./utils/guards/api-key/api-key.guard");
const app_module_1 = require("./app.module");
const config_2 = require("@nestjs/config");
const http_exception_filter_1 = require("./filter/http-exception.filter");
const core_1 = require("@nestjs/core");
const mjml2html = require("mjml");
const custom_validation_pipe_1 = require("./validation/custom-validation.pipe");
function initValidationPipe(app) {
app.useGlobalPipes(new custom_validation_pipe_1.CustomValidationPipe());
}
function initSwagger(app) {
if ((0, config_1.serverConfig)().swaggerEnabled) {
const swaggerConfig = new swagger_1.DocumentBuilder()
.setTitle((0, config_1.appConfig)().name)
.setDescription((0, config_1.appConfig)().description)
.setVersion((0, config_1.appConfig)().version)
.addServer((0, config_1.serverConfig)().basePath)
.addSecurity("ApiKey", {
type: "apiKey",
name: "x-api-key",
in: "header",
})
.build();
const document = swagger_1.SwaggerModule.createDocument(app, swaggerConfig);
swagger_1.SwaggerModule.setup("docs", app, document);
}
}
function initGlobalGuard(app) {
app.useGlobalGuards(new api_key_guard_1.ApiKeyGuard(app.get(config_2.ConfigService)));
}
function buildMjmlTemplates(mjmlDir = __dirname + "/template/templates/mjml", htmlDir = __dirname + "/template/templates/html") {
if (!fs.existsSync(htmlDir))
fs.mkdirSync(htmlDir, { recursive: true });
fs.readdirSync(mjmlDir).forEach((fileOrDirectoryName) => {
const mjmlItemPath = path.join(mjmlDir, fileOrDirectoryName);
const htmlItemPath = path.join(htmlDir, fileOrDirectoryName);
if (fs.statSync(mjmlItemPath).isDirectory()) {
buildMjmlTemplates(mjmlItemPath, htmlItemPath);
}
else if (fileOrDirectoryName.endsWith(".mjml")) {
const mjmlTemplateContent = fs.readFileSync(mjmlItemPath, "utf8");
const { html: htmlTemplateContent } = mjml2html(mjmlTemplateContent);
fs.writeFileSync(path.join(htmlDir, fileOrDirectoryName.replace(".mjml", ".html")), htmlTemplateContent);
console.log(`Converted ${fileOrDirectoryName} to HTML`);
}
});
}
async function bootstrap() {
buildMjmlTemplates();
const app = await core_1.NestFactory.create(app_module_1.AppModule);
app.enableCors({
origin: (0, config_1.serverConfig)().corsAllowedOrigins,
credentials: true,
});
app.useGlobalFilters(new http_exception_filter_1.HttpExceptionFilter());
initGlobalGuard(app);
initValidationPipe(app);
initSwagger(app);
await app.listen((0, config_1.serverConfig)().port);
}
bootstrap();
//# sourceMappingURL=main.js.map