shared/manifests/capability.manifest.ts

shared/manifests/capability.manifest.ts is a file in GovLab Extension Host. 17 lines of code and 4 definitions.

import { existsSync, readdirSync, statSync } from "node:fs";
import { FOUNDATION_SUBJECT } from "../resolvers/anchor.resolver.ts";
import { PLATFORM_PATH_PREFIXES } from "./layer.manifest.ts";
import type { PlatformCapability } from "../../types/manifest.types.ts";
import { absolutePath } from "@ssot/paths";
import { join } from "node:path";

const CAPABILITY_CONTAINER = (PLATFORM_PATH_PREFIXES[0] ?? "").slice(0, -1);

const CAPABILITY_DIR = absolutePath("app.member", CAPABILITY_CONTAINER);

const NOT_A_CAPABILITY = new Set([FOUNDATION_SUBJECT]);

export const platformCapabilities = function platformCapabilities(): readonly PlatformCapability[] {
    if (CAPABILITY_CONTAINER === "" || !existsSync(CAPABILITY_DIR)) {
        return [];
    }
    return readdirSync(CAPABILITY_DIR)
        .filter((name) => !NOT_A_CAPABILITY.has(name) && statSync(join(CAPABILITY_DIR, name)).isDirectory())
        .map((name) => ({ noun: name, platformPath: `${CAPABILITY_CONTAINER}/${name}/` }));
};