3.0.0 - Dependency updates, improved typesafe config, improve typing
All checks were successful
Docker Deploy / build-and-push (push) Successful in 3m44s

This commit is contained in:
2025-09-22 15:07:03 -06:00
parent 6c9fabe770
commit 75931d4a43
20 changed files with 1353 additions and 1533 deletions

View File

@@ -4,7 +4,7 @@ import Layout from "../layouts/Layout.astro";
import ResumeSkills from "../components/ResumeSkills";
import ResumeDownloadButton from "../components/ResumeDownloadButton";
import ResumeSettingsModal from "../components/ResumeSettingsModal";
import { siteConfig } from "../config/data";
import { config } from "../config";
import "../styles/global.css";
import * as TOML from "@iarna/toml";
@@ -57,16 +57,18 @@ interface ResumeData {
let resumeData: ResumeData | undefined = undefined;
let fetchError: string | null = null;
if (!siteConfig.resume.tomlFile || !siteConfig.resume.tomlFile.trim()) {
if (!config.resumeConfig.tomlFile || !config.resumeConfig.tomlFile.trim()) {
return Astro.redirect("/");
}
try {
let tomlContent: string;
if (siteConfig.resume.tomlFile.startsWith("/")) {
if (config.resumeConfig.tomlFile.startsWith("/")) {
const baseUrl = Astro.url.origin;
const response = await fetch(`${baseUrl}${siteConfig.resume.tomlFile}`);
const response = await fetch(
`${baseUrl}${config.resumeConfig.tomlFile}`,
);
if (!response.ok) {
throw new Error(
@@ -76,7 +78,7 @@ try {
tomlContent = await response.text();
} else {
tomlContent = siteConfig.resume.tomlFile;
tomlContent = config.resumeConfig.tomlFile;
}
resumeData = TOML.parse(tomlContent) as unknown as ResumeData;
@@ -86,7 +88,7 @@ try {
}
const data = resumeData;
const resumeConfig = siteConfig.resume;
const resumeConfig = config.resumeConfig;
if (!data) {
return Astro.redirect("/");
@@ -136,26 +138,29 @@ if (!data) {
<ResumeDownloadButton client:load />
{
data.summary && resumeConfig.sections.summary?.enabled && (
<div class="card bg-base-300 shadow-xl mb-4 sm:mb-6">
<div class="card-body p-4 sm:p-6 break-words">
<h2 class="card-title text-xl sm:text-2xl">
{resumeConfig.sections.summary.title || "Summary"}
</h2>
<div>{data.summary.content}</div>
data.summary &&
resumeConfig.sections.enabled.includes("summary") && (
<div class="card bg-base-300 shadow-xl mb-4 sm:mb-6">
<div class="card-body p-4 sm:p-6 break-words">
<h2 class="card-title text-xl sm:text-2xl">
{resumeConfig.sections.summary?.title ||
"Summary"}
</h2>
<div>{data.summary.content}</div>
</div>
</div>
</div>
)
)
}
{
data.skills &&
data.skills.length > 0 &&
resumeConfig.sections.skills?.enabled && (
resumeConfig.sections.enabled.includes("skills") && (
<div class="card bg-base-300 shadow-xl mb-4 sm:mb-6">
<div class="card-body p-4 sm:p-6 break-words">
<h2 class="card-title text-xl sm:text-2xl">
{resumeConfig.sections.skills.title || "Skills"}
{resumeConfig.sections.skills?.title ||
"Skills"}
</h2>
<ResumeSkills
skills={data.skills.map((skill, index) => ({
@@ -173,11 +178,11 @@ if (!data) {
{
data.experience &&
data.experience.length > 0 &&
resumeConfig.sections.experience?.enabled && (
resumeConfig.sections.enabled.includes("experience") && (
<div class="card bg-base-300 shadow-xl mb-4 sm:mb-6">
<div class="card-body p-4 sm:p-6 break-words">
<h2 class="card-title text-xl sm:text-2xl">
{resumeConfig.sections.experience.title ||
{resumeConfig.sections.experience?.title ||
"Experience"}
</h2>
<div class="space-y-4 sm:space-y-6">
@@ -222,11 +227,11 @@ if (!data) {
{
data.education &&
data.education.length > 0 &&
resumeConfig.sections.education?.enabled && (
resumeConfig.sections.enabled.includes("education") && (
<div class="card bg-base-300 shadow-xl mb-4 sm:mb-6">
<div class="card-body p-4 sm:p-6 break-words">
<h2 class="card-title text-xl sm:text-2xl">
{resumeConfig.sections.education.title ||
{resumeConfig.sections.education?.title ||
"Education"}
</h2>
<div class="space-y-4">
@@ -264,11 +269,11 @@ if (!data) {
{
data.volunteer &&
data.volunteer.length > 0 &&
resumeConfig.sections.volunteer?.enabled && (
resumeConfig.sections.enabled.includes("volunteer") && (
<div class="card bg-base-300 shadow-xl mb-4 sm:mb-6">
<div class="card-body p-4 sm:p-6 break-words">
<h2 class="card-title text-xl sm:text-2xl">
{resumeConfig.sections.volunteer.title ||
{resumeConfig.sections.volunteer?.title ||
"Volunteer Work"}
</h2>
<div class="space-y-4">
@@ -296,11 +301,11 @@ if (!data) {
{
data.awards &&
data.awards.length > 0 &&
resumeConfig.sections.awards?.enabled && (
resumeConfig.sections.enabled.includes("awards") && (
<div class="card bg-base-300 shadow-xl mb-4 sm:mb-6">
<div class="card-body p-4 sm:p-6 break-words">
<h2 class="card-title text-xl sm:text-2xl">
{resumeConfig.sections.awards.title ||
{resumeConfig.sections.awards?.title ||
"Awards & Recognition"}
</h2>
<div class="space-y-4">