CI / verify (push) Failing after 5m29s
Estado do disco em 14/10/2026, sem filtrar. Inclui as copias .sync-conflict-* do Syncthing de 07/10 e os 15 arquivos que o Syncthing apagou; todo esse conteudo ja existia em outros commits. So havia fora do Git: AGENTS.md, CLAUDE.md e a alteracao em data/project-health.json.
69 lines
1.8 KiB
TypeScript
69 lines
1.8 KiB
TypeScript
import type { PortfolioProjectView } from "@/lib/portfolio-data";
|
|
|
|
export type NotebookProject = {
|
|
id: string;
|
|
title: string;
|
|
subtitle: string;
|
|
demoUrl: PortfolioProjectView["demoUrl"];
|
|
demoAvailability: PortfolioProjectView["demoAvailability"];
|
|
demoCheckedAt: PortfolioProjectView["demoCheckedAt"];
|
|
technologies: string[];
|
|
screenshotSrc: string;
|
|
screenshotWidth: number;
|
|
screenshotHeight: number;
|
|
};
|
|
|
|
const NOTEBOOK_ORDER = [
|
|
"nutriscan",
|
|
"sc-plus",
|
|
"sev-modaintima",
|
|
"as-servicos",
|
|
] as const;
|
|
|
|
const SCREENSHOT_BY_PROJECT_ID: Record<
|
|
(typeof NOTEBOOK_ORDER)[number],
|
|
string
|
|
> = {
|
|
nutriscan: "/assets/notebook/nutriscan.webp",
|
|
"sc-plus": "/assets/notebook/sc-plus.webp",
|
|
"sev-modaintima": "/assets/notebook/sev-modaintima.webp",
|
|
"as-servicos": "/assets/notebook/as-servicos.webp",
|
|
};
|
|
|
|
function isApprovedDemoUrl(
|
|
value: PortfolioProjectView["demoUrl"],
|
|
): value is string {
|
|
return typeof value === "string" && /^https?:\/\//.test(value);
|
|
}
|
|
|
|
export function selectNotebookProjects(
|
|
projects: readonly PortfolioProjectView[],
|
|
): NotebookProject[] {
|
|
return NOTEBOOK_ORDER.flatMap((id) => {
|
|
const project = projects.find((candidate) => candidate.id === id);
|
|
const screenshotSrc = SCREENSHOT_BY_PROJECT_ID[id];
|
|
|
|
if (
|
|
!project ||
|
|
(project.demoUrl !== null && !isApprovedDemoUrl(project.demoUrl))
|
|
) {
|
|
return [];
|
|
}
|
|
|
|
return [
|
|
{
|
|
id: project.id,
|
|
title: project.title,
|
|
subtitle: project.subtitle,
|
|
demoUrl: project.demoUrl,
|
|
demoAvailability: project.demoAvailability,
|
|
demoCheckedAt: project.demoCheckedAt,
|
|
technologies: [...project.technologies],
|
|
screenshotSrc,
|
|
screenshotWidth: 1600,
|
|
screenshotHeight: 1000,
|
|
},
|
|
];
|
|
});
|
|
}
|