factor out ray loading and saving
ci/woodpecker/pr/build Pipeline failed Details

This commit is contained in:
Emerald 2023-10-26 20:29:46 -04:00
parent 70d1af07c7
commit edf9ca2c91
Signed by: emerald
GPG Key ID: 13F7EFB915A0F623
9 changed files with 320 additions and 293 deletions

View File

@ -8,5 +8,5 @@
}
.meta-button {
@apply btn btn-md variant-ringed-surface;
@apply btn btn-md variant-soft-surface border-token border-surface-400-500-token;
}

View File

@ -14,7 +14,6 @@
import { debug, info } from '$lib/logging';
import { loadGif, loadImage } from '$lib/io';
import { keepFocused } from '$lib/state';
import { onMount } from 'svelte';
export let index: number;
let src: string | null;
@ -30,6 +29,7 @@
const frame = $frames[index];
if (!frame) src = null;
else {
debug(frame);
if (frame?.kind === 'still') src = frame.value.toDataURL();
else {
const b = new Blob([new Uint8Array(frame.data)]);
@ -128,7 +128,7 @@
{/if}
<button
class="btn btn-xl p-4 w-24 md:w-32 variant-ghost-primary aspect-square cursor-pointer z-50"
class="btn btn-xl p-4 w-24 md:w-32 variant-soft-primary border-token border-primary-400-500-token aspect-square cursor-pointer z-50"
aria-label="Preview of frame {index + 1}"
on:click={(e) => {

View File

@ -1,11 +1,9 @@
<script lang="ts">
import { Gif } from '$lib/gifler';
import { loadFrame, loadImage, loadRay } from '$lib/io';
import { loadRay } from '$lib/io';
import { debug } from '$lib/logging';
import { keepFocused } from '$lib/state';
import { frames, mode } from '$lib/store';
import { base64ToArrayBuffer } from '$lib/utils';
import Image from 'image-js';
import { mode } from '$lib/store';
import { setLoaded } from '$lib/utils';
let fileLoader: HTMLInputElement;
let files: FileList;
@ -28,41 +26,14 @@
};
const finishLoad = async (data: File | Blob) => {
const ray = await loadRay(data);
const expr = ray?.get_expr(0);
for (let i = 0; i < 4; i++) {
const raw = expr?.get_frame(i);
if (!raw) {
$frames[i] = null;
continue;
}
const image = await loadFrame(raw);
if (image instanceof Image) {
$frames[i] = {
kind: 'still',
value: image
};
} else if (image instanceof Gif) {
$frames[i] = {
kind: 'GIF',
value: image,
data: new Uint8Array(base64ToArrayBuffer(raw))
};
} else {
$frames[i] = null;
}
}
ray?.free();
loadRay(data);
setLoaded(await data.arrayBuffer());
loading = false
};
</script>
{#if mode === 'web'}
<input type="file" class="hidden" bind:this={fileLoader} bind:files on:change={handleWebLoad} />
<input type="file" class="hidden" bind:this={fileLoader} bind:files on:change={handleWebLoad} accept="application/ray,.ray" />
{/if}
<button class="meta-button" on:click={handleLoad}>Load</button>

View File

@ -1,9 +1,8 @@
<script lang="ts">
import { mode } from '$lib/store';
import { getBase64 } from '$lib/utils';
import { Expression, UnpackedRay, save_ray } from '@cathode/cathode-ray';
import { frames } from '$lib/store';
import { setLoaded } from '$lib/utils';
import { onMount } from 'svelte';
import { packRay } from '$lib/io';
let downloader: HTMLAnchorElement | undefined;
@ -12,22 +11,8 @@
});
const saveCurrent = async () => {
// this feels inefficient but we're basically just mapping the current expression to
// wasm memory
const ray = new UnpackedRay();
const expr = new Expression();
for (let i = 0; i < $frames.length; i++) {
const frame = $frames[i];
if (!frame) {
continue;
}
const base64 = await getBase64(frame);
expr.set_frame(i, base64);
}
ray.add_expr(expr);
const data = save_ray(ray);
const data = await packRay();
if(mode === "web"){
const url = URL.createObjectURL(new Blob([data]));
@ -37,10 +22,7 @@
downloader.click();
}
// don't forget to free
ray.free();
setLoaded(data);
};
</script>

View File

@ -1,14 +1,28 @@
import { Image } from 'image-js';
import { mode } from '$lib/store';
import { loadedRay, mode, frames } from '$lib/store';
import gifler, { Gif } from './gifler';
import { load_ray, type UnpackedRay } from '@cathode/cathode-ray';
import { base64ToArrayBuffer } from '$lib/utils';
import { Expression, load_ray, save_ray, UnpackedRay } from '@cathode/cathode-ray';
import { base64ToArrayBuffer, getBase64 } from '$lib/utils';
import { info, debug } from './logging';
import { get } from 'svelte/store';
export const loadLast = async () => {
if (mode === 'web' && loadedRay) {
const data = get(loadedRay);
if (data) await loadRay(new Blob([base64ToArrayBuffer(data)]));
} else if (mode === 'tauri') {
//TODO
}
return null;
};
export const loadFrame = async (raw: string): Promise<Gif | Image | null> => {
const blob = new Blob([base64ToArrayBuffer(raw)]);
try {
return await loadImage(blob);
} catch {
info('Error loading still image, attempting gif');
try {
return await loadGif(blob);
} catch {}
@ -20,19 +34,15 @@ export const loadFrame = async (raw: string): Promise<Gif | Image | null> => {
export const loadImage = async (data: File | Blob): Promise<Image | null> => {
if (mode === 'web') {
return new Promise(async (resolve) => {
const reader = new FileReader();
reader.onload = async () => {
const raw = reader.result as ArrayBuffer | null;
if (!raw) return null;
let img = await Image.load(raw);
if (img.width > 600 || img.height > 400) {
img = img.resize({
width: 600
});
}
resolve(img);
};
reader.readAsArrayBuffer(data);
const raw = await data.arrayBuffer();
if (!raw) return null;
let img = await Image.load(raw);
if (img.width > 600 || img.height > 400) {
img = img.resize({
width: 600
});
}
resolve(img);
});
}
@ -56,7 +66,27 @@ export const loadGif = async (data: File | Blob): Promise<Gif | null> => {
return null;
};
export const loadRay = async (data: File | Blob): Promise<UnpackedRay | null> => {
export const packRay = async () => {
// this feels inefficient but we're basically just mapping the current expression to
// wasm memory
const ray = new UnpackedRay();
const expr = new Expression();
for (const [i, frame] of get(frames).entries()) {
if (!frame) {
continue;
}
const base64 = await getBase64(frame);
expr.set_frame(i, base64);
}
ray.add_expr(expr);
const data = save_ray(ray);
ray.free();
return data;
}
export const getRay = async (data: File | Blob): Promise<UnpackedRay | null> => {
return new Promise((resolve) => {
const reader = new FileReader();
reader.onload = async () => {
@ -69,3 +99,47 @@ export const loadRay = async (data: File | Blob): Promise<UnpackedRay | null> =>
reader.readAsArrayBuffer(data);
});
};
export const loadRay = async (data: File | Blob) => {
const ray = await getRay(data);
const expr = ray?.get_expr(0);
for (let i = 0; i < 4; i++) {
const raw = expr?.get_frame(i);
if (!raw) {
frames.update((v) => {
v[i] = null;
return v;
});
continue;
}
const image = await loadFrame(raw);
if (image instanceof Image) {
frames.update((v) => {
v[i] = {
kind: 'still',
value: image
};
return v;
});
} else if (image instanceof Gif) {
frames.update((v) => {
v[i] = {
kind: 'GIF',
value: image,
data: new Uint8Array(base64ToArrayBuffer(raw))
};
return v;
});
} else {
frames.update((v) => {
v[i] = null;
return v;
});
}
}
ray?.free();
};

View File

@ -4,6 +4,7 @@ import type { Gif } from '$lib/gifler';
import { info } from '$lib/logging';
import { TAURI_MODE } from '$env/static/public';
import { localStorageStore } from '@skeletonlabs/skeleton';
import { loadLast } from './io';
export const mode = TAURI_MODE === 'tauri' ? 'tauri' : 'web';
@ -56,12 +57,9 @@ export class Config {
}
}
export let frames: Writable<Array<FrameData | null>> =
mode === 'web'
? localStorageStore('cathode-frames', [null, null, null, null])
: writable([null, null, null, null]);
export let frames: Writable<Array<FrameData | null>> = writable([null, null, null, null]);
export let config: Writable<Config> =
mode === 'web' ? localStorageStore('cathode-config', new Config()) : writable(new Config());
export let version = writable("");
export let loadedRay: Writable<string | null> | null = mode === 'web' ? localStorageStore('cathode-loaded-ray', null) : null;
info(`Running app in ${mode} mode`);

View File

@ -1,23 +1,27 @@
import type { FrameData } from "./store";
import { loadedRay, type FrameData } from './store';
export function bytesToBase64(bytes: Uint8Array): string {
const binString = String.fromCodePoint(...bytes);
return btoa(binString);
const binString = String.fromCodePoint(...bytes);
return btoa(binString);
}
export function base64ToArrayBuffer(base64: string) {
var binaryString = atob(base64);
var bytes = new Uint8Array(binaryString.length);
for (var i = 0; i < binaryString.length; i++) {
bytes[i] = binaryString.charCodeAt(i);
}
return bytes.buffer;
var binaryString = atob(base64);
var bytes = new Uint8Array(binaryString.length);
for (var i = 0; i < binaryString.length; i++) {
bytes[i] = binaryString.charCodeAt(i);
}
return bytes.buffer;
}
export const getBase64 = async (obj: FrameData) => {
if (obj.kind === "still") {
return await obj.value.toBase64();
} else {
return bytesToBase64(new Uint8Array(obj.data));
}
}
if (obj.kind === 'still') {
return await obj.value.toBase64();
} else {
return bytesToBase64(new Uint8Array(obj.data));
}
};
export const setLoaded = (data: ArrayBufferLike) => {
loadedRay?.set(bytesToBase64(new Uint8Array(data)));
};

View File

@ -21,10 +21,11 @@
import { active, initState, closeThreshold, activationLevel, transparent } from '$lib/state';
import SaveButton from '$lib/components/SaveButton.svelte';
import LoadButton from '$lib/components/LoadButton.svelte';
import { config, frames, version } from '$lib/store';
import { config, frames } from '$lib/store';
import SettingsButton from '$lib/components/SettingsButton.svelte';
import { debug } from '$lib/logging';
import type { LayoutData } from './$types';
import { loadLast } from '$lib/io';
storePopup.set({ computePosition, autoUpdate, flip, shift, offset, arrow });
@ -45,6 +46,7 @@
toast.trigger({ message: 'Error starting audio worker', background: 'variant-ghost-error' });
}
await initState();
await loadLast();
});
onDestroy(() => {

382
yarn.lock
View File

@ -1076,9 +1076,9 @@
eslint-visitor-keys "^3.3.0"
"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1":
version "4.9.1"
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4"
integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==
version "4.10.0"
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63"
integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==
"@eslint/eslintrc@^2.1.2":
version "2.1.2"
@ -1095,10 +1095,10 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
"@eslint/js@8.51.0":
version "8.51.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.51.0.tgz#6d419c240cfb2b66da37df230f7e7eef801c32fa"
integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==
"@eslint/js@8.52.0":
version "8.52.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.52.0.tgz#78fe5f117840f69dc4a353adf9b9cd926353378c"
integrity sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==
"@fastify/busboy@^2.0.0":
version "2.0.0"
@ -1125,12 +1125,12 @@
resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9"
integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==
"@humanwhocodes/config-array@^0.11.11":
version "0.11.11"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844"
integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==
"@humanwhocodes/config-array@^0.11.13":
version "0.11.13"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297"
integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==
dependencies:
"@humanwhocodes/object-schema" "^1.2.1"
"@humanwhocodes/object-schema" "^2.0.1"
debug "^4.1.1"
minimatch "^3.0.5"
@ -1139,10 +1139,10 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
"@humanwhocodes/object-schema@^1.2.1":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
"@humanwhocodes/object-schema@^2.0.1":
version "2.0.1"
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044"
integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==
"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
version "0.3.3"
@ -1292,9 +1292,9 @@
integrity sha512-VUqTfXsxYGugCpMqQv1U0LIdbR3S5nBkMMDmpjGVJyM6Q2jHVMFtdWJCkeHMySc6mZxJ+0eZK3T7IgmUCDrcUQ==
"@sveltejs/kit@^1.20.4":
version "1.25.2"
resolved "https://registry.yarnpkg.com/@sveltejs/kit/-/kit-1.25.2.tgz#ee96320de1573fcb9a7d8c6fae4965beced97a70"
integrity sha512-USuuSpdAPFDiLi58N2Pwd/TG9bcUSPAlzE5iaAXaLyCTWa3l36HDKH6nV5NqBybwfeux1ZwgtIeITLZJDJ6HDg==
version "1.27.1"
resolved "https://registry.yarnpkg.com/@sveltejs/kit/-/kit-1.27.1.tgz#dd691b108e974a2a155ad4a5956848a2332941a4"
integrity sha512-nYkOUJKbeI8fcwvt/cyhTdz6VG4kT6XVprNnzfIwif+IZ8RvxvJuPhPhYjz14ASIcMLpq8xC6D3X4xH3bvWi+Q==
dependencies:
"@sveltejs/vite-plugin-svelte" "^2.4.1"
"@types/cookie" "^0.5.1"
@ -1303,12 +1303,12 @@
esm-env "^1.0.0"
kleur "^4.1.5"
magic-string "^0.30.0"
mime "^3.0.0"
mrmime "^1.0.1"
sade "^1.8.1"
set-cookie-parser "^2.6.0"
sirv "^2.0.2"
tiny-glob "^0.2.9"
undici "~5.25.0"
undici "~5.26.2"
"@sveltejs/vite-plugin-svelte-inspector@^1.0.4":
version "1.0.4"
@ -1438,86 +1438,86 @@
resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-1.5.1.tgz#9074476c4323f71351db624e9711c99277cdfb99"
integrity sha512-6unsZDOdlXTmauU3NhWhn+Cx0rODV+rvNvTdvolE5Kls5ybA6cqndQENDt1+FS0tF7ozCP66jwWoH6a5h90BrA==
"@tauri-apps/cli-darwin-arm64@1.5.4":
version "1.5.4"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.5.4.tgz#ec89ba25d616c351bfa54752edb7b9ab3d74cc8b"
integrity sha512-gbCmzVYYRgyftyheEtTkShvnStJQeN0kQYIUIWVUQiF7bsgHhD4/CfJyPNbwYtdGogtZJtKJEZbIwB9HVMaegA==
"@tauri-apps/cli-darwin-arm64@1.5.6":
version "1.5.6"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.5.6.tgz#0d68eaf6fa1b35197a9d4991ac5377e6085a569a"
integrity sha512-NNvG3XLtciCMsBahbDNUEvq184VZmOveTGOuy0So2R33b/6FDkuWaSgWZsR1mISpOuP034htQYW0VITCLelfqg==
"@tauri-apps/cli-darwin-x64@1.5.4":
version "1.5.4"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.5.4.tgz#378addbeac15e6525e2d1212b0db44cc03f05f20"
integrity sha512-Ysi9URY4F9m+f7ThXAYDfu4oEDMWAWhdaEeaoOI4VcaWXckbZl+8klaF1clm6xW+iOK/bmzKS4SlyGknlhRgQA==
"@tauri-apps/cli-darwin-x64@1.5.6":
version "1.5.6"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.5.6.tgz#a48e1f66b12c33cf6c9c216865f2e9a3ff18a923"
integrity sha512-nkiqmtUQw3N1j4WoVjv81q6zWuZFhBLya/RNGUL94oafORloOZoSY0uTZJAoeieb3Y1YK0rCHSDl02MyV2Fi4A==
"@tauri-apps/cli-linux-arm-gnueabihf@1.5.4":
version "1.5.4"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.5.4.tgz#0150ea69e4a7e8c909bcb0d8b98e113e720a2eb6"
integrity sha512-7tBjl5Fn5CPKvADVvBhA43EM9SWgy0L1IueHooSjJslwo2Ca5Tm+lZfPHnhaGF6uDFZ8RU1YZEcI33rUqEhJYQ==
"@tauri-apps/cli-linux-arm-gnueabihf@1.5.6":
version "1.5.6"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.5.6.tgz#385cd8054be7722cc07acc2d6d86f8e20c6265ef"
integrity sha512-z6SPx+axZexmWXTIVPNs4Tg7FtvdJl9EKxYN6JPjOmDZcqA13iyqWBQal2DA/GMZ1Xqo3vyJf6EoEaKaliymPQ==
"@tauri-apps/cli-linux-arm64-gnu@1.5.4":
version "1.5.4"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.5.4.tgz#5ff4077e27a53e50d57d4cda3f4e0921d88931d0"
integrity sha512-3w3PU1VWcNzvjDblV7WXMB6hGidKL0DNN4UnGMWE+BVSQSMbdd0lfeZ788sl637cwm9xiFHttY6ovmwD7yIWuw==
"@tauri-apps/cli-linux-arm64-gnu@1.5.6":
version "1.5.6"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.5.6.tgz#bd3f8f61637a1073909cb2d663aa0c6e8e036337"
integrity sha512-QuQjMQmpsCbzBrmtQiG4uhnfAbdFx3nzm+9LtqjuZlurc12+Mj5MTgqQ3AOwQedH3f7C+KlvbqD2AdXpwTg7VA==
"@tauri-apps/cli-linux-arm64-musl@1.5.4":
version "1.5.4"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.5.4.tgz#57daa5187974946a600ac727b66dba90c51b3e13"
integrity sha512-yQwAxp5AbR/y/Q1hAxQIRdHCamoTDjEMGRwiQO1qnhpQIGsUAAD92nWvEQJF2fX2YE113mo0LpTya63uRisqyA==
"@tauri-apps/cli-linux-arm64-musl@1.5.6":
version "1.5.6"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.5.6.tgz#77fb4a804b77447bffba725a4b8b62df45f9ff97"
integrity sha512-8j5dH3odweFeom7bRGlfzDApWVOT4jIq8/214Wl+JeiNVehouIBo9lZGeghZBH3XKFRwEvU23i7sRVjuh2s8mg==
"@tauri-apps/cli-linux-x64-gnu@1.5.4":
version "1.5.4"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.5.4.tgz#8e43021fe2d473f82acbe73f841e1aa5b6cfab60"
integrity sha512-iXITFTnKA/UhSUZJaBxM4tHplPzNthIUheGuMhJuUHVdTGLzp+HqvQxMO6/qMVGrptPn9TA/k6SaSh91mF27jQ==
"@tauri-apps/cli-linux-x64-gnu@1.5.6":
version "1.5.6"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.5.6.tgz#e70a6c9dd243c2a3fa1fec69de9ebc9abf4dc795"
integrity sha512-gbFHYHfdEGW0ffk8SigDsoXks6USpilF6wR0nqB/JbWzbzFR/sBuLVNQlJl1RKNakyJHu+lsFxGy0fcTdoX8xA==
"@tauri-apps/cli-linux-x64-musl@1.5.4":
version "1.5.4"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.5.4.tgz#9d64210c7628378b11b2ace5548f7c1484fe8783"
integrity sha512-Kp0d1jXJvlRVJRM0UqRdnUcIqGhuT1fXWo6wXIhKtCUPxaYAaRGwJAj9zZiEfJH2lcgbPW+vLjyr6TAcH/fXiA==
"@tauri-apps/cli-linux-x64-musl@1.5.6":
version "1.5.6"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.5.6.tgz#f25dad778b2da6ab7b2b81f81c0805026d742c33"
integrity sha512-9v688ogoLkeFYQNgqiSErfhTreLUd8B3prIBSYUt+x4+5Kcw91zWvIh+VSxL1n3KCGGsM7cuXhkGPaxwlEh1ug==
"@tauri-apps/cli-win32-arm64-msvc@1.5.4":
version "1.5.4"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-1.5.4.tgz#ae4da7c5dc5d523750d37f2d008a4a06d91f5c7d"
integrity sha512-z5k71KabwZlYf8DetVMDsPPYoCinMx2gOc2vdxY9mC7w0Ovbk0Ff3VLR80M33MpcAonNakjS5QSrzNeLrwT8DQ==
"@tauri-apps/cli-win32-arm64-msvc@1.5.6":
version "1.5.6"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-1.5.6.tgz#47d0f359e04d93c1fd0b527e18a56606f3df9bed"
integrity sha512-DRNDXFNZb6y5IZrw+lhTTA9l4wbzO4TNRBAlHAiXUrH+pRFZ/ZJtv5WEuAj9ocVSahVw2NaK5Yaold4NPAxHog==
"@tauri-apps/cli-win32-ia32-msvc@1.5.4":
version "1.5.4"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.5.4.tgz#1ec7e525e7ea8c54d66a7835a9e5106cb91829fa"
integrity sha512-9uwsBUfD4ee2QhNCCGcG5oVPHBtPxU+ew6j9NfP2B4KvyQVQ6WxkoCTJEMWcpvwefUlWfA/87wbRZQe4RLLCkw==
"@tauri-apps/cli-win32-ia32-msvc@1.5.6":
version "1.5.6"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.5.6.tgz#54c7ec152065e8167068411b82748a25a483d948"
integrity sha512-oUYKNR/IZjF4fsOzRpw0xesl2lOjhsQEyWlgbpT25T83EU113Xgck9UjtI7xemNI/OPCv1tPiaM1e7/ABdg5iA==
"@tauri-apps/cli-win32-x64-msvc@1.5.4":
version "1.5.4"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.5.4.tgz#7ca597e5e322fb367ce75730d5fe628f43ad3088"
integrity sha512-cYrr+AGbt0PEdYqU8PcH6fSVVZNk0PDl4k0+OPf5CHMr878ypqa3dhuVHxSvXccLtFXRltr9xvnSZcqmWLvQMg==
"@tauri-apps/cli-win32-x64-msvc@1.5.6":
version "1.5.6"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.5.6.tgz#963280a4f7001c27d4e4745f302728297c007deb"
integrity sha512-RmEf1os9C8//uq2hbjXi7Vgz9ne7798ZxqemAZdUwo1pv3oLVZSz1/IvZmUHPdy2e6zSeySqWu1D0Y3QRNN+dg==
"@tauri-apps/cli@^1.5.4":
version "1.5.4"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli/-/cli-1.5.4.tgz#bb846a3bf90bf045f566619e5a2d33e030558b81"
integrity sha512-zmEG0z2sij6GcyI97AdvBdlHYrlhdJP7ecOO9JC6hJ0zjLF8AGpUfVWWKAPg/z92xsgGPRUrXY+zGKaxQiUIQw==
version "1.5.6"
resolved "https://registry.yarnpkg.com/@tauri-apps/cli/-/cli-1.5.6.tgz#5011c9dd3a36dc89073fed7d4cb429d38b37862b"
integrity sha512-k4Y19oVCnt7WZb2TnDzLqfs7o98Jq0tUoVMv+JQSzuRDJqaVu2xMBZ8dYplEn+EccdR5SOMyzaLBJWu38TVK1A==
optionalDependencies:
"@tauri-apps/cli-darwin-arm64" "1.5.4"
"@tauri-apps/cli-darwin-x64" "1.5.4"
"@tauri-apps/cli-linux-arm-gnueabihf" "1.5.4"
"@tauri-apps/cli-linux-arm64-gnu" "1.5.4"
"@tauri-apps/cli-linux-arm64-musl" "1.5.4"
"@tauri-apps/cli-linux-x64-gnu" "1.5.4"
"@tauri-apps/cli-linux-x64-musl" "1.5.4"
"@tauri-apps/cli-win32-arm64-msvc" "1.5.4"
"@tauri-apps/cli-win32-ia32-msvc" "1.5.4"
"@tauri-apps/cli-win32-x64-msvc" "1.5.4"
"@tauri-apps/cli-darwin-arm64" "1.5.6"
"@tauri-apps/cli-darwin-x64" "1.5.6"
"@tauri-apps/cli-linux-arm-gnueabihf" "1.5.6"
"@tauri-apps/cli-linux-arm64-gnu" "1.5.6"
"@tauri-apps/cli-linux-arm64-musl" "1.5.6"
"@tauri-apps/cli-linux-x64-gnu" "1.5.6"
"@tauri-apps/cli-linux-x64-musl" "1.5.6"
"@tauri-apps/cli-win32-arm64-msvc" "1.5.6"
"@tauri-apps/cli-win32-ia32-msvc" "1.5.6"
"@tauri-apps/cli-win32-x64-msvc" "1.5.6"
"@types/animejs@^3.1.9":
version "3.1.9"
resolved "https://registry.yarnpkg.com/@types/animejs/-/animejs-3.1.9.tgz#ff4212aad1ed9337e10ed87eed4b606a716f301a"
integrity sha512-SLhmDSGdpbNVt6r8YPutQMPs2+dmJUGuSduGjOzpw3iQF0VtzNCv9vOrA94dnaoVto1apjCADvWBNzBzgFl5QA==
version "3.1.10"
resolved "https://registry.yarnpkg.com/@types/animejs/-/animejs-3.1.10.tgz#7135ba22d77976f2a00ad8a6e0441fd7ae551581"
integrity sha512-nCCSfdw7Ut/XwGSmkfh3nQJXKTnGe5wAhXoTBjMoGkBszbS7RYCxjggmZCAVf8mZJI4LEDTwQ7R6r7krFqPBFA==
"@types/cookie@^0.5.1":
version "0.5.2"
resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.5.2.tgz#9bf9d62c838c85a07c92fdf2334c2c14fd9c59a9"
integrity sha512-DBpRoJGKJZn7RY92dPrgoMew8xCWc2P71beqsjyhEI/Ds9mOyVmBwtekyfhpwFIVt1WrxTonFifiOZ62V8CnNA==
version "0.5.3"
resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.5.3.tgz#3f98076ede5e467783507284d3c19215327fff8f"
integrity sha512-SLg07AS9z1Ab2LU+QxzU8RCmzsja80ywjf/t5oqw+4NSH20gIGlhLOrBDm1L3PBWzPa4+wkgFQVZAjE6Ioj2ug==
"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.1":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.2.tgz#ff02bc3dc8317cd668dfec247b750ba1f1d62453"
integrity sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==
version "1.0.3"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.3.tgz#2be19e759a3dd18c79f9f436bd7363556c1a73dd"
integrity sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==
"@types/estree@0.0.39":
version "0.0.39"
@ -1525,9 +1525,9 @@
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
"@types/json-schema@^7.0.12":
version "7.0.13"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85"
integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==
version "7.0.14"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1"
integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==
"@types/node@*":
version "20.8.9"
@ -1544,19 +1544,19 @@
undici-types "~5.25.1"
"@types/omggif@^1.0.3":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@types/omggif/-/omggif-1.0.3.tgz#69fdf6fd8cb10cb2b223a52629947616f8eccd3b"
integrity sha512-u6WxvVuUkf4S+93ovKXBWSKaxlkCo63l6wBEgphBiIlXEsUcNFrl0nE5NbQA5u2ffvk3xc+3aN/DfDPnmrKRlg==
version "1.0.4"
resolved "https://registry.yarnpkg.com/@types/omggif/-/omggif-1.0.4.tgz#33a505e4fe29ba4b2061f63cb5b43259f396f162"
integrity sha512-UqsRfwXfNW4/jiV7AbUzl6Rf6NGhc8XfvpTEhbnB2E5Hkv6SXZ3URJM5h6IbJ1Cwqbw00MPx5xPH35oz6QphkA==
"@types/pako@^2.0.0":
version "2.0.1"
resolved "https://registry.yarnpkg.com/@types/pako/-/pako-2.0.1.tgz#99e4b7ae6a8560c5928d7f31e89a394e1e6fd169"
integrity sha512-fXhui1fHdLrUR0KEyQsBzqdi3Z+MitnRcpI2eeFJyzaRdqO2miX/BDz2Hh0VdkBbrWprgcQ+ItFmbdKYdbMjvg==
version "2.0.2"
resolved "https://registry.yarnpkg.com/@types/pako/-/pako-2.0.2.tgz#155edb098859d98dd598b805b27ec2bf96cc5354"
integrity sha512-AtTbzIwhvLMTEUPudP3hxUwNK50DoX3amfVJmmL7WQH5iF3Kfqs8pG1tStsewHqmh75ULmjjldKn/B70D6DNcQ==
"@types/pug@^2.0.6":
version "2.0.7"
resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.7.tgz#ffb9239e4da7ea1af27070cad9343049e440993d"
integrity sha512-I469DU0UXNC1aHepwirWhu9YKg5fkxohZD95Ey/5A7lovC+Siu+MCLffva87lnfThaOrw9Vb1DUN5t55oULAAw==
version "2.0.8"
resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.8.tgz#1a85ecb760f7472d9ec3bab19bfe17454c69499d"
integrity sha512-QzhsZ1dMGyJbn/D9V80zp4GIA4J4rfAjCCxc3MP+new0E8dyVdSkR735Lx+n3LIaHNFcjHL5+TbziccuT+fdoQ==
"@types/resolve@1.17.1":
version "1.17.1"
@ -1566,9 +1566,9 @@
"@types/node" "*"
"@types/semver@^7.5.0":
version "7.5.3"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04"
integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==
version "7.5.4"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.4.tgz#0a41252ad431c473158b22f9bfb9a63df7541cff"
integrity sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==
"@types/trusted-types@^2.0.2":
version "2.0.5"
@ -1576,15 +1576,15 @@
integrity sha512-I3pkr8j/6tmQtKV/ZzHtuaqYSQvyjGRKH4go60Rr0IDLlFxuRT5V32uvB1mecM5G1EVAUyF/4r4QZ1GHgz+mxA==
"@typescript-eslint/eslint-plugin@^6.0.0":
version "6.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz#06abe4265e7c82f20ade2dcc0e3403c32d4f148b"
integrity sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==
version "6.9.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.0.tgz#fdb6f3821c0167e3356e9d89c80e8230b2e401f4"
integrity sha512-lgX7F0azQwRPB7t7WAyeHWVfW1YJ9NIgd9mvGhfQpRY56X6AVf8mwM8Wol+0z4liE7XX3QOt8MN1rUKCfSjRIA==
dependencies:
"@eslint-community/regexpp" "^4.5.1"
"@typescript-eslint/scope-manager" "6.8.0"
"@typescript-eslint/type-utils" "6.8.0"
"@typescript-eslint/utils" "6.8.0"
"@typescript-eslint/visitor-keys" "6.8.0"
"@typescript-eslint/scope-manager" "6.9.0"
"@typescript-eslint/type-utils" "6.9.0"
"@typescript-eslint/utils" "6.9.0"
"@typescript-eslint/visitor-keys" "6.9.0"
debug "^4.3.4"
graphemer "^1.4.0"
ignore "^5.2.4"
@ -1593,73 +1593,78 @@
ts-api-utils "^1.0.1"
"@typescript-eslint/parser@^6.0.0":
version "6.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.8.0.tgz#bb2a969d583db242f1ee64467542f8b05c2e28cb"
integrity sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==
version "6.9.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.9.0.tgz#2b402cadeadd3f211c25820e5433413347b27391"
integrity sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw==
dependencies:
"@typescript-eslint/scope-manager" "6.8.0"
"@typescript-eslint/types" "6.8.0"
"@typescript-eslint/typescript-estree" "6.8.0"
"@typescript-eslint/visitor-keys" "6.8.0"
"@typescript-eslint/scope-manager" "6.9.0"
"@typescript-eslint/types" "6.9.0"
"@typescript-eslint/typescript-estree" "6.9.0"
"@typescript-eslint/visitor-keys" "6.9.0"
debug "^4.3.4"
"@typescript-eslint/scope-manager@6.8.0":
version "6.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz#5cac7977385cde068ab30686889dd59879811efd"
integrity sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==
"@typescript-eslint/scope-manager@6.9.0":
version "6.9.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz#2626e9a7fe0e004c3e25f3b986c75f584431134e"
integrity sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==
dependencies:
"@typescript-eslint/types" "6.8.0"
"@typescript-eslint/visitor-keys" "6.8.0"
"@typescript-eslint/types" "6.9.0"
"@typescript-eslint/visitor-keys" "6.9.0"
"@typescript-eslint/type-utils@6.8.0":
version "6.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz#50365e44918ca0fd159844b5d6ea96789731e11f"
integrity sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==
"@typescript-eslint/type-utils@6.9.0":
version "6.9.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.9.0.tgz#23923c8c9677c2ad41457cf8e10a5f2946be1b04"
integrity sha512-XXeahmfbpuhVbhSOROIzJ+b13krFmgtc4GlEuu1WBT+RpyGPIA4Y/eGnXzjbDj5gZLzpAXO/sj+IF/x2GtTMjQ==
dependencies:
"@typescript-eslint/typescript-estree" "6.8.0"
"@typescript-eslint/utils" "6.8.0"
"@typescript-eslint/typescript-estree" "6.9.0"
"@typescript-eslint/utils" "6.9.0"
debug "^4.3.4"
ts-api-utils "^1.0.1"
"@typescript-eslint/types@6.8.0":
version "6.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.8.0.tgz#1ab5d4fe1d613e3f65f6684026ade6b94f7e3ded"
integrity sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==
"@typescript-eslint/types@6.9.0":
version "6.9.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.9.0.tgz#86a0cbe7ac46c0761429f928467ff3d92f841098"
integrity sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==
"@typescript-eslint/typescript-estree@6.8.0":
version "6.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz#9565f15e0cd12f55cf5aa0dfb130a6cb0d436ba1"
integrity sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==
"@typescript-eslint/typescript-estree@6.9.0":
version "6.9.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz#d0601b245be873d8fe49f3737f93f8662c8693d4"
integrity sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==
dependencies:
"@typescript-eslint/types" "6.8.0"
"@typescript-eslint/visitor-keys" "6.8.0"
"@typescript-eslint/types" "6.9.0"
"@typescript-eslint/visitor-keys" "6.9.0"
debug "^4.3.4"
globby "^11.1.0"
is-glob "^4.0.3"
semver "^7.5.4"
ts-api-utils "^1.0.1"
"@typescript-eslint/utils@6.8.0":
version "6.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.8.0.tgz#d42939c2074c6b59844d0982ce26a51d136c4029"
integrity sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==
"@typescript-eslint/utils@6.9.0":
version "6.9.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.9.0.tgz#5bdac8604fca4823f090e4268e681c84d3597c9f"
integrity sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
"@types/json-schema" "^7.0.12"
"@types/semver" "^7.5.0"
"@typescript-eslint/scope-manager" "6.8.0"
"@typescript-eslint/types" "6.8.0"
"@typescript-eslint/typescript-estree" "6.8.0"
"@typescript-eslint/scope-manager" "6.9.0"
"@typescript-eslint/types" "6.9.0"
"@typescript-eslint/typescript-estree" "6.9.0"
semver "^7.5.4"
"@typescript-eslint/visitor-keys@6.8.0":
version "6.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz#cffebed56ae99c45eba901c378a6447b06be58b8"
integrity sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==
"@typescript-eslint/visitor-keys@6.9.0":
version "6.9.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz#cc69421c10c4ac997ed34f453027245988164e80"
integrity sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==
dependencies:
"@typescript-eslint/types" "6.8.0"
"@typescript-eslint/types" "6.9.0"
eslint-visitor-keys "^3.4.1"
"@ungap/structured-clone@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
"@vite-pwa/sveltekit@^0.2.7":
version "0.2.7"
resolved "https://registry.yarnpkg.com/@vite-pwa/sveltekit/-/sveltekit-0.2.7.tgz#d46c758dcfac049dfc003034ef4875a4b54c7405"
@ -1671,9 +1676,9 @@ acorn-jsx@^5.3.2:
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn@^8.10.0, acorn@^8.8.2, acorn@^8.9.0:
version "8.10.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
version "8.11.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.1.tgz#29c6f12c3002d884b6f8baa37089e1917425cd3d"
integrity sha512-IJTNCJMRHfRfb8un89z1QtS0x890C2QUrUxFMK8zy+RizcId6mfnqOf68Bu9YkDgpLYuvCm6aYbwDatXVZPjMQ==
ajv@^6.12.4:
version "6.12.6"
@ -1915,9 +1920,9 @@ camelcase-css@^2.0.1:
integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541:
version "1.0.30001549"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa"
integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA==
version "1.0.30001554"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001554.tgz#ba80d88dff9acbc0cd4b7535fc30e0191c5e2e2a"
integrity sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ==
canny-edge-detector@^1.0.0:
version "1.0.0"
@ -2142,9 +2147,9 @@ ejs@^3.1.6:
jake "^10.8.5"
electron-to-chromium@^1.4.535:
version "1.4.557"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.557.tgz#f3941b569c82b7bb909411855c6ff9bfe1507829"
integrity sha512-6x0zsxyMXpnMJnHrondrD3SuAeKcwij9S+83j2qHAQPXbGTDDfgImzzwgGlzrIcXbHQ42tkG4qA6U860cImNhw==
version "1.4.568"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.568.tgz#6ab444e120dd7fd9c3789eac54d3132b6cfcd0f9"
integrity sha512-3TCOv8+BY6Ltpt1/CmGBMups2IdKOyfEmz4J8yIS4xLSeMm0Rf+psSaxLuswG9qMKt+XbNbmADybtXGpTFlbDg==
es-abstract@^1.22.1:
version "1.22.3"
@ -2293,17 +2298,18 @@ eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
eslint@^8.28.0:
version "8.51.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.51.0.tgz#4a82dae60d209ac89a5cff1604fea978ba4950f3"
integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==
version "8.52.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.52.0.tgz#d0cd4a1fac06427a61ef9242b9353f36ea7062fc"
integrity sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.6.1"
"@eslint/eslintrc" "^2.1.2"
"@eslint/js" "8.51.0"
"@humanwhocodes/config-array" "^0.11.11"
"@eslint/js" "8.52.0"
"@humanwhocodes/config-array" "^0.11.13"
"@humanwhocodes/module-importer" "^1.0.1"
"@nodelib/fs.walk" "^1.2.8"
"@ungap/structured-clone" "^1.2.0"
ajv "^6.12.4"
chalk "^4.0.0"
cross-spawn "^7.0.2"
@ -2731,11 +2737,6 @@ has-tostringtag@^1.0.0:
dependencies:
has-symbols "^1.0.2"
has@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6"
integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==
hasown@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c"
@ -2893,11 +2894,11 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
is-core-module@^2.13.0:
version "2.13.0"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db"
integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==
version "2.13.1"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384"
integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==
dependencies:
has "^1.0.3"
hasown "^2.0.0"
is-date-object@^1.0.1:
version "1.0.5"
@ -3252,7 +3253,7 @@ magic-string@^0.27.0:
dependencies:
"@jridgewell/sourcemap-codec" "^1.4.13"
magic-string@^0.30.0, magic-string@^0.30.3:
magic-string@^0.30.0, magic-string@^0.30.3, magic-string@^0.30.4:
version "0.30.5"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9"
integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==
@ -3287,11 +3288,6 @@ micromatch@^4.0.4, micromatch@^4.0.5:
braces "^3.0.2"
picomatch "^2.3.1"
mime@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7"
integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==
min-indent@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
@ -3419,9 +3415,9 @@ ml-matrix-convolution@0.4.3:
ml-stat "^1.2.0"
ml-matrix@^6.1.2, ml-matrix@^6.10.1, ml-matrix@^6.8.0:
version "6.10.6"
resolved "https://registry.yarnpkg.com/ml-matrix/-/ml-matrix-6.10.6.tgz#8537335e29da4eeb00f87ad313fd555583c65735"
integrity sha512-AZmwducQwGArUWW/C4Sv2g9Nwt08zBjz0V94NrXbMUZsEY820kJ+hUQ0gzNvTgGH1SaeKBq2ZtgWmfC7vFQ4mw==
version "6.10.7"
resolved "https://registry.yarnpkg.com/ml-matrix/-/ml-matrix-6.10.7.tgz#e62f26bcfbf385396daf11d408621bc6a9545a8e"
integrity sha512-v0AciHOXnCEYz8Dq4r5TeA+BFyIabBwng9y/rFVF43mhh3Ho2jDhJ6UZ0IUPRiedmfNcJDmI1j7YFdY30mHAcQ==
dependencies:
is-any-array "^2.0.1"
ml-array-rescale "^1.3.7"
@ -3518,7 +3514,7 @@ mri@^1.1.0:
resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b"
integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==
mrmime@^1.0.0:
mrmime@^1.0.0, mrmime@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27"
integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==
@ -4049,9 +4045,9 @@ sander@^0.5.0:
rimraf "^2.5.2"
sass@^1.69.4:
version "1.69.4"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.4.tgz#10c735f55e3ea0b7742c6efa940bce30e07fbca2"
integrity sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==
version "1.69.5"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.5.tgz#23e18d1c757a35f2e52cc81871060b9ad653dfde"
integrity sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==
dependencies:
chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0"
@ -4324,9 +4320,9 @@ svelte-preprocess@^5.0.4:
strip-indent "^3.0.0"
svelte@^4.0.5:
version "4.2.1"
resolved "https://registry.yarnpkg.com/svelte/-/svelte-4.2.1.tgz#33d603af4da103a5ad988d7fcc992a87421a1e6e"
integrity sha512-LpLqY2Jr7cRxkrTc796/AaaoMLF/1ax7cto8Ot76wrvKQhrPmZ0JgajiWPmg9mTSDqO16SSLiD17r9MsvAPTmw==
version "4.2.2"
resolved "https://registry.yarnpkg.com/svelte/-/svelte-4.2.2.tgz#07d42eefc1bce46e48d2056c5f11dc4cc1e06555"
integrity sha512-My2tytF2e2NnHSpn2M7/3VdXT4JdTglYVUuSuK/mXL2XtulPYbeBfl8Dm1QiaKRn0zoULRnL+EtfZHHP0k4H3A==
dependencies:
"@ampproject/remapping" "^2.2.1"
"@jridgewell/sourcemap-codec" "^1.4.15"
@ -4339,7 +4335,7 @@ svelte@^4.0.5:
estree-walker "^3.0.3"
is-reference "^3.0.1"
locate-character "^3.0.0"
magic-string "^0.30.0"
magic-string "^0.30.4"
periscopic "^3.1.0"
tailwindcss@3.3.3:
@ -4567,10 +4563,10 @@ undici-types@~5.26.4:
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
undici@~5.25.0:
version "5.25.4"
resolved "https://registry.yarnpkg.com/undici/-/undici-5.25.4.tgz#7d8ef81d94f84cd384986271e5e5599b6dff4296"
integrity sha512-450yJxT29qKMf3aoudzFpIciqpx6Pji3hEWaXqXmanbXF58LTAGCKxcJjxMXWu3iG+Mudgo3ZUfDB6YDFd/dAw==
undici@~5.26.2:
version "5.26.5"
resolved "https://registry.yarnpkg.com/undici/-/undici-5.26.5.tgz#f6dc8c565e3cad8c4475b187f51a13e505092838"
integrity sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==
dependencies:
"@fastify/busboy" "^2.0.0"
@ -4673,9 +4669,9 @@ vite-plugin-wasm@^3.2.2:
integrity sha512-cdbBUNR850AEoMd5nvLmnyeq63CSfoP1ctD/L2vLk/5+wsgAPlAVAzUK5nGKWO/jtehNlrSSHLteN+gFQw7VOA==
vite@^4.4.2:
version "4.4.11"
resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.11.tgz#babdb055b08c69cfc4c468072a2e6c9ca62102b0"
integrity sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==
version "4.5.0"
resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.0.tgz#ec406295b4167ac3bc23e26f9c8ff559287cff26"
integrity sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==
dependencies:
esbuild "^0.18.10"
postcss "^8.4.27"