diff --git a/.cargo/config.toml.mustache b/.cargo/config.toml.mustache index 0ff5b5d11..42bb1b1b8 100644 --- a/.cargo/config.toml.mustache +++ b/.cargo/config.toml.mustache @@ -2,48 +2,48 @@ {{#protoc}} PROTOC = "{{{protoc}}}" {{/protoc}} -{{#ffmpeg}} -FFMPEG_DIR = "{{{ffmpeg}}}" -{{/ffmpeg}} +{{^isLinux}} +FFMPEG_DIR = "{{{nativeDeps}}}" +{{/isLinux}} {{#isMacOS}} [target.x86_64-apple-darwin] -rustflags = ["-L", "{{{projectRoot}}}/target/Frameworks/lib"] +rustflags = ["-L", "{{{nativeDeps}}}/lib"] [target.x86_64-apple-darwin.heif] -rustc-link-search = ["{{{projectRoot}}}/target/Frameworks/lib"] +rustc-link-search = ["{{{nativeDeps}}}/lib"] rustc-link-lib = ["heif"] [target.aarch64-apple-darwin] -rustflags = ["-L", "{{{projectRoot}}}/target/Frameworks/lib"] +rustflags = ["-L", "{{{nativeDeps}}}/lib"] [target.aarch64-apple-darwin.heif] -rustc-link-search = ["{{{projectRoot}}}/target/Frameworks/lib"] +rustc-link-search = ["{{{nativeDeps}}}/lib"] rustc-link-lib = ["heif"] {{/isMacOS}} {{#isWin}} [target.x86_64-pc-windows-msvc] -rustflags = ["-L", "{{{projectRoot}}}\\target\\Frameworks\\lib"] +rustflags = ["-L", "{{{nativeDeps}}}\\lib"] [target.x86_64-pc-windows-msvc.heif] -rustc-link-search = ["{{{projectRoot}}}\\target\\Frameworks\\lib"] +rustc-link-search = ["{{{nativeDeps}}}\\lib"] rustc-link-lib = ["heif"] {{/isWin}} {{#isLinux}} [target.x86_64-unknown-linux-gnu] -rustflags = ["-L", "{{{projectRoot}}}/target/Frameworks/lib", "-C", "link-arg=-Wl,-rpath=${ORIGIN}/../lib/spacedrive"] +rustflags = ["-L", "{{{nativeDeps}}}/lib", "-C", "link-arg=-Wl,-rpath=${ORIGIN}/../lib/spacedrive"] [target.x86_64-unknown-linux-gnu.heif] -rustc-link-search = ["{{{projectRoot}}}/target/Frameworks/lib"] +rustc-link-search = ["{{{nativeDeps}}}/lib"] rustc-link-lib = ["heif"] [target.aarch64-unknown-linux-gnu] -rustflags = ["-L", "{{{projectRoot}}}/target/Frameworks/lib", "-C", "link-arg=-Wl,-rpath=${ORIGIN}/../lib/spacedrive"] +rustflags = ["-L", "{{{nativeDeps}}}/lib", "-C", "link-arg=-Wl,-rpath=${ORIGIN}/../lib/spacedrive"] [target.aarch64-unknown-linux-gnu.heif] -rustc-link-search = ["{{{projectRoot}}}/target/Frameworks/lib"] +rustc-link-search = ["{{{nativeDeps}}}/lib"] rustc-link-lib = ["heif"] {{/isLinux}} diff --git a/.github/actions/publish-artifacts/action.yaml b/.github/actions/publish-artifacts/action.yaml index e6443a6e0..76a0ffeb2 100644 --- a/.github/actions/publish-artifacts/action.yaml +++ b/.github/actions/publish-artifacts/action.yaml @@ -23,14 +23,14 @@ runs: if-no-files-found: error retention-days: 1 - # - name: Publish artifacts (Debian - deb) - # if: ${{ matrix.settings.host == 'ubuntu-20.04' }} - # uses: actions/upload-artifact@v3 - # with: - # name: Spacedrive-deb-${{ inputs.target }}-${{ env.GITHUB_SHA_SHORT }} - # path: target/${{ inputs.target }}/${{ inputs.profile }}/bundle/deb/*.deb - # if-no-files-found: error - # retention-days: 1 + - name: Publish artifacts (Debian - deb) + if: ${{ matrix.settings.host == 'ubuntu-20.04' }} + uses: actions/upload-artifact@v3 + with: + name: Spacedrive-deb-${{ inputs.target }}-${{ env.GITHUB_SHA_SHORT }} + path: target/${{ inputs.target }}/${{ inputs.profile }}/bundle/deb/*.deb + if-no-files-found: error + retention-days: 1 - name: Publish artifacts (Windows - msi) if: ${{ matrix.settings.host == 'windows-latest' }} @@ -50,13 +50,13 @@ runs: if-no-files-found: error retention-days: 1 - # - name: Publish updater binaries - # uses: actions/upload-artifact@v3 - # with: - # name: Spacedrive-Updaters-${{ inputs.target }}-${{ env.GITHUB_SHA_SHORT }} - # path: | - # target/${{ inputs.target }}/${{ inputs.profile }}/bundle/**/*.tar.gz* - # target/${{ inputs.target }}/${{ inputs.profile }}/bundle/**/*.zip* - # !target/**/deb/**/*.tar.gz - # if-no-files-found: error - # retention-days: 1 + - name: Publish updater binaries + uses: actions/upload-artifact@v3 + with: + name: Spacedrive-Updater-${{ inputs.target }}-${{ env.GITHUB_SHA_SHORT }} + path: | + target/${{ inputs.target }}/${{ inputs.profile }}/bundle/**/*.tar.gz* + target/${{ inputs.target }}/${{ inputs.profile }}/bundle/**/*.zip* + !target/**/deb/**/*.tar.gz + if-no-files-found: error + retention-days: 1 diff --git a/.github/actions/setup-system/action.yml b/.github/actions/setup-system/action.yml index 806762a92..678fe3b12 100644 --- a/.github/actions/setup-system/action.yml +++ b/.github/actions/setup-system/action.yml @@ -64,7 +64,7 @@ runs: TARGET_TRIPLE: ${{ inputs.target }} GITHUB_TOKEN: ${{ inputs.token }} run: | - pushd .. - npm i archive-wasm mustache + pushd scripts + npm i --production popd node scripts/preprep.mjs diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f81a9415a..0f7670a89 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,11 +24,12 @@ jobs: # target: aarch64-pc-windows-msvc - host: ubuntu-20.04 target: x86_64-unknown-linux-gnu - bundles: appimage + bundles: appimage,deb # - host: ubuntu-20.04 # target: x86_64-unknown-linux-musl # - host: ubuntu-20.04 # target: aarch64-unknown-linux-gnu + # bundles: deb # no appimage for now unfortunetly # - host: ubuntu-20.04 # target: aarch64-unknown-linux-musl # - host: ubuntu-20.04 @@ -95,7 +96,7 @@ jobs: - name: Build run: | - pnpm tauri build --ci -v --target ${{ matrix.settings.target }} --bundles ${{ matrix.settings.bundles }} + pnpm tauri build --ci -v --target ${{ matrix.settings.target }} --bundles ${{ matrix.settings.bundles }},updater env: TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} @@ -107,7 +108,6 @@ jobs: APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }} APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} - NODE_OPTIONS: --max-old-space-size=4096 - name: Publish Artifacts uses: ./.github/actions/publish-artifacts diff --git a/.github/workflows/server.yml b/.github/workflows/server.yml index 3172ded67..e25eb4d03 100644 --- a/.github/workflows/server.yml +++ b/.github/workflows/server.yml @@ -61,7 +61,6 @@ jobs: build-args: | REPO=${{ steps.image_info.outputs.repo }} REPO_REF=${{ steps.image_info.outputs.repo_ref }} - NODE_OPTIONS: "--max-old-space-size=4096" containerfiles: | ./apps/server/docker/Dockerfile diff --git a/.gitignore b/.gitignore index ab416e845..9641838ee 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ packages/*/node_modules packages/*/data apps/*/data apps/*/stats.html +apps/.deps apps/releases/.vscode apps/desktop/src-tauri/tauri.conf.patch.json apps/desktop/src-tauri/*.dll @@ -78,7 +79,6 @@ dev.db-journal sd_init.json spacedrive -scripts/.tmp .cargo/config .cargo/config.toml .github/scripts/deps diff --git a/Cargo.lock b/Cargo.lock index cbe9c1191..3f85c7d70 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -401,22 +401,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "attohttpc" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fcf00bc6d5abb29b5f97e3c61a90b6d3caa12f3faf897d4a3e3607c050a35a7" -dependencies = [ - "flate2", - "http", - "log", - "native-tls", - "serde", - "serde_json", - "serde_urlencoded", - "url", -] - [[package]] name = "autocfg" version = "1.1.0" @@ -6331,10 +6315,12 @@ dependencies = [ "system-configuration", "tokio", "tokio-native-tls", + "tokio-util", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", + "wasm-streams", "web-sys", "winreg 0.50.0", ] @@ -6865,7 +6851,7 @@ dependencies = [ [[package]] name = "sd-desktop" -version = "0.1.0" +version = "0.0.1" dependencies = [ "axum", "dotenv", @@ -7863,6 +7849,19 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "sys-locale" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8a11bd9c338fdba09f7881ab41551932ad42e405f61d01e8406baea71c07aee" +dependencies = [ + "js-sys", + "libc", + "wasm-bindgen", + "web-sys", + "windows-sys 0.45.0", +] + [[package]] name = "sysinfo" version = "0.29.10" @@ -8014,13 +8013,13 @@ checksum = "9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a" [[package]] name = "tauri" -version = "1.3.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d42ba3a2e8556722f31336a0750c10dbb6a81396a1c452977f515da83f69f842" +checksum = "0238c5063bf9613054149a1b6bce4935922e532b7d8211f36989a490a79806be" dependencies = [ "anyhow", - "attohttpc", "base64 0.21.4", + "bytes", "cocoa", "dirs-next", "embed_plist", @@ -8043,6 +8042,7 @@ dependencies = [ "rand 0.8.5", "raw-window-handle", "regex", + "reqwest", "rfd", "semver", "serde", @@ -8051,6 +8051,7 @@ dependencies = [ "serialize-to-javascript", "shared_child", "state", + "sys-locale", "tar", "tauri-macros", "tauri-runtime", @@ -8129,9 +8130,9 @@ dependencies = [ [[package]] name = "tauri-runtime" -version = "0.13.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3b80ea3fcd5fefb60739a3b577b277e8fc30434538a2f5bba82ad7d4368c422" +checksum = "07f8e9e53e00e9f41212c115749e87d5cd2a9eebccafca77a19722eeecd56d43" dependencies = [ "gtk", "http", @@ -8150,9 +8151,9 @@ dependencies = [ [[package]] name = "tauri-runtime-wry" -version = "0.13.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1c396950b1ba06aee1b4ffe6c7cd305ff433ca0e30acbc5fa1a2f92a4ce70f1" +checksum = "8141d72b6b65f2008911e9ef5b98a68d1e3413b7a1464e8f85eb3673bb19a895" dependencies = [ "cocoa", "gtk", @@ -9298,6 +9299,19 @@ version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +[[package]] +name = "wasm-streams" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "web-sys" version = "0.3.64" diff --git a/apps/desktop/package.json b/apps/desktop/package.json index a325ef541..332263e06 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -1,14 +1,11 @@ { "name": "@sd/desktop", - "version": "1.0.0", - "main": "index.ts", - "license": "GPL-3.0-only", "private": true, "scripts": { "vite": "vite", "dev": "vite dev", "build": "vite build", - "tauri": "node ./src-tauri/scripts/tauri.js", + "tauri": "pnpm --filter @sd/scripts -- tauri", "dmg": "open ../../target/release/bundle/dmg/", "typecheck": "tsc -b", "lint": "eslint src --cache" @@ -19,27 +16,26 @@ "@sd/client": "workspace:*", "@sd/interface": "workspace:*", "@sd/ui": "workspace:*", - "@sentry/vite-plugin": "^2.7.0", - "@tanstack/react-query": "^4.24.4", - "@tauri-apps/api": "1.3.0", + "@sentry/vite-plugin": "^2.7.1", + "@tanstack/react-query": "^4.35", + "@tauri-apps/api": "1.5.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router-dom": "6.9.0" + "react-router-dom": "6.9.0", + "sonner": "^1.0.3" }, "devDependencies": { - "@iarna/toml": "^2.2.5", "@sd/config": "workspace:*", - "@tauri-apps/cli": "1.3.1", - "@types/babel__core": "^7.20.1", - "@types/react": "^18.0.21", - "@types/react-dom": "^18.0.6", - "@vitejs/plugin-react": "^2.1.0", - "sass": "^1.55.0", - "semver": "^7.5.0", - "typescript": "^5.0.4", - "vite": "^4.0.4", - "vite-plugin-html": "^3.2.0", - "vite-plugin-svgr": "^2.2.1", - "vite-tsconfig-paths": "^4.0.3" + "@tauri-apps/cli": "^1.5", + "@types/babel__core": "^7.20", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", + "@vitejs/plugin-react": "^4.1", + "sass": "^1.68", + "typescript": "^5.2", + "vite": "^4.4", + "vite-plugin-html": "^3.2", + "vite-plugin-svgr": "^3.3", + "vite-tsconfig-paths": "^4.2" } } diff --git a/apps/desktop/src-tauri/Cargo.toml b/apps/desktop/src-tauri/Cargo.toml index e8231ad1f..fe296e8d4 100644 --- a/apps/desktop/src-tauri/Cargo.toml +++ b/apps/desktop/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sd-desktop" -version = "0.1.0" +version = "0.0.1" description = "The universal file manager." authors = ["Spacedrive Technology Inc."] default-run = "sd-desktop" @@ -9,7 +9,8 @@ repository = { workspace = true } edition = { workspace = true } [dependencies] -tauri = { version = "=1.3.0", features = ["dialog-all", "linux-protocol-headers", "macos-private-api", "os-all", "path-all", "protocol-all", "shell-all", "window-all"] } +tauri = { version = "1.5.1", features = ["dialog-all", "linux-protocol-headers", "macos-private-api", "os-all", "path-all", "protocol-all", "shell-all", "updater", "window-all"] } + rspc = { workspace = true, features = ["tauri"] } sd-core = { path = "../../../core", features = [ "ffmpeg", @@ -44,9 +45,8 @@ sd-desktop-macos = { path = "../crates/macos" } sd-desktop-windows = { path = "../crates/windows" } [build-dependencies] -tauri-build = { version = "1.4.0", features = [] } +tauri-build = { version = "1.5.0", features = [] } [features] default = ["custom-protocol"] custom-protocol = ["tauri/custom-protocol"] -updater = ["tauri/updater"] diff --git a/apps/desktop/src-tauri/scripts/spawn.js b/apps/desktop/src-tauri/scripts/spawn.js deleted file mode 100644 index b426b8625..000000000 --- a/apps/desktop/src-tauri/scripts/spawn.js +++ /dev/null @@ -1,30 +0,0 @@ -const { spawn } = require('node:child_process'); - -module.exports.spawn = (command, args) => { - if (typeof command !== 'string' || command.length === 0) - throw new Error('Command must be a string and not empty'); - - if (args == null) args = []; - else if (!Array.isArray(args) || args.some((arg) => typeof arg !== 'string')) - throw new Error('Args must be an array of strings'); - - return new Promise((resolve, reject) => { - const child = spawn(command, args, { shell: true, stdio: 'inherit' }); - process.on('SIGTERM', () => child.kill('SIGTERM')); - process.on('SIGINT', () => child.kill('SIGINT')); - process.on('SIGBREAK', () => child.kill('SIGBREAK')); - process.on('SIGHUP', () => child.kill('SIGHUP')); - child.on('error', (error) => { - console.error(error); - reject(1); - }); - child.on('exit', (code, signal) => { - if (code === null) code = signal === 'SIGINT' ? 0 : 1; - if (code === 0) { - resolve(); - } else { - reject(code); - } - }); - }); -}; diff --git a/apps/desktop/src-tauri/scripts/tauri.js b/apps/desktop/src-tauri/scripts/tauri.js deleted file mode 100644 index 8ead83e76..000000000 --- a/apps/desktop/src-tauri/scripts/tauri.js +++ /dev/null @@ -1,193 +0,0 @@ -const fs = require('node:fs'); -const path = require('node:path'); - -const toml = require('@iarna/toml'); -const semver = require('semver'); - -const { spawn } = require('./spawn.js'); - -const workspace = path.resolve(__dirname, '../../../../'); -const cargoConfig = toml.parse( - fs.readFileSync(path.resolve(workspace, '.cargo/config.toml'), { encoding: 'binary' }) -); -if (cargoConfig.env && typeof cargoConfig.env === 'object') - for (const [name, value] of Object.entries(cargoConfig.env)) - if (!process.env[name]) process.env[name] = value; - -const toRemove = []; -const [_, __, ...args] = process.argv; - -if (args.length === 0) args.push('build'); - -const tauriConf = JSON.parse( - fs.readFileSync(path.resolve(__dirname, '..', 'tauri.conf.json'), 'utf-8') -); - -const framework = path.join(workspace, 'target/Frameworks'); - -switch (args[0]) { - case 'dev': { - if (process.platform === 'win32') setupSharedLibs('dll', path.join(framework, 'bin'), true); - break; - } - case 'build': { - if ( - !process.env.NODE_OPTIONS || - !process.env.NODE_OPTIONS.includes('--max_old_space_size') - ) { - process.env.NODE_OPTIONS = `--max_old_space_size=4096 ${ - process.env.NODE_OPTIONS ?? '' - }`; - } - - if (args.findIndex((e) => e === '-c' || e === '--config') !== -1) { - throw new Error('Custom tauri build config is not supported.'); - } - - const targets = args - .filter((_, index, args) => { - if (index === 0) return false; - const previous = args[index - 1]; - return previous === '-t' || previous === '--target'; - }) - .flatMap((target) => target.split(',')); - - const tauriPatch = { - tauri: { bundle: { macOS: {}, resources: [] } } - }; - - switch (process.platform) { - case 'darwin': { - // ARM64 support was added in macOS 11, but we need at least 11.2 due to our ffmpeg build - let macOSMinimumVersion = tauriConf?.tauri?.bundle?.macOS?.minimumSystemVersion; - let macOSArm64MinimumVersion = '11.2'; - if ( - (targets.includes('aarch64-apple-darwin') || - (targets.length === 0 && process.arch === 'arm64')) && - (macOSMinimumVersion == null || - semver.lt( - semver.coerce(macOSMinimumVersion), - semver.coerce(macOSArm64MinimumVersion) - )) - ) { - macOSMinimumVersion = macOSArm64MinimumVersion; - console.log( - `aarch64-apple-darwin target detected, setting minimum system version to ${macOSMinimumVersion}` - ); - } - - if (macOSMinimumVersion) { - process.env.MACOSX_DEPLOYMENT_TARGET = macOSMinimumVersion; - tauriPatch.tauri.bundle.macOS.minimumSystemVersion = macOSMinimumVersion; - } - - // Point tauri to our ffmpeg framework - tauriPatch.tauri.bundle.macOS.frameworks = [ - path.join(workspace, 'target/Frameworks/FFMpeg.framework') - ]; - - // Configure DMG background - process.env.BACKGROUND_FILE = path.resolve(__dirname, '..', 'dmg-background.png'); - process.env.BACKGROUND_FILE_NAME = path.basename(process.env.BACKGROUND_FILE); - process.env.BACKGROUND_CLAUSE = `set background picture of opts to file ".background:${process.env.BACKGROUND_FILE_NAME}"`; - - if (!fs.existsSync(process.env.BACKGROUND_FILE)) - console.warn( - `WARNING: DMG background file not found at ${process.env.BACKGROUND_FILE}` - ); - - break; - } - case 'linux': - fs.rmSync(path.join(workspace, 'target/release/bundle/appimage'), { - recursive: true, - force: true - }); - // Point tauri to the ffmpeg DLLs - tauriPatch.tauri.bundle.resources.push( - ...setupSharedLibs('so', path.join(framework, 'lib')) - ); - break; - case 'win32': - // Point tauri to the ffmpeg DLLs - tauriPatch.tauri.bundle.resources.push( - ...setupSharedLibs('dll', path.join(framework, 'bin')) - ); - break; - } - - toRemove.push( - ...tauriPatch.tauri.bundle.resources.map((file) => - path.join(workspace, 'apps/desktop/src-tauri', file) - ) - ); - - const tauriPatchConf = path.resolve(__dirname, '..', 'tauri.conf.patch.json'); - fs.writeFileSync(tauriPatchConf, JSON.stringify(tauriPatch, null, 2)); - - toRemove.push(tauriPatchConf); - args.splice(1, 0, '-c', tauriPatchConf); - } -} - -process.on('SIGINT', () => { - for (const file of toRemove) - try { - fs.unlinkSync(file); - } catch (e) {} -}); - -let code = 0; -spawn('pnpm', ['exec', 'tauri', ...args]) - .catch((exitCode) => { - if (args[0] === 'build' || process.platform === 'linux') { - // Work around appimage buindling not working sometimes - appimageDir = path.join(workspace, 'target/release/bundle/appimage'); - appDir = path.join(appimageDir, 'spacedrive.AppDir'); - if ( - fs.existsSync(path.join(appimageDir, 'build_appimage.sh')) && - fs.existsSync(appDir) && - !fs.readdirSync(appimageDir).filter((file) => file.endsWith('.AppImage')).length - ) { - process.chdir(appimageDir); - fs.rmSync(appDir, { recursive: true, force: true }); - return spawn('bash', ['build_appimage.sh']).catch((exitCode) => { - code = exitCode; - console.error(`tauri ${args[0]} failed with exit code ${exitCode}`); - }); - } - } - - code = exitCode; - console.error(`tauri ${args[0]} failed with exit code ${exitCode}`); - console.error( - `If you got an error related to FFMpeg or Protoc/Protobuf you may need to re-run \`pnpm i\`` - ); - }) - .finally(() => { - for (const file of toRemove) - try { - fs.unlinkSync(file); - } catch (e) {} - - process.exit(code); - }); - -function setupSharedLibs(sufix, binDir, dev = false) { - const sharedLibs = fs - .readdirSync(binDir) - .filter((file) => file.endsWith(`.${sufix}`) || file.includes(`.${sufix}.`)); - - let targetDir = path.join(workspace, 'apps/desktop/src-tauri'); - if (dev) { - targetDir = path.join(workspace, 'target/debug'); - // Ensure the target/debug directory exists - fs.mkdirSync(targetDir, { recursive: true }); - } - - // Copy all shared libs to targetDir - for (const dll of sharedLibs) - fs.copyFileSync(path.join(binDir, dll), path.join(targetDir, dll)); - - return sharedLibs; -} diff --git a/apps/desktop/src-tauri/src/main.rs b/apps/desktop/src-tauri/src/main.rs index df11de836..d4ccbbb42 100644 --- a/apps/desktop/src-tauri/src/main.rs +++ b/apps/desktop/src-tauri/src/main.rs @@ -18,6 +18,7 @@ mod theme; mod file; mod menu; +mod updater; #[tauri::command(async)] #[specta::specta] @@ -133,9 +134,6 @@ async fn main() -> tauri::Result<()> { let app = app .setup(|app| { - #[cfg(feature = "updater")] - tauri::updater::builder(app.handle()).should_install(|_current, _latest| true); - let app = app.handle(); app.windows().iter().for_each(|(_, window)| { @@ -178,6 +176,7 @@ async fn main() -> tauri::Result<()> { }) .on_menu_event(menu::handle_menu_event) .menu(menu::get_menu()) + .manage(updater::State::default()) .invoke_handler(tauri_handlers![ app_ready, reset_spacedrive, @@ -189,7 +188,9 @@ async fn main() -> tauri::Result<()> { file::open_file_path_with, file::open_ephemeral_file_with, file::reveal_items, - theme::lock_app_theme + theme::lock_app_theme, + updater::check_for_update, + updater::install_update ]) .build(tauri::generate_context!())?; diff --git a/apps/desktop/src-tauri/src/updater.rs b/apps/desktop/src-tauri/src/updater.rs new file mode 100644 index 000000000..720cfeb06 --- /dev/null +++ b/apps/desktop/src-tauri/src/updater.rs @@ -0,0 +1,95 @@ +use tauri::Manager; +use tokio::sync::Mutex; +use tracing::{error, warn}; + +#[derive(Debug, Clone, specta::Type, serde::Serialize)] +pub struct Update { + pub version: String, + pub body: Option, +} + +impl Update { + fn new(update: &tauri::updater::UpdateResponse) -> Self { + Self { + version: update.latest_version().to_string(), + body: update.body().map(|b| b.to_string()), + } + } +} + +#[derive(Default)] +pub struct State { + install_lock: Mutex<()>, +} + +async fn get_update( + app: tauri::AppHandle, +) -> Result, String> { + tauri::updater::builder(app) + .header("X-Spacedrive-Version", "stable") + .map_err(|e| e.to_string())? + .check() + .await + .map_err(|e| e.to_string()) +} + +#[derive(Clone, serde::Serialize, specta::Type)] +#[serde(rename_all = "camelCase", tag = "status")] +pub enum UpdateEvent { + Loading, + Error(String), + UpdateAvailable { update: Update }, + NoUpdateAvailable, + Installing, +} + +#[tauri::command] +#[specta::specta] +pub async fn check_for_update(app: tauri::AppHandle) -> Result, String> { + app.emit_all("updater", UpdateEvent::Loading).ok(); + + let update = match get_update(app.clone()).await { + Ok(update) => update, + Err(e) => { + app.emit_all("updater", UpdateEvent::Error(e.clone())).ok(); + return Err(e); + } + }; + + let update = update.is_update_available().then(|| Update::new(&update)); + + app.emit_all( + "updater", + update + .clone() + .map(|update| UpdateEvent::UpdateAvailable { update }) + .unwrap_or(UpdateEvent::NoUpdateAvailable), + ) + .ok(); + + Ok(update) +} + +#[tauri::command] +#[specta::specta] +pub async fn install_update( + app: tauri::AppHandle, + state: tauri::State<'_, State>, +) -> Result<(), String> { + let lock = match state.install_lock.try_lock() { + Ok(lock) => lock, + Err(_) => return Err("Update already installing".into()), + }; + + app.emit_all("updater", UpdateEvent::Installing).ok(); + + get_update(app.clone()) + .await? + .download_and_install() + .await + .map_err(|e| e.to_string())?; + + drop(lock); + + Ok(()) +} diff --git a/apps/desktop/src-tauri/tauri.conf.json b/apps/desktop/src-tauri/tauri.conf.json index 52ae00ae0..fb792d00e 100644 --- a/apps/desktop/src-tauri/tauri.conf.json +++ b/apps/desktop/src-tauri/tauri.conf.json @@ -1,13 +1,12 @@ { "package": { - "productName": "Spacedrive", - "version": "0.1.0" + "productName": "Spacedrive" }, "build": { "distDir": "../dist", "devPath": "http://localhost:8001", "beforeDevCommand": "pnpm dev", - "beforeBuildCommand": "pnpm turbo run build --filter @sd/desktop" + "beforeBuildCommand": "pnpm turbo run build --filter=@sd/desktop..." }, "tauri": { "macOSPrivateApi": true, @@ -31,10 +30,16 @@ "shortDescription": "The universal file manager.", "longDescription": "A cross-platform universal file explorer, powered by an open-source virtual distributed filesystem.", "deb": { - "depends": [] + "depends": [ + "ffmpeg", + "gstreamer1.0-plugins-bad", + "gstreamer1.0-plugins-ugly", + "gstreamer1.0-gtk3", + "gstreamer1.0-libav" + ] }, "macOS": { - "frameworks": [], + "frameworks": ["../../.deps/FFMpeg.framework"], "minimumSystemVersion": "10.15", "exceptionDomain": "", "entitlements": null @@ -50,9 +55,12 @@ } }, "updater": { - "active": false, + "active": true, + "dialog": false, "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEZBMURCMkU5NEU3NDAyOEMKUldTTUFuUk82YklkK296dlkxUGkrTXhCT3ZMNFFVOWROcXNaS0RqWU1kMUdRV2tDdFdIS0Y3YUsK", - "endpoints": ["https://spacedrive.com/api/releases/alpha/{{target}}/{{arch}}"] + "endpoints": [ + "https://spacedrive-landing-git-eng-927-fix-updater-spacedrive.vercel.app/api/releases/tauri/{{target}}/{{arch}}" + ] }, "allowlist": { "all": false, diff --git a/apps/desktop/src/App.tsx b/apps/desktop/src/App.tsx index b85c572fa..59025553d 100644 --- a/apps/desktop/src/App.tsx +++ b/apps/desktop/src/App.tsx @@ -22,6 +22,7 @@ import { getSpacedropState } from '@sd/interface/hooks/useSpacedropState'; import '@sd/ui/style'; import * as commands from './commands'; +import { updater, useUpdater } from './updater'; // TODO: Bring this back once upstream is fixed up. // const client = hooks.createClient({ @@ -57,7 +58,7 @@ if (customUriServerUrl && !customUriServerUrl?.endsWith('/')) { } const queryParams = customUriAuthToken ? `?token=${encodeURIComponent(customUriAuthToken)}` : ''; -const platform: Platform = { +const platform = { platform: 'tauri', getThumbnailUrlByThumbKey: (keyParts) => `${customUriServerUrl}thumbnail/${keyParts @@ -75,13 +76,14 @@ const platform: Platform = { showDevtools: () => invoke('show_devtools'), confirm: (msg, cb) => confirm(msg).then(cb), userHomeDir: homeDir, + updater, auth: { start(url) { open(url); } }, ...commands -}; +} satisfies Platform; const queryClient = new QueryClient({ defaultOptions: { @@ -119,6 +121,8 @@ export default function App() { }; }, []); + useUpdater(); + return ( diff --git a/apps/desktop/src/commands.ts b/apps/desktop/src/commands.ts index 11563f250..70485e77c 100644 --- a/apps/desktop/src/commands.ts +++ b/apps/desktop/src/commands.ts @@ -54,6 +54,15 @@ export function lockAppTheme(themeType: AppThemeType) { return invoke()("lock_app_theme", { themeType }) } +export function checkForUpdate() { + return invoke()("check_for_update") +} + +export function installUpdate() { + return invoke()("install_update") +} + +export type Update = { version: string; body: string | null } export type OpenWithApplication = { url: string; name: string } export type AppThemeType = "Auto" | "Light" | "Dark" export type EphemeralFileOpenResult = { t: "Ok"; c: string } | { t: "Err"; c: string } diff --git a/apps/desktop/src/index.html b/apps/desktop/src/index.html index 011a80c58..9e256ff06 100644 --- a/apps/desktop/src/index.html +++ b/apps/desktop/src/index.html @@ -1,13 +1,16 @@ - - - - - Spacedrive - - -
- - + + + + + + Spacedrive + + + +
+ + + diff --git a/apps/desktop/src/updater.tsx b/apps/desktop/src/updater.tsx new file mode 100644 index 000000000..800a99e58 --- /dev/null +++ b/apps/desktop/src/updater.tsx @@ -0,0 +1,87 @@ +import { listen } from '@tauri-apps/api/event'; +import { useEffect, useRef } from 'react'; +import { proxy, useSnapshot } from 'valtio'; +import { UpdateStore } from '@sd/interface'; +import { toast, ToastId } from '@sd/ui'; + +import * as commands from './commands'; + +export const updateStore = proxy({ + status: 'idle' +}); + +listen('updater', (e) => { + Object.assign(updateStore, e.payload); + console.log(updateStore); +}); + +const onInstallCallbacks = new Set<() => void>(); + +export const updater = { + useSnapshot: () => useSnapshot(updateStore), + checkForUpdate: commands.checkForUpdate, + installUpdate: () => { + for (const cb of onInstallCallbacks) { + cb(); + } + + const promise = commands.installUpdate(); + + toast.promise(promise, { + loading: 'Downloading Update', + success: 'Update Downloaded. Restart Spacedrive to install', + error: (e: any) => ( + <> +

Failed to download update

+

Error: {e.toString()}

+ + ) + }); + + return promise; + } +}; + +async function checkForUpdate() { + const update = await updater.checkForUpdate(); + + if (!update) return; + + let id: ToastId | null = null; + + const cb = () => { + if (id !== null) toast.dismiss(id); + }; + + onInstallCallbacks.add(cb); + + toast.info( + (_id) => { + id = _id; + + return { + title: 'New Update Available', + body: `Version ${update.version}` + }; + }, + { + onClose() { + onInstallCallbacks.delete(cb); + }, + duration: 10 * 1000, + action: { + label: 'Update', + onClick: () => updater.installUpdate() + } + } + ); +} + +export function useUpdater() { + const alreadyChecked = useRef(false); + + useEffect(() => { + if (!alreadyChecked.current && import.meta.env.PROD) checkForUpdate(); + alreadyChecked.current = true; + }, []); +} diff --git a/apps/landing/package.json b/apps/landing/package.json index f3f16fcf1..d645cb464 100644 --- a/apps/landing/package.json +++ b/apps/landing/package.json @@ -1,5 +1,6 @@ { "name": "@sd/landing", + "private": true, "scripts": { "dev": "next dev", "build": "contentlayer build && next build", @@ -21,12 +22,12 @@ "@vercel/edge-config": "^0.1.11", "autoprefixer": "^10.4.14", "clsx": "^1.2.1", - "contentlayer": "^0.3.2", + "contentlayer": "^0.3.4", "drizzle-orm": "^0.26.0", "markdown-to-jsx": "^7.2.0", "md5": "^2.3.0", "next": "13.4.3", - "next-contentlayer": "^0.3.2", + "next-contentlayer": "^0.3.4", "react": "18.2.0", "react-burger-menu": "^3.0.9", "react-dom": "^18.2.0", @@ -49,15 +50,14 @@ "devDependencies": { "@sd/config": "workspace:*", "@svgr/webpack": "^8.0.1", - "@types/node": "20.2.1", - "@types/react": "18.2.6", + "@types/node": "^18.17", + "@types/react": "^18.2.0", "@types/react-burger-menu": "^2.8.3", - "@types/react-dom": "18.2.4", - "@types/react-helmet": "^6.1.6", - "@types/three": "^0.152.1", + "@types/react-dom": "^18.2.0", + "@types/three": "^0.152", "drizzle-kit": "db-push", - "postcss": "^8.4.23", + "postcss": "^8.4", "tailwindcss": "^3.3.2", - "typescript": "5.0.4" + "typescript": "^5.2" } } diff --git a/apps/landing/src/app/api/releases/[version]/[target]/[arch]/route.ts b/apps/landing/src/app/api/releases/tauri/[target]/[arch]/route.ts similarity index 74% rename from apps/landing/src/app/api/releases/[version]/[target]/[arch]/route.ts rename to apps/landing/src/app/api/releases/tauri/[target]/[arch]/route.ts index ea0d09a1b..96d133a15 100644 --- a/apps/landing/src/app/api/releases/[version]/[target]/[arch]/route.ts +++ b/apps/landing/src/app/api/releases/tauri/[target]/[arch]/route.ts @@ -24,15 +24,11 @@ type TauriResponse = { export const runtime = 'edge'; export async function GET(req: Request, extra: { params: Record }) { - // handles old /api/releases/[target]/[arch]/[currentVersion] requests - // should be removed once stable release is out - if (tauriArch.safeParse(extra.params['target']).success) { - return NextResponse.redirect( - new URL(`/api/releases/alpha/${extra.params.version}/${extra.params.target}`, req.url) - ); - } + const version = req.headers.get('X-Spacedrive-Version'); - const params = await paramsSchema.parseAsync(extra.params); + if (version === null) return NextResponse.json({ error: 'No version header' }, { status: 400 }); + + const params = await paramsSchema.parseAsync({ ...extra.params, version }); const release = await getRelease(params); @@ -64,20 +60,19 @@ export async function GET(req: Request, extra: { params: Record return NextResponse.json(response); } -const ORG = 'spacedriveapp'; -const REPO = 'spacedrive'; - async function getRelease({ version }: z.infer): Promise { switch (version) { case 'alpha': { - const data = await githubFetch(`/repos/${ORG}/${REPO}/releases`); + const data = await githubFetch(`/repos/${env.GITHUB_ORG}/${env.GITHUB_REPO}/releases`); return data.find((d: any) => d.tag_name.includes('alpha')); } case 'stable': - return githubFetch(`/repos/${ORG}/${REPO}/releases/latest`); + return githubFetch(`/repos/${env.GITHUB_ORG}/${env.GITHUB_REPO}/releases/latest`); default: - return githubFetch(`/repos/${ORG}/${REPO}/releases/tags/${version}`); + return githubFetch( + `/repos/$${env.GITHUB_ORG}/${env.GITHUB_REPO}/releases/tags/${version}` + ); } } @@ -95,10 +90,10 @@ async function githubFetch(path: string) { return fetch(`https://api.github.com${path}`, FETCH_META).then((r) => r.json()); } -function binaryName({ version, target, arch }: z.infer) { +function binaryName({ target, arch }: z.infer) { const ext = extensionForTarget(target); - return `Spacedrive-Updater-${version}-${target}-${arch}.${ext}`; + return `Spacedrive-Updater-${target}-${arch}.${ext}`; } function extensionForTarget(target: z.infer) { diff --git a/apps/landing/src/env.ts b/apps/landing/src/env.ts index 1ed99450f..878da17c8 100644 --- a/apps/landing/src/env.ts +++ b/apps/landing/src/env.ts @@ -12,7 +12,9 @@ export const env = createEnv({ AWS_SES_ACCESS_KEY: z.string(), AWS_SES_SECRET_KEY: z.string(), AWS_SES_REGION: z.string(), - MAILER_FROM: z.string().default('Spacedrive ') + MAILER_FROM: z.string().default('Spacedrive '), + GITHUB_ORG: z.string().default('spacedriveapp'), + GITHUB_REPO: z.string().default('spacedrive') }, client: {}, runtimeEnv: { @@ -25,7 +27,9 @@ export const env = createEnv({ AWS_SES_ACCESS_KEY: process.env.AWS_SES_ACCESS_KEY, AWS_SES_SECRET_KEY: process.env.AWS_SES_SECRET_KEY, AWS_SES_REGION: process.env.AWS_SES_REGION, - MAILER_FROM: process.env.MAILER_FROM + MAILER_FROM: process.env.MAILER_FROM, + GITHUB_ORG: process.env.GITHUB_ORG, + GITHUB_REPO: process.env.GITHUB_REPO }, // In dev or in eslint disable checking. // Kinda sucks for in dev but you don't need the whole setup to change the docs. diff --git a/apps/mobile/modules/sd-core/ios/build-rust.sh b/apps/mobile/modules/sd-core/ios/build-rust.sh index 2e57e09b2..ae697c85a 100755 --- a/apps/mobile/modules/sd-core/ios/build-rust.sh +++ b/apps/mobile/modules/sd-core/ios/build-rust.sh @@ -1,40 +1,49 @@ -#!/usr/bin/env zsh +#!/usr/bin/env sh -set -e +set -eu -echo "Building \'sd-mobile-ios\' library..." +if [ "${CI:-}" = "true" ]; then + set -x +fi + +if [ -z "${HOME:-}" ]; then + HOME="$(CDPATH='' cd -- "$(osascript -e 'set output to (POSIX path of (path to home folder))')" && pwd)" + export HOME +fi + +echo "Building 'sd-mobile-ios' library..." __dirname="$(CDPATH='' cd -- "$(dirname -- "$0")" && pwd)" -TARGET_DIRECTORY="$(CDPATH='' cd -- "${__dirname}/../../../../../target" && pwd)" -if [[ $CONFIGURATION != "Debug" ]]; then +# Ensure target dir exists +TARGET_DIRECTORY="${__dirname}/../../../../../target" +mkdir -p "$TARGET_DIRECTORY" +TARGET_DIRECTORY="$(CDPATH='' cd -- "$TARGET_DIRECTORY" && pwd)" + +if [ "${CONFIGURATION:-}" != "Debug" ]; then CARGO_FLAGS=--release export CARGO_FLAGS fi -export PROTOC="${TARGET_DIRECTORY}/Frameworks/bin/protoc" - # TODO: Also do this for non-Apple Silicon Macs -if [[ $SPACEDRIVE_CI == "1" ]]; then +if [ "${SPACEDRIVE_CI:-}" = "1" ]; then # Required for CI - export PATH="$HOME/.cargo/bin:$PATH" + export PATH="${CARGO_HOME:-"${HOME}/.cargo"}/bin:$PATH" cargo build -p sd-mobile-ios --target x86_64-apple-ios - if [[ $PLATFORM_NAME = "iphonesimulator" ]] - then - lipo -create -output $TARGET_DIRECTORY/libsd_mobile_iossim.a $TARGET_DIRECTORY/x86_64-apple-ios/debug/libsd_mobile_ios.a + if [ "${PLATFORM_NAME:-}" = "iphonesimulator" ]; then + lipo -create -output "$TARGET_DIRECTORY"/libsd_mobile_iossim.a "$TARGET_DIRECTORY"/x86_64-apple-ios/debug/libsd_mobile_ios.a else - lipo -create -output $TARGET_DIRECTORY/libsd_mobile_ios.a $TARGET_DIRECTORY/x86_64-apple-ios/debug/libsd_mobile_ios.a + lipo -create -output "$TARGET_DIRECTORY"/libsd_mobile_ios.a "$TARGET_DIRECTORY"/x86_64-apple-ios/debug/libsd_mobile_ios.a fi exit 0 fi -if [[ $PLATFORM_NAME = "iphonesimulator" ]] -then - cargo build -p sd-mobile-ios --target aarch64-apple-ios-sim - lipo -create -output $TARGET_DIRECTORY/libsd_mobile_iossim.a $TARGET_DIRECTORY/aarch64-apple-ios-sim/debug/libsd_mobile_ios.a +if [ "${PLATFORM_NAME:-}" = "iphonesimulator" ]; then + cargo build -p sd-mobile-ios --target aarch64-apple-ios-sim + lipo -create -output "$TARGET_DIRECTORY"/libsd_mobile_iossim.a "$TARGET_DIRECTORY"/aarch64-apple-ios-sim/debug/libsd_mobile_ios.a else - cargo build -p sd-mobile-ios --target aarch64-apple-ios - lipo -create -output $TARGET_DIRECTORY/libsd_mobile_ios.a $TARGET_DIRECTORY/aarch64-apple-ios/debug/libsd_mobile_ios.a + cargo build -p sd-mobile-ios --target aarch64-apple-ios + lipo -create -output "$TARGET_DIRECTORY"/libsd_mobile_ios.a "$TARGET_DIRECTORY"/aarch64-apple-ios/debug/libsd_mobile_ios.a fi diff --git a/apps/mobile/package.json b/apps/mobile/package.json index 18ab0e7c9..1314251b8 100644 --- a/apps/mobile/package.json +++ b/apps/mobile/package.json @@ -28,7 +28,7 @@ "@sd/assets": "workspace:*", "@sd/client": "workspace:*", "@shopify/flash-list": "1.5.0", - "@tanstack/react-query": "^4.29.1", + "@tanstack/react-query": "^4.35", "class-variance-authority": "^0.5.3", "dayjs": "^1.11.8", "event-target-polyfill": "^0.0.3", @@ -42,7 +42,7 @@ "lottie-react-native": "6.2.0", "moti": "^0.26.0", "phosphor-react-native": "^1.1.2", - "react": "18.2.0", + "react": "^18.2.0", "react-hook-form": "~7.45.2", "react-native": "0.72.4", "react-native-document-picker": "^9.0.1", @@ -61,13 +61,13 @@ "zod": "~3.22.2" }, "devDependencies": { - "@babel/core": "^7.22.11", + "@babel/core": "~7", "@rnx-kit/metro-config": "^1.3.8", "@sd/config": "workspace:*", - "@types/react": "~18.0.38", + "@types/react": "^18.2.0", "babel-plugin-module-resolver": "^5.0.0", "eslint-plugin-react-native": "^4.0.0", "react-native-svg-transformer": "^1.1.0", - "typescript": "^5.1.3" + "typescript": "^5.2" } } diff --git a/apps/server/docker/Dockerfile b/apps/server/docker/Dockerfile index 7e7b97290..9baaba88d 100644 --- a/apps/server/docker/Dockerfile +++ b/apps/server/docker/Dockerfile @@ -67,6 +67,8 @@ ENV PATH="/root/.cargo/bin:$PATH" RUN --mount=type=cache,target=/var/cache/apt --mount=type=cache,target=/var/lib/apt \ env CI=true ./scripts/setup.sh +RUN cd ./scripts; npm i --production + RUN --mount=type=cache,target=/root/.cache/prisma/binaries/cli/ \ pnpm prep @@ -89,11 +91,12 @@ ENV TZ=UTC \ # Note: This needs to happen before the apt call to avoid locking issues with the previous step COPY --from=server /srv/spacedrive/target/release/sd-server /usr/bin/ +COPY --from=server /srv/spacedrive/apps/.deps/lib /usr/lib/spacedrive RUN --mount=type=cache,target=/var/cache/apt --mount=type=cache,target=/var/lib/apt \ apt-get install \ libavdevice59 libpostproc56 libswscale6 libswresample4 libavformat59 libavutil57 libavfilter8 \ - libavcodec59 libheif1 + libavcodec59 COPY --chmod=755 entrypoint.sh /usr/bin/ diff --git a/apps/storybook/package.json b/apps/storybook/package.json index bebfde3da..827fe29c2 100644 --- a/apps/storybook/package.json +++ b/apps/storybook/package.json @@ -21,15 +21,15 @@ "devDependencies": { "@sd/config": "workspace:*", "@sd/ui": "workspace:*", - "@types/react": "^18.0.28", - "@types/react-dom": "^18.0.11", - "@vitejs/plugin-react": "^3.1.0", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", + "@vitejs/plugin-react": "^4.1", "autoprefixer": "^10.4.12", - "postcss": "^8.4.17", + "postcss": "^8.4", "prop-types": "^15.8.1", "storybook": "^7.0.5", "tailwindcss": "^3.3.2", - "typescript": "^5.0.4", - "vite": "^4.2.0" + "typescript": "^5.2", + "vite": "^4.4" } } diff --git a/apps/web/package.json b/apps/web/package.json index ac786e8f0..51ab39003 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -14,7 +14,7 @@ "@rspc/client": "=0.0.0-main-799eec5d", "@sd/client": "workspace:*", "@sd/interface": "workspace:*", - "@tanstack/react-query": "^4.12.0", + "@tanstack/react-query": "^4.35", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "6.9.0" @@ -23,16 +23,16 @@ "@playwright/test": "^1.30.0", "@sd/config": "workspace:*", "@sd/ui": "workspace:*", - "@types/react": "^18.0.21", - "@types/react-dom": "^18.0.6", - "@vitejs/plugin-react": "^2.1.0", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", + "@vitejs/plugin-react": "^4.1", "autoprefixer": "^10.4.12", - "postcss": "^8.4.17", + "postcss": "^8.4", "rollup-plugin-visualizer": "^5.9.0", - "typescript": "^5.0.4", - "vite": "^4.0.4", - "vite-plugin-html": "^3.2.0", - "vite-plugin-svgr": "^2.2.1", - "vite-tsconfig-paths": "^4.0.3" + "typescript": "^5.2", + "vite": "^4.4", + "vite-plugin-html": "^3.2", + "vite-plugin-svgr": "^3.3", + "vite-tsconfig-paths": "^4.2" } } diff --git a/crates/sync/example/web/package.json b/crates/sync/example/web/package.json index e01ebc072..e219e9a5f 100644 --- a/crates/sync/example/web/package.json +++ b/crates/sync/example/web/package.json @@ -10,10 +10,10 @@ }, "license": "MIT", "devDependencies": { - "@tanstack/react-query": "^4.10.1", - "@vitejs/plugin-react": "^2.1.0", - "typescript": "^4.8.2", - "vite": "^4.0.4" + "@tanstack/react-query": "^4.35", + "@vitejs/plugin-react": "^4.1", + "typescript": "^5.2", + "vite": "^4.4" }, "dependencies": { "clsx": "^1.2.1", diff --git a/interface/app/$libraryId/Layout/Sidebar/Footer.tsx b/interface/app/$libraryId/Layout/Sidebar/Footer.tsx index 8ac8ffcd1..c04caa0cb 100644 --- a/interface/app/$libraryId/Layout/Sidebar/Footer.tsx +++ b/interface/app/$libraryId/Layout/Sidebar/Footer.tsx @@ -4,6 +4,7 @@ import { useKeys } from 'rooks'; import { JobManagerContextProvider, useClientContext, useDebugState } from '@sd/client'; import { Button, ButtonLink, dialogManager, modifierSymbols, Popover, Tooltip } from '@sd/ui'; import { useKeyMatcher } from '~/hooks'; +import { usePlatform } from '~/util/Platform'; import DebugPopover from './DebugPopover'; import FeedbackDialog from './FeedbackDialog'; @@ -20,8 +21,24 @@ export default () => { navigate('settings/client/general'); }); + const updater = usePlatform().updater; + const updaterState = updater?.useSnapshot(); + return (
+ {updater && updaterState && ( + <> + {updaterState.status === 'updateAvailable' && ( + + )} + + )}
{ const libraries = useCachedLibraries(); diff --git a/interface/package.json b/interface/package.json index dff5a5094..e290e9515 100644 --- a/interface/package.json +++ b/interface/package.json @@ -1,16 +1,8 @@ { "name": "@sd/interface", - "version": "1.0.0", - "license": "GPL-3.0-only", "private": true, "main": "index.tsx", "types": "index.tsx", - "exports": { - ".": "./index.tsx", - "./assets/*": "./assets/*", - "./components/*": "./components/*", - "./hooks/*": "./hooks/*" - }, "scripts": { "lint": "eslint . --cache", "typecheck": "tsc -b" @@ -19,6 +11,7 @@ "@fontsource/inter": "^4.5.13", "@headlessui/react": "^1.7.3", "@icons-pack/react-simple-icons": "^7.2.0", + "@phosphor-icons/react": "^2.0.10", "@radix-ui/react-progress": "^1.0.1", "@radix-ui/react-slider": "^1.1.0", "@radix-ui/react-toast": "^1.1.2", @@ -31,13 +24,10 @@ "@splinetool/react-spline": "^2.2.3", "@splinetool/runtime": "^0.9.128", "@tailwindcss/forms": "^0.5.3", - "@tanstack/react-query": "^4.12.0", - "@tanstack/react-query-devtools": "^4.22.0", + "@tanstack/react-query": "^4.35", + "@tanstack/react-query-devtools": "^4.35", "@tanstack/react-table": "^8.8.5", "@tanstack/react-virtual": "3.0.0-beta.61", - "@types/react-scroll-sync": "^0.8.4", - "@types/uuid": "^9.0.2", - "@vitejs/plugin-react": "^2.1.0", "autoprefixer": "^10.4.12", "class-variance-authority": "^0.5.3", "clsx": "^1.2.1", @@ -45,7 +35,6 @@ "dayjs": "^1.11.8", "dragselect": "^2.7.4", "framer-motion": "^10.11.5", - "@phosphor-icons/react": "^2.0.10", "prismjs": "^1.29.0", "react": "^18.2.0", "react-colorful": "^5.6.1", @@ -76,15 +65,16 @@ }, "devDependencies": { "@sd/config": "workspace:*", - "@types/babel__core": "^7.20.1", + "@types/babel__core": "^7.20", "@types/loadable__component": "^5.13.4", - "@types/node": "^18.11.9", - "@types/react": "^18.0.21", - "@types/react-dom": "^18.0.6", + "@types/node": "^18.17", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", "@types/react-router-dom": "^5.3.3", - "@vitejs/plugin-react": "^1.3.1", - "typescript": "5.0.4", - "vite": "^4.0.4", - "vite-plugin-svgr": "^2.2.1" + "@types/uuid": "^9.0.2", + "@vitejs/plugin-react": "^4.1", + "typescript": "^5.2", + "vite": "^4.4", + "vite-plugin-svgr": "^3.3" } } diff --git a/interface/tsconfig.json b/interface/tsconfig.json index 3ad612626..30a4e12ed 100644 --- a/interface/tsconfig.json +++ b/interface/tsconfig.json @@ -1,20 +1,13 @@ { "extends": "../packages/config/base.tsconfig.json", "compilerOptions": { - "declarationDir": "dist", "paths": { "~/*": ["./*"] }, - "types": ["vite-plugin-svgr/client", "vite/client", "node"] + "types": ["vite-plugin-svgr/client", "vite/client", "node"], + "declarationDir": "dist" }, - "include": ["./**/*"], + "include": ["**/*"], "exclude": ["dist"], - "references": [ - { - "path": "../packages/ui" - }, - { - "path": "../packages/client" - } - ] + "references": [{ "path": "../packages/ui" }, { "path": "../packages/client" }] } diff --git a/interface/util/Platform.tsx b/interface/util/Platform.tsx index c12b6ccb1..35814d5d7 100644 --- a/interface/util/Platform.tsx +++ b/interface/util/Platform.tsx @@ -37,9 +37,23 @@ export type Platform = { openFilePathWith?(library: string, fileIdsAndAppUrls: [number, string][]): Promise; openEphemeralFileWith?(pathsAndUrls: [string, string][]): Promise; lockAppTheme?(themeType: 'Auto' | 'Light' | 'Dark'): any; + updater?: { + useSnapshot: () => UpdateStore; + checkForUpdate(): Promise; + installUpdate(): Promise; + }; auth: auth.ProviderConfig; }; +export type Update = { version: string; body: string | null }; +export type UpdateStore = + | { status: 'idle' } + | { status: 'loading' } + | { status: 'error' } + | { status: 'updateAvailable'; update: Update } + | { status: 'noUpdateAvailable' } + | { status: 'installing' }; + // Keep this private and use through helpers below const context = createContext(undefined!); diff --git a/package.json b/package.json index 913707efe..e94c9906c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "scripts": { - "preprep": "pnpm exec node scripts/preprep.mjs", + "preprep": "pnpm --filter @sd/scripts -- prep", "prep": "pnpm gen:prisma", "postprep": "pnpm codegen", "build": "turbo run build", @@ -27,7 +27,7 @@ "typecheck": "pnpm -r typecheck", "lint": "turbo run lint", "lint:fix": "turbo run lint -- --fix", - "clean": "rimraf -g \"node_modules/\" \"**/node_modules/\" \"target/\" \"**/.build/\" \"**/.next/\" \"**/dist/!(.gitignore)**\" \"**/tsconfig.tsbuildinfo\"" + "clean": "git clean -qfX ." }, "pnpm": { "overrides": { @@ -35,25 +35,22 @@ } }, "devDependencies": { - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@cspell/dict-rust": "^2.0.1", - "@cspell/dict-typescript": "^2.0.2", + "@babel/plugin-syntax-import-assertions": "~7", + "@cspell/dict-rust": "^4.0.1", + "@cspell/dict-typescript": "^3.1.2", "@ianvs/prettier-plugin-sort-imports": "^4.1.0", - "@storybook/react-vite": "^7.0.20", - "archive-wasm": "^1.5.3", - "cspell": "^6.31.1", - "mustache": "^4.2.0", + "@storybook/react-vite": "^7.4.6", + "cspell": "^7.3.7", "prettier": "^3.0.3", - "prettier-plugin-tailwindcss": "^0.5.3", - "rimraf": "^4.4.1", - "turbo": "^1.10.2", - "turbo-ignore": "^0.3.0", - "typescript": "^5.0.4", - "vite": "^4.3.9" + "prettier-plugin-tailwindcss": "^0.5.5", + "turbo": "^1.10.14", + "turbo-ignore": "^1.10.14", + "typescript": "^5.2", + "vite": "^4.4" }, "overrides": { "vite-plugin-svgr": "https://github.com/spacedriveapp/vite-plugin-svgr#cb4195b69849429cdb18d1f12381676bf9196a84", - "@types/node": "^18.0.0" + "@types/node": "^18.17" }, "engines": { "pnpm": ">=8.0.0", @@ -62,23 +59,6 @@ "node": ">=18.17 <19 || >=20.1" }, "eslintConfig": { - "root": true, - "overrides": [ - { - "files": [ - "*.mjs" - ], - "env": { - "node": true, - "es2022": true, - "browser": false, - "commonjs": false, - "shared-node-browser": false - }, - "parserOptions": { - "sourceType": "module" - } - } - ] + "root": true } } diff --git a/packages/client/package.json b/packages/client/package.json index ca98cbcb2..a5bf246a7 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,11 +1,8 @@ { "name": "@sd/client", - "version": "0.0.0", "private": true, "main": "./src/index.ts", - "files": [ - "dist/**" - ], + "types": "./src/index.ts", "scripts": { "test": "jest", "lint": "eslint src --cache", @@ -16,7 +13,7 @@ "@rspc/client": "=0.0.0-main-799eec5d", "@rspc/react": "=0.0.0-main-799eec5d", "@sd/config": "workspace:*", - "@tanstack/react-query": "^4.12.0", + "@tanstack/react-query": "^4.35", "@zxcvbn-ts/core": "^2.1.0", "@zxcvbn-ts/language-common": "^2.0.1", "@zxcvbn-ts/language-en": "^2.1.0", @@ -29,7 +26,7 @@ "@types/react": "^18.0.21", "scripts": "*", "tsconfig": "*", - "typescript": "^5.0.4" + "typescript": "^5.2" }, "peerDependencies": { "react": "^18.2.0" diff --git a/packages/client/tsconfig.json b/packages/client/tsconfig.json index 8e080d56b..41d393a37 100644 --- a/packages/client/tsconfig.json +++ b/packages/client/tsconfig.json @@ -2,7 +2,8 @@ "extends": "../config/base.tsconfig.json", "compilerOptions": { "rootDir": "src", - "declarationDir": "dist" + "outDir": "./dist", + "emitDeclarationOnly": false }, "include": ["src"] } diff --git a/packages/config/package.json b/packages/config/package.json index a1f9a78d2..2438f6ec6 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -11,19 +11,19 @@ "lint": "eslint . --cache" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.59.6", - "@typescript-eslint/parser": "^5.59.6", - "eslint": "^8.41.0", + "@typescript-eslint/eslint-plugin": "^6.7", + "@typescript-eslint/parser": "^6.7", + "eslint": "^8.50", "eslint-config-next": "13.3.0", - "eslint-config-prettier": "^8.8.0", + "eslint-config-prettier": "^9.0", "eslint-config-turbo": "^1.9.8", - "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-prettier": "^5.0", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-tailwindcss": "^3.12.0", "eslint-utils": "^3.0.0", "regexpp": "^3.2.0", - "vite-plugin-html": "^3.2.0", - "vite-plugin-svgr": "^2.2.1" + "vite-plugin-html": "^3.2", + "vite-plugin-svgr": "^3.3" } } diff --git a/packages/ui/package.json b/packages/ui/package.json index 4466a2193..8955b308d 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -36,7 +36,6 @@ "class-variance-authority": "^0.5.3", "clsx": "^1.2.1", "@phosphor-icons/react": "^2.0.10", - "postcss": "^8.4.17", "react": "^18.2.0", "react-dom": "^18.2.0", "react-loading-icons": "^1.1.0", @@ -48,20 +47,18 @@ "zod": "~3.22.2" }, "devDependencies": { - "@babel/core": "^7.22.11", + "@babel/core": "~7", "@sd/config": "workspace:*", "@storybook/types": "^7.0.24", "@tailwindcss/typography": "^0.5.7", - "@types/node": "^18.15.1", - "@types/react": "^18.0.21", - "@types/react-dom": "^18.0.6", + "@types/node": "^18.17", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", "autoprefixer": "^10.4.12", - "babel-loader": "^8.2.5", - "sass": "^1.55.0", - "sass-loader": "^13.0.2", - "style-loader": "^3.3.1", + "sass": "^1.68", + "postcss": "^8.4", "tailwindcss": "^3.3.2", "tailwindcss-animate": "^1.0.5", - "typescript": "5.0.4" + "typescript": "^5.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 869883e46..86fc67bda 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,50 +12,41 @@ importers: .: devDependencies: '@babel/plugin-syntax-import-assertions': - specifier: ^7.22.5 + specifier: ~7 version: 7.22.5(@babel/core@7.22.11) '@cspell/dict-rust': - specifier: ^2.0.1 - version: 2.0.1 + specifier: ^4.0.1 + version: 4.0.1 '@cspell/dict-typescript': - specifier: ^2.0.2 - version: 2.0.2 + specifier: ^3.1.2 + version: 3.1.2 '@ianvs/prettier-plugin-sort-imports': specifier: ^4.1.0 version: 4.1.0(prettier@3.0.3) '@storybook/react-vite': - specifier: ^7.0.20 - version: 7.0.20(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.4)(vite@4.3.9) - archive-wasm: - specifier: ^1.5.3 - version: 1.5.3 + specifier: ^7.4.6 + version: 7.4.6(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(vite@4.4.10) cspell: - specifier: ^6.31.1 - version: 6.31.1 - mustache: - specifier: ^4.2.0 - version: 4.2.0 + specifier: ^7.3.7 + version: 7.3.7 prettier: specifier: ^3.0.3 version: 3.0.3 prettier-plugin-tailwindcss: - specifier: ^0.5.3 - version: 0.5.3(@ianvs/prettier-plugin-sort-imports@4.1.0)(prettier@3.0.3) - rimraf: - specifier: ^4.4.1 - version: 4.4.1 + specifier: ^0.5.5 + version: 0.5.5(@ianvs/prettier-plugin-sort-imports@4.1.0)(prettier@3.0.3) turbo: - specifier: ^1.10.2 - version: 1.10.2 + specifier: ^1.10.14 + version: 1.10.14 turbo-ignore: - specifier: ^0.3.0 - version: 0.3.0 + specifier: ^1.10.14 + version: 1.10.14 typescript: - specifier: ^5.0.4 - version: 5.0.4 + specifier: ^5.2 + version: 5.2.2 vite: - specifier: ^4.3.9 - version: 4.3.9(@types/node@18.15.1) + specifier: ^4.4 + version: 4.4.10(@types/node@18.17.12) apps/desktop: dependencies: @@ -64,7 +55,7 @@ importers: version: 0.0.0-main-799eec5d '@rspc/tauri': specifier: '=0.0.0-main-799eec5d' - version: 0.0.0-main-799eec5d(@tauri-apps/api@1.3.0) + version: 0.0.0-main-799eec5d(@tauri-apps/api@1.5.0) '@sd/client': specifier: workspace:* version: link:../../packages/client @@ -75,14 +66,14 @@ importers: specifier: workspace:* version: link:../../packages/ui '@sentry/vite-plugin': - specifier: ^2.7.0 - version: 2.7.0 + specifier: ^2.7.1 + version: 2.7.1 '@tanstack/react-query': - specifier: ^4.24.4 - version: 4.29.1(react-dom@18.2.0)(react-native@0.72.4)(react@18.2.0) + specifier: ^4.35 + version: 4.35.7(react-dom@18.2.0)(react-native@0.72.4)(react@18.2.0) '@tauri-apps/api': - specifier: 1.3.0 - version: 1.3.0 + specifier: 1.5.0 + version: 1.5.0 react: specifier: ^18.2.0 version: 18.2.0 @@ -92,49 +83,46 @@ importers: react-router-dom: specifier: 6.9.0 version: 6.9.0(react-dom@18.2.0)(react@18.2.0) + sonner: + specifier: ^1.0.3 + version: 1.0.3(react-dom@18.2.0)(react@18.2.0) devDependencies: - '@iarna/toml': - specifier: ^2.2.5 - version: 2.2.5 '@sd/config': specifier: workspace:* version: link:../../packages/config '@tauri-apps/cli': - specifier: 1.3.1 - version: 1.3.1 + specifier: ^1.5 + version: 1.5.1 '@types/babel__core': - specifier: ^7.20.1 + specifier: ^7.20 version: 7.20.1 '@types/react': - specifier: ^18.0.21 - version: 18.0.38 + specifier: ^18.2.0 + version: 18.2.6 '@types/react-dom': - specifier: ^18.0.6 + specifier: ^18.2.0 version: 18.2.4 '@vitejs/plugin-react': - specifier: ^2.1.0 - version: 2.1.0(vite@4.3.9) + specifier: ^4.1 + version: 4.1.0(vite@4.4.10) sass: - specifier: ^1.55.0 - version: 1.55.0 - semver: - specifier: ^7.5.0 - version: 7.5.0 + specifier: ^1.68 + version: 1.68.0 typescript: - specifier: ^5.0.4 - version: 5.0.4 + specifier: ^5.2 + version: 5.2.2 vite: - specifier: ^4.0.4 - version: 4.3.9(sass@1.55.0) + specifier: ^4.4 + version: 4.4.10(sass@1.68.0) vite-plugin-html: - specifier: ^3.2.0 - version: 3.2.0(vite@4.3.9) + specifier: ^3.2 + version: 3.2.0(vite@4.4.10) vite-plugin-svgr: - specifier: ^2.2.1 - version: 2.2.1(vite@4.3.9) + specifier: ^3.3 + version: 3.3.0(vite@4.4.10) vite-tsconfig-paths: - specifier: ^4.0.3 - version: 4.0.3(typescript@5.0.4)(vite@4.3.9) + specifier: ^4.2 + version: 4.2.1(typescript@5.2.2)(vite@4.4.10) apps/landing: dependencies: @@ -161,19 +149,19 @@ importers: version: link:../../packages/ui '@t3-oss/env-nextjs': specifier: ^0.3.1 - version: 0.3.1(typescript@5.0.4)(zod@3.22.2) + version: 0.3.1(typescript@5.2.2)(zod@3.22.2) '@vercel/edge-config': specifier: ^0.1.11 version: 0.1.11 autoprefixer: specifier: ^10.4.14 - version: 10.4.14(postcss@8.4.23) + version: 10.4.14(postcss@8.4.28) clsx: specifier: ^1.2.1 version: 1.2.1 contentlayer: - specifier: ^0.3.2 - version: 0.3.2(esbuild@0.19.2) + specifier: ^0.3.4 + version: 0.3.4(esbuild@0.19.2) drizzle-orm: specifier: ^0.26.0 version: 0.26.0(@planetscale/database@1.7.0) @@ -187,8 +175,8 @@ importers: specifier: 13.4.3 version: 13.4.3(@babel/core@7.22.11)(@opentelemetry/api@1.4.1)(react-dom@18.2.0)(react@18.2.0) next-contentlayer: - specifier: ^0.3.2 - version: 0.3.2(esbuild@0.19.2)(next@13.4.3)(react-dom@18.2.0)(react@18.2.0) + specifier: ^0.3.4 + version: 0.3.4(contentlayer@0.3.4)(esbuild@0.19.2)(next@13.4.3)(react-dom@18.2.0)(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 @@ -251,41 +239,38 @@ importers: specifier: ^8.0.1 version: 8.0.1 '@types/node': - specifier: 20.2.1 - version: 20.2.1 + specifier: ^18.17 + version: 18.17.12 '@types/react': - specifier: 18.2.6 + specifier: ^18.2.0 version: 18.2.6 '@types/react-burger-menu': specifier: ^2.8.3 version: 2.8.3 '@types/react-dom': - specifier: 18.2.4 + specifier: ^18.2.0 version: 18.2.4 - '@types/react-helmet': - specifier: ^6.1.6 - version: 6.1.6 '@types/three': - specifier: ^0.152.1 + specifier: ^0.152 version: 0.152.1 drizzle-kit: specifier: db-push version: 0.18.0-27440c3 postcss: - specifier: ^8.4.23 - version: 8.4.23 + specifier: ^8.4 + version: 8.4.28 tailwindcss: specifier: ^3.3.2 version: 3.3.2 typescript: - specifier: 5.0.4 - version: 5.0.4 + specifier: ^5.2 + version: 5.2.2 apps/mobile: dependencies: '@gorhom/bottom-sheet': specifier: ^4.4.7 - version: 4.4.7(@types/react@18.0.38)(react-native-gesture-handler@2.12.1)(react-native-reanimated@3.4.2)(react-native@0.72.4)(react@18.2.0) + version: 4.4.7(@types/react@18.2.6)(react-native-gesture-handler@2.12.1)(react-native-reanimated@3.4.2)(react-native@0.72.4)(react@18.2.0) '@hookform/resolvers': specifier: ^3.1.0 version: 3.1.0(react-hook-form@7.45.2) @@ -312,7 +297,7 @@ importers: version: 0.0.0-main-799eec5d '@rspc/react': specifier: '=0.0.0-main-799eec5d' - version: 0.0.0-main-799eec5d(@rspc/client@0.0.0-main-799eec5d)(@tanstack/react-query@4.29.1)(react@18.2.0) + version: 0.0.0-main-799eec5d(@rspc/client@0.0.0-main-799eec5d)(@tanstack/react-query@4.35.7)(react@18.2.0) '@sd/assets': specifier: workspace:* version: link:../../packages/assets @@ -323,11 +308,11 @@ importers: specifier: 1.5.0 version: 1.5.0(@babel/runtime@7.22.11)(react-native@0.72.4)(react@18.2.0) '@tanstack/react-query': - specifier: ^4.29.1 - version: 4.29.1(react-dom@18.2.0)(react-native@0.72.4)(react@18.2.0) + specifier: ^4.35 + version: 4.35.7(react-dom@18.2.0)(react-native@0.72.4)(react@18.2.0) class-variance-authority: specifier: ^0.5.3 - version: 0.5.3(typescript@5.1.3) + version: 0.5.3(typescript@5.2.2) dayjs: specifier: ^1.11.8 version: 1.11.8 @@ -365,7 +350,7 @@ importers: specifier: ^1.1.2 version: 1.1.2(react-native-svg@13.10.0)(react-native@0.72.4)(react@18.2.0) react: - specifier: 18.2.0 + specifier: ^18.2.0 version: 18.2.0 react-hook-form: specifier: ~7.45.2 @@ -417,7 +402,7 @@ importers: version: 3.22.2 devDependencies: '@babel/core': - specifier: ^7.22.11 + specifier: ~7 version: 7.22.11 '@rnx-kit/metro-config': specifier: ^1.3.8 @@ -426,20 +411,20 @@ importers: specifier: workspace:* version: link:../../packages/config '@types/react': - specifier: ~18.0.38 - version: 18.0.38 + specifier: ^18.2.0 + version: 18.2.6 babel-plugin-module-resolver: specifier: ^5.0.0 version: 5.0.0 eslint-plugin-react-native: specifier: ^4.0.0 - version: 4.0.0(eslint@8.48.0) + version: 4.0.0(eslint@8.50.0) react-native-svg-transformer: specifier: ^1.1.0 version: 1.1.0(react-native-svg@13.10.0)(react-native@0.72.4) typescript: - specifier: ^5.1.3 - version: 5.1.3 + specifier: ^5.2 + version: 5.2.2 apps/server: {} @@ -456,22 +441,22 @@ importers: version: 7.0.5(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-styling': specifier: ^1.0.6 - version: 1.0.6(@types/react-dom@18.2.4)(@types/react@18.0.38)(less@4.2.0)(postcss@8.4.23)(react-dom@18.2.0)(react@18.2.0)(webpack@5.88.2) + version: 1.0.6(@types/react-dom@18.2.4)(@types/react@18.2.6)(less@4.2.0)(postcss@8.4.28)(react-dom@18.2.0)(react@18.2.0)(webpack@5.88.2) '@storybook/blocks': specifier: ^7.0.5 version: 7.0.5(react-dom@18.2.0)(react@18.2.0) '@storybook/react': specifier: ^7.0.5 - version: 7.0.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.4) + version: 7.0.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) '@storybook/react-vite': specifier: ^7.0.5 - version: 7.0.20(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.4)(vite@4.3.9) + version: 7.0.20(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(vite@4.4.10) '@storybook/testing-library': specifier: ^0.1.0 version: 0.1.0 postcss-pseudo-companion-classes: specifier: ^0.1.1 - version: 0.1.1(postcss@8.4.23) + version: 0.1.1(postcss@8.4.28) react: specifier: ^18.2.0 version: 18.2.0 @@ -486,20 +471,20 @@ importers: specifier: workspace:* version: link:../../packages/ui '@types/react': - specifier: ^18.0.28 - version: 18.0.38 + specifier: ^18.2.0 + version: 18.2.6 '@types/react-dom': - specifier: ^18.0.11 + specifier: ^18.2.0 version: 18.2.4 '@vitejs/plugin-react': - specifier: ^3.1.0 - version: 3.1.0(vite@4.3.9) + specifier: ^4.1 + version: 4.1.0(vite@4.4.10) autoprefixer: specifier: ^10.4.12 - version: 10.4.14(postcss@8.4.23) + version: 10.4.14(postcss@8.4.28) postcss: - specifier: ^8.4.17 - version: 8.4.23 + specifier: ^8.4 + version: 8.4.28 prop-types: specifier: ^15.8.1 version: 15.8.1 @@ -510,11 +495,11 @@ importers: specifier: ^3.3.2 version: 3.3.2 typescript: - specifier: ^5.0.4 - version: 5.0.4 + specifier: ^5.2 + version: 5.2.2 vite: - specifier: ^4.2.0 - version: 4.3.9(less@4.2.0) + specifier: ^4.4 + version: 4.4.10(less@4.2.0) apps/web: dependencies: @@ -531,8 +516,8 @@ importers: specifier: workspace:* version: link:../../interface '@tanstack/react-query': - specifier: ^4.12.0 - version: 4.29.1(react-dom@18.2.0)(react-native@0.72.4)(react@18.2.0) + specifier: ^4.35 + version: 4.35.7(react-dom@18.2.0)(react-native@0.72.4)(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -553,38 +538,38 @@ importers: specifier: workspace:* version: link:../../packages/ui '@types/react': - specifier: ^18.0.21 - version: 18.0.38 + specifier: ^18.2.0 + version: 18.2.6 '@types/react-dom': - specifier: ^18.0.6 + specifier: ^18.2.0 version: 18.2.4 '@vitejs/plugin-react': - specifier: ^2.1.0 - version: 2.1.0(vite@4.3.9) + specifier: ^4.1 + version: 4.1.0(vite@4.4.10) autoprefixer: specifier: ^10.4.12 - version: 10.4.14(postcss@8.4.23) + version: 10.4.14(postcss@8.4.28) postcss: - specifier: ^8.4.17 - version: 8.4.23 + specifier: ^8.4 + version: 8.4.28 rollup-plugin-visualizer: specifier: ^5.9.0 version: 5.9.0 typescript: - specifier: ^5.0.4 - version: 5.0.4 + specifier: ^5.2 + version: 5.2.2 vite: - specifier: ^4.0.4 - version: 4.3.9(@types/node@18.15.1) + specifier: ^4.4 + version: 4.4.10(@types/node@18.17.12) vite-plugin-html: - specifier: ^3.2.0 - version: 3.2.0(vite@4.3.9) + specifier: ^3.2 + version: 3.2.0(vite@4.4.10) vite-plugin-svgr: - specifier: ^2.2.1 - version: 2.2.1(vite@4.3.9) + specifier: ^3.3 + version: 3.3.0(vite@4.4.10) vite-tsconfig-paths: - specifier: ^4.0.3 - version: 4.0.3(typescript@5.0.4)(vite@4.3.9) + specifier: ^4.2 + version: 4.2.1(typescript@5.2.2)(vite@4.4.10) crates/sync/example/web: dependencies: @@ -605,17 +590,17 @@ importers: version: 3.3.2 devDependencies: '@tanstack/react-query': - specifier: ^4.10.1 - version: 4.29.1(react-dom@18.2.0)(react-native@0.72.4)(react@18.2.0) + specifier: ^4.35 + version: 4.35.7(react-dom@18.2.0)(react-native@0.72.4)(react@18.2.0) '@vitejs/plugin-react': - specifier: ^2.1.0 - version: 2.1.0(vite@4.3.9) + specifier: ^4.1 + version: 4.1.0(vite@4.4.10) typescript: - specifier: ^4.8.2 - version: 4.8.2 + specifier: ^5.2 + version: 5.2.2 vite: - specifier: ^4.0.4 - version: 4.3.9(@types/node@18.15.1) + specifier: ^4.4 + version: 4.4.10(@types/node@18.17.12) interface: dependencies: @@ -642,7 +627,7 @@ importers: version: 1.1.2(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-tooltip': specifier: ^1.0.2 - version: 1.0.2(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.2(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) '@remix-run/router': specifier: ^1.4.0 version: 1.4.0 @@ -668,32 +653,23 @@ importers: specifier: ^0.5.3 version: 0.5.3(tailwindcss@3.3.2) '@tanstack/react-query': - specifier: ^4.12.0 - version: 4.29.1(react-dom@18.2.0)(react-native@0.72.4)(react@18.2.0) + specifier: ^4.35 + version: 4.35.7(react-dom@18.2.0)(react-native@0.72.4)(react@18.2.0) '@tanstack/react-query-devtools': - specifier: ^4.22.0 - version: 4.22.0(@tanstack/react-query@4.29.1)(react-dom@18.2.0)(react@18.2.0) + specifier: ^4.35 + version: 4.35.7(@tanstack/react-query@4.35.7)(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-table': specifier: ^8.8.5 version: 8.8.5(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-virtual': specifier: 3.0.0-beta.61 version: 3.0.0-beta.61(react@18.2.0) - '@types/react-scroll-sync': - specifier: ^0.8.4 - version: 0.8.4 - '@types/uuid': - specifier: ^9.0.2 - version: 9.0.2 - '@vitejs/plugin-react': - specifier: ^2.1.0 - version: 2.1.0(vite@4.3.9) autoprefixer: specifier: ^10.4.12 version: 10.4.14(postcss@8.4.28) class-variance-authority: specifier: ^0.5.3 - version: 0.5.3(typescript@5.0.4) + version: 0.5.3(typescript@5.2.2) clsx: specifier: ^1.2.1 version: 1.2.1 @@ -720,7 +696,7 @@ importers: version: 5.6.1(react-dom@18.2.0)(react@18.2.0) react-dnd: specifier: ^16.0.1 - version: 16.0.1(@types/node@18.15.1)(@types/react@18.0.38)(react@18.2.0) + version: 16.0.1(@types/node@18.17.12)(@types/react@18.2.6)(react@18.2.0) react-dnd-html5-backend: specifier: ^16.0.1 version: 16.0.1 @@ -738,7 +714,7 @@ importers: version: 4.4.1(react-dom@18.2.0)(react@18.2.0) react-json-view: specifier: ^1.21.3 - version: 1.21.3(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + version: 1.21.3(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) react-loading-skeleton: specifier: ^3.1.0 version: 3.1.0(react@18.2.0) @@ -795,32 +771,38 @@ importers: specifier: workspace:* version: link:../packages/config '@types/babel__core': - specifier: ^7.20.1 + specifier: ^7.20 version: 7.20.1 '@types/loadable__component': specifier: ^5.13.4 version: 5.13.4 '@types/node': - specifier: ^18.11.9 - version: 18.15.1 + specifier: ^18.17 + version: 18.17.12 '@types/react': - specifier: ^18.0.21 - version: 18.0.38 + specifier: ^18.2.0 + version: 18.2.6 '@types/react-dom': - specifier: ^18.0.6 + specifier: ^18.2.0 version: 18.2.4 '@types/react-router-dom': specifier: ^5.3.3 version: 5.3.3 + '@types/uuid': + specifier: ^9.0.2 + version: 9.0.2 + '@vitejs/plugin-react': + specifier: ^4.1 + version: 4.1.0(vite@4.4.10) typescript: - specifier: 5.0.4 - version: 5.0.4 + specifier: ^5.2 + version: 5.2.2 vite: - specifier: ^4.0.4 - version: 4.3.9(@types/node@18.15.1) + specifier: ^4.4 + version: 4.4.10(@types/node@18.17.12) vite-plugin-svgr: - specifier: ^2.2.1 - version: 2.2.1(vite@4.3.9) + specifier: ^3.3 + version: 3.3.0(vite@4.4.10) packages/assets: {} @@ -831,13 +813,13 @@ importers: version: 0.0.0-main-799eec5d '@rspc/react': specifier: '=0.0.0-main-799eec5d' - version: 0.0.0-main-799eec5d(@rspc/client@0.0.0-main-799eec5d)(@tanstack/react-query@4.29.1)(react@18.2.0) + version: 0.0.0-main-799eec5d(@rspc/client@0.0.0-main-799eec5d)(@tanstack/react-query@4.35.7)(react@18.2.0) '@sd/config': specifier: workspace:* version: link:../config '@tanstack/react-query': - specifier: ^4.12.0 - version: 4.29.1(react-dom@18.2.0)(react-native@0.72.4)(react@18.2.0) + specifier: ^4.35 + version: 4.35.7(react-dom@18.2.0)(react-native@0.72.4)(react@18.2.0) '@zxcvbn-ts/core': specifier: ^2.1.0 version: 2.1.0 @@ -873,53 +855,53 @@ importers: specifier: '*' version: 0.0.1 typescript: - specifier: ^5.0.4 - version: 5.0.4 + specifier: ^5.2 + version: 5.2.2 packages/config: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: ^5.59.6 - version: 5.59.6(@typescript-eslint/parser@5.59.6)(eslint@8.41.0)(typescript@5.2.2) + specifier: ^6.7 + version: 6.7.4(@typescript-eslint/parser@6.7.4)(eslint@8.50.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: ^5.59.6 - version: 5.59.6(eslint@8.41.0)(typescript@5.2.2) + specifier: ^6.7 + version: 6.7.4(eslint@8.50.0)(typescript@5.2.2) eslint: - specifier: ^8.41.0 - version: 8.41.0 + specifier: ^8.50 + version: 8.50.0 eslint-config-next: specifier: 13.3.0 - version: 13.3.0(eslint@8.41.0)(typescript@5.2.2) + version: 13.3.0(eslint@8.50.0)(typescript@5.2.2) eslint-config-prettier: - specifier: ^8.8.0 - version: 8.8.0(eslint@8.41.0) + specifier: ^9.0 + version: 9.0.0(eslint@8.50.0) eslint-config-turbo: specifier: ^1.9.8 - version: 1.9.8(eslint@8.41.0) + version: 1.9.8(eslint@8.50.0) eslint-plugin-prettier: - specifier: ^4.2.1 - version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.41.0)(prettier@3.0.3) + specifier: ^5.0 + version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.50.0)(prettier@3.0.3) eslint-plugin-react: specifier: ^7.32.2 - version: 7.32.2(eslint@8.41.0) + version: 7.32.2(eslint@8.50.0) eslint-plugin-react-hooks: specifier: ^4.6.0 - version: 4.6.0(eslint@8.41.0) + version: 4.6.0(eslint@8.50.0) eslint-plugin-tailwindcss: specifier: ^3.12.0 version: 3.12.0(tailwindcss@3.3.3) eslint-utils: specifier: ^3.0.0 - version: 3.0.0(eslint@8.41.0) + version: 3.0.0(eslint@8.50.0) regexpp: specifier: ^3.2.0 version: 3.2.0 vite-plugin-html: - specifier: ^3.2.0 - version: 3.2.0(vite@3.2.7) + specifier: ^3.2 + version: 3.2.0(vite@4.4.10) vite-plugin-svgr: - specifier: ^2.2.1 - version: 2.2.1(vite@3.2.7) + specifier: ^3.3 + version: 3.3.0(vite@4.4.10) packages/ui: dependencies: @@ -940,22 +922,22 @@ importers: version: 1.0.3(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-context-menu': specifier: ^2.1.4 - version: 2.1.4(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + version: 2.1.4(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-dialog': specifier: ^1.0.4 - version: 1.0.4(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.4(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-dropdown-menu': specifier: ^2.0.5 - version: 2.0.5(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + version: 2.0.5(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-popover': specifier: ^1.0.6 - version: 1.0.6(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.6(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-radio-group': specifier: ^1.1.0 version: 1.1.0(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-select': specifier: ^1.1.2 - version: 1.1.2(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + version: 1.1.2(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-switch': specifier: ^1.0.1 version: 1.0.1(react-dom@18.2.0)(react@18.2.0) @@ -973,13 +955,10 @@ importers: version: 0.5.3(tailwindcss@3.3.2) class-variance-authority: specifier: ^0.5.3 - version: 0.5.3(typescript@5.0.4) + version: 0.5.3(typescript@5.2.2) clsx: specifier: ^1.2.1 version: 1.2.1 - postcss: - specifier: ^8.4.17 - version: 8.4.23 react: specifier: ^18.2.0 version: 18.2.0 @@ -1009,7 +988,7 @@ importers: version: 3.22.2 devDependencies: '@babel/core': - specifier: ^7.22.11 + specifier: ~7 version: 7.22.11 '@sd/config': specifier: workspace:* @@ -1021,29 +1000,23 @@ importers: specifier: ^0.5.7 version: 0.5.7(tailwindcss@3.3.2) '@types/node': - specifier: ^18.15.1 - version: 18.15.1 + specifier: ^18.17 + version: 18.17.12 '@types/react': - specifier: ^18.0.21 - version: 18.0.38 + specifier: ^18.2.0 + version: 18.2.6 '@types/react-dom': - specifier: ^18.0.6 + specifier: ^18.2.0 version: 18.2.4 autoprefixer: specifier: ^10.4.12 - version: 10.4.14(postcss@8.4.23) - babel-loader: - specifier: ^8.2.5 - version: 8.2.5(@babel/core@7.22.11)(webpack@5.88.2) + version: 10.4.14(postcss@8.4.28) + postcss: + specifier: ^8.4 + version: 8.4.28 sass: - specifier: ^1.55.0 - version: 1.55.0 - sass-loader: - specifier: ^13.0.2 - version: 13.0.2(sass@1.55.0)(webpack@5.88.2) - style-loader: - specifier: ^3.3.1 - version: 3.3.1(webpack@5.88.2) + specifier: ^1.68 + version: 1.68.0 tailwindcss: specifier: ^3.3.2 version: 3.3.2 @@ -1051,8 +1024,66 @@ importers: specifier: ^1.0.5 version: 1.0.5(tailwindcss@3.3.2) typescript: - specifier: 5.0.4 - version: 5.0.4 + specifier: ^5.2 + version: 5.2.2 + + scripts: + dependencies: + '@iarna/toml': + specifier: ^2.2.5 + version: 2.2.5 + archive-wasm: + specifier: ^1.5.3 + version: 1.5.3 + mustache: + specifier: ^4.2.0 + version: 4.2.0 + semver: + specifier: ^7.5.0 + version: 7.5.4 + undici: + specifier: ^5.25.4 + version: 5.25.4 + devDependencies: + '@babel/core': + specifier: ~7 + version: 7.22.11 + '@babel/eslint-parser': + specifier: ~7 + version: 7.22.15(@babel/core@7.22.11)(eslint@8.50.0) + '@babel/eslint-plugin': + specifier: ~7 + version: 7.22.10(@babel/eslint-parser@7.22.15)(eslint@8.50.0) + '@types/mustache': + specifier: ^4.2.3 + version: 4.2.3 + '@types/node': + specifier: ^18.17 + version: 18.17.12 + '@typescript-eslint/eslint-plugin': + specifier: ^6.7 + version: 6.7.4(@typescript-eslint/parser@6.7.4)(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/parser': + specifier: ^6.7 + version: 6.7.4(eslint@8.50.0)(typescript@5.2.2) + eslint: + specifier: ^8.50 + version: 8.50.0 + eslint-config-prettier: + specifier: ^9.0 + version: 9.0.0(eslint@8.50.0) + eslint-config-standard: + specifier: ^17.1 + version: 17.1.0(eslint-plugin-import@2.28.1)(eslint-plugin-n@16.1.0)(eslint-plugin-promise@6.1.1)(eslint@8.50.0) + eslint-plugin-jsdoc: + specifier: ^46.8 + version: 46.8.2(eslint@8.50.0) + eslint-plugin-prettier: + specifier: ^5.0 + version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.50.0)(prettier@3.0.3) + typescript: + specifier: ^5.2 + version: 5.2.2 packages: @@ -1864,6 +1895,55 @@ packages: transitivePeerDependencies: - supports-color + /@babel/core@7.23.0: + resolution: {integrity: sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.0) + '@babel/helpers': 7.23.1 + '@babel/parser': 7.23.0 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.0 + '@babel/types': 7.23.0 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/eslint-parser@7.22.15(@babel/core@7.22.11)(eslint@8.50.0): + resolution: {integrity: sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/core': 7.22.11 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.50.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + dev: true + + /@babel/eslint-plugin@7.22.10(@babel/eslint-parser@7.22.15)(eslint@8.50.0): + resolution: {integrity: sha512-SRZcvo3fnO5h79B9DZSV6LG2vHH7OWsSNp1huFLHsXKyytRG413byQk9zxW1VcPOhnzfx2VIUz+8aGbiE7fOkA==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/eslint-parser': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/eslint-parser': 7.22.15(@babel/core@7.22.11)(eslint@8.50.0) + eslint: 8.50.0 + eslint-rule-composer: 0.3.0 + dev: true + /@babel/generator@7.21.9: resolution: {integrity: sha512-F3fZga2uv09wFdEjEQIJxXALXfz0+JaOb7SabvVMmjHxeVTuGW8wgE8Vp1Hd7O+zMTYtcfEISGRzPkeiaPPsvg==} engines: {node: '>=6.9.0'} @@ -1882,6 +1962,16 @@ packages: '@jridgewell/trace-mapping': 0.3.19 jsesc: 2.5.2 + /@babel/generator@7.23.0: + resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + jsesc: 2.5.2 + dev: true + /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} @@ -1904,6 +1994,17 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 + /@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.21.10 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + /@babel/helper-create-class-features-plugin@7.22.11(@babel/core@7.21.8): resolution: {integrity: sha512-y1grdYL4WzmUDBRGK0pDbIoFd7UZKoDurDzWEoNMYoj1EL+foGRQNyPWDcC+YyegN5y1DUsFFmzjGijB3nSVAQ==} engines: {node: '>=6.9.0'} @@ -1992,6 +2093,11 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} @@ -2003,6 +2109,14 @@ packages: '@babel/template': 7.22.5 '@babel/types': 7.22.11 + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 + dev: true + /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} @@ -2015,6 +2129,13 @@ packages: dependencies: '@babel/types': 7.22.11 + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + /@babel/helper-module-imports@7.22.5: resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} engines: {node: '>=6.9.0'} @@ -2048,6 +2169,20 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.5 + /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.0): + resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} @@ -2126,10 +2261,20 @@ packages: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-identifier@7.22.5: resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-option@7.22.15: + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-option@7.22.5: resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} engines: {node: '>=6.9.0'} @@ -2152,6 +2297,17 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helpers@7.23.1: + resolution: {integrity: sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.0 + '@babel/types': 7.23.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/highlight@7.22.13: resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} @@ -2174,6 +2330,14 @@ packages: dependencies: '@babel/types': 7.22.11 + /@babel/parser@7.23.0: + resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.0 + dev: true + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.21.8): resolution: {integrity: sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==} engines: {node: '>=6.9.0'} @@ -3547,6 +3711,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.11) + dev: true /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} @@ -3557,6 +3722,16 @@ packages: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.23.0): + resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} engines: {node: '>=6.9.0'} @@ -3566,6 +3741,16 @@ packages: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.23.0): + resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} engines: {node: '>=6.9.0'} @@ -4076,6 +4261,15 @@ packages: dependencies: regenerator-runtime: 0.14.0 + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + dev: true + /@babel/template@7.22.5: resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} engines: {node: '>=6.9.0'} @@ -4118,6 +4312,24 @@ packages: transitivePeerDependencies: - supports-color + /@babel/traverse@7.23.0: + resolution: {integrity: sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/types@7.21.5: resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} engines: {node: '>=6.9.0'} @@ -4134,6 +4346,15 @@ packages: '@babel/helper-validator-identifier': 7.22.5 to-fast-properties: 2.0.0 + /@babel/types@7.23.0: + resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true + /@base2/pretty-print-object@1.0.1: resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} @@ -4176,11 +4397,11 @@ packages: dev: true optional: true - /@contentlayer/cli@0.3.2(esbuild@0.19.2): - resolution: {integrity: sha512-KLzB2z3Klbl4bU7VTJ8EaY1d17GCBFtwgvtNAVLOqUJ4LRw46+jT+qBMk8gyy7R1xDNF2H1a/yGYs8t8rlFVmg==} + /@contentlayer/cli@0.3.4(esbuild@0.19.2): + resolution: {integrity: sha512-vNDwgLuhYNu+m70NZ3XK9kexKNguuxPXg7Yvzj3B34cEilQjjzSrcTY/i+AIQm9V7uT5GGshx9ukzPf+SmoszQ==} dependencies: - '@contentlayer/core': 0.3.2(esbuild@0.19.2) - '@contentlayer/utils': 0.3.2 + '@contentlayer/core': 0.3.4(esbuild@0.19.2) + '@contentlayer/utils': 0.3.4 clipanion: 3.2.1(typanion@3.14.0) typanion: 3.14.0 transitivePeerDependencies: @@ -4190,10 +4411,10 @@ packages: - supports-color dev: false - /@contentlayer/client@0.3.2(esbuild@0.19.2): - resolution: {integrity: sha512-5m7IFd0Z8qRBAOnAYwWcf/SFe1SmtHmeV1kO4pldEuD8J/5sxKeefdGHLNnH3sxlGfeJhEdDnymJtppg8v0D8w==} + /@contentlayer/client@0.3.4(esbuild@0.19.2): + resolution: {integrity: sha512-QSlLyc3y4PtdC5lFw0L4wTZUH8BQnv2nk37hNCsPAqGf+dRO7TLAzdc+2/mVIRgK+vSH+pSOzjLsQpFxxXRTZA==} dependencies: - '@contentlayer/core': 0.3.2(esbuild@0.19.2) + '@contentlayer/core': 0.3.4(esbuild@0.19.2) transitivePeerDependencies: - '@effect-ts/otel-node' - esbuild @@ -4201,10 +4422,10 @@ packages: - supports-color dev: false - /@contentlayer/core@0.3.2(esbuild@0.19.2): - resolution: {integrity: sha512-5ZLzS3s4Lp5Tlw+U4kUUK9frYmi8sc970spJSvLSxtOTDHDE7xemGT9HSj0V4DcmIkY9TT7pCmMFRfpEv7IC6Q==} + /@contentlayer/core@0.3.4(esbuild@0.19.2): + resolution: {integrity: sha512-o68oBLwfYZ+2vtgfk1lgHxOl3LoxvRNiUfeQ8IWFWy/L4wnIkKIqLZX01zlRE5IzYM+ZMMN5V0cKQlO7DsyR9g==} peerDependencies: - esbuild: 0.17.x + esbuild: 0.17.x || 0.18.x markdown-wasm: 1.x peerDependenciesMeta: esbuild: @@ -4212,7 +4433,7 @@ packages: markdown-wasm: optional: true dependencies: - '@contentlayer/utils': 0.3.2 + '@contentlayer/utils': 0.3.4 camel-case: 4.1.2 comment-json: 4.2.3 esbuild: 0.19.2 @@ -4230,11 +4451,11 @@ packages: - supports-color dev: false - /@contentlayer/source-files@0.3.2(esbuild@0.19.2): - resolution: {integrity: sha512-VYUaUbT3Hg3fSEEKpjDdfGEkw4bl4BaLHJWf5sulrkBtjdyNJ3RwUdnsqN3i+bibhcYF4ZvnFme4xtHBuEChmw==} + /@contentlayer/source-files@0.3.4(esbuild@0.19.2): + resolution: {integrity: sha512-4njyn0OFPu7WY4tAjMxiJgWOKeiHuBOGdQ36EYE03iij/pPPRbiWbL+cmLccYXUFEW58mDwpqROZZm6pnxjRDQ==} dependencies: - '@contentlayer/core': 0.3.2(esbuild@0.19.2) - '@contentlayer/utils': 0.3.2 + '@contentlayer/core': 0.3.4(esbuild@0.19.2) + '@contentlayer/utils': 0.3.4 chokidar: 3.5.3 fast-glob: 3.3.1 gray-matter: 4.0.3 @@ -4242,7 +4463,7 @@ packages: micromatch: 4.0.5 ts-pattern: 4.3.0 unified: 10.1.2 - yaml: 1.10.2 + yaml: 2.3.2 zod: 3.22.2 transitivePeerDependencies: - '@effect-ts/otel-node' @@ -4251,12 +4472,12 @@ packages: - supports-color dev: false - /@contentlayer/source-remote-files@0.3.2(esbuild@0.19.2): - resolution: {integrity: sha512-BuABBHemn/UzhARsQh2XH13VUeb5HoRI3NkJeCGEMSnstzI72Dcc6krELwG3cTFYmgb95TV8NuIZKcrz8IsX6A==} + /@contentlayer/source-remote-files@0.3.4(esbuild@0.19.2): + resolution: {integrity: sha512-cyiv4sNUySZvR0uAKlM+kSAELzNd2h2QT1R2e41dRKbwOUVxeLfmGiLugr0aVac6Q3xYcD99dbHyR1xWPV+w9w==} dependencies: - '@contentlayer/core': 0.3.2(esbuild@0.19.2) - '@contentlayer/source-files': 0.3.2(esbuild@0.19.2) - '@contentlayer/utils': 0.3.2 + '@contentlayer/core': 0.3.4(esbuild@0.19.2) + '@contentlayer/source-files': 0.3.4(esbuild@0.19.2) + '@contentlayer/utils': 0.3.4 transitivePeerDependencies: - '@effect-ts/otel-node' - esbuild @@ -4264,8 +4485,8 @@ packages: - supports-color dev: false - /@contentlayer/utils@0.3.2: - resolution: {integrity: sha512-qQdL3PN3zKl7monHe3EXlXgq7/raApWWJ7+2n0C81ESiwdM1ZFuHU+pOIkl5JWhotTkqAqYdSvFuM+MAXF8XFg==} + /@contentlayer/utils@0.3.4: + resolution: {integrity: sha512-ZWWOhbUWYQ2QHoLIlcUnEo7X4ZbwcyFPuzVQWWMkK43BxCveyQtZwBIzfyx54sqVzi0GUmKP8bHzsLQT0QxaLQ==} peerDependencies: '@effect-ts/otel-node': '*' peerDependenciesMeta: @@ -4277,13 +4498,13 @@ packages: optional: true dependencies: '@effect-ts/core': 0.60.5 - '@effect-ts/otel': 0.14.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.4.1)(@opentelemetry/core@1.15.2)(@opentelemetry/sdk-trace-base@1.15.2) - '@effect-ts/otel-exporter-trace-otlp-grpc': 0.14.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.4.1)(@opentelemetry/core@1.15.2)(@opentelemetry/exporter-trace-otlp-grpc@0.31.0)(@opentelemetry/sdk-trace-base@1.15.2) - '@effect-ts/otel-sdk-trace-node': 0.14.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.4.1)(@opentelemetry/core@1.15.2)(@opentelemetry/sdk-trace-base@1.15.2)(@opentelemetry/sdk-trace-node@1.15.2) + '@effect-ts/otel': 0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.4.1)(@opentelemetry/core@1.15.2)(@opentelemetry/sdk-trace-base@1.15.2) + '@effect-ts/otel-exporter-trace-otlp-grpc': 0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.4.1)(@opentelemetry/core@1.15.2)(@opentelemetry/exporter-trace-otlp-grpc@0.39.1)(@opentelemetry/sdk-trace-base@1.15.2) + '@effect-ts/otel-sdk-trace-node': 0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.4.1)(@opentelemetry/core@1.15.2)(@opentelemetry/sdk-trace-base@1.15.2)(@opentelemetry/sdk-trace-node@1.15.2) '@js-temporal/polyfill': 0.4.4 '@opentelemetry/api': 1.4.1 '@opentelemetry/core': 1.15.2(@opentelemetry/api@1.4.1) - '@opentelemetry/exporter-trace-otlp-grpc': 0.31.0(@opentelemetry/api@1.4.1) + '@opentelemetry/exporter-trace-otlp-grpc': 0.39.1(@opentelemetry/api@1.4.1) '@opentelemetry/resources': 1.15.2(@opentelemetry/api@1.4.1) '@opentelemetry/sdk-trace-base': 1.15.2(@opentelemetry/api@1.4.1) '@opentelemetry/sdk-trace-node': 1.15.2(@opentelemetry/api@1.4.1) @@ -4297,18 +4518,18 @@ packages: type-fest: 3.13.1 dev: false - /@cspell/cspell-bundled-dicts@6.31.1: - resolution: {integrity: sha512-rsIev+dk1Vd8H1OKZhNhXycIVsMfeWJaeW3QUi1l4oIoGwQfJVbs1ZPZPHE5cglzyHOW1jQNStXf34UKaC6siA==} - engines: {node: '>=14'} + /@cspell/cspell-bundled-dicts@7.3.7: + resolution: {integrity: sha512-Mw7J0RAWGpEup/+eIePw3wi+OlMGNicrD1r9OhdgIgO6sHEi01ibS/RzNNbC7UziLaYEHi8+WfLyGzmp1ZISrQ==} + engines: {node: '>=16'} dependencies: '@cspell/dict-ada': 4.0.2 - '@cspell/dict-aws': 3.0.0 - '@cspell/dict-bash': 4.1.1 - '@cspell/dict-companies': 3.0.20 - '@cspell/dict-cpp': 5.0.4 - '@cspell/dict-cryptocurrencies': 3.0.1 + '@cspell/dict-aws': 4.0.0 + '@cspell/dict-bash': 4.1.2 + '@cspell/dict-companies': 3.0.25 + '@cspell/dict-cpp': 5.0.5 + '@cspell/dict-cryptocurrencies': 4.0.0 '@cspell/dict-csharp': 4.0.2 - '@cspell/dict-css': 4.0.7 + '@cspell/dict-css': 4.0.11 '@cspell/dict-dart': 2.0.3 '@cspell/dict-django': 4.1.0 '@cspell/dict-docker': 1.1.7 @@ -4316,84 +4537,99 @@ packages: '@cspell/dict-elixir': 4.0.3 '@cspell/dict-en-common-misspellings': 1.0.2 '@cspell/dict-en-gb': 1.1.33 - '@cspell/dict-en_us': 4.3.6 + '@cspell/dict-en_us': 4.3.8 '@cspell/dict-filetypes': 3.0.1 - '@cspell/dict-fonts': 3.0.2 + '@cspell/dict-fonts': 4.0.0 + '@cspell/dict-fsharp': 1.0.0 '@cspell/dict-fullstack': 3.1.5 '@cspell/dict-gaming-terms': 1.0.4 '@cspell/dict-git': 2.0.0 - '@cspell/dict-golang': 6.0.2 + '@cspell/dict-golang': 6.0.3 '@cspell/dict-haskell': 4.0.1 - '@cspell/dict-html': 4.0.3 + '@cspell/dict-html': 4.0.5 '@cspell/dict-html-symbol-entities': 4.0.0 - '@cspell/dict-java': 5.0.5 + '@cspell/dict-java': 5.0.6 '@cspell/dict-k8s': 1.0.1 '@cspell/dict-latex': 4.0.0 - '@cspell/dict-lorem-ipsum': 3.0.0 + '@cspell/dict-lorem-ipsum': 4.0.0 '@cspell/dict-lua': 4.0.1 - '@cspell/dict-node': 4.0.2 - '@cspell/dict-npm': 5.0.8 - '@cspell/dict-php': 4.0.2 + '@cspell/dict-node': 4.0.3 + '@cspell/dict-npm': 5.0.11 + '@cspell/dict-php': 4.0.3 '@cspell/dict-powershell': 5.0.2 - '@cspell/dict-public-licenses': 2.0.3 - '@cspell/dict-python': 4.1.7 + '@cspell/dict-public-licenses': 2.0.4 + '@cspell/dict-python': 4.1.9 '@cspell/dict-r': 2.0.1 '@cspell/dict-ruby': 5.0.0 '@cspell/dict-rust': 4.0.1 '@cspell/dict-scala': 5.0.0 - '@cspell/dict-software-terms': 3.2.1 + '@cspell/dict-software-terms': 3.3.3 '@cspell/dict-sql': 2.1.1 '@cspell/dict-svelte': 1.0.2 '@cspell/dict-swift': 2.0.1 - '@cspell/dict-typescript': 3.1.1 + '@cspell/dict-typescript': 3.1.2 '@cspell/dict-vue': 3.0.0 dev: true - /@cspell/cspell-pipe@6.31.1: - resolution: {integrity: sha512-zk1olZi4dr6GLm5PAjvsiZ01HURNSruUYFl1qSicGnTwYN8GaN4RhAwannAytcJ7zJPIcyXlid0YsB58nJf3wQ==} - engines: {node: '>=14'} + /@cspell/cspell-json-reporter@7.3.7: + resolution: {integrity: sha512-bogUQKKZWLttZtxFKjpzHuliIha/ByV2km18gm8dA2uB3IrzD1UJy4sCE8lnaodm6n3VtjnViSkQ5XIVU3gAKQ==} + engines: {node: '>=16'} + dependencies: + '@cspell/cspell-types': 7.3.7 dev: true - /@cspell/cspell-service-bus@6.31.1: - resolution: {integrity: sha512-YyBicmJyZ1uwKVxujXw7sgs9x+Eps43OkWmCtDZmZlnq489HdTSuhF1kTbVi2yeFSeaXIS87+uHo12z97KkQpg==} - engines: {node: '>=14'} + /@cspell/cspell-pipe@7.3.7: + resolution: {integrity: sha512-ZO8v3EwGhjUvhPo1S48+CKv7EPXMoYF7LGERB34K8EXFByb9+J74ojMYj9UgLRV68lFTrDFde3bHoZPPVS1FsA==} + engines: {node: '>=16'} dev: true - /@cspell/cspell-types@6.31.1: - resolution: {integrity: sha512-1KeTQFiHMssW1eRoF2NZIEg4gPVIfXLsL2+VSD/AV6YN7lBcuf6gRRgV5KWYarhxtEfjxhDdDTmu26l/iJEUtw==} - engines: {node: '>=14'} + /@cspell/cspell-resolver@7.3.7: + resolution: {integrity: sha512-WWZcTI5f2cCjr1yRDTMkcVg7Meil3s+0aaKcLCDTGQf9J2UWWjpqDJ6M6keYei3paAjxW2Pk03IRNNwdA3+igQ==} + engines: {node: '>=16'} + dependencies: + global-dirs: 3.0.1 + dev: true + + /@cspell/cspell-service-bus@7.3.7: + resolution: {integrity: sha512-pnDOFpjht7dZYydMygcf0brCSk5BGRvbeWRH6MaMhd+3CdyzyEvtZG3IbBQVNyVvDTA2c/K3rljOAo8y3/lpnw==} + engines: {node: '>=16'} + dev: true + + /@cspell/cspell-types@7.3.7: + resolution: {integrity: sha512-zM2BuZJ3UUgPwF78bssggi8X20nmW3a95EmbNJKfbO6Zf2ui7UMzeP3BwpCZk30A/EixGlFhLf6Xd+eBT/DQqw==} + engines: {node: '>=16'} dev: true /@cspell/dict-ada@4.0.2: resolution: {integrity: sha512-0kENOWQeHjUlfyId/aCM/mKXtkEgV0Zu2RhUXCBr4hHo9F9vph+Uu8Ww2b0i5a4ZixoIkudGA+eJvyxrG1jUpA==} dev: true - /@cspell/dict-aws@3.0.0: - resolution: {integrity: sha512-O1W6nd5y3Z00AMXQMzfiYrIJ1sTd9fB1oLr+xf/UD7b3xeHeMeYE2OtcWbt9uyeHim4tk+vkSTcmYEBKJgS5bQ==} + /@cspell/dict-aws@4.0.0: + resolution: {integrity: sha512-1YkCMWuna/EGIDN/zKkW+j98/55mxigftrSFgsehXhPld+ZMJM5J9UuBA88YfL7+/ETvBdd7mwW6IwWsC+/ltQ==} dev: true - /@cspell/dict-bash@4.1.1: - resolution: {integrity: sha512-8czAa/Mh96wu2xr0RXQEGMTBUGkTvYn/Pb0o+gqOO1YW+poXGQc3gx0YPqILDryP/KCERrNvkWUJz3iGbvwC2A==} + /@cspell/dict-bash@4.1.2: + resolution: {integrity: sha512-AEBWjbaMaJEyAjOHW0F15P2izBjli2cNerG3NjuVH7xX/HUUeNoTj8FF1nwpMufKwGQCvuyO2hCmkVxhJ0y55Q==} dev: true - /@cspell/dict-companies@3.0.20: - resolution: {integrity: sha512-o13HaqYxkWo20FC5iU9PHKMFexY9D7/XeSj9tvBzy3sEzW324zw5MWEkeDszwmC/GsLZtot+5vopCv6/evRNlA==} + /@cspell/dict-companies@3.0.25: + resolution: {integrity: sha512-7phQlGJ/4qCx9fQg/kR8YV0n5TPak4+eleQ7M/e7uhsQR8TwOWsPU1dW23WABoTqJbYCgdUYLxqjQ8458w7jZQ==} dev: true - /@cspell/dict-cpp@5.0.4: - resolution: {integrity: sha512-Vmz/CCb2d91ES5juaO8+CFWeTa2AFsbpR8bkCPJq+P8cRP16+37tY0zNXEBSK/1ur4MakaRf76jeQBijpZxw0Q==} + /@cspell/dict-cpp@5.0.5: + resolution: {integrity: sha512-ojCpQ4z+sHHLJYfvA3SApqQ1BjO/k3TUdDgqR3sVhFl5qjT9yz1/srBNzqCaBBSz/fiO5A8NKdSA9+IFrUHcig==} dev: true - /@cspell/dict-cryptocurrencies@3.0.1: - resolution: {integrity: sha512-Tdlr0Ahpp5yxtwM0ukC13V6+uYCI0p9fCRGMGZt36rWv8JQZHIuHfehNl7FB/Qc09NCF7p5ep0GXbL+sVTd/+w==} + /@cspell/dict-cryptocurrencies@4.0.0: + resolution: {integrity: sha512-EiZp91ATyRxTmauIQfOX9adLYCunKjHEh092rrM7o2eMXP9n7zpXAL9BK7LviL+LbB8VDOm21q+s83cKrrRrsg==} dev: true /@cspell/dict-csharp@4.0.2: resolution: {integrity: sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g==} dev: true - /@cspell/dict-css@4.0.7: - resolution: {integrity: sha512-NNlUTx/sYg+74kC0EtRewb7pjkEtPlIsu9JFNWAXa0JMTqqpQXqM3aEO4QJvUZFZF09bObeCAvzzxemAwxej7Q==} + /@cspell/dict-css@4.0.11: + resolution: {integrity: sha512-kHQqg3/3Xra2Xki3K4e6s3BHDw5L82geie4q7jRBxQ9CofIgVEMcOqTr2QWKgIWegmACEe7B/CIMH35d4eiafA==} dev: true /@cspell/dict-dart@2.0.3: @@ -4428,16 +4664,20 @@ packages: resolution: {integrity: sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==} dev: true - /@cspell/dict-en_us@4.3.6: - resolution: {integrity: sha512-odhgsjNZI9BtEOJdvqfAuv/3yz5aB1ngfBNaph7WSnYVt//9e3fhrElZ6/pIIkoyuGgeQPwz1fXt+tMgcnLSEQ==} + /@cspell/dict-en_us@4.3.8: + resolution: {integrity: sha512-rCPsbDHuRnFUbzWAY6O1H9+cLZt5FNQwjPVw2TdQZfipdb0lim984aLGY+nupi1iKC3lfjyd5SVUgmSZEG1QNA==} dev: true /@cspell/dict-filetypes@3.0.1: resolution: {integrity: sha512-8z8mY1IbrTyTRumx2vvD9yzRhNMk9SajM/GtI5hdMM2pPpNSp25bnuauzjRf300eqlqPY2MNb5MmhBFO014DJw==} dev: true - /@cspell/dict-fonts@3.0.2: - resolution: {integrity: sha512-Z5QdbgEI7DV+KPXrAeDA6dDm/vTzyaW53SGlKqz6PI5VhkOjgkBXv3YtZjnxMZ4dY2ZIqq+RUK6qa9Pi8rQdGQ==} + /@cspell/dict-fonts@4.0.0: + resolution: {integrity: sha512-t9V4GeN/m517UZn63kZPUYP3OQg5f0OBLSd3Md5CU3eH1IFogSvTzHHnz4Wqqbv8NNRiBZ3HfdY/pqREZ6br3Q==} + dev: true + + /@cspell/dict-fsharp@1.0.0: + resolution: {integrity: sha512-dHPkMHwW4dWv3Lv9VWxHuVm4IylqvcfRBSnZ7usJTRThraetSVrOPIJwr6UJh7F5un/lGJx2lxWVApf2WQaB/A==} dev: true /@cspell/dict-fullstack@3.1.5: @@ -4452,8 +4692,8 @@ packages: resolution: {integrity: sha512-n1AxyX5Kgxij/sZFkxFJlzn3K9y/sCcgVPg/vz4WNJ4K9YeTsUmyGLA2OQI7d10GJeiuAo2AP1iZf2A8j9aj2w==} dev: true - /@cspell/dict-golang@6.0.2: - resolution: {integrity: sha512-5pyZn4AAiYukAW+gVMIMVmUSkIERFrDX2vtPDjg8PLQUhAHWiVeQSDjuOhq9/C5GCCEZU/zWSONkGiwLBBvV9A==} + /@cspell/dict-golang@6.0.3: + resolution: {integrity: sha512-KiNnjAeqDBq6zH4s46hzBrKgqIrkSZ9bbHzQ54PbHfe+jurZkSZ4lXz6E+315RNh2TkRLcNppFvaZqJvKZXomA==} dev: true /@cspell/dict-haskell@4.0.1: @@ -4464,12 +4704,12 @@ packages: resolution: {integrity: sha512-HGRu+48ErJjoweR5IbcixxETRewrBb0uxQBd6xFGcxbEYCX8CnQFTAmKI5xNaIt2PKaZiJH3ijodGSqbKdsxhw==} dev: true - /@cspell/dict-html@4.0.3: - resolution: {integrity: sha512-Gae8i8rrArT0UyG1I6DHDK62b7Be6QEcBSIeWOm4VIIW1CASkN9B0qFgSVnkmfvnu1Y3H7SSaaEynKjdj3cs8w==} + /@cspell/dict-html@4.0.5: + resolution: {integrity: sha512-p0brEnRybzSSWi8sGbuVEf7jSTDmXPx7XhQUb5bgG6b54uj+Z0Qf0V2n8b/LWwIPJNd1GygaO9l8k3HTCy1h4w==} dev: true - /@cspell/dict-java@5.0.5: - resolution: {integrity: sha512-X19AoJgWIBwJBSWGFqSgHaBR/FEykBHTMjL6EqOnhIGEyE9nvuo32tsSHjXNJ230fQxQptEvRZoaldNLtKxsRg==} + /@cspell/dict-java@5.0.6: + resolution: {integrity: sha512-kdE4AHHHrixyZ5p6zyms1SLoYpaJarPxrz8Tveo6gddszBVVwIUZ+JkQE1bWNLK740GWzIXdkznpUfw1hP9nXw==} dev: true /@cspell/dict-k8s@1.0.1: @@ -4480,36 +4720,36 @@ packages: resolution: {integrity: sha512-LPY4y6D5oI7D3d+5JMJHK/wxYTQa2lJMSNxps2JtuF8hbAnBQb3igoWEjEbIbRRH1XBM0X8dQqemnjQNCiAtxQ==} dev: true - /@cspell/dict-lorem-ipsum@3.0.0: - resolution: {integrity: sha512-msEV24qEpzWZs2kcEicqYlhyBpR0amfDkJOs+iffC07si9ftqtQ+yP3lf1VFLpgqw3SQh1M1vtU7RD4sPrNlcQ==} + /@cspell/dict-lorem-ipsum@4.0.0: + resolution: {integrity: sha512-1l3yjfNvMzZPibW8A7mQU4kTozwVZVw0AvFEdy+NcqtbxH+TvbSkNMqROOFWrkD2PjnKG0+Ea0tHI2Pi6Gchnw==} dev: true /@cspell/dict-lua@4.0.1: resolution: {integrity: sha512-j0MFmeCouSoC6EdZTbvGe1sJ9V+ruwKSeF+zRkNNNload7R72Co5kX1haW2xLHGdlq0kqSy1ODRZKdVl0e+7hg==} dev: true - /@cspell/dict-node@4.0.2: - resolution: {integrity: sha512-FEQJ4TnMcXEFslqBQkXa5HposMoCGsiBv2ux4IZuIXgadXeHKHUHk60iarWpjhzNzQLyN2GD7NoRMd12bK3Llw==} + /@cspell/dict-node@4.0.3: + resolution: {integrity: sha512-sFlUNI5kOogy49KtPg8SMQYirDGIAoKBO3+cDLIwD4MLdsWy1q0upc7pzGht3mrjuyMiPRUV14Bb0rkVLrxOhg==} dev: true - /@cspell/dict-npm@5.0.8: - resolution: {integrity: sha512-KuqH8tEsFD6DPKqKwIfWr9E+admE3yghaC0AKXG8jPaf77N0lkctKaS3dm0oxWUXkYKA/eXj6LCtz3VcTyxFPg==} + /@cspell/dict-npm@5.0.11: + resolution: {integrity: sha512-QlgF92q29mT0LbNqlDHb3UgY5jCLcSn+GnA1pvD5ps/zw2LhVl+ZXMHExwSIi7gwTzP3IyJ1f/dT6rnw9wic4A==} dev: true - /@cspell/dict-php@4.0.2: - resolution: {integrity: sha512-7yglcmMoFHDPQXHW+9QAl8YjAToMm1qOi+4x/yGY1FSIEjZbCpjeDgyKMGg/NgpooQQceEN38AR59Pn23EDriA==} + /@cspell/dict-php@4.0.3: + resolution: {integrity: sha512-PxtSmWJCDEB4M8R9ER9ijxBum/tvUqYT26QeuV58q2IFs5IrPZ6hocQKvnFGXItjCWH4oYXyAEAAzINlBC4Opg==} dev: true /@cspell/dict-powershell@5.0.2: resolution: {integrity: sha512-IHfWLme3FXE7vnOmMncSBxOsMTdNWd1Vcyhag03WS8oANSgX8IZ+4lMI00mF0ptlgchf16/OU8WsV4pZfikEFw==} dev: true - /@cspell/dict-public-licenses@2.0.3: - resolution: {integrity: sha512-JSLEdpEYufQ1H+93UHi+axlqQm1fhgK6kpdLHp6uPHu//CsvETcqNVawjB+qOdI/g38JTMw5fBqSd0aGNxa6Dw==} + /@cspell/dict-public-licenses@2.0.4: + resolution: {integrity: sha512-KjsfuGwMWvPkp6s0nR+s4mZc9SQhh1tHDOyQZfEVRwi+2ev7f8l7R6ts9sP2Mplb8UcxwO6YmKwxHjN+XHoMoA==} dev: true - /@cspell/dict-python@4.1.7: - resolution: {integrity: sha512-8GkO7/w1QEpu4Y1GTHGYHrwfc/ZdiBRw7D/BGYCIiOoQPLi0YxMke7wzRC3j246yrzLt28ntDBjr4fB3+uFZtQ==} + /@cspell/dict-python@4.1.9: + resolution: {integrity: sha512-JMA4v/ZPJWuDt3PPFz+23VIY3iDIB+xOTQ6nw+WkcJU5yr6FUl5zMU9ModKrgujg3jGRuuJqofErZVPqHNHYAA==} dependencies: '@cspell/dict-data-science': 1.0.11 dev: true @@ -4522,10 +4762,6 @@ packages: resolution: {integrity: sha512-ssb96QxLZ76yPqFrikWxItnCbUKhYXJ2owkoIYzUGNFl2CHSoHCb5a6Zetum9mQ/oUA3gNeUhd28ZUlXs0la2A==} dev: true - /@cspell/dict-rust@2.0.1: - resolution: {integrity: sha512-ATDpIh0VWpQdUIZa8zqqJY4wQz3q00BTXlQCodeOmObYSb23+L6KWWzJ8mKLgpbc1lqTkogWrqxiCxlrCmqNmg==} - dev: true - /@cspell/dict-rust@4.0.1: resolution: {integrity: sha512-xJSSzHDK2z6lSVaOmMxl3PTOtfoffaxMo7fTcbZUF+SCJzfKbO6vnN9TCGX2sx1RHFDz66Js6goz6SAZQdOwaw==} dev: true @@ -4534,8 +4770,8 @@ packages: resolution: {integrity: sha512-ph0twaRoV+ylui022clEO1dZ35QbeEQaKTaV2sPOsdwIokABPIiK09oWwGK9qg7jRGQwVaRPEq0Vp+IG1GpqSQ==} dev: true - /@cspell/dict-software-terms@3.2.1: - resolution: {integrity: sha512-+QXmyoONVc/3aNgKW+0F0u3XUCRTfNRkWKLZQA78i+9fOfde8ZT4JmROmZgRveH/MxD4n6pNFceIRcYI6C8WuQ==} + /@cspell/dict-software-terms@3.3.3: + resolution: {integrity: sha512-JKxBPyubapWkeekGquJYo5MLZe1TXAWAC8bqxuarG0cYkWoa7wIqCNH6/9OywRFSBzIYCgoVu2xDP1yRqTEokg==} dev: true /@cspell/dict-sql@2.1.1: @@ -4550,28 +4786,24 @@ packages: resolution: {integrity: sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw==} dev: true - /@cspell/dict-typescript@2.0.2: - resolution: {integrity: sha512-OIoSJsCw9WHX4eDikoF5/0QbptMPZjElOcMYdYCyV03nqV5n4ot72ysTexW95yW4+fQU6uDPNQvnrUnhXXEkTA==} - dev: true - - /@cspell/dict-typescript@3.1.1: - resolution: {integrity: sha512-N9vNJZoOXmmrFPR4ir3rGvnqqwmQGgOYoL1+y6D4oIhyr7FhaYiyF/d7QT61RmjZQcATMa6PSL+ZisCeRLx9+A==} + /@cspell/dict-typescript@3.1.2: + resolution: {integrity: sha512-lcNOYWjLUvDZdLa0UMNd/LwfVdxhE9rKA+agZBGjL3lTA3uNvH7IUqSJM/IXhJoBpLLMVEOk8v1N9xi+vDuCdA==} dev: true /@cspell/dict-vue@3.0.0: resolution: {integrity: sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==} dev: true - /@cspell/dynamic-import@6.31.1: - resolution: {integrity: sha512-uliIUv9uZlnyYmjUlcw/Dm3p0xJOEnWJNczHAfqAl4Ytg6QZktw0GtUA9b1umbRXLv0KRTPtSC6nMq3cR7rRmQ==} - engines: {node: '>=14'} + /@cspell/dynamic-import@7.3.7: + resolution: {integrity: sha512-ac52OLDMYBHkRQ8XzihOWnyfqri3M84ELTZdqBhR5YGcHW/mxKhsmXqudA980SdRRKaicD39yhX4idAFb4AsDg==} + engines: {node: '>=16'} dependencies: - import-meta-resolve: 2.2.2 + import-meta-resolve: 3.0.0 dev: true - /@cspell/strong-weak-map@6.31.1: - resolution: {integrity: sha512-z8AuWvUuSnugFKJOA9Ke0aiFuehcqLFqia9bk8XaQNEWr44ahPVn3sEWnAncTxPbpWuUw5UajoJa0egRAE1CCg==} - engines: {node: '>=14.6'} + /@cspell/strong-weak-map@7.3.7: + resolution: {integrity: sha512-n+jRgwH0wU+HsfqgCGVzPmWnZl4SyhtvPxusKwXj6L/STGdt8IP2rYl1PFOtyvgjPjh8xXe/jRrq7zH07btiKA==} + engines: {node: '>=16'} dev: true /@daybrush/utils@1.13.0: @@ -4589,47 +4821,47 @@ packages: '@effect-ts/system': 0.57.5 dev: false - /@effect-ts/otel-exporter-trace-otlp-grpc@0.14.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.4.1)(@opentelemetry/core@1.15.2)(@opentelemetry/exporter-trace-otlp-grpc@0.31.0)(@opentelemetry/sdk-trace-base@1.15.2): - resolution: {integrity: sha512-eb6dJhVKnjS1v8afdPm+wuZ3JeX2Gt3GJA9Vw5D2aESE7wa3mrpElsNNbDXn6rhgyjZq3VWYY/NXVtLAFOQIbQ==} + /@effect-ts/otel-exporter-trace-otlp-grpc@0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.4.1)(@opentelemetry/core@1.15.2)(@opentelemetry/exporter-trace-otlp-grpc@0.39.1)(@opentelemetry/sdk-trace-base@1.15.2): + resolution: {integrity: sha512-47gAg0O2pW5Jlo86jfzjdkwL5a7Bzb+Kj5WTmdu4CxYRfWn9ytKjuuYIfsNDW8neuhdKzn+P5wCddgEh0glYyQ==} peerDependencies: '@effect-ts/core': ^0.60.2 - '@opentelemetry/api': ^1.1.0 - '@opentelemetry/core': ^1.5.0 - '@opentelemetry/exporter-trace-otlp-grpc': ^0.31.0 - '@opentelemetry/sdk-trace-base': ^1.5.0 + '@opentelemetry/api': ^1.4.0 + '@opentelemetry/core': ^1.13.0 + '@opentelemetry/exporter-trace-otlp-grpc': ^0.39.0 + '@opentelemetry/sdk-trace-base': ^1.13.0 dependencies: '@effect-ts/core': 0.60.5 - '@effect-ts/otel': 0.14.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.4.1)(@opentelemetry/core@1.15.2)(@opentelemetry/sdk-trace-base@1.15.2) + '@effect-ts/otel': 0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.4.1)(@opentelemetry/core@1.15.2)(@opentelemetry/sdk-trace-base@1.15.2) '@opentelemetry/api': 1.4.1 '@opentelemetry/core': 1.15.2(@opentelemetry/api@1.4.1) - '@opentelemetry/exporter-trace-otlp-grpc': 0.31.0(@opentelemetry/api@1.4.1) + '@opentelemetry/exporter-trace-otlp-grpc': 0.39.1(@opentelemetry/api@1.4.1) '@opentelemetry/sdk-trace-base': 1.15.2(@opentelemetry/api@1.4.1) dev: false - /@effect-ts/otel-sdk-trace-node@0.14.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.4.1)(@opentelemetry/core@1.15.2)(@opentelemetry/sdk-trace-base@1.15.2)(@opentelemetry/sdk-trace-node@1.15.2): - resolution: {integrity: sha512-j5ynRvd0H+Fp9aH/5NOtBd1ogNMpNB3r7uiXOKRPlfKUOtdx4KsCt2cPBjChMvyLstj8dkjtWE4loLSTYkWPuA==} + /@effect-ts/otel-sdk-trace-node@0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.4.1)(@opentelemetry/core@1.15.2)(@opentelemetry/sdk-trace-base@1.15.2)(@opentelemetry/sdk-trace-node@1.15.2): + resolution: {integrity: sha512-a2sF0ylmn8xOJs8fNeT/spJ1gUcsksAJCALxo9WOfuTCMtTwMVtVhCKEPEeQoL7wFqU+JgPkVdP91+FJ/Rkeow==} peerDependencies: '@effect-ts/core': ^0.60.2 - '@opentelemetry/api': ^1.1.0 - '@opentelemetry/core': ^1.5.0 - '@opentelemetry/sdk-trace-base': ^1.5.0 - '@opentelemetry/sdk-trace-node': ^1.5.0 + '@opentelemetry/api': ^1.4.0 + '@opentelemetry/core': ^1.13.0 + '@opentelemetry/sdk-trace-base': ^1.13.0 + '@opentelemetry/sdk-trace-node': ^1.13.0 dependencies: '@effect-ts/core': 0.60.5 - '@effect-ts/otel': 0.14.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.4.1)(@opentelemetry/core@1.15.2)(@opentelemetry/sdk-trace-base@1.15.2) + '@effect-ts/otel': 0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.4.1)(@opentelemetry/core@1.15.2)(@opentelemetry/sdk-trace-base@1.15.2) '@opentelemetry/api': 1.4.1 '@opentelemetry/core': 1.15.2(@opentelemetry/api@1.4.1) '@opentelemetry/sdk-trace-base': 1.15.2(@opentelemetry/api@1.4.1) '@opentelemetry/sdk-trace-node': 1.15.2(@opentelemetry/api@1.4.1) dev: false - /@effect-ts/otel@0.14.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.4.1)(@opentelemetry/core@1.15.2)(@opentelemetry/sdk-trace-base@1.15.2): - resolution: {integrity: sha512-WtkxdoM1M8bl7F1mrSwBZQJAIaUXcupePrllL7iZnvSfUVhYXV98gRTV6EiVT+prX7rzCW4wPkF/XsyWbtMDtA==} + /@effect-ts/otel@0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.4.1)(@opentelemetry/core@1.15.2)(@opentelemetry/sdk-trace-base@1.15.2): + resolution: {integrity: sha512-AmZJHl7t0+Peh7Yb2+hqn6r9+rd9/UfeA4AMV9h0YGTdOyouyFfD3wzWlxnAUzAQ4Lrod4kC7Noruret4EpqpA==} peerDependencies: '@effect-ts/core': ^0.60.2 - '@opentelemetry/api': ^1.1.0 - '@opentelemetry/core': ^1.5.0 - '@opentelemetry/sdk-trace-base': ^1.5.0 + '@opentelemetry/api': ^1.4.0 + '@opentelemetry/core': ^1.13.0 + '@opentelemetry/sdk-trace-base': ^1.13.0 dependencies: '@effect-ts/core': 0.60.5 '@opentelemetry/api': 1.4.1 @@ -4684,6 +4916,15 @@ packages: react: 18.2.0 dev: false + /@es-joy/jsdoccomment@0.40.1: + resolution: {integrity: sha512-YORCdZSusAlBrFpZ77pJjc5r1bQs5caPWtAu+WWmiSo+8XaUzseapVrfAtiRFbQWnrBxxLLEwF6f6ZG/UgCQCg==} + engines: {node: '>=16'} + dependencies: + comment-parser: 1.4.0 + esquery: 1.5.0 + jsdoc-type-pratt-parser: 4.0.0 + dev: true + /@esbuild-plugins/node-resolve@0.1.4(esbuild@0.19.2): resolution: {integrity: sha512-haFQ0qhxEpqtWWY0kx1Y5oE3sMyO1PcoSiWEPrAw6tm/ZOOLXjSs6Q+v1v9eyuVF0nNt50YEvrcrvENmyoMv5g==} peerDependencies: @@ -4706,6 +4947,14 @@ packages: requiresBuild: true optional: true + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + /@esbuild/android-arm64@0.19.2: resolution: {integrity: sha512-lsB65vAbe90I/Qe10OjkmrdxSX4UJDjosDgb8sZUKcg3oefEuW2OT2Vozz8ef7wrJbMcmhvCC+hciF8jY/uAkw==} engines: {node: '>=12'} @@ -4732,6 +4981,14 @@ packages: requiresBuild: true optional: true + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + /@esbuild/android-arm@0.19.2: resolution: {integrity: sha512-tM8yLeYVe7pRyAu9VMi/Q7aunpLwD139EY1S99xbQkT4/q2qa6eA4ige/WJQYdJ8GBL1K33pPFhPfPdJ/WzT8Q==} engines: {node: '>=12'} @@ -4749,6 +5006,14 @@ packages: requiresBuild: true optional: true + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + optional: true + /@esbuild/android-x64@0.19.2: resolution: {integrity: sha512-qK/TpmHt2M/Hg82WXHRc/W/2SGo/l1thtDHZWqFq7oi24AjZ4O/CpPSu6ZuYKFkEgmZlFoa7CooAyYmuvnaG8w==} engines: {node: '>=12'} @@ -4766,6 +5031,14 @@ packages: requiresBuild: true optional: true + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + /@esbuild/darwin-arm64@0.19.2: resolution: {integrity: sha512-Ora8JokrvrzEPEpZO18ZYXkH4asCdc1DLdcVy8TGf5eWtPO1Ie4WroEJzwI52ZGtpODy3+m0a2yEX9l+KUn0tA==} engines: {node: '>=12'} @@ -4783,6 +5056,14 @@ packages: requiresBuild: true optional: true + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + /@esbuild/darwin-x64@0.19.2: resolution: {integrity: sha512-tP+B5UuIbbFMj2hQaUr6EALlHOIOmlLM2FK7jeFBobPy2ERdohI4Ka6ZFjZ1ZYsrHE/hZimGuU90jusRE0pwDw==} engines: {node: '>=12'} @@ -4800,6 +5081,14 @@ packages: requiresBuild: true optional: true + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + optional: true + /@esbuild/freebsd-arm64@0.19.2: resolution: {integrity: sha512-YbPY2kc0acfzL1VPVK6EnAlig4f+l8xmq36OZkU0jzBVHcOTyQDhnKQaLzZudNJQyymd9OqQezeaBgkTGdTGeQ==} engines: {node: '>=12'} @@ -4817,6 +5106,14 @@ packages: requiresBuild: true optional: true + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + optional: true + /@esbuild/freebsd-x64@0.19.2: resolution: {integrity: sha512-nSO5uZT2clM6hosjWHAsS15hLrwCvIWx+b2e3lZ3MwbYSaXwvfO528OF+dLjas1g3bZonciivI8qKR/Hm7IWGw==} engines: {node: '>=12'} @@ -4834,6 +5131,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-arm64@0.19.2: resolution: {integrity: sha512-ig2P7GeG//zWlU0AggA3pV1h5gdix0MA3wgB+NsnBXViwiGgY77fuN9Wr5uoCrs2YzaYfogXgsWZbm+HGr09xg==} engines: {node: '>=12'} @@ -4851,6 +5156,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-arm@0.19.2: resolution: {integrity: sha512-Odalh8hICg7SOD7XCj0YLpYCEc+6mkoq63UnExDCiRA2wXEmGlK5JVrW50vZR9Qz4qkvqnHcpH+OFEggO3PgTg==} engines: {node: '>=12'} @@ -4868,6 +5181,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-ia32@0.19.2: resolution: {integrity: sha512-mLfp0ziRPOLSTek0Gd9T5B8AtzKAkoZE70fneiiyPlSnUKKI4lp+mGEnQXcQEHLJAcIYDPSyBvsUbKUG2ri/XQ==} engines: {node: '>=12'} @@ -4894,6 +5215,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-loong64@0.19.2: resolution: {integrity: sha512-hn28+JNDTxxCpnYjdDYVMNTR3SKavyLlCHHkufHV91fkewpIyQchS1d8wSbmXhs1fiYDpNww8KTFlJ1dHsxeSw==} engines: {node: '>=12'} @@ -4911,6 +5240,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-mips64el@0.19.2: resolution: {integrity: sha512-KbXaC0Sejt7vD2fEgPoIKb6nxkfYW9OmFUK9XQE4//PvGIxNIfPk1NmlHmMg6f25x57rpmEFrn1OotASYIAaTg==} engines: {node: '>=12'} @@ -4928,6 +5265,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-ppc64@0.19.2: resolution: {integrity: sha512-dJ0kE8KTqbiHtA3Fc/zn7lCd7pqVr4JcT0JqOnbj4LLzYnp+7h8Qi4yjfq42ZlHfhOCM42rBh0EwHYLL6LEzcw==} engines: {node: '>=12'} @@ -4945,6 +5290,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-riscv64@0.19.2: resolution: {integrity: sha512-7Z/jKNFufZ/bbu4INqqCN6DDlrmOTmdw6D0gH+6Y7auok2r02Ur661qPuXidPOJ+FSgbEeQnnAGgsVynfLuOEw==} engines: {node: '>=12'} @@ -4962,6 +5315,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-s390x@0.19.2: resolution: {integrity: sha512-U+RinR6aXXABFCcAY4gSlv4CL1oOVvSSCdseQmGO66H+XyuQGZIUdhG56SZaDJQcLmrSfRmx5XZOWyCJPRqS7g==} engines: {node: '>=12'} @@ -4979,6 +5340,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-x64@0.19.2: resolution: {integrity: sha512-oxzHTEv6VPm3XXNaHPyUTTte+3wGv7qVQtqaZCrgstI16gCuhNOtBXLEBkBREP57YTd68P0VgDgG73jSD8bwXQ==} engines: {node: '>=12'} @@ -4996,6 +5365,14 @@ packages: requiresBuild: true optional: true + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + optional: true + /@esbuild/netbsd-x64@0.19.2: resolution: {integrity: sha512-WNa5zZk1XpTTwMDompZmvQLHszDDDN7lYjEHCUmAGB83Bgs20EMs7ICD+oKeT6xt4phV4NDdSi/8OfjPbSbZfQ==} engines: {node: '>=12'} @@ -5013,6 +5390,14 @@ packages: requiresBuild: true optional: true + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + optional: true + /@esbuild/openbsd-x64@0.19.2: resolution: {integrity: sha512-S6kI1aT3S++Dedb7vxIuUOb3oAxqxk2Rh5rOXOTYnzN8JzW1VzBd+IqPiSpgitu45042SYD3HCoEyhLKQcDFDw==} engines: {node: '>=12'} @@ -5030,6 +5415,14 @@ packages: requiresBuild: true optional: true + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + optional: true + /@esbuild/sunos-x64@0.19.2: resolution: {integrity: sha512-VXSSMsmb+Z8LbsQGcBMiM+fYObDNRm8p7tkUDMPG/g4fhFX5DEFmjxIEa3N8Zr96SjsJ1woAhF0DUnS3MF3ARw==} engines: {node: '>=12'} @@ -5047,6 +5440,14 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + /@esbuild/win32-arm64@0.19.2: resolution: {integrity: sha512-5NayUlSAyb5PQYFAU9x3bHdsqB88RC3aM9lKDAz4X1mo/EchMIT1Q+pSeBXNgkfNmRecLXA0O8xP+x8V+g/LKg==} engines: {node: '>=12'} @@ -5064,6 +5465,14 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + /@esbuild/win32-ia32@0.19.2: resolution: {integrity: sha512-47gL/ek1v36iN0wL9L4Q2MFdujR0poLZMJwhO2/N3gA89jgHp4MR8DKCmwYtGNksbfJb9JoTtbkoe6sDhg2QTA==} engines: {node: '>=12'} @@ -5081,6 +5490,14 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + /@esbuild/win32-x64@0.19.2: resolution: {integrity: sha512-tcuhV7ncXBqbt/Ybf0IyrMcwVOAPDckMK9rXNHtF17UTK18OKLpg08glminN06pt2WCoALhXdLfSPbVvK/6fxw==} engines: {node: '>=12'} @@ -5090,23 +5507,13 @@ packages: dev: false optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.41.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.50.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.41.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.48.0 + eslint: 8.50.0 eslint-visitor-keys: 3.4.3 dev: true @@ -5132,13 +5539,8 @@ packages: - supports-color dev: true - /@eslint/js@8.41.0: - resolution: {integrity: sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@eslint/js@8.48.0: - resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} + /@eslint/js@8.50.0: + resolution: {integrity: sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -5475,6 +5877,11 @@ packages: /@fal-works/esbuild-plugin-global-externals@2.1.2: resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} + /@fastify/busboy@2.0.0: + resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==} + engines: {node: '>=14'} + dev: false + /@floating-ui/core@0.7.3: resolution: {integrity: sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==} dev: false @@ -5498,7 +5905,7 @@ packages: '@floating-ui/utils': 0.1.1 dev: false - /@floating-ui/react-dom@0.7.2(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@floating-ui/react-dom@0.7.2(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==} peerDependencies: react: '>=16.8.0' @@ -5507,7 +5914,7 @@ packages: '@floating-ui/dom': 0.5.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - use-isomorphic-layout-effect: 1.1.2(@types/react@18.0.38)(react@18.2.0) + use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.6)(react@18.2.0) transitivePeerDependencies: - '@types/react' dev: false @@ -5535,7 +5942,7 @@ packages: resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} dev: false - /@gorhom/bottom-sheet@4.4.7(@types/react@18.0.38)(react-native-gesture-handler@2.12.1)(react-native-reanimated@3.4.2)(react-native@0.72.4)(react@18.2.0): + /@gorhom/bottom-sheet@4.4.7(@types/react@18.2.6)(react-native-gesture-handler@2.12.1)(react-native-reanimated@3.4.2)(react-native@0.72.4)(react@18.2.0): resolution: {integrity: sha512-ukTuTqDQi2heo68hAJsBpUQeEkdqP9REBcn47OpuvPKhdPuO1RBOOADjqXJNCnZZRcY+HqbnGPMSLFVc31zylQ==} peerDependencies: '@types/react': '*' @@ -5551,7 +5958,7 @@ packages: optional: true dependencies: '@gorhom/portal': 1.0.14(react-native@0.72.4)(react@18.2.0) - '@types/react': 18.0.38 + '@types/react': 18.2.6 invariant: 2.2.4 react: 18.2.0 react-native: 0.72.4(@babel/core@7.22.11)(@babel/preset-env@7.22.10)(react@18.2.0) @@ -5586,18 +5993,6 @@ packages: '@types/node': 18.17.12 dev: false - /@grpc/proto-loader@0.6.13: - resolution: {integrity: sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g==} - engines: {node: '>=6'} - hasBin: true - dependencies: - '@types/long': 4.0.2 - lodash.camelcase: 4.3.0 - long: 4.0.0 - protobufjs: 6.11.4 - yargs: 16.2.0 - dev: false - /@grpc/proto-loader@0.7.9: resolution: {integrity: sha512-YJsOehVXzgurc+lLAxYnlSMc1p/Gu6VAvnfx0ATi2nzvr0YZcjhmZDeY8SeAKv1M7zE3aEJH0Xo9mK1iZ8GYoQ==} engines: {node: '>=6'} @@ -5645,8 +6040,8 @@ packages: react-hook-form: 7.45.2(react@18.2.0) dev: false - /@humanwhocodes/config-array@0.11.10: - resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + /@humanwhocodes/config-array@0.11.11: + resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -5687,7 +6082,7 @@ packages: /@iarna/toml@2.2.5: resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} - dev: true + dev: false /@icons-pack/react-simple-icons@7.2.0(react@18.2.0): resolution: {integrity: sha512-XmyAiE+cDWDoCQGboie4se79ph2xAj/lQV+YVmLlX0nAFf92lci2ciVxWSN28f4MWZojskRWsu9S9BoH8UCQgg==} @@ -5697,6 +6092,18 @@ packages: react: 18.2.0 dev: false + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -5798,7 +6205,7 @@ packages: '@types/yargs': 17.0.24 chalk: 4.1.2 - /@joshwooding/vite-plugin-react-docgen-typescript@0.2.1(typescript@5.0.4)(vite@4.3.9): + /@joshwooding/vite-plugin-react-docgen-typescript@0.2.1(typescript@5.2.2)(vite@4.4.10): resolution: {integrity: sha512-ou4ZJSXMMWHqGS4g8uNRbC5TiTWxAgQZiVucoUrOCWuPrTbkpJbmVyIi9jU72SBry7gQtuMEDp4YR8EEXAg7VQ==} peerDependencies: typescript: '>= 4.3.x' @@ -5810,9 +6217,9 @@ packages: glob: 7.2.3 glob-promise: 4.2.2(glob@7.2.3) magic-string: 0.27.0 - react-docgen-typescript: 2.2.2(typescript@5.0.4) - typescript: 5.0.4 - vite: 4.3.9(less@4.2.0) + react-docgen-typescript: 2.2.2(typescript@5.2.2) + typescript: 5.2.2 + vite: 4.4.10(less@4.2.0) /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} @@ -5900,7 +6307,7 @@ packages: react: '>=16' dependencies: '@types/mdx': 2.0.7 - '@types/react': 18.0.38 + '@types/react': 18.2.6 react: 18.2.0 dev: false @@ -6054,6 +6461,12 @@ packages: dev: false optional: true + /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + dependencies: + eslint-scope: 5.1.1 + dev: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -6088,10 +6501,9 @@ packages: rimraf: 3.0.2 dev: false - /@opentelemetry/api-metrics@0.31.0: - resolution: {integrity: sha512-PcL1x0kZtMie7NsNy67OyMvzLEXqf3xd0TZJKHHPMGTe89oMpNVrD1zJB1kZcwXOxLlHHb6tz21G3vvXPdXyZg==} + /@opentelemetry/api-logs@0.39.1: + resolution: {integrity: sha512-9BJ8lMcOzEN0lu+Qji801y707oFO4xT3db6cosPvl+k7ItUHKN5ofWqtSbM9gbt1H4JJ/4/2TVrqI9Rq7hNv6Q==} engines: {node: '>=14'} - deprecated: Please use @opentelemetry/api >= 1.3.0 dependencies: '@opentelemetry/api': 1.4.1 dev: false @@ -6110,6 +6522,16 @@ packages: '@opentelemetry/api': 1.4.1 dev: false + /@opentelemetry/core@1.13.0(@opentelemetry/api@1.4.1): + resolution: {integrity: sha512-2dBX3Sj99H96uwJKvc2w9NOiNgbvAO6mOFJFramNkKfS9O4Um+VWgpnlAazoYjT6kUJ1MP70KQ5ngD4ed+4NUw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.5.0' + dependencies: + '@opentelemetry/api': 1.4.1 + '@opentelemetry/semantic-conventions': 1.13.0 + dev: false + /@opentelemetry/core@1.15.2(@opentelemetry/api@1.4.1): resolution: {integrity: sha512-+gBv15ta96WqkHZaPpcDHiaz0utiiHZVfm2YOYSqFGrUaJpPkMoSuLBB58YFQGi6Rsb9EHos84X6X5+9JspmLw==} engines: {node: '>=14'} @@ -6120,67 +6542,57 @@ packages: '@opentelemetry/semantic-conventions': 1.15.2 dev: false - /@opentelemetry/core@1.5.0(@opentelemetry/api@1.4.1): - resolution: {integrity: sha512-B3DIMkQN0DANrr7XrMLS4pR6d2o/jqT09x4nZJz6wSJ9SHr4eQIqeFBNeEUQG1I+AuOcH2UbJtgFm7fKxLqd+w==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.2.0' - dependencies: - '@opentelemetry/api': 1.4.1 - '@opentelemetry/semantic-conventions': 1.5.0 - dev: false - - /@opentelemetry/exporter-trace-otlp-grpc@0.31.0(@opentelemetry/api@1.4.1): - resolution: {integrity: sha512-WapHtHPLOFObRMvtfRJX/EBRZS4YLpRY8E/OtIQmmAqwImDMAnMVF9fAjP6DSE/thOIN3Ot0/PLK5zFZUVV8SA==} + /@opentelemetry/exporter-trace-otlp-grpc@0.39.1(@opentelemetry/api@1.4.1): + resolution: {integrity: sha512-l5RhLKx6U+yuLhMrtgavTDthX50E1mZM3/SSySC7OPZiArFHV/b/9x9jxAzrOgIQUDxyj4N0V9aLKSA2t7Qzxg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: '@grpc/grpc-js': 1.9.1 - '@grpc/proto-loader': 0.6.13 '@opentelemetry/api': 1.4.1 - '@opentelemetry/core': 1.5.0(@opentelemetry/api@1.4.1) - '@opentelemetry/otlp-grpc-exporter-base': 0.31.0(@opentelemetry/api@1.4.1) - '@opentelemetry/otlp-transformer': 0.31.0(@opentelemetry/api@1.4.1) - '@opentelemetry/resources': 1.5.0(@opentelemetry/api@1.4.1) - '@opentelemetry/sdk-trace-base': 1.5.0(@opentelemetry/api@1.4.1) + '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.4.1) + '@opentelemetry/otlp-grpc-exporter-base': 0.39.1(@opentelemetry/api@1.4.1) + '@opentelemetry/otlp-transformer': 0.39.1(@opentelemetry/api@1.4.1) + '@opentelemetry/resources': 1.13.0(@opentelemetry/api@1.4.1) + '@opentelemetry/sdk-trace-base': 1.13.0(@opentelemetry/api@1.4.1) dev: false - /@opentelemetry/otlp-exporter-base@0.31.0(@opentelemetry/api@1.4.1): - resolution: {integrity: sha512-MI+LtGo/ZYL/g7ldWTAY9vMjMqlcWMj2undgcnq8Y5BoDLI8oBwGn//Lizjk4NikF+SkcolKB3+U05nCeT5djg==} + /@opentelemetry/otlp-exporter-base@0.39.1(@opentelemetry/api@1.4.1): + resolution: {integrity: sha512-Pv5X8fbi6jD/RJBePyn7MnCSuE6MbPB6dl+7YYBWJ5RcMGYMwvLXjd4h2jWsPV2TSUg38H/RoSP0aXvQ06Y7iw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: '@opentelemetry/api': 1.4.1 - '@opentelemetry/core': 1.5.0(@opentelemetry/api@1.4.1) + '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.4.1) dev: false - /@opentelemetry/otlp-grpc-exporter-base@0.31.0(@opentelemetry/api@1.4.1): - resolution: {integrity: sha512-TfNZsQhWNd05CAaOwgN2lVthC8mkxvoArV6LfSyKyqSZ6srCnYPuW64yS/9buEhNvTkT3y63dzkVSnnv/1b3ow==} + /@opentelemetry/otlp-grpc-exporter-base@0.39.1(@opentelemetry/api@1.4.1): + resolution: {integrity: sha512-u3ErFRQqQFKjjIMuwLWxz/tLPYInfmiAmSy//fGSCzCh2ZdJgqQjMOAxBgqFtCF2xFL+OmMhyuC2ThMzceGRWA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: '@grpc/grpc-js': 1.9.1 - '@grpc/proto-loader': 0.6.13 '@opentelemetry/api': 1.4.1 - '@opentelemetry/core': 1.5.0(@opentelemetry/api@1.4.1) - '@opentelemetry/otlp-exporter-base': 0.31.0(@opentelemetry/api@1.4.1) + '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.4.1) + '@opentelemetry/otlp-exporter-base': 0.39.1(@opentelemetry/api@1.4.1) + protobufjs: 7.2.5 dev: false - /@opentelemetry/otlp-transformer@0.31.0(@opentelemetry/api@1.4.1): - resolution: {integrity: sha512-xCEsB0gTs7s/FMEv8+DWE6awfHJ5oHkFKSGePr6tT5Mh95rd1845WTefvLc++mYpewY8KnQ7tyo/zEfwywCIhw==} + /@opentelemetry/otlp-transformer@0.39.1(@opentelemetry/api@1.4.1): + resolution: {integrity: sha512-0hgVnXXz5efI382B/24NxD4b6Zxlh7nxCdJkxkdmQMbn0yRiwoq/ZT+QG8eUL6JNzsBAV1WJlF5aJNsL8skHvw==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.2.0' + '@opentelemetry/api': '>=1.3.0 <1.5.0' dependencies: '@opentelemetry/api': 1.4.1 - '@opentelemetry/api-metrics': 0.31.0 - '@opentelemetry/core': 1.5.0(@opentelemetry/api@1.4.1) - '@opentelemetry/resources': 1.5.0(@opentelemetry/api@1.4.1) - '@opentelemetry/sdk-metrics-base': 0.31.0(@opentelemetry/api@1.4.1) - '@opentelemetry/sdk-trace-base': 1.5.0(@opentelemetry/api@1.4.1) + '@opentelemetry/api-logs': 0.39.1 + '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.4.1) + '@opentelemetry/resources': 1.13.0(@opentelemetry/api@1.4.1) + '@opentelemetry/sdk-logs': 0.39.1(@opentelemetry/api-logs@0.39.1)(@opentelemetry/api@1.4.1) + '@opentelemetry/sdk-metrics': 1.13.0(@opentelemetry/api@1.4.1) + '@opentelemetry/sdk-trace-base': 1.13.0(@opentelemetry/api@1.4.1) dev: false /@opentelemetry/propagator-b3@1.15.2(@opentelemetry/api@1.4.1): @@ -6203,6 +6615,17 @@ packages: '@opentelemetry/core': 1.15.2(@opentelemetry/api@1.4.1) dev: false + /@opentelemetry/resources@1.13.0(@opentelemetry/api@1.4.1): + resolution: {integrity: sha512-euqjOkiN6xhjE//0vQYGvbStxoD/WWQRhDiO0OTLlnLBO9Yw2Gd/VoSx2H+svsebjzYk5OxLuREBmcdw6rbUNg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.5.0' + dependencies: + '@opentelemetry/api': 1.4.1 + '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.4.1) + '@opentelemetry/semantic-conventions': 1.13.0 + dev: false + /@opentelemetry/resources@1.15.2(@opentelemetry/api@1.4.1): resolution: {integrity: sha512-xmMRLenT9CXmm5HMbzpZ1hWhaUowQf8UB4jMjFlAxx1QzQcsD3KFNAVX/CAWzFPtllTyTplrA4JrQ7sCH3qmYw==} engines: {node: '>=14'} @@ -6214,31 +6637,43 @@ packages: '@opentelemetry/semantic-conventions': 1.15.2 dev: false - /@opentelemetry/resources@1.5.0(@opentelemetry/api@1.4.1): - resolution: {integrity: sha512-YeEfC6IY54U3xL3P2+UAiom+r50ZF2jM0J47RV5uTFGF19Xjd5zazSwDPgmxtAd6DwLX0/5S5iqrsH4nEXMYoA==} + /@opentelemetry/sdk-logs@0.39.1(@opentelemetry/api-logs@0.39.1)(@opentelemetry/api@1.4.1): + resolution: {integrity: sha512-/gmgKfZ1ZVFporKuwsewqIyvaUIGpv76JZ7lBpHQQPb37IMpaXO6pdqFI4ebHAWfNIm3akMyhmdtzivcgF3lgw==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.2.0' + '@opentelemetry/api': '>=1.4.0 <1.5.0' + '@opentelemetry/api-logs': '>=0.38.0' dependencies: '@opentelemetry/api': 1.4.1 - '@opentelemetry/core': 1.5.0(@opentelemetry/api@1.4.1) - '@opentelemetry/semantic-conventions': 1.5.0 + '@opentelemetry/api-logs': 0.39.1 + '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.4.1) + '@opentelemetry/resources': 1.13.0(@opentelemetry/api@1.4.1) dev: false - /@opentelemetry/sdk-metrics-base@0.31.0(@opentelemetry/api@1.4.1): - resolution: {integrity: sha512-4R2Bjl3wlqIGcq4bCoI9/pD49ld+tEoM9n85UfFzr/aUe+2huY2jTPq/BP9SVB8d2Zfg7mGTIFeapcEvAdKK7g==} + /@opentelemetry/sdk-metrics@1.13.0(@opentelemetry/api@1.4.1): + resolution: {integrity: sha512-MOjZX6AnSOqLliCcZUrb+DQKjAWXBiGeICGbHAGe5w0BB18PJIeIo995lO5JSaFfHpmUMgJButTPfJJD27W3Vg==} engines: {node: '>=14'} - deprecated: Please use @opentelemetry/sdk-metrics peerDependencies: - '@opentelemetry/api': ^1.0.0 + '@opentelemetry/api': '>=1.3.0 <1.5.0' dependencies: '@opentelemetry/api': 1.4.1 - '@opentelemetry/api-metrics': 0.31.0 - '@opentelemetry/core': 1.5.0(@opentelemetry/api@1.4.1) - '@opentelemetry/resources': 1.5.0(@opentelemetry/api@1.4.1) + '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.4.1) + '@opentelemetry/resources': 1.13.0(@opentelemetry/api@1.4.1) lodash.merge: 4.6.2 dev: false + /@opentelemetry/sdk-trace-base@1.13.0(@opentelemetry/api@1.4.1): + resolution: {integrity: sha512-moTiQtc0uPR1hQLt6gLDJH9IIkeBhgRb71OKjNHZPE1VF45fHtD6nBDi5J/DkTHTwYP5X3kBJLa3xN7ub6J4eg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.5.0' + dependencies: + '@opentelemetry/api': 1.4.1 + '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.4.1) + '@opentelemetry/resources': 1.13.0(@opentelemetry/api@1.4.1) + '@opentelemetry/semantic-conventions': 1.13.0 + dev: false + /@opentelemetry/sdk-trace-base@1.15.2(@opentelemetry/api@1.4.1): resolution: {integrity: sha512-BEaxGZbWtvnSPchV98qqqqa96AOcb41pjgvhfzDij10tkBhIu9m0Jd6tZ1tJB5ZHfHbTffqYVYE0AOGobec/EQ==} engines: {node: '>=14'} @@ -6251,18 +6686,6 @@ packages: '@opentelemetry/semantic-conventions': 1.15.2 dev: false - /@opentelemetry/sdk-trace-base@1.5.0(@opentelemetry/api@1.4.1): - resolution: {integrity: sha512-6lx7YDf67HSQYuWnvq3XgSrWikDJLiGCbrpUP6UWJ5Z47HLcJvwZPRH+cQGJu1DFS3dT2cV3GpAR75/OofPNHQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.2.0' - dependencies: - '@opentelemetry/api': 1.4.1 - '@opentelemetry/core': 1.5.0(@opentelemetry/api@1.4.1) - '@opentelemetry/resources': 1.5.0(@opentelemetry/api@1.4.1) - '@opentelemetry/semantic-conventions': 1.5.0 - dev: false - /@opentelemetry/sdk-trace-node@1.15.2(@opentelemetry/api@1.4.1): resolution: {integrity: sha512-5deakfKLCbPpKJRCE2GPI8LBE2LezyvR17y3t37ZI3sbaeogtyxmBaFV+slmG9fN8OaIT+EUsm1QAT1+z59gbQ==} engines: {node: '>=14'} @@ -6278,13 +6701,13 @@ packages: semver: 7.5.4 dev: false - /@opentelemetry/semantic-conventions@1.15.2: - resolution: {integrity: sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw==} + /@opentelemetry/semantic-conventions@1.13.0: + resolution: {integrity: sha512-LMGqfSZkaMQXqewO0o1wvWr/2fQdCh4a3Sqlxka/UsJCe0cfLulh6x2aqnKLnsrSGiCq5rSCwvINd152i0nCqw==} engines: {node: '>=14'} dev: false - /@opentelemetry/semantic-conventions@1.5.0: - resolution: {integrity: sha512-wlYG/U6ddW1ilXslnDLLQYJ8nd97W8JJTTfwkGhubx6dzW6SUkd+N4/MzTjjyZlrHQunxHtkHFvVpUKiROvFDw==} + /@opentelemetry/semantic-conventions@1.15.2: + resolution: {integrity: sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw==} engines: {node: '>=14'} dev: false @@ -6299,6 +6722,25 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@pkgr/utils@2.4.2: + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.3.1 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.0.0 + tslib: 2.6.2 + dev: true + /@planetscale/database@1.7.0: resolution: {integrity: sha512-lWR6biXChUyQnxsT4RT1CIeR3ZJvwTQXiQ+158MnY3VjLwjHEGakDzdH9kwUGPk6CHvu6UeqRXp1DgUOVHJFTw==} engines: {node: '>=16'} @@ -6392,7 +6834,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} peerDependencies: '@types/react': '*' @@ -6406,8 +6848,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.11 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.6 '@types/react-dom': 18.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -6447,7 +6889,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} peerDependencies: '@types/react': '*' @@ -6461,11 +6903,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.11 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.38)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.6)(react@18.2.0) + '@types/react': 18.2.6 '@types/react-dom': 18.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -6480,7 +6922,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-compose-refs@1.0.1(@types/react@18.0.38)(react@18.2.0): + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: '@types/react': '*' @@ -6490,11 +6932,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.11 - '@types/react': 18.0.38 + '@types/react': 18.2.6 react: 18.2.0 dev: false - /@radix-ui/react-context-menu@2.1.4(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-context-menu@2.1.4(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-HVHLUtZOBiR2Fh5l07qQ9y0IgX4dGZF0S9Gwdk4CVA+DL9afSphvFNa4nRiw6RNgb6quwLV4dLPF/gFDvNaOcQ==} peerDependencies: '@types/react': '*' @@ -6509,12 +6951,12 @@ packages: dependencies: '@babel/runtime': 7.22.11 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-menu': 2.0.5(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-menu': 2.0.5(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@types/react': 18.2.6 '@types/react-dom': 18.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -6529,7 +6971,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-context@1.0.1(@types/react@18.0.38)(react@18.2.0): + /@radix-ui/react-context@1.0.1(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} peerDependencies: '@types/react': '*' @@ -6539,11 +6981,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.11 - '@types/react': 18.0.38 + '@types/react': 18.2.6 react: 18.2.0 dev: false - /@radix-ui/react-dialog@1.0.4(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dialog@1.0.4(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-hJtRy/jPULGQZceSAP2Re6/4NpKo8im6V8P2hUqZsdFiSL8l35kYsw3qbRI6Ay5mQd2+wlLqje770eq+RJ3yZg==} peerDependencies: '@types/react': '*' @@ -6558,23 +7000,23 @@ packages: dependencies: '@babel/runtime': 7.22.11 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.38)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.6)(react@18.2.0) '@radix-ui/react-dismissable-layer': 1.0.2(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@types/react': 18.2.6 '@types/react-dom': 18.2.4 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.38)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.6)(react@18.2.0) dev: false /@radix-ui/react-direction@1.0.0(react@18.2.0): @@ -6586,7 +7028,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-direction@1.0.1(@types/react@18.0.38)(react@18.2.0): + /@radix-ui/react-direction@1.0.1(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} peerDependencies: '@types/react': '*' @@ -6596,7 +7038,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.11 - '@types/react': 18.0.38 + '@types/react': 18.2.6 react: 18.2.0 dev: false @@ -6616,7 +7058,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-dropdown-menu@2.0.5(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dropdown-menu@2.0.5(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-xdOrZzOTocqqkCkYo8yRPCib5OkTkqN7lqNCdxwPOdE466DOaNl4N8PkUIlsXthQvW5Wwkd+aEmWpfWlBoDPEw==} peerDependencies: '@types/react': '*' @@ -6631,13 +7073,13 @@ packages: dependencies: '@babel/runtime': 7.22.11 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-menu': 2.0.5(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-menu': 2.0.5(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@types/react': 18.2.6 '@types/react-dom': 18.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -6652,7 +7094,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-focus-guards@1.0.1(@types/react@18.0.38)(react@18.2.0): + /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} peerDependencies: '@types/react': '*' @@ -6662,7 +7104,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.11 - '@types/react': 18.0.38 + '@types/react': 18.2.6 react: 18.2.0 dev: false @@ -6680,7 +7122,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==} peerDependencies: '@types/react': '*' @@ -6694,10 +7136,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.11 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@types/react': 18.2.6 '@types/react-dom': 18.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -6713,7 +7155,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-id@1.0.1(@types/react@18.0.38)(react@18.2.0): + /@radix-ui/react-id@1.0.1(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} peerDependencies: '@types/react': '*' @@ -6723,12 +7165,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.11 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@types/react': 18.2.6 react: 18.2.0 dev: false - /@radix-ui/react-menu@2.0.5(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-menu@2.0.5(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Gw4f9pwdH+w5w+49k0gLjN0PfRDHvxmAgG16AbyJZ7zhwZ6PBHKtWohvnSwfusfnK3L68dpBREHpVkj8wEM7ZA==} peerDependencies: '@types/react': '*' @@ -6743,30 +7185,30 @@ packages: dependencies: '@babel/runtime': 7.22.11 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.38)(react@18.2.0) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.6)(react@18.2.0) '@radix-ui/react-dismissable-layer': 1.0.2(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@types/react': 18.2.6 '@types/react-dom': 18.2.4 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.38)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.6)(react@18.2.0) dev: false - /@radix-ui/react-popover@1.0.6(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-popover@1.0.6(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-cZ4defGpkZ0qTRtlIBzJLSzL6ht7ofhhW4i1+pkemjV1IKXm0wgCRnee154qlV6r9Ttunmh2TNZhMfV2bavUyA==} peerDependencies: '@types/react': '*' @@ -6781,34 +7223,34 @@ packages: dependencies: '@babel/runtime': 7.22.11 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.38)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.6)(react@18.2.0) '@radix-ui/react-dismissable-layer': 1.0.2(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@types/react': 18.2.6 '@types/react-dom': 18.2.4 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.38)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.6)(react@18.2.0) dev: false - /@radix-ui/react-popper@1.0.1(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-popper@1.0.1(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-J4Vj7k3k+EHNWgcKrE+BLlQfpewxA7Zd76h5I0bIa+/EqaIZ3DuwrbPj49O3wqN+STnXsBuxiHLiF0iU3yfovw==} peerDependencies: react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.22.11 - '@floating-ui/react-dom': 0.7.2(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + '@floating-ui/react-dom': 0.7.2(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-arrow': 1.0.1(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) '@radix-ui/react-context': 1.0.0(react@18.2.0) @@ -6823,7 +7265,7 @@ packages: - '@types/react' dev: false - /@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==} peerDependencies: '@types/react': '*' @@ -6838,16 +7280,16 @@ packages: dependencies: '@babel/runtime': 7.22.11 '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.0.38)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.6)(react@18.2.0) '@radix-ui/rect': 1.0.1 - '@types/react': 18.0.38 + '@types/react': 18.2.6 '@types/react-dom': 18.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -6865,7 +7307,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==} peerDependencies: '@types/react': '*' @@ -6879,8 +7321,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.11 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.6 '@types/react-dom': 18.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -6899,7 +7341,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} peerDependencies: '@types/react': '*' @@ -6913,9 +7355,9 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.11 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@types/react': 18.2.6 '@types/react-dom': 18.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -6945,7 +7387,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: '@types/react': '*' @@ -6959,8 +7401,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.11 - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.38)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.6)(react@18.2.0) + '@types/react': 18.2.6 '@types/react-dom': 18.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -7020,7 +7462,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} peerDependencies: '@types/react': '*' @@ -7035,21 +7477,21 @@ packages: dependencies: '@babel/runtime': 7.22.11 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@types/react': 18.2.6 '@types/react-dom': 18.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-select@1.1.2(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-select@1.1.2(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-pQmfz7T6oR5m27E3NgKOo6DLs5U1qMZaUcfTENXZnNPeyyRN8pEb6Z+xXE6zomP5sg9pgLOtir4R2Q3f2kkF9w==} peerDependencies: react: ^16.8 || ^17.0 || ^18.0 @@ -7077,12 +7519,12 @@ packages: aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.38)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.6)(react@18.2.0) transitivePeerDependencies: - '@types/react' dev: false - /@radix-ui/react-select@1.2.2(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-select@1.2.2(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw==} peerDependencies: '@types/react': '*' @@ -7098,32 +7540,32 @@ packages: '@babel/runtime': 7.22.11 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.38)(react@18.2.0) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.6)(react@18.2.0) '@radix-ui/react-dismissable-layer': 1.0.2(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.6 '@types/react-dom': 18.2.4 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.0.38)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.6)(react@18.2.0) dev: false - /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} peerDependencies: '@types/react': '*' @@ -7137,8 +7579,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.11 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.6 '@types/react-dom': 18.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -7176,7 +7618,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-slot@1.0.2(@types/react@18.0.38)(react@18.2.0): + /@radix-ui/react-slot@1.0.2(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} peerDependencies: '@types/react': '*' @@ -7186,8 +7628,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.11 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@types/react': 18.2.6 react: 18.2.0 dev: false @@ -7251,7 +7693,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==} peerDependencies: '@types/react': '*' @@ -7266,19 +7708,19 @@ packages: dependencies: '@babel/runtime': 7.22.11 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@types/react': 18.2.6 '@types/react-dom': 18.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==} peerDependencies: '@types/react': '*' @@ -7293,15 +7735,15 @@ packages: dependencies: '@babel/runtime': 7.22.11 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@types/react': 18.2.6 '@types/react-dom': 18.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==} peerDependencies: '@types/react': '*' @@ -7316,19 +7758,19 @@ packages: dependencies: '@babel/runtime': 7.22.11 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.6 '@types/react-dom': 18.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-tooltip@1.0.2(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-tooltip@1.0.2(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-11gUlok2rv5mu+KBtxniOKKNKjqC/uTbgFHWoQdbF46vMV+zjDaBvCtVDK9+MTddlpmlisGPGvvojX7Qm0yr+g==} peerDependencies: react: ^16.8 || ^17.0 || ^18.0 @@ -7340,7 +7782,7 @@ packages: '@radix-ui/react-context': 1.0.0(react@18.2.0) '@radix-ui/react-dismissable-layer': 1.0.2(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-id': 1.0.0(react@18.2.0) - '@radix-ui/react-popper': 1.0.1(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-popper': 1.0.1(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-portal': 1.0.1(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-presence': 1.0.0(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-primitive': 1.0.1(react-dom@18.2.0)(react@18.2.0) @@ -7362,7 +7804,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.0.38)(react@18.2.0): + /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} peerDependencies: '@types/react': '*' @@ -7372,7 +7814,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.11 - '@types/react': 18.0.38 + '@types/react': 18.2.6 react: 18.2.0 dev: false @@ -7386,7 +7828,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.0.38)(react@18.2.0): + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} peerDependencies: '@types/react': '*' @@ -7396,8 +7838,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.11 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@types/react': 18.2.6 react: 18.2.0 dev: false @@ -7420,7 +7862,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.0.38)(react@18.2.0): + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} peerDependencies: '@types/react': '*' @@ -7430,7 +7872,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.11 - '@types/react': 18.0.38 + '@types/react': 18.2.6 react: 18.2.0 dev: false @@ -7443,7 +7885,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-use-previous@1.0.1(@types/react@18.0.38)(react@18.2.0): + /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} peerDependencies: '@types/react': '*' @@ -7453,7 +7895,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.11 - '@types/react': 18.0.38 + '@types/react': 18.2.6 react: 18.2.0 dev: false @@ -7467,7 +7909,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-use-rect@1.0.1(@types/react@18.0.38)(react@18.2.0): + /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} peerDependencies: '@types/react': '*' @@ -7478,7 +7920,7 @@ packages: dependencies: '@babel/runtime': 7.22.11 '@radix-ui/rect': 1.0.1 - '@types/react': 18.0.38 + '@types/react': 18.2.6 react: 18.2.0 dev: false @@ -7492,7 +7934,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-use-size@1.0.1(@types/react@18.0.38)(react@18.2.0): + /@radix-ui/react-use-size@1.0.1(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} peerDependencies: '@types/react': '*' @@ -7502,8 +7944,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.11 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.38)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.6)(react@18.2.0) + '@types/react': 18.2.6 react: 18.2.0 dev: false @@ -7519,7 +7961,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} peerDependencies: '@types/react': '*' @@ -7533,8 +7975,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.11 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.38 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.6 '@types/react-dom': 18.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -8146,11 +8588,25 @@ packages: estree-walker: 2.0.2 picomatch: 2.3.1 + /@rollup/pluginutils@5.0.4: + resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + /@rspc/client@0.0.0-main-799eec5d: resolution: {integrity: sha512-vLE2bpRh2GblwPhzORi4Iv3EP86aS3oDegY/Km0kQrdc60jWzcy39YBS/ftlcjOFqXc1Hu0z4uLwj0UmJ/payA==} dev: false - /@rspc/react@0.0.0-main-799eec5d(@rspc/client@0.0.0-main-799eec5d)(@tanstack/react-query@4.29.1)(react@18.2.0): + /@rspc/react@0.0.0-main-799eec5d(@rspc/client@0.0.0-main-799eec5d)(@tanstack/react-query@4.35.7)(react@18.2.0): resolution: {integrity: sha512-O3kHvBLuB2FG1Mq86aV3J5z7MEk+CnvgxjqnAw13IwGJyuERm+YdS42XLOT8gRZ06lXAmwJYwqSXarj4hosILw==} peerDependencies: '@rspc/client': 0.0.0-main-799eec5d @@ -8158,17 +8614,17 @@ packages: react: ^18.2.0 dependencies: '@rspc/client': 0.0.0-main-799eec5d - '@tanstack/react-query': 4.29.1(react-dom@18.2.0)(react-native@0.72.4)(react@18.2.0) + '@tanstack/react-query': 4.35.7(react-dom@18.2.0)(react-native@0.72.4)(react@18.2.0) react: 18.2.0 dev: false - /@rspc/tauri@0.0.0-main-799eec5d(@tauri-apps/api@1.3.0): + /@rspc/tauri@0.0.0-main-799eec5d(@tauri-apps/api@1.5.0): resolution: {integrity: sha512-1EQiAfDqDe0iV/CoSadw58EasA/finfoXx0h4odZx+mUVlkV6CUd9QC03EtTrXPoA6MrjA+oWKbBP/2wj/CrHg==} peerDependencies: '@tauri-apps/api': ^1.2.0 dependencies: '@rspc/client': 0.0.0-main-799eec5d - '@tauri-apps/api': 1.3.0 + '@tauri-apps/api': 1.5.0 dev: false /@rushstack/eslint-patch@1.3.3: @@ -8233,13 +8689,13 @@ packages: tslib: 2.6.2 dev: false - /@sentry/bundler-plugin-core@2.7.0: - resolution: {integrity: sha512-ZxJG/DsRXJ9BMaKv+butL3TaiHsuuUy1bNkl56/FCbCt1rYuzltEPT2cBuuveieg66ZWtzerSF17QX3v6svtJQ==} + /@sentry/bundler-plugin-core@2.7.1: + resolution: {integrity: sha512-ZC/B/7FzzgGpux2t54B2ioXudlq60MHMVPaUeuFzWwxmxiArrV4uBXcp18RMW5ns4biik5WBAD72vbsoloBfIQ==} engines: {node: '>= 14'} dependencies: '@sentry/cli': 2.20.6 '@sentry/node': 7.66.0 - '@sentry/utils': 7.66.0 + '@sentry/utils': 7.68.0 dotenv: 16.3.1 find-up: 5.0.0 glob: 9.3.2 @@ -8335,11 +8791,11 @@ packages: tslib: 2.6.2 dev: false - /@sentry/vite-plugin@2.7.0: - resolution: {integrity: sha512-VDkKneqIV5ESg41iz0ODsTl4BXsd4C/PhLgkjES9TFzDcG9VcnbECCxosXZd7nDZB9EQZDIsKSEc29PzLl1JUQ==} + /@sentry/vite-plugin@2.7.1: + resolution: {integrity: sha512-bZrM06Z+QP/TvPyTYFxpQVugT5rzaFW1jzTnHzUHICz5tgyarY8bhhmYXnI37f6mngkVwDZNAftczbVF2IuFWQ==} engines: {node: '>= 14'} dependencies: - '@sentry/bundler-plugin-core': 2.7.0 + '@sentry/bundler-plugin-core': 2.7.1 unplugin: 1.0.1 transitivePeerDependencies: - encoding @@ -8669,7 +9125,7 @@ packages: ts-dedent: 2.2.0 dev: false - /@storybook/addon-styling@1.0.6(@types/react-dom@18.2.4)(@types/react@18.0.38)(less@4.2.0)(postcss@8.4.23)(react-dom@18.2.0)(react@18.2.0)(webpack@5.88.2): + /@storybook/addon-styling@1.0.6(@types/react-dom@18.2.4)(@types/react@18.2.6)(less@4.2.0)(postcss@8.4.28)(react-dom@18.2.0)(react@18.2.0)(webpack@5.88.2): resolution: {integrity: sha512-OHs6Yj04TjyFQ+1NQrMBxf+5tCEMDWGvkztB1XQf0+hNqNDRsoRvDkeXeS462RHCt3ffSYUi5leUvotmDYno6g==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -8681,7 +9137,7 @@ packages: optional: true dependencies: '@storybook/api': 7.3.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/components': 7.3.2(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + '@storybook/components': 7.3.2(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) '@storybook/core-events': 7.3.2 '@storybook/manager-api': 7.3.2(react-dom@18.2.0)(react@18.2.0) '@storybook/node-logger': 7.3.2 @@ -8690,7 +9146,7 @@ packages: '@storybook/types': 7.3.2 css-loader: 6.8.1(webpack@5.88.2) less-loader: 11.1.3(less@4.2.0)(webpack@5.88.2) - postcss-loader: 7.3.3(postcss@8.4.23)(webpack@5.88.2) + postcss-loader: 7.3.3(postcss@8.4.28)(webpack@5.88.2) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) resolve-url-loader: 5.0.0 @@ -8826,7 +9282,7 @@ packages: - supports-color dev: true - /@storybook/builder-vite@7.0.20(typescript@5.0.4)(vite@4.3.9): + /@storybook/builder-vite@7.0.20(typescript@5.2.2)(vite@4.4.10): resolution: {integrity: sha512-+SQMdvrqpuuYE1KGNfvGfxt0sjeshMEEXCfxvh2/iCPPIMYTEQ5WfVeEuAla+PRyXrE4JLwCZEowcZoxel1uTA==} peerDependencies: '@preact/preset-vite': '*' @@ -8861,10 +9317,52 @@ packages: remark-external-links: 8.0.0 remark-slug: 6.1.0 rollup: 3.28.1 - typescript: 5.0.4 - vite: 4.3.9(less@4.2.0) + typescript: 5.2.2 + vite: 4.4.10(less@4.2.0) transitivePeerDependencies: - supports-color + dev: false + + /@storybook/builder-vite@7.4.6(typescript@5.2.2)(vite@4.4.10): + resolution: {integrity: sha512-xV9STYK+TkqWWTf2ydm6jx+7P70fjD2UPd1XTUw08uKszIjhuuxk+bG/OF5R1E25mPunAKXm6kBFh351AKejBg==} + peerDependencies: + '@preact/preset-vite': '*' + typescript: '>= 4.3.x' + vite: ^3.0.0 || ^4.0.0 + vite-plugin-glimmerx: '*' + peerDependenciesMeta: + '@preact/preset-vite': + optional: true + typescript: + optional: true + vite-plugin-glimmerx: + optional: true + dependencies: + '@storybook/channels': 7.4.6 + '@storybook/client-logger': 7.4.6 + '@storybook/core-common': 7.4.6 + '@storybook/csf-plugin': 7.4.6 + '@storybook/mdx2-csf': 1.1.0 + '@storybook/node-logger': 7.4.6 + '@storybook/preview': 7.4.6 + '@storybook/preview-api': 7.4.6 + '@storybook/types': 7.4.6 + '@types/find-cache-dir': 3.2.1 + browser-assert: 1.2.1 + es-module-lexer: 0.9.3 + express: 4.18.2 + find-cache-dir: 3.3.2 + fs-extra: 11.1.1 + magic-string: 0.30.4 + remark-external-links: 8.0.0 + remark-slug: 6.1.0 + rollup: 3.28.1 + typescript: 5.2.2 + vite: 4.4.10(@types/node@18.17.12) + transitivePeerDependencies: + - encoding + - supports-color + dev: true /@storybook/channel-postmessage@7.0.20: resolution: {integrity: sha512-GhVI40gbCnq20+Wjk/f8RD/T4gruLNKCjuwTnCAoKIQpMOVAB6ddx0469f9lF5tAha6alZn0MLk5CXPK8LAn5w==} @@ -8875,6 +9373,7 @@ packages: '@storybook/global': 5.0.0 qs: 6.11.2 telejson: 7.2.0 + dev: false /@storybook/channel-postmessage@7.0.5: resolution: {integrity: sha512-Ri0188tHfvg2asdNOVUeLU1w1G/V485y/vatZ/vC3My9cG8P39t8ZKAJdA3hukc+7RZKZU+snqCz7de89/CF7Q==} @@ -8893,9 +9392,11 @@ packages: '@storybook/client-logger': 7.0.20 '@storybook/global': 5.0.0 telejson: 7.2.0 + dev: false /@storybook/channels@7.0.20: resolution: {integrity: sha512-AL5GGSQ8WTDUoh3gitKEzo3fu7Vq5okXq2pAknAZlQA2Oio+HHO5nMeXvOfGdvo/tzbpNE3n5utmCJz006xrCA==} + dev: false /@storybook/channels@7.0.24: resolution: {integrity: sha512-NZVLwMhtzy6cZrNRjshFvMAD9mQTmJDNwhohodSkM/YFCDVFhmxQk9tgizVGh9MwY3CYGJ1SI96RUejGosb49Q==} @@ -8915,6 +9416,17 @@ packages: tiny-invariant: 1.3.1 dev: false + /@storybook/channels@7.4.6: + resolution: {integrity: sha512-yPv/sfo2c18fM3fvG0i1xse63vG8l33Al/OU0k/dtovltPu001/HVa1QgBgsb/QrEfZtvGjGhmtdVeYb39fv3A==} + dependencies: + '@storybook/client-logger': 7.4.6 + '@storybook/core-events': 7.4.6 + '@storybook/global': 5.0.0 + qs: 6.11.2 + telejson: 7.2.0 + tiny-invariant: 1.3.1 + dev: true + /@storybook/cli@7.0.5: resolution: {integrity: sha512-VRrf4XG9H29FycNqthT6r4MjT0f4ynpwQAj039vUrt95rosV8ytuLFIrTwww1x/2o/VNpkWyL7MJwu6dejeZgw==} hasBin: true @@ -8968,6 +9480,7 @@ packages: resolution: {integrity: sha512-h0maWgvrhoDVALrbQ6ZFF0/7koVAazMbqWLmV/SF4JB2cBSgfgO0gmrCmKzUAe+KOABK/TMQTEQc1S1js0Dorw==} dependencies: '@storybook/global': 5.0.0 + dev: false /@storybook/client-logger@7.0.5: resolution: {integrity: sha512-p8Vtb5G/l3gePNDbNjqgGsikthRqDfsPAqFEsAvBWJVZ3vq/ZSU4IsCWSLO/kdkyJyhTXMqQZnOpQ0pDXlOPcQ==} @@ -8980,6 +9493,12 @@ packages: '@storybook/global': 5.0.0 dev: false + /@storybook/client-logger@7.4.6: + resolution: {integrity: sha512-XDw31ZziU//86PKuMRnmc+L/G0VopaGKENQOGEpvAXCU9IZASwGKlKAtcyosjrpi+ZiUXlMgUXCpXM7x3b1Ehw==} + dependencies: + '@storybook/global': 5.0.0 + dev: true + /@storybook/codemod@7.0.5: resolution: {integrity: sha512-Hu9CiVBHhaPJHMVpiAjr7pEtL7/AUsKT/Xxn3xUM7Ngy7TYMa62XTIMkt2Z+tAAud0HzAz/6Wv+2q+IqPr7BeQ==} dependencies: @@ -9018,14 +9537,14 @@ packages: util-deprecate: 1.0.2 dev: false - /@storybook/components@7.3.2(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@storybook/components@7.3.2(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-hsa1OJx4yEtLHTzrCxq8G9U5MTbcTuItj9yp1gsW9RTNc/V1n/rReQv4zE/k+//2hDsLrS62o3yhZ9VksRhLNw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.4)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.4)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) '@storybook/client-logger': 7.3.2 '@storybook/csf': 0.1.1 '@storybook/global': 5.0.0 @@ -9047,6 +9566,7 @@ packages: dependencies: '@storybook/client-logger': 7.0.20 '@storybook/preview-api': 7.0.20 + dev: false /@storybook/core-client@7.0.5: resolution: {integrity: sha512-vN3jK0H4IRjdn/VP7E5dtY0MjytTFSosreSzschmSDTs/K9w52Zm+PkmDzQaBtrDo/VNjJCHnxDLDJZ1ewkoEw==} @@ -9055,6 +9575,13 @@ packages: '@storybook/preview-api': 7.0.5 dev: false + /@storybook/core-client@7.4.6: + resolution: {integrity: sha512-tfgxAHeCvMcs6DsVgtb4hQSDaCHeAPJOsoyhb47eDQfk4OmxzriM0qWucJV5DePSMi+KutX/rN2u0JxfOuN68g==} + dependencies: + '@storybook/client-logger': 7.4.6 + '@storybook/preview-api': 7.4.6 + dev: true + /@storybook/core-common@7.0.20: resolution: {integrity: sha512-4uh/zMs884rlYSfPEzsZy8Z7lchitZTKI6031gigEMBBgdYZ1eHqwz91YfQK7e2dFKjxfw2y9HS1yRI57RJrQg==} dependencies: @@ -9079,6 +9606,7 @@ packages: ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color + dev: false /@storybook/core-common@7.0.5: resolution: {integrity: sha512-MIvWwu2ntKK3A0FDWRhKcegIAKyJTyzTf5K4PiVgCT2X9Mj0r0GZ10L/OlyTrlnGHqgxNc4oS2rcN3uWjlwXaA==} @@ -9105,8 +9633,40 @@ packages: transitivePeerDependencies: - supports-color + /@storybook/core-common@7.4.6: + resolution: {integrity: sha512-05MJFmOM86qvTLtgDskokIFz9txe0Lbhq4L3by1FtF0GwgH+p+W6I94KI7c6ANER+kVZkXQZhiRzwBFnVTW+Cg==} + dependencies: + '@storybook/core-events': 7.4.6 + '@storybook/node-logger': 7.4.6 + '@storybook/types': 7.4.6 + '@types/find-cache-dir': 3.2.1 + '@types/node': 16.18.46 + '@types/node-fetch': 2.6.4 + '@types/pretty-hrtime': 1.0.1 + chalk: 4.1.2 + esbuild: 0.18.20 + esbuild-register: 3.4.2(esbuild@0.18.20) + file-system-cache: 2.3.0 + find-cache-dir: 3.3.2 + find-up: 5.0.0 + fs-extra: 11.1.1 + glob: 10.3.10 + handlebars: 4.7.8 + lazy-universal-dotenv: 4.0.0 + node-fetch: 2.7.0 + picomatch: 2.3.1 + pkg-dir: 5.0.0 + pretty-hrtime: 1.0.3 + resolve-from: 5.0.0 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + /@storybook/core-events@7.0.20: resolution: {integrity: sha512-gUBQsbcDmRufmg8LdH7D57c/9BQ+cPi2vBcXdudmxeJFafGwDmLRu1mlv9rxlW4kicn/LZWJjKXtq4XXzF4OGg==} + dev: false /@storybook/core-events@7.0.5: resolution: {integrity: sha512-bYQFZlJR3n5gFk5GVIemuL3m6aYPF6DVnzj6n9UcMZDlHcOZ2B2WbTmAUrGy0bmtj/Fd6ZJKDpBhh3cRRsYkbA==} @@ -9115,6 +9675,12 @@ packages: resolution: {integrity: sha512-DCrM3s+sxLKS8vl0zB+1tZEtcl5XQTOGl46XgRRV/SIBabFbsC0l5pQPswWkTUsIqdREtiT0YUHcXB1+YDyFvA==} dev: false + /@storybook/core-events@7.4.6: + resolution: {integrity: sha512-r5vrE+32lwrJh1NGFr1a0mWjvxo7q8FXYShylcwRWpacmL5NTtLkrXOoJSeGvJ4yKNYkvxQFtOPId4lzDxa32w==} + dependencies: + ts-dedent: 2.2.0 + dev: true + /@storybook/core-server@7.0.5: resolution: {integrity: sha512-h3SVzwepHTyDxS7ZPuYfHStnWC0EC05axSPKb3yeO6bCsowf+CEXgY5VayUqP8GkgLBez859m172y6B+wVXZ3g==} dependencies: @@ -9174,6 +9740,7 @@ packages: unplugin: 0.10.2 transitivePeerDependencies: - supports-color + dev: false /@storybook/csf-plugin@7.0.5: resolution: {integrity: sha512-TTM6l1i73ZGUSCJpAXitsd/KHWQbiuPsFSHKaikowK+pJ2hz4kfNG5JrajXKR5OltBAAbUudK25oJWsvo8FGpQ==} @@ -9184,6 +9751,15 @@ packages: - supports-color dev: false + /@storybook/csf-plugin@7.4.6: + resolution: {integrity: sha512-yi7Qa4NSqKOyiJTWCxlB0ih2ijXq6oY5qZKW6MuMMBP14xJNRGLbH5KabpfXgN2T7YECcOWG1uWaGj2veJb1KA==} + dependencies: + '@storybook/csf-tools': 7.4.6 + unplugin: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: true + /@storybook/csf-tools@7.0.20: resolution: {integrity: sha512-m68wLgN5G7XIChQrjeILBYu+4TVHfllIrIJXMZ3Gi+iplOCHsQLfA6Oa0VtTB09Ol5K2StdMHjBCoR6HfHzsXA==} dependencies: @@ -9198,6 +9774,7 @@ packages: ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color + dev: false /@storybook/csf-tools@7.0.5: resolution: {integrity: sha512-W83OAlYUyzbx3SuDGgsPunw8BeT5gkYJGqenC6wJH0B1Nc+MjYxjhffaMtnT2X8RgMKKgIIf7sB3QN22y+kN/Q==} @@ -9214,6 +9791,22 @@ packages: transitivePeerDependencies: - supports-color + /@storybook/csf-tools@7.4.6: + resolution: {integrity: sha512-ocKpcIUtTBy6hlLY34RUFQyX403cWpB2gGfqvkHbpGe2BQj7EyV0zpWnjsfVxvw+M9OWlCdxHWDOPUgXM33ELw==} + dependencies: + '@babel/generator': 7.22.10 + '@babel/parser': 7.22.13 + '@babel/traverse': 7.22.11 + '@babel/types': 7.22.11 + '@storybook/csf': 0.1.1 + '@storybook/types': 7.4.6 + fs-extra: 11.1.1 + recast: 0.23.4 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - supports-color + dev: true + /@storybook/csf@0.1.1: resolution: {integrity: sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==} dependencies: @@ -9235,6 +9828,7 @@ packages: lodash: 4.17.21 transitivePeerDependencies: - supports-color + dev: false /@storybook/docs-tools@7.0.5: resolution: {integrity: sha512-8e/9EIA9+1AhekJ8g81FgnjhJKWq8fNZK3AWYoDiPCjBFY3bLzisTLMAnxQILUG9DRbbX4aH2FZ3sMqvO9f3EQ==} @@ -9250,6 +9844,20 @@ packages: - supports-color dev: false + /@storybook/docs-tools@7.4.6: + resolution: {integrity: sha512-nZj1L/8WwKWWJ41FW4MaKGajZUtrhnr9UwflRCkQJaWhAKmDfOb5M5TqI93uCOULpFPOm5wpoMBz2IHInQ2Lrg==} + dependencies: + '@storybook/core-common': 7.4.6 + '@storybook/preview-api': 7.4.6 + '@storybook/types': 7.4.6 + '@types/doctrine': 0.0.3 + doctrine: 3.0.0 + lodash: 4.17.21 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + /@storybook/global@5.0.0: resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} @@ -9348,6 +9956,7 @@ packages: chalk: 4.1.2 npmlog: 5.0.1 pretty-hrtime: 1.0.3 + dev: false /@storybook/node-logger@7.0.5: resolution: {integrity: sha512-REBIMItpBVn9tpo2JXP3eyHg9lsYSt1JqWFaEncdKEiXWArv5c8pN6/od7MB3sU3NdHwEDKwLel2fZaDbg3jBQ==} @@ -9361,6 +9970,10 @@ packages: resolution: {integrity: sha512-XCCYiLa5mQ7KeDQcZ4awlyWDmtxJHLIJeedvXx29JUNztUjgwyon9rlNvxtxtGj6171zgn9MERFh920WyJOOOQ==} dev: false + /@storybook/node-logger@7.4.6: + resolution: {integrity: sha512-djZb310Q27GviDug1XBv0jOEDLCiwr4hhDE0aifCEKZpfNCi/EaP31nbWimFzZwxu4hE/YAPWExzScruR1zw9Q==} + dev: true + /@storybook/postinstall@7.0.5: resolution: {integrity: sha512-JtHY04HYdVHj8zeCHE6K6BLKK63r1hk/bhB49u64WuPkNJG8b5rAe5XYXeImOiRbwNLshDRJTyaUhjoSqONskA==} dev: false @@ -9383,6 +9996,7 @@ packages: synchronous-promise: 2.0.17 ts-dedent: 2.2.0 util-deprecate: 1.0.2 + dev: false /@storybook/preview-api@7.0.5: resolution: {integrity: sha512-mZruATt5JXfLuXJfOo30WCXILXjK+hs0HwtUDGRVW/J4Ql8CdNPB+WF56ZgeWUnMAYRf392bN3uNwmZx4v4Fog==} @@ -9422,8 +10036,32 @@ packages: util-deprecate: 1.0.2 dev: false + /@storybook/preview-api@7.4.6: + resolution: {integrity: sha512-byUS/Opt3ytWD4cWz3sNEKw5Yks8MkQgRN+GDSyIomaEAQkLAM0rchPC0MYjwCeUSecV7IIQweNX5RbV4a34BA==} + dependencies: + '@storybook/channels': 7.4.6 + '@storybook/client-logger': 7.4.6 + '@storybook/core-events': 7.4.6 + '@storybook/csf': 0.1.1 + '@storybook/global': 5.0.0 + '@storybook/types': 7.4.6 + '@types/qs': 6.9.7 + dequal: 2.0.3 + lodash: 4.17.21 + memoizerific: 1.11.3 + qs: 6.11.2 + synchronous-promise: 2.0.17 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + dev: true + /@storybook/preview@7.0.20: resolution: {integrity: sha512-ayC7Aud0WM91ki+UM/CInd3GbGPmkUaeT6fqs9zvH8H4QQGznr9E8sI9IUQN0dbpGWayZn0m7Ma89EHwpWOwiw==} + dev: false + + /@storybook/preview@7.4.6: + resolution: {integrity: sha512-2RPXusJ4CTDrIipIKKvbotD7fP0+8VzoFjImunflIrzN9rni+2rq5eMjqlXAaB+77w064zIR4uDUzI9fxsMDeQ==} + dev: true /@storybook/react-dom-shim@7.0.20(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-/TpK3WZFQ/wV3Z1sCYf5PN+u2XdncozE+wHdoXO0FYr3BY3w0BOeMLg6DauX9Nlbs8nh0RiIvck/sm/eBZH+qA==} @@ -9433,6 +10071,7 @@ packages: dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: false /@storybook/react-dom-shim@7.0.5(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-iSdP73Af/d8RdNfa4rDHI3JuAakDqPl8Z1LT0cFcfzg29kihdmXIVaLvMcMqTrnqELU6VmzSiE86U+T1XOX95w==} @@ -9444,7 +10083,17 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@storybook/react-vite@7.0.20(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.4)(vite@4.3.9): + /@storybook/react-dom-shim@7.4.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-DSq8l9FDocUF1ooVI+TF83pddj1LynE/Hv0/y8XZhc3IgJ/HkuOQuUmfz29ezgfAi9gFYUR8raTIBi3/xdoRmw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@storybook/react-vite@7.0.20(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(vite@4.4.10): resolution: {integrity: sha512-BUIhMD6bxIJ+LTocRyiqfg9Y8HraQDyhSWTIonBjRoIxjCkVhJ3QHQkEy6P+0cerWsntTD2/Gwmq1o1Vzl/6Sw==} engines: {node: '>=16'} peerDependencies: @@ -9452,24 +10101,53 @@ packages: react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 vite: ^3.0.0 || ^4.0.0 dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.2.1(typescript@5.0.4)(vite@4.3.9) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.2.1(typescript@5.2.2)(vite@4.4.10) '@rollup/pluginutils': 4.2.1 - '@storybook/builder-vite': 7.0.20(typescript@5.0.4)(vite@4.3.9) - '@storybook/react': 7.0.20(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.4) - '@vitejs/plugin-react': 3.1.0(vite@4.3.9) + '@storybook/builder-vite': 7.0.20(typescript@5.2.2)(vite@4.4.10) + '@storybook/react': 7.0.20(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) + '@vitejs/plugin-react': 3.1.0(vite@4.4.10) ast-types: 0.14.2 magic-string: 0.27.0 react: 18.2.0 react-docgen: 6.0.0-alpha.3 react-dom: 18.2.0(react@18.2.0) - vite: 4.3.9(less@4.2.0) + vite: 4.4.10(less@4.2.0) transitivePeerDependencies: - '@preact/preset-vite' - supports-color - typescript - vite-plugin-glimmerx + dev: false - /@storybook/react@7.0.20(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.4): + /@storybook/react-vite@7.4.6(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(vite@4.4.10): + resolution: {integrity: sha512-jkjnrf3FxzR5wcmebXRPflrsM4WIDjWyW/NVFJwxi5PeIOk7fE7/QAPrm4NFRUu2Q7DeuH3oLKsw8bigvUI9RA==} + engines: {node: '>=16'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + vite: ^3.0.0 || ^4.0.0 + dependencies: + '@joshwooding/vite-plugin-react-docgen-typescript': 0.2.1(typescript@5.2.2)(vite@4.4.10) + '@rollup/pluginutils': 5.0.4 + '@storybook/builder-vite': 7.4.6(typescript@5.2.2)(vite@4.4.10) + '@storybook/react': 7.4.6(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) + '@vitejs/plugin-react': 3.1.0(vite@4.4.10) + ast-types: 0.14.2 + magic-string: 0.30.4 + react: 18.2.0 + react-docgen: 6.0.0-alpha.3 + react-dom: 18.2.0(react@18.2.0) + vite: 4.4.10(@types/node@18.17.12) + transitivePeerDependencies: + - '@preact/preset-vite' + - encoding + - rollup + - supports-color + - typescript + - vite-plugin-glimmerx + dev: true + + /@storybook/react@7.0.20(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): resolution: {integrity: sha512-5F7ENxlAgUMzYu8W4OThn01P5zMPg/4Th/ekeSGJvAzR8OwwNNzHG9tKmu29cz8unmQqCSxkwaC63N1nm4YaBQ==} engines: {node: '>=16.0.0'} peerDependencies: @@ -9502,12 +10180,13 @@ packages: react-element-to-jsx-string: 15.0.0(react-dom@18.2.0)(react@18.2.0) ts-dedent: 2.2.0 type-fest: 2.19.0 - typescript: 5.0.4 + typescript: 5.2.2 util-deprecate: 1.0.2 transitivePeerDependencies: - supports-color + dev: false - /@storybook/react@7.0.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.4): + /@storybook/react@7.0.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): resolution: {integrity: sha512-VXLi/oZnYLXe61Bvfan1YY6cANbFgDb5MmCpu8COaYOGjT53o4gTh3zQoDubaN8wzTQfE0TyP9E+m4//KvZxow==} engines: {node: '>=16.0.0'} peerDependencies: @@ -9540,12 +10219,52 @@ packages: react-element-to-jsx-string: 15.0.0(react-dom@18.2.0)(react@18.2.0) ts-dedent: 2.2.0 type-fest: 2.19.0 - typescript: 5.0.4 + typescript: 5.2.2 util-deprecate: 1.0.2 transitivePeerDependencies: - supports-color dev: false + /@storybook/react@7.4.6(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): + resolution: {integrity: sha512-w0dVo64baFFPTGpUOWFqkKsu6pQincoymegSNgqaBd5DxEyMDRiRoTWSJHMKE9BwgE8SyWhRkP1ak1mkccSOhQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@storybook/client-logger': 7.4.6 + '@storybook/core-client': 7.4.6 + '@storybook/docs-tools': 7.4.6 + '@storybook/global': 5.0.0 + '@storybook/preview-api': 7.4.6 + '@storybook/react-dom-shim': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.4.6 + '@types/escodegen': 0.0.6 + '@types/estree': 0.0.51 + '@types/node': 16.18.46 + acorn: 7.4.1 + acorn-jsx: 5.3.2(acorn@7.4.1) + acorn-walk: 7.2.0 + escodegen: 2.1.0 + html-tags: 3.3.1 + lodash: 4.17.21 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-element-to-jsx-string: 15.0.0(react-dom@18.2.0)(react@18.2.0) + ts-dedent: 2.2.0 + type-fest: 2.19.0 + typescript: 5.2.2 + util-deprecate: 1.0.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + /@storybook/router@7.0.5(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-tvbSb+G3Ft5Z7McwUcMa13D8pM4pdoCu/pKCVMOlAI5TZF3lidLMq2RCsrztpHiYBrhZcp6dWfErosXa+BYvwQ==} peerDependencies: @@ -9634,6 +10353,7 @@ packages: '@types/babel__core': 7.20.1 '@types/express': 4.17.17 file-system-cache: 2.4.4 + dev: false /@storybook/types@7.0.24: resolution: {integrity: sha512-SZh/XBHP1TT5bmEk0W52nT0v6fUnYwmZVls3da5noutdgOAiwL7TANtl41XrNjG+UDr8x0OE3PVVJi+LhwUaNA==} @@ -9661,13 +10381,13 @@ packages: file-system-cache: 2.3.0 dev: false - /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.22.11): - resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 + /@storybook/types@7.4.6: + resolution: {integrity: sha512-6QLXtMVsFZFpzPkdGWsu/iuc8na9dnS67AMOBKm5qCLPwtUJOYkwhMdFRSSeJthLRpzV7JLAL8Kwvl7MFP3QSw==} dependencies: - '@babel/core': 7.22.11 + '@storybook/channels': 7.4.6 + '@types/babel__core': 7.20.1 + '@types/express': 4.17.17 + file-system-cache: 2.3.0 dev: true /@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.22.11): @@ -9697,15 +10417,6 @@ packages: '@babel/core': 7.22.11 dev: true - /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.22.11): - resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - dev: true - /@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.22.11): resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} engines: {node: '>=14'} @@ -9715,15 +10426,6 @@ packages: '@babel/core': 7.22.11 dev: true - /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.22.11): - resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - dev: true - /@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.22.11): resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} engines: {node: '>=14'} @@ -9733,15 +10435,6 @@ packages: '@babel/core': 7.22.11 dev: true - /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.22.11): - resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - dev: true - /@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.22.11): resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} engines: {node: '>=14'} @@ -9751,15 +10444,6 @@ packages: '@babel/core': 7.22.11 dev: true - /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.22.11): - resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - dev: true - /@svgr/babel-plugin-transform-react-native-svg@8.0.0(@babel/core@7.22.11): resolution: {integrity: sha512-UKrY3860AQICgH7g+6h2zkoxeVEPLYwX/uAjmqo4PIq2FIHppwhIqZstIyTz0ZtlwreKR41O3W3BzsBBiJV2Aw==} engines: {node: '>=14'} @@ -9778,15 +10462,6 @@ packages: '@babel/core': 7.22.11 dev: true - /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.22.11): - resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} - engines: {node: '>=12'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - dev: true - /@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.22.11): resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} engines: {node: '>=12'} @@ -9796,23 +10471,6 @@ packages: '@babel/core': 7.22.11 dev: true - /@svgr/babel-preset@6.5.1(@babel/core@7.22.11): - resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.22.11) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.22.11) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.22.11) - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.22.11) - '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.22.11) - '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.22.11) - '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.22.11) - '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.22.11) - dev: true - /@svgr/babel-preset@8.0.0(@babel/core@7.22.11): resolution: {integrity: sha512-KLcjiZychInVrhs86OvcYPLTFu9L5XV2vj0XAaE1HwE3J3jLmIzRY8ttdeAg/iFyp8nhavJpafpDZTt+1LIpkQ==} engines: {node: '>=14'} @@ -9847,19 +10505,6 @@ packages: '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.22.11) dev: true - /@svgr/core@6.5.1: - resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} - engines: {node: '>=10'} - dependencies: - '@babel/core': 7.22.11 - '@svgr/babel-preset': 6.5.1(@babel/core@7.22.11) - '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) - camelcase: 6.3.0 - cosmiconfig: 7.1.0 - transitivePeerDependencies: - - supports-color - dev: true - /@svgr/core@8.0.0: resolution: {integrity: sha512-aJKtc+Pie/rFYsVH/unSkDaZGvEeylNv/s2cP+ta9/rYWxRVvoV/S4Qw65Kmrtah4CBK5PM6ISH9qUH7IJQCng==} engines: {node: '>=14'} @@ -9886,14 +10531,6 @@ packages: - supports-color dev: true - /@svgr/hast-util-to-babel-ast@6.5.1: - resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} - engines: {node: '>=10'} - dependencies: - '@babel/types': 7.22.11 - entities: 4.5.0 - dev: true - /@svgr/hast-util-to-babel-ast@8.0.0: resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} engines: {node: '>=14'} @@ -9902,21 +10539,6 @@ packages: entities: 4.5.0 dev: true - /@svgr/plugin-jsx@6.5.1(@svgr/core@6.5.1): - resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} - engines: {node: '>=10'} - peerDependencies: - '@svgr/core': ^6.0.0 - dependencies: - '@babel/core': 7.22.11 - '@svgr/babel-preset': 6.5.1(@babel/core@7.22.11) - '@svgr/core': 6.5.1 - '@svgr/hast-util-to-babel-ast': 6.5.1 - svg-parser: 2.0.4 - transitivePeerDependencies: - - supports-color - dev: true - /@svgr/plugin-jsx@8.0.1(@svgr/core@8.0.0): resolution: {integrity: sha512-bfCFb+4ZsM3UuKP2t7KmDwn6YV8qVn9HIQJmau6xeQb/iV65Rpi7NBNBWA2hcCd4GKoCqG8hpaaDk5FDR0eH+g==} engines: {node: '>=14'} @@ -9993,24 +10615,24 @@ packages: tslib: 2.6.2 dev: false - /@t3-oss/env-core@0.3.1(typescript@5.0.4)(zod@3.22.2): + /@t3-oss/env-core@0.3.1(typescript@5.2.2)(zod@3.22.2): resolution: {integrity: sha512-iEnBuWeSjzqQLDTUw7H+YhstV4OZrGXTkQGL6ZOMxZQoCmwGX7GVS+1KCd5RvCzOtrIAD9jeOItSWNjC7sG4Sg==} peerDependencies: typescript: '>=4.7.2' zod: ^3.0.0 dependencies: - typescript: 5.0.4 + typescript: 5.2.2 zod: 3.22.2 dev: false - /@t3-oss/env-nextjs@0.3.1(typescript@5.0.4)(zod@3.22.2): + /@t3-oss/env-nextjs@0.3.1(typescript@5.2.2)(zod@3.22.2): resolution: {integrity: sha512-W1OgOn5xtpdEGraAQesyLzO2aNLRfSJEyK6qjQFfEUnrPbkvB+WxABX2bPMqfn4KJQ8pziLCSdBFiUN8OagqAg==} peerDependencies: typescript: '>=4.7.2' zod: ^3.0.0 dependencies: - '@t3-oss/env-core': 0.3.1(typescript@5.0.4)(zod@3.22.2) - typescript: 5.0.4 + '@t3-oss/env-core': 0.3.1(typescript@5.2.2)(zod@3.22.2) + typescript: 5.2.2 zod: 3.22.2 dev: false @@ -10042,26 +10664,26 @@ packages: remove-accents: 0.4.2 dev: false - /@tanstack/query-core@4.29.1: - resolution: {integrity: sha512-vkPewLEG8ua0efo3SsVT0BcBtkq5RZX8oPhDAyKL+k/rdOYSQTEocfGEXSaBwIwsXeOGBUpfKqI+UmHvNqdWXg==} + /@tanstack/query-core@4.35.7: + resolution: {integrity: sha512-PgDJtX75ubFS0WCYFM7DqEoJ4QbxU3S5OH3gJSI40xr7UVVax3/J4CM3XUMOTs+EOT5YGEfssi3tfRVGte4DEw==} - /@tanstack/react-query-devtools@4.22.0(@tanstack/react-query@4.29.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-YeYFBnfqvb+ZlA0IiJqiHNNSzepNhI1p2o9i8NlhQli9+Zrn230M47OBaBUs8qr3DD1dC2zGB1Dis50Ktz8gAA==} + /@tanstack/react-query-devtools@4.35.7(@tanstack/react-query@4.35.7)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-oe3reHNvXBTUvNb9jwLY8EYOXyp8Oq8/c40iwpXBnEkAtJI+RryrCXaGKFTivg72roPcYHzKILQHR9jbX8sn1Q==} peerDependencies: - '@tanstack/react-query': 4.22.0 + '@tanstack/react-query': ^4.35.7 react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@tanstack/match-sorter-utils': 8.8.4 - '@tanstack/react-query': 4.29.1(react-dom@18.2.0)(react-native@0.72.4)(react@18.2.0) + '@tanstack/react-query': 4.35.7(react-dom@18.2.0)(react-native@0.72.4)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) superjson: 1.13.1 use-sync-external-store: 1.2.0(react@18.2.0) dev: false - /@tanstack/react-query@4.29.1(react-dom@18.2.0)(react-native@0.72.4)(react@18.2.0): - resolution: {integrity: sha512-/crv1v+OeuGG6EOvaQmyeo9GCKtH4jbmuhZkvk9ulufRiHcTr/A9+YP9GevEAZzUTdzXMwenpTbyxBGvG2xXvw==} + /@tanstack/react-query@4.35.7(react-dom@18.2.0)(react-native@0.72.4)(react@18.2.0): + resolution: {integrity: sha512-0MankquP/6EOM2ATfEov6ViiKemey5uTbjGlFMX1xGotwNaqC76YKDMJdHumZupPbZcZPWAeoPGEHQmVKIKoOQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -10072,7 +10694,7 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.29.1 + '@tanstack/query-core': 4.35.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-native: 0.72.4(@babel/core@7.22.11)(@babel/preset-env@7.22.10)(react@18.2.0) @@ -10108,13 +10730,13 @@ packages: resolution: {integrity: sha512-C3iu9rkWvjJ/KbYAjuwLTjqiR9fcf9lXjRBLHDzsL/M6cR7/HLSU94abSdVrzuiqRvP7u7e0FeqPK0O3VbvWyg==} dev: false - /@tauri-apps/api@1.3.0: - resolution: {integrity: sha512-AH+3FonkKZNtfRtGrObY38PrzEj4d+1emCbwNGu0V2ENbXjlLHMZQlUh+Bhu/CRmjaIwZMGJ3yFvWaZZgTHoog==} + /@tauri-apps/api@1.5.0: + resolution: {integrity: sha512-yQY9wpVNuiYhLLuyDlu1nBpqJELT1fGp7OctN4rW9I2W1T2p7A3tqPxsEzQprEwneQRBAlPM9vC8NsnMbct+pg==} engines: {node: '>= 14.6.0', npm: '>= 6.6.0', yarn: '>= 1.19.1'} dev: false - /@tauri-apps/cli-darwin-arm64@1.3.1: - resolution: {integrity: sha512-QlepYVPgOgspcwA/u4kGG4ZUijlXfdRtno00zEy+LxinN/IRXtk+6ErVtsmoLi1ZC9WbuMwzAcsRvqsD+RtNAg==} + /@tauri-apps/cli-darwin-arm64@1.5.1: + resolution: {integrity: sha512-o2FSGj72gqJjlVtuScXQZUgiRs90PS9gG7YAz0Hgr4nV1MfIn9U6JVj6R+mnAEZBCK8qdy5jdemhmNKDDoiYQg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -10122,8 +10744,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-darwin-x64@1.3.1: - resolution: {integrity: sha512-fKcAUPVFO3jfDKXCSDGY0MhZFF/wDtx3rgFnogWYu4knk38o9RaqRkvMvqJhLYPuWaEM5h6/z1dRrr9KKCbrVg==} + /@tauri-apps/cli-darwin-x64@1.5.1: + resolution: {integrity: sha512-G1/v6AJPP5oIcjsOxZshag28wdmDx1Fis2yz545aUk7oKU86A3ZJpz0b8BaXkr93w04xGcmGAaspZeXMmTvrbw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -10131,8 +10753,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-arm-gnueabihf@1.3.1: - resolution: {integrity: sha512-+4H0dv8ltJHYu/Ma1h9ixUPUWka9EjaYa8nJfiMsdCI4LJLNE6cPveE7RmhZ59v9GW1XB108/k083JUC/OtGvA==} + /@tauri-apps/cli-linux-arm-gnueabihf@1.5.1: + resolution: {integrity: sha512-hPDOUMviffyX5BySk6RuD7IZZeMuNUJzKWHxVWa0NHJPfxQOIPWwYWbk6TascrVk9GZYAImcB0yKfrll8I0VTg==} engines: {node: '>= 10'} cpu: [arm] os: [linux] @@ -10140,8 +10762,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-arm64-gnu@1.3.1: - resolution: {integrity: sha512-Pj3odVO1JAxLjYmoXKxcrpj/tPxcA8UP8N06finhNtBtBaxAjrjjxKjO4968KB0BUH7AASIss9EL4Tr0FGnDuw==} + /@tauri-apps/cli-linux-arm64-gnu@1.5.1: + resolution: {integrity: sha512-EJjTXqZchFLVrFgfxwstrQj7NwVDirffLhw5hRWS3L3Iys3IvqzIMVIA+GrY7KsaPwq7qaSqE1CDtP1wejE/9g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -10149,8 +10771,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-arm64-musl@1.3.1: - resolution: {integrity: sha512-tA0JdDLPFaj42UDIVcF2t8V0tSha40rppcmAR/MfQpTCxih6399iMjwihz9kZE1n4b5O4KTq9GliYo50a8zYlQ==} + /@tauri-apps/cli-linux-arm64-musl@1.5.1: + resolution: {integrity: sha512-XgJIk0AcxRL4pWVjfj0wiC9WnIZoUIVLPcQs86dNxoqzwAvADdNYp+McXf3/MDxX8uGEzpgdvlqr4T+50c8f6w==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -10158,8 +10780,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-x64-gnu@1.3.1: - resolution: {integrity: sha512-FDU+Mnvk6NLkqQimcNojdKpMN4Y3W51+SQl+NqG9AFCWprCcSg62yRb84751ujZuf2MGT8HQOfmd0i77F4Q3tQ==} + /@tauri-apps/cli-linux-x64-gnu@1.5.1: + resolution: {integrity: sha512-VoVrIn7b+F2n0LJoDkLGXQJsPV/U1h3QnjRNE+Tcju6xVPBx64H0vfb7lC3S4QfVpiQ4Uc+1UD3Slvn4jGpL/A==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -10167,8 +10789,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-x64-musl@1.3.1: - resolution: {integrity: sha512-MpO3akXFmK8lZYEbyQRDfhdxz1JkTBhonVuz5rRqxwA7gnGWHa1aF1+/2zsy7ahjB2tQ9x8DDFDMdVE20o9HrA==} + /@tauri-apps/cli-linux-x64-musl@1.5.1: + resolution: {integrity: sha512-tQi2K0LYW80BLud7ZFOy3WxCM2VjDRxuhxOYhtcLG39cIeGqsSz07LwiCFNBn4vy2J47TnZ+8XDRAOtxSFe25w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -10176,8 +10798,17 @@ packages: dev: true optional: true - /@tauri-apps/cli-win32-ia32-msvc@1.3.1: - resolution: {integrity: sha512-9Boeo3K5sOrSBAZBuYyGkpV2RfnGQz3ZhGJt4hE6P+HxRd62lS6+qDKAiw1GmkZ0l1drc2INWrNeT50gwOKwIQ==} + /@tauri-apps/cli-win32-arm64-msvc@1.5.1: + resolution: {integrity: sha512-BdVwzVXY2JWBtWEO/G0//jIWXeWR52+KG0+kyoHO6QTxkncLrN5q2RldvXOe7CvhKe/qmgbkNosj5jWi7t49kQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@tauri-apps/cli-win32-ia32-msvc@1.5.1: + resolution: {integrity: sha512-Q0ei4ZUHlGu/b4DP4Cm6WnI5zxpLxnf/vSwR2BYO3XO65TdLee1gTyuwYuSZJYu5jxqSoSusmLyL4F43jHhf9Q==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -10185,8 +10816,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-win32-x64-msvc@1.3.1: - resolution: {integrity: sha512-wMrTo91hUu5CdpbElrOmcZEoJR4aooTG+fbtcc87SMyPGQy1Ux62b+ZdwLvL1sVTxnIm//7v6QLRIWGiUjCPwA==} + /@tauri-apps/cli-win32-x64-msvc@1.5.1: + resolution: {integrity: sha512-chpsJ5PIwMOdn1IIJ6bj2G7jv9jQryVvhujU0k3kt/5kE7OuLRDYbI5BAIzMOaLoOTgoo8oxcFXQ+enELSxlMQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -10194,20 +10825,21 @@ packages: dev: true optional: true - /@tauri-apps/cli@1.3.1: - resolution: {integrity: sha512-o4I0JujdITsVRm3/0spfJX7FcKYrYV1DXJqzlWIn6IY25/RltjU6qbC1TPgVww3RsRX63jyVUTcWpj5wwFl+EQ==} + /@tauri-apps/cli@1.5.1: + resolution: {integrity: sha512-Ssj30axil5vPBV3W5ScHXk4umTKu6BhfmMdljfKDOG9K55gAqzBAE2VBC5e/ouclSxZfN+6YNL9VhDXFu/UyeA==} engines: {node: '>= 10'} hasBin: true optionalDependencies: - '@tauri-apps/cli-darwin-arm64': 1.3.1 - '@tauri-apps/cli-darwin-x64': 1.3.1 - '@tauri-apps/cli-linux-arm-gnueabihf': 1.3.1 - '@tauri-apps/cli-linux-arm64-gnu': 1.3.1 - '@tauri-apps/cli-linux-arm64-musl': 1.3.1 - '@tauri-apps/cli-linux-x64-gnu': 1.3.1 - '@tauri-apps/cli-linux-x64-musl': 1.3.1 - '@tauri-apps/cli-win32-ia32-msvc': 1.3.1 - '@tauri-apps/cli-win32-x64-msvc': 1.3.1 + '@tauri-apps/cli-darwin-arm64': 1.5.1 + '@tauri-apps/cli-darwin-x64': 1.5.1 + '@tauri-apps/cli-linux-arm-gnueabihf': 1.5.1 + '@tauri-apps/cli-linux-arm64-gnu': 1.5.1 + '@tauri-apps/cli-linux-arm64-musl': 1.5.1 + '@tauri-apps/cli-linux-x64-gnu': 1.5.1 + '@tauri-apps/cli-linux-x64-musl': 1.5.1 + '@tauri-apps/cli-win32-arm64-msvc': 1.5.1 + '@tauri-apps/cli-win32-ia32-msvc': 1.5.1 + '@tauri-apps/cli-win32-x64-msvc': 1.5.1 dev: true /@testing-library/dom@8.20.1: @@ -10261,6 +10893,16 @@ packages: '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.20.1 + /@types/babel__core@7.20.2: + resolution: {integrity: sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==} + dependencies: + '@babel/parser': 7.22.13 + '@babel/types': 7.22.11 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.20.1 + dev: true + /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: @@ -10281,12 +10923,12 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 18.15.1 + '@types/node': 18.17.12 /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.15.1 + '@types/node': 18.17.12 /@types/debug@4.1.8: resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} @@ -10317,12 +10959,14 @@ packages: dependencies: '@types/eslint': 8.44.2 '@types/estree': 1.0.1 + dev: false /@types/eslint@8.44.2: resolution: {integrity: sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==} dependencies: '@types/estree': 1.0.1 '@types/json-schema': 7.0.12 + dev: false /@types/estree-jsx@1.0.0: resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==} @@ -10339,7 +10983,7 @@ packages: /@types/express-serve-static-core@4.17.36: resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==} dependencies: - '@types/node': 18.15.1 + '@types/node': 18.17.12 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -10433,17 +11077,13 @@ packages: /@types/loadable__component@5.13.4: resolution: {integrity: sha512-YhoCCxyuvP2XeZNbHbi8Wb9EMaUJuA2VGHxJffcQYrJKIKSkymJrhbzsf9y4zpTmr5pExAAEh5hbF628PAZ8Dg==} dependencies: - '@types/react': 18.0.38 + '@types/react': 18.2.6 dev: true /@types/lodash@4.14.197: resolution: {integrity: sha512-BMVOiWs0uNxHVlHBgzTIqJYmj+PgCo4euloGF+5m4okL3rEYzM2EEv78mw8zWSMM57dM7kVIgJ2QDvwHSoCI5g==} dev: false - /@types/long@4.0.2: - resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} - dev: false - /@types/mdast@3.0.12: resolution: {integrity: sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==} dependencies: @@ -10471,6 +11111,10 @@ packages: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: false + /@types/mustache@4.2.3: + resolution: {integrity: sha512-MG+oI3oelPKLN2gpkel08v6Tp6zU2zZQRq+eSpRsFtLNTd2kxZolOHQTmQQs0wqXTLOqs+ri3tRUaagH5u0quw==} + dev: true + /@types/node-fetch@2.6.4: resolution: {integrity: sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==} dependencies: @@ -10481,16 +11125,9 @@ packages: /@types/node@16.18.46: resolution: {integrity: sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==} - /@types/node@18.15.1: - resolution: {integrity: sha512-U2TWca8AeHSmbpi314QBESRk7oPjSZjDsR+c+H4ECC1l+kFgpZf8Ydhv3SJpPy51VyZHHqxlb6mTTqYNNRVAIw==} - /@types/node@18.17.12: resolution: {integrity: sha512-d6xjC9fJ/nSnfDeU0AMDsaJyb1iHsqCSOdi84w4u+SlN/UgQdY5tRhpMzaFYsI4mnpvgTivEaQd0yOUhAtOnEQ==} - /@types/node@20.2.1: - resolution: {integrity: sha512-DqJociPbZP1lbZ5SQPk4oag6W7AyaGMO6gSfRwq3PWl4PXTwJpRQJhDq4W0kzrg3w6tJ1SwlvGZ5uKFHY13LIg==} - dev: true - /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -10502,10 +11139,6 @@ packages: resolution: {integrity: sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==} dev: false - /@types/parse-json@4.0.0: - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - dev: true - /@types/parse5@6.0.3: resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} dev: false @@ -10539,14 +11172,8 @@ packages: /@types/react-dom@18.2.4: resolution: {integrity: sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==} - dependencies: - '@types/react': 18.0.38 - - /@types/react-helmet@6.1.6: - resolution: {integrity: sha512-ZKcoOdW/Tg+kiUbkFCBtvDw0k3nD4HJ/h/B9yWxN4uDO8OkRksWTO+EL+z/Qu3aHTeTll3Ro0Cc/8UhwBCMG5A==} dependencies: '@types/react': 18.2.6 - dev: true /@types/react-reconciler@0.26.7: resolution: {integrity: sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==} @@ -10564,7 +11191,7 @@ packages: resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.0.38 + '@types/react': 18.2.6 '@types/react-router': 5.1.20 dev: true @@ -10572,21 +11199,16 @@ packages: resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.0.38 + '@types/react': 18.2.6 dev: true - /@types/react-scroll-sync@0.8.4: - resolution: {integrity: sha512-88N2vgZdVqlwr5ayH/5GNAAjfdlzhted/qPTyXgT/DzQwsuIWkwFpZtoOhyGCRmxUC3w5wA+ZhkpbzagIXWNaQ==} - dependencies: - '@types/react': 18.0.38 - dev: false - /@types/react@18.0.38: resolution: {integrity: sha512-ExsidLLSzYj4cvaQjGnQCk4HFfVT9+EZ9XZsQ8Hsrcn8QNgXtpZ3m9vSIC2MWtx7jHictK6wYhQgGh6ic58oOw==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 csstype: 3.1.2 + dev: true /@types/react@18.2.6: resolution: {integrity: sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==} @@ -10610,14 +11232,14 @@ packages: resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: '@types/mime': 1.3.2 - '@types/node': 18.15.1 + '@types/node': 18.17.12 /@types/serve-static@1.15.2: resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} dependencies: '@types/http-errors': 2.0.1 '@types/mime': 3.0.1 - '@types/node': 18.15.1 + '@types/node': 18.17.12 /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} @@ -10639,7 +11261,7 @@ packages: /@types/uuid@9.0.2: resolution: {integrity: sha512-kNnC1GFBLuhImSnV7w4njQkUiJi0ZXUycu1rUaouPqiKlXkh77JKgdRnTAp1x5eBwcIwbtI+3otwzuIDEuDoxQ==} - dev: false + dev: true /@types/webxr@0.5.4: resolution: {integrity: sha512-41gfGLTtqXZhcmoDlLDHqMJDuwAMwhHwXf9Q2job3TUBsvkNfPNI/3IWVEtLH4tyY1ElWtfwIaoNeqeEX238/Q==} @@ -10662,35 +11284,36 @@ packages: dependencies: '@types/yargs-parser': 21.0.0 - /@typescript-eslint/eslint-plugin@5.59.6(@typescript-eslint/parser@5.59.6)(eslint@8.41.0)(typescript@5.2.2): - resolution: {integrity: sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/eslint-plugin@6.7.4(@typescript-eslint/parser@6.7.4)(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-DAbgDXwtX+pDkAHwiGhqP3zWUGpW49B7eqmgpPtg+BKJXwdct79ut9+ifqOFPJGClGKSHXn2PTBatCnldJRUoA==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 5.59.6(eslint@8.41.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 5.59.6 - '@typescript-eslint/type-utils': 5.59.6(eslint@8.41.0)(typescript@5.2.2) - '@typescript-eslint/utils': 5.59.6(eslint@8.41.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.7.4(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.7.4 + '@typescript-eslint/type-utils': 6.7.4(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.4(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.4 debug: 4.3.4 - eslint: 8.41.0 - grapheme-splitter: 1.0.4 + eslint: 8.50.0 + graphemer: 1.4.0 ignore: 5.2.4 - natural-compare-lite: 1.4.0 + natural-compare: 1.4.0 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.2.2) + ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.59.6(eslint@8.41.0)(typescript@5.2.2): + /@typescript-eslint/parser@5.59.6(eslint@8.50.0)(typescript@5.2.2): resolution: {integrity: sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -10704,7 +11327,28 @@ packages: '@typescript-eslint/types': 5.59.6 '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.2.2) debug: 4.3.4 - eslint: 8.41.0 + eslint: 8.50.0 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@6.7.4(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-I5zVZFY+cw4IMZUeNCU7Sh2PO5O57F7Lr0uyhgCJmhN/BuTlnc55KxPonR4+EM3GBdfiCyGZye6DgMjtubQkmA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.7.4 + '@typescript-eslint/types': 6.7.4 + '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.4 + debug: 4.3.4 + eslint: 8.50.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color @@ -10718,21 +11362,29 @@ packages: '@typescript-eslint/visitor-keys': 5.59.6 dev: true - /@typescript-eslint/type-utils@5.59.6(eslint@8.41.0)(typescript@5.2.2): - resolution: {integrity: sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/scope-manager@6.7.4: + resolution: {integrity: sha512-SdGqSLUPTXAXi7c3Ob7peAGVnmMoGzZ361VswK2Mqf8UOYcODiYvs8rs5ILqEdfvX1lE7wEZbLyELCW+Yrql1A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.7.4 + '@typescript-eslint/visitor-keys': 6.7.4 + dev: true + + /@typescript-eslint/type-utils@6.7.4(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-n+g3zi1QzpcAdHFP9KQF+rEFxMb2KxtnJGID3teA/nxKHOVi3ylKovaqEzGBbVY2pBttU6z85gp0D00ufLzViQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: '*' + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.2.2) - '@typescript-eslint/utils': 5.59.6(eslint@8.41.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.4(eslint@8.50.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.41.0 - tsutils: 3.21.0(typescript@5.2.2) + eslint: 8.50.0 + ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - supports-color @@ -10743,6 +11395,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@typescript-eslint/types@6.7.4: + resolution: {integrity: sha512-o9XWK2FLW6eSS/0r/tgjAGsYasLAnOWg7hvZ/dGYSSNjCh+49k5ocPN8OmG5aZcSJ8pclSOyVKP2x03Sj+RrCA==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + /@typescript-eslint/typescript-estree@5.59.6(typescript@5.2.2): resolution: {integrity: sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -10764,20 +11421,40 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.59.6(eslint@8.41.0)(typescript@5.2.2): - resolution: {integrity: sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/typescript-estree@6.7.4(typescript@5.2.2): + resolution: {integrity: sha512-ty8b5qHKatlNYd9vmpHooQz3Vki3gG+3PchmtsA4TgrZBKWHNjWfkQid7K7xQogBqqc7/BhGazxMD5vr6Ha+iQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) + '@typescript-eslint/types': 6.7.4 + '@typescript-eslint/visitor-keys': 6.7.4 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@6.7.4(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-PRQAs+HUn85Qdk+khAxsVV+oULy3VkbH3hQ8hxLRJXWBEd7iI+GbQxH5SEUSH7kbEoTp6oT1bOwyga24ELALTA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.1 - '@typescript-eslint/scope-manager': 5.59.6 - '@typescript-eslint/types': 5.59.6 - '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.2.2) - eslint: 8.41.0 - eslint-scope: 5.1.1 + '@typescript-eslint/scope-manager': 6.7.4 + '@typescript-eslint/types': 6.7.4 + '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2) + eslint: 8.50.0 semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -10792,6 +11469,14 @@ packages: eslint-visitor-keys: 3.4.3 dev: true + /@typescript-eslint/visitor-keys@6.7.4: + resolution: {integrity: sha512-pOW37DUhlTZbvph50x5zZCkFn3xzwkGtNoJHzIM3svpiSkJzwOYr/kVBaXmf+RAQiUDs1AHEZVNPg6UJCJpwRA==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.7.4 + eslint-visitor-keys: 3.4.3 + dev: true + /@urql/core@2.3.6(graphql@15.8.0): resolution: {integrity: sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==} peerDependencies: @@ -10836,24 +11521,7 @@ packages: '@vercel/edge-config-fs': 0.1.0 dev: false - /@vitejs/plugin-react@2.1.0(vite@4.3.9): - resolution: {integrity: sha512-am6rPyyU3LzUYne3Gd9oj9c4Rzbq5hQnuGXSMT6Gujq45Il/+bunwq3lrB7wghLkiF45ygMwft37vgJ/NE8IAA==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^3.0.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.11) - magic-string: 0.26.7 - react-refresh: 0.14.0 - vite: 4.3.9(sass@1.55.0) - transitivePeerDependencies: - - supports-color - - /@vitejs/plugin-react@3.1.0(vite@4.3.9): + /@vitejs/plugin-react@3.1.0(vite@4.4.10): resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -10864,24 +11532,44 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.11) magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.3.9(less@4.2.0) + vite: 4.4.10(less@4.2.0) transitivePeerDependencies: - supports-color + /@vitejs/plugin-react@4.1.0(vite@4.4.10): + resolution: {integrity: sha512-rM0SqazU9iqPUraQ2JlIvReeaxOoRj6n+PzB1C0cBzIbd8qP336nC39/R9yPi3wVcah7E7j/kdU1uCUqMEU4OQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 + dependencies: + '@babel/core': 7.23.0 + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.23.0) + '@types/babel__core': 7.20.2 + react-refresh: 0.14.0 + vite: 4.4.10(sass@1.68.0) + transitivePeerDependencies: + - supports-color + dev: true + /@webassemblyjs/ast@1.11.6: resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: false /@webassemblyjs/floating-point-hex-parser@1.11.6: resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: false /@webassemblyjs/helper-api-error@1.11.6: resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: false /@webassemblyjs/helper-buffer@1.11.6: resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + dev: false /@webassemblyjs/helper-numbers@1.11.6: resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} @@ -10889,9 +11577,11 @@ packages: '@webassemblyjs/floating-point-hex-parser': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 '@xtuc/long': 4.2.2 + dev: false /@webassemblyjs/helper-wasm-bytecode@1.11.6: resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: false /@webassemblyjs/helper-wasm-section@1.11.6: resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} @@ -10900,19 +11590,23 @@ packages: '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 + dev: false /@webassemblyjs/ieee754@1.11.6: resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} dependencies: '@xtuc/ieee754': 1.2.0 + dev: false /@webassemblyjs/leb128@1.11.6: resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} dependencies: '@xtuc/long': 4.2.2 + dev: false /@webassemblyjs/utf8@1.11.6: resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: false /@webassemblyjs/wasm-edit@1.11.6: resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} @@ -10925,6 +11619,7 @@ packages: '@webassemblyjs/wasm-opt': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 '@webassemblyjs/wast-printer': 1.11.6 + dev: false /@webassemblyjs/wasm-gen@1.11.6: resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} @@ -10934,6 +11629,7 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 + dev: false /@webassemblyjs/wasm-opt@1.11.6: resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} @@ -10942,6 +11638,7 @@ packages: '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 + dev: false /@webassemblyjs/wasm-parser@1.11.6: resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} @@ -10952,12 +11649,14 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 + dev: false /@webassemblyjs/wast-printer@1.11.6: resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} dependencies: '@webassemblyjs/ast': 1.11.6 '@xtuc/long': 4.2.2 + dev: false /@xmldom/xmldom@0.7.13: resolution: {integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==} @@ -10971,9 +11670,11 @@ packages: /@xtuc/ieee754@1.2.0: resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: false /@xtuc/long@4.2.2: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: false /@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.17.19): resolution: {integrity: sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==} @@ -11016,6 +11717,7 @@ packages: acorn: ^8 dependencies: acorn: 8.10.0 + dev: false /acorn-jsx@5.3.2(acorn@7.4.1): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -11084,6 +11786,7 @@ packages: ajv: ^6.9.1 dependencies: ajv: 6.12.6 + dev: false /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -11140,6 +11843,11 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -11156,6 +11864,11 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -11182,6 +11895,11 @@ packages: /archive-wasm@1.5.3: resolution: {integrity: sha512-dxAKM63Y+1dXYIH7t3rgIj1/w/q0CdujmW3WIoIJVFdgAMhAdTcmbkPdw/Gj9xZ2J0DcdW5fZOukYEIrN6DYQg==} engines: {node: '>=18'} + dev: false + + /are-docs-informative@0.0.2: + resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} + engines: {node: '>=14'} dev: true /are-we-there-yet@2.0.0: @@ -11374,21 +12092,6 @@ packages: engines: {node: '>= 4.0.0'} dev: false - /autoprefixer@10.4.14(postcss@8.4.23): - resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - dependencies: - browserslist: 4.21.10 - caniuse-lite: 1.0.30001524 - fraction.js: 4.2.1 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.23 - postcss-value-parser: 4.2.0 - /autoprefixer@10.4.14(postcss@8.4.28): resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} engines: {node: ^10 || ^12 || >=14} @@ -11403,7 +12106,6 @@ packages: picocolors: 1.0.0 postcss: 8.4.28 postcss-value-parser: 4.2.0 - dev: false /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} @@ -11427,21 +12129,6 @@ packages: dependencies: '@babel/core': 7.22.11 - /babel-loader@8.2.5(@babel/core@7.22.11)(webpack@5.88.2): - resolution: {integrity: sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==} - engines: {node: '>= 8.9'} - peerDependencies: - '@babel/core': ^7.0.0 - webpack: '>=2' - dependencies: - '@babel/core': 7.22.11 - find-cache-dir: 3.3.2 - loader-utils: 2.0.4 - make-dir: 3.1.0 - schema-utils: 2.7.1 - webpack: 5.88.2(esbuild@0.17.19) - dev: true - /babel-plugin-const-enum@1.2.0(@babel/core@7.22.11): resolution: {integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==} peerDependencies: @@ -11655,6 +12342,7 @@ packages: /big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + dev: false /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} @@ -11841,10 +12529,28 @@ packages: base64-js: 1.5.1 ieee754: 1.2.1 + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + /builtins@1.0.3: resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} dev: false + /builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.5.4 + dev: true + + /bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + dependencies: + run-applescript: 5.0.0 + dev: true + /busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -11968,6 +12674,13 @@ packages: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} dev: false + /chalk-template@1.1.0: + resolution: {integrity: sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg==} + engines: {node: '>=14.16'} + dependencies: + chalk: 5.3.0 + dev: true + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -12043,6 +12756,7 @@ packages: /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} + dev: false /ci-info@2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} @@ -12051,7 +12765,7 @@ packages: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} - /class-variance-authority@0.5.3(typescript@5.0.4): + /class-variance-authority@0.5.3(typescript@5.2.2): resolution: {integrity: sha512-vcMxnya/xxQSvTuXO9FWAOnmLihbzX82fPkQpMUwPHZ4tdopmFlM4X818fMgCPt2L6CirOIbN91vybifdScUVw==} peerDependencies: typescript: '>= 4.5.5 < 6' @@ -12059,18 +12773,7 @@ packages: typescript: optional: true dependencies: - typescript: 5.0.4 - dev: false - - /class-variance-authority@0.5.3(typescript@5.1.3): - resolution: {integrity: sha512-vcMxnya/xxQSvTuXO9FWAOnmLihbzX82fPkQpMUwPHZ4tdopmFlM4X818fMgCPt2L6CirOIbN91vybifdScUVw==} - peerDependencies: - typescript: '>= 4.5.5 < 6' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - typescript: 5.1.3 + typescript: 5.2.2 dev: false /classnames@2.3.2: @@ -12250,9 +12953,9 @@ packages: /command-exists@1.2.9: resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} - /commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} + /commander@11.0.0: + resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} + engines: {node: '>=16'} dev: true /commander@2.13.0: @@ -12292,6 +12995,11 @@ packages: has-own-prop: 2.0.0 repeat-string: 1.6.1 + /comment-parser@1.4.0: + resolution: {integrity: sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==} + engines: {node: '>= 12.0.0'} + dev: true + /commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} @@ -12336,16 +13044,15 @@ packages: typedarray: 0.0.6 dev: true - /configstore@5.0.1: - resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} - engines: {node: '>=8'} + /configstore@6.0.0: + resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} + engines: {node: '>=12'} dependencies: - dot-prop: 5.3.0 + dot-prop: 6.0.1 graceful-fs: 4.2.11 - make-dir: 3.1.0 - unique-string: 2.0.0 + unique-string: 3.0.0 write-file-atomic: 3.0.3 - xdg-basedir: 4.0.0 + xdg-basedir: 5.1.0 dev: true /connect-history-api-fallback@1.6.0: @@ -12381,18 +13088,18 @@ packages: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} - /contentlayer@0.3.2(esbuild@0.19.2): - resolution: {integrity: sha512-fQN3l/KvUW+nIvXiaShpOCvXX4alNbvfo56vnVxHVm6vKP10bb/IRhjMXPXZzr+5hmCaeep9wMpCAvOKB6NJHA==} + /contentlayer@0.3.4(esbuild@0.19.2): + resolution: {integrity: sha512-FYDdTUFaN4yqep0waswrhcXjmMJnPD5iXDTtxcUCGdklfuIrXM2xLx51xl748cHmGA6IsC+27YZFxU6Ym13QIA==} engines: {node: '>=14.18'} hasBin: true requiresBuild: true dependencies: - '@contentlayer/cli': 0.3.2(esbuild@0.19.2) - '@contentlayer/client': 0.3.2(esbuild@0.19.2) - '@contentlayer/core': 0.3.2(esbuild@0.19.2) - '@contentlayer/source-files': 0.3.2(esbuild@0.19.2) - '@contentlayer/source-remote-files': 0.3.2(esbuild@0.19.2) - '@contentlayer/utils': 0.3.2 + '@contentlayer/cli': 0.3.4(esbuild@0.19.2) + '@contentlayer/client': 0.3.4(esbuild@0.19.2) + '@contentlayer/core': 0.3.4(esbuild@0.19.2) + '@contentlayer/source-files': 0.3.4(esbuild@0.19.2) + '@contentlayer/source-remote-files': 0.3.4(esbuild@0.19.2) + '@contentlayer/utils': 0.3.4 transitivePeerDependencies: - '@effect-ts/otel-node' - esbuild @@ -12405,7 +13112,6 @@ packages: /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: false /cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} @@ -12448,17 +13154,6 @@ packages: js-yaml: 3.14.1 parse-json: 4.0.0 - /cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - dependencies: - '@types/parse-json': 4.0.0 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - dev: true - /cosmiconfig@8.0.0: resolution: {integrity: sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==} engines: {node: '>=14'} @@ -12518,6 +13213,13 @@ packages: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} + /crypto-random-string@4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} + dependencies: + type-fest: 1.4.0 + dev: true + /crypto-random-string@5.0.0: resolution: {integrity: sha512-KWjTXWwxFd6a94m5CdRGW/t82Tr8DoBc9dNnPCAbFI1EBweN6v1tv8y4Y1m7ndkp/nkIBRxUxAzpaBnR2k3bcQ==} engines: {node: '>=14.16'} @@ -12525,110 +13227,113 @@ packages: type-fest: 2.19.0 dev: false - /cspell-dictionary@6.31.1: - resolution: {integrity: sha512-7+K7aQGarqbpucky26wled7QSCJeg6VkLUWS+hLjyf0Cqc9Zew5xsLa4QjReExWUJx+a97jbiflITZNuWxgMrg==} - engines: {node: '>=14'} + /cspell-dictionary@7.3.7: + resolution: {integrity: sha512-mJ0h2BGxYEqb/1FxKD50WuufKhDaCaIk8pwZQryqazXQCvoTpla0yud3KO61Cke92za8z37Rfb+5xATlywEfaw==} + engines: {node: '>=16'} dependencies: - '@cspell/cspell-pipe': 6.31.1 - '@cspell/cspell-types': 6.31.1 - cspell-trie-lib: 6.31.1 + '@cspell/cspell-pipe': 7.3.7 + '@cspell/cspell-types': 7.3.7 + cspell-trie-lib: 7.3.7 fast-equals: 4.0.3 - gensequence: 5.0.2 + gensequence: 6.0.0 dev: true - /cspell-gitignore@6.31.1: - resolution: {integrity: sha512-PAcmjN6X89Z8qgjem6HYb+VmvVtKuc+fWs4sk21+jv2MiLk23Bkp+8slSaIDVR//58fxJkMx17PHyo2cDO/69A==} - engines: {node: '>=14'} + /cspell-gitignore@7.3.7: + resolution: {integrity: sha512-nP4Gg+zq5y0njzhiNYTLvaJIMAponBhJoTMzkXCOOKYEHJmiRQocfa3gO4t2s8iZ4YVhscbrB2h+dYvo3MLQqg==} + engines: {node: '>=16'} hasBin: true dependencies: - cspell-glob: 6.31.1 + cspell-glob: 7.3.7 find-up: 5.0.0 dev: true - /cspell-glob@6.31.1: - resolution: {integrity: sha512-ygEmr5hgE4QtO5+L3/ihfMKBhPipbapfS22ilksFSChKMc15Regds0z+z/1ZBoe+OFAPneQfIuBxMwQ/fB00GQ==} - engines: {node: '>=14'} + /cspell-glob@7.3.7: + resolution: {integrity: sha512-DJX5wJ5dhcNzyycukZst+WtbIdpCLTL7DaKS0EKW/57QjzMwwMBgpsF89ufnreGHB8dHrPF85epF9qyOI1SRNg==} + engines: {node: '>=16'} dependencies: micromatch: 4.0.5 dev: true - /cspell-grammar@6.31.1: - resolution: {integrity: sha512-AsRVP0idcNFVSb9+p9XjMumFj3BUV67WIPWApaAzJl/dYyiIygQObRE+si0/QtFWGNw873b7hNhWZiKjqIdoaQ==} - engines: {node: '>=14'} + /cspell-grammar@7.3.7: + resolution: {integrity: sha512-4cyJ4Alq/wBGTctH7fNTbY9EZCihm11fbrGSYVe8w+msRNx6W8rugsMX009aHiw9zlvGrMAeTD08YFPnBVdfpA==} + engines: {node: '>=16'} hasBin: true dependencies: - '@cspell/cspell-pipe': 6.31.1 - '@cspell/cspell-types': 6.31.1 + '@cspell/cspell-pipe': 7.3.7 + '@cspell/cspell-types': 7.3.7 dev: true - /cspell-io@6.31.1: - resolution: {integrity: sha512-deZcpvTYY/NmLfOdOtzcm+nDvJZozKmj4TY3pPpX0HquPX0A/w42bFRT/zZNmRslFl8vvrCZZUog7SOc6ha3uA==} - engines: {node: '>=14'} + /cspell-io@7.3.7: + resolution: {integrity: sha512-zqGGllG/OM3Of7zaOELdrSoBpCyG9nJuSRCzLfKgnCG4g2zpoMfDZknJaY9VjZODHP99PvYWooF8E6kVxT34Fw==} + engines: {node: '>=16'} dependencies: - '@cspell/cspell-service-bus': 6.31.1 + '@cspell/cspell-service-bus': 7.3.7 node-fetch: 2.7.0 transitivePeerDependencies: - encoding dev: true - /cspell-lib@6.31.1: - resolution: {integrity: sha512-KgSiulbLExY+z2jGwkO77+aAkyugsPAw7y07j3hTQLpd+0esPCZqrmbo2ItnkvkDNd/c34PqQCr7/044/rz8gw==} - engines: {node: '>=14.6'} + /cspell-lib@7.3.7: + resolution: {integrity: sha512-KuFn0WTwmK50Ij1KVaXVuheleSOfv3oFIO3PfMuFg7llkfPfaRawF0b61da/EFGckU/hUc8uHRbBuGELlDo3tA==} + engines: {node: '>=16'} dependencies: - '@cspell/cspell-bundled-dicts': 6.31.1 - '@cspell/cspell-pipe': 6.31.1 - '@cspell/cspell-types': 6.31.1 - '@cspell/strong-weak-map': 6.31.1 + '@cspell/cspell-bundled-dicts': 7.3.7 + '@cspell/cspell-pipe': 7.3.7 + '@cspell/cspell-resolver': 7.3.7 + '@cspell/cspell-types': 7.3.7 + '@cspell/dynamic-import': 7.3.7 + '@cspell/strong-weak-map': 7.3.7 clear-module: 4.1.2 comment-json: 4.2.3 - configstore: 5.0.1 + configstore: 6.0.0 cosmiconfig: 8.0.0 - cspell-dictionary: 6.31.1 - cspell-glob: 6.31.1 - cspell-grammar: 6.31.1 - cspell-io: 6.31.1 - cspell-trie-lib: 6.31.1 - fast-equals: 4.0.3 - find-up: 5.0.0 - gensequence: 5.0.2 + cspell-dictionary: 7.3.7 + cspell-glob: 7.3.7 + cspell-grammar: 7.3.7 + cspell-io: 7.3.7 + cspell-trie-lib: 7.3.7 + fast-equals: 5.0.1 + find-up: 6.3.0 + gensequence: 6.0.0 import-fresh: 3.3.0 resolve-from: 5.0.0 - resolve-global: 1.0.0 - vscode-languageserver-textdocument: 1.0.8 + vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.7 transitivePeerDependencies: - encoding dev: true - /cspell-trie-lib@6.31.1: - resolution: {integrity: sha512-MtYh7s4Sbr1rKT31P2BK6KY+YfOy3dWsuusq9HnqCXmq6aZ1HyFgjH/9p9uvqGi/TboMqn1KOV8nifhXK3l3jg==} - engines: {node: '>=14'} + /cspell-trie-lib@7.3.7: + resolution: {integrity: sha512-Vv8TdTMZD3DE79SorTwn5NoWj8JD7DnYMeUK+5S6JDNLy4Ck+kTEPN6Ic9hvLAxuDmQjmoZI3TizrWvuCG66aA==} + engines: {node: '>=16'} dependencies: - '@cspell/cspell-pipe': 6.31.1 - '@cspell/cspell-types': 6.31.1 - gensequence: 5.0.2 + '@cspell/cspell-pipe': 7.3.7 + '@cspell/cspell-types': 7.3.7 + gensequence: 6.0.0 dev: true - /cspell@6.31.1: - resolution: {integrity: sha512-gyCtpkOpwI/TGibbtIgMBFnAUUp2hnYdvW/9Ky4RcneHtLH0+V/jUEbZD8HbRKz0GVZ6mhKWbNRSEyP9p3Cejw==} - engines: {node: '>=14'} + /cspell@7.3.7: + resolution: {integrity: sha512-p23EuTu+7b2qioRxC7sV1TVfxIPm7928BtT4jYBHGeONiYP0EOOWNP8ynaksMYLTifQBzH1Q0LO4L5ogHiQsfw==} + engines: {node: '>=16'} hasBin: true dependencies: - '@cspell/cspell-pipe': 6.31.1 - '@cspell/dynamic-import': 6.31.1 - chalk: 4.1.2 - commander: 10.0.1 - cspell-gitignore: 6.31.1 - cspell-glob: 6.31.1 - cspell-io: 6.31.1 - cspell-lib: 6.31.1 + '@cspell/cspell-json-reporter': 7.3.7 + '@cspell/cspell-pipe': 7.3.7 + '@cspell/cspell-types': 7.3.7 + '@cspell/dynamic-import': 7.3.7 + chalk: 5.3.0 + chalk-template: 1.1.0 + commander: 11.0.0 + cspell-gitignore: 7.3.7 + cspell-glob: 7.3.7 + cspell-io: 7.3.7 + cspell-lib: 7.3.7 fast-glob: 3.3.1 fast-json-stable-stringify: 2.1.0 - file-entry-cache: 6.0.1 - get-stdin: 8.0.0 - imurmurhash: 0.1.4 + file-entry-cache: 7.0.0 + get-stdin: 9.0.0 semver: 7.5.4 - strip-ansi: 6.0.1 + strip-ansi: 7.1.0 vscode-uri: 3.0.7 transitivePeerDependencies: - encoding @@ -12856,6 +13561,16 @@ packages: untildify: 4.0.0 dev: true + /default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.2.0 + titleize: 3.0.0 + dev: true + /default-gateway@4.2.0: resolution: {integrity: sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==} engines: {node: '>=6'} @@ -12873,6 +13588,11 @@ packages: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} + /define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + dev: true + /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} @@ -13070,9 +13790,9 @@ packages: tslib: 2.6.2 dev: true - /dot-prop@5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} + /dot-prop@6.0.1: + resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} + engines: {node: '>=10'} dependencies: is-obj: 2.0.0 dev: true @@ -13199,6 +13919,10 @@ packages: stream-shift: 1.0.1 dev: true + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -13223,6 +13947,7 @@ packages: /emojis-list@3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} + dev: false /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} @@ -13351,6 +14076,7 @@ packages: /es-module-lexer@1.3.0: resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} + dev: false /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} @@ -13582,6 +14308,17 @@ packages: transitivePeerDependencies: - supports-color + /esbuild-register@3.4.2(esbuild@0.18.20): + resolution: {integrity: sha512-kG/XyTDyz6+YDuyfB9ZoSIOOmgyFCH+xPRtsCa8W85HLRV5Csp+o3jWVbOSHgSLfyLc5DmP+KFDNwty4mEjC+Q==} + peerDependencies: + esbuild: '>=0.12 <1' + dependencies: + debug: 4.3.4 + esbuild: 0.18.20 + transitivePeerDependencies: + - supports-color + dev: true + /esbuild-sunos-64@0.15.18: resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} engines: {node: '>=12'} @@ -13677,6 +14414,35 @@ packages: '@esbuild/win32-ia32': 0.17.19 '@esbuild/win32-x64': 0.17.19 + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + /esbuild@0.19.2: resolution: {integrity: sha512-G6hPax8UbFakEj3hWO0Vs52LQ8k3lnBhxZWomUJDxfz3rZTLqF5k/FCzuNdLx2RbpBiQQF9H9onlDDH1lZsnjg==} engines: {node: '>=12'} @@ -13754,7 +14520,7 @@ packages: optionalDependencies: source-map: 0.6.1 - /eslint-config-next@13.3.0(eslint@8.41.0)(typescript@5.2.2): + /eslint-config-next@13.3.0(eslint@8.50.0)(typescript@5.2.2): resolution: {integrity: sha512-6YEwmFBX0VjBd3ODGW9df0Is0FLaRFdMN8eAahQG9CN6LjQ28J8AFr19ngxqMSg7Qv6Uca/3VeeBosJh1bzu0w==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -13765,36 +14531,51 @@ packages: dependencies: '@next/eslint-plugin-next': 13.3.0 '@rushstack/eslint-patch': 1.3.3 - '@typescript-eslint/parser': 5.59.6(eslint@8.41.0)(typescript@5.2.2) - eslint: 8.41.0 + '@typescript-eslint/parser': 5.59.6(eslint@8.50.0)(typescript@5.2.2) + eslint: 8.50.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.41.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-typescript@3.6.0)(eslint@8.41.0) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.41.0) - eslint-plugin-react: 7.32.2(eslint@8.41.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.41.0) + eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.50.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.4)(eslint@8.50.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.50.0) + eslint-plugin-react: 7.32.2(eslint@8.50.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.50.0) typescript: 5.2.2 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color dev: true - /eslint-config-prettier@8.8.0(eslint@8.41.0): - resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} + /eslint-config-prettier@9.0.0(eslint@8.50.0): + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.41.0 + eslint: 8.50.0 dev: true - /eslint-config-turbo@1.9.8(eslint@8.41.0): + /eslint-config-standard@17.1.0(eslint-plugin-import@2.28.1)(eslint-plugin-n@16.1.0)(eslint-plugin-promise@6.1.1)(eslint@8.50.0): + resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: '^15.0.0 || ^16.0.0 ' + eslint-plugin-promise: ^6.0.0 + dependencies: + eslint: 8.50.0 + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.4)(eslint@8.50.0) + eslint-plugin-n: 16.1.0(eslint@8.50.0) + eslint-plugin-promise: 6.1.1(eslint@8.50.0) + dev: true + + /eslint-config-turbo@1.9.8(eslint@8.50.0): resolution: {integrity: sha512-EaZ3EbWXo7bcnwRKZsV+ckcF5Cjdri9wRBXZd5j49E7mJ3EEPvGw70h77kWeeunu+jM3mxxfy8olmo1Udr7gvQ==} peerDependencies: eslint: '>6.6.0' dependencies: - eslint: 8.41.0 - eslint-plugin-turbo: 1.9.8(eslint@8.41.0) + eslint: 8.50.0 + eslint-plugin-turbo: 1.9.8(eslint@8.50.0) dev: true /eslint-import-resolver-node@0.3.9: @@ -13807,7 +14588,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.41.0): + /eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.50.0): resolution: {integrity: sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -13816,9 +14597,9 @@ packages: dependencies: debug: 4.3.4 enhanced-resolve: 5.15.0 - eslint: 8.41.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.41.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-typescript@3.6.0)(eslint@8.41.0) + eslint: 8.50.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.50.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.4)(eslint@8.50.0) fast-glob: 3.3.1 get-tsconfig: 4.7.0 is-core-module: 2.13.0 @@ -13830,7 +14611,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.41.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.50.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -13851,16 +14632,56 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.6(eslint@8.41.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.59.6(eslint@8.50.0)(typescript@5.2.2) debug: 3.2.7 - eslint: 8.41.0 + eslint: 8.50.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.41.0) + eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.50.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.28.1(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-typescript@3.6.0)(eslint@8.41.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.4)(eslint-import-resolver-node@0.3.9)(eslint@8.50.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 6.7.4(eslint@8.50.0)(typescript@5.2.2) + debug: 3.2.7 + eslint: 8.50.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-es-x@7.2.0(eslint@8.50.0): + resolution: {integrity: sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + '@eslint-community/regexpp': 4.8.0 + eslint: 8.50.0 + dev: true + + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.7.4)(eslint@8.50.0): resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} engines: {node: '>=4'} peerDependencies: @@ -13870,16 +14691,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.6(eslint@8.41.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.7.4(eslint@8.50.0)(typescript@5.2.2) array-includes: 3.1.6 array.prototype.findlastindex: 1.2.2 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.41.0 + eslint: 8.50.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.41.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.4)(eslint-import-resolver-node@0.3.9)(eslint@8.50.0) has: 1.0.3 is-core-module: 2.13.0 is-glob: 4.0.3 @@ -13895,7 +14716,27 @@ packages: - supports-color dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.41.0): + /eslint-plugin-jsdoc@46.8.2(eslint@8.50.0): + resolution: {integrity: sha512-5TSnD018f3tUJNne4s4gDWQflbsgOycIKEUBoCLn6XtBMgNHxQFmV8vVxUtiPxAQq8lrX85OaSG/2gnctxw9uQ==} + engines: {node: '>=16'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@es-joy/jsdoccomment': 0.40.1 + are-docs-informative: 0.0.2 + comment-parser: 1.4.0 + debug: 4.3.4 + escape-string-regexp: 4.0.0 + eslint: 8.50.0 + esquery: 1.5.0 + is-builtin-module: 3.2.1 + semver: 7.5.4 + spdx-expression-parse: 3.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.50.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -13910,7 +14751,7 @@ packages: axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.41.0 + eslint: 8.50.0 has: 1.0.3 jsx-ast-utils: 3.3.5 language-tags: 1.0.5 @@ -13920,49 +14761,80 @@ packages: semver: 6.3.1 dev: true - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.41.0)(prettier@3.0.3): - resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} - engines: {node: '>=12.0.0'} + /eslint-plugin-n@16.1.0(eslint@8.50.0): + resolution: {integrity: sha512-3wv/TooBst0N4ND+pnvffHuz9gNPmk/NkLwAxOt2JykTl/hcuECe6yhTtLJcZjIxtZwN+GX92ACp/QTLpHA3Hg==} + engines: {node: '>=16.0.0'} peerDependencies: - eslint: '>=7.28.0' + eslint: '>=7.0.0' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + builtins: 5.0.1 + eslint: 8.50.0 + eslint-plugin-es-x: 7.2.0(eslint@8.50.0) + get-tsconfig: 4.7.0 + ignore: 5.2.4 + is-core-module: 2.13.0 + minimatch: 3.1.2 + resolve: 1.22.4 + semver: 7.5.4 + dev: true + + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.50.0)(prettier@3.0.3): + resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' eslint-config-prettier: '*' - prettier: '>=2.0.0' + prettier: '>=3.0.0' peerDependenciesMeta: + '@types/eslint': + optional: true eslint-config-prettier: optional: true dependencies: - eslint: 8.41.0 - eslint-config-prettier: 8.8.0(eslint@8.41.0) + eslint: 8.50.0 + eslint-config-prettier: 9.0.0(eslint@8.50.0) prettier: 3.0.3 prettier-linter-helpers: 1.0.0 + synckit: 0.8.5 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.41.0): + /eslint-plugin-promise@6.1.1(eslint@8.50.0): + resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + eslint: 8.50.0 + dev: true + + /eslint-plugin-react-hooks@4.6.0(eslint@8.50.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.41.0 + eslint: 8.50.0 dev: true /eslint-plugin-react-native-globals@0.1.2: resolution: {integrity: sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==} dev: true - /eslint-plugin-react-native@4.0.0(eslint@8.48.0): + /eslint-plugin-react-native@4.0.0(eslint@8.50.0): resolution: {integrity: sha512-kMmdxrSY7A1WgdqaGC+rY/28rh7kBGNBRsk48ovqkQmdg5j4K+DaFmegENDzMrdLkoufKGRNkKX6bgSwQTCAxQ==} peerDependencies: eslint: ^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: '@babel/traverse': 7.22.11 - eslint: 8.48.0 + eslint: 8.50.0 eslint-plugin-react-native-globals: 0.1.2 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-react@7.32.2(eslint@8.41.0): + /eslint-plugin-react@7.32.2(eslint@8.50.0): resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: @@ -13972,7 +14844,7 @@ packages: array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - eslint: 8.41.0 + eslint: 8.50.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 @@ -13997,12 +14869,17 @@ packages: tailwindcss: 3.3.3 dev: true - /eslint-plugin-turbo@1.9.8(eslint@8.41.0): + /eslint-plugin-turbo@1.9.8(eslint@8.50.0): resolution: {integrity: sha512-Alvv3zCkILFfwEJ2aiuUjzYFqZ12qX+2F14ahNOhC9BDwgGZkEh1w19TB2gOPMLeNx2+iBVAU9L+1FTBSOOAJA==} peerDependencies: eslint: '>6.6.0' dependencies: - eslint: 8.41.0 + eslint: 8.50.0 + dev: true + + /eslint-rule-composer@0.3.0: + resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} + engines: {node: '>=4.0.0'} dev: true /eslint-scope@5.1.1: @@ -14020,13 +14897,13 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils@3.0.0(eslint@8.41.0): + /eslint-utils@3.0.0(eslint@8.50.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.41.0 + eslint: 8.50.0 eslint-visitor-keys: 2.1.0 dev: true @@ -14040,64 +14917,16 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.41.0: - resolution: {integrity: sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==} + /eslint@8.50.0: + resolution: {integrity: sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) '@eslint-community/regexpp': 4.8.0 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.41.0 - '@humanwhocodes/config-array': 0.11.10 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.21.0 - graphemer: 1.4.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint@8.48.0: - resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) - '@eslint-community/regexpp': 4.8.0 - '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.48.0 - '@humanwhocodes/config-array': 0.11.10 + '@eslint/js': 8.50.0 + '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -14278,6 +15107,7 @@ packages: /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} + dev: false /exec-async@2.2.0: resolution: {integrity: sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==} @@ -14310,6 +15140,21 @@ packages: signal-exit: 3.0.7 strip-final-newline: 2.0.0 + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: true + /expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} @@ -14555,6 +15400,11 @@ packages: resolution: {integrity: sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==} dev: true + /fast-equals@5.0.1: + resolution: {integrity: sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==} + engines: {node: '>=6.0.0'} + dev: true + /fast-glob@3.3.1: resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} @@ -14659,6 +15509,13 @@ packages: flat-cache: 3.1.0 dev: true + /file-entry-cache@7.0.0: + resolution: {integrity: sha512-OWhoO9dvvwspdI7YjGrs5wD7bPggVHc5b1NFAdyd1fEPIeno3Fj70fjBhklAqzUefgX7KCNDBnvrT8rZhS8Shw==} + engines: {node: '>=12.0.0'} + dependencies: + flat-cache: 3.1.0 + dev: true + /file-system-cache@2.3.0: resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} dependencies: @@ -14762,6 +15619,14 @@ packages: locate-path: 6.0.0 path-exists: 4.0.0 + /find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + dev: true + /find-yarn-workspace-root@2.0.0: resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} dependencies: @@ -14820,6 +15685,14 @@ packages: cross-spawn: 7.0.3 signal-exit: 3.0.7 + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + /form-data@3.0.1: resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} engines: {node: '>= 6'} @@ -15000,9 +15873,9 @@ packages: strip-ansi: 6.0.1 wide-align: 1.1.5 - /gensequence@5.0.2: - resolution: {integrity: sha512-JlKEZnFc6neaeSVlkzBGGgkIoIaSxMgvdamRoPN8r3ozm2r9dusqxeKqYQ7lhzmj2UhFQP8nkyfCaiLQxiLrDA==} - engines: {node: '>=14'} + /gensequence@6.0.0: + resolution: {integrity: sha512-8WwuywE9pokJRAcg2QFR/plk3cVPebSUqRPzpGQh3WQ0wIiHAw+HyOQj5IuHyUTQBHpBKFoB2JUMu9zT3vJ16Q==} + engines: {node: '>=16'} dev: true /gensync@1.0.0-beta.2: @@ -15053,9 +15926,9 @@ packages: engines: {node: '>=8'} dev: true - /get-stdin@8.0.0: - resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} - engines: {node: '>=10'} + /get-stdin@9.0.0: + resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} + engines: {node: '>=12'} dev: true /get-stream@4.1.0: @@ -15154,6 +16027,18 @@ packages: /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.3 + path-scurry: 1.10.1 + dev: true + /glob@3.1.21: resolution: {integrity: sha512-ANhy2V2+tFpRajE3wN4DhkNQ08KDr0Ir1qL12/cUe5+a7STEK8jkW4onUYuY8/06qAFuT5je7mjAqzx0eKI2tQ==} dependencies: @@ -15225,21 +16110,11 @@ packages: path-scurry: 1.10.1 dev: false - /glob@9.3.5: - resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} - engines: {node: '>=16 || 14 >=14.17'} + /global-dirs@3.0.1: + resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} + engines: {node: '>=10'} dependencies: - fs.realpath: 1.0.0 - minimatch: 8.0.4 - minipass: 4.2.8 - path-scurry: 1.10.1 - dev: true - - /global-dirs@0.1.1: - resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} - engines: {node: '>=4'} - dependencies: - ini: 1.3.8 + ini: 2.0.0 dev: true /globals@11.12.0: @@ -15293,10 +16168,6 @@ packages: /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true - /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true @@ -15627,7 +16498,7 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.19.2 + terser: 5.19.3 dev: true /html-tags@3.3.1: @@ -15671,6 +16542,11 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: true + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -15722,6 +16598,7 @@ packages: /immutable@4.3.4: resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + dev: true /import-fresh@2.0.0: resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} @@ -15737,8 +16614,8 @@ packages: parent-module: 1.0.1 resolve-from: 4.0.0 - /import-meta-resolve@2.2.2: - resolution: {integrity: sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==} + /import-meta-resolve@3.0.0: + resolution: {integrity: sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==} dev: true /imurmurhash@0.1.4: @@ -15773,6 +16650,12 @@ packages: /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: false + + /ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + dev: true /inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} @@ -15892,6 +16775,13 @@ packages: engines: {node: '>=4'} dev: false + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -15924,6 +16814,12 @@ packages: engines: {node: '>=8'} hasBin: true + /is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: true + /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} @@ -15974,6 +16870,14 @@ packages: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} dev: false + /is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: 3.0.0 + dev: true + /is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} @@ -16089,6 +16993,11 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} @@ -16220,6 +17129,15 @@ packages: react: 18.2.0 dev: false + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + /jake@10.8.7: resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} engines: {node: '>=10'} @@ -16461,6 +17379,11 @@ packages: transitivePeerDependencies: - supports-color + /jsdoc-type-pratt-parser@4.0.0: + resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} + engines: {node: '>=12.0.0'} + dev: true + /jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true @@ -16587,11 +17510,6 @@ packages: engines: {node: '>=6'} dev: false - /klona@2.0.6: - resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} - engines: {node: '>= 8'} - dev: true - /ktx-parse@0.4.5: resolution: {integrity: sha512-MK3FOody4TXbFf8Yqv7EBbySw7aPvEcPX++Ipt6Sox+/YMFvR5xaTyhfNSk1AEmMy+RYIw81ctN4IMxCB8OAlg==} dev: false @@ -16757,6 +17675,7 @@ packages: /loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} + dev: false /loader-utils@2.0.4: resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} @@ -16765,6 +17684,7 @@ packages: big.js: 5.2.2 emojis-list: 3.0.0 json5: 2.2.3 + dev: false /locate-path@3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} @@ -16785,6 +17705,13 @@ packages: dependencies: p-locate: 5.0.0 + /locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-locate: 6.0.0 + dev: true + /lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} dev: false @@ -16856,10 +17783,6 @@ packages: dayjs: 1.11.8 yargs: 15.4.1 - /long@4.0.0: - resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} - dev: false - /long@5.2.3: resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} dev: false @@ -16937,18 +17860,19 @@ packages: three: 0.154.0 dev: false - /magic-string@0.26.7: - resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} - engines: {node: '>=12'} - dependencies: - sourcemap-codec: 1.4.8 - /magic-string@0.27.0: resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + /magic-string@0.30.4: + resolution: {integrity: sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -18365,6 +19289,11 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} @@ -18404,8 +19333,8 @@ packages: dependencies: brace-expansion: 2.0.1 - /minimatch@8.0.4: - resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 @@ -18444,6 +19373,7 @@ packages: /minipass@4.2.8: resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} engines: {node: '>=8'} + dev: false /minipass@5.0.0: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} @@ -18510,7 +19440,7 @@ packages: /mustache@4.2.0: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true - dev: true + dev: false /mv@2.1.1: resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==} @@ -18539,10 +19469,6 @@ packages: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} dev: false - /natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true - /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true @@ -18578,15 +19504,17 @@ packages: resolution: {integrity: sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==} dev: false - /next-contentlayer@0.3.2(esbuild@0.19.2)(next@13.4.3)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-pihb/VtBq30eV+WpaWakWVtA1DWKzfXeaL7l/vR4MvrTO8UtZaX9H6wY0oSOqrmy674BRjXiQ03PbEOE5D6/iA==} + /next-contentlayer@0.3.4(contentlayer@0.3.4)(esbuild@0.19.2)(next@13.4.3)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-UtUCwgAl159KwfhNaOwyiI7Lg6sdioyKMeh+E7jxx0CJ29JuXGxBEYmCI6+72NxFGIFZKx8lvttbbQhbnYWYSw==} peerDependencies: + contentlayer: 0.3.4 next: ^12 || ^13 react: '*' react-dom: '*' dependencies: - '@contentlayer/core': 0.3.2(esbuild@0.19.2) - '@contentlayer/utils': 0.3.2 + '@contentlayer/core': 0.3.4(esbuild@0.19.2) + '@contentlayer/utils': 0.3.4 + contentlayer: 0.3.4(esbuild@0.19.2) next: 13.4.3(@babel/core@7.22.11)(@opentelemetry/api@1.4.1)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -18771,6 +19699,13 @@ packages: dependencies: path-key: 3.1.1 + /npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + /npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} dependencies: @@ -18913,6 +19848,13 @@ packages: dependencies: mimic-fn: 2.1.0 + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + /oo-ascii-tree@1.88.0: resolution: {integrity: sha512-A7m3z7XlUD3DnXSYxWmAdKQTIY6+1JzWS0lhaqgPGhj6g7a/odCsV1ctaRnjJljCB3zQBrbp2QHdYTUsD9AXcQ==} engines: {node: '>= 14.17.0'} @@ -18940,6 +19882,16 @@ packages: is-docker: 2.2.1 is-wsl: 2.2.0 + /open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + dev: true + /opentype.js@1.3.4: resolution: {integrity: sha512-d2JE9RP/6uagpQAVtJoF0pJJA/fgai89Cc50Yp0EJHk+eLp6QQ7gBoblsnubRULNY132I0J1QKMJ+JTbMqz4sw==} engines: {node: '>= 8.0.0'} @@ -19027,6 +19979,13 @@ packages: dependencies: yocto-queue: 0.1.0 + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.0.0 + dev: true + /p-locate@3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} @@ -19045,6 +20004,13 @@ packages: dependencies: p-limit: 3.1.0 + /p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-limit: 4.0.0 + dev: true + /p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} @@ -19166,6 +20132,11 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + /path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -19179,6 +20150,11 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -19326,17 +20302,6 @@ packages: tslib: 2.6.2 dev: false - /postcss-import@15.1.0(postcss@8.4.23): - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - dependencies: - postcss: 8.4.23 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.4 - /postcss-import@15.1.0(postcss@8.4.28): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} @@ -19348,15 +20313,6 @@ packages: read-cache: 1.0.0 resolve: 1.22.4 - /postcss-js@4.0.1(postcss@8.4.23): - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.23 - /postcss-js@4.0.1(postcss@8.4.28): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} @@ -19366,22 +20322,6 @@ packages: camelcase-css: 2.0.1 postcss: 8.4.28 - /postcss-load-config@4.0.1(postcss@8.4.23): - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 2.1.0 - postcss: 8.4.23 - yaml: 2.3.2 - /postcss-load-config@4.0.1(postcss@8.4.28): resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} engines: {node: '>= 14'} @@ -19398,7 +20338,7 @@ packages: postcss: 8.4.28 yaml: 2.3.2 - /postcss-loader@7.3.3(postcss@8.4.23)(webpack@5.88.2): + /postcss-loader@7.3.3(postcss@8.4.28)(webpack@5.88.2): resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -19407,7 +20347,7 @@ packages: dependencies: cosmiconfig: 8.2.0 jiti: 1.19.3 - postcss: 8.4.23 + postcss: 8.4.28 semver: 7.5.4 webpack: 5.88.2(esbuild@0.17.19) dev: false @@ -19453,15 +20393,6 @@ packages: postcss: 8.4.28 dev: false - /postcss-nested@6.0.1(postcss@8.4.23): - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - dependencies: - postcss: 8.4.23 - postcss-selector-parser: 6.0.13 - /postcss-nested@6.0.1(postcss@8.4.28): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} @@ -19471,13 +20402,13 @@ packages: postcss: 8.4.28 postcss-selector-parser: 6.0.13 - /postcss-pseudo-companion-classes@0.1.1(postcss@8.4.23): + /postcss-pseudo-companion-classes@0.1.1(postcss@8.4.28): resolution: {integrity: sha512-CJqiANNTMXqKKzaQHANdYGdpqoRbUvsXGWHEbzJ4hsTf2TF/Jj2fONWdsaXANIXIPjlfoIn/++W7FnKKrnZkNg==} engines: {node: '>=12.0.0'} peerDependencies: postcss: ^8.3.0 dependencies: - postcss: 8.4.23 + postcss: 8.4.28 dev: false /postcss-selector-parser@6.0.10: @@ -19507,14 +20438,6 @@ packages: source-map-js: 1.0.2 dev: false - /postcss@8.4.23: - resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 - /postcss@8.4.28: resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==} engines: {node: ^10 || ^12 || >=14} @@ -19558,8 +20481,8 @@ packages: fast-diff: 1.3.0 dev: true - /prettier-plugin-tailwindcss@0.5.3(@ianvs/prettier-plugin-sort-imports@4.1.0)(prettier@3.0.3): - resolution: {integrity: sha512-M5K80V21yM+CTm/FEFYRv9/9LyInYbCSXpIoPAKMm8zy89IOwdiA2e4JVbcO7tvRtAQWz32zdj7/WKcsmFyAVg==} + /prettier-plugin-tailwindcss@0.5.5(@ianvs/prettier-plugin-sort-imports@4.1.0)(prettier@3.0.3): + resolution: {integrity: sha512-voy0CjWv/CM8yeaduv5ZwovovpTGMR5LbzlhGF+LtEvMJt9wBeVTVnW781hL38R/RcDXCJwN2rolsgr94B/n0Q==} engines: {node: '>=14.21.3'} peerDependencies: '@ianvs/prettier-plugin-sort-imports': '*' @@ -19716,26 +20639,6 @@ packages: resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} dev: false - /protobufjs@6.11.4: - resolution: {integrity: sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==} - hasBin: true - requiresBuild: true - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/long': 4.0.2 - '@types/node': 18.17.12 - long: 4.0.0 - dev: false - /protobufjs@7.2.5: resolution: {integrity: sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==} engines: {node: '>=12.0.0'} @@ -19879,6 +20782,7 @@ packages: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 + dev: false /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} @@ -19972,7 +20876,7 @@ packages: dnd-core: 16.0.1 dev: false - /react-dnd@16.0.1(@types/node@18.15.1)(@types/react@18.0.38)(react@18.2.0): + /react-dnd@16.0.1(@types/node@18.17.12)(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-QeoM/i73HHu2XF9aKksIUuamHPDvRglEwdHL4jsp784BgUuWcg6mzfxT0QDdQz8Wj0qyRKx2eMg8iZtWvU4E2Q==} peerDependencies: '@types/hoist-non-react-statics': '>= 3.3.1' @@ -19989,20 +20893,20 @@ packages: dependencies: '@react-dnd/invariant': 4.0.2 '@react-dnd/shallowequal': 4.0.2 - '@types/node': 18.15.1 - '@types/react': 18.0.38 + '@types/node': 18.17.12 + '@types/react': 18.2.6 dnd-core: 16.0.1 fast-deep-equal: 3.1.3 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false - /react-docgen-typescript@2.2.2(typescript@5.0.4): + /react-docgen-typescript@2.2.2(typescript@5.2.2): resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} peerDependencies: typescript: '>= 4.3.x' dependencies: - typescript: 5.0.4 + typescript: 5.2.2 /react-docgen@6.0.0-alpha.3: resolution: {integrity: sha512-DDLvB5EV9As1/zoUsct6Iz2Cupw9FObEGD3DMcIs3EDFIoSKyz8FZtoWj3Wj+oodrU4/NfidN0BL5yrapIcTSA==} @@ -20101,7 +21005,7 @@ packages: /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - /react-json-view@1.21.3(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /react-json-view@1.21.3(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==} peerDependencies: react: ^17.0.0 || ^16.3.0 || ^15.5.4 @@ -20112,7 +21016,7 @@ packages: react-base16-styling: 0.6.0 react-dom: 18.2.0(react@18.2.0) react-lifecycles-compat: 3.0.4 - react-textarea-autosize: 8.5.3(@types/react@18.0.38)(react@18.2.0) + react-textarea-autosize: 8.5.3(@types/react@18.2.6)(react@18.2.0) transitivePeerDependencies: - '@types/react' - encoding @@ -20357,7 +21261,7 @@ packages: resolution: {integrity: sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==} engines: {node: '>=0.10.0'} - /react-remove-scroll-bar@2.3.4(@types/react@18.0.38)(react@18.2.0): + /react-remove-scroll-bar@2.3.4(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} peerDependencies: @@ -20367,13 +21271,13 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.38 + '@types/react': 18.2.6 react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.0.38)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.6)(react@18.2.0) tslib: 2.6.2 dev: false - /react-remove-scroll@2.5.5(@types/react@18.0.38)(react@18.2.0): + /react-remove-scroll@2.5.5(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} engines: {node: '>=10'} peerDependencies: @@ -20383,13 +21287,13 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.38 + '@types/react': 18.2.6 react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.0.38)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.0.38)(react@18.2.0) + react-remove-scroll-bar: 2.3.4(@types/react@18.2.6)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.6)(react@18.2.0) tslib: 2.6.2 - use-callback-ref: 1.3.0(@types/react@18.0.38)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.0.38)(react@18.2.0) + use-callback-ref: 1.3.0(@types/react@18.2.6)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.6)(react@18.2.0) dev: false /react-router-dom@6.9.0(react-dom@18.2.0)(react@18.2.0): @@ -20440,7 +21344,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /react-style-singleton@2.2.1(@types/react@18.0.38)(react@18.2.0): + /react-style-singleton@2.2.1(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: @@ -20450,14 +21354,14 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.38 + '@types/react': 18.2.6 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 tslib: 2.6.2 dev: false - /react-textarea-autosize@8.5.3(@types/react@18.0.38)(react@18.2.0): + /react-textarea-autosize@8.5.3(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==} engines: {node: '>=10'} peerDependencies: @@ -20466,7 +21370,7 @@ packages: '@babel/runtime': 7.22.11 react: 18.2.0 use-composed-ref: 1.3.0(react@18.2.0) - use-latest: 1.2.1(@types/react@18.0.38)(react@18.2.0) + use-latest: 1.2.1(@types/react@18.2.6)(react@18.2.0) transitivePeerDependencies: - '@types/react' dev: false @@ -20907,13 +21811,6 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - /resolve-global@1.0.0: - resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} - engines: {node: '>=8'} - dependencies: - global-dirs: 0.1.1 - dev: true - /resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true @@ -21002,14 +21899,6 @@ packages: dependencies: glob: 7.2.3 - /rimraf@4.4.1: - resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} - engines: {node: '>=14'} - hasBin: true - dependencies: - glob: 9.3.5 - dev: true - /rollup-plugin-visualizer@5.9.0: resolution: {integrity: sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==} engines: {node: '>=14'} @@ -21026,14 +21915,6 @@ packages: yargs: 17.7.2 dev: true - /rollup@2.79.1: - resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} - engines: {node: '>=10.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.3 - dev: true - /rollup@3.28.1: resolution: {integrity: sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} @@ -21054,6 +21935,13 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + dependencies: + execa: 5.1.1 + dev: true + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -21103,31 +21991,6 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - /sass-loader@13.0.2(sass@1.55.0)(webpack@5.88.2): - resolution: {integrity: sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==} - engines: {node: '>= 14.15.0'} - peerDependencies: - fibers: '>= 3.1.0' - node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - sass: ^1.3.0 - sass-embedded: '*' - webpack: ^5.0.0 - peerDependenciesMeta: - fibers: - optional: true - node-sass: - optional: true - sass: - optional: true - sass-embedded: - optional: true - dependencies: - klona: 2.0.6 - neo-async: 2.6.2 - sass: 1.55.0 - webpack: 5.88.2(esbuild@0.17.19) - dev: true - /sass-loader@13.3.2(webpack@5.88.2): resolution: {integrity: sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==} engines: {node: '>= 14.15.0'} @@ -21151,14 +22014,15 @@ packages: webpack: 5.88.2(esbuild@0.17.19) dev: false - /sass@1.55.0: - resolution: {integrity: sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A==} - engines: {node: '>=12.0.0'} + /sass@1.68.0: + resolution: {integrity: sha512-Lmj9lM/fef0nQswm1J2HJcEsBUba4wgNx2fea6yJHODREoMFnwRpZydBnX/RjyXw2REIwdkbqE4hrTo4qfDBUA==} + engines: {node: '>=14.0.0'} hasBin: true dependencies: chokidar: 3.5.3 immutable: 4.3.4 source-map-js: 1.0.2 + dev: true /sax@1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} @@ -21179,15 +22043,6 @@ packages: dependencies: loose-envify: 1.4.0 - /schema-utils@2.7.1: - resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} - engines: {node: '>= 8.9.0'} - dependencies: - '@types/json-schema': 7.0.12 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - dev: true - /schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} @@ -21195,6 +22050,7 @@ packages: '@types/json-schema': 7.0.12 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) + dev: false /scripts@0.1.0: resolution: {integrity: sha512-URMy4uj80+USxik0E+P7OeagdYGRM6vJQ+8zADRRNjcoIVdouxB7B60P4G4y20TizSGXdE0nAW5sSM1IIXa3hw==} @@ -21243,14 +22099,6 @@ packages: hasBin: true dev: false - /semver@7.5.0: - resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - /semver@7.5.3: resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} engines: {node: '>=10'} @@ -21301,6 +22149,7 @@ packages: resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} dependencies: randombytes: 2.1.0 + dev: false /serve-favicon@2.5.0: resolution: {integrity: sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA==} @@ -21404,6 +22253,11 @@ packages: /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + /simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} dev: false @@ -21495,6 +22349,16 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /sonner@1.0.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-hBoA2zKuYW3lUnpx4K0vAn8j77YuYiwvP9sLQfieNS2pd5FkT20sMyPTDJnl9S+5T27ZJbwQRPiujwvDBwhZQg==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -21526,10 +22390,6 @@ packages: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} - /sourcemap-codec@1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - /space-separated-tokens@1.1.5: resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} @@ -21657,6 +22517,15 @@ packages: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + /string.prototype.codepointat@0.2.1: resolution: {integrity: sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==} dev: false @@ -21728,6 +22597,13 @@ packages: dependencies: ansi-regex: 5.0.1 + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + /strip-bom-string@1.0.0: resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} engines: {node: '>=0.10.0'} @@ -21752,6 +22628,11 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -21775,15 +22656,6 @@ packages: resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==} dev: false - /style-loader@3.3.1(webpack@5.88.2): - resolution: {integrity: sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^5.0.0 - dependencies: - webpack: 5.88.2(esbuild@0.17.19) - dev: true - /style-loader@3.3.3(webpack@5.88.2): resolution: {integrity: sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==} engines: {node: '>= 12.13.0'} @@ -21913,6 +22785,14 @@ packages: /synchronous-promise@2.0.17: resolution: {integrity: sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==} + /synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.4.2 + tslib: 2.6.2 + dev: true + /tailwindcss-animate@1.0.5(tailwindcss@3.3.2): resolution: {integrity: sha512-UU3qrOJ4lFQABY+MVADmBm+0KW3xZyhMdRvejwtXqYOL7YjHYxmuREFAZdmVG5LPe5E9CAst846SLC4j5I3dcw==} peerDependencies: @@ -21944,11 +22824,11 @@ packages: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.23 - postcss-import: 15.1.0(postcss@8.4.23) - postcss-js: 4.0.1(postcss@8.4.23) - postcss-load-config: 4.0.1(postcss@8.4.23) - postcss-nested: 6.0.1(postcss@8.4.23) + postcss: 8.4.28 + postcss-import: 15.1.0(postcss@8.4.28) + postcss-js: 4.0.1(postcss@8.4.28) + postcss-load-config: 4.0.1(postcss@8.4.28) + postcss-nested: 6.0.1(postcss@8.4.28) postcss-selector-parser: 6.0.13 postcss-value-parser: 4.2.0 resolve: 1.22.4 @@ -22101,17 +22981,7 @@ packages: serialize-javascript: 6.0.1 terser: 5.19.3 webpack: 5.88.2(esbuild@0.17.19) - - /terser@5.19.2: - resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - '@jridgewell/source-map': 0.3.5 - acorn: 8.10.0 - commander: 2.20.3 - source-map-support: 0.5.21 - dev: true + dev: false /terser@5.19.3: resolution: {integrity: sha512-pQzJ9UJzM0IgmT4FAtYI6+VqFf0lj/to58AV0Xfgg0Up37RyPG7Al+1cepC6/BVuAxR9oNb41/DL4DEoHJvTdg==} @@ -22202,7 +23072,11 @@ packages: /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} - dev: false + + /titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + dev: true /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} @@ -22271,6 +23145,15 @@ packages: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false + /ts-api-utils@1.0.3(typescript@5.2.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.2.2 + dev: true + /ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} @@ -22298,7 +23181,7 @@ packages: /ts-toolbelt@9.6.0: resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} - /tsconfck@2.1.2(typescript@5.0.4): + /tsconfck@2.1.2(typescript@5.2.2): resolution: {integrity: sha512-ghqN1b0puy3MhhviwO2kGF8SeMDNhEbnKxjK7h6+fvY9JAxqvXi8y5NAHSQv687OVboS2uZIByzGd45/YxrRHg==} engines: {node: ^14.13.1 || ^16 || >=18} hasBin: true @@ -22308,7 +23191,7 @@ packages: typescript: optional: true dependencies: - typescript: 5.0.4 + typescript: 5.2.2 dev: true /tsconfig-paths@3.14.2: @@ -22657,70 +23540,69 @@ packages: safe-buffer: 5.2.1 dev: false - /turbo-darwin-64@1.10.2: - resolution: {integrity: sha512-sVLpVVANByfMgqf7OYPcZM4KiDnjGu7ITvAzBSa9Iwe14yoWLn8utrNsWCRaQEB6kEqBGLPmvL7AKwkl8M2Gqg==} + /turbo-darwin-64@1.10.14: + resolution: {integrity: sha512-I8RtFk1b9UILAExPdG/XRgGQz95nmXPE7OiGb6ytjtNIR5/UZBS/xVX/7HYpCdmfriKdVwBKhalCoV4oDvAGEg==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-darwin-arm64@1.10.2: - resolution: {integrity: sha512-TKG91DSoYQjsCft4XBx4lYycVT5n3UQB/nOKgv/WJCSfwshLWulya3yhP8JT5erv9rPF8gwgnx87lrCmT4EAVA==} + /turbo-darwin-arm64@1.10.14: + resolution: {integrity: sha512-KAdUWryJi/XX7OD0alOuOa0aJ5TLyd4DNIYkHPHYcM6/d7YAovYvxRNwmx9iv6Vx6IkzTnLeTiUB8zy69QkG9Q==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-ignore@0.3.0: - resolution: {integrity: sha512-2iCEDbCbhpPWmqVX+Onh8v7yOhScBac8iLEKl4nAox0z/gmioVZPJbn0QkcEmINRZWQq5wHVAyM4Pzo388I/iA==} + /turbo-ignore@1.10.14: + resolution: {integrity: sha512-wIH+2+zJGNstUzU1idxvreNhhDgqT/pyz8IaEQFWiTCzcn7NJBwcV2xu+62Y/SRG3bgOoEAwhLzxlwuJqGPABA==} hasBin: true dev: true - /turbo-linux-64@1.10.2: - resolution: {integrity: sha512-ZIzAkfrzjJFkSM/uEfxU6JjseCsT5PHRu0s0lmYce37ApQbv/HC7tI0cFhuosI30+O8109/mkyZykKE7AQfgqA==} + /turbo-linux-64@1.10.14: + resolution: {integrity: sha512-BOBzoREC2u4Vgpap/WDxM6wETVqVMRcM8OZw4hWzqCj2bqbQ6L0wxs1LCLWVrghQf93JBQtIGAdFFLyCSBXjWQ==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-linux-arm64@1.10.2: - resolution: {integrity: sha512-G4uZA+RBQ5S1X/oUxO5KoLL2NDMkrrBZF52+00jQv6UEb9lWDgwzqSwoAGjdXxeDCrqMW5rBVwb/IBIF2/yhwA==} + /turbo-linux-arm64@1.10.14: + resolution: {integrity: sha512-D8T6XxoTdN5D4V5qE2VZG+/lbZX/89BkAEHzXcsSUTRjrwfMepT3d2z8aT6hxv4yu8EDdooZq/2Bn/vjMI32xw==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-windows-64@1.10.2: - resolution: {integrity: sha512-ObfQO37kGu1jBzFs/L+hybrCXBwdnimotJwzg7pCoSyGijKITlugrpJoPDKlg0eMr3/1Y6KUeHy26vZaDXrbuQ==} + /turbo-windows-64@1.10.14: + resolution: {integrity: sha512-zKNS3c1w4i6432N0cexZ20r/aIhV62g69opUn82FLVs/zk3Ie0GVkSB6h0rqIvMalCp7enIR87LkPSDGz9K4UA==} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /turbo-windows-arm64@1.10.2: - resolution: {integrity: sha512-7S6dx4738R/FIT2cxbsunqgHN5LelXzuzkcaZgdkU33oswRf/6KOfOABzQLdTX7Uos59cBSdwayf6KQJxuOXUg==} + /turbo-windows-arm64@1.10.14: + resolution: {integrity: sha512-rkBwrTPTxNSOUF7of8eVvvM+BkfkhA2OvpHM94if8tVsU+khrjglilp8MTVPHlyS9byfemPAmFN90oRIPB05BA==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /turbo@1.10.2: - resolution: {integrity: sha512-m9sR5XHhuzxUQACf0vI2qCG5OqDYAZiPTaAsTwECnwUF4/cXwEmcYddbLJnO+K9orNvcnjjent5oBNBVQ/o0ow==} + /turbo@1.10.14: + resolution: {integrity: sha512-hr9wDNYcsee+vLkCDIm8qTtwhJ6+UAMJc3nIY6+PNgUTtXcQgHxCq8BGoL7gbABvNWv76CNbK5qL4Lp9G3ZYRA==} hasBin: true - requiresBuild: true optionalDependencies: - turbo-darwin-64: 1.10.2 - turbo-darwin-arm64: 1.10.2 - turbo-linux-64: 1.10.2 - turbo-linux-arm64: 1.10.2 - turbo-windows-64: 1.10.2 - turbo-windows-arm64: 1.10.2 + turbo-darwin-64: 1.10.14 + turbo-darwin-arm64: 1.10.14 + turbo-linux-64: 1.10.14 + turbo-linux-arm64: 1.10.14 + turbo-windows-64: 1.10.14 + turbo-windows-arm64: 1.10.14 dev: true /twrnc@3.6.4(react-native@0.72.4): @@ -22787,6 +23669,11 @@ packages: engines: {node: '>=8'} dev: true + /type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + dev: true + /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} @@ -22869,27 +23756,10 @@ packages: dependencies: ts-toolbelt: 9.6.0 - /typescript@4.8.2: - resolution: {integrity: sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - - /typescript@5.0.4: - resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} - engines: {node: '>=12.20'} - hasBin: true - - /typescript@5.1.3: - resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} - engines: {node: '>=14.17'} - hasBin: true - /typescript@5.2.2: resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} hasBin: true - dev: true /ua-parser-js@1.0.35: resolution: {integrity: sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==} @@ -22920,6 +23790,13 @@ packages: which-boxed-primitive: 1.0.2 dev: true + /undici@5.25.4: + resolution: {integrity: sha512-450yJxT29qKMf3aoudzFpIciqpx6Pji3hEWaXqXmanbXF58LTAGCKxcJjxMXWu3iG+Mudgo3ZUfDB6YDFd/dAw==} + engines: {node: '>=14.0'} + dependencies: + '@fastify/busboy': 2.0.0 + dev: false + /unfetch@4.2.0: resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} dev: true @@ -22980,6 +23857,13 @@ packages: dependencies: crypto-random-string: 2.0.0 + /unique-string@3.0.0: + resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + engines: {node: '>=12'} + dependencies: + crypto-random-string: 4.0.0 + dev: true + /unist-util-filter@4.0.1: resolution: {integrity: sha512-RynicUM/vbOSTSiUK+BnaK9XMfmQUh6gyi7L6taNgc7FIf84GukXVV3ucGzEN/PhUUkdP5hb1MmXc+3cvPUm5Q==} dependencies: @@ -23085,6 +23969,7 @@ packages: chokidar: 3.5.3 webpack-sources: 3.2.3 webpack-virtual-modules: 0.4.6 + dev: false /unplugin@1.0.1: resolution: {integrity: sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==} @@ -23095,6 +23980,15 @@ packages: webpack-virtual-modules: 0.5.0 dev: false + /unplugin@1.5.0: + resolution: {integrity: sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==} + dependencies: + acorn: 8.10.0 + chokidar: 3.5.3 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.5.0 + dev: true + /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} @@ -23126,7 +24020,7 @@ packages: requires-port: 1.0.0 dev: false - /use-callback-ref@1.3.0(@types/react@18.0.38)(react@18.2.0): + /use-callback-ref@1.3.0(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} peerDependencies: @@ -23136,7 +24030,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.38 + '@types/react': 18.2.6 react: 18.2.0 tslib: 2.6.2 dev: false @@ -23184,7 +24078,7 @@ packages: react: 18.2.0 dev: false - /use-isomorphic-layout-effect@1.1.2(@types/react@18.0.38)(react@18.2.0): + /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} peerDependencies: '@types/react': '*' @@ -23193,7 +24087,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.38 + '@types/react': 18.2.6 react: 18.2.0 dev: false @@ -23205,7 +24099,7 @@ packages: react: 18.2.0 dev: false - /use-latest@1.2.1(@types/react@18.0.38)(react@18.2.0): + /use-latest@1.2.1(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==} peerDependencies: '@types/react': '*' @@ -23214,9 +24108,9 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.38 + '@types/react': 18.2.6 react: 18.2.0 - use-isomorphic-layout-effect: 1.1.2(@types/react@18.0.38)(react@18.2.0) + use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.6)(react@18.2.0) dev: false /use-resize-observer@9.1.0(react-dom@18.2.0)(react@18.2.0): @@ -23230,7 +24124,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /use-sidecar@1.1.2(@types/react@18.0.38)(react@18.2.0): + /use-sidecar@1.1.2(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -23240,7 +24134,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.38 + '@types/react': 18.2.6 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.6.2 @@ -23381,7 +24275,7 @@ packages: vfile-message: 3.1.4 dev: false - /vite-plugin-html@3.2.0(vite@3.2.7): + /vite-plugin-html@3.2.0(vite@4.4.10): resolution: {integrity: sha512-2VLCeDiHmV/BqqNn5h2V+4280KRgQzCFN47cst3WiNK848klESPQnzuC3okH5XHtgwHH/6s1Ho/YV6yIO0pgoQ==} peerDependencies: vite: '>=2.0.0' @@ -23398,74 +24292,48 @@ packages: html-minifier-terser: 6.1.0 node-html-parser: 5.4.2 pathe: 0.2.0 - vite: 3.2.7 + vite: 4.4.10(sass@1.68.0) dev: true - /vite-plugin-html@3.2.0(vite@4.3.9): - resolution: {integrity: sha512-2VLCeDiHmV/BqqNn5h2V+4280KRgQzCFN47cst3WiNK848klESPQnzuC3okH5XHtgwHH/6s1Ho/YV6yIO0pgoQ==} + /vite-plugin-svgr@3.3.0(vite@4.4.10): + resolution: {integrity: sha512-vWZMCcGNdPqgziYFKQ3Y95XP0d0YGp28+MM3Dp9cTa/px5CKcHHrIoPl2Jw81rgVm6/ZUNONzjXbZQZ7Kw66og==} peerDependencies: - vite: '>=2.0.0' + vite: ^2.6.0 || 3 || 4 dependencies: - '@rollup/pluginutils': 4.2.1 - colorette: 2.0.20 - connect-history-api-fallback: 1.6.0 - consola: 2.15.3 - dotenv: 16.3.1 - dotenv-expand: 8.0.3 - ejs: 3.1.9 - fast-glob: 3.3.1 - fs-extra: 10.1.0 - html-minifier-terser: 6.1.0 - node-html-parser: 5.4.2 - pathe: 0.2.0 - vite: 4.3.9(sass@1.55.0) - dev: true - - /vite-plugin-svgr@2.2.1(vite@3.2.7): - resolution: {integrity: sha512-+EqwahbwjETJH/ssA/66dNYyKN1cO0AStq96MuXmq5maU7AePBMf2lDKfQna49tJZAjtRz+R899BWCsUUP45Fg==} - peerDependencies: - vite: ^2.6.0 || 3 - dependencies: - '@rollup/pluginutils': 4.2.1 - '@svgr/core': 6.5.1 - vite: 3.2.7 + '@rollup/pluginutils': 5.0.4 + '@svgr/core': 8.1.0 + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) + vite: 4.4.10(sass@1.68.0) transitivePeerDependencies: + - rollup - supports-color dev: true - /vite-plugin-svgr@2.2.1(vite@4.3.9): - resolution: {integrity: sha512-+EqwahbwjETJH/ssA/66dNYyKN1cO0AStq96MuXmq5maU7AePBMf2lDKfQna49tJZAjtRz+R899BWCsUUP45Fg==} + /vite-tsconfig-paths@4.2.1(typescript@5.2.2)(vite@4.4.10): + resolution: {integrity: sha512-GNUI6ZgPqT3oervkvzU+qtys83+75N/OuDaQl7HmOqFTb0pjZsuARrRipsyJhJ3enqV8beI1xhGbToR4o78nSQ==} peerDependencies: - vite: ^2.6.0 || 3 - dependencies: - '@rollup/pluginutils': 4.2.1 - '@svgr/core': 6.5.1 - vite: 4.3.9(sass@1.55.0) - transitivePeerDependencies: - - supports-color - dev: true - - /vite-tsconfig-paths@4.0.3(typescript@5.0.4)(vite@4.3.9): - resolution: {integrity: sha512-gRO2Q/tOkV+9kMht5tz90+IaEKvW2zCnvwJV3tp2ruPNZOTM5rF+yXorJT4ggmAMYEaJ3nyXjx5P5jY5FwiZ+A==} - peerDependencies: - vite: '>2.0.0-0' + vite: '*' + peerDependenciesMeta: + vite: + optional: true dependencies: debug: 4.3.4 globrex: 0.1.2 - tsconfck: 2.1.2(typescript@5.0.4) - vite: 4.3.9(sass@1.55.0) + tsconfck: 2.1.2(typescript@5.2.2) + vite: 4.4.10(sass@1.68.0) transitivePeerDependencies: - supports-color - typescript dev: true - /vite@3.2.7: - resolution: {integrity: sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==} + /vite@4.4.10(@types/node@18.17.12): + resolution: {integrity: sha512-TzIjiqx9BEXF8yzYdF2NTf1kFFbjMjUSV0LFZ3HyHoI3SGSPLnnFUKiIQtL3gl2AjHvMrprOvQ3amzaHgQlAxw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: '@types/node': '>= 14' less: '*' + lightningcss: ^1.21.0 sass: '*' stylus: '*' sugarss: '*' @@ -23475,6 +24343,8 @@ packages: optional: true less: optional: true + lightningcss: + optional: true sass: optional: true stylus: @@ -23484,54 +24354,22 @@ packages: terser: optional: true dependencies: - esbuild: 0.15.18 - postcss: 8.4.28 - resolve: 1.22.4 - rollup: 2.79.1 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /vite@4.3.9(@types/node@18.15.1): - resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 18.15.1 - esbuild: 0.17.19 + '@types/node': 18.17.12 + esbuild: 0.18.20 postcss: 8.4.28 rollup: 3.28.1 optionalDependencies: fsevents: 2.3.3 dev: true - /vite@4.3.9(less@4.2.0): - resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} + /vite@4.4.10(less@4.2.0): + resolution: {integrity: sha512-TzIjiqx9BEXF8yzYdF2NTf1kFFbjMjUSV0LFZ3HyHoI3SGSPLnnFUKiIQtL3gl2AjHvMrprOvQ3amzaHgQlAxw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: '@types/node': '>= 14' less: '*' + lightningcss: ^1.21.0 sass: '*' stylus: '*' sugarss: '*' @@ -23541,6 +24379,8 @@ packages: optional: true less: optional: true + lightningcss: + optional: true sass: optional: true stylus: @@ -23550,20 +24390,21 @@ packages: terser: optional: true dependencies: - esbuild: 0.17.19 + esbuild: 0.18.20 less: 4.2.0 postcss: 8.4.28 rollup: 3.28.1 optionalDependencies: fsevents: 2.3.3 - /vite@4.3.9(sass@1.55.0): - resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} + /vite@4.4.10(sass@1.68.0): + resolution: {integrity: sha512-TzIjiqx9BEXF8yzYdF2NTf1kFFbjMjUSV0LFZ3HyHoI3SGSPLnnFUKiIQtL3gl2AjHvMrprOvQ3amzaHgQlAxw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: '@types/node': '>= 14' less: '*' + lightningcss: ^1.21.0 sass: '*' stylus: '*' sugarss: '*' @@ -23573,6 +24414,8 @@ packages: optional: true less: optional: true + lightningcss: + optional: true sass: optional: true stylus: @@ -23582,18 +24425,19 @@ packages: terser: optional: true dependencies: - esbuild: 0.17.19 + esbuild: 0.18.20 postcss: 8.4.28 rollup: 3.28.1 - sass: 1.55.0 + sass: 1.68.0 optionalDependencies: fsevents: 2.3.3 + dev: true /vlq@1.0.1: resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} - /vscode-languageserver-textdocument@1.0.8: - resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==} + /vscode-languageserver-textdocument@1.0.11: + resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} dev: true /vscode-uri@3.0.7: @@ -23647,10 +24491,10 @@ packages: /webpack-virtual-modules@0.4.6: resolution: {integrity: sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==} + dev: false /webpack-virtual-modules@0.5.0: resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} - dev: false /webpack@5.88.2(esbuild@0.17.19): resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} @@ -23690,6 +24534,7 @@ packages: - '@swc/core' - esbuild - uglify-js + dev: false /whatwg-fetch@3.6.17: resolution: {integrity: sha512-c4ghIvG6th0eudYwKZY5keb81wtFz9/WeAHAoy8+r18kcWlitUIrmGFQ2rWEl4UCKUilD3zCLHOIPheHx5ypRQ==} @@ -23780,6 +24625,15 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -23852,9 +24706,9 @@ packages: uuid: 7.0.3 dev: false - /xdg-basedir@4.0.0: - resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} - engines: {node: '>=8'} + /xdg-basedir@5.1.0: + resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} + engines: {node: '>=12'} dev: true /xml2js@0.6.0: @@ -23897,10 +24751,6 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - /yaml@2.3.2: resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} engines: {node: '>= 14'} @@ -23971,6 +24821,11 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true + /zod@3.21.4: resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} dev: false diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 0656b5b95..15e02b506 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -5,3 +5,4 @@ packages: - 'interface' - 'docs' - 'crates/sync/example/web' + - 'scripts' diff --git a/scripts/.eslintrc.cjs b/scripts/.eslintrc.cjs new file mode 100644 index 000000000..f567f53f3 --- /dev/null +++ b/scripts/.eslintrc.cjs @@ -0,0 +1,70 @@ +module.exports = { + root: true, + env: { + node: true, + es2022: true, + browser: false, + commonjs: false, + 'shared-node-browser': false, + }, + rules: { + 'no-void': [ + 'error', + { + allowAsStatement: true, + }, + ], + 'no-proto': 'error', + 'valid-jsdoc': 'off', + 'import/order': [ + 'error', + { + alphabetize: { + order: 'asc', + }, + 'newlines-between': 'always', + }, + ], + 'no-unused-vars': [ + 'error', + { argsIgnorePattern: '^_', destructuredArrayIgnorePattern: '^_' }, + ], + 'jsdoc/require-returns-check': 'off', + 'jsdoc/require-param-description': 'off', + 'jsdoc/require-returns-description': 'off', + 'standard/no-callback-literal': 'off', + }, + parser: '@babel/eslint-parser', + plugins: ['@babel'], + extends: [ + 'eslint:recommended', + 'standard', + 'plugin:import/recommended', + 'plugin:prettier/recommended', + 'plugin:jsdoc/recommended-typescript-flavor', + ], + settings: { + jsdoc: { + mode: 'typescript', + tagNamePreference: { + typicalname: 'typicalname', + }, + }, + }, + parserOptions: { + project: './tsconfig.json', + sourceType: 'module', + babelOptions: { + presets: [ + [ + '@babel/preset-env', + { + shippedProposals: true, + }, + ], + ], + }, + tsconfigRootDir: __dirname, + requireConfigFile: false, + }, +} diff --git a/scripts/.gitignore b/scripts/.gitignore new file mode 100644 index 000000000..b152df746 --- /dev/null +++ b/scripts/.gitignore @@ -0,0 +1,2 @@ +.tmp +node_modules diff --git a/scripts/deps.mjs b/scripts/deps.mjs deleted file mode 100644 index fb8b9f8de..000000000 --- a/scripts/deps.mjs +++ /dev/null @@ -1,197 +0,0 @@ -import * as fs from 'node:fs/promises'; -import * as os from 'node:os'; -import * as path from 'node:path'; -import { env } from 'node:process'; -import { extractTo } from 'archive-wasm/src/fs.mjs'; - -import { - getGh, - getGhArtifactContent, - getGhReleasesAssets, - getGhWorkflowRunArtifacts -} from './github.mjs'; -import { - FFMPEG_SUFFFIX, - FFMPEG_WORKFLOW, - getConst, - getSuffix, - LIBHEIF_SUFFIX, - LIBHEIF_WORKFLOW, - PDFIUM_SUFFIX, - PROTOC_SUFFIX -} from './suffix.mjs'; -import { which } from './which.mjs'; - -const noop = () => {}; - -const __debug = env.NODE_ENV === 'debug'; -const __osType = os.type(); - -// Github repos -const PDFIUM_REPO = 'bblanchon/pdfium-binaries'; -const PROTOBUF_REPO = 'protocolbuffers/protobuf'; -const SPACEDRIVE_REPO = 'spacedriveapp/spacedrive'; - -/** - * Download and extract protobuff compiler binary - * @param {string[]} machineId - * @param {string} framework - */ -export async function downloadProtc(machineId, framework) { - if (await which('protoc')) return; - - console.log('Downloading protoc...'); - - const protocSuffix = getSuffix(PROTOC_SUFFIX, machineId); - if (protocSuffix == null) throw new Error('NO_PROTOC'); - - let found = false; - for await (const release of getGhReleasesAssets(PROTOBUF_REPO)) { - if (!protocSuffix.test(release.name)) continue; - try { - await extractTo(await getGh(release.downloadUrl), framework, { - chmod: 0o600, - overwrite: true - }); - found = true; - break; - } catch (error) { - console.warn('Failed to download protoc, re-trying...'); - if (__debug) console.error(error); - } - } - - if (!found) throw new Error('NO_PROTOC'); - - // cleanup - await fs.unlink(path.join(framework, 'readme.txt')).catch(__debug ? console.error : noop); -} - -/** - * Download and extract pdfium library for generating PDFs thumbnails - * @param {string[]} machineId - * @param {string} framework - */ -export async function downloadPDFium(machineId, framework) { - console.log('Downloading pdfium...'); - - const pdfiumSuffix = getSuffix(PDFIUM_SUFFIX, machineId); - if (pdfiumSuffix == null) throw new Error('NO_PDFIUM'); - - let found = false; - for await (const release of getGhReleasesAssets(PDFIUM_REPO)) { - if (!pdfiumSuffix.test(release.name)) continue; - try { - await extractTo(await getGh(release.downloadUrl), framework, { - chmod: 0o600, - overwrite: true - }); - found = true; - break; - } catch (error) { - console.warn('Failed to download pdfium, re-trying...'); - if (__debug) console.error(error); - } - } - - if (!found) throw new Error('NO_PDFIUM'); - - // cleanup - const cleanup = [ - fs.rename(path.join(framework, 'LICENSE'), path.join(framework, 'LICENSE.pdfium')), - ...['args.gn', 'PDFiumConfig.cmake', 'VERSION'].map((file) => - fs.unlink(path.join(framework, file)).catch(__debug ? console.error : noop) - ) - ]; - - switch (__osType) { - case 'Linux': - cleanup.push(fs.chmod(path.join(framework, 'lib', 'libpdfium.so'), 0o750)); - break; - case 'Darwin': - cleanup.push(fs.chmod(path.join(framework, 'lib', 'libpdfium.dylib'), 0o750)); - break; - } - - await Promise.all(cleanup); -} - -/** - * Download and extract ffmpeg libs for video thumbnails - * @param {string[]} machineId - * @param {string} framework - * @param {string[]} branches - */ -export async function downloadFFMpeg(machineId, framework, branches) { - const workflow = getConst(FFMPEG_WORKFLOW, machineId); - if (workflow == null) { - console.log('Checking FFMPeg...'); - if (await which('ffmpeg')) { - // TODO: check ffmpeg version match what we need - return; - } else { - throw new Error('NO_FFMPEG'); - } - } - - console.log('Downloading FFMPeg...'); - - const ffmpegSuffix = getSuffix(FFMPEG_SUFFFIX, machineId); - if (ffmpegSuffix == null) throw new Error('NO_FFMPEG'); - - let found = false; - for await (const artifact of getGhWorkflowRunArtifacts(SPACEDRIVE_REPO, workflow, branches)) { - if (!ffmpegSuffix.test(artifact.name)) continue; - try { - const data = await getGhArtifactContent(SPACEDRIVE_REPO, artifact.id); - await extractTo(data, framework, { - chmod: 0o600, - recursive: true, - overwrite: true - }); - found = true; - break; - } catch (error) { - console.warn('Failed to download FFMpeg, re-trying...'); - if (__debug) console.error(error); - } - } - - if (!found) throw new Error('NO_FFMPEG'); -} - -/** - * Download and extract libheif libs for heif thumbnails - * @param {string[]} machineId - * @param {string} framework - * @param {string[]} branches - */ -export async function downloadLibHeif(machineId, framework, branches) { - const workflow = getConst(LIBHEIF_WORKFLOW, machineId); - if (workflow == null) return; - - console.log('Downloading LibHeif...'); - - const libHeifSuffix = getSuffix(LIBHEIF_SUFFIX, machineId); - if (libHeifSuffix == null) throw new Error('NO_LIBHEIF'); - - let found = false; - for await (const artifact of getGhWorkflowRunArtifacts(SPACEDRIVE_REPO, workflow, branches)) { - if (!libHeifSuffix.test(artifact.name)) continue; - try { - const data = await getGhArtifactContent(SPACEDRIVE_REPO, artifact.id); - await extractTo(data, framework, { - chmod: 0o600, - recursive: true, - overwrite: true - }); - found = true; - break; - } catch (error) { - console.warn('Failed to download LibHeif, re-trying...'); - if (__debug) console.error(error); - } - } - - if (!found) throw new Error('NO_LIBHEIF'); -} diff --git a/scripts/git.mjs b/scripts/git.mjs deleted file mode 100644 index 9e33b28ee..000000000 --- a/scripts/git.mjs +++ /dev/null @@ -1,86 +0,0 @@ -import { exec as execCb } from 'node:child_process'; -import * as fs from 'node:fs/promises'; -import * as path from 'node:path'; -import { env } from 'node:process'; -import { promisify } from 'node:util'; - -const __debug = env.NODE_ENV === 'debug'; - -const exec = promisify(execCb); - -/** - * @param {string} repoPath - * @returns {string?} - */ -async function getRemoteBranchName(repoPath) { - let branchName; - try { - branchName = (await exec('git symbolic-ref --short HEAD', { cwd: repoPath })).stdout.trim(); - if (!branchName) throw 'Empty local branch name'; - } catch (error) { - if (__debug) { - console.warn(`Failed to read git local branch name`); - console.error(error); - } - return null; - } - - let remoteBranchName; - try { - remoteBranchName = ( - await exec(`git for-each-ref --format="%(upstream:short)" refs/heads/${branchName}`, { - cwd: repoPath - }) - ).stdout.trim(); - const [remote, branch] = remoteBranchName.split('/'); - if (!branch) throw 'Empty remote branch name'; - remoteBranchName = branch; - } catch (error) { - if (__debug) { - console.warn(`Failed to read git remote branch name`); - console.error(error); - } - return null; - } - - return remoteBranchName; -} - -// https://stackoverflow.com/q/3651860#answer-67151923 -const REF_REGEX = /ref:\s+refs\/heads\/(?[^\s\x00-\x1F\:\?\[\\\^\~]+)/; -const GITHUB_REF_REGEX = /^refs\/heads\//; - -/** - * @param {string} repoPath - * @returns {Promise} - */ -export async function getGitBranches(repoPath) { - const branches = ['main', 'master']; - - if (env.GITHUB_HEAD_REF) { - branches.unshift(env.GITHUB_HEAD_REF); - } else if (env.GITHUB_REF) { - branches.unshift(env.GITHUB_REF.replace(GITHUB_REF_REGEX, '')); - } - - const remoteBranchName = await getRemoteBranchName(repoPath); - if (remoteBranchName) { - branches.unshift(remoteBranchName); - } else { - let head; - try { - head = await fs.readFile(path.join(repoPath, '.git', 'HEAD'), { encoding: 'utf8' }); - } catch (error) { - if (__debug) { - console.warn(`Failed to read git HEAD file`); - console.error(error); - } - return branches; - } - - const match = REF_REGEX.exec(head); - if (match?.groups?.branch) branches.unshift(match.groups.branch); - } - - return branches; -} diff --git a/scripts/machineId.mjs b/scripts/machineId.mjs deleted file mode 100644 index eb8ad56bd..000000000 --- a/scripts/machineId.mjs +++ /dev/null @@ -1,60 +0,0 @@ -import { exec as execCb } from 'node:child_process'; -import * as os from 'node:os'; -import { env } from 'node:process'; -import { promisify } from 'node:util'; - -const __debug = env.NODE_ENV === 'debug'; - -let libc = 'glibc'; -if (os.type() === 'Linux') { - try { - const exec = promisify(execCb); - if ((await exec('ldd /bin/ls')).stdout.includes('musl')) { - libc = 'musl'; - } - } catch (error) { - if (__debug) { - console.warn(`Failed to check libc type`); - console.error(error); - } - } -} - -const OS_TYPE = { - darwin: 'Darwin', - windows: 'Windows_NT', - linux: 'Linux' -}; - -export function getMachineId() { - let machineId; - - /** - * Possible TARGET_TRIPLE: - * x86_64-apple-darwin - * aarch64-apple-darwin - * x86_64-pc-windows-msvc - * aarch64-pc-windows-msvc - * x86_64-unknown-linux-gnu - * x86_64-unknown-linux-musl - * aarch64-unknown-linux-gnu - * aarch64-unknown-linux-musl - * armv7-unknown-linux-gnueabihf - */ - if (env.TARGET_TRIPLE) { - const target = env.TARGET_TRIPLE.split('-'); - const osType = OS_TYPE[target[2]]; - - if (!osType) throw new Error(`Unknown OS type: ${target[2]}`); - if (!target[0]) throw new Error(`Unknown machine type: ${target[0]}`); - - machineId = [osType, target[0]]; - if (machineId[0] === 'Linux') machineId.push(target[3].includes('musl') ? 'musl' : 'glibc'); - } else { - // Current machine identifiers - machineId = [os.type(), os.machine()]; - if (machineId[0] === 'Linux') machineId.push(libc); - } - - return machineId; -} diff --git a/scripts/package.json b/scripts/package.json new file mode 100644 index 000000000..82651d6ea --- /dev/null +++ b/scripts/package.json @@ -0,0 +1,42 @@ +{ + "name": "@sd/scripts", + "private": true, + "main": "./preprep.mjs", + "type": "module", + "scripts": { + "prep": "node preprep.mjs", + "tauri": "node tauri.mjs", + "lint": "eslint --cache", + "typecheck": "tsc" + }, + "prettier": { + "semi": false, + "endOfLine": "lf", + "printWidth": 99, + "singleQuote": true, + "arrowParens": "avoid", + "trailingComma": "es5" + }, + "dependencies": { + "@iarna/toml": "^2.2.5", + "archive-wasm": "^1.5.3", + "mustache": "^4.2.0", + "semver": "^7.5.0", + "undici": "^5.25.4" + }, + "devDependencies": { + "@babel/core": "~7", + "@babel/eslint-parser": "~7", + "@babel/eslint-plugin": "~7", + "@types/mustache": "^4.2.3", + "@types/node": "^18.17", + "@typescript-eslint/eslint-plugin": "^6.7", + "@typescript-eslint/parser": "^6.7", + "eslint": "^8.50", + "eslint-config-prettier": "^9.0", + "eslint-config-standard": "^17.1", + "eslint-plugin-jsdoc": "^46.8", + "eslint-plugin-prettier": "^5.0", + "typescript": "^5.2" + } +} diff --git a/scripts/preprep.mjs b/scripts/preprep.mjs index 58495ec89..269c9b1ee 100644 --- a/scripts/preprep.mjs +++ b/scripts/preprep.mjs @@ -1,229 +1,156 @@ -import { exec as _exec } from 'node:child_process'; -import * as fs from 'node:fs/promises'; -import * as os from 'node:os'; -import * as path from 'node:path'; -import { env, umask } from 'node:process'; -import { fileURLToPath } from 'node:url'; -import { promisify } from 'node:util'; -import mustache from 'mustache'; +import * as fs from 'node:fs/promises' +import * as path from 'node:path' +import { env, exit, umask } from 'node:process' +import { fileURLToPath } from 'node:url' -import { downloadFFMpeg, downloadLibHeif, downloadPDFium, downloadProtc } from './deps.mjs'; -import { getGitBranches } from './git.mjs'; -import { getMachineId } from './machineId.mjs'; -import { which } from './which.mjs'; +import * as _mustache from 'mustache' -umask(0o026); +import { downloadFFMpeg, downloadLibHeif, downloadPDFium, downloadProtc } from './utils/deps.mjs' +import { getGitBranches } from './utils/git.mjs' +import { getMachineId } from './utils/machineId.mjs' +import { + setupMacOsFramework, + symlinkSharedLibsMacOS, + symlinkSharedLibsLinux, +} from './utils/shared.mjs' +import { which } from './utils/which.mjs' if (/^(msys|mingw|cygwin)$/i.test(env.OSTYPE ?? '')) { - console.error('Bash for windows is not supported, please execute this from Powershell or CMD'); - process.exit(255); + console.error( + 'Bash for windows is not supported, please interact with this repo from Powershell or CMD' + ) + exit(255) } -const exec = promisify(_exec); +// @ts-expect-error +const mustache = /** @type {import("mustache")} */ (_mustache.default) -const __debug = env.NODE_ENV === 'debug'; -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); +// Limit file permissions +umask(0o026) + +const __debug = env.NODE_ENV === 'debug' +const __filename = fileURLToPath(import.meta.url) +const __dirname = path.dirname(__filename) // NOTE: Must point to package root path -const __root = path.resolve(path.join(__dirname, '..')); +const __root = path.resolve(path.join(__dirname, '..')) + +const bugWarn = + 'This is probably a bug, please open a issue with you system info at: ' + + 'https://github.com/spacedriveapp/spacedrive/issues/new/choose' // Current machine identifiers -const machineId = getMachineId(); +const machineId = getMachineId() // Basic dependeny check -if ( - (await Promise.all([which('cargo'), which('rustc'), which('pnpm'), which('node')])).some( - (found) => !found - ) -) { +if ((await Promise.all([which('cargo'), which('rustc'), which('pnpm')])).some(found => !found)) { console.error(`Basic dependencies missing. -Make sure you have rust, node.js and pnpm installed: +Make sure you have rust and pnpm installed: https://rustup.rs -https://nodejs.org/en/download https://pnpm.io/installation Also that you have run the setup script: packages/scripts/${machineId[0] === 'Windows_NT' ? 'setup.ps1' : 'setup.sh'} -`); +`) } -// Accepted git branches for querying for artifacts (current, main, master) -const branches = await getGitBranches(__root); - -// Create the basic target directory hierarchy -const framework = path.join(__root, 'target', 'Frameworks'); -await fs.rm(framework, { force: true, recursive: true }); +// Directory where the native deps will be downloaded +const nativeDeps = path.join(__root, 'apps', '.deps') +await fs.rm(nativeDeps, { force: true, recursive: true }) await Promise.all( - ['bin', 'lib', 'include'].map((dir) => - fs.mkdir(path.join(framework, dir), { mode: 0o750, recursive: true }) + ['bin', 'lib', 'include'].map(dir => + fs.mkdir(path.join(nativeDeps, dir), { mode: 0o750, recursive: true }) ) -); +) + +// Accepted git branches for querying for artifacts (current, main, master) +const branches = await getGitBranches(__root) // Download all necessary external dependencies await Promise.all([ - downloadProtc(machineId, framework).catch((e) => { + downloadProtc(machineId, nativeDeps).catch(e => { console.error( - 'Failed to download protoc, this is required for Spacedrive to compile. ' + + 'Failed to download protobuf compiler, this is required to build Spacedrive. ' + 'Please install it with your system package manager' - ); - throw e; + ) + throw e }), - downloadPDFium(machineId, framework).catch((e) => { + downloadPDFium(machineId, nativeDeps).catch(e => { console.warn( 'Failed to download pdfium lib. ' + - "This is optional, but if one isn't configured Spacedrive won't be able to generate thumbnails for PDF files" - ); - if (__debug) console.error(e); + "This is optional, but if one isn't present Spacedrive won't be able to generate thumbnails for PDF files" + ) + if (__debug) console.error(e) }), - downloadFFMpeg(machineId, framework, branches).catch((e) => { - console.error( - 'Failed to download ffmpeg. This is probably a bug, please open a issue with you system info at: ' + - 'https://github.com/spacedriveapp/spacedrive/issues/new/choose' - ); - throw e; + downloadFFMpeg(machineId, nativeDeps, branches).catch(e => { + console.error(`Failed to download ffmpeg. ${bugWarn}`) + throw e }), - downloadLibHeif(machineId, framework, branches).catch((e) => { - console.error( - 'Failed to download libheif. This is probably a bug, please open a issue with you system info at: ' + - 'https://github.com/spacedriveapp/spacedrive/issues/new/choose' - ); - throw e; - }) -]).catch((e) => { - if (__debug) console.error(e); - process.exit(1); -}); + downloadLibHeif(machineId, nativeDeps, branches).catch(e => { + console.error(`Failed to download libheif. ${bugWarn}`) + throw e + }), +]).catch(e => { + if (__debug) console.error(e) + exit(1) +}) + +// Extra OS specific setup +try { + if (machineId[0] === 'Linux') { + console.log(`Symlink shared libs...`) + symlinkSharedLibsLinux(__root, nativeDeps).catch(e => { + console.error(`Failed to symlink shared libs. ${bugWarn}`) + throw e + }) + } else if (machineId[0] === 'Darwin') { + console.log(`Setup Framework...`) + await setupMacOsFramework(nativeDeps).catch(e => { + console.error(`Failed to setup Framework. ${bugWarn}`) + throw e + }) + // This is still required due to how ffmpeg-sys-next builds script works + console.log(`Symlink shared libs...`) + await symlinkSharedLibsMacOS(nativeDeps).catch(e => { + console.error(`Failed to symlink shared libs. ${bugWarn}`) + throw e + }) + } +} catch (error) { + if (__debug) console.error(error) + exit(1) +} // Generate .cargo/config.toml -console.log('Generating cargo config...'); +console.log('Generating cargo config...') try { await fs.writeFile( path.join(__root, '.cargo', 'config.toml'), mustache .render( await fs.readFile(path.join(__root, '.cargo', 'config.toml.mustache'), { - encoding: 'utf8' + encoding: 'utf8', }), { - ffmpeg: machineId[0] === 'Linux' ? false : framework.replaceAll('\\', '\\\\'), + isWin: machineId[0] === 'Windows_NT', + isMacOS: machineId[0] === 'Darwin', + isLinux: machineId[0] === 'Linux', + // Escape windows path separator to be compatible with TOML parsing protoc: path .join( - framework, + nativeDeps, 'bin', machineId[0] === 'Windows_NT' ? 'protoc.exe' : 'protoc' ) .replaceAll('\\', '\\\\'), - projectRoot: __root.replaceAll('\\', '\\\\'), - isWin: machineId[0] === 'Windows_NT', - isMacOS: machineId[0] === 'Darwin', - isLinux: machineId[0] === 'Linux' + nativeDeps: nativeDeps.replaceAll('\\', '\\\\'), } ) .replace(/\n\n+/g, '\n'), { mode: 0o751, flag: 'w+' } - ); + ) } catch (error) { - console.error( - 'Failed to generate .cargo/config.toml, please open an issue on: ' + - 'https://github.com/spacedriveapp/spacedrive/issues/new/choose' - ); - if (__debug) console.error(error); - process.exit(1); -} - -if (machineId[0] === 'Linux') { - // Setup Linux libraries - const libDir = path.join(__root, 'target', 'lib'); - await fs.rm(libDir, { force: true, recursive: true }); - await fs.mkdir(libDir, { recursive: true, mode: 0o751 }); - await fs.symlink(path.join(framework, 'lib'), path.join(__root, 'target', 'lib', 'spacedrive')); -} else if (machineId[0] === 'Darwin') { - // Setup macOS Frameworks - try { - console.log('Setup Frameworks & Sign libraries...'); - const ffmpegFramework = path.join(framework, 'FFMpeg.framework'); - // Move pdfium License to FFMpeg.framework - await fs.rename( - path.join(framework, 'LICENSE.pdfium'), - path.join( - ffmpegFramework, - 'Resources', - 'English.lproj', - 'Documentation', - 'LICENSE.pdfium' - ) - ); - // Move include files to FFMpeg.framework - const include = path.join(framework, 'include'); - const headers = path.join(ffmpegFramework, 'Headers'); - const includeFiles = await fs.readdir(include, { recursive: true, withFileTypes: true }); - const moveIncludes = includeFiles - .filter( - (entry) => - (entry.isFile() || entry.isSymbolicLink()) && !entry.name.endsWith('.proto') - ) - .map(async (entry) => { - const file = path.join(entry.path, entry.name); - const newFile = path.resolve(headers, path.relative(include, file)); - await fs.mkdir(path.dirname(newFile), { mode: 0o751, recursive: true }); - await fs.rename(file, newFile); - }); - // Move libs to FFMpeg.framework - const lib = path.join(framework, 'lib'); - const libraries = path.join(ffmpegFramework, 'Libraries'); - const libFiles = await fs.readdir(lib, { recursive: true, withFileTypes: true }); - const moveLibs = libFiles - .filter( - (entry) => - (entry.isFile() || entry.isSymbolicLink()) && entry.name.endsWith('.dylib') - ) - .map(async (entry) => { - const file = path.join(entry.path, entry.name); - const newFile = path.resolve(libraries, path.relative(lib, file)); - await fs.mkdir(path.dirname(newFile), { mode: 0o751, recursive: true }); - await fs.rename(file, newFile); - }); - - await Promise.all([...moveIncludes, ...moveLibs]); - - // Symlink headers - const headerFiles = await fs.readdir(headers, { recursive: true, withFileTypes: true }); - const linkHeaders = headerFiles - .filter((entry) => entry.isFile() || entry.isSymbolicLink()) - .map(async (entry) => { - const file = path.join(entry.path, entry.name); - const link = path.resolve(include, path.relative(headers, file)); - const linkDir = path.dirname(link); - await fs.mkdir(linkDir, { mode: 0o751, recursive: true }); - await fs.symlink(path.relative(linkDir, file), link); - }); - // Symlink libraries - const libraryFiles = await fs.readdir(libraries, { recursive: true, withFileTypes: true }); - const linkLibs = libraryFiles - .filter( - (entry) => - (entry.isFile() || entry.isSymbolicLink()) && entry.name.endsWith('.dylib') - ) - .map(async (entry) => { - const file = path.join(entry.path, entry.name); - const link = path.resolve(lib, path.relative(libraries, file)); - const linkDir = path.dirname(link); - await fs.mkdir(linkDir, { mode: 0o751, recursive: true }); - await fs.symlink(path.relative(linkDir, file), link); - if (entry.isFile()) { - // Sign the lib with the local machine certificate (Required for it to work on macOS 13+) - await exec(`codesign -s "${env.APPLE_SIGNING_IDENTITY || '-'}" -f "${file}"`); - } - }); - - await Promise.all([...linkHeaders, ...linkLibs]); - } catch (error) { - console.error( - 'Failed to configure required Frameworks.This is probably a bug, please open a issue with you system info at: ' + - 'https://github.com/spacedriveapp/spacedrive/issues/new/choose' - ); - if (__debug) console.error(error); - process.exit(1); - } + console.error(`Failed to generate .cargo/config.toml. ${bugWarn}`) + if (__debug) console.error(error) + exit(1) } diff --git a/scripts/setup.sh b/scripts/setup.sh index de5d8fefb..d9ff58e2d 100755 --- a/scripts/setup.sh +++ b/scripts/setup.sh @@ -32,6 +32,12 @@ script_failure() { trap 'script_failure ${LINENO:-}' ERR +case "${OSTYPE:-}" in + 'msys' | 'mingw' | 'cygwin') + err 'Bash for windows is not supported, please interact with this repo from Powershell or CMD' + ;; +esac + if [ "${CI:-}" != "true" ]; then echo 'Spacedrive Development Environment Setup' echo 'To set up your machine for Spacedrive development, this script will install some required dependencies with your system package manager' @@ -106,7 +112,7 @@ case "$(uname)" in echo fi ;; - "Linux") # https://github.com/tauri-apps/tauri-docs/blob/dev/docs/guides/getting-started/prerequisites.md + "Linux") # https://github.com/tauri-apps/tauri-docs/blob/dev/docs/guides/getting-started/prerequisites.md#setting-up-linux if has apt-get; then echo "Detected apt!" echo "Installing dependencies with apt..." diff --git a/scripts/tauri.mjs b/scripts/tauri.mjs new file mode 100644 index 000000000..08b8cbc16 --- /dev/null +++ b/scripts/tauri.mjs @@ -0,0 +1,139 @@ +import * as fs from 'node:fs/promises' +import * as path from 'node:path' +import { env, exit, umask, platform } from 'node:process' +import { fileURLToPath } from 'node:url' + +import * as toml from '@iarna/toml' + +import { patchTauri } from './utils/patchTauri.mjs' +import spawn from './utils/spawn.mjs' + +if (/^(msys|mingw|cygwin)$/i.test(env.OSTYPE ?? '')) { + console.error( + 'Bash for windows is not supported, please interact with this repo from Powershell or CMD' + ) + exit(255) +} + +// Limit file permissions +umask(0o026) + +const __filename = fileURLToPath(import.meta.url) +const __dirname = path.dirname(__filename) +const [_, __, ...args] = process.argv + +// NOTE: Must point to package root path +const __root = path.resolve(path.join(__dirname, '..')) + +// Location for desktop app +const desktopApp = path.join(__root, 'apps', 'desktop') + +// Location of the native dependencies +const nativeDeps = path.join(__root, 'apps', '.deps') + +// Files to be removed when script finish executing +const __cleanup = /** @type {string[]} */ ([]) +const cleanUp = () => Promise.all(__cleanup.map(file => fs.unlink(file).catch(() => {}))) +process.on('SIGINT', cleanUp) + +// Check if file/dir exists +const exists = (/** @type {string} */ path) => + fs + .access(path, fs.constants.R_OK) + .then(() => true) + .catch(() => false) + +// Export environment variables defined in cargo.toml +const cargoConfig = await fs + .readFile(path.resolve(__root, '.cargo', 'config.toml'), { encoding: 'binary' }) + .then(toml.parse) +if (cargoConfig.env && typeof cargoConfig.env === 'object') + for (const [name, value] of Object.entries(cargoConfig.env)) if (!env[name]) env[name] = value + +// Default command +if (args.length === 0) args.push('build') + +let code = 0 +try { + switch (args[0]) { + case 'dev': { + __cleanup.push(...(await patchTauri(__root, nativeDeps, args))) + break + } + case 'build': { + if (!env.NODE_OPTIONS || !env.NODE_OPTIONS.includes('--max_old_space_size')) { + env.NODE_OPTIONS = `--max_old_space_size=4096 ${env.NODE_OPTIONS ?? ''}` + } + + __cleanup.push(...(await patchTauri(__root, nativeDeps, args))) + + switch (process.platform) { + case 'darwin': { + // Configure DMG background + env.BACKGROUND_FILE = path.resolve( + desktopApp, + 'src-tauri', + 'dmg-background.png' + ) + env.BACKGROUND_FILE_NAME = path.basename(env.BACKGROUND_FILE) + env.BACKGROUND_CLAUSE = `set background picture of opts to file ".background:${env.BACKGROUND_FILE_NAME}"` + + if (!(await exists(env.BACKGROUND_FILE))) + console.warn( + `WARNING: DMG background file not found at ${env.BACKGROUND_FILE}` + ) + + break + } + case 'linux': + // Cleanup appimage bundle to avoid build_appimage.sh failing + await fs.rm(path.join(__root, 'target', 'release', 'bundle', 'appimage'), { + recursive: true, + force: true, + }) + break + } + } + } + + await spawn('pnpm', ['exec', 'tauri', ...args], desktopApp).catch(async error => { + if (args[0] === 'build' || platform === 'linux') { + // Work around appimage buindling not working sometimes + const appimageDir = path.join(__root, 'target', 'release', 'bundle', 'appimage') + if ( + (await exists(path.join(appimageDir, 'build_appimage.sh'))) && + (await fs.readdir(appimageDir).then(f => f.every(f => !f.endsWith('.AppImage')))) + ) { + // Remove AppDir to allow build_appimage to rebuild it + await fs.rm(path.join(appimageDir, 'spacedrive.AppDir'), { + recursive: true, + force: true, + }) + return spawn('bash', ['build_appimage.sh'], appimageDir).catch(exitCode => { + code = exitCode + console.error(`tauri ${args[0]} failed with exit code ${exitCode}`) + }) + } + } + + console.error( + `tauri ${args[0]} failed with exit code ${typeof error === 'number' ? error : 1}` + ) + + console.warn( + `If you got an error related to FFMpeg or Protoc/Protobuf you may need to re-run \`pnpm prep\`` + ) + + throw error + }) +} catch (error) { + if (typeof error === 'number') { + code = error + } else { + if (error instanceof Error) console.error(error) + code = 1 + } +} finally { + cleanUp() + exit(code) +} diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json new file mode 100644 index 000000000..353936000 --- /dev/null +++ b/scripts/tsconfig.json @@ -0,0 +1,33 @@ +{ + "compilerOptions": { + "lib": ["esnext"], + "noEmit": true, + "outDir": "src", + "strict": true, + "checkJs": true, + "allowJs": true, + "module": "esnext", + "target": "esnext", + "declaration": true, + "incremental": true, + "skipLibCheck": true, + "removeComments": false, + "noUnusedLocals": true, + "isolatedModules": true, + "esModuleInterop": false, + "disableSizeLimit": true, + "moduleResolution": "node", + "noImplicitReturns": true, + "resolveJsonModule": true, + "noUnusedParameters": true, + "experimentalDecorators": true, + "useDefineForClassFields": true, + "noUncheckedIndexedAccess": true, + "exactOptionalPropertyTypes": true, + "forceConsistentCasingInFileNames": true, + "noPropertyAccessFromIndexSignature": false + }, + "include": ["./**/*.mjs"], + "exclude": ["node_modules"], + "$schema": "https://json.schemastore.org/tsconfig" +} diff --git a/scripts/suffix.mjs b/scripts/utils/consts.mjs similarity index 58% rename from scripts/suffix.mjs rename to scripts/utils/consts.mjs index 69f6f71d0..44255b4aa 100644 --- a/scripts/suffix.mjs +++ b/scripts/utils/consts.mjs @@ -4,78 +4,69 @@ export const PROTOC_SUFFIX = { i386: 'linux-x86_32', i686: 'linux-x86_32', x86_64: 'linux-x86_64', - arm64: 'linux-aarch_64', - aarch64: 'linux-aarch_64' + aarch64: 'linux-aarch_64', }, Darwin: { x86_64: 'osx-x86_64', - arm64: 'osx-aarch_64', - aarch64: 'osx-aarch_64' + + aarch64: 'osx-aarch_64', }, Windows_NT: { i386: 'win32', i686: 'win32', - x86_64: 'win64' - } -}; + x86_64: 'win64', + }, +} export const PDFIUM_SUFFIX = { Linux: { x86_64: { musl: 'linux-musl-x64', - glibc: 'linux-x64' + glibc: 'linux-x64', }, - arm64: 'linux-arm64', - aarch64: 'linux-arm64' + aarch64: 'linux-arm64', }, Darwin: { x86_64: 'mac-x64', - arm64: 'mac-arm64', - aarch64: 'mac-arm64' + aarch64: 'mac-arm64', }, Windows_NT: { x86_64: 'win-x64', - arm64: 'win-arm64', - aarch64: 'win-arm64' - } -}; + aarch64: 'win-arm64', + }, +} export const FFMPEG_SUFFFIX = { Darwin: { x86_64: 'x86_64', - arm64: 'arm64', - aarch64: 'arm64' + aarch64: 'arm64', }, Windows_NT: { - x86_64: 'x86_64' - } -}; + x86_64: 'x86_64', + }, +} export const FFMPEG_WORKFLOW = { Darwin: 'ffmpeg-macos.yml', - Windows_NT: 'ffmpeg-windows.yml' -}; + Windows_NT: 'ffmpeg-windows.yml', +} export const LIBHEIF_SUFFIX = { Linux: { x86_64: { musl: 'x86_64-linux-musl', - glibc: 'x86_64-linux-gnu' - }, - arm64: { - musl: 'aarch64-linux-musl', - glibc: 'aarch64-linux-gnu' + glibc: 'x86_64-linux-gnu', }, aarch64: { musl: 'aarch64-linux-musl', - glibc: 'aarch64-linux-gnu' - } - } -}; + glibc: 'aarch64-linux-gnu', + }, + }, +} export const LIBHEIF_WORKFLOW = { - Linux: 'libheif-linux.yml' -}; + Linux: 'libheif-linux.yml', +} /** * @param {Record} constants @@ -84,15 +75,15 @@ export const LIBHEIF_WORKFLOW = { */ export function getConst(constants, identifiers) { /** @type {string | Record} */ - let constant = constants; + let constant = constants for (const id of identifiers) { - constant = /** @type {string | Record} */ (constant[id]); - if (!constant) return null; - if (typeof constant !== 'object') break; + constant = /** @type {string | Record} */ (constant[id]) + if (!constant) return null + if (typeof constant !== 'object') break } - return typeof constant === 'string' ? constant : null; + return typeof constant === 'string' ? constant : null } /** @@ -101,6 +92,6 @@ export function getConst(constants, identifiers) { * @returns {RegExp?} */ export function getSuffix(suffixes, identifiers) { - const suffix = getConst(suffixes, identifiers); - return suffix ? new RegExp(`${suffix}(\\.[^\\.]+)*$`) : null; + const suffix = getConst(suffixes, identifiers) + return suffix ? new RegExp(`${suffix}(\\.[^\\.]+)*$`) : null } diff --git a/scripts/utils/deps.mjs b/scripts/utils/deps.mjs new file mode 100644 index 000000000..e10db4bfc --- /dev/null +++ b/scripts/utils/deps.mjs @@ -0,0 +1,198 @@ +import * as fs from 'node:fs/promises' +import * as os from 'node:os' +import * as path from 'node:path' +import { env } from 'node:process' + +import { extractTo } from 'archive-wasm/src/fs.mjs' + +import { + FFMPEG_SUFFFIX, + FFMPEG_WORKFLOW, + getConst, + getSuffix, + LIBHEIF_SUFFIX, + LIBHEIF_WORKFLOW, + PDFIUM_SUFFIX, + PROTOC_SUFFIX, +} from './consts.mjs' +import { + getGh, + getGhArtifactContent, + getGhReleasesAssets, + getGhWorkflowRunArtifacts, +} from './github.mjs' +import { which } from './which.mjs' + +const noop = () => {} + +const __debug = env.NODE_ENV === 'debug' +const __osType = os.type() + +// Github repos +const PDFIUM_REPO = 'bblanchon/pdfium-binaries' +const PROTOBUF_REPO = 'protocolbuffers/protobuf' +const SPACEDRIVE_REPO = 'spacedriveapp/spacedrive' + +/** + * Download and extract protobuff compiler binary + * @param {string[]} machineId + * @param {string} nativeDeps + */ +export async function downloadProtc(machineId, nativeDeps) { + if (await which('protoc')) return + + console.log('Downloading protoc...') + + const protocSuffix = getSuffix(PROTOC_SUFFIX, machineId) + if (protocSuffix == null) throw new Error('NO_PROTOC') + + let found = false + for await (const release of getGhReleasesAssets(PROTOBUF_REPO)) { + if (!protocSuffix.test(release.name)) continue + try { + await extractTo(await getGh(release.downloadUrl), nativeDeps, { + chmod: 0o600, + overwrite: true, + }) + found = true + break + } catch (error) { + console.warn('Failed to download protoc, re-trying...') + if (__debug) console.error(error) + } + } + + if (!found) throw new Error('NO_PROTOC') + + // cleanup + await fs.unlink(path.join(nativeDeps, 'readme.txt')).catch(__debug ? console.error : noop) +} + +/** + * Download and extract pdfium library for generating PDFs thumbnails + * @param {string[]} machineId + * @param {string} nativeDeps + */ +export async function downloadPDFium(machineId, nativeDeps) { + console.log('Downloading pdfium...') + + const pdfiumSuffix = getSuffix(PDFIUM_SUFFIX, machineId) + if (pdfiumSuffix == null) throw new Error('NO_PDFIUM') + + let found = false + for await (const release of getGhReleasesAssets(PDFIUM_REPO)) { + if (!pdfiumSuffix.test(release.name)) continue + try { + await extractTo(await getGh(release.downloadUrl), nativeDeps, { + chmod: 0o600, + overwrite: true, + }) + found = true + break + } catch (error) { + console.warn('Failed to download pdfium, re-trying...') + if (__debug) console.error(error) + } + } + + if (!found) throw new Error('NO_PDFIUM') + + // cleanup + const cleanup = [ + fs.rename(path.join(nativeDeps, 'LICENSE'), path.join(nativeDeps, 'LICENSE.pdfium')), + ...['args.gn', 'PDFiumConfig.cmake', 'VERSION'].map(file => + fs.unlink(path.join(nativeDeps, file)).catch(__debug ? console.error : noop) + ), + ] + + switch (__osType) { + case 'Linux': + cleanup.push(fs.chmod(path.join(nativeDeps, 'lib', 'libpdfium.so'), 0o750)) + break + case 'Darwin': + cleanup.push(fs.chmod(path.join(nativeDeps, 'lib', 'libpdfium.dylib'), 0o750)) + break + } + + await Promise.all(cleanup) +} + +/** + * Download and extract ffmpeg libs for video thumbnails + * @param {string[]} machineId + * @param {string} nativeDeps + * @param {string[]} branches + */ +export async function downloadFFMpeg(machineId, nativeDeps, branches) { + const workflow = getConst(FFMPEG_WORKFLOW, machineId) + if (workflow == null) { + console.log('Checking FFMPeg...') + if (await which('ffmpeg')) { + // TODO: check ffmpeg version match what we need + return + } else { + throw new Error('NO_FFMPEG') + } + } + + console.log('Downloading FFMPeg...') + + const ffmpegSuffix = getSuffix(FFMPEG_SUFFFIX, machineId) + if (ffmpegSuffix == null) throw new Error('NO_FFMPEG') + + let found = false + for await (const artifact of getGhWorkflowRunArtifacts(SPACEDRIVE_REPO, workflow, branches)) { + if (!ffmpegSuffix.test(artifact.name)) continue + try { + const data = await getGhArtifactContent(SPACEDRIVE_REPO, artifact.id) + await extractTo(data, nativeDeps, { + chmod: 0o600, + recursive: true, + overwrite: true, + }) + found = true + break + } catch (error) { + console.warn('Failed to download FFMpeg, re-trying...') + if (__debug) console.error(error) + } + } + + if (!found) throw new Error('NO_FFMPEG') +} + +/** + * Download and extract libheif libs for heif thumbnails + * @param {string[]} machineId + * @param {string} nativeDeps + * @param {string[]} branches + */ +export async function downloadLibHeif(machineId, nativeDeps, branches) { + const workflow = getConst(LIBHEIF_WORKFLOW, machineId) + if (workflow == null) return + + console.log('Downloading LibHeif...') + + const libHeifSuffix = getSuffix(LIBHEIF_SUFFIX, machineId) + if (libHeifSuffix == null) throw new Error('NO_LIBHEIF') + + let found = false + for await (const artifact of getGhWorkflowRunArtifacts(SPACEDRIVE_REPO, workflow, branches)) { + if (!libHeifSuffix.test(artifact.name)) continue + try { + const data = await getGhArtifactContent(SPACEDRIVE_REPO, artifact.id) + await extractTo(data, nativeDeps, { + chmod: 0o600, + recursive: true, + overwrite: true, + }) + found = true + break + } catch (error) { + console.warn('Failed to download LibHeif, re-trying...') + if (__debug) console.error(error) + } + } + + if (!found) throw new Error('NO_LIBHEIF') +} diff --git a/scripts/utils/git.mjs b/scripts/utils/git.mjs new file mode 100644 index 000000000..35750da21 --- /dev/null +++ b/scripts/utils/git.mjs @@ -0,0 +1,87 @@ +import { exec as execCb } from 'node:child_process' +import * as fs from 'node:fs/promises' +import * as path from 'node:path' +import { env } from 'node:process' +import { promisify } from 'node:util' + +const __debug = env.NODE_ENV === 'debug' + +const exec = promisify(execCb) + +/** + * @param {string} repoPath + * @returns {Promise} + */ +async function getRemoteBranchName(repoPath) { + let branchName + try { + branchName = (await exec('git symbolic-ref --short HEAD', { cwd: repoPath })).stdout.trim() + if (!branchName) throw new Error('Empty local branch name') + } catch (error) { + if (__debug) { + console.warn(`Failed to read git local branch name`) + console.error(error) + } + return null + } + + let remoteBranchName + try { + remoteBranchName = ( + await exec(`git for-each-ref --format="%(upstream:short)" refs/heads/${branchName}`, { + cwd: repoPath, + }) + ).stdout.trim() + const [_, branch] = remoteBranchName.split('/') + if (!branch) throw new Error('Empty remote branch name') + remoteBranchName = branch + } catch (error) { + if (__debug) { + console.warn(`Failed to read git remote branch name`) + console.error(error) + } + return null + } + + return remoteBranchName +} + +// https://stackoverflow.com/q/3651860#answer-67151923 +// eslint-disable-next-line no-control-regex +const REF_REGEX = /ref:\s+refs\/heads\/(?[^\s\x00-\x1F:?[\\^~]+)/ +const GITHUB_REF_REGEX = /^refs\/heads\// + +/** + * @param {string} repoPath + * @returns {Promise} + */ +export async function getGitBranches(repoPath) { + const branches = ['main', 'master'] + + if (env.GITHUB_HEAD_REF) { + branches.unshift(env.GITHUB_HEAD_REF) + } else if (env.GITHUB_REF) { + branches.unshift(env.GITHUB_REF.replace(GITHUB_REF_REGEX, '')) + } + + const remoteBranchName = await getRemoteBranchName(repoPath) + if (remoteBranchName) { + branches.unshift(remoteBranchName) + } else { + let head + try { + head = await fs.readFile(path.join(repoPath, '.git', 'HEAD'), { encoding: 'utf8' }) + } catch (error) { + if (__debug) { + console.warn(`Failed to read git HEAD file`) + console.error(error) + } + return branches + } + + const match = REF_REGEX.exec(head) + if (match?.groups?.branch) branches.unshift(match.groups.branch) + } + + return branches +} diff --git a/scripts/github.mjs b/scripts/utils/github.mjs similarity index 67% rename from scripts/github.mjs rename to scripts/utils/github.mjs index db7664a9c..7d38bcf2f 100644 --- a/scripts/github.mjs +++ b/scripts/utils/github.mjs @@ -1,35 +1,36 @@ -import * as fs from 'node:fs/promises'; -import { dirname, join as joinPath, posix as path } from 'node:path'; -import { env } from 'node:process'; -import { setTimeout } from 'node:timers/promises'; -import { fileURLToPath } from 'node:url'; -import { extract } from 'archive-wasm'; +import * as fs from 'node:fs/promises' +import { dirname, join as joinPath, posix as path } from 'node:path' +import { env } from 'node:process' +import { setTimeout } from 'node:timers/promises' +import { fileURLToPath } from 'node:url' -const __debug = env.NODE_ENV === 'debug'; -const __offline = env.OFFLINE === 'true'; -const __filename = fileURLToPath(import.meta.url); -const __dirname = dirname(__filename); -const cacheDir = joinPath(__dirname, '.tmp'); -await fs.mkdir(cacheDir, { recursive: true, mode: 0o751 }); +import { fetch, Headers } from 'undici' + +const __debug = env.NODE_ENV === 'debug' +const __offline = env.OFFLINE === 'true' +const __filename = fileURLToPath(import.meta.url) +const __dirname = dirname(__filename) +const cacheDir = joinPath(__dirname, '.tmp') +await fs.mkdir(cacheDir, { recursive: true, mode: 0o751 }) // Note: Trailing slashs are important to correctly append paths -const GH = 'https://api.github.com/repos/'; -const NIGTHLY = 'https://nightly.link/'; +const GH = 'https://api.github.com/repos/' +const NIGTHLY = 'https://nightly.link/' // Github routes -const RELEASES = 'releases'; -const WORKFLOWS = 'actions/workflows'; -const ARTIFACTS = 'actions/artifacts'; +const RELEASES = 'releases' +const WORKFLOWS = 'actions/workflows' +const ARTIFACTS = 'actions/artifacts' // Default GH headers const GH_HEADERS = new Headers({ - 'Accept': 'application/vnd.github+json', - 'X-GitHub-Api-Version': '2022-11-28' -}); + Accept: 'application/vnd.github+json', + 'X-GitHub-Api-Version': '2022-11-28', +}) // Load github auth token if available if ('GITHUB_TOKEN' in env && env.GITHUB_TOKEN) - GH_HEADERS.append('Authorization', `Bearer ${env.GITHUB_TOKEN}`); + GH_HEADERS.append('Authorization', `Bearer ${env.GITHUB_TOKEN}`) /** * @param {string} resource @@ -38,69 +39,69 @@ if ('GITHUB_TOKEN' in env && env.GITHUB_TOKEN) */ async function getCache(resource, headers) { /** @type {Buffer | undefined} */ - let data; + let data /** @type {[string, string] | undefined} */ - let header; + let header // Don't cache in CI - if (env.CI === 'true') return null; + if (env.CI === 'true') return null if (headers) resource += Array.from(headers.entries()) .filter(([name]) => name !== 'If-None-Match' && name !== 'If-Modified-Since') .flat() - .join(':'); + .join(':') try { const cache = JSON.parse( await fs.readFile(joinPath(cacheDir, Buffer.from(resource).toString('base64url')), { - encoding: 'utf8' + encoding: 'utf8', }) - ); + ) if (cache && typeof cache === 'object') { if (cache.etag && typeof cache.etag === 'string') { - header = ['If-None-Match', cache.etag]; + header = ['If-None-Match', cache.etag] } else if (cache.modifiedSince && typeof cache.modifiedSince === 'string') { - header = ['If-Modified-Since', cache.modifiedSince]; + header = ['If-Modified-Since', cache.modifiedSince] } if (cache.data && typeof cache.data === 'string') - data = Buffer.from(cache.data, 'base64'); + data = Buffer.from(cache.data, 'base64') } } catch (error) { if (__debug) { - console.warn(`CACHE MISS: ${resource}`); - console.error(error); + console.warn(`CACHE MISS: ${resource}`) + console.error(error) } } - return data ? { data, header } : null; + return data ? { data, header } : null } /** - * @param {Response} response + * @param {import('undici').Response} response * @param {string} resource * @param {Buffer} [cachedData] * @param {Headers} [headers] * @returns {Promise} */ async function setCache(response, resource, cachedData, headers) { - const data = Buffer.from(await response.arrayBuffer()); + const data = Buffer.from(await response.arrayBuffer()) // Don't cache in CI - if (env.CI === 'true') return data; + if (env.CI === 'true') return data - const etag = response.headers.get('ETag') || undefined; - const modifiedSince = response.headers.get('Last-Modified') || undefined; + const etag = response.headers.get('ETag') || undefined + const modifiedSince = response.headers.get('Last-Modified') || undefined if (headers) resource += Array.from(headers.entries()) .filter(([name]) => name !== 'If-None-Match' && name !== 'If-Modified-Since') .flat() - .join(':'); + .join(':') if (response.status === 304 || (response.ok && data.length === 0)) { // Cache hit - if (!cachedData) throw new Error('Empty cache hit ????'); - return cachedData; + if (!cachedData) throw new Error('Empty cache hit ????') + return cachedData } try { @@ -109,18 +110,18 @@ async function setCache(response, resource, cachedData, headers) { JSON.stringify({ etag, modifiedSince, - data: data.toString('base64') + data: data.toString('base64'), }), { mode: 0o640, flag: 'w+' } - ); + ) } catch (error) { if (__debug) { - console.warn(`CACHE WRITE FAIL: ${resource}`); - console.error(error); + console.warn(`CACHE WRITE FAIL: ${resource}`) + console.error(error) } } - return data; + return data } /** @@ -130,30 +131,30 @@ async function setCache(response, resource, cachedData, headers) { * @returns {Promise} */ export async function get(resource, headers, preferCache) { - if (headers == null) headers = new Headers(); - if (resource instanceof URL) resource = resource.toString(); + if (headers == null) headers = new Headers() + if (resource instanceof URL) resource = resource.toString() - const cache = await getCache(resource, headers); + const cache = await getCache(resource, headers) if (__offline) { if (cache?.data == null) - throw new Error(`OFFLINE MODE: Cache for request ${resource} doesn't exist`); - return cache.data; + throw new Error(`OFFLINE MODE: Cache for request ${resource} doesn't exist`) + return cache.data } - if (preferCache && cache?.data != null) return cache.data; + if (preferCache && cache?.data != null) return cache.data - if (cache?.header) headers.append(...cache.header); + if (cache?.header) headers.append(...cache.header) - const response = await fetch(resource, { headers }); + const response = await fetch(resource, { headers }) if (!response.ok) { if (cache?.data) { - if (__debug) console.warn(`CACHE HIT due to fail: ${resource} ${response.statusText}`); - return cache.data; + if (__debug) console.warn(`CACHE HIT due to fail: ${resource} ${response.statusText}`) + return cache.data } - throw new Error(response.statusText); + throw new Error(response.statusText) } - return await setCache(response, resource, cache?.data, headers); + return await setCache(response, resource, cache?.data, headers) } // Header name Description @@ -163,8 +164,8 @@ export async function get(resource, headers, preferCache) { // x-ratelimit-reset The time at which the current rate limit window resets in UTC epoch seconds. const RATE_LIMIT = { reset: 0, - remaining: Infinity -}; + remaining: Infinity, +} /** * Get resource from a Github route with some pre-defined parameters @@ -172,52 +173,52 @@ const RATE_LIMIT = { * @returns {Promise} */ export async function getGh(route) { - route = new URL(route, GH).toString(); + route = new URL(route, GH).toString() - const cache = await getCache(route); + const cache = await getCache(route) if (__offline) { if (cache?.data == null) - throw new Error(`OFFLINE MODE: Cache for request ${route} doesn't exist`); - return cache?.data; + throw new Error(`OFFLINE MODE: Cache for request ${route} doesn't exist`) + return cache?.data } if (RATE_LIMIT.remaining === 0) { - if (cache?.data) return cache.data; + if (cache?.data) return cache.data console.warn( `RATE LIMIT: Waiting ${RATE_LIMIT.reset} seconds before contacting Github again... [CTRL+C to cancel]` - ); - await setTimeout(RATE_LIMIT.reset * 1000); + ) + await setTimeout(RATE_LIMIT.reset * 1000) } - const headers = new Headers(GH_HEADERS); - if (cache?.header) headers.append(...cache.header); + const headers = new Headers(GH_HEADERS) + if (cache?.header) headers.append(...cache.header) - const response = await fetch(route, { method: 'GET', headers }); + const response = await fetch(route, { method: 'GET', headers }) - const rateReset = Number.parseInt(response.headers.get('x-ratelimit-reset') ?? ''); - const rateRemaining = Number.parseInt(response.headers.get('x-ratelimit-remaining') ?? ''); + const rateReset = Number.parseInt(response.headers.get('x-ratelimit-reset') ?? '') + const rateRemaining = Number.parseInt(response.headers.get('x-ratelimit-remaining') ?? '') if (!(Number.isNaN(rateReset) || Number.isNaN(rateRemaining))) { - const reset = rateReset - Date.now() / 1000; - if (reset > RATE_LIMIT.reset) RATE_LIMIT.reset = reset; + const reset = rateReset - Date.now() / 1000 + if (reset > RATE_LIMIT.reset) RATE_LIMIT.reset = reset if (rateRemaining < RATE_LIMIT.remaining) { - RATE_LIMIT.remaining = rateRemaining; + RATE_LIMIT.remaining = rateRemaining if (__debug) { - console.warn(`Github remaining requests: ${RATE_LIMIT.remaining}`); - await setTimeout(5000); + console.warn(`Github remaining requests: ${RATE_LIMIT.remaining}`) + await setTimeout(5000) } } } if (!response.ok) { if (cache?.data) { - if (__debug) console.warn(`CACHE HIT due to fail: ${route} ${response.statusText}`); - return cache.data; + if (__debug) console.warn(`CACHE HIT due to fail: ${route} ${response.statusText}`) + return cache.data } - if (response.status === 403 && RATE_LIMIT.remaining === 0) return await getGh(route); - throw new Error(response.statusText); + if (response.status === 403 && RATE_LIMIT.remaining === 0) return await getGh(route) + throw new Error(response.statusText) } - return await setCache(response, route, cache?.data); + return await setCache(response, route, cache?.data) } /** @@ -225,17 +226,17 @@ export async function getGh(route) { * @yields {{name: string, downloadUrl: string}} */ export async function* getGhReleasesAssets(repo) { - let page = 0; + let page = 0 while (true) { // "${_gh_url}/protocolbuffers/protobuf/releases?page=${_page}&per_page=100" const releases = JSON.parse( (await getGh(path.join(repo, `${RELEASES}?page=${page++}&per_page=100`))).toString( 'utf8' ) - ); + ) - if (!Array.isArray(releases)) throw new Error(`Error: ${JSON.stringify(releases)}`); - if (releases.length === 0) return; + if (!Array.isArray(releases)) throw new Error(`Error: ${JSON.stringify(releases)}`) + if (releases.length === 0) return for (const release of /** @type {unknown[]} */ (releases)) { if ( @@ -246,9 +247,9 @@ export async function* getGhReleasesAssets(repo) { Array.isArray(release.assets) ) ) - throw new Error(`Invalid release: ${release}`); + throw new Error(`Invalid release: ${release}`) - if ('prerelease' in release && release.prerelease) continue; + if ('prerelease' in release && release.prerelease) continue for (const asset of /** @type {unknown[]} */ (release.assets)) { if ( @@ -261,9 +262,9 @@ export async function* getGhReleasesAssets(repo) { typeof asset.browser_download_url === 'string' ) ) - throw new Error(`Invalid release.asset: ${asset}`); + throw new Error(`Invalid release.asset: ${asset}`) - yield { name: asset.name, downloadUrl: asset.browser_download_url }; + yield { name: asset.name, downloadUrl: asset.browser_download_url } } } } @@ -276,11 +277,11 @@ export async function* getGhReleasesAssets(repo) { * @yields {{ id: number, name: string }} */ export async function* getGhWorkflowRunArtifacts(repo, yaml, branch) { - if (!branch) branch = 'main'; - if (typeof branch === 'string') branch = [branch]; - if (!(branch instanceof Set)) branch = new Set(branch); + if (!branch) branch = 'main' + if (typeof branch === 'string') branch = [branch] + if (!(branch instanceof Set)) branch = new Set(branch) - let page = 0; + let page = 0 while (true) { const workflow = /** @type {unknown} */ ( JSON.parse( @@ -295,7 +296,7 @@ export async function* getGhWorkflowRunArtifacts(repo, yaml, branch) { ) ).toString('utf8') ) - ); + ) if ( !( workflow && @@ -304,9 +305,9 @@ export async function* getGhWorkflowRunArtifacts(repo, yaml, branch) { Array.isArray(workflow.workflow_runs) ) ) - throw new Error(`Error: ${JSON.stringify(workflow)}`); + throw new Error(`Error: ${JSON.stringify(workflow)}`) - if (workflow.workflow_runs.length === 0) return; + if (workflow.workflow_runs.length === 0) return for (const run of /** @type {unknown[]} */ (workflow.workflow_runs)) { if ( @@ -319,13 +320,13 @@ export async function* getGhWorkflowRunArtifacts(repo, yaml, branch) { typeof run.artifacts_url === 'string' ) ) - throw new Error(`Invalid Workflow run: ${run}`); + throw new Error(`Invalid Workflow run: ${run}`) - if (!branch.has(run.head_branch)) continue; + if (!branch.has(run.head_branch)) continue const response = /** @type {unknown} */ ( JSON.parse((await getGh(run.artifacts_url)).toString('utf8')) - ); + ) if ( !( @@ -335,7 +336,7 @@ export async function* getGhWorkflowRunArtifacts(repo, yaml, branch) { Array.isArray(response.artifacts) ) ) - throw new Error(`Error: ${JSON.stringify(response)}`); + throw new Error(`Error: ${JSON.stringify(response)}`) for (const artifact of /** @type {unknown[]} */ (response.artifacts)) { if ( @@ -348,9 +349,9 @@ export async function* getGhWorkflowRunArtifacts(repo, yaml, branch) { typeof artifact.name === 'string' ) ) - throw new Error(`Invalid artifact: ${artifact}`); + throw new Error(`Invalid artifact: ${artifact}`) - yield { id: artifact.id, name: artifact.name }; + yield { id: artifact.id, name: artifact.name } } } } @@ -366,11 +367,11 @@ export async function getGhArtifactContent(repo, id) { if (GH_HEADERS.has('Authorization')) { try { // "${_gh_url}/${_sd_gh_path}/actions/artifacts/${_artifact_id}/zip" - return await getGh(path.join(repo, ARTIFACTS, id.toString(), 'zip')); + return await getGh(path.join(repo, ARTIFACTS, id.toString(), 'zip')) } catch (error) { if (__debug) { - console.warn('Failed to download artifact from github, fallback to nightly.link'); - console.error(error); + console.warn('Failed to download artifact from github, fallback to nightly.link') + console.error(error) } } } @@ -381,5 +382,5 @@ export async function getGhArtifactContent(repo, id) { * Use it when running in evironments that are not authenticated with github * "https://nightly.link/${_sd_gh_path}/actions/artifacts/${_artifact_id}.zip" */ - return await get(new URL(path.join(repo, ARTIFACTS, `${id}.zip`), NIGTHLY), null, true); + return await get(new URL(path.join(repo, ARTIFACTS, `${id}.zip`), NIGTHLY), null, true) } diff --git a/scripts/utils/machineId.mjs b/scripts/utils/machineId.mjs new file mode 100644 index 000000000..0351dc420 --- /dev/null +++ b/scripts/utils/machineId.mjs @@ -0,0 +1,68 @@ +import { exec as execCb } from 'node:child_process' +import * as os from 'node:os' +import { env } from 'node:process' +import { promisify } from 'node:util' + +const __debug = env.NODE_ENV === 'debug' + +/** @type {'musl' | 'glibc'} */ +let libc = 'glibc' +if (os.type() === 'Linux') { + try { + const exec = promisify(execCb) + if ((await exec('ldd /bin/ls')).stdout.includes('musl')) { + libc = 'musl' + } + } catch (error) { + if (__debug) { + console.warn(`Failed to check libc type`) + console.error(error) + } + } +} + +/** @type {Record} */ +const OS_TYPE = { + darwin: 'Darwin', + windows: 'Windows_NT', + linux: 'Linux', +} + +/** @returns {['Darwin' | 'Windows_NT', 'x86_64' | 'aarch64'] | ['Linux', 'x86_64' | 'aarch64', 'musl' | 'glibc']} */ +export function getMachineId() { + let _os, _arch + let _libc = libc + + /** + * Supported TARGET_TRIPLE: + * x86_64-apple-darwin + * aarch64-apple-darwin + * x86_64-pc-windows-msvc + * aarch64-pc-windows-msvc + * x86_64-unknown-linux-gnu + * x86_64-unknown-linux-musl + * aarch64-unknown-linux-gnu + * aarch64-unknown-linux-musl + */ + if (env.TARGET_TRIPLE) { + const target = env.TARGET_TRIPLE.split('-') + _os = OS_TYPE[target[2] ?? ''] + _arch = target[0] + if (_os === 'Linux') _libc = target[3]?.includes('musl') ? 'musl' : 'glibc' + } else { + // Current machine identifiers + _os = os.type() + _arch = os.machine() + if (_arch === 'arm64') _arch = 'aarch64' + } + + if (_arch !== 'x86_64' && _arch !== 'aarch64') throw new Error(`Unsuported architecture`) + + if (_os === 'Linux') { + return [_os, _arch, _libc] + } else if (_os !== 'Darwin' && _os !== 'Windows_NT') { + throw new Error(`Unsuported OS`) + } + + return [_os, _arch] +} diff --git a/scripts/utils/patchTauri.mjs b/scripts/utils/patchTauri.mjs new file mode 100644 index 000000000..efb3a1802 --- /dev/null +++ b/scripts/utils/patchTauri.mjs @@ -0,0 +1,142 @@ +import { exec as _exec } from 'node:child_process' +import * as fs from 'node:fs/promises' +import * as os from 'node:os' +import * as path from 'node:path' +import { env } from 'node:process' +import { promisify } from 'node:util' + +import * as semver from 'semver' + +import { copyLinuxLibs, copyWindowsDLLs } from './shared.mjs' + +const exec = promisify(_exec) +const __debug = env.NODE_ENV === 'debug' + +/** + * @param {string} nativeDeps + * @returns {Promise} + */ +export async function tauriUpdaterKey(nativeDeps) { + if (env.TAURI_PRIVATE_KEY) return null + + // pnpm exec tauri signer generate -w + const privateKeyPath = path.join(nativeDeps, 'tauri.key') + const publicKeyPath = path.join(nativeDeps, 'tauri.key.pub') + const readKeys = () => + Promise.all([ + fs.readFile(publicKeyPath, { encoding: 'utf-8' }), + fs.readFile(privateKeyPath, { encoding: 'utf-8' }), + ]) + + let privateKey, publicKey + try { + ;[publicKey, privateKey] = await readKeys() + if (!(publicKey && privateKey)) throw new Error('Empty keys') + } catch (err) { + if (__debug) { + console.warn('Failed to read tauri updater keys') + console.error(err) + } + + const quote = os.type() === 'Windows_NT' ? '"' : "'" + await exec(`pnpm exec tauri signer generate --ci -w ${quote}${privateKeyPath}${quote}`) + ;[publicKey, privateKey] = await readKeys() + if (!(publicKey && privateKey)) throw new Error('Empty keys') + } + + env.TAURI_PRIVATE_KEY = privateKey + return publicKey +} + +/** + * @param {string} root + * @param {string} nativeDeps + * @param {string[]} args + * @returns {Promise} + */ +export async function patchTauri(root, nativeDeps, args) { + if (args.findIndex(e => e === '-c' || e === '--config') !== -1) { + throw new Error('Custom tauri build config is not supported.') + } + + // Location for desktop app tauri code + const tauriRoot = path.join(root, 'apps', 'desktop', 'src-tauri') + + const osType = os.type() + const resources = + osType === 'Linux' + ? await copyLinuxLibs(root, nativeDeps) + : osType === 'Windows_NT' + ? await copyWindowsDLLs(root, nativeDeps) + : { files: [], toClean: [] } + const tauriPatch = { + tauri: { + bundle: { + macOS: { + minimumSystemVersion: '', + }, + resources: resources.files, + }, + updater: /** @type {{ pubkey?: string }} */ ({}), + }, + } + + const tauriConfig = await fs + .readFile(path.join(tauriRoot, 'tauri.conf.json'), 'utf-8') + .then(JSON.parse) + + if (args[0] === 'build') { + if (tauriConfig?.tauri?.updater?.active) { + const pubKey = await tauriUpdaterKey(nativeDeps) + if (pubKey != null) tauriPatch.tauri.updater.pubkey = pubKey + } + } + + if (osType === 'Darwin') { + // ARM64 support was added in macOS 11, but we need at least 11.2 due to our ffmpeg build + const macOSArm64MinimumVersion = '11.2' + + let macOSMinimumVersion = tauriConfig?.tauri?.bundle?.macOS?.minimumSystemVersion + + const targets = args + .filter((_, index, args) => { + if (index === 0) return false + const previous = args[index - 1] + return previous === '-t' || previous === '--target' + }) + .flatMap(target => target.split(',')) + + if ( + (targets.includes('aarch64-apple-darwin') || + (targets.length === 0 && process.arch === 'arm64')) && + (macOSMinimumVersion == null || + semver.lt( + /** @type {import('semver').SemVer} */ (semver.coerce(macOSMinimumVersion)), + /** @type {import('semver').SemVer} */ ( + semver.coerce(macOSArm64MinimumVersion) + ) + )) + ) { + macOSMinimumVersion = macOSArm64MinimumVersion + console.log( + `aarch64-apple-darwin target detected, setting minimum system version to ${macOSMinimumVersion}` + ) + } + + if (macOSMinimumVersion) { + env.MACOSX_DEPLOYMENT_TARGET = macOSMinimumVersion + tauriPatch.tauri.bundle.macOS.minimumSystemVersion = macOSMinimumVersion + } else { + throw new Error('No minimum macOS version detected, please review tauri.conf.json') + } + } + + const tauriPatchConf = path.join(tauriRoot, 'tauri.conf.patch.json') + await fs.writeFile(tauriPatchConf, JSON.stringify(tauriPatch, null, 2)) + + // Modify args to load patched tauri config + args.splice(1, 0, '-c', tauriPatchConf) + + // Files to be removed + return [tauriPatchConf, ...resources.toClean] +} diff --git a/scripts/utils/shared.mjs b/scripts/utils/shared.mjs new file mode 100644 index 000000000..c50dd00b6 --- /dev/null +++ b/scripts/utils/shared.mjs @@ -0,0 +1,200 @@ +import { exec as execCb } from 'node:child_process' +import * as fs from 'node:fs/promises' +import * as path from 'node:path' +import { env } from 'node:process' +import { promisify } from 'node:util' + +const exec = promisify(execCb) +const signId = env.APPLE_SIGNING_IDENTITY || '-' + +/** + * @param {string} origin + * @param {string} target + * @param {boolean} [rename] + */ +async function link(origin, target, rename) { + const parent = path.dirname(target) + await fs.mkdir(parent, { recursive: true, mode: 0o751 }) + await (rename ? fs.rename(origin, target) : fs.symlink(path.relative(parent, origin), target)) +} + +/** + * Move headers and dylibs of external deps to our framework + * @param {string} nativeDeps + */ +export async function setupMacOsFramework(nativeDeps) { + // External deps + const lib = path.join(nativeDeps, 'lib') + const include = path.join(nativeDeps, 'include') + + // Framework + const framework = path.join(nativeDeps, 'FFMpeg.framework') + const headers = path.join(framework, 'Headers') + const libraries = path.join(framework, 'Libraries') + const documentation = path.join(framework, 'Resources', 'English.lproj', 'Documentation') + + // Move files + await Promise.all([ + // Move pdfium license to framework + fs.rename( + path.join(nativeDeps, 'LICENSE.pdfium'), + path.join(documentation, 'LICENSE.pdfium') + ), + // Move dylibs to framework + fs.readdir(lib, { recursive: true, withFileTypes: true }).then(file => + file + .filter( + entry => + (entry.isFile() || entry.isSymbolicLink()) && entry.name.endsWith('.dylib') + ) + .map(entry => { + const file = path.join(entry.path, entry.name) + const newFile = path.resolve(libraries, path.relative(lib, file)) + return link(file, newFile, true) + }) + ), + // Move headers to framework + fs.readdir(include, { recursive: true, withFileTypes: true }).then(file => + file + .filter( + entry => + (entry.isFile() || entry.isSymbolicLink()) && + !entry.name.endsWith('.proto') + ) + .map(entry => { + const file = path.join(entry.path, entry.name) + const newFile = path.resolve(headers, path.relative(include, file)) + return link(file, newFile, true) + }) + ), + ]) +} + +/** + * Symlink shared libs paths for Linux + * @param {string} root + * @param {string} nativeDeps + * @returns {Promise} + */ +export async function symlinkSharedLibsLinux(root, nativeDeps) { + // rpath=${ORIGIN}/../lib/spacedrive + const targetLib = path.join(root, 'target', 'lib') + const targetRPath = path.join(targetLib, 'spacedrive') + await fs.unlink(targetRPath).catch(() => {}) + await fs.mkdir(targetLib, { recursive: true }) + await link(path.join(nativeDeps, 'lib'), targetRPath) +} + +/** + * Symlink shared libs paths for macOS + * @param {string} nativeDeps + */ +export async function symlinkSharedLibsMacOS(nativeDeps) { + // External deps + const lib = path.join(nativeDeps, 'lib') + const include = path.join(nativeDeps, 'include') + + // Framework + const framework = path.join(nativeDeps, 'FFMpeg.framework') + const headers = path.join(framework, 'Headers') + const libraries = path.join(framework, 'Libraries') + + // Link files + await Promise.all([ + // Link header files + fs.readdir(headers, { recursive: true, withFileTypes: true }).then(files => + Promise.all( + files + .filter(entry => entry.isFile() || entry.isSymbolicLink()) + .map(entry => { + const file = path.join(entry.path, entry.name) + return link(file, path.resolve(include, path.relative(headers, file))) + }) + ) + ), + // Link dylibs + fs.readdir(libraries, { recursive: true, withFileTypes: true }).then(files => + Promise.all( + files + .filter( + entry => + (entry.isFile() || entry.isSymbolicLink()) && + entry.name.endsWith('.dylib') + ) + .map(entry => { + const file = path.join(entry.path, entry.name) + /** @type {Promise[]} */ + const actions = [ + link(file, path.resolve(lib, path.relative(libraries, file))), + ] + + // Sign dylib (Required for it to work on macOS 13+) + if (entry.isFile()) + actions.push(exec(`codesign -s "${signId}" -f "${file}"`)) + + return actions.length > 1 ? Promise.all(actions) : actions[0] + }) + ) + ), + ]) +} + +/** + * Copy Windows DLLs for tauri build + * @param {string} root + * @param {string} nativeDeps + * @returns {Promise<{files: string[], toClean: string[]}>} + */ +export async function copyWindowsDLLs(root, nativeDeps) { + const tauriSrc = path.join(root, 'apps', 'desktop', 'src-tauri') + const files = await Promise.all( + await fs.readdir(path.join(nativeDeps, 'bin'), { withFileTypes: true }).then(files => + files + .filter(entry => entry.isFile() && entry.name.endsWith(`.dll`)) + .map(async entry => { + await fs.copyFile( + path.join(entry.path, entry.name), + path.join(tauriSrc, entry.name) + ) + return entry.name + }) + ) + ) + + return { files, toClean: files.map(file => path.join(tauriSrc, file)) } +} + +/** + * Symlink shared libs paths for Linux + * @param {string} root + * @param {string} nativeDeps + * @returns {Promise<{files: string[], toClean: string[]}>} + */ +export async function copyLinuxLibs(root, nativeDeps) { + // rpath=${ORIGIN}/../lib/spacedrive + const tauriSrc = path.join(root, 'apps', 'desktop', 'src-tauri') + const files = await fs + .readdir(path.join(nativeDeps, 'lib'), { withFileTypes: true }) + .then(files => + Promise.all( + files + .filter( + entry => + (entry.isFile() || entry.isSymbolicLink()) && + (entry.name.endsWith('.so') || entry.name.includes('.so.')) + ) + .map(async entry => { + await fs.copyFile( + path.join(entry.path, entry.name), + path.join(tauriSrc, entry.name) + ) + return entry.name + }) + ) + ) + + return { + files, + toClean: files.map(file => path.join(tauriSrc, file)), + } +} diff --git a/scripts/utils/spawn.mjs b/scripts/utils/spawn.mjs new file mode 100644 index 000000000..590dd6f5b --- /dev/null +++ b/scripts/utils/spawn.mjs @@ -0,0 +1,33 @@ +import { spawn } from 'node:child_process' + +/** + * @param {string} command + * @param {string[]} args + * @param {string} [cwd] + * @returns {Promise} + */ +export default function (command, args, cwd) { + if (typeof command !== 'string' || command.length === 0) + throw new Error('Command must be a string and not empty') + + if (args == null) args = [] + else if (!Array.isArray(args) || args.some(arg => typeof arg !== 'string')) + throw new Error('Args must be an array of strings') + + return new Promise((resolve, reject) => { + const child = spawn(command, args, { cwd, shell: true, stdio: 'inherit' }) + process.on('SIGTERM', () => child.kill('SIGTERM')) + process.on('SIGINT', () => child.kill('SIGINT')) + process.on('SIGBREAK', () => child.kill('SIGBREAK')) + process.on('SIGHUP', () => child.kill('SIGHUP')) + child.on('error', reject) + child.on('exit', (code, signal) => { + if (code === null) code = signal === 'SIGINT' ? 0 : 1 + if (code === 0) { + resolve() + } else { + reject(code) + } + }) + }) +} diff --git a/scripts/utils/which.mjs b/scripts/utils/which.mjs new file mode 100644 index 000000000..7fa316384 --- /dev/null +++ b/scripts/utils/which.mjs @@ -0,0 +1,41 @@ +import { exec as execCb } from 'node:child_process' +import * as fs from 'node:fs/promises' +import * as os from 'node:os' +import * as path from 'node:path' +import { env } from 'node:process' +import { promisify } from 'node:util' + +const exec = promisify(execCb) + +/** + * @param {string} progName + * @returns {Promise} + */ +async function where(progName) { + // Reject paths + if (/[\\]/.test(progName)) return false + try { + await exec(`where "${progName}"`) + } catch { + return false + } + + return true +} + +/** + * @param {string} progName + * @returns {Promise} + */ +export async function which(progName) { + return os.type() === 'Windows_NT' + ? where(progName) + : Promise.any( + Array.from(new Set(env.PATH?.split(':'))).map(dir => + fs.access(path.join(dir, progName), fs.constants.X_OK) + ) + ).then( + () => true, + () => false + ) +} diff --git a/scripts/which.mjs b/scripts/which.mjs deleted file mode 100644 index 8bcd1ccab..000000000 --- a/scripts/which.mjs +++ /dev/null @@ -1,41 +0,0 @@ -import { exec as execCb } from 'node:child_process'; -import * as fs from 'node:fs/promises'; -import * as os from 'node:os'; -import * as path from 'node:path'; -import { env } from 'node:process'; -import { promisify } from 'node:util'; - -const exec = promisify(execCb); - -/** - * @param {string} progName - * @returns {Promise} - */ -async function where(progName) { - // Reject paths - if (/[\\]/.test(progName)) return false; - try { - await exec(`where "${progName}"`); - } catch { - return false; - } - - return true; -} - -/** - * @param {string} progName - * @returns {Promise} - */ -export async function which(progName) { - return os.type() === 'Windows_NT' - ? where(progName) - : Promise.any( - Array.from(new Set(env.PATH?.split(':'))).map((dir) => - fs.access(path.join(dir, progName), fs.constants.X_OK) - ) - ).then( - () => true, - () => false - ); -} diff --git a/turbo.json b/turbo.json index 0d26e706a..0afb03a45 100644 --- a/turbo.json +++ b/turbo.json @@ -2,7 +2,7 @@ "$schema": "https://turborepo.org/schema.json", "pipeline": { "build": { - "inputs": ["!src-tauri/**"], + "inputs": ["**/*.ts", "!src-tauri/**", "!node_modules/**"], "dependsOn": ["^build"], "outputs": ["dist/**"] },