From f5a67a1b349177004a25129542781567456a6e64 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 09:54:54 -0400 Subject: [PATCH 01/34] files --- src/server/transcripts/flagger.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index cf613f831..493bcd894 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -1,7 +1,7 @@ // import { createFFmpeg, fetchFile, type ProgressCallback } from '@ffmpeg.wasm/main'; import { FFmpeg } from '@ffmpeg.wasm/main'; import type { Show } from '@prisma/client'; -import { readFile } from 'fs/promises'; +import { readFile, readdir } from 'fs/promises'; import { logProgress } from './logProgress'; import core from '@ffmpeg.wasm/core-mt'; const flagPaths = ['./audio/wes-flagger.mp3', './audio/scott-flagger.mp3']; @@ -16,6 +16,10 @@ const _dirname = // https://github.com/sveltejs/kit/pull/8441 const wasmPath = join(process.cwd(), wasmPathAb); +// See what files are here.. +const files = readdir(_dirname); +console.log(files); + //twitter.com/theMosaad/status/1714148223147725266 const wasmPathLocal = _dirname + '/../core.wasm'; // await readFile(wasmPathLocal); From 7bb4cd43bc76f3f5265fd0211e5353f4e1941231 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 09:57:57 -0400 Subject: [PATCH 02/34] files --- src/server/transcripts/flagger.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 493bcd894..3428853f3 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -18,6 +18,7 @@ const wasmPath = join(process.cwd(), wasmPathAb); // See what files are here.. const files = readdir(_dirname); +console.log('FILES FOR WES'); console.log(files); //twitter.com/theMosaad/status/1714148223147725266 From 3e47530569f3a35744d27669a91c1c3c3794ce79 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 10:01:38 -0400 Subject: [PATCH 03/34] files promise --- src/server/transcripts/flagger.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 3428853f3..31e7817ba 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -17,7 +17,7 @@ const _dirname = const wasmPath = join(process.cwd(), wasmPathAb); // See what files are here.. -const files = readdir(_dirname); +const files = await readdir(_dirname); console.log('FILES FOR WES'); console.log(files); From 96944139eb039845b445a6e99505d9ca68c6b4d2 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 10:32:55 -0400 Subject: [PATCH 04/34] path --- src/server/transcripts/flagger.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 31e7817ba..c9ed50290 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -14,7 +14,7 @@ const _dirname = // import wasmCore from './core.wasm'; // https://github.com/sveltejs/kit/issues/10594 // https://github.com/sveltejs/kit/pull/8441 -const wasmPath = join(process.cwd(), wasmPathAb); +// const wasmPath = join(process.cwd(), wasmPathAb); // See what files are here.. const files = await readdir(_dirname); @@ -22,7 +22,7 @@ console.log('FILES FOR WES'); console.log(files); //twitter.com/theMosaad/status/1714148223147725266 -const wasmPathLocal = _dirname + '/../core.wasm'; +const wasmPath = _dirname + '/core.wasm'; // await readFile(wasmPathLocal); export type ProgressEvent = { From b77a76cdbcd185c2c3b846598c837d5b8e03b7cc Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 10:55:19 -0400 Subject: [PATCH 05/34] core --- src/server/transcripts/flagger.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index c9ed50290..862ede1e4 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -38,8 +38,6 @@ export type ProgressEvent = { * @param {string} mp3URL - The URL of the show to concat **/ export async function addFlaggerAudio(show: Show): Promise { - console.log(wasmCore); - return; console.log('ADDING FLAGGER AUDIO'); const url = new URL(show.url); // Get the filename From 16861a03904f354d2d64b2d4797d08df5f21a95a Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 10:59:55 -0400 Subject: [PATCH 06/34] assets folder --- src/server/transcripts/flagger.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 862ede1e4..abfabd0cc 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -17,12 +17,12 @@ const _dirname = // const wasmPath = join(process.cwd(), wasmPathAb); // See what files are here.. -const files = await readdir(_dirname); +const files = await readdir(_dirname + '/../assets'); console.log('FILES FOR WES'); console.log(files); //twitter.com/theMosaad/status/1714148223147725266 -const wasmPath = _dirname + '/core.wasm'; +const wasmPath = _dirname + '/../assets/core.wasm'; // await readFile(wasmPathLocal); export type ProgressEvent = { From b0f5967a3690012433824bb8c90bf0999a3fbc21 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 11:04:54 -0400 Subject: [PATCH 07/34] assets folder --- src/server/transcripts/flagger.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index abfabd0cc..8c562e49c 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -17,9 +17,9 @@ const _dirname = // const wasmPath = join(process.cwd(), wasmPathAb); // See what files are here.. -const files = await readdir(_dirname + '/../assets'); -console.log('FILES FOR WES'); -console.log(files); +// const files = await readdir(_dirname + '/../assets'); +// console.log('FILES FOR WES'); +// console.log(files); //twitter.com/theMosaad/status/1714148223147725266 const wasmPath = _dirname + '/../assets/core.wasm'; From c82f5612933f590d10106bc035751d5483d03a27 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 11:07:34 -0400 Subject: [PATCH 08/34] logging --- src/server/transcripts/flagger.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 8c562e49c..94226c4d5 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -23,6 +23,10 @@ const _dirname = //twitter.com/theMosaad/status/1714148223147725266 const wasmPath = _dirname + '/../assets/core.wasm'; +console.log({ + wasmPathAb, + wasmPath +}); // await readFile(wasmPathLocal); export type ProgressEvent = { From 9f2ab25b3a2eb66fa9b11ca3510f6779bd45d88c Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 11:15:44 -0400 Subject: [PATCH 09/34] absolute path --- src/server/transcripts/flagger.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 94226c4d5..2c6b49a40 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -61,7 +61,7 @@ export async function addFlaggerAudio(show: Show): Promise { log: true, core: core, coreOptions: { - wasmPath: wasmPath + wasmPath: wasmPathAb }, logger: (type, ...message) => { logProgress(message.join(' ')); From 0ffc11295df4b9d07156a2110605543b05b89f2c Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 11:23:05 -0400 Subject: [PATCH 10/34] help --- package.json | 2 +- src/server/transcripts/flagger.ts | 23 ++++++++++++----------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 7809c7cdc..0807d364c 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "scripts": { "dev": "vite dev", "start": "pnpm dev", - "build": "pnpm run i-changed-the-schema; vite build", + "build": "vite build && cp -r .svelte-kit/output/server/_app .vercel/output/functions/fn.func", "preview": "vite preview", "test": "svelte-kit sync && playwright test", "test:ui": "svelte-kit sync && playwright test --ui", diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 2c6b49a40..8e30cf4d6 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -8,6 +8,8 @@ const flagPaths = ['./audio/wes-flagger.mp3', './audio/scott-flagger.mp3']; import wasmPathAb from '@ffmpeg.wasm/core-mt/dist/core.wasm?url'; import { dirname, join } from 'node:path'; import { fileURLToPath } from 'node:url'; +import { env } from '$env/dynamic/private'; +import { dev } from '$app/environment'; const _dirname = typeof __dirname !== 'undefined' ? __dirname : dirname(fileURLToPath(import.meta.url)); @@ -22,12 +24,16 @@ const _dirname = // console.log(files); //twitter.com/theMosaad/status/1714148223147725266 -const wasmPath = _dirname + '/../assets/core.wasm'; -console.log({ - wasmPathAb, - wasmPath -}); +// const wasmPath = _dirname + '/../assets/core.wasm'; + // await readFile(wasmPathLocal); +let wasmPath = join(process.cwd(), wasmPathAb); + +// when running `vite preview`, files are served from .svelte-kit +// see https://kit.svelte.dev/docs/building-your-app#preview-your-app +if (!dev && !env.VERCEL) { + wasmPath = join(process.cwd(), '.svelte-kit/output/server', wasmPathAb); +} export type ProgressEvent = { duration?: number; @@ -51,17 +57,12 @@ export async function addFlaggerAudio(show: Show): Promise { // create the output filename const outputFilename = `${show.title}-flagged.${extension}`; console.log(`Downloading #${show.number} - ${show.title}`); - // const { ffMpegProgress } = createProgressLogger(fileName); - // Create ffmpeg instance - // const ffmpeg = createFFmpeg({ - // progress: ffMpegProgress, - // }); console.log('Creating ffmpeg instance'); const ffmpeg = await FFmpeg.create({ log: true, core: core, coreOptions: { - wasmPath: wasmPathAb + wasmPath: wasmPath }, logger: (type, ...message) => { logProgress(message.join(' ')); From 8ec23fd91a8216f07a98a8c92f8bdc93bdf36a83 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 11:39:48 -0400 Subject: [PATCH 11/34] asdfasdf --- src/server/transcripts/flagger.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 8e30cf4d6..2c1e78948 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -18,6 +18,8 @@ const _dirname = // https://github.com/sveltejs/kit/pull/8441 // const wasmPath = join(process.cwd(), wasmPathAb); +// ???? +`${_dirname}/../app/assets/core.wasm`; // See what files are here.. // const files = await readdir(_dirname + '/../assets'); // console.log('FILES FOR WES'); From 1214442d13ae591efce66f8bab4635e49df33721 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 11:42:59 -0400 Subject: [PATCH 12/34] asdfasdf --- src/server/transcripts/flagger.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 2c1e78948..2c69a6efe 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -33,9 +33,11 @@ let wasmPath = join(process.cwd(), wasmPathAb); // when running `vite preview`, files are served from .svelte-kit // see https://kit.svelte.dev/docs/building-your-app#preview-your-app -if (!dev && !env.VERCEL) { - wasmPath = join(process.cwd(), '.svelte-kit/output/server', wasmPathAb); -} +// if (!dev && !env.VERCEL) { +// wasmPath = join(process.cwd(), '.svelte-kit/output/server', wasmPathAb); +// } + +wasmPath = `${_dirname}/../app/assets/core.wasm`; export type ProgressEvent = { duration?: number; From e87bb7ec7a1db85cf280b197ec082b57ad89f401 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 12:11:11 -0400 Subject: [PATCH 13/34] asdfasdf --- src/server/transcripts/flagger.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 2c69a6efe..506a7c3a5 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -26,10 +26,11 @@ const _dirname = // console.log(files); //twitter.com/theMosaad/status/1714148223147725266 -// const wasmPath = _dirname + '/../assets/core.wasm'; +// const wasmPath = `${_dirname}/core.wasm`; // await readFile(wasmPathLocal); -let wasmPath = join(process.cwd(), wasmPathAb); +// let wasmPath = join(process.cwd(), wasmPathAb); +const wasmPath = join(process.cwd(), 'src/server/transcripts/core.wasm'); // when running `vite preview`, files are served from .svelte-kit // see https://kit.svelte.dev/docs/building-your-app#preview-your-app @@ -37,8 +38,6 @@ let wasmPath = join(process.cwd(), wasmPathAb); // wasmPath = join(process.cwd(), '.svelte-kit/output/server', wasmPathAb); // } -wasmPath = `${_dirname}/../app/assets/core.wasm`; - export type ProgressEvent = { duration?: number; ratio?: number; From 018c29c52c7dd9aacf75b5579d0e175269459c4d Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 12:15:42 -0400 Subject: [PATCH 14/34] try require --- src/server/transcripts/flagger.ts | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 506a7c3a5..25ca87503 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -5,12 +5,16 @@ import { readFile, readdir } from 'fs/promises'; import { logProgress } from './logProgress'; import core from '@ffmpeg.wasm/core-mt'; const flagPaths = ['./audio/wes-flagger.mp3', './audio/scott-flagger.mp3']; +import { createRequire } from 'module'; +const require = createRequire(import.meta.url); import wasmPathAb from '@ffmpeg.wasm/core-mt/dist/core.wasm?url'; import { dirname, join } from 'node:path'; import { fileURLToPath } from 'node:url'; import { env } from '$env/dynamic/private'; import { dev } from '$app/environment'; +const wasmPath = require('@ffmpeg.wasm/core-mt/dist/core.wasm?url'); + const _dirname = typeof __dirname !== 'undefined' ? __dirname : dirname(fileURLToPath(import.meta.url)); // import wasmCore from './core.wasm'; @@ -18,25 +22,7 @@ const _dirname = // https://github.com/sveltejs/kit/pull/8441 // const wasmPath = join(process.cwd(), wasmPathAb); -// ???? -`${_dirname}/../app/assets/core.wasm`; -// See what files are here.. -// const files = await readdir(_dirname + '/../assets'); -// console.log('FILES FOR WES'); -// console.log(files); - -//twitter.com/theMosaad/status/1714148223147725266 -// const wasmPath = `${_dirname}/core.wasm`; - -// await readFile(wasmPathLocal); -// let wasmPath = join(process.cwd(), wasmPathAb); -const wasmPath = join(process.cwd(), 'src/server/transcripts/core.wasm'); - -// when running `vite preview`, files are served from .svelte-kit -// see https://kit.svelte.dev/docs/building-your-app#preview-your-app -// if (!dev && !env.VERCEL) { -// wasmPath = join(process.cwd(), '.svelte-kit/output/server', wasmPathAb); -// } +// const wasmPath = join(process.cwd(), 'src/server/transcripts/core.wasm'); export type ProgressEvent = { duration?: number; From 85fa45b95d6dc75a54c4fe35d4978ea26a5d7f03 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 12:21:16 -0400 Subject: [PATCH 15/34] waves --- src/server/transcripts/flagger.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 25ca87503..a6a4bdc95 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -5,16 +5,12 @@ import { readFile, readdir } from 'fs/promises'; import { logProgress } from './logProgress'; import core from '@ffmpeg.wasm/core-mt'; const flagPaths = ['./audio/wes-flagger.mp3', './audio/scott-flagger.mp3']; -import { createRequire } from 'module'; -const require = createRequire(import.meta.url); import wasmPathAb from '@ffmpeg.wasm/core-mt/dist/core.wasm?url'; import { dirname, join } from 'node:path'; import { fileURLToPath } from 'node:url'; import { env } from '$env/dynamic/private'; import { dev } from '$app/environment'; -const wasmPath = require('@ffmpeg.wasm/core-mt/dist/core.wasm?url'); - const _dirname = typeof __dirname !== 'undefined' ? __dirname : dirname(fileURLToPath(import.meta.url)); // import wasmCore from './core.wasm'; @@ -22,7 +18,12 @@ const _dirname = // https://github.com/sveltejs/kit/pull/8441 // const wasmPath = join(process.cwd(), wasmPathAb); -// const wasmPath = join(process.cwd(), 'src/server/transcripts/core.wasm'); +const wasmPath = `${_dirname}/core.wasm`; + +// Lets try with a file from the assets dir +import waves from '$assets/waves.svg'; + +console.log({ waves }); export type ProgressEvent = { duration?: number; @@ -37,6 +38,10 @@ export type ProgressEvent = { * @param {string} mp3URL - The URL of the show to concat **/ export async function addFlaggerAudio(show: Show): Promise { + console.log(`Waves: ${waves}`); + const wavesSVG = await readFile(waves); + console.log(wavesSVG); + console.log('ADDING FLAGGER AUDIO'); const url = new URL(show.url); // Get the filename From 2bc14254b120fd1ee606ac0b3eb7dca53d746c48 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 12:24:14 -0400 Subject: [PATCH 16/34] ewavesasdfsadf --- src/server/transcripts/flagger.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index a6a4bdc95..de49f0838 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -39,8 +39,8 @@ export type ProgressEvent = { **/ export async function addFlaggerAudio(show: Show): Promise { console.log(`Waves: ${waves}`); - const wavesSVG = await readFile(waves); - console.log(wavesSVG); + const wavesSVG = await readFile(waves, 'utf-8'); + console.log({ wavesSVG }); console.log('ADDING FLAGGER AUDIO'); const url = new URL(show.url); From 19ab1df68174f7559d259257a4af3f0ab45ce18d Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 12:28:18 -0400 Subject: [PATCH 17/34] asdfasdF --- src/server/transcripts/flagger.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index de49f0838..55fa2a2ea 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -20,9 +20,6 @@ const _dirname = const wasmPath = `${_dirname}/core.wasm`; -// Lets try with a file from the assets dir -import waves from '$assets/waves.svg'; - console.log({ waves }); export type ProgressEvent = { @@ -38,6 +35,7 @@ export type ProgressEvent = { * @param {string} mp3URL - The URL of the show to concat **/ export async function addFlaggerAudio(show: Show): Promise { + const waves = join(process.cwd(), 'src', 'assets', 'waves.svg'); console.log(`Waves: ${waves}`); const wavesSVG = await readFile(waves, 'utf-8'); console.log({ wavesSVG }); From 4e1e98930edd64c1da4be92937cfe1bcdd07458c Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 12:29:44 -0400 Subject: [PATCH 18/34] asdfasdF --- src/server/transcripts/flagger.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 55fa2a2ea..5a6b1dc4c 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -20,8 +20,6 @@ const _dirname = const wasmPath = `${_dirname}/core.wasm`; -console.log({ waves }); - export type ProgressEvent = { duration?: number; ratio?: number; From 39b8736cf0dc1fafce03d0cb946723909f3d821a Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 13:10:07 -0400 Subject: [PATCH 19/34] why --- package.json | 8 +- pnpm-lock.yaml | 780 +++++++++++++++++++++++++++++++++++++++-- why_do_i_need_this.mjs | 16 + 3 files changed, 780 insertions(+), 24 deletions(-) create mode 100644 why_do_i_need_this.mjs diff --git a/package.json b/package.json index 0807d364c..0d30a6547 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,9 @@ "scripts": { "dev": "vite dev", "start": "pnpm dev", - "build": "vite build && cp -r .svelte-kit/output/server/_app .vercel/output/functions/fn.func", + "copy-files": "zx ./why_do_i_need_this.mjs", + "build": "run-s i-changed-the-schema build:svelte copy-files", + "build:svelte": "vite build", "preview": "vite preview", "test": "svelte-kit sync && playwright test", "test:ui": "svelte-kit sync && playwright test --ui", @@ -75,6 +77,7 @@ "gray-matter": "^4.0.3", "js-cookie": "^3.0.5", "media-chrome": "^1.4.3", + "npm-run-all": "^4.1.5", "openai": "^3.3.0", "puppeteer-core": "^21.3.8", "rehype-highlight": "^7.0.0", @@ -90,7 +93,8 @@ "sveltekit-search-params": "^1.0.15", "ts-node": "^10.9.1", "unified": "^11.0.3", - "waait": "^1.0.5" + "waait": "^1.0.5", + "zx": "^7.2.3" }, "prisma": { "seed": "node --loader ts-node/esm prisma/seed.ts" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 38acdbcb5..82fa1b166 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,9 +1,5 @@ lockfileVersion: '6.0' -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - dependencies: '@anthropic-ai/sdk': specifier: ^0.6.2 @@ -53,6 +49,9 @@ dependencies: media-chrome: specifier: ^1.4.3 version: 1.4.3 + npm-run-all: + specifier: ^4.1.5 + version: 4.1.5 openai: specifier: ^3.3.0 version: 3.3.0 @@ -101,6 +100,9 @@ dependencies: waait: specifier: ^1.0.5 version: 1.0.5 + zx: + specifier: ^7.2.3 + version: 7.2.3 devDependencies: '@playwright/test': @@ -937,12 +939,10 @@ packages: dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - dev: true /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - dev: true /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} @@ -950,7 +950,6 @@ packages: dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - dev: true /@playwright/test@1.38.1: resolution: {integrity: sha512-NqRp8XMwj3AK+zKLbZShl0r/9wKgzqI/527bkptKXomtuo+dOjU9NdMASQ8DNC9z9zLOMbG53T4eihYr3XR+BQ==} @@ -1448,6 +1447,13 @@ packages: /@types/estree@1.0.2: resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==} + /@types/fs-extra@11.0.2: + resolution: {integrity: sha512-c0hrgAOVYr21EX8J0jBMXGLMgJqVf/v6yxi0dLaJboW9aQPh16Id+z6w2Tx1hm+piJOLv8xPfVKZCLfjPw/IMQ==} + dependencies: + '@types/jsonfile': 6.1.2 + '@types/node': 20.8.4 + dev: false + /@types/hast@3.0.1: resolution: {integrity: sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==} dependencies: @@ -1462,12 +1468,22 @@ packages: resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} dev: true + /@types/jsonfile@6.1.2: + resolution: {integrity: sha512-8t92P+oeW4d/CRQfJaSqEwXujrhH4OEeHRjGU3v1Q8mUS8GPF3yiX26sw4svv6faL2HfBtGTe2xWIoVgN3dy9w==} + dependencies: + '@types/node': 20.8.4 + dev: false + /@types/mdast@4.0.0: resolution: {integrity: sha512-YLeG8CujC9adtj/kuDzq1N4tCDYKoZ5l/bnjq8d74+t/3q/tHquJOJKUQXJrLCflOHpKjXgcI/a929gpmLOEng==} dependencies: '@types/unist': 3.0.0 dev: false + /@types/minimist@1.2.4: + resolution: {integrity: sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==} + dev: false + /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: false @@ -1488,6 +1504,10 @@ packages: dependencies: undici-types: 5.25.3 + /@types/ps-tree@1.1.4: + resolution: {integrity: sha512-CJyu2BqU/aZN/s8Ili3jiMctqXfTjCaWXirEcjRD8y1lUQZJ8eNohnal8+LXeWFs1VbdAOrCIdgATFsv+lnQ5Q==} + dev: false + /@types/pug@2.0.7: resolution: {integrity: sha512-I469DU0UXNC1aHepwirWhu9YKg5fkxohZD95Ey/5A7lovC+Siu+MCLffva87lnfThaOrw9Vb1DUN5t55oULAAw==} dev: true @@ -1500,6 +1520,10 @@ packages: resolution: {integrity: sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==} dev: false + /@types/which@3.0.0: + resolution: {integrity: sha512-ASCxdbsrwNfSMXALlC3Decif9rwDMu+80KGp5zI2RLRotfMsTv7fHL8W8VDp24wymzDyIFudhUeSCugrgRFfHQ==} + dev: false + /@types/yauzl@2.10.1: resolution: {integrity: sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw==} requiresBuild: true @@ -1749,6 +1773,13 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: false + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -1785,11 +1816,31 @@ packages: dependencies: dequal: 2.0.3 + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.2 + is-array-buffer: 3.0.2 + dev: false + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} dev: true + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + get-intrinsic: 1.2.1 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: false + /assert@2.1.0: resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} dependencies: @@ -1978,6 +2029,15 @@ packages: type-detect: 4.0.8 dev: true + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: false + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -1986,6 +2046,11 @@ packages: supports-color: 7.2.0 dev: true + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: false + /character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} dev: false @@ -2050,12 +2115,22 @@ packages: estree-walker: 3.0.3 periscopic: 3.1.0 + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: false + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: false + /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -2093,6 +2168,17 @@ packages: - encoding dev: false + /cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.2 + shebang-command: 1.2.0 + which: 1.3.1 + dev: false + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -2175,6 +2261,11 @@ packages: hasBin: true dev: true + /data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + dev: false + /data-uri-to-buffer@6.0.1: resolution: {integrity: sha512-MZd3VlchQkp8rdend6vrx7MmVDJzSNTBvghvKjirLkD+WTChA3KUf0jkE68Q4UyctNqI11zZO9/x2Yx+ub5Cvg==} engines: {node: '>= 14'} @@ -2298,7 +2389,6 @@ packages: engines: {node: '>=8'} dependencies: path-type: 4.0.0 - dev: true /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} @@ -2307,6 +2397,10 @@ packages: esutils: 2.0.3 dev: true + /duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: false + /electron-to-chromium@1.4.548: resolution: {integrity: sha512-R77KD6mXv37DOyKLN/eW1rGS61N6yHOfapNSX9w+y9DdPG83l9Gkuv7qkCFZ4Ta4JPhrjgQfYbv4Y3TnM1Hi2Q==} dev: true @@ -2330,6 +2424,75 @@ packages: engines: {node: '>=0.12'} dev: false + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: false + + /es-abstract@1.22.2: + resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.1 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.12 + is-weakref: 1.0.2 + object-inspect: 1.13.0 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.0.1 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.11 + dev: false + + /es-set-tostringtag@2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.3 + has-tostringtag: 1.0.0 + dev: false + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: false + /es6-promise@3.3.1: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} @@ -2370,6 +2533,11 @@ packages: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} dev: true + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: false + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -2533,6 +2701,18 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + /event-stream@3.3.4: + resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} + dependencies: + duplexer: 0.1.2 + from: 0.1.7 + map-stream: 0.1.0 + pause-stream: 0.0.11 + split: 0.3.3 + stream-combiner: 0.0.4 + through: 2.3.8 + dev: false + /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} @@ -2580,7 +2760,6 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 - dev: true /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -2598,7 +2777,6 @@ packages: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 - dev: true /fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} @@ -2606,6 +2784,14 @@ packages: pend: 1.2.0 dev: false + /fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.2.1 + dev: false + /fflate@0.7.4: resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==} dev: true @@ -2684,10 +2870,30 @@ packages: web-streams-polyfill: 4.0.0-beta.3 dev: false + /formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: false + /fraction.js@4.3.6: resolution: {integrity: sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==} dev: true + /from@0.1.7: + resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} + dev: false + + /fs-extra@11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: false + /fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} @@ -2718,6 +2924,25 @@ packages: /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + functions-have-names: 1.2.3 + dev: false + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: false + + /fx@30.2.0: + resolution: {integrity: sha512-rIYQBmx85Jfhd3pkSw06YPgvSvfTi022ZXTeFDkcCZGCs5nt3sjqFBGtcMFe1TR2S00RDz63be0ab5mhCiOLBw==} + hasBin: true + dev: false + /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -2743,6 +2968,14 @@ packages: pump: 3.0.0 dev: false + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + dev: false + /get-uri@6.0.2: resolution: {integrity: sha512-5KLucCJobh8vBY1K07EFV4+cPZH3mrV9YeAruUseCQKHB58SGjjT2l9/eA9LD082IiuMjSlFJEcdJ27TXvbZNw==} engines: {node: '>= 14'} @@ -2795,6 +3028,13 @@ packages: type-fest: 0.20.2 dev: true + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + dev: false + /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} @@ -2810,6 +3050,17 @@ packages: slash: 3.0.0 dev: true + /globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.1 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 4.0.0 + dev: false + /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} @@ -2840,6 +3091,15 @@ packages: strip-bom-string: 1.0.0 dev: false + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: false + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: false + /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -2981,6 +3241,10 @@ packages: engines: {node: '>=12.0.0'} dev: false + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: false + /html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} dev: false @@ -3028,7 +3292,6 @@ packages: /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} - dev: true /immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} @@ -3060,6 +3323,15 @@ packages: /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + /internal-slot@1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.3 + side-channel: 1.0.4 + dev: false + /ip@1.1.8: resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} dev: false @@ -3076,12 +3348,38 @@ packages: has-tostringtag: 1.0.0 dev: false + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + dev: false + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: false + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: false + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + /is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} dev: false @@ -3095,7 +3393,13 @@ packages: resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} dependencies: has: 1.0.3 - dev: true + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} @@ -3132,6 +3436,18 @@ packages: define-properties: 1.2.1 dev: false + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: false + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -3151,6 +3467,34 @@ packages: dependencies: '@types/estree': 1.0.2 + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 + dev: false + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false + /is-typed-array@1.1.12: resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} engines: {node: '>= 0.4'} @@ -3158,6 +3502,16 @@ packages: which-typed-array: 1.1.11 dev: false + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + dev: false + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: false + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -3185,6 +3539,10 @@ packages: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + dev: false + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true @@ -3203,6 +3561,14 @@ packages: graceful-fs: 4.2.11 dev: false + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 + dev: false + /keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: @@ -3248,6 +3614,16 @@ packages: unicode-trie: 2.0.0 dev: true + /load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + dev: false + /local-pkg@0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} @@ -3340,6 +3716,10 @@ packages: /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + /map-stream@0.1.0: + resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} + dev: false + /markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} dev: false @@ -3495,10 +3875,14 @@ packages: resolution: {integrity: sha512-VpFqCOu2FLULW6TX4sluo44AolJXryHxr85UBdO+IuOltgYPuf7Lgp1F3OqJeRIeO8874d5mri/6xmI22CO9yA==} dev: false + /memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + dev: false + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - dev: true /micromark-core-commonmark@2.0.0: resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} @@ -3753,7 +4137,6 @@ packages: dependencies: braces: 3.0.2 picomatch: 2.3.1 - dev: true /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} @@ -3857,6 +4240,10 @@ packages: engines: {node: '>= 0.4.0'} dev: false + /nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + dev: false + /node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -3874,6 +4261,15 @@ packages: whatwg-url: 5.0.0 dev: false + /node-fetch@3.3.1: + resolution: {integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: false + /node-gyp-build@4.6.1: resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==} hasBin: true @@ -3883,6 +4279,15 @@ packages: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} dev: true + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.6 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + dev: false + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -3892,6 +4297,26 @@ packages: engines: {node: '>=0.10.0'} dev: true + /npm-run-all@4.1.5: + resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} + engines: {node: '>= 4'} + hasBin: true + dependencies: + ansi-styles: 3.2.1 + chalk: 2.4.2 + cross-spawn: 6.0.5 + memorystream: 0.3.1 + minimatch: 3.1.2 + pidtree: 0.3.1 + read-pkg: 3.0.0 + shell-quote: 1.8.1 + string.prototype.padend: 3.1.5 + dev: false + + /object-inspect@1.13.0: + resolution: {integrity: sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==} + dev: false + /object-is@1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} @@ -4003,6 +4428,14 @@ packages: hex-rgb: 4.3.0 dev: true + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: false + /parse-nested-form-data@1.0.0(@remix-run/web-file@3.1.0): resolution: {integrity: sha512-lIeGMds1l6h6YXxhmcD4aD72xwFAqfDjuzh9dUMyS4h5WhimOfhmfeDiT3KZhqpj+XgaEyen+X9Ks9Y3+Rp5+g==} peerDependencies: @@ -4030,6 +4463,11 @@ packages: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + /path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + dev: false + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -4037,7 +4475,6 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true /path-scurry@1.10.1: resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} @@ -4047,10 +4484,16 @@ packages: minipass: 7.0.4 dev: false + /path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + dependencies: + pify: 3.0.0 + dev: false + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - dev: true /pathe@1.1.1: resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} @@ -4060,6 +4503,12 @@ packages: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true + /pause-stream@0.0.11: + resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} + dependencies: + through: 2.3.8 + dev: false + /pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: false @@ -4078,11 +4527,22 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + /pidtree@0.3.1: + resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} + engines: {node: '>=0.10'} + hasBin: true + dev: false + /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} dev: true + /pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: false + /pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: @@ -4595,6 +5055,14 @@ packages: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: false + /ps-tree@1.2.0: + resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} + engines: {node: '>= 0.10'} + hasBin: true + dependencies: + event-stream: 3.3.4 + dev: false + /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} dependencies: @@ -4626,7 +5094,6 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true /queue-tick@1.0.1: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} @@ -4642,6 +5109,15 @@ packages: pify: 2.3.0 dev: true + /read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + dev: false + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -4663,6 +5139,15 @@ packages: resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} dev: false + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + set-function-name: 2.0.1 + dev: false + /rehype-highlight@7.0.0: resolution: {integrity: sha512-QtobgRgYoQaK6p1eSr2SD1i61f7bjF2kZHAQHxeCHAuJf7ZUDMvQ7owDq9YTkmar5m5TSUol+2D3bp3KfJf/oA==} dependencies: @@ -4748,12 +5233,10 @@ packages: is-core-module: 2.13.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true /rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} @@ -4779,7 +5262,6 @@ packages: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - dev: true /sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} @@ -4787,6 +5269,24 @@ packages: dependencies: mri: 1.2.0 + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: false + + /safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-regex: 1.1.4 + dev: false + /sander@0.5.1: resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} dependencies: @@ -4825,6 +5325,11 @@ packages: kind-of: 6.0.3 dev: false + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: false + /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} @@ -4836,6 +5341,22 @@ packages: /set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.0 + dev: false + + /shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + dependencies: + shebang-regex: 1.0.0 + dev: false + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -4843,11 +5364,28 @@ packages: shebang-regex: 3.0.0 dev: true + /shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + dev: false + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} dev: true + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: false + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + object-inspect: 1.13.0 + dev: false + /siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} dev: true @@ -4874,6 +5412,11 @@ packages: engines: {node: '>=8'} dev: true + /slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: false + /smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} @@ -4920,11 +5463,39 @@ packages: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} dev: false + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.16 + dev: false + + /spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: false + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.16 + dev: false + + /spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} + dev: false + /speakingurl@14.0.1: resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} engines: {node: '>=0.10.0'} dev: false + /split@0.3.3: + resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} + dependencies: + through: 2.3.8 + dev: false + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: false @@ -4937,6 +5508,12 @@ packages: resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} dev: true + /stream-combiner@0.0.4: + resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} + dependencies: + duplexer: 0.1.2 + dev: false + /streamx@2.15.1: resolution: {integrity: sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==} dependencies: @@ -4957,6 +5534,40 @@ packages: resolution: {integrity: sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==} dev: true + /string.prototype.padend@3.1.5: + resolution: {integrity: sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + dev: false + + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + dev: false + + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + dev: false + + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + dev: false + /stringify-entities@4.0.3: resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} dependencies: @@ -4975,6 +5586,11 @@ packages: engines: {node: '>=0.10.0'} dev: false + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: false + /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -4993,6 +5609,13 @@ packages: acorn: 8.10.0 dev: true + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: false + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -5003,7 +5626,6 @@ packages: /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - dev: true /svelte-check@3.5.2(postcss-load-config@4.0.1)(postcss@8.4.31)(svelte@4.2.1): resolution: {integrity: sha512-5a/YWbiH4c+AqAUP+0VneiV5bP8YOk9JL3jwvN+k2PEPLgpu85bjQc5eE67+eIZBBwUEJzmO3I92OqKcqbp3fw==} @@ -5294,6 +5916,44 @@ packages: engines: {node: '>=10'} dev: true + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + dev: false + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: false + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: false + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.12 + dev: false + /typescript@5.2.2: resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} @@ -5307,6 +5967,15 @@ packages: resolution: {integrity: sha512-qh4mBffhlkiXwDAOxvSGxhL0QEQsTbnP9BozOK3OYPEGvPvdWzvAUaXNtUSMdNsKDtuyjEbyVUPFZ52SSLhLqw==} dev: true + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: false + /unbzip2-stream@1.4.3: resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} dependencies: @@ -5387,6 +6056,11 @@ packages: engines: {node: '>= 4.0.0'} dev: false + /universalify@2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + dev: false + /unplugin@1.0.1: resolution: {integrity: sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==} dependencies: @@ -5442,6 +6116,13 @@ packages: /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + dev: false + /vfile-location@5.0.2: resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} dependencies: @@ -5635,6 +6316,11 @@ packages: resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} dev: false + /webpod@0.0.2: + resolution: {integrity: sha512-cSwwQIeg8v4i3p4ajHhwgR7N6VyxAf+KYSSsY6Pd3aETE+xEU4vbitz7qQkB0I321xnhDdgtxuiSfk5r/FVtjg==} + hasBin: true + dev: false + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: @@ -5642,6 +6328,16 @@ packages: webidl-conversions: 3.0.1 dev: false + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: false + /which-typed-array@1.1.11: resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} engines: {node: '>= 0.4'} @@ -5653,6 +6349,13 @@ packages: has-tostringtag: 1.0.0 dev: false + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: false + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -5660,6 +6363,14 @@ packages: dependencies: isexe: 2.0.0 + /which@3.0.1: + resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: false + /why-is-node-running@2.2.2: resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} engines: {node: '>=8'} @@ -5727,7 +6438,6 @@ packages: /yaml@2.3.2: resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} engines: {node: '>= 14'} - dev: true /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} @@ -5774,3 +6484,29 @@ packages: /zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} dev: false + + /zx@7.2.3: + resolution: {integrity: sha512-QODu38nLlYXg/B/Gw7ZKiZrvPkEsjPN3LQ5JFXM7h0JvwhEdPNNl+4Ao1y4+o3CLNiDUNcwzQYZ4/Ko7kKzCMA==} + engines: {node: '>= 16.0.0'} + hasBin: true + dependencies: + '@types/fs-extra': 11.0.2 + '@types/minimist': 1.2.4 + '@types/node': 18.18.4 + '@types/ps-tree': 1.1.4 + '@types/which': 3.0.0 + chalk: 5.3.0 + fs-extra: 11.1.1 + fx: 30.2.0 + globby: 13.2.2 + minimist: 1.2.8 + node-fetch: 3.3.1 + ps-tree: 1.2.0 + webpod: 0.0.2 + which: 3.0.1 + yaml: 2.3.2 + dev: false + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false diff --git a/why_do_i_need_this.mjs b/why_do_i_need_this.mjs new file mode 100644 index 000000000..d300ada5e --- /dev/null +++ b/why_do_i_need_this.mjs @@ -0,0 +1,16 @@ +#!zx + +const LOCAL_BUILD_PATH = '.svelte-kit/output/server/'; +const VERCEL_BUILD_BASE_PATH = '.vercel/output/functions'; + +const vercelFuncDirs = (await $`ls -1d ${VERCEL_BUILD_BASE_PATH}/*.func`).stdout + .split('\n') + .map((v) => v.trim()) + .filter((v) => v !== ''); + +const outputDirs = [...vercelFuncDirs, LOCAL_BUILD_PATH]; + +for (const outputDir of outputDirs) { + await $`copyfiles -u3 -e '**/*.ts' "src/lib/og-image/*" ${outputDir}`; + await $`cp node_modules/@dimfeld/create-social-card-wasm/create_social_card_wasm_bg.wasm ${outputDir}`; +} From 8c1c06c332bde3675b417cc882107be84b8b1080 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 13:11:46 -0400 Subject: [PATCH 20/34] wasm path --- why_do_i_need_this.mjs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/why_do_i_need_this.mjs b/why_do_i_need_this.mjs index d300ada5e..1e9c81fa7 100644 --- a/why_do_i_need_this.mjs +++ b/why_do_i_need_this.mjs @@ -11,6 +11,5 @@ const vercelFuncDirs = (await $`ls -1d ${VERCEL_BUILD_BASE_PATH}/*.func`).stdout const outputDirs = [...vercelFuncDirs, LOCAL_BUILD_PATH]; for (const outputDir of outputDirs) { - await $`copyfiles -u3 -e '**/*.ts' "src/lib/og-image/*" ${outputDir}`; - await $`cp node_modules/@dimfeld/create-social-card-wasm/create_social_card_wasm_bg.wasm ${outputDir}`; + await $`cp node_modules/@ffmpeg.wasm/core-mt/dist/core.wasm ${outputDir}`; } From cd1ecbd3992874459102fff9197d75dc17c7ee38 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 13:13:13 -0400 Subject: [PATCH 21/34] remove waves --- src/server/transcripts/flagger.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 5a6b1dc4c..8fe702cb8 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -33,11 +33,6 @@ export type ProgressEvent = { * @param {string} mp3URL - The URL of the show to concat **/ export async function addFlaggerAudio(show: Show): Promise { - const waves = join(process.cwd(), 'src', 'assets', 'waves.svg'); - console.log(`Waves: ${waves}`); - const wavesSVG = await readFile(waves, 'utf-8'); - console.log({ wavesSVG }); - console.log('ADDING FLAGGER AUDIO'); const url = new URL(show.url); // Get the filename From 1d817d050f2977acc8d5db47240241c17a4bb459 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 13:17:07 -0400 Subject: [PATCH 22/34] PLEASE --- src/server/transcripts/flagger.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 8fe702cb8..86799ea95 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -34,6 +34,10 @@ export type ProgressEvent = { **/ export async function addFlaggerAudio(show: Show): Promise { console.log('ADDING FLAGGER AUDIO'); + // See what files are here + const files = await readdir('./'); + console.log(files); + const wasmPath = `${_dirname}/core.wasm`; const url = new URL(show.url); // Get the filename const fileName = `${show.number}.mp3`; From 6330d1446546c312b6360cb5c574f16e99f11472 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 13:23:36 -0400 Subject: [PATCH 23/34] asdfasdf --- src/server/transcripts/flagger.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 86799ea95..682b75750 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -37,7 +37,8 @@ export async function addFlaggerAudio(show: Show): Promise { // See what files are here const files = await readdir('./'); console.log(files); - const wasmPath = `${_dirname}/core.wasm`; + const wasmPathLocal = `${_dirname}/core.wasm`; + console.log({ wasmPathLocal }); const url = new URL(show.url); // Get the filename const fileName = `${show.number}.mp3`; @@ -51,7 +52,7 @@ export async function addFlaggerAudio(show: Show): Promise { log: true, core: core, coreOptions: { - wasmPath: wasmPath + wasmPath: './core.wasm' }, logger: (type, ...message) => { logProgress(message.join(' ')); From 6fa215344a0b70d89388df5448574348aa7aa27a Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 13:30:27 -0400 Subject: [PATCH 24/34] try at runtime --- src/server/transcripts/flagger.ts | 1 + why_do_i_need_this.mjs | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 682b75750..92bb83632 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -19,6 +19,7 @@ const _dirname = // const wasmPath = join(process.cwd(), wasmPathAb); const wasmPath = `${_dirname}/core.wasm`; +const wasmPath2 = `./core.wasm`; export type ProgressEvent = { duration?: number; diff --git a/why_do_i_need_this.mjs b/why_do_i_need_this.mjs index 1e9c81fa7..9e62881e4 100644 --- a/why_do_i_need_this.mjs +++ b/why_do_i_need_this.mjs @@ -11,5 +11,6 @@ const vercelFuncDirs = (await $`ls -1d ${VERCEL_BUILD_BASE_PATH}/*.func`).stdout const outputDirs = [...vercelFuncDirs, LOCAL_BUILD_PATH]; for (const outputDir of outputDirs) { - await $`cp node_modules/@ffmpeg.wasm/core-mt/dist/core.wasm ${outputDir}`; + console.log('Skipping copy of ffmpeg.wasm'); + // await $`cp node_modules/@ffmpeg.wasm/core-mt/dist/core.wasm ${outputDir}`; } From e4b6b277a618d36563436191c8547ec4301ff696 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 13:34:06 -0400 Subject: [PATCH 25/34] what about reading it --- src/server/transcripts/flagger.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 92bb83632..f19edef04 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -20,6 +20,8 @@ const _dirname = const wasmPath = `${_dirname}/core.wasm`; const wasmPath2 = `./core.wasm`; +// REad it? +await readFile(wasmPath2); export type ProgressEvent = { duration?: number; From a0d89c7ca2e84d8c2e93e38fcae9cee1d8e6d52e Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 13:43:35 -0400 Subject: [PATCH 26/34] reinstate copy script --- src/server/transcripts/flagger.ts | 5 ----- why_do_i_need_this.mjs | 4 ++-- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index f19edef04..12f13a819 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -18,11 +18,6 @@ const _dirname = // https://github.com/sveltejs/kit/pull/8441 // const wasmPath = join(process.cwd(), wasmPathAb); -const wasmPath = `${_dirname}/core.wasm`; -const wasmPath2 = `./core.wasm`; -// REad it? -await readFile(wasmPath2); - export type ProgressEvent = { duration?: number; ratio?: number; diff --git a/why_do_i_need_this.mjs b/why_do_i_need_this.mjs index 9e62881e4..c8fc2dcb5 100644 --- a/why_do_i_need_this.mjs +++ b/why_do_i_need_this.mjs @@ -11,6 +11,6 @@ const vercelFuncDirs = (await $`ls -1d ${VERCEL_BUILD_BASE_PATH}/*.func`).stdout const outputDirs = [...vercelFuncDirs, LOCAL_BUILD_PATH]; for (const outputDir of outputDirs) { - console.log('Skipping copy of ffmpeg.wasm'); - // await $`cp node_modules/@ffmpeg.wasm/core-mt/dist/core.wasm ${outputDir}`; + await $`cp node_modules/@ffmpeg.wasm/core-mt/dist/core.wasm ${outputDir}`; + await $`cp -r ./src/server/transcripts/audio ${outputDir}`; } From 672c5f837af63da18b89998af4db35faa87f6188 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 13:50:14 -0400 Subject: [PATCH 27/34] flag paths --- src/server/transcripts/flagger.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 12f13a819..470444411 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -73,7 +73,7 @@ export async function addFlaggerAudio(show: Show): Promise { // Write Flaggers to ffmpeg memory for (const [i, flagPath] of flagPaths.entries()) { const __dirname = new URL('.', import.meta.url).pathname; - const flagBuffer = await readFile(__dirname + flagPath); + const flagBuffer = await readFile(flagPath); ffmpeg.fs.writeFile(`flagger-${baseName}-${i}.mp3`, flagBuffer); console.log(`wrote flagger-${baseName}-${i}.mp3 to ffmpeg memory`); } From e78bd601a2823bb2b9877d3dfcdaee7cab10e128 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 13:59:18 -0400 Subject: [PATCH 28/34] move worker over --- src/server/transcripts/flagger.ts | 13 ------------- why_do_i_need_this.mjs | 1 + 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 470444411..b8f2b04d7 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -6,17 +6,6 @@ import { logProgress } from './logProgress'; import core from '@ffmpeg.wasm/core-mt'; const flagPaths = ['./audio/wes-flagger.mp3', './audio/scott-flagger.mp3']; import wasmPathAb from '@ffmpeg.wasm/core-mt/dist/core.wasm?url'; -import { dirname, join } from 'node:path'; -import { fileURLToPath } from 'node:url'; -import { env } from '$env/dynamic/private'; -import { dev } from '$app/environment'; - -const _dirname = - typeof __dirname !== 'undefined' ? __dirname : dirname(fileURLToPath(import.meta.url)); -// import wasmCore from './core.wasm'; -// https://github.com/sveltejs/kit/issues/10594 -// https://github.com/sveltejs/kit/pull/8441 -// const wasmPath = join(process.cwd(), wasmPathAb); export type ProgressEvent = { duration?: number; @@ -35,8 +24,6 @@ export async function addFlaggerAudio(show: Show): Promise { // See what files are here const files = await readdir('./'); console.log(files); - const wasmPathLocal = `${_dirname}/core.wasm`; - console.log({ wasmPathLocal }); const url = new URL(show.url); // Get the filename const fileName = `${show.number}.mp3`; diff --git a/why_do_i_need_this.mjs b/why_do_i_need_this.mjs index c8fc2dcb5..36a6c99d5 100644 --- a/why_do_i_need_this.mjs +++ b/why_do_i_need_this.mjs @@ -12,5 +12,6 @@ const outputDirs = [...vercelFuncDirs, LOCAL_BUILD_PATH]; for (const outputDir of outputDirs) { await $`cp node_modules/@ffmpeg.wasm/core-mt/dist/core.wasm ${outputDir}`; + await $`cp node_modules/@ffmpeg.wasm/core-mt/dist/core.worker.js ${outputDir}`; await $`cp -r ./src/server/transcripts/audio ${outputDir}`; } From 588f8ef1766eaef74338b20429c84a92e506c1e6 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 14:03:27 -0400 Subject: [PATCH 29/34] worker --- src/server/transcripts/flagger.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index b8f2b04d7..4d471bd03 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -37,7 +37,8 @@ export async function addFlaggerAudio(show: Show): Promise { log: true, core: core, coreOptions: { - wasmPath: './core.wasm' + wasmPath: './core.wasm', + workerPath: './core.worker.js' }, logger: (type, ...message) => { logProgress(message.join(' ')); From bf2fac87ca60a86792ca7ca3560f34a61bd8eef7 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 14:08:23 -0400 Subject: [PATCH 30/34] commonjs kill me --- src/server/transcripts/flagger.ts | 2 +- why_do_i_need_this.mjs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 4d471bd03..1c7694cb5 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -38,7 +38,7 @@ export async function addFlaggerAudio(show: Show): Promise { core: core, coreOptions: { wasmPath: './core.wasm', - workerPath: './core.worker.js' + workerPath: './core.worker.cjs' }, logger: (type, ...message) => { logProgress(message.join(' ')); diff --git a/why_do_i_need_this.mjs b/why_do_i_need_this.mjs index 36a6c99d5..28d2954a9 100644 --- a/why_do_i_need_this.mjs +++ b/why_do_i_need_this.mjs @@ -12,6 +12,6 @@ const outputDirs = [...vercelFuncDirs, LOCAL_BUILD_PATH]; for (const outputDir of outputDirs) { await $`cp node_modules/@ffmpeg.wasm/core-mt/dist/core.wasm ${outputDir}`; - await $`cp node_modules/@ffmpeg.wasm/core-mt/dist/core.worker.js ${outputDir}`; + await $`cp node_modules/@ffmpeg.wasm/core-mt/dist/core.worker.js ${outputDir}/core.worker.cjs`; await $`cp -r ./src/server/transcripts/audio ${outputDir}`; } From 1b1ad54296a65fc8f59bc3c99ac3b97875647e07 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 14:34:15 -0400 Subject: [PATCH 31/34] vercel and local compat --- src/server/transcripts/flagger.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/server/transcripts/flagger.ts b/src/server/transcripts/flagger.ts index 1c7694cb5..6bc23a49b 100644 --- a/src/server/transcripts/flagger.ts +++ b/src/server/transcripts/flagger.ts @@ -6,7 +6,7 @@ import { logProgress } from './logProgress'; import core from '@ffmpeg.wasm/core-mt'; const flagPaths = ['./audio/wes-flagger.mp3', './audio/scott-flagger.mp3']; import wasmPathAb from '@ffmpeg.wasm/core-mt/dist/core.wasm?url'; - +import { env } from '$env/dynamic/private'; export type ProgressEvent = { duration?: number; ratio?: number; @@ -21,9 +21,6 @@ export type ProgressEvent = { **/ export async function addFlaggerAudio(show: Show): Promise { console.log('ADDING FLAGGER AUDIO'); - // See what files are here - const files = await readdir('./'); - console.log(files); const url = new URL(show.url); // Get the filename const fileName = `${show.number}.mp3`; @@ -36,10 +33,13 @@ export async function addFlaggerAudio(show: Show): Promise { const ffmpeg = await FFmpeg.create({ log: true, core: core, - coreOptions: { - wasmPath: './core.wasm', - workerPath: './core.worker.cjs' - }, + // Specify WASM paths for Vercel. These are copied into the function via a post-build script https://github.com/syntaxfm/website/issues/1175 + ...(env.VERCEL && { + coreOptions: { + wasmPath: './core.wasm', + workerPath: './core.worker.cjs' + } + }), logger: (type, ...message) => { logProgress(message.join(' ')); } @@ -61,7 +61,7 @@ export async function addFlaggerAudio(show: Show): Promise { // Write Flaggers to ffmpeg memory for (const [i, flagPath] of flagPaths.entries()) { const __dirname = new URL('.', import.meta.url).pathname; - const flagBuffer = await readFile(flagPath); + const flagBuffer = await readFile(env.VERCEL ? flagPath : `${__dirname}/${flagPath}`); ffmpeg.fs.writeFile(`flagger-${baseName}-${i}.mp3`, flagBuffer); console.log(`wrote flagger-${baseName}-${i}.mp3 to ffmpeg memory`); } From ee39a64d1ff18cd35cff464524f774a27eba984d Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 14:44:59 -0400 Subject: [PATCH 32/34] db issues --- src/server/transcripts/transcripts.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/server/transcripts/transcripts.ts b/src/server/transcripts/transcripts.ts index 3ef824457..3111c1f3a 100644 --- a/src/server/transcripts/transcripts.ts +++ b/src/server/transcripts/transcripts.ts @@ -52,6 +52,9 @@ export async function save_transcript_to_db(show: Show, utterances: Utterance[]) }; }); + console.log(`About to Save to the DB`); + console.log(create_utterances); + return prisma.transcript.create({ data: { show_number: show.number, From 3d550e5ac9dc4f57b910f0a2036fb824964f4337 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 22:48:51 -0400 Subject: [PATCH 33/34] rewrite transcript DB logic for multiple transactions --- prisma/schema.prisma | 1 + src/routes/(site)/admin/+layout.server.ts | 2 +- src/server/auth/access_token.ts | 5 ++ src/server/transcripts/deepgram.ts | 4 ++ src/server/transcripts/transcripts.ts | 57 +++++++++++++++++++---- 5 files changed, 59 insertions(+), 10 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 965188f97..239037e9c 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -1,6 +1,7 @@ generator client { provider = "prisma-client-js" seed = "prisma/seed.ts" + output = "../node_modules/.prisma/client" } datasource db { diff --git a/src/routes/(site)/admin/+layout.server.ts b/src/routes/(site)/admin/+layout.server.ts index 49ab0dba6..b62ad9b67 100644 --- a/src/routes/(site)/admin/+layout.server.ts +++ b/src/routes/(site)/admin/+layout.server.ts @@ -1,5 +1,5 @@ import { redirect } from '@sveltejs/kit'; export const load = async function ({ locals }) { - if (!locals?.user?.roles?.includes('admin')) throw redirect(302, '/'); + if (!locals?.user?.roles?.includes('admin')) throw redirect(302, '/login'); }; diff --git a/src/server/auth/access_token.ts b/src/server/auth/access_token.ts index 7ce468dbd..57393f59d 100644 --- a/src/server/auth/access_token.ts +++ b/src/server/auth/access_token.ts @@ -19,6 +19,11 @@ export async function get_access_token(code: string): Promise { } const data = await response.json(); + + if (data.error) { + throw new Error(`Error fetching access token: ${data.error_description}`); + } + return data.access_token; } catch (error) { console.error('Error:', error); diff --git a/src/server/transcripts/deepgram.ts b/src/server/transcripts/deepgram.ts index cb4d3a7c7..9ad8c993f 100644 --- a/src/server/transcripts/deepgram.ts +++ b/src/server/transcripts/deepgram.ts @@ -38,6 +38,7 @@ export async function get_transcript(showNumber: number) { const showBuffer = await addFlaggerAudio(show); console.log(`Fetching transcript for show #${show.number} - ${show.title}...`); console.log(showBuffer); + // const filePath = join(process.cwd(), 'temp-transcript.json'); const transcript: PrerecordedTranscriptionResponse = await deepgramClient.transcription .preRecorded( { @@ -61,6 +62,9 @@ export async function get_transcript(showNumber: number) { console.log(`Error fetching transcript for show #${show.number} - ${show.title}.`); console.log(e); }); + // Temp: Write to disk as temp-transcript.json + // const transcript = JSON.parse(await readFile(filePath, 'utf-8')); + // await writeFile(filePath, JSON.stringify(transcript, null, 2)); console.log(`Transcript for show #${show.number} - ${show.title} fetched.`); await save_transcript_to_db(show, transcript.results?.utterances || []); diff --git a/src/server/transcripts/transcripts.ts b/src/server/transcripts/transcripts.ts index 3111c1f3a..2f13d7fa4 100644 --- a/src/server/transcripts/transcripts.ts +++ b/src/server/transcripts/transcripts.ts @@ -1,9 +1,6 @@ -import matter from 'gray-matter'; import { prisma_client as prisma } from '../../hooks.server'; import fs, { readFile } from 'fs/promises'; import path from 'path'; -import { get_md_from_folder } from '$utilities/file_utilities/get_md_from_folder'; -import { get_hash_from_content } from '$utilities/file_utilities/get_hash_from_content'; import { error } from '@sveltejs/kit'; import type { PrerecordedTranscriptionResponse, Utterance } from '@deepgram/sdk/dist/types'; import type { Show } from '@prisma/client'; @@ -52,17 +49,59 @@ export async function save_transcript_to_db(show: Show, utterances: Utterance[]) }; }); + const start = Date.now(); console.log(`About to Save to the DB`); - console.log(create_utterances); - return prisma.transcript.create({ + // 1. Create the Transcript Record + const transcript = await prisma.transcript.create({ data: { - show_number: show.number, - utterances: { - create: create_utterances - } + show_number: show.number } }); + // console.log(`Created Transcript Record: ${transcript.id}`); + // 2. Create the Utterances + for (const { words, ...utterance } of create_utterances) { + const utteranceRecord = await prisma.transcriptUtterance.create({ + data: { + ...utterance, + transcriptId: transcript.id // Associate the Utterance with the Transcript + } + }); + // console.log(`Created Utterance Record: ${utteranceRecord.id}`); + // 3. Create the Words + const wordIds = await prisma.transcriptUtteranceWord.createMany({ + data: words.create.map((word) => { + return { + ...word, + // Associate the Word with the Utterance + transcriptUtteranceId: utteranceRecord.id + }; + }) + }); + // console.log(`Created ${wordIds.count} Word Records for Utterance ${utteranceRecord.id}`); + } + + return transcript; + + // // Loop over each utterance and create it + // for (const utterance of create_utterances) { + // console.log('Create Word REcords'); + // const wordIds = await prisma.transcriptUtteranceWord.createMany({ + // data: [ + // { tra} + // ] + // }); + // console.log('Word Ids: ', wordIds); + // } + + // const create = prisma.transcript.create({ + // data: { + // show_number: show.number, + // utterances: { + // create: create_utterances + // } + // } + // }); } // Import Transcripts from JSON file - used for the initial import From 0cbf5d987899fd8084be45a62373a7fa9bae5244 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 18 Oct 2023 23:17:39 -0400 Subject: [PATCH 34/34] Tweak prompt --- src/routes/webhooks/ai/+server.ts | 6 +++++- src/server/ai/openai.ts | 3 ++- vercel.json | 6 +++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/routes/webhooks/ai/+server.ts b/src/routes/webhooks/ai/+server.ts index 0c082638e..6ad669de5 100644 --- a/src/routes/webhooks/ai/+server.ts +++ b/src/routes/webhooks/ai/+server.ts @@ -19,7 +19,11 @@ export const GET = async function transcriptCronHandler({ request, locals }: Req // 2. Get the latest show without a transcript const show = await locals.prisma.show.findFirst({ where: { - aiShowNote: null + // Where there is no AI Show Note, and there is a transcript + aiShowNote: null, + transcript: { + isNot: null + } }, include: { transcript: transcript_with_utterances diff --git a/src/server/ai/openai.ts b/src/server/ai/openai.ts index 98d7470ea..19d144519 100644 --- a/src/server/ai/openai.ts +++ b/src/server/ai/openai.ts @@ -179,7 +179,8 @@ export async function generate_ai_notes( }, { role: 'user', content: `This episode is #${show.number} entitled ${show.title}` }, { role: 'user', content: summarizePrompt2 }, - { role: 'user', content: condensedTranscript } + { role: 'user', content: `${condensedTranscript}` }, + { role: 'user', content: `Remember to only return JSON in the format specified` } ] }; console.log(`Creating AI notes for ${show.number}`); diff --git a/vercel.json b/vercel.json index 48c2b7fac..a7739bed0 100644 --- a/vercel.json +++ b/vercel.json @@ -2,11 +2,11 @@ "crons": [ { "path": "/webhooks/transcripts", - "schedule": "*/5 * * * *" + "schedule": "*/10 * * * *" }, { - "path": "/webhooks/[disabled]xai", - "schedule": "*/5 * * * *" + "path": "/webhooks/ai", + "schedule": "*/10 * * * *" } ] }