import { createResource } from "../../domain/models/resource.js"; /** @param {unknown} value */ export function mapResourceDto(value) { if (!value || typeof value !== "object") { throw new TypeError("Validated resource DTO is required"); } const dto = /** @type {Record} */ (value); if (typeof dto.id !== "string" || typeof dto.name !== "string") { throw new TypeError("Validated resource DTO invariants were breached"); } return createResource({ id: dto.id, displayName: dto.name, createdAt: typeof dto.createdAt === "string" ? dto.createdAt : null, }); } /** @param {string} operationId @param {unknown} payload */ export function mapOperationPayload(operationId, payload) { if (operationId === "LIST_SAMPLE_RESOURCES") { if (!Array.isArray(payload)) throw new TypeError("Expected a resource list"); return payload.map(mapResourceDto); } if (operationId === "CREATE_SAMPLE_RESOURCE") { return mapResourceDto(payload); } throw new TypeError(`No boundary mapper registered for ${operationId}`); }