33 lines
787 B
TypeScript
33 lines
787 B
TypeScript
import type { ImageMetadata } from "astro";
|
|
import { DateTime } from "luxon";
|
|
|
|
import type { timelineEntry } from "@interfaces/timeline.ts";
|
|
import type { lineItem } from "@interfaces/ul-li.ts";
|
|
|
|
export interface printedCircuitBoardRevision {
|
|
major: number;
|
|
minor: number;
|
|
patch: number;
|
|
|
|
date: DateTime;
|
|
|
|
images?: ImageMetadata[];
|
|
notes?: lineItem[];
|
|
}
|
|
|
|
export interface printedCircuitBoard {
|
|
name: string;
|
|
description: string;
|
|
|
|
revisions: printedCircuitBoardRevision[];
|
|
}
|
|
|
|
export const timelineFromPrintedCircuitBoard = (
|
|
pcb: printedCircuitBoard,
|
|
): timelineEntry[] =>
|
|
pcb.revisions?.map((revision) => ({
|
|
event: `PCB Released: ${pcb.name} `,
|
|
eventDetail: `Revision: ${revision.major}.${revision.minor}.${revision.patch}`,
|
|
date: revision.date,
|
|
}));
|