import * as plugins from './plugins.js'; import * as paths from './paths.js'; import { PlatformServiceDb } from './classes.platformservicedb.js' import { EmailService } from './email/email.classes.emailservice.js'; import { SmsService } from './sms/smsservice.js'; import { LetterService } from './letter/classes.letterservice.js'; import { MtaService } from './mta/mta.classes.mta.js'; export class SzPlatformService { public projectinfo: plugins.projectinfo.ProjectInfo; public serviceQenv = new plugins.qenv.Qenv('./', './.nogit'); public platformserviceDb: PlatformServiceDb; public typedserver: plugins.typedserver.TypedServer; public typedrouter = new plugins.typedrequest.TypedRouter(); // SubServices public emailService: EmailService; public letterService: LetterService; public mtaService: MtaService; public smsService: SmsService; public async start() { this.platformserviceDb = new PlatformServiceDb(this); this.projectinfo = new plugins.projectinfo.ProjectInfo(paths.packageDir); // lets start the sub services this.emailService = new EmailService(this); this.letterService = new LetterService(this, { letterxpressUser: await this.serviceQenv.getEnvVarOnDemand('LETTER_API_USER'), letterxpressToken: await this.serviceQenv.getEnvVarOnDemand('LETTER_API_TOKEN') }); this.mtaService = new MtaService(this); this.smsService = new SmsService(this, { apiGatewayApiToken: await this.serviceQenv.getEnvVarOnDemand('SMS_API_TOKEN'), }); // lets start the server finally this.typedserver = new plugins.typedserver.TypedServer({ cors: true, }); await this.typedserver.start(); } }