<commit_before>import * as fs from 'fs'
import nodemailer, { Transporter } from 'nodemailer'
import Mail from 'nodemailer/lib/mailer'
import { Config } from '../_type/config'
import { omanGetConfig, omanRegisterFactory } from '../oman/oman'

omanRegisterFactory('Mailer', async () => {
  return Mailer.from(omanGetConfig())
})

export class Mailer {

  public config: Config
  public transport: Transporter | undefined

  static from(config: Config) {
    return new Mailer(config)
  }

  private constructor(config: Config) {
    this.config = config
    this.loadConfig()
  }

  // port 25:  Authentication 이 없어도 된다. 서버간 통신에 사용.
  // port 587: Authentication 과정이 필수로 발생한다.
  // 개발중에는 25번 포트를 쓰도록 한다.

  private loadConfig() {
    if (this.config.mailServerConfigPath) {
      const text = fs.readFileSync(this.config.mailServerConfigPath, 'utf8')
      const obj = JSON.parse(text)
      if (obj.host) {
        this.transport = nodemailer.createTransport(obj)
      }
    }
  }<commit_msg>remove private property from mailer<commit_after>import * as fs from 'fs'
import nodemailer, { Transporter } from 'nodemailer'
import Mail from 'nodemailer/lib/mailer'
import { Config } from '../_type/config'
import { omanGetConfig, omanRegisterFactory } from '../oman/oman'

omanRegisterFactory('Mailer', async () => {
  return Mailer.from(omanGetConfig())
})

export class Mailer {

  private config: Config
  private transport: Transporter | undefined

  static from(config: Config) {
    return new Mailer(config)
  }

  private constructor(config: Config) {
    this.config = config
    this.loadConfig()
  }

  // port 25:  Authentication 이 없어도 된다. 서버간 통신에 사용.
  // port 587: Authentication 과정이 필수로 발생한다.
  // 개발중에는 25번 포트를 쓰도록 한다.

  private loadConfig() {
    if (this.config.mailServerConfigPath) {
      const text = fs.readFileSync(this.config.mailServerConfigPath, 'utf8')
      const obj = JSON.parse(text)
      if (obj.host) {
        this.transport = nodemailer.createTransport(obj)
      }
    }
  }
{'fraction_non_alphanumeric': 0.11354581673306773, 'fraction_numerical': 0.00796812749003984, 'mean_word_length': 3.3390928725701943, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7293120', 'n_tokens_mistral': 710, 'n_tokens_neox': 732, 'n_words': 172}