import { Initializer, api, utils } from "actionhero"; import { Notifier } from "../classes/notifier"; import path from "path"; import glob from "glob"; declare module "actionhero" { export interface Api { notifiers: { notifiers: Notifier[]; }; } } export class Notifiers extends Initializer { constructor() { super(); this.name = "notifiers"; } async initialize() { api.notifiers = { notifiers: [] }; const globPath = path.join(__dirname, "..", "notifiers", "+(*.ts|*.js)"); const notifierFiles = utils.ensureNoTsHeaderFiles(glob.sync(globPath)); for (const i in notifierFiles) { let collection = await import(notifierFiles[i]); if (typeof collection === "function") { collection = [collection]; } for (const j in collection) { const Klass = collection[j]; api.notifiers.notifiers.push(new Klass()); } } } }