import { getVersion, getVersionContent, getVersionMetadata, listScripts } from './scripts.js'; function selectedArtifacts(game: string | null, map: string | null, readVersion: (id: number) => Version | undefined) { return (['script', 'plugin'] as const).flatMap((kind) => listScripts(kind).flatMap((script) => { const scopeMatches = script.scope_type === 'game' ? script.scope_value === game : script.scope_type === 'map' ? script.scope_value === map : false; if (!scopeMatches || !script.current_version_id) return []; const version = readVersion(script.current_version_id); return version ? [{ kind, script, version }] : []; }) ); } /** Published file artifacts shared by provisioning and drift reconciliation. */ export function promotedArtifacts(game: string | null, map: string | null) { return selectedArtifacts(game, map, id => { const version = getVersion(id); return version ? { ...version, content: getVersionContent(id) } : undefined; }); } /** Metadata uses the same promotion and scope rules without reading file content. */ export function promotedArtifactMetadata(game: string | null, map: string | null) { return selectedArtifacts(game, map, getVersionMetadata); }