core/loaders/card.loader.ts

core/loaders/card.loader.ts is a file in Bane's Lab Social Share. 30 lines of code and 4 definitions.

import "#core/plugins/card.barrel";
import "@banes-lab/web/presentation/records/records.barrel.ts";
import { listCards, repeatedCards } from "#core/registries/card.registry";
import type { CardPage } from "#types/card.types";
import type { LoadedCards } from "#types/stage.types";
import { SITE_MARKS } from "#configuration/data/site.data";
import { pageAddress } from "#core/evaluators/page.evaluator";
import { registeredPages } from "@banes-lab/web/domain/registries/page.registry.ts";

const PLUGIN_FILES = import.meta.glob("../../cards/*/plugins/*.plugin.ts");

export const CARD_PLUGINS: readonly string[] = Object.keys(PLUGIN_FILES);

export const cardPages = function cardPages(): readonly CardPage[] {
    return registeredPages().map((page) => ({
        accent: page.accent,
        address: pageAddress(page.id),
        headline: page.share.headline,
        icon: page.icon,
        id: page.id,
        mark: page.mark,
        tagline: page.share.tagline,
    }));
};

export const loadCards = function loadCards(): LoadedCards {
    return {
        brand: SITE_MARKS,
        cards: listCards(),
        pages: cardPages(),
        plugins: CARD_PLUGINS,
        repeated: repeatedCards(),
    };
};