import type { ResourcePurpose } from "@metis/resources/common"; import type { IResourceReferenceSession } from "@metis/resources/services"; import { UniqueID } from "@repo/rdx-ddd"; /** Proyecta referencias globales ya resueltas por Resources; no decide elegibilidad ni abre transacciones. */ export async function loadGlobalConfigurationReferences( session: IResourceReferenceSession, purpose: ResourcePurpose, ids: readonly string[] ) { const globalResources = []; for (let offset = 0; offset < ids.length; offset += 100) { const resolved = await session.resolve({ purpose, ids: ids.slice(offset, offset + 100), }); if (resolved.purpose !== purpose) { throw new Error("Propósito de referencia incompatible."); } for (const item of resolved.items) { if (item.status === "resolved" && item.reference.scope === "global") { const identity = UniqueID.create(item.reference.id); if (!identity.isSuccess) { throw new Error("Identidad global persistida inválida."); } globalResources.push({ id: identity.data, active: item.reference.active, usage: item.reference.kind, expiresOn: null, }); } } } return globalResources; }