import { API_URL } from "https://esm.town/v/std/API_URL?v=5";
export async function alias<P extends Params>(params: P): Promise<Result<P>> {
const username = params.username;
let url = `${API_URL}/v1/alias/${username}`;
if ("valName" in params)
url = url + `/${params.valName}`;
const headers: HeadersInit = {};
if ("valName" in params && params.token)
headers.Authorization = `Bearer ${params.token}`;
return await (await fetch(url, { headers })).json();
}
type UserParams = {
username: string;
};
type ValParams = {
username: string;
valName: string;
token?: string;
};
type Params = UserParams | ValParams;
type UserResult = {
id: string;
username: string;
bio: string;
profileImageUrl: string;
};
type ValResult = {
id: string;
author: {
id: string;
username: string;
};
name: string;
code: string;
public: boolean;
privacy: "public" | "private";
version: number;
runEndAt: string;
runStartAt: string;
logs: any[];
output: object;
error: object | null;
readme: string | null;
likeCount: number;
referenceCount: number;
};
type Result<T> = T extends ValParams ? ValResult
: T extends UserParams ? UserResult
: never;