RocketChat/Rocket.Chat

View on GitHub
apps/meteor/app/importer/server/classes/ImportersContainer.ts

Summary

Maintainability
A
0 mins
Test Coverage
import type { ImporterInfo } from '../definitions/ImporterInfo';

/** Container class which holds all of the importer details. */
export class ImportersContainer {
    private importers: Map<ImporterInfo['key'], ImporterInfo>;

    constructor() {
        this.importers = new Map();
    }

    add({ key, name, importer, visible }: Omit<ImporterInfo, 'visible'> & { visible?: boolean }) {
        this.importers.set(key, {
            key,
            name,
            visible: visible !== false,
            importer,
        });
    }

    get(key: string): ImporterInfo | undefined {
        return this.importers.get(key);
    }

    getAllVisible(): ImporterInfo[] {
        return Array.from(this.importers.values()).filter(({ visible }) => visible);
    }
}