it was weird. i pressed delete on a subfolder, i think one of the pages.off folders that i was using. and then, suddenly, nvim on windows 7 decided to delete every file in the directory. they weren't shred off the space time continuum, but just marked deleted. i had to pay $80 to get access to a software that could see them. bleh! just seeing all my work, a little over a week, was pretty heart shattering. but i remembered that long ago, a close friend said i could call them whenever i was feeling sad. i finally took them up on that offer. the first time i've ever called someone for emotional support. but it's ok. i got it back. and the site framework is better than ever. i'm gonna commit and push more often. the repo is private anyways.
34 lines
1 KiB
TypeScript
34 lines
1 KiB
TypeScript
import type { ResolvedMetadata } from "../types/metadata-interface";
|
|
import type { Icon, IconDescriptor } from "../types/metadata-types";
|
|
import type { FieldResolver } from "../types/resolvers";
|
|
import { resolveAsArrayOrUndefined } from "../generate/utils";
|
|
import { isStringOrURL } from "./resolve-url";
|
|
import { IconKeys } from "../constants";
|
|
|
|
export function resolveIcon(icon: Icon): IconDescriptor {
|
|
if (isStringOrURL(icon)) return { url: icon };
|
|
else if (Array.isArray(icon)) return icon;
|
|
return icon;
|
|
}
|
|
|
|
export const resolveIcons: FieldResolver<"icons"> = (icons) => {
|
|
if (!icons) {
|
|
return null;
|
|
}
|
|
|
|
const resolved: ResolvedMetadata["icons"] = {
|
|
icon: [],
|
|
apple: [],
|
|
};
|
|
if (Array.isArray(icons)) {
|
|
resolved.icon = icons.map(resolveIcon).filter(Boolean);
|
|
} else if (isStringOrURL(icons)) {
|
|
resolved.icon = [resolveIcon(icons)];
|
|
} else {
|
|
for (const key of IconKeys) {
|
|
const values = resolveAsArrayOrUndefined(icons[key]);
|
|
if (values) resolved[key] = values.map(resolveIcon);
|
|
}
|
|
}
|
|
return resolved;
|
|
};
|