import figlet from 'figlet'; import IFigletOptions from './interfaces/IFigletOptions'; import { UnexpectedFigletError } from './errors'; class FigletFonts { cachedFonts: Array; defaultFontOptions: IFigletOptions; constructor() { this.cachedFonts = []; this.defaultFontOptions = { font: 'Larry 3D', horizontalLayout: 'default', verticalLayout: 'default', width: 80, whitespaceBreak: true, }; } static sanitizeLarry(text: string) { return text.replaceAll('L', '_'); } generateText(text: string, options: IFigletOptions): Promise { const _options: IFigletOptions = { ...this.defaultFontOptions, ...options, }; return new Promise((resolve, reject) => { figlet.text(text, _options, (err, data) => { if (err) { return reject(new UnexpectedFigletError(err)); } return resolve(data); }); }); } get fonts(): Promise> { if (this.cachedFonts.length > 0) { return Promise.resolve(this.cachedFonts); } return new Promise((resolve, reject) => { figlet.fonts((err, fonts) => { if (err) { return reject(new UnexpectedFigletError(err)); } return resolve(fonts); }); }); } } export default FigletFonts;