From cb7bf95e55d609c038607e148104c1f832640561 Mon Sep 17 00:00:00 2001 From: not-nullptr Date: Thu, 14 Nov 2024 09:43:28 +0000 Subject: [PATCH] feat: new logger --- src/lib/converters/converter.svelte.ts | 1 + src/lib/converters/ffmpeg.svelte.ts | 3 +- src/lib/converters/vips.svelte.ts | 2 ++ src/lib/logger/index.ts | 42 ++++++++++++++++++++++++++ src/lib/store/index.svelte.ts | 1 - src/routes/+layout.ts | 4 ++- src/routes/+page.svelte | 1 - 7 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 src/lib/logger/index.ts diff --git a/src/lib/converters/converter.svelte.ts b/src/lib/converters/converter.svelte.ts index 1a1b27f..076b001 100644 --- a/src/lib/converters/converter.svelte.ts +++ b/src/lib/converters/converter.svelte.ts @@ -18,6 +18,7 @@ export class Converter { * @param to The format to convert to. Includes the dot. */ public ready: boolean = $state(false); + public async convert( // eslint-disable-next-line @typescript-eslint/no-unused-vars input: OmitBetterStrict, diff --git a/src/lib/converters/ffmpeg.svelte.ts b/src/lib/converters/ffmpeg.svelte.ts index cdb351d..0ec0852 100644 --- a/src/lib/converters/ffmpeg.svelte.ts +++ b/src/lib/converters/ffmpeg.svelte.ts @@ -3,6 +3,7 @@ import { Converter } from "./converter.svelte"; import type { OmitBetterStrict } from "$lib/types"; import { FFmpeg } from "@ffmpeg/ffmpeg"; import { browser } from "$app/environment"; +import { log } from "$lib/logger"; export class FFmpegConverter extends Converter { private ffmpeg: FFmpeg = null!; @@ -16,7 +17,6 @@ export class FFmpegConverter extends Converter { ".ogg", ".aac", ".m4a", - ".opus", ".wma", ".m4a", ".amr", @@ -27,6 +27,7 @@ export class FFmpegConverter extends Converter { constructor() { super(); + log(["converters", this.name], `created converter`); if (!browser) return; this.ffmpeg = new FFmpeg(); (async () => { diff --git a/src/lib/converters/vips.svelte.ts b/src/lib/converters/vips.svelte.ts index 8abe9f6..58c60e8 100644 --- a/src/lib/converters/vips.svelte.ts +++ b/src/lib/converters/vips.svelte.ts @@ -3,6 +3,7 @@ import { Converter } from "./converter.svelte"; import VipsWorker from "$lib/workers/vips?worker"; import { browser } from "$app/environment"; import type { WorkerMessage, OmitBetterStrict } from "$lib/types"; +import { log } from "$lib/logger"; export class VipsConverter extends Converter { private worker: Worker = browser ? new VipsWorker() : null!; @@ -30,6 +31,7 @@ export class VipsConverter extends Converter { constructor() { super(); + log(["converters", this.name], `created converter`); if (!browser) return; this.worker.onmessage = (e) => { const message: WorkerMessage = e.data; diff --git a/src/lib/logger/index.ts b/src/lib/logger/index.ts new file mode 100644 index 0000000..9cc2063 --- /dev/null +++ b/src/lib/logger/index.ts @@ -0,0 +1,42 @@ +import { browser } from "$app/environment"; + +const randomColorFromStr = (str: string) => { + // generate a pleasant color from a string, using HSL + let hash = 0; + for (let i = 0; i < str.length; i++) { + hash = str.charCodeAt(i) + ((hash << 5) - hash); + } + const h = hash % 360; + return `hsl(${h}, 75%, 71%)`; +}; + +const whiteOrBlack = (hsl: string) => { + // determine if the text should be white or black based on the background color + const [, , l] = hsl + .replace("hsl(", "") + .replace(")", "") + .split(",") + .map((v) => parseInt(v)); + return l > 70 ? "black" : "white"; +}; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const log = (prefix: string | string[], ...args: any[]) => { + const prefixes = Array.isArray(prefix) ? prefix : [prefix]; + if (!browser) + return console.log(prefixes.map((p) => `[${p}]`).join(" "), ...args); + const prefixesWithMeta = prefixes.map((p) => ({ + prefix: p, + bgColor: randomColorFromStr(p), + textColor: whiteOrBlack(randomColorFromStr(p)), + })); + + console.log( + `%c${prefixesWithMeta.map(({ prefix }) => prefix).join(" %c")}`, + ...prefixesWithMeta.map( + ({ bgColor, textColor }, i) => + `color: ${textColor}; background-color: ${bgColor}; margin-left: ${i === 0 ? 0 : -6}px; padding: 0px 4px 0 4px; border-radius: 0px 9999px 9999px 0px;`, + ), + ...args, + ); +}; diff --git a/src/lib/store/index.svelte.ts b/src/lib/store/index.svelte.ts index 8362c15..a0b5904 100644 --- a/src/lib/store/index.svelte.ts +++ b/src/lib/store/index.svelte.ts @@ -21,7 +21,6 @@ class Theme { public dark = $state(false); public toggle = () => { this.dark = !this.dark; - console.log(this.dark); }; } diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts index 5e4a6de..8348af2 100644 --- a/src/routes/+layout.ts +++ b/src/routes/+layout.ts @@ -7,7 +7,9 @@ export const load = ({ data }) => { const themeStr = getCookie("theme"); if (typeof themeStr === "undefined") { theme.dark = window.matchMedia("(prefers-color-scheme: dark)").matches; - setCookie("theme", theme.dark ? "dark" : "light"); + setCookie("theme", theme.dark ? "dark" : "light", { + sameSite: "strict", + }); } else { theme.dark = themeStr === "dark"; } diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 7ffc27b..9eaf053 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -18,7 +18,6 @@ const converter = converters.find((c) => c.supportedFormats.includes(from), ); - console.log(converter); if (!converter) resolve(); const to = converter?.supportedFormats.find((f) => f !== from) ||