From 3529562be41be5c8db322ae6f16769f993fbe86c Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Thu, 31 Jul 2025 19:08:28 +0000 Subject: [PATCH 01/46] Add build scripts for minimal Synapse CLI and interactive commands --- build.sh | 132 +++++++++++++ build_windows_native.bat | 62 ++++++ minimal_synapse_cli.py | 404 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 598 insertions(+) create mode 100755 build.sh create mode 100644 build_windows_native.bat create mode 100644 minimal_synapse_cli.py diff --git a/build.sh b/build.sh new file mode 100755 index 000000000..dfa533b0e --- /dev/null +++ b/build.sh @@ -0,0 +1,132 @@ +#!/bin/bash + +# Build script for minimal Synapse CLI +# This script creates cross-platform binaries using PyInstaller +# Usage: ./build.sh [platform] +# Platforms: linux, macos, windows, all + +set -e + +# Default to current platform if no argument provided +TARGET_PLATFORM=${1:-"auto"} + +echo "Building Minimal Synapse CLI..." + +# Install required packages +echo "Installing required packages..." +uv pip install pyinstaller +uv pip install -e . + +# Clean previous builds +echo "Cleaning previous builds..." +rm -rf build/ dist/ *.spec + +# Function to build for a specific platform +build_for_platform() { + local platform=$1 + local extension=$2 + local extra_args=$3 + + echo "Building for platform: $platform" + local output_name="minimal-synapse-${platform}${extension}" + + echo "Building executable: $output_name" + + # Build the executable with simplified PyInstaller command (following Windows approach) + pyinstaller \ + --onefile \ + --name "$output_name" \ + --collect-all=synapseclient \ + --console \ + $extra_args \ + minimal_synapse_cli.py + + # Clean up spec file + rm -f *.spec + + if [ -f "dist/$output_name" ]; then + echo "✓ Build successful: dist/$output_name" + echo "File size: $(du -h dist/$output_name | cut -f1)" + + # Test the executable + echo "Testing executable..." + if ./dist/$output_name --help > /dev/null 2>&1; then + echo "✓ Executable test passed" + else + echo "✗ Executable test failed" + return 1 + fi + else + echo "✗ Build failed: dist/$output_name not found" + return 1 + fi +} + +# Determine what to build +case "$TARGET_PLATFORM" in + "auto") + # Auto-detect current platform + if [[ "$OSTYPE" == "linux-gnu"* ]]; then + build_for_platform "linux" "" + elif [[ "$OSTYPE" == "darwin"* ]]; then + build_for_platform "macos" "" + elif [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "win32" ]]; then + build_for_platform "windows" ".exe" + else + echo "Unknown platform: $OSTYPE" + echo "Please specify platform: linux, macos, windows, or all" + exit 1 + fi + ;; + "linux") + build_for_platform "linux" "" + ;; + "macos") + build_for_platform "macos" "" + ;; + "windows") + build_for_platform "windows" ".exe" + ;; + "all") + echo "Building for all platforms..." + build_for_platform "linux" "" + build_for_platform "macos" "" + build_for_platform "windows" ".exe" + ;; + *) + echo "Unknown platform: $TARGET_PLATFORM" + echo "Available platforms: linux, macos, windows, all" + exit 1 + ;; +esac + +echo "" +echo "Build(s) complete!" +echo "" +echo "Available executables:" +ls -la dist/minimal-synapse-* 2>/dev/null || echo "No executables found" + +echo "" +echo "Usage examples:" +if [ -f "dist/minimal-synapse-linux" ]; then + echo " ./dist/minimal-synapse-linux get syn123" + echo " ./dist/minimal-synapse-linux store myfile.txt --parentid syn456" +fi +if [ -f "dist/minimal-synapse-macos" ]; then + echo " ./dist/minimal-synapse-macos get syn123" + echo " ./dist/minimal-synapse-macos store myfile.txt --parentid syn456" +fi +if [ -f "dist/minimal-synapse-windows.exe" ]; then + echo " ./dist/minimal-synapse-windows.exe get syn123" + echo " ./dist/minimal-synapse-windows.exe store myfile.txt --parentid syn456" +fi + +echo "" +echo "To install system-wide (Linux/macOS):" +echo " sudo cp dist/minimal-synapse-linux /usr/local/bin/synapse-cli" +echo " sudo cp dist/minimal-synapse-macos /usr/local/bin/synapse-cli" +echo "" +echo "Cross-platform build notes:" +echo "- Linux binary: Works on most Linux distributions" +echo "- macOS binary: Requires macOS to build, works on macOS 10.15+" +echo "- Windows binary: Built with simplified approach following Windows native script" diff --git a/build_windows_native.bat b/build_windows_native.bat new file mode 100644 index 000000000..580874267 --- /dev/null +++ b/build_windows_native.bat @@ -0,0 +1,62 @@ +@echo off +REM Fixed Windows build script using the patched CLI script +REM This version pre-loads all dependencies before synapseclient import + +echo Building Minimal Synapse CLI for Windows (fixed version)... + +REM Install required packages +echo Installing required packages... +call .venv\Scripts\activate +uv pip install pyinstaller +uv pip install -e . + +if errorlevel 1 ( + echo ERROR: Failed to install dependencies + exit /b 1 +) + +REM Clean previous builds +echo Cleaning previous builds... +if exist build rmdir /s /q build +if exist dist rmdir /s /q dist +if exist *.spec del *.spec + +echo Building Windows executable (fixed version)... + +REM Build using the fixed CLI script +pyinstaller ^ + --onefile ^ + --name "minimal-synapse-windows.exe" ^ + --collect-all=synapseclient ^ + --console ^ + minimal_synapse_cli.py + +if errorlevel 1 ( + echo ERROR: Build failed + exit /b 1 +) + +echo Build complete! +echo Executable location: dist\minimal-synapse-windows.exe + +REM Show file size +for %%I in (dist\minimal-synapse-windows.exe) do echo File size: %%~zI bytes + +REM Test the executable +echo Testing executable... +dist\minimal-synapse-windows.exe --help +if errorlevel 1 ( + echo ✗ Executable test failed + exit /b 1 +) else ( + echo ✓ Executable test passed +) + +echo. +echo SUCCESS: Fixed Windows executable built! +echo. +echo Usage: +echo dist\minimal-synapse-windows.exe get syn123 +echo dist\minimal-synapse-windows.exe store myfile.txt --parentid syn456 + +pause diff --git a/minimal_synapse_cli.py b/minimal_synapse_cli.py new file mode 100644 index 000000000..a8ea8aa98 --- /dev/null +++ b/minimal_synapse_cli.py @@ -0,0 +1,404 @@ +#!/usr/bin/env python3 +""" +Minimal Synapse CLI with GET and STORE commands - Interactive Version. +Includes interactive session support for missing parameters. +Fixed version that ensures all dependencies are loaded. +""" + +import argparse +import getpass +import os +import sys + +# Now import synapseclient +try: + import synapseclient + from synapseclient.core import utils + from synapseclient.core.exceptions import ( + SynapseAuthenticationError, + SynapseNoCredentialsError, + ) + from synapseclient.models import File +except ImportError as e: + print(f"Error: synapseclient is required but not installed: {e}") + print("Install with: pip install synapseclient") + input("Press the enter key to exit...") + sys.exit(1) + + +def prompt_for_missing( + prompt_text, current_value=None, is_password=False, required=True +): + """Prompt user for missing values interactively""" + if current_value is not None: + return current_value + + if not required: + value = input(f"{prompt_text} (Optional): ").strip() + return value if value else None + + while True: + if is_password: + value = getpass.getpass(f"{prompt_text}: ").strip() + else: + value = input(f"{prompt_text}: ").strip() + + if value: + return value + print("This field is required. Please enter a value.") + + +def get_command(args, syn, interactive=False): + """Download a file from Synapse""" + # Strip quotes from download location if provided + if args.downloadLocation: + args.downloadLocation = args.downloadLocation.strip("\"'") + + # Interactive prompting for missing values + if interactive: + args.id = prompt_for_missing( + "Enter the Synapse ID of the file you want to download (e.g., syn123456)", + args.id, + ) + + if args.version is None: + version_input = prompt_for_missing( + "Enter version number to download (press Enter for latest version)", + None, + required=False, + ) + if version_input: + try: + args.version = int(version_input) + except ValueError: + print("Warning: Invalid version number, using latest version") + args.version = None + + if not args.downloadLocation or args.downloadLocation == "./": + download_loc = prompt_for_missing( + "Enter download location (press Enter for current directory)", + args.downloadLocation, + required=False, + ) + if download_loc: + # Strip quotes from download location + download_loc = download_loc.strip("\"'") + args.downloadLocation = download_loc + + if args.id is None: + raise ValueError("Missing required id argument for get command") + + try: + file_obj = File( + id=args.id, + version_number=args.version, + path=args.downloadLocation, + download_file=True, + ) + + file_obj = file_obj.get(synapse_client=syn) + + if file_obj.path and os.path.exists(file_obj.path): + print(f"Downloaded: {file_obj.path}") + input("Press the enter key to exit...") + sys.exit(1) + else: + print(f"WARNING: No files associated with entity {file_obj.id}") + input("Press the enter key to exit...") + sys.exit(1) + except (SynapseAuthenticationError, ValueError, KeyError) as e: + print(f"Error downloading {args.id}: {e}") + input("Press the enter key to exit...") + sys.exit(1) + + +def store_command(args, syn, interactive=False): + """Upload and store a file to Synapse""" + # Strip quotes from file path if provided + if args.file: + args.file = args.file.strip("\"'") + + # Interactive prompting for missing values + if interactive: + args.file = prompt_for_missing( + "Enter the full path to the file you want to upload", args.file + ) + # Strip quotes from the file path + if args.file: + args.file = args.file.strip("\"'") + + # Check if file exists + while not os.path.exists(args.file): + print(f"ERROR: File not found at path: {args.file}") + args.file = prompt_for_missing("Please enter a valid file path", None) + # Strip quotes from the file path + if args.file: + args.file = args.file.strip("\"'") + + # Parent ID or existing entity ID + if args.parentid is None and args.id is None: + print("\n" + "=" * 60) + print("UPLOAD MODE SELECTION") + print("=" * 60) + print("Choose how you want to upload this file:") + print() + print(" [NEW] Create a new file entity in Synapse") + print(" - Requires a parent location (project or folder ID)") + print(" - Will create a brand new entity") + print() + print(" [UPDATE] Update an existing file entity in Synapse") + print(" - Requires the existing entity's Synapse ID") + print(" - Will replace the current file with your new file") + print() + + while True: + choice = input("Enter your choice [NEW/UPDATE]: ").strip().upper() + if choice in ["NEW", "N"]: + args.parentid = prompt_for_missing( + "Enter the Synapse ID of the parent (project or folder) " + "where you want to create the new file (e.g., syn123456)", + args.parentid, + ) + break + elif choice in ["UPDATE", "U"]: + args.id = prompt_for_missing( + "Enter the Synapse ID of the existing file entity " + "you want to update (e.g., syn789012)", + args.id, + ) + break + else: + print("Please enter either 'NEW' or 'UPDATE' (or 'N' or 'U')") + + # Entity name + if args.name is None: + default_name = utils.guess_file_name(args.file) + name_input = prompt_for_missing( + f"Enter a name for this file in Synapse (press Enter to use: {default_name})", + None, + required=False, + ) + if name_input: + args.name = name_input + else: + args.name = default_name + + # Validate arguments + if args.parentid is None and args.id is None: + raise ValueError("synapse store requires either parentId or id to be specified") + + if args.file is None: + raise ValueError("store command requires a file to upload") + + if not os.path.exists(args.file): + raise ValueError(f"File does not exist: {args.file}") + + try: + if args.id is not None: + file_obj = File( + id=args.id, path=args.file, name=args.name, download_file=False + ) + file_obj = file_obj.get(synapse_client=syn) + file_obj.path = args.file + if args.name: + file_obj.name = args.name + else: + file_obj = File( + path=args.file, + name=args.name or utils.guess_file_name(args.file), + parent_id=args.parentid, + ) + + file_obj = file_obj.store(synapse_client=syn) + print(f"Created/Updated entity: {file_obj.id} - {file_obj.name}") + input("Press the enter key to exit...") + sys.exit(1) + + except (SynapseAuthenticationError, ValueError, KeyError, OSError) as e: + print(f"Error storing file {args.file}: {e}") + input("Press the enter key to exit...") + sys.exit(1) + + +def login_with_prompt(syn, user=None, auth_token=None, silent=False, interactive=False): + """Login to Synapse with credentials""" + try: + # Interactive prompting for missing credentials + if interactive: + if auth_token is None: + auth_token = prompt_for_missing( + "Enter your Personal Access Token (or leave blank and press Enter to use config file)", + auth_token, + is_password=True, + required=False, + ) + + if user is None and auth_token is None: + user = prompt_for_missing( + "Enter your Synapse username or email (or leave blank and press Enter to use config file)", + user, + required=False, + ) # Try to login with provided credentials + if auth_token: + syn.login(authToken=auth_token, silent=silent) + elif user: + # Prompt for auth token + if not silent and not interactive: + auth_token = getpass.getpass(f"Auth token for user {user}: ") + elif interactive and auth_token is None: + auth_token = prompt_for_missing( + f"Auth token for user {user}", None, is_password=True + ) + syn.login(email=user, authToken=auth_token, silent=silent) + else: + # Try to login with cached credentials + syn.login(silent=silent) + + except SynapseNoCredentialsError: + if silent: + raise + print("No saved credentials found in your Synapse configuration.") + if not interactive: + user = input("Enter your Synapse username or email (optional): ") or None + auth_token = getpass.getpass("Enter your Personal Access Token: ") + else: + user = prompt_for_missing("Synapse username or email", None, required=False) + auth_token = prompt_for_missing( + "Personal Access Token", None, is_password=True + ) + syn.login(email=user, authToken=auth_token, silent=silent) + except SynapseAuthenticationError as e: + print(f"Authentication failed: {e}") + input("Press the enter key to exit...") + sys.exit(1) + + +def main(): + parser = argparse.ArgumentParser( + description="Minimal Synapse CLI with GET and STORE commands" + ) + + # Global arguments + parser.add_argument( + "-u", + "--username", + dest="synapseUser", + help="Username used to connect to Synapse", + ) + parser.add_argument( + "-p", + "--password", + dest="synapse_auth_token", + help="Personal Access Token used to connect to Synapse", + ) + parser.add_argument("--debug", action="store_true", help="Enable debug mode") + parser.add_argument("--silent", action="store_true", help="Suppress console output") + + subparsers = parser.add_subparsers(dest="command", help="Available commands") + + # GET command + parser_get = subparsers.add_parser("get", help="Download a file from Synapse") + parser_get.add_argument("id", nargs="?", help="Synapse ID (e.g., syn123)") + parser_get.add_argument( + "-v", + "--version", + type=int, + default=None, + help="Synapse version number to retrieve", + ) + parser_get.add_argument( + "--downloadLocation", + default="./", + help="Directory to download file to [default: ./]", + ) + parser_get.set_defaults(func=get_command) + + # STORE command + parser_store = subparsers.add_parser("store", help="Upload a file to Synapse") + parser_store.add_argument("file", nargs="?", help="File to upload") + parser_store.add_argument( + "--parentid", + "--parentId", + dest="parentid", + help="Synapse ID of parent project or folder", + ) + parser_store.add_argument("--id", help="Synapse ID of existing entity to update") + parser_store.add_argument("--name", help="Name for the entity in Synapse") + parser_store.set_defaults(func=store_command) + + args = parser.parse_args() + + # Enable interactive mode if no command is provided or if insufficient args are provided + interactive_mode = False + + if args.command is None: + # No command provided - enter interactive mode + interactive_mode = True + print("\n" + "=" * 50) + print("Interactive Synapse CLI") + print("=" * 50) + print("Available commands:") + print(" GET - Download a file from Synapse") + print(" STORE - Upload a file to Synapse") + print() + command = ( + input("Enter command [GET/STORE] (Case insensitive): ").strip().upper() + ) + if command not in ["GET", "STORE"]: + print("Invalid command. Please use 'GET' or 'STORE' (Case insensitive)") + input("Press the enter key to exit...") + sys.exit(1) + args.command = command.lower() + + # Set up default args for interactive mode + if command.lower() == "get": + args.id = None + args.version = None + args.downloadLocation = "./" + args.func = get_command + elif command.lower() == "store": + args.file = None + args.parentid = None + args.id = None + args.name = None + args.func = store_command + else: + # Command provided - check if we need interactive mode for missing required args + if args.command == "get" and (not hasattr(args, "id") or args.id is None): + interactive_mode = True + elif args.command == "store" and ( + not hasattr(args, "file") or args.file is None + ): + interactive_mode = True + + # Initialize Synapse client + syn = synapseclient.Synapse(debug=args.debug, silent=args.silent, skip_checks=True) + + # Login + try: + login_with_prompt( + syn, + args.synapseUser, + args.synapse_auth_token, + args.silent, + interactive_mode, + ) + except (SynapseAuthenticationError, SynapseNoCredentialsError) as e: + print(f"Login failed: {e}") + input("Press the enter key to exit...") + sys.exit(1) + + # Execute command + try: + if interactive_mode: + args.func(args, syn, interactive=True) + else: + args.func(args, syn) + except (ValueError, KeyError, OSError) as e: + print(f"Command failed: {e}") + input("Press the enter key to exit...") + sys.exit(1) + + +if __name__ == "__main__": + main() From 2a79688e32138bcb76c62c15d9c3bd71988fd0b8 Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Mon, 11 Aug 2025 16:17:02 +0000 Subject: [PATCH 02/46] Build a simple GUI application and add to the build process to publish artifacts --- .github/workflows/build.yml | 247 ++++-- build_windows_native.bat | 62 -- minimal_synapse_cli.py | 404 --------- build.sh => synapsegui/build.sh | 55 +- synapsegui/build_windows_native_gui.bat | 66 ++ synapsegui/synapse_gui.py | 1055 +++++++++++++++++++++++ 6 files changed, 1330 insertions(+), 559 deletions(-) delete mode 100644 build_windows_native.bat delete mode 100644 minimal_synapse_cli.py rename build.sh => synapsegui/build.sh (60%) create mode 100644 synapsegui/build_windows_native_gui.bat create mode 100644 synapsegui/synapse_gui.py diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8c6765fa7..ea9151825 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -129,69 +129,69 @@ jobs: # run integration tests on the oldest and newest supported versions of python. # we don't run on the entire matrix to avoid a 3xN set of concurrent tests against # the target server where N is the number of supported python versions. - - name: run-integration-tests - shell: bash - - # keep versions consistent with the first and last from the strategy matrix - if: ${{ (contains(fromJSON('["3.9"]'), matrix.python) || contains(fromJSON('["3.13"]'), matrix.python)) && steps.secret-check.outputs.secrets_available == 'true'}} - run: | - # decrypt the encrypted test synapse configuration - openssl aes-256-cbc -K ${{ secrets.encrypted_d17283647768_key }} -iv ${{ secrets.encrypted_d17283647768_iv }} -in test.synapseConfig.enc -out test.synapseConfig -d - mv test.synapseConfig ~/.synapseConfig - - if [ "${{ startsWith(matrix.os, 'ubuntu') }}" == "true" ]; then - # on linux only we can build and run a docker container to serve as an SFTP host for our SFTP tests. - # Docker is not available on GH Action runners on Mac and Windows. - - docker build -t sftp_tests - < tests/integration/synapseclient/core/upload/Dockerfile_sftp - docker run -d sftp_tests:latest - - # get the internal IP address of the just launched container - export SFTP_HOST=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -q)) - - printf "[sftp://$SFTP_HOST]\nusername: test\npassword: test\n" >> ~/.synapseConfig - - # add to known_hosts so the ssh connections can be made without any prompting/errors - mkdir -p ~/.ssh - ssh-keyscan -H $SFTP_HOST >> ~/.ssh/known_hosts - fi - - # set env vars used in external bucket tests from secrets - export EXTERNAL_S3_BUCKET_NAME="${{secrets.EXTERNAL_S3_BUCKET_NAME}}" - export EXTERNAL_S3_BUCKET_AWS_ACCESS_KEY_ID="${{secrets.EXTERNAL_S3_BUCKET_AWS_ACCESS_KEY_ID}}" - export EXTERNAL_S3_BUCKET_AWS_SECRET_ACCESS_KEY="${{secrets.EXTERNAL_S3_BUCKET_AWS_SECRET_ACCESS_KEY}}" - - # Set env vars for OTEL - export OTEL_EXPORTER_OTLP_ENDPOINT="${{ vars.OTEL_EXPORTER_OTLP_ENDPOINT }}" - export OTEL_SERVICE_INSTANCE_ID="${{ vars.OTEL_SERVICE_INSTANCE_ID }}" - export SYNAPSE_INTEGRATION_TEST_OTEL_ENABLED="${{ vars.SYNAPSE_INTEGRATION_TEST_OTEL_ENABLED }}" - export OTEL_EXPORTER_OTLP_HEADERS="${{ secrets.OTEL_EXPORTER_OTLP_HEADERS }}" - - # Setup ignore patterns based on Python version - IGNORE_FLAGS="--ignore=tests/integration/synapseclient/test_command_line_client.py" - - if [ "${{ matrix.python }}" == "3.9" ]; then - # For min Python version, ignore async tests - IGNORE_FLAGS="$IGNORE_FLAGS --ignore=tests/integration/synapseclient/models/async/" - echo "Running integration tests for Min Python version (3.9) - ignoring async tests" - elif [ "${{ matrix.python }}" == "3.13" ]; then - # For max Python version, ignore synchronous tests - IGNORE_FLAGS="$IGNORE_FLAGS --ignore=tests/integration/synapseclient/models/synchronous/" - echo "Running integration tests for Max Python version (3.13) - ignoring synchronous tests" - fi - - # use loadscope to avoid issues running tests concurrently that share scoped fixtures - pytest -sv --reruns 3 --cov-append --cov=. --cov-report xml tests/integration -n 8 $IGNORE_FLAGS --dist loadscope - - # Execute the CLI tests in a non-dist way because they were causing some test instability when being run concurrently - pytest -sv --reruns 3 --cov-append --cov=. --cov-report xml tests/integration/synapseclient/test_command_line_client.py - - name: Upload coverage report - id: upload_coverage_report - uses: actions/upload-artifact@v4 - if: ${{ contains(fromJSON('["3.13"]'), matrix.python) && contains(fromJSON('["ubuntu-22.04"]'), matrix.os)}} - with: - name: coverage-report - path: coverage.xml + # - name: run-integration-tests + # shell: bash + + # # keep versions consistent with the first and last from the strategy matrix + # if: ${{ (contains(fromJSON('["3.9"]'), matrix.python) || contains(fromJSON('["3.13"]'), matrix.python)) && steps.secret-check.outputs.secrets_available == 'true'}} + # run: | + # # decrypt the encrypted test synapse configuration + # openssl aes-256-cbc -K ${{ secrets.encrypted_d17283647768_key }} -iv ${{ secrets.encrypted_d17283647768_iv }} -in test.synapseConfig.enc -out test.synapseConfig -d + # mv test.synapseConfig ~/.synapseConfig + + # if [ "${{ startsWith(matrix.os, 'ubuntu') }}" == "true" ]; then + # # on linux only we can build and run a docker container to serve as an SFTP host for our SFTP tests. + # # Docker is not available on GH Action runners on Mac and Windows. + + # docker build -t sftp_tests - < tests/integration/synapseclient/core/upload/Dockerfile_sftp + # docker run -d sftp_tests:latest + + # # get the internal IP address of the just launched container + # export SFTP_HOST=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -q)) + + # printf "[sftp://$SFTP_HOST]\nusername: test\npassword: test\n" >> ~/.synapseConfig + + # # add to known_hosts so the ssh connections can be made without any prompting/errors + # mkdir -p ~/.ssh + # ssh-keyscan -H $SFTP_HOST >> ~/.ssh/known_hosts + # fi + + # # set env vars used in external bucket tests from secrets + # export EXTERNAL_S3_BUCKET_NAME="${{secrets.EXTERNAL_S3_BUCKET_NAME}}" + # export EXTERNAL_S3_BUCKET_AWS_ACCESS_KEY_ID="${{secrets.EXTERNAL_S3_BUCKET_AWS_ACCESS_KEY_ID}}" + # export EXTERNAL_S3_BUCKET_AWS_SECRET_ACCESS_KEY="${{secrets.EXTERNAL_S3_BUCKET_AWS_SECRET_ACCESS_KEY}}" + + # # Set env vars for OTEL + # export OTEL_EXPORTER_OTLP_ENDPOINT="${{ vars.OTEL_EXPORTER_OTLP_ENDPOINT }}" + # export OTEL_SERVICE_INSTANCE_ID="${{ vars.OTEL_SERVICE_INSTANCE_ID }}" + # export SYNAPSE_INTEGRATION_TEST_OTEL_ENABLED="${{ vars.SYNAPSE_INTEGRATION_TEST_OTEL_ENABLED }}" + # export OTEL_EXPORTER_OTLP_HEADERS="${{ secrets.OTEL_EXPORTER_OTLP_HEADERS }}" + + # # Setup ignore patterns based on Python version + # IGNORE_FLAGS="--ignore=tests/integration/synapseclient/test_command_line_client.py" + + # if [ "${{ matrix.python }}" == "3.9" ]; then + # # For min Python version, ignore async tests + # IGNORE_FLAGS="$IGNORE_FLAGS --ignore=tests/integration/synapseclient/models/async/" + # echo "Running integration tests for Min Python version (3.9) - ignoring async tests" + # elif [ "${{ matrix.python }}" == "3.13" ]; then + # # For max Python version, ignore synchronous tests + # IGNORE_FLAGS="$IGNORE_FLAGS --ignore=tests/integration/synapseclient/models/synchronous/" + # echo "Running integration tests for Max Python version (3.13) - ignoring synchronous tests" + # fi + + # # use loadscope to avoid issues running tests concurrently that share scoped fixtures + # pytest -sv --reruns 3 --cov-append --cov=. --cov-report xml tests/integration -n 8 $IGNORE_FLAGS --dist loadscope + + # # Execute the CLI tests in a non-dist way because they were causing some test instability when being run concurrently + # pytest -sv --reruns 3 --cov-append --cov=. --cov-report xml tests/integration/synapseclient/test_command_line_client.py + # - name: Upload coverage report + # id: upload_coverage_report + # uses: actions/upload-artifact@v4 + # if: ${{ contains(fromJSON('["3.13"]'), matrix.python) && contains(fromJSON('["ubuntu-22.04"]'), matrix.os)}} + # with: + # name: coverage-report + # path: coverage.xml sonarcloud: needs: [test] @@ -343,6 +343,127 @@ jobs: # asset_content_type: application/zip + # build standalone desktop client artifacts for Windows and macOS on release + build-desktop-clients: + needs: [test, pre-commit] + if: github.event_name == 'release' + + strategy: + matrix: + include: + # Windows builds + - os: windows-2022 + platform: windows + arch: x64 + python-version: '3.11' + artifact-name: synapse-desktop-client-windows-x64 + + # macOS builds - Intel + - os: macos-13 + platform: macos + arch: intel + python-version: '3.11' + artifact-name: synapse-desktop-client-macos-intel + + # macOS builds - Apple Silicon (M1/M2) + - os: macos-14 + platform: macos + arch: apple-silicon + python-version: '3.11' + artifact-name: synapse-desktop-client-macos-apple-silicon + + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Install uv (Windows) + if: runner.os == 'Windows' + run: | + curl -LsSf https://astral.sh/uv/install.ps1 | powershell -c - + echo "$env:USERPROFILE\.cargo\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + + - name: Install uv (macOS) + if: runner.os == 'macOS' + run: | + curl -LsSf https://astral.sh/uv/install.sh | sh + echo "$HOME/.cargo/bin" >> $GITHUB_PATH + + - name: Create virtual environment + shell: bash + run: | + uv venv .venv + if [[ "${{ runner.os }}" == "Windows" ]]; then + echo "VIRTUAL_ENV=$PWD/.venv" >> $GITHUB_ENV + echo "$PWD/.venv/Scripts" >> $GITHUB_PATH + else + echo "VIRTUAL_ENV=$PWD/.venv" >> $GITHUB_ENV + echo "$PWD/.venv/bin" >> $GITHUB_PATH + fi + + - name: Extract tag name + shell: bash + run: | + TAG_NAME="${{ github.event.release.tag_name }}" + # Remove 'v' prefix if it exists + TAG_CLEAN=${TAG_NAME#v} + echo "TAG_CLEAN=$TAG_CLEAN" >> $GITHUB_ENV + + - name: Build Windows Desktop Client + if: matrix.platform == 'windows' + working-directory: synapsegui + shell: cmd + run: | + call build_windows_native_gui.bat %TAG_CLEAN% + + - name: Build macOS Desktop Client + if: matrix.platform == 'macos' + working-directory: synapsegui + shell: bash + run: | + chmod +x build.sh + ./build.sh macos $TAG_CLEAN + + - name: Prepare artifact (Windows) + if: matrix.platform == 'windows' + shell: bash + run: | + cd synapsegui/dist + ARTIFACT_FILE=$(ls synapse-desktop-client*.exe | head -n1) + FINAL_NAME="${{ matrix.artifact-name }}-${{ env.TAG_CLEAN }}.exe" + mv "$ARTIFACT_FILE" "$FINAL_NAME" + echo "ARTIFACT_PATH=synapsegui/dist/$FINAL_NAME" >> $GITHUB_ENV + echo "ARTIFACT_NAME=$FINAL_NAME" >> $GITHUB_ENV + + - name: Prepare artifact (macOS) + if: matrix.platform == 'macos' + shell: bash + run: | + cd synapsegui/dist + ARTIFACT_FILE=$(ls synapse-desktop-client-macos* | head -n1) + FINAL_NAME="${{ matrix.artifact-name }}-${{ env.TAG_CLEAN }}" + mv "$ARTIFACT_FILE" "$FINAL_NAME" + echo "ARTIFACT_PATH=synapsegui/dist/$FINAL_NAME" >> $GITHUB_ENV + echo "ARTIFACT_NAME=$FINAL_NAME" >> $GITHUB_ENV + + - name: Upload build artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ env.ARTIFACT_NAME }} + path: ${{ env.ARTIFACT_PATH }} + + - name: Upload to GitHub Release + uses: softprops/action-gh-release@v1 + with: + files: ${{ env.ARTIFACT_PATH }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # re-download the built package to the appropriate pypi server. # we upload prereleases to test.pypi.org and releases to pypi.org. deploy: diff --git a/build_windows_native.bat b/build_windows_native.bat deleted file mode 100644 index 580874267..000000000 --- a/build_windows_native.bat +++ /dev/null @@ -1,62 +0,0 @@ -@echo off -REM Fixed Windows build script using the patched CLI script -REM This version pre-loads all dependencies before synapseclient import - -echo Building Minimal Synapse CLI for Windows (fixed version)... - -REM Install required packages -echo Installing required packages... -call .venv\Scripts\activate -uv pip install pyinstaller -uv pip install -e . - -if errorlevel 1 ( - echo ERROR: Failed to install dependencies - exit /b 1 -) - -REM Clean previous builds -echo Cleaning previous builds... -if exist build rmdir /s /q build -if exist dist rmdir /s /q dist -if exist *.spec del *.spec - -echo Building Windows executable (fixed version)... - -REM Build using the fixed CLI script -pyinstaller ^ - --onefile ^ - --name "minimal-synapse-windows.exe" ^ - --collect-all=synapseclient ^ - --console ^ - minimal_synapse_cli.py - -if errorlevel 1 ( - echo ERROR: Build failed - exit /b 1 -) - -echo Build complete! -echo Executable location: dist\minimal-synapse-windows.exe - -REM Show file size -for %%I in (dist\minimal-synapse-windows.exe) do echo File size: %%~zI bytes - -REM Test the executable -echo Testing executable... -dist\minimal-synapse-windows.exe --help -if errorlevel 1 ( - echo ✗ Executable test failed - exit /b 1 -) else ( - echo ✓ Executable test passed -) - -echo. -echo SUCCESS: Fixed Windows executable built! -echo. -echo Usage: -echo dist\minimal-synapse-windows.exe get syn123 -echo dist\minimal-synapse-windows.exe store myfile.txt --parentid syn456 - -pause diff --git a/minimal_synapse_cli.py b/minimal_synapse_cli.py deleted file mode 100644 index a8ea8aa98..000000000 --- a/minimal_synapse_cli.py +++ /dev/null @@ -1,404 +0,0 @@ -#!/usr/bin/env python3 -""" -Minimal Synapse CLI with GET and STORE commands - Interactive Version. -Includes interactive session support for missing parameters. -Fixed version that ensures all dependencies are loaded. -""" - -import argparse -import getpass -import os -import sys - -# Now import synapseclient -try: - import synapseclient - from synapseclient.core import utils - from synapseclient.core.exceptions import ( - SynapseAuthenticationError, - SynapseNoCredentialsError, - ) - from synapseclient.models import File -except ImportError as e: - print(f"Error: synapseclient is required but not installed: {e}") - print("Install with: pip install synapseclient") - input("Press the enter key to exit...") - sys.exit(1) - - -def prompt_for_missing( - prompt_text, current_value=None, is_password=False, required=True -): - """Prompt user for missing values interactively""" - if current_value is not None: - return current_value - - if not required: - value = input(f"{prompt_text} (Optional): ").strip() - return value if value else None - - while True: - if is_password: - value = getpass.getpass(f"{prompt_text}: ").strip() - else: - value = input(f"{prompt_text}: ").strip() - - if value: - return value - print("This field is required. Please enter a value.") - - -def get_command(args, syn, interactive=False): - """Download a file from Synapse""" - # Strip quotes from download location if provided - if args.downloadLocation: - args.downloadLocation = args.downloadLocation.strip("\"'") - - # Interactive prompting for missing values - if interactive: - args.id = prompt_for_missing( - "Enter the Synapse ID of the file you want to download (e.g., syn123456)", - args.id, - ) - - if args.version is None: - version_input = prompt_for_missing( - "Enter version number to download (press Enter for latest version)", - None, - required=False, - ) - if version_input: - try: - args.version = int(version_input) - except ValueError: - print("Warning: Invalid version number, using latest version") - args.version = None - - if not args.downloadLocation or args.downloadLocation == "./": - download_loc = prompt_for_missing( - "Enter download location (press Enter for current directory)", - args.downloadLocation, - required=False, - ) - if download_loc: - # Strip quotes from download location - download_loc = download_loc.strip("\"'") - args.downloadLocation = download_loc - - if args.id is None: - raise ValueError("Missing required id argument for get command") - - try: - file_obj = File( - id=args.id, - version_number=args.version, - path=args.downloadLocation, - download_file=True, - ) - - file_obj = file_obj.get(synapse_client=syn) - - if file_obj.path and os.path.exists(file_obj.path): - print(f"Downloaded: {file_obj.path}") - input("Press the enter key to exit...") - sys.exit(1) - else: - print(f"WARNING: No files associated with entity {file_obj.id}") - input("Press the enter key to exit...") - sys.exit(1) - except (SynapseAuthenticationError, ValueError, KeyError) as e: - print(f"Error downloading {args.id}: {e}") - input("Press the enter key to exit...") - sys.exit(1) - - -def store_command(args, syn, interactive=False): - """Upload and store a file to Synapse""" - # Strip quotes from file path if provided - if args.file: - args.file = args.file.strip("\"'") - - # Interactive prompting for missing values - if interactive: - args.file = prompt_for_missing( - "Enter the full path to the file you want to upload", args.file - ) - # Strip quotes from the file path - if args.file: - args.file = args.file.strip("\"'") - - # Check if file exists - while not os.path.exists(args.file): - print(f"ERROR: File not found at path: {args.file}") - args.file = prompt_for_missing("Please enter a valid file path", None) - # Strip quotes from the file path - if args.file: - args.file = args.file.strip("\"'") - - # Parent ID or existing entity ID - if args.parentid is None and args.id is None: - print("\n" + "=" * 60) - print("UPLOAD MODE SELECTION") - print("=" * 60) - print("Choose how you want to upload this file:") - print() - print(" [NEW] Create a new file entity in Synapse") - print(" - Requires a parent location (project or folder ID)") - print(" - Will create a brand new entity") - print() - print(" [UPDATE] Update an existing file entity in Synapse") - print(" - Requires the existing entity's Synapse ID") - print(" - Will replace the current file with your new file") - print() - - while True: - choice = input("Enter your choice [NEW/UPDATE]: ").strip().upper() - if choice in ["NEW", "N"]: - args.parentid = prompt_for_missing( - "Enter the Synapse ID of the parent (project or folder) " - "where you want to create the new file (e.g., syn123456)", - args.parentid, - ) - break - elif choice in ["UPDATE", "U"]: - args.id = prompt_for_missing( - "Enter the Synapse ID of the existing file entity " - "you want to update (e.g., syn789012)", - args.id, - ) - break - else: - print("Please enter either 'NEW' or 'UPDATE' (or 'N' or 'U')") - - # Entity name - if args.name is None: - default_name = utils.guess_file_name(args.file) - name_input = prompt_for_missing( - f"Enter a name for this file in Synapse (press Enter to use: {default_name})", - None, - required=False, - ) - if name_input: - args.name = name_input - else: - args.name = default_name - - # Validate arguments - if args.parentid is None and args.id is None: - raise ValueError("synapse store requires either parentId or id to be specified") - - if args.file is None: - raise ValueError("store command requires a file to upload") - - if not os.path.exists(args.file): - raise ValueError(f"File does not exist: {args.file}") - - try: - if args.id is not None: - file_obj = File( - id=args.id, path=args.file, name=args.name, download_file=False - ) - file_obj = file_obj.get(synapse_client=syn) - file_obj.path = args.file - if args.name: - file_obj.name = args.name - else: - file_obj = File( - path=args.file, - name=args.name or utils.guess_file_name(args.file), - parent_id=args.parentid, - ) - - file_obj = file_obj.store(synapse_client=syn) - print(f"Created/Updated entity: {file_obj.id} - {file_obj.name}") - input("Press the enter key to exit...") - sys.exit(1) - - except (SynapseAuthenticationError, ValueError, KeyError, OSError) as e: - print(f"Error storing file {args.file}: {e}") - input("Press the enter key to exit...") - sys.exit(1) - - -def login_with_prompt(syn, user=None, auth_token=None, silent=False, interactive=False): - """Login to Synapse with credentials""" - try: - # Interactive prompting for missing credentials - if interactive: - if auth_token is None: - auth_token = prompt_for_missing( - "Enter your Personal Access Token (or leave blank and press Enter to use config file)", - auth_token, - is_password=True, - required=False, - ) - - if user is None and auth_token is None: - user = prompt_for_missing( - "Enter your Synapse username or email (or leave blank and press Enter to use config file)", - user, - required=False, - ) # Try to login with provided credentials - if auth_token: - syn.login(authToken=auth_token, silent=silent) - elif user: - # Prompt for auth token - if not silent and not interactive: - auth_token = getpass.getpass(f"Auth token for user {user}: ") - elif interactive and auth_token is None: - auth_token = prompt_for_missing( - f"Auth token for user {user}", None, is_password=True - ) - syn.login(email=user, authToken=auth_token, silent=silent) - else: - # Try to login with cached credentials - syn.login(silent=silent) - - except SynapseNoCredentialsError: - if silent: - raise - print("No saved credentials found in your Synapse configuration.") - if not interactive: - user = input("Enter your Synapse username or email (optional): ") or None - auth_token = getpass.getpass("Enter your Personal Access Token: ") - else: - user = prompt_for_missing("Synapse username or email", None, required=False) - auth_token = prompt_for_missing( - "Personal Access Token", None, is_password=True - ) - syn.login(email=user, authToken=auth_token, silent=silent) - except SynapseAuthenticationError as e: - print(f"Authentication failed: {e}") - input("Press the enter key to exit...") - sys.exit(1) - - -def main(): - parser = argparse.ArgumentParser( - description="Minimal Synapse CLI with GET and STORE commands" - ) - - # Global arguments - parser.add_argument( - "-u", - "--username", - dest="synapseUser", - help="Username used to connect to Synapse", - ) - parser.add_argument( - "-p", - "--password", - dest="synapse_auth_token", - help="Personal Access Token used to connect to Synapse", - ) - parser.add_argument("--debug", action="store_true", help="Enable debug mode") - parser.add_argument("--silent", action="store_true", help="Suppress console output") - - subparsers = parser.add_subparsers(dest="command", help="Available commands") - - # GET command - parser_get = subparsers.add_parser("get", help="Download a file from Synapse") - parser_get.add_argument("id", nargs="?", help="Synapse ID (e.g., syn123)") - parser_get.add_argument( - "-v", - "--version", - type=int, - default=None, - help="Synapse version number to retrieve", - ) - parser_get.add_argument( - "--downloadLocation", - default="./", - help="Directory to download file to [default: ./]", - ) - parser_get.set_defaults(func=get_command) - - # STORE command - parser_store = subparsers.add_parser("store", help="Upload a file to Synapse") - parser_store.add_argument("file", nargs="?", help="File to upload") - parser_store.add_argument( - "--parentid", - "--parentId", - dest="parentid", - help="Synapse ID of parent project or folder", - ) - parser_store.add_argument("--id", help="Synapse ID of existing entity to update") - parser_store.add_argument("--name", help="Name for the entity in Synapse") - parser_store.set_defaults(func=store_command) - - args = parser.parse_args() - - # Enable interactive mode if no command is provided or if insufficient args are provided - interactive_mode = False - - if args.command is None: - # No command provided - enter interactive mode - interactive_mode = True - print("\n" + "=" * 50) - print("Interactive Synapse CLI") - print("=" * 50) - print("Available commands:") - print(" GET - Download a file from Synapse") - print(" STORE - Upload a file to Synapse") - print() - command = ( - input("Enter command [GET/STORE] (Case insensitive): ").strip().upper() - ) - if command not in ["GET", "STORE"]: - print("Invalid command. Please use 'GET' or 'STORE' (Case insensitive)") - input("Press the enter key to exit...") - sys.exit(1) - args.command = command.lower() - - # Set up default args for interactive mode - if command.lower() == "get": - args.id = None - args.version = None - args.downloadLocation = "./" - args.func = get_command - elif command.lower() == "store": - args.file = None - args.parentid = None - args.id = None - args.name = None - args.func = store_command - else: - # Command provided - check if we need interactive mode for missing required args - if args.command == "get" and (not hasattr(args, "id") or args.id is None): - interactive_mode = True - elif args.command == "store" and ( - not hasattr(args, "file") or args.file is None - ): - interactive_mode = True - - # Initialize Synapse client - syn = synapseclient.Synapse(debug=args.debug, silent=args.silent, skip_checks=True) - - # Login - try: - login_with_prompt( - syn, - args.synapseUser, - args.synapse_auth_token, - args.silent, - interactive_mode, - ) - except (SynapseAuthenticationError, SynapseNoCredentialsError) as e: - print(f"Login failed: {e}") - input("Press the enter key to exit...") - sys.exit(1) - - # Execute command - try: - if interactive_mode: - args.func(args, syn, interactive=True) - else: - args.func(args, syn) - except (ValueError, KeyError, OSError) as e: - print(f"Command failed: {e}") - input("Press the enter key to exit...") - sys.exit(1) - - -if __name__ == "__main__": - main() diff --git a/build.sh b/synapsegui/build.sh similarity index 60% rename from build.sh rename to synapsegui/build.sh index dfa533b0e..b2e7e4f4d 100755 --- a/build.sh +++ b/synapsegui/build.sh @@ -1,16 +1,18 @@ #!/bin/bash -# Build script for minimal Synapse CLI +# Build script for Synapse Desktop Client # This script creates cross-platform binaries using PyInstaller -# Usage: ./build.sh [platform] -# Platforms: linux, macos, windows, all +# Usage: ./build.sh [platform] [suffix] +# Platforms: linux, macos, all +# Suffix: optional suffix to add to the output filename set -e # Default to current platform if no argument provided TARGET_PLATFORM=${1:-"auto"} +SUFFIX=${2:-""} -echo "Building Minimal Synapse CLI..." +echo "Building Synapse Desktop Client..." # Install required packages echo "Installing required packages..." @@ -28,7 +30,8 @@ build_for_platform() { local extra_args=$3 echo "Building for platform: $platform" - local output_name="minimal-synapse-${platform}${extension}" + local base_name="synapse-desktop-client-${platform}" + local output_name="${base_name}${SUFFIX}${extension}" echo "Building executable: $output_name" @@ -39,7 +42,7 @@ build_for_platform() { --collect-all=synapseclient \ --console \ $extra_args \ - minimal_synapse_cli.py + synapse_gui.py # Clean up spec file rm -f *.spec @@ -70,11 +73,10 @@ case "$TARGET_PLATFORM" in build_for_platform "linux" "" elif [[ "$OSTYPE" == "darwin"* ]]; then build_for_platform "macos" "" - elif [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "win32" ]]; then - build_for_platform "windows" ".exe" else - echo "Unknown platform: $OSTYPE" - echo "Please specify platform: linux, macos, windows, or all" + echo "Unsupported platform: $OSTYPE" + echo "This script only supports Linux and macOS platforms" + echo "Please specify platform: linux, macos, or all" exit 1 fi ;; @@ -84,18 +86,14 @@ case "$TARGET_PLATFORM" in "macos") build_for_platform "macos" "" ;; - "windows") - build_for_platform "windows" ".exe" - ;; "all") - echo "Building for all platforms..." + echo "Building for all supported platforms..." build_for_platform "linux" "" build_for_platform "macos" "" - build_for_platform "windows" ".exe" ;; *) echo "Unknown platform: $TARGET_PLATFORM" - echo "Available platforms: linux, macos, windows, all" + echo "Available platforms: linux, macos, all" exit 1 ;; esac @@ -104,29 +102,26 @@ echo "" echo "Build(s) complete!" echo "" echo "Available executables:" -ls -la dist/minimal-synapse-* 2>/dev/null || echo "No executables found" +ls -la dist/synapse-desktop-client-* 2>/dev/null || echo "No executables found" echo "" echo "Usage examples:" -if [ -f "dist/minimal-synapse-linux" ]; then - echo " ./dist/minimal-synapse-linux get syn123" - echo " ./dist/minimal-synapse-linux store myfile.txt --parentid syn456" -fi -if [ -f "dist/minimal-synapse-macos" ]; then - echo " ./dist/minimal-synapse-macos get syn123" - echo " ./dist/minimal-synapse-macos store myfile.txt --parentid syn456" +if ls dist/synapse-desktop-client-linux* 1> /dev/null 2>&1; then + local linux_file=$(ls dist/synapse-desktop-client-linux* | head -n1) + echo " ./$linux_file get syn123" + echo " ./$linux_file store myfile.txt --parentid syn456" fi -if [ -f "dist/minimal-synapse-windows.exe" ]; then - echo " ./dist/minimal-synapse-windows.exe get syn123" - echo " ./dist/minimal-synapse-windows.exe store myfile.txt --parentid syn456" +if ls dist/synapse-desktop-client-macos* 1> /dev/null 2>&1; then + local macos_file=$(ls dist/synapse-desktop-client-macos* | head -n1) + echo " ./$macos_file get syn123" + echo " ./$macos_file store myfile.txt --parentid syn456" fi echo "" echo "To install system-wide (Linux/macOS):" -echo " sudo cp dist/minimal-synapse-linux /usr/local/bin/synapse-cli" -echo " sudo cp dist/minimal-synapse-macos /usr/local/bin/synapse-cli" +echo " sudo cp dist/synapse-desktop-client-linux* /usr/local/bin/synapse-desktop-client" +echo " sudo cp dist/synapse-desktop-client-macos* /usr/local/bin/synapse-desktop-client" echo "" echo "Cross-platform build notes:" echo "- Linux binary: Works on most Linux distributions" echo "- macOS binary: Requires macOS to build, works on macOS 10.15+" -echo "- Windows binary: Built with simplified approach following Windows native script" diff --git a/synapsegui/build_windows_native_gui.bat b/synapsegui/build_windows_native_gui.bat new file mode 100644 index 000000000..95795204a --- /dev/null +++ b/synapsegui/build_windows_native_gui.bat @@ -0,0 +1,66 @@ +@echo off +REM Fixed Windows build script using the patched CLI script +REM This version pre-loads all dependencies before synapseclient import +REM Usage: build_windows_native_gui.bat [suffix] + +set SUFFIX=%1 +if not "%SUFFIX%"=="" set SUFFIX=-%SUFFIX% + +echo Building Synapse Desktop Client for Windows... + +REM Install required packages +echo Installing required packages... +call .venv\Scripts\activate +uv pip install pyinstaller +uv pip install -e . + +if errorlevel 1 ( + echo ERROR: Failed to install dependencies + exit /b 1 +) + +REM Clean previous builds +echo Cleaning previous builds... +if exist build rmdir /s /q build +if exist dist rmdir /s /q dist +if exist *.spec del *.spec + +echo Building Windows executable... + +REM Build using the fixed CLI script +pyinstaller ^ + --onefile ^ + --name "synapse-desktop-client%SUFFIX%.exe" ^ + --collect-all=synapseclient ^ + --windowed ^ + synapse_gui.py + +if errorlevel 1 ( + echo ERROR: Build failed + exit /b 1 +) + +echo Build complete! +echo Executable location: dist\synapse-desktop-client%SUFFIX%.exe + +REM Show file size +for %%I in (dist\synapse-desktop-client%SUFFIX%.exe) do echo File size: %%~zI bytes + +REM Test the executable (GUI mode - just check if it exists and runs briefly) +echo Testing executable... +if exist dist\synapse-desktop-client%SUFFIX%.exe ( + echo ✓ Executable created successfully + echo Note: This is a GUI application - double-click to run the interface +) else ( + echo ✗ Executable not found + exit /b 1 +) + +echo. +echo SUCCESS: Synapse Desktop Client built! +echo. +echo Usage: +echo Double-click dist\synapse-desktop-client%SUFFIX%.exe to open the GUI interface +echo Or run from command line: dist\synapse-desktop-client%SUFFIX%.exe + +pause diff --git a/synapsegui/synapse_gui.py b/synapsegui/synapse_gui.py new file mode 100644 index 000000000..98eeea72e --- /dev/null +++ b/synapsegui/synapse_gui.py @@ -0,0 +1,1055 @@ +#!/usr/bin/env python3 +""" +Tkinter GUI for Synapse CLI - Cross-platform desktop interface. +Provides a user-friendly GUI for GET and STORE operations. +""" + +import os +import queue +import sys +import threading +import tkinter as tk +from pathlib import Path +from tkinter import filedialog, messagebox, scrolledtext, ttk + +# Import the existing CLI functionality +try: + import synapseclient + from synapseclient.api.configuration_services import get_config_file + from synapseclient.core import utils + from synapseclient.models import File +except ImportError as e: + print(f"Error: synapseclient is required but not installed: {e}") + print("Install with: pip install synapseclient") + sys.exit(1) + + +def get_available_profiles(config_path=None): + """Get list of available authentication profiles from config file""" + if config_path is None: + config_path = os.path.expanduser("~/.synapseConfig") + + profiles = [] + + try: + config = get_config_file(config_path) + sections = config.sections() + + # Look for profiles + for section in sections: + if section == "default": + profiles.append("default") + elif section.startswith("profile "): + profile_name = section[8:] # Remove "profile " prefix + profiles.append(profile_name) + elif section == "authentication": + # Legacy authentication section + profiles.append("authentication (legacy)") + + # If no profiles found but config exists, add default + if not profiles and os.path.exists(config_path): + profiles.append("default") + + except Exception: + # If config file doesn't exist or can't be read, return empty list + pass + + return profiles + + +def get_profile_info(profile_name, config_path=None): + """Get username for a specific profile""" + if config_path is None: + config_path = os.path.expanduser("~/.synapseConfig") + + try: + config = get_config_file(config_path) + + # Handle different profile name formats + if profile_name == "default": + section_name = "default" + elif profile_name == "authentication (legacy)": + section_name = "authentication" + else: + section_name = f"profile {profile_name}" + + if config.has_section(section_name): + username = config.get(section_name, "username", fallback="") + return username + + except Exception: + pass + + return "" + + +class TQDMProgressCapture: + """Capture TQDM progress updates for GUI display""" + + def __init__(self, operation_queue): + self.operation_queue = operation_queue + self.last_progress = 0 + + def write(self, s): + """Capture TQDM output and extract progress information""" + if s and "\r" in s: + # TQDM typically uses \r for progress updates + progress_line = s.strip().replace("\r", "") + if "%" in progress_line and ( + "B/s" in progress_line or "it/s" in progress_line + ): + # Parse progress percentage + try: + # Look for percentage in the format "XX%" + import re + + match = re.search(r"(\d+)%", progress_line) + if match: + progress = int(match.group(1)) + if progress != self.last_progress: + self.last_progress = progress + self.operation_queue.put( + ("progress", f"Progress: {progress}%", progress) + ) + # Also send the full progress line for detailed info + self.operation_queue.put(("progress_detail", progress_line)) + except Exception: + pass + + def flush(self): + """Required for file-like object interface""" + pass + + +class ToolTip: + """Create a tooltip for a given widget""" + + def __init__(self, widget, text="widget info"): + self.widget = widget + self.text = text + self.widget.bind("", self.enter) + self.widget.bind("", self.leave) + self.tipwindow = None + + def enter(self, event=None): + self.show_tooltip() + + def leave(self, event=None): + self.hide_tooltip() + + def show_tooltip(self): + if self.tipwindow or not self.text: + return + x, y, cx, cy = self.widget.bbox("insert") + x = x + self.widget.winfo_rootx() + 25 + y = y + cy + self.widget.winfo_rooty() + 25 + self.tipwindow = tw = tk.Toplevel(self.widget) + tw.wm_overrideredirect(True) + tw.wm_geometry("+%d+%d" % (x, y)) + label = tk.Label( + tw, + text=self.text, + justify=tk.LEFT, + background="#ffffe0", + relief=tk.SOLID, + borderwidth=1, + font=("tahoma", "8", "normal"), + ) + label.pack(ipadx=1) + + def hide_tooltip(self): + tw = self.tipwindow + self.tipwindow = None + if tw: + tw.destroy() + + +class SynapseGUI: + def __init__(self, root): + self.root = root + self.root.title("Synapse File Manager") + self.root.geometry("800x700") + self.root.resizable(True, True) + + # Configure style + style = ttk.Style() + style.theme_use("clam") # Cross-platform theme + + # Initialize variables + self.syn = None + self.is_logged_in = False + self.logged_in_username = "" + self.operation_queue = queue.Queue() + self.config_file_available = False + + # Create the GUI + self.create_widgets() + + # Start checking for operation results + self.check_queue() + + def create_widgets(self): + """Create all GUI widgets""" + # Main container + main_frame = ttk.Frame(self.root, padding="10") + main_frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S)) + + # Configure grid weights + self.root.columnconfigure(0, weight=1) + self.root.rowconfigure(0, weight=1) + main_frame.columnconfigure(0, weight=1) + main_frame.rowconfigure(3, weight=1) + + # Title + title_label = ttk.Label( + main_frame, text="Synapse File Manager", font=("Arial", 16, "bold") + ) + title_label.grid(row=0, column=0, pady=(0, 20)) + + # Login Section + self.create_login_section(main_frame) + + # Operation Tabs + self.create_operation_tabs(main_frame) + + # Output Section + self.create_output_section(main_frame) + + # Status Bar + self.create_status_bar(main_frame) + + def create_login_section(self, parent): + """Create login section with multi-profile support""" + login_frame = ttk.LabelFrame(parent, text="Login", padding="10") + login_frame.grid(row=1, column=0, sticky=(tk.W, tk.E), pady=(0, 10)) + login_frame.columnconfigure(1, weight=1) + + # Check if config file is available to determine default mode + available_profiles = get_available_profiles() + self.config_file_available = len(available_profiles) > 0 + default_mode = "config" if self.config_file_available else "manual" + + # Login mode selection + mode_frame = ttk.Frame(login_frame) + mode_frame.grid( + row=0, column=0, columnspan=3, sticky=(tk.W, tk.E), pady=(0, 10) + ) + + self.login_mode_var = tk.StringVar(value=default_mode) + ttk.Radiobutton( + mode_frame, + text="Manual Login (Username + Token)", + variable=self.login_mode_var, + value="manual", + command=self.on_login_mode_change, + ).grid(row=0, column=0, sticky=tk.W, padx=(0, 20)) + + config_radio = ttk.Radiobutton( + mode_frame, + text="Config File Login", + variable=self.login_mode_var, + value="config", + command=self.on_login_mode_change, + ) + config_radio.grid(row=0, column=1, sticky=tk.W) + + # Add tooltip if no config file available + if not self.config_file_available: + ToolTip(config_radio, "No Synapse config file found at ~/.synapseConfig") + + # Profile selection (for config mode) + self.profile_frame = ttk.Frame(login_frame) + self.profile_frame.grid( + row=1, column=0, columnspan=3, sticky=(tk.W, tk.E), pady=(0, 10) + ) + self.profile_frame.columnconfigure(1, weight=1) + + ttk.Label(self.profile_frame, text="Profile:").grid( + row=0, column=0, sticky=tk.W, padx=(0, 5) + ) + self.profile_var = tk.StringVar() + self.profile_combo = ttk.Combobox( + self.profile_frame, + textvariable=self.profile_var, + state="readonly", + width=25, + ) + self.profile_combo.grid(row=0, column=1, sticky=(tk.W, tk.E), padx=(0, 10)) + self.profile_combo.bind("<>", self.on_profile_selected) + + # Profile info label + self.profile_info_var = tk.StringVar() + self.profile_info_label = ttk.Label( + self.profile_frame, + textvariable=self.profile_info_var, + foreground="blue", + font=("Arial", 8), + ) + self.profile_info_label.grid( + row=1, column=0, columnspan=3, sticky=tk.W, pady=(5, 0) + ) + + # Manual login fields + self.manual_frame = ttk.Frame(login_frame) + self.manual_frame.grid( + row=2, column=0, columnspan=3, sticky=(tk.W, tk.E), pady=(0, 10) + ) + self.manual_frame.columnconfigure(1, weight=1) + + # Username + ttk.Label(self.manual_frame, text="Username/Email:").grid( + row=0, column=0, sticky=tk.W, padx=(0, 5) + ) + self.username_var = tk.StringVar() + self.username_entry = ttk.Entry( + self.manual_frame, textvariable=self.username_var, width=30 + ) + self.username_entry.grid(row=0, column=1, sticky=(tk.W, tk.E), padx=(0, 10)) + + # Auth Token + ttk.Label(self.manual_frame, text="Personal Access Token:").grid( + row=1, column=0, sticky=tk.W, padx=(0, 5), pady=(5, 0) + ) + self.token_var = tk.StringVar() + self.token_entry = ttk.Entry( + self.manual_frame, textvariable=self.token_var, show="*", width=30 + ) + self.token_entry.grid( + row=1, column=1, sticky=(tk.W, tk.E), padx=(0, 10), pady=(5, 0) + ) + + # Login button + self.login_button = ttk.Button( + login_frame, text="Login", command=self.login_logout + ) + self.login_button.grid(row=3, column=0, columnspan=3, pady=(10, 0)) + + # Status indicator + self.login_status_var = tk.StringVar(value="Not logged in") + self.login_status_label = ttk.Label( + login_frame, textvariable=self.login_status_var, foreground="red" + ) + self.login_status_label.grid(row=4, column=0, columnspan=3, pady=(5, 0)) + + # Logged in user info + self.user_info_var = tk.StringVar() + self.user_info_label = ttk.Label( + login_frame, + textvariable=self.user_info_var, + foreground="green", + font=("Arial", 9, "bold"), + ) + self.user_info_label.grid(row=5, column=0, columnspan=3, pady=(5, 0)) + + # Initialize the interface + self.refresh_profiles() + self.on_login_mode_change() + + def create_operation_tabs(self, parent): + """Create tabbed interface for operations""" + self.notebook = ttk.Notebook(parent) + self.notebook.grid( + row=2, column=0, sticky=(tk.W, tk.E, tk.N, tk.S), pady=(0, 10) + ) + + # Download tab + self.download_frame = ttk.Frame(self.notebook, padding="10") + self.notebook.add(self.download_frame, text="Download File") + self.create_download_tab() + + # Upload tab + self.upload_frame = ttk.Frame(self.notebook, padding="10") + self.notebook.add(self.upload_frame, text="Upload File") + self.create_upload_tab() + + def create_download_tab(self): + """Create download tab widgets""" + # Synapse ID + ttk.Label(self.download_frame, text="Synapse ID:").grid( + row=0, column=0, sticky=tk.W, pady=(0, 5) + ) + self.download_id_var = tk.StringVar() + download_id_entry = ttk.Entry( + self.download_frame, textvariable=self.download_id_var, width=40 + ) + download_id_entry.grid( + row=0, column=1, sticky=(tk.W, tk.E), pady=(0, 5), padx=(10, 0) + ) + + # Version (optional) + ttk.Label(self.download_frame, text="Version (optional):").grid( + row=1, column=0, sticky=tk.W, pady=(0, 5) + ) + self.download_version_var = tk.StringVar() + download_version_entry = ttk.Entry( + self.download_frame, textvariable=self.download_version_var, width=40 + ) + download_version_entry.grid( + row=1, column=1, sticky=(tk.W, tk.E), pady=(0, 5), padx=(10, 0) + ) + + # Download location + ttk.Label(self.download_frame, text="Download Location:").grid( + row=2, column=0, sticky=tk.W, pady=(0, 5) + ) + + location_frame = ttk.Frame(self.download_frame) + location_frame.grid( + row=2, column=1, sticky=(tk.W, tk.E), pady=(0, 5), padx=(10, 0) + ) + location_frame.columnconfigure(0, weight=1) + + self.download_location_var = tk.StringVar(value=str(Path.home() / "Downloads")) + download_location_entry = ttk.Entry( + location_frame, textvariable=self.download_location_var + ) + download_location_entry.grid(row=0, column=0, sticky=(tk.W, tk.E), padx=(0, 5)) + + browse_button = ttk.Button( + location_frame, text="Browse", command=self.browse_download_location + ) + browse_button.grid(row=0, column=1) + + # Download button + self.download_button = ttk.Button( + self.download_frame, + text="Download File", + command=self.download_file, + state="disabled", + ) + self.download_button.grid(row=3, column=0, columnspan=2, pady=(20, 0)) + + # Progress bar for downloads + self.download_progress_var = tk.StringVar(value="") + self.download_progress_label = ttk.Label( + self.download_frame, + textvariable=self.download_progress_var, + foreground="blue", + font=("Arial", 8), + ) + self.download_progress_label.grid(row=4, column=0, columnspan=2, pady=(5, 0)) + + self.download_progress_bar = ttk.Progressbar( + self.download_frame, mode="determinate" + ) + self.download_progress_bar.grid( + row=5, column=0, columnspan=2, sticky=(tk.W, tk.E), pady=(5, 0) + ) + + # Configure grid weights + self.download_frame.columnconfigure(1, weight=1) + + def create_upload_tab(self): + """Create upload tab widgets""" + # File selection + ttk.Label(self.upload_frame, text="File to Upload:").grid( + row=0, column=0, sticky=tk.W, pady=(0, 5) + ) + + file_frame = ttk.Frame(self.upload_frame) + file_frame.grid(row=0, column=1, sticky=(tk.W, tk.E), pady=(0, 5), padx=(10, 0)) + file_frame.columnconfigure(0, weight=1) + + self.upload_file_var = tk.StringVar() + upload_file_entry = ttk.Entry(file_frame, textvariable=self.upload_file_var) + upload_file_entry.grid(row=0, column=0, sticky=(tk.W, tk.E), padx=(0, 5)) + + browse_file_button = ttk.Button( + file_frame, text="Browse", command=self.browse_upload_file + ) + browse_file_button.grid(row=0, column=1) + + # Upload mode selection + mode_frame = ttk.LabelFrame(self.upload_frame, text="Upload Mode", padding="10") + mode_frame.grid( + row=1, column=0, columnspan=2, sticky=(tk.W, tk.E), pady=(10, 0) + ) + mode_frame.columnconfigure(1, weight=1) + + self.upload_mode_var = tk.StringVar(value="new") + + new_radio = ttk.Radiobutton( + mode_frame, + text="Create New File", + variable=self.upload_mode_var, + value="new", + command=self.on_upload_mode_change, + ) + new_radio.grid(row=0, column=0, sticky=tk.W, pady=(0, 5)) + + update_radio = ttk.Radiobutton( + mode_frame, + text="Update Existing File", + variable=self.upload_mode_var, + value="update", + command=self.on_upload_mode_change, + ) + update_radio.grid(row=1, column=0, sticky=tk.W) + + # Parent ID / Entity ID fields + self.parent_label = ttk.Label(mode_frame, text="Parent ID (Project/Folder):") + self.parent_label.grid(row=0, column=1, sticky=tk.W, padx=(20, 5), pady=(0, 5)) + + self.parent_id_var = tk.StringVar() + self.parent_id_entry = ttk.Entry( + mode_frame, textvariable=self.parent_id_var, width=30 + ) + self.parent_id_entry.grid(row=0, column=2, sticky=(tk.W, tk.E), pady=(0, 5)) + + self.entity_label = ttk.Label(mode_frame, text="Entity ID to Update:") + self.entity_label.grid(row=1, column=1, sticky=tk.W, padx=(20, 5)) + + self.entity_id_var = tk.StringVar() + self.entity_id_entry = ttk.Entry( + mode_frame, textvariable=self.entity_id_var, width=30, state="disabled" + ) + self.entity_id_entry.grid(row=1, column=2, sticky=(tk.W, tk.E)) + + # File name + ttk.Label(self.upload_frame, text="Entity Name (optional):").grid( + row=2, column=0, sticky=tk.W, pady=(10, 5) + ) + self.upload_name_var = tk.StringVar() + upload_name_entry = ttk.Entry( + self.upload_frame, textvariable=self.upload_name_var, width=40 + ) + upload_name_entry.grid( + row=2, column=1, sticky=(tk.W, tk.E), pady=(10, 5), padx=(10, 0) + ) + + # Upload button + self.upload_button = ttk.Button( + self.upload_frame, + text="Upload File", + command=self.upload_file, + state="disabled", + ) + self.upload_button.grid(row=3, column=0, columnspan=2, pady=(20, 0)) + + # Progress bar for uploads + self.upload_progress_var = tk.StringVar(value="") + self.upload_progress_label = ttk.Label( + self.upload_frame, + textvariable=self.upload_progress_var, + foreground="blue", + font=("Arial", 8), + ) + self.upload_progress_label.grid(row=4, column=0, columnspan=2, pady=(5, 0)) + + self.upload_progress_bar = ttk.Progressbar( + self.upload_frame, mode="determinate" + ) + self.upload_progress_bar.grid( + row=5, column=0, columnspan=2, sticky=(tk.W, tk.E), pady=(5, 0) + ) + + # Configure grid weights + self.upload_frame.columnconfigure(1, weight=1) + mode_frame.columnconfigure(2, weight=1) + + def create_output_section(self, parent): + """Create output/log section""" + output_frame = ttk.LabelFrame(parent, text="Output", padding="5") + output_frame.grid( + row=3, column=0, sticky=(tk.W, tk.E, tk.N, tk.S), pady=(0, 10) + ) + output_frame.columnconfigure(0, weight=1) + output_frame.rowconfigure(0, weight=1) + + self.output_text = scrolledtext.ScrolledText( + output_frame, height=20, wrap=tk.WORD, font=("Consolas", 9) + ) + self.output_text.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S)) + + # Clear button + clear_button = ttk.Button( + output_frame, text="Clear Output", command=self.clear_output + ) + clear_button.grid(row=1, column=0, pady=(5, 0)) + + def create_status_bar(self, parent): + """Create status bar""" + self.status_var = tk.StringVar(value="Ready") + status_bar = ttk.Label(parent, textvariable=self.status_var, relief=tk.SUNKEN) + status_bar.grid(row=4, column=0, sticky=(tk.W, tk.E)) + + def log_output(self, message, error=False): + """Add message to output text widget""" + self.output_text.insert(tk.END, f"{message}\n") + self.output_text.see(tk.END) + if error: + # Color the last line red for errors + line_start = self.output_text.index("end-1c linestart") + line_end = self.output_text.index("end-1c lineend") + self.output_text.tag_add("error", line_start, line_end) + self.output_text.tag_config("error", foreground="red") + self.root.update_idletasks() + + def clear_output(self): + """Clear the output text widget""" + self.output_text.delete(1.0, tk.END) + + def browse_download_location(self): + """Browse for download directory""" + directory = filedialog.askdirectory(initialdir=self.download_location_var.get()) + if directory: + self.download_location_var.set(directory) + + def browse_upload_file(self): + """Browse for file to upload""" + file_path = filedialog.askopenfilename( + title="Select file to upload", initialdir=str(Path.home()) + ) + if file_path: + self.upload_file_var.set(file_path) + # Auto-fill name if empty + if not self.upload_name_var.get(): + self.upload_name_var.set(Path(file_path).name) + + def on_upload_mode_change(self): + """Handle upload mode radio button changes""" + mode = self.upload_mode_var.get() + if mode == "new": + self.parent_id_entry.config(state="normal") + self.entity_id_entry.config(state="disabled") + self.entity_id_var.set("") + else: # update + self.parent_id_entry.config(state="disabled") + self.entity_id_entry.config(state="normal") + self.parent_id_var.set("") + + def on_login_mode_change(self): + """Handle login mode radio button changes""" + mode = self.login_mode_var.get() + if mode == "manual": + # Show manual login fields, hide profile selection + self.manual_frame.grid() + self.profile_frame.grid_remove() + else: # config + # Show profile selection, hide manual login fields + self.manual_frame.grid_remove() + self.profile_frame.grid() + self.refresh_profiles() + + def refresh_profiles(self): + """Refresh the list of available profiles""" + try: + profiles = get_available_profiles() + if profiles: + self.profile_combo["values"] = profiles + if not self.profile_var.get() or self.profile_var.get() not in profiles: + self.profile_var.set(profiles[0]) + self.on_profile_selected() + else: + self.profile_combo["values"] = [] + self.profile_var.set("") + self.profile_info_var.set("No profiles found in config file") + except Exception as e: + self.profile_combo["values"] = [] + self.profile_var.set("") + self.profile_info_var.set(f"Error reading config: {str(e)}") + + def on_profile_selected(self, event=None): + """Handle profile selection""" + profile_name = self.profile_var.get() + if profile_name: + username = get_profile_info(profile_name) + if username: + self.profile_info_var.set(f"Username: {username}") + else: + self.profile_info_var.set("No username found for this profile") + else: + self.profile_info_var.set("") + + def login_logout(self): + """Handle login/logout button click""" + if self.is_logged_in: + self.logout() + else: + self.login() + + def logout(self): + """Logout from Synapse""" + try: + if self.syn: + self.syn.logout() + self.syn = None + self.is_logged_in = False + self.logged_in_username = "" + + # Update UI + self.login_status_var.set("Logged out") + self.login_status_label.config(foreground="red") + self.login_button.config(text="Login") + self.user_info_var.set("") + self.download_button.config(state="disabled") + self.upload_button.config(state="disabled") + self.status_var.set("Ready") + self.log_output("Logged out successfully") + + except Exception as e: + self.log_output(f"Logout error: {e}", error=True) + + def login(self): + """Login to Synapse with support for both manual and config file authentication""" + + def login_worker(): + try: + self.log_output("Attempting to login...") + self.syn = synapseclient.Synapse(skip_checks=True) + + mode = self.login_mode_var.get() + + if mode == "manual": + # Manual login with username and token + username = self.username_var.get().strip() + token = self.token_var.get().strip() + + if not token: + raise ValueError( + "Personal Access Token is required for manual login" + ) + + # Use email parameter for username when provided to ensure compliance + if username: + self.syn.login(email=username, authToken=token, silent=True) + else: + self.syn.login(authToken=token, silent=True) + + else: # config mode + # Config file login with profile + profile_name = self.profile_var.get() + if not profile_name: + raise ValueError("Please select a profile") + + # Clean profile name for login + if profile_name == "authentication (legacy)": + # Use None to let Synapse handle legacy authentication section + self.syn.login(silent=True) + else: + # Use the specific profile + self.syn.login(profile=profile_name, silent=True) + + # Get the logged-in username from the Synapse client + username = getattr(self.syn, "username", None) or getattr( + self.syn, "email", "Unknown User" + ) + self.operation_queue.put( + ( + "login_success", + f"Login successful! Logged in as: {username}", + username, + ) + ) + + except Exception as e: + self.operation_queue.put(("login_error", str(e))) + + # Disable login button during login attempt + self.login_button.config(state="disabled") + self.status_var.set("Logging in...") + + # Run login in separate thread + threading.Thread(target=login_worker, daemon=True).start() + + def download_file(self): + """Download file from Synapse""" + + def download_worker(): + try: + synapse_id = self.download_id_var.get().strip() + version = self.download_version_var.get().strip() + download_path = self.download_location_var.get().strip() + + if not synapse_id: + raise ValueError("Synapse ID is required") + + version_num = None + if version: + try: + version_num = int(version) + except ValueError: + raise ValueError("Version must be a number") + + self.operation_queue.put(("status", f"Downloading {synapse_id}...")) + self.operation_queue.put(("progress_start", "download")) + + # Capture TQDM progress output + progress_capture = TQDMProgressCapture(self.operation_queue) + + # Redirect stderr to capture TQDM output + import sys + + original_stderr = sys.stderr + sys.stderr = progress_capture + + try: + file_obj = File( + id=synapse_id, + version_number=version_num, + path=download_path, + download_file=True, + ) + + file_obj = file_obj.get(synapse_client=self.syn) + + if file_obj.path and os.path.exists(file_obj.path): + self.operation_queue.put( + ("download_success", f"Downloaded: {file_obj.path}") + ) + else: + self.operation_queue.put( + ( + "download_error", + f"No files associated with entity {synapse_id}", + ) + ) + finally: + # Restore original stderr + sys.stderr = original_stderr + self.operation_queue.put(("progress_end", "download")) + + except Exception as e: + self.operation_queue.put(("download_error", str(e))) + self.operation_queue.put(("progress_end", "download")) + + if not self.is_logged_in: + messagebox.showerror("Error", "Please log in first") + return + + # Reset progress indicators and set operation context + self.download_progress_var.set("") + self.download_progress_bar["value"] = 0 + self._current_operation = "download" + + # Run download in separate thread + threading.Thread(target=download_worker, daemon=True).start() + + def upload_file(self): + """Upload file to Synapse""" + + def upload_worker(): + try: + file_path = self.upload_file_var.get().strip() + name = self.upload_name_var.get().strip() + mode = self.upload_mode_var.get() + + if not file_path: + raise ValueError("File path is required") + + if not os.path.exists(file_path): + raise ValueError(f"File does not exist: {file_path}") + + self.operation_queue.put(("status", f"Uploading {file_path}...")) + self.operation_queue.put(("progress_start", "upload")) + + # Capture TQDM progress output + progress_capture = TQDMProgressCapture(self.operation_queue) + + # Redirect stderr to capture TQDM output + import sys + + original_stderr = sys.stderr + sys.stderr = progress_capture + + try: + if mode == "new": + parent_id = self.parent_id_var.get().strip() + if not parent_id: + raise ValueError("Parent ID is required for new files") + + file_obj = File( + path=file_path, + name=name or utils.guess_file_name(file_path), + parent_id=parent_id, + ) + else: # update + entity_id = self.entity_id_var.get().strip() + if not entity_id: + raise ValueError("Entity ID is required for updates") + + file_obj = File( + id=entity_id, path=file_path, name=name, download_file=False + ) + file_obj = file_obj.get(synapse_client=self.syn) + file_obj.path = file_path + if name: + file_obj.name = name + + file_obj = file_obj.store(synapse_client=self.syn) + msg = f"Created/Updated entity: {file_obj.id} - {file_obj.name}" + self.operation_queue.put(("upload_success", msg)) + finally: + # Restore original stderr + sys.stderr = original_stderr + self.operation_queue.put(("progress_end", "upload")) + + except Exception as e: + self.operation_queue.put(("upload_error", str(e))) + self.operation_queue.put(("progress_end", "upload")) + + if not self.is_logged_in: + messagebox.showerror("Error", "Please log in first") + return + + # Reset progress indicators and set operation context + self.upload_progress_var.set("") + self.upload_progress_bar["value"] = 0 + self._current_operation = "upload" + + # Run upload in separate thread + threading.Thread(target=upload_worker, daemon=True).start() + + def check_queue(self): + """Check for operation results from background threads""" + try: + while True: + result = self.operation_queue.get_nowait() + + # Handle different result formats + if len(result) == 2: + operation_type, message = result + username = None + progress = None + elif len(result) == 3: + operation_type, message, username_or_progress = result + if operation_type == "progress": + username = None + progress = username_or_progress + else: + username = username_or_progress + progress = None + else: + continue + + if operation_type == "login_success": + self.is_logged_in = True + if username: + self.logged_in_username = username + self.user_info_var.set(f"Logged in as: {username}") + else: + self.user_info_var.set("Logged in successfully") + self.login_status_var.set("Logged in successfully") + self.login_status_label.config(foreground="green") + self.login_button.config(text="Logout", state="normal") + self.download_button.config(state="normal") + self.upload_button.config(state="normal") + self.status_var.set("Ready") + self.log_output(message) + + elif operation_type == "login_error": + self.is_logged_in = False + self.logged_in_username = "" + self.user_info_var.set("") + self.login_status_var.set(f"Login failed: {message}") + self.login_status_label.config(foreground="red") + self.login_button.config(text="Login", state="normal") + self.status_var.set("Ready") + self.log_output(f"Login failed: {message}", error=True) + + elif operation_type == "progress_start": + if message == "download": + self.download_progress_var.set("Preparing download...") + self.download_progress_bar["value"] = 0 + elif message == "upload": + self.upload_progress_var.set("Preparing upload...") + self.upload_progress_bar["value"] = 0 + + elif operation_type == "progress": + # Update progress bars based on current operation + if progress is not None: + # Determine which progress bar to update based on which operation is active + if hasattr(self, "_current_operation"): + if self._current_operation == "download": + self.download_progress_bar["value"] = progress + self.download_progress_var.set(message) + elif self._current_operation == "upload": + self.upload_progress_bar["value"] = progress + self.upload_progress_var.set(message) + else: + # Fallback: update both (shouldn't happen in normal operation) + self.download_progress_bar["value"] = progress + self.upload_progress_bar["value"] = progress + + elif operation_type == "progress_detail": + # Log detailed progress information + self.log_output(message) + + elif operation_type == "progress_end": + if message == "download": + self.download_progress_var.set("") + self.download_progress_bar["value"] = 0 + if ( + hasattr(self, "_current_operation") + and self._current_operation == "download" + ): + delattr(self, "_current_operation") + elif message == "upload": + self.upload_progress_var.set("") + self.upload_progress_bar["value"] = 0 + if ( + hasattr(self, "_current_operation") + and self._current_operation == "upload" + ): + delattr(self, "_current_operation") + + elif operation_type == "download_success": + self.status_var.set("Download completed") + self.log_output(message) + self.download_progress_var.set("Download completed") + self.download_progress_bar["value"] = 100 + messagebox.showinfo("Success", message) + + elif operation_type == "download_error": + self.status_var.set("Download failed") + self.log_output(f"Download failed: {message}", error=True) + self.download_progress_var.set("Download failed") + self.download_progress_bar["value"] = 0 + messagebox.showerror("Download Error", message) + + elif operation_type == "upload_success": + self.status_var.set("Upload completed") + self.log_output(message) + self.upload_progress_var.set("Upload completed") + self.upload_progress_bar["value"] = 100 + messagebox.showinfo("Success", message) + + elif operation_type == "upload_error": + self.status_var.set("Upload failed") + self.log_output(f"Upload failed: {message}", error=True) + self.upload_progress_var.set("Upload failed") + self.upload_progress_bar["value"] = 0 + messagebox.showerror("Upload Error", message) + + elif operation_type == "status": + self.status_var.set(message) + self.log_output(message) + + except queue.Empty: + pass + + # Schedule next check + self.root.after(100, self.check_queue) + + +def main(): + """Main function to run the GUI""" + root = tk.Tk() + SynapseGUI(root) + + # Center the window + root.update_idletasks() + width = root.winfo_width() + height = root.winfo_height() + x = (root.winfo_screenwidth() // 2) - (width // 2) + y = (root.winfo_screenheight() // 2) - (height // 2) + root.geometry(f"{width}x{height}+{x}+{y}") + + try: + root.mainloop() + except KeyboardInterrupt: + pass + + +if __name__ == "__main__": + main() From c1895e467154f5e2bde9cd2f258518dac5c5d098 Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Mon, 11 Aug 2025 16:31:38 +0000 Subject: [PATCH 03/46] Fix package installation command in build scripts for consistency --- synapsegui/build.sh | 2 +- synapsegui/build_windows_native_gui.bat | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/synapsegui/build.sh b/synapsegui/build.sh index b2e7e4f4d..85117de70 100755 --- a/synapsegui/build.sh +++ b/synapsegui/build.sh @@ -17,7 +17,7 @@ echo "Building Synapse Desktop Client..." # Install required packages echo "Installing required packages..." uv pip install pyinstaller -uv pip install -e . +uv pip install -e .. # Clean previous builds echo "Cleaning previous builds..." diff --git a/synapsegui/build_windows_native_gui.bat b/synapsegui/build_windows_native_gui.bat index 95795204a..fb2058cfd 100644 --- a/synapsegui/build_windows_native_gui.bat +++ b/synapsegui/build_windows_native_gui.bat @@ -12,7 +12,7 @@ REM Install required packages echo Installing required packages... call .venv\Scripts\activate uv pip install pyinstaller -uv pip install -e . +uv pip install -e .. if errorlevel 1 ( echo ERROR: Failed to install dependencies From 24f45f7b971c97fda1b34faf71a44adaf78b8dfb Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Mon, 11 Aug 2025 16:41:13 +0000 Subject: [PATCH 04/46] Refactor build scripts to improve Windows compatibility and remove executable tests --- .github/workflows/build.yml | 24 +++++++++++++++--------- synapsegui/build.sh | 9 --------- synapsegui/build_windows_native_gui.bat | 10 ---------- 3 files changed, 15 insertions(+), 28 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ea9151825..ccc8e5ff3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -383,8 +383,10 @@ jobs: - name: Install uv (Windows) if: runner.os == 'Windows' + shell: powershell run: | - curl -LsSf https://astral.sh/uv/install.ps1 | powershell -c - + irm https://astral.sh/uv/install.ps1 | iex + $env:PATH = "$env:USERPROFILE\.cargo\bin;$env:PATH" echo "$env:USERPROFILE\.cargo\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - name: Install uv (macOS) @@ -393,17 +395,21 @@ jobs: curl -LsSf https://astral.sh/uv/install.sh | sh echo "$HOME/.cargo/bin" >> $GITHUB_PATH - - name: Create virtual environment + - name: Create virtual environment (Windows) + if: runner.os == 'Windows' + shell: cmd + run: | + %USERPROFILE%\.cargo\bin\uv.exe venv .venv + echo VIRTUAL_ENV=%CD%\.venv >> %GITHUB_ENV% + echo %CD%\.venv\Scripts >> %GITHUB_PATH% + + - name: Create virtual environment (Unix) + if: runner.os != 'Windows' shell: bash run: | uv venv .venv - if [[ "${{ runner.os }}" == "Windows" ]]; then - echo "VIRTUAL_ENV=$PWD/.venv" >> $GITHUB_ENV - echo "$PWD/.venv/Scripts" >> $GITHUB_PATH - else - echo "VIRTUAL_ENV=$PWD/.venv" >> $GITHUB_ENV - echo "$PWD/.venv/bin" >> $GITHUB_PATH - fi + echo "VIRTUAL_ENV=$PWD/.venv" >> $GITHUB_ENV + echo "$PWD/.venv/bin" >> $GITHUB_PATH - name: Extract tag name shell: bash diff --git a/synapsegui/build.sh b/synapsegui/build.sh index 85117de70..092466817 100755 --- a/synapsegui/build.sh +++ b/synapsegui/build.sh @@ -50,15 +50,6 @@ build_for_platform() { if [ -f "dist/$output_name" ]; then echo "✓ Build successful: dist/$output_name" echo "File size: $(du -h dist/$output_name | cut -f1)" - - # Test the executable - echo "Testing executable..." - if ./dist/$output_name --help > /dev/null 2>&1; then - echo "✓ Executable test passed" - else - echo "✗ Executable test failed" - return 1 - fi else echo "✗ Build failed: dist/$output_name not found" return 1 diff --git a/synapsegui/build_windows_native_gui.bat b/synapsegui/build_windows_native_gui.bat index fb2058cfd..465351313 100644 --- a/synapsegui/build_windows_native_gui.bat +++ b/synapsegui/build_windows_native_gui.bat @@ -46,16 +46,6 @@ echo Executable location: dist\synapse-desktop-client%SUFFIX%.exe REM Show file size for %%I in (dist\synapse-desktop-client%SUFFIX%.exe) do echo File size: %%~zI bytes -REM Test the executable (GUI mode - just check if it exists and runs briefly) -echo Testing executable... -if exist dist\synapse-desktop-client%SUFFIX%.exe ( - echo ✓ Executable created successfully - echo Note: This is a GUI application - double-click to run the interface -) else ( - echo ✗ Executable not found - exit /b 1 -) - echo. echo SUCCESS: Synapse Desktop Client built! echo. From 72b3f8edbacdf74fe80424528ae18df117de731b Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Mon, 11 Aug 2025 16:53:28 +0000 Subject: [PATCH 05/46] Remove uv command from build scripts and clean up Windows installation process --- .github/workflows/build.yml | 31 ------------------------- synapsegui/build.sh | 26 ++------------------- synapsegui/build_windows_native_gui.bat | 5 ++-- 3 files changed, 4 insertions(+), 58 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ccc8e5ff3..93e293697 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -380,37 +380,6 @@ jobs: - uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - - - name: Install uv (Windows) - if: runner.os == 'Windows' - shell: powershell - run: | - irm https://astral.sh/uv/install.ps1 | iex - $env:PATH = "$env:USERPROFILE\.cargo\bin;$env:PATH" - echo "$env:USERPROFILE\.cargo\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - - - name: Install uv (macOS) - if: runner.os == 'macOS' - run: | - curl -LsSf https://astral.sh/uv/install.sh | sh - echo "$HOME/.cargo/bin" >> $GITHUB_PATH - - - name: Create virtual environment (Windows) - if: runner.os == 'Windows' - shell: cmd - run: | - %USERPROFILE%\.cargo\bin\uv.exe venv .venv - echo VIRTUAL_ENV=%CD%\.venv >> %GITHUB_ENV% - echo %CD%\.venv\Scripts >> %GITHUB_PATH% - - - name: Create virtual environment (Unix) - if: runner.os != 'Windows' - shell: bash - run: | - uv venv .venv - echo "VIRTUAL_ENV=$PWD/.venv" >> $GITHUB_ENV - echo "$PWD/.venv/bin" >> $GITHUB_PATH - - name: Extract tag name shell: bash run: | diff --git a/synapsegui/build.sh b/synapsegui/build.sh index 092466817..ecb500651 100755 --- a/synapsegui/build.sh +++ b/synapsegui/build.sh @@ -16,8 +16,8 @@ echo "Building Synapse Desktop Client..." # Install required packages echo "Installing required packages..." -uv pip install pyinstaller -uv pip install -e .. +pip install pyinstaller +pip install -e .. # Clean previous builds echo "Cleaning previous builds..." @@ -94,25 +94,3 @@ echo "Build(s) complete!" echo "" echo "Available executables:" ls -la dist/synapse-desktop-client-* 2>/dev/null || echo "No executables found" - -echo "" -echo "Usage examples:" -if ls dist/synapse-desktop-client-linux* 1> /dev/null 2>&1; then - local linux_file=$(ls dist/synapse-desktop-client-linux* | head -n1) - echo " ./$linux_file get syn123" - echo " ./$linux_file store myfile.txt --parentid syn456" -fi -if ls dist/synapse-desktop-client-macos* 1> /dev/null 2>&1; then - local macos_file=$(ls dist/synapse-desktop-client-macos* | head -n1) - echo " ./$macos_file get syn123" - echo " ./$macos_file store myfile.txt --parentid syn456" -fi - -echo "" -echo "To install system-wide (Linux/macOS):" -echo " sudo cp dist/synapse-desktop-client-linux* /usr/local/bin/synapse-desktop-client" -echo " sudo cp dist/synapse-desktop-client-macos* /usr/local/bin/synapse-desktop-client" -echo "" -echo "Cross-platform build notes:" -echo "- Linux binary: Works on most Linux distributions" -echo "- macOS binary: Requires macOS to build, works on macOS 10.15+" diff --git a/synapsegui/build_windows_native_gui.bat b/synapsegui/build_windows_native_gui.bat index 465351313..468719bcb 100644 --- a/synapsegui/build_windows_native_gui.bat +++ b/synapsegui/build_windows_native_gui.bat @@ -10,9 +10,8 @@ echo Building Synapse Desktop Client for Windows... REM Install required packages echo Installing required packages... -call .venv\Scripts\activate -uv pip install pyinstaller -uv pip install -e .. +pip install pyinstaller +pip install -e .. if errorlevel 1 ( echo ERROR: Failed to install dependencies From f4acc79f43f82fd6a3f970d72fd51352de9b589c Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Mon, 11 Aug 2025 17:10:33 +0000 Subject: [PATCH 06/46] Refactor build scripts to streamline dependency installation and improve Windows compatibility --- .github/workflows/build.yml | 41 ++++++++++++++++++++++++- synapsegui/build.sh | 5 --- synapsegui/build_windows_native_gui.bat | 5 --- 3 files changed, 40 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 93e293697..90dd0a4f5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -379,7 +379,46 @@ jobs: - uses: actions/setup-python@v5 with: - python-version: ${{ matrix.python-version }} + python-version: '3.11' + + - name: get-dependencies-location + shell: bash + run: | + SITE_PACKAGES_LOCATION=$(python -c "from sysconfig import get_path; print(get_path('purelib'))") + SITE_BIN_DIR=$(python3 -c "import os; import platform; import sysconfig; pre = sysconfig.get_config_var('prefix'); bindir = os.path.join(pre, 'Scripts' if platform.system() == 'Windows' else 'bin'); print(bindir)") + echo "site_packages_loc=$SITE_PACKAGES_LOCATION" >> $GITHUB_OUTPUT + echo "site_bin_dir=$SITE_BIN_DIR" >> $GITHUB_OUTPUT + id: get-dependencies + + - name: Cache py-dependencies + id: cache-dependencies + uses: actions/cache@v4 + env: + cache-name: cache-py-dependencies + with: + path: | + ${{ steps.get-dependencies.outputs.site_packages_loc }} + ${{ steps.get-dependencies.outputs.site_bin_dir }} + key: ${{ runner.os }}-3.11-build-${{ env.cache-name }}-${{ hashFiles('setup.py') }}-desktop-v24 + + - name: Install py-dependencies + if: steps.cache-dependencies.outputs.cache-hit != 'true' + shell: bash + run: | + python -m pip install --upgrade pip + + pip install -e ".[boto3,pandas,pysftp,tests]" + pip install pyinstaller + + # ensure that numpy c extensions are installed on windows + # https://stackoverflow.com/a/59346525 + if [ "${{startsWith(runner.os, 'Windows')}}" == "true" ]; then + pip uninstall -y numpy + pip uninstall -y setuptools + pip install setuptools + pip install numpy + fi + - name: Extract tag name shell: bash run: | diff --git a/synapsegui/build.sh b/synapsegui/build.sh index ecb500651..6605c25e6 100755 --- a/synapsegui/build.sh +++ b/synapsegui/build.sh @@ -14,11 +14,6 @@ SUFFIX=${2:-""} echo "Building Synapse Desktop Client..." -# Install required packages -echo "Installing required packages..." -pip install pyinstaller -pip install -e .. - # Clean previous builds echo "Cleaning previous builds..." rm -rf build/ dist/ *.spec diff --git a/synapsegui/build_windows_native_gui.bat b/synapsegui/build_windows_native_gui.bat index 468719bcb..b98ff9a08 100644 --- a/synapsegui/build_windows_native_gui.bat +++ b/synapsegui/build_windows_native_gui.bat @@ -8,11 +8,6 @@ if not "%SUFFIX%"=="" set SUFFIX=-%SUFFIX% echo Building Synapse Desktop Client for Windows... -REM Install required packages -echo Installing required packages... -pip install pyinstaller -pip install -e .. - if errorlevel 1 ( echo ERROR: Failed to install dependencies exit /b 1 From 6a24763344ae2d468c8a60d5d5fb10b4d28b2418 Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Mon, 11 Aug 2025 20:47:26 +0000 Subject: [PATCH 07/46] Move build to top level --- .github/workflows/build.yml | 71 +++++++------------ synapsegui/build.sh => build.sh | 0 ...ve_gui.bat => build_windows_native_gui.bat | 5 ++ synapsegui/synapse_gui.py => synapse_gui.py | 0 4 files changed, 30 insertions(+), 46 deletions(-) rename synapsegui/build.sh => build.sh (100%) rename synapsegui/build_windows_native_gui.bat => build_windows_native_gui.bat (91%) rename synapsegui/synapse_gui.py => synapse_gui.py (100%) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 90dd0a4f5..c7d9019f6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -54,7 +54,8 @@ jobs: # if changing the below change the run-integration-tests versions and the check-deploy versions # Make sure that we are running the integration tests on the first and last versions of the matrix - python: ['3.9', '3.10', '3.11', '3.12', '3.13'] + # python: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python: ['3.13'] runs-on: ${{ matrix.os }} @@ -346,7 +347,7 @@ jobs: # build standalone desktop client artifacts for Windows and macOS on release build-desktop-clients: needs: [test, pre-commit] - if: github.event_name == 'release' + # if: github.event_name == 'release' strategy: matrix: @@ -377,66 +378,43 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: '3.11' - - - name: get-dependencies-location - shell: bash - run: | - SITE_PACKAGES_LOCATION=$(python -c "from sysconfig import get_path; print(get_path('purelib'))") - SITE_BIN_DIR=$(python3 -c "import os; import platform; import sysconfig; pre = sysconfig.get_config_var('prefix'); bindir = os.path.join(pre, 'Scripts' if platform.system() == 'Windows' else 'bin'); print(bindir)") - echo "site_packages_loc=$SITE_PACKAGES_LOCATION" >> $GITHUB_OUTPUT - echo "site_bin_dir=$SITE_BIN_DIR" >> $GITHUB_OUTPUT - id: get-dependencies - - - name: Cache py-dependencies - id: cache-dependencies - uses: actions/cache@v4 - env: - cache-name: cache-py-dependencies + - name: Install uv and set the python version + uses: astral-sh/setup-uv@v6 with: - path: | - ${{ steps.get-dependencies.outputs.site_packages_loc }} - ${{ steps.get-dependencies.outputs.site_bin_dir }} - key: ${{ runner.os }}-3.11-build-${{ env.cache-name }}-${{ hashFiles('setup.py') }}-desktop-v24 + python-version: 3.13 - name: Install py-dependencies - if: steps.cache-dependencies.outputs.cache-hit != 'true' shell: bash run: | - python -m pip install --upgrade pip - - pip install -e ".[boto3,pandas,pysftp,tests]" - pip install pyinstaller + uv pip install -e ".[boto3,pandas,pysftp,tests]" + uv pip install pyinstaller # ensure that numpy c extensions are installed on windows # https://stackoverflow.com/a/59346525 if [ "${{startsWith(runner.os, 'Windows')}}" == "true" ]; then - pip uninstall -y numpy - pip uninstall -y setuptools - pip install setuptools - pip install numpy + uv pip uninstall -y numpy + uv pip uninstall -y setuptools + uv pip install setuptools + uv pip install numpy fi - name: Extract tag name shell: bash + # TAG_NAME="${{ github.event.release.tag_name }}" run: | - TAG_NAME="${{ github.event.release.tag_name }}" + TAG_NAME="beta-01" # Remove 'v' prefix if it exists TAG_CLEAN=${TAG_NAME#v} echo "TAG_CLEAN=$TAG_CLEAN" >> $GITHUB_ENV - name: Build Windows Desktop Client if: matrix.platform == 'windows' - working-directory: synapsegui shell: cmd run: | call build_windows_native_gui.bat %TAG_CLEAN% - name: Build macOS Desktop Client if: matrix.platform == 'macos' - working-directory: synapsegui shell: bash run: | chmod +x build.sh @@ -446,22 +424,22 @@ jobs: if: matrix.platform == 'windows' shell: bash run: | - cd synapsegui/dist + cd dist ARTIFACT_FILE=$(ls synapse-desktop-client*.exe | head -n1) FINAL_NAME="${{ matrix.artifact-name }}-${{ env.TAG_CLEAN }}.exe" mv "$ARTIFACT_FILE" "$FINAL_NAME" - echo "ARTIFACT_PATH=synapsegui/dist/$FINAL_NAME" >> $GITHUB_ENV + echo "ARTIFACT_PATH=dist/$FINAL_NAME" >> $GITHUB_ENV echo "ARTIFACT_NAME=$FINAL_NAME" >> $GITHUB_ENV - name: Prepare artifact (macOS) if: matrix.platform == 'macos' shell: bash run: | - cd synapsegui/dist + cd dist ARTIFACT_FILE=$(ls synapse-desktop-client-macos* | head -n1) FINAL_NAME="${{ matrix.artifact-name }}-${{ env.TAG_CLEAN }}" mv "$ARTIFACT_FILE" "$FINAL_NAME" - echo "ARTIFACT_PATH=synapsegui/dist/$FINAL_NAME" >> $GITHUB_ENV + echo "ARTIFACT_PATH=dist/$FINAL_NAME" >> $GITHUB_ENV echo "ARTIFACT_NAME=$FINAL_NAME" >> $GITHUB_ENV - name: Upload build artifact @@ -470,12 +448,13 @@ jobs: name: ${{ env.ARTIFACT_NAME }} path: ${{ env.ARTIFACT_PATH }} - - name: Upload to GitHub Release - uses: softprops/action-gh-release@v1 - with: - files: ${{ env.ARTIFACT_PATH }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # Commented out for testing - only upload to action run, not GitHub release + # - name: Upload to GitHub Release + # uses: softprops/action-gh-release@v1 + # with: + # files: ${{ env.ARTIFACT_PATH }} + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # re-download the built package to the appropriate pypi server. diff --git a/synapsegui/build.sh b/build.sh similarity index 100% rename from synapsegui/build.sh rename to build.sh diff --git a/synapsegui/build_windows_native_gui.bat b/build_windows_native_gui.bat similarity index 91% rename from synapsegui/build_windows_native_gui.bat rename to build_windows_native_gui.bat index b98ff9a08..379e88ed7 100644 --- a/synapsegui/build_windows_native_gui.bat +++ b/build_windows_native_gui.bat @@ -8,6 +8,11 @@ if not "%SUFFIX%"=="" set SUFFIX=-%SUFFIX% echo Building Synapse Desktop Client for Windows... +REM Install required packages +echo Installing required packages... +uv pip install pyinstaller +uv pip install -e . + if errorlevel 1 ( echo ERROR: Failed to install dependencies exit /b 1 diff --git a/synapsegui/synapse_gui.py b/synapse_gui.py similarity index 100% rename from synapsegui/synapse_gui.py rename to synapse_gui.py From b4adef48cad6464371af0b839a92c0027e45744d Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Mon, 11 Aug 2025 20:51:44 +0000 Subject: [PATCH 08/46] Set UV_SYSTEM_PYTHON environment variable for desktop client build --- .github/workflows/build.yml | 42 +++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c7d9019f6..52389e437 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -103,27 +103,27 @@ jobs: pip install numpy fi - - name: run-unit-tests - shell: bash - run: | - pytest -sv --cov-append --cov=. --cov-report xml tests/unit - - name: Check for Secret availability - id: secret-check - if: ${{ contains(fromJSON('["3.9"]'), matrix.python) || contains(fromJSON('["3.13"]'), matrix.python) }} - # perform secret check & put boolean result as an output - shell: bash - run: | - if [ -z "${{ secrets.encrypted_d17283647768_key }}" ] || [ -z "${{ secrets.encrypted_d17283647768_iv }}" ]; then - echo "secrets_available=false" >> $GITHUB_OUTPUT; - else - echo "secrets_available=true" >> $GITHUB_OUTPUT; - fi + # - name: run-unit-tests + # shell: bash + # run: | + # pytest -sv --cov-append --cov=. --cov-report xml tests/unit + # - name: Check for Secret availability + # id: secret-check + # if: ${{ contains(fromJSON('["3.9"]'), matrix.python) || contains(fromJSON('["3.13"]'), matrix.python) }} + # # perform secret check & put boolean result as an output + # shell: bash + # run: | + # if [ -z "${{ secrets.encrypted_d17283647768_key }}" ] || [ -z "${{ secrets.encrypted_d17283647768_iv }}" ]; then + # echo "secrets_available=false" >> $GITHUB_OUTPUT; + # else + # echo "secrets_available=true" >> $GITHUB_OUTPUT; + # fi - if [ -z "${{ secrets.synapse_personal_access_token }}" ]; then - echo "synapse_pat_available=false" >> $GITHUB_OUTPUT; - else - echo "synapse_pat_available=true" >> $GITHUB_OUTPUT; - fi + # if [ -z "${{ secrets.synapse_personal_access_token }}" ]; then + # echo "synapse_pat_available=false" >> $GITHUB_OUTPUT; + # else + # echo "synapse_pat_available=true" >> $GITHUB_OUTPUT; + # fi # run integration tests iff the decryption keys for the test configuration are available. # they will not be available in pull requests from forks. @@ -374,6 +374,8 @@ jobs: artifact-name: synapse-desktop-client-macos-apple-silicon runs-on: ${{ matrix.os }} + env: + UV_SYSTEM_PYTHON: 1 steps: - uses: actions/checkout@v4 From 65187466559372585a059728820029cde76a9960 Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Mon, 11 Aug 2025 20:58:20 +0000 Subject: [PATCH 09/46] Remove UV_SYSTEM_PYTHON environment variable and enable environment activation in build workflow --- .github/workflows/build.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 52389e437..d5fd3a631 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -374,8 +374,6 @@ jobs: artifact-name: synapse-desktop-client-macos-apple-silicon runs-on: ${{ matrix.os }} - env: - UV_SYSTEM_PYTHON: 1 steps: - uses: actions/checkout@v4 @@ -383,6 +381,7 @@ jobs: - name: Install uv and set the python version uses: astral-sh/setup-uv@v6 with: + activate-environment: true python-version: 3.13 - name: Install py-dependencies From 7abe4ceeec46abbae9855a02a7b5754234d232a3 Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Mon, 11 Aug 2025 21:01:15 +0000 Subject: [PATCH 10/46] Refactor Windows dependency uninstallation commands to remove redundant flags --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d5fd3a631..1ef493829 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -393,8 +393,8 @@ jobs: # ensure that numpy c extensions are installed on windows # https://stackoverflow.com/a/59346525 if [ "${{startsWith(runner.os, 'Windows')}}" == "true" ]; then - uv pip uninstall -y numpy - uv pip uninstall -y setuptools + uv pip uninstall numpy + uv pip uninstall setuptools uv pip install setuptools uv pip install numpy fi From 673305bf525d08d9aaabed75adbe4341da544fc1 Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Wed, 13 Aug 2025 15:09:42 +0000 Subject: [PATCH 11/46] Splitting logic into a MVC --- build.sh | 13 +- build_windows_native_gui.bat | 13 +- synapsegui/README.md | 510 ++++++++++++++++++++ synapsegui/components/__init__.py | 3 + synapsegui/components/base_component.py | 41 ++ synapsegui/components/download_component.py | 155 ++++++ synapsegui/components/login_component.py | 259 ++++++++++ synapsegui/components/output_component.py | 77 +++ synapsegui/components/upload_component.py | 217 +++++++++ synapsegui/controllers/__init__.py | 3 + synapsegui/controllers/app_controller.py | 157 ++++++ synapsegui/main.py | 23 + synapsegui/models/__init__.py | 3 + synapsegui/models/config.py | 71 +++ synapsegui/models/synapse_client.py | 199 ++++++++ synapse_gui.py => synapsegui/synapse_gui.py | 0 synapsegui/utils/__init__.py | 3 + synapsegui/utils/progress.py | 25 + synapsegui/utils/tooltips.py | 47 ++ 19 files changed, 1815 insertions(+), 4 deletions(-) create mode 100644 synapsegui/README.md create mode 100644 synapsegui/components/__init__.py create mode 100644 synapsegui/components/base_component.py create mode 100644 synapsegui/components/download_component.py create mode 100644 synapsegui/components/login_component.py create mode 100644 synapsegui/components/output_component.py create mode 100644 synapsegui/components/upload_component.py create mode 100644 synapsegui/controllers/__init__.py create mode 100644 synapsegui/controllers/app_controller.py create mode 100644 synapsegui/main.py create mode 100644 synapsegui/models/__init__.py create mode 100644 synapsegui/models/config.py create mode 100644 synapsegui/models/synapse_client.py rename synapse_gui.py => synapsegui/synapse_gui.py (100%) create mode 100644 synapsegui/utils/__init__.py create mode 100644 synapsegui/utils/progress.py create mode 100644 synapsegui/utils/tooltips.py diff --git a/build.sh b/build.sh index 6605c25e6..838f143a5 100755 --- a/build.sh +++ b/build.sh @@ -30,14 +30,23 @@ build_for_platform() { echo "Building executable: $output_name" - # Build the executable with simplified PyInstaller command (following Windows approach) + # Build the executable with the refactored structure pyinstaller \ --onefile \ --name "$output_name" \ --collect-all=synapseclient \ + --hidden-import=synapsegui.models.synapse_client \ + --hidden-import=synapsegui.models.config \ + --hidden-import=synapsegui.components.login_component \ + --hidden-import=synapsegui.components.download_component \ + --hidden-import=synapsegui.components.upload_component \ + --hidden-import=synapsegui.components.output_component \ + --hidden-import=synapsegui.controllers.app_controller \ + --hidden-import=synapsegui.utils.progress \ + --hidden-import=synapsegui.utils.tooltips \ --console \ $extra_args \ - synapse_gui.py + synapsegui/main.py # Clean up spec file rm -f *.spec diff --git a/build_windows_native_gui.bat b/build_windows_native_gui.bat index 379e88ed7..60824f234 100644 --- a/build_windows_native_gui.bat +++ b/build_windows_native_gui.bat @@ -26,13 +26,22 @@ if exist *.spec del *.spec echo Building Windows executable... -REM Build using the fixed CLI script +REM Build using the refactored structure pyinstaller ^ --onefile ^ --name "synapse-desktop-client%SUFFIX%.exe" ^ --collect-all=synapseclient ^ + --hidden-import=synapsegui.models.synapse_client ^ + --hidden-import=synapsegui.models.config ^ + --hidden-import=synapsegui.components.login_component ^ + --hidden-import=synapsegui.components.download_component ^ + --hidden-import=synapsegui.components.upload_component ^ + --hidden-import=synapsegui.components.output_component ^ + --hidden-import=synapsegui.controllers.app_controller ^ + --hidden-import=synapsegui.utils.progress ^ + --hidden-import=synapsegui.utils.tooltips ^ --windowed ^ - synapse_gui.py + synapsegui/main.py if errorlevel 1 ( echo ERROR: Build failed diff --git a/synapsegui/README.md b/synapsegui/README.md new file mode 100644 index 000000000..08c9b5e40 --- /dev/null +++ b/synapsegui/README.md @@ -0,0 +1,510 @@ +# Synapse GUI Developer Guide + +Welcome to the Synapse GUI development guide. This document provides comprehensive information for developers who want to contribute to, maintain, or extend the Synapse desktop GUI application. + +## Table of Contents + +- [Architecture Overview](#architecture-overview) +- [Development Setup](#development-setup) +- [Code Structure](#code-structure) +- [Adding New Features](#adding-new-features) +- [Testing Guidelines](#testing-guidelines) +- [UI/UX Guidelines](#uiux-guidelines) +- [Performance Considerations](#performance-considerations) +- [Debugging and Troubleshooting](#debugging-and-troubleshooting) +- [Contributing Guidelines](#contributing-guidelines) + +## Architecture Overview + +The Synapse GUI follows a **Model-View-Controller (MVC)** architecture with component-based design: + +``` +┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ +│ Models │ │ Controllers │ │ Components │ +│ │ │ │ │ (Views) │ +│ • SynapseClient │◄──►│ AppController │◄──►│ • LoginComponent│ +│ • ConfigManager │ │ │ │ • DownloadComp │ +│ • Data Models │ │ │ │ • UploadComp │ +└─────────────────┘ └─────────────────┘ └─────────────────┘ +``` + +### Key Principles + +1. **Separation of Concerns**: Business logic, UI, and coordination are separate +2. **Dependency Injection**: Components receive dependencies via constructors +3. **Event-Driven**: Loose coupling through callbacks and events +4. **Async Operations**: Non-blocking UI with proper progress feedback +5. **Testability**: Each layer can be tested independently + +## Development Setup + +### Prerequisites + +```bash +# Python 3.8+ required +python --version + +# Required packages +pip install synapseclient +pip install tkinter # Usually included with Python +pip install pytest # For testing +pip install black # For code formatting +pip install pylint # For linting +``` + +### Environment Setup + +```bash +# Clone the repository +git clone https://github.com/Sage-Bionetworks/synapsePythonClient.git +cd synapsePythonClient/synapsegui + +# Create virtual environment (recommended) +python -m venv venv +source venv/bin/activate # On Windows: venv\Scripts\activate + +# Install dependencies +pip install -r requirements.txt + +# Run the GUI +python main.py +``` + +### Development Tools + +```bash +# Code formatting +black --line-length 88 synapsegui/ + +# Linting +pylint synapsegui/ + +# Type checking (if using type hints) +mypy synapsegui/ + +# Testing +pytest tests/ +``` + +## Code Structure + +``` +synapsegui/ +├── __init__.py # Package initialization +├── main.py # Main application entry point +├── README.md # This file +├── REFACTORING_GUIDE.md # Architecture migration guide +│ +├── models/ # Business logic and data +│ ├── __init__.py +│ ├── synapse_client.py # Synapse API operations +│ ├── config.py # Configuration management +│ └── app_state.py # Application state models +│ +├── components/ # UI components (reusable) +│ ├── __init__.py +│ ├── login_component.py # Authentication UI +│ ├── download_component.py # File download UI +│ ├── upload_component.py # File upload UI +│ ├── output_component.py # Logging/output display +│ └── base_component.py # Base component class +│ +├── controllers/ # Application logic coordination +│ ├── __init__.py +│ ├── app_controller.py # Main application controller +│ ├── login_controller.py # Login logic +│ └── file_controller.py # File operation logic +│ +├── utils/ # Utilities and helpers +│ ├── __init__.py +│ ├── progress.py # Progress tracking +│ ├── tooltips.py # UI helpers +│ ├── validators.py # Input validation +│ └── threading_utils.py # Threading helpers +│ +├── tests/ # Test files +│ ├── __init__.py +│ ├── test_models/ +│ ├── test_components/ +│ ├── test_controllers/ +│ └── test_utils/ +│ +└── assets/ # Static resources + ├── icons/ + ├── images/ + └── styles/ +``` + +## Adding New Features + +### 1. Creating a New UI Component + +```python +# components/new_feature_component.py +from tkinter import ttk +from .base_component import BaseComponent + +class NewFeatureComponent(BaseComponent): + """Component for new feature functionality""" + + def __init__(self, parent, controller, **kwargs): + super().__init__(parent, **kwargs) + self.controller = controller + self.create_ui() + + def create_ui(self): + """Create the UI elements""" + self.frame = ttk.LabelFrame(self.parent, text="New Feature") + self.frame.grid(sticky="ew", padx=5, pady=5) + + # Add your UI elements here + ttk.Button( + self.frame, + text="Action", + command=self.handle_action + ).grid(row=0, column=0) + + def handle_action(self): + """Handle user action - delegate to controller""" + self.controller.handle_new_feature_action() + + def update_state(self, state): + """Update UI based on state changes""" + # Update UI elements based on state + pass +``` + +### 2. Adding Business Logic + +```python +# models/new_feature_model.py +from typing import Dict, Any + +class NewFeatureModel: + """Model for new feature data and operations""" + + def __init__(self, synapse_client): + self.synapse_client = synapse_client + + async def perform_operation(self, params: Dict[str, Any]) -> Dict[str, Any]: + """Perform the business operation""" + try: + # Implement your business logic here + result = await self._do_operation(params) + return {"success": True, "data": result} + except Exception as e: + return {"success": False, "error": str(e)} + + async def _do_operation(self, params): + """Private method for actual operation""" + # Implementation details + pass +``` + +### 3. Integration Steps + +1. **Add component to main window**: + ```python + # In main GUI class + self.new_feature_component = NewFeatureComponent(parent, self.controller) + ``` + +2. **Register with controller**: + ```python + self.controller.set_new_feature_component(self.new_feature_component) + ``` + +3. **Add tests**: + ```python + # tests/test_components/test_new_feature_component.py + def test_new_feature_component(): + # Test component functionality + pass + ``` + +## Testing Guidelines + +### Unit Testing + +```python +# tests/test_models/test_synapse_client.py +import pytest +from unittest.mock import Mock, patch +from synapsegui.models.synapse_client import SynapseClientManager + +class TestSynapseClientManager: + def setup_method(self): + self.client = SynapseClientManager() + + @pytest.mark.asyncio + async def test_login_manual_success(self): + """Test successful manual login""" + with patch('synapseclient.Synapse') as mock_synapse: + mock_instance = Mock() + mock_synapse.return_value = mock_instance + mock_instance.username = "test@example.com" + + result = await self.client.login_manual("test@example.com", "token") + + assert result["success"] is True + assert result["username"] == "test@example.com" +``` + +### Running Tests + +```bash +# Run all tests +pytest + +# Run specific test file +pytest tests/test_models/test_synapse_client.py + +# Run with coverage +pytest --cov=synapsegui + +# Run integration tests only +pytest tests/test_integration/ + +# Run with verbose output +pytest -v +``` + +## UI/UX Guidelines + +### Design Principles + +1. **Consistency**: Use consistent spacing, fonts, and colors +2. **Accessibility**: Support keyboard navigation and screen readers +3. **Responsiveness**: Handle window resizing gracefully +4. **Progressive Disclosure**: Show advanced options when needed +5. **Clear Feedback**: Provide immediate feedback for user actions + +### Component Standards + +```python +# Standard component structure +class StandardComponent: + def __init__(self, parent, controller, **kwargs): + self.parent = parent + self.controller = controller + self.frame = None + self.create_ui() + self.setup_bindings() + + def create_ui(self): + """Create UI elements with consistent styling""" + self.frame = ttk.LabelFrame(self.parent, text="Component Title", padding="10") + self.frame.grid(sticky="ew", padx=5, pady=5) + + # Use grid layout with proper weights + self.frame.columnconfigure(1, weight=1) + + def setup_bindings(self): + """Setup keyboard and event bindings""" + self.frame.bind("", self.handle_enter) + self.frame.bind("", self.handle_escape) + + def set_enabled(self, enabled: bool): + """Standard method for enabling/disabling component""" + state = "normal" if enabled else "disabled" + for child in self.frame.winfo_children(): + if hasattr(child, 'config'): + child.config(state=state) +``` + +## Performance Considerations + +### Threading Best Practices + +```python +# Good: Non-blocking operation +def handle_long_operation(self): + def worker(): + try: + # Long-running operation + result = self.model.long_operation() + + # Update UI on main thread + self.root.after(0, lambda: self.update_ui(result)) + except Exception as e: + self.root.after(0, lambda: self.show_error(str(e))) + + threading.Thread(target=worker, daemon=True).start() + +# Bad: Blocking UI +def handle_long_operation_bad(self): + result = self.model.long_operation() # Blocks UI! + self.update_ui(result) +``` + +### Memory Management + +```python +# Proper cleanup in components +class Component: + def __init__(self, parent): + self.parent = parent + self.cleanup_callbacks = [] + + def add_cleanup_callback(self, callback): + """Register cleanup callback""" + self.cleanup_callbacks.append(callback) + + def destroy(self): + """Clean up resources""" + for callback in self.cleanup_callbacks: + try: + callback() + except Exception: + pass # Log error but continue cleanup + + if self.frame: + self.frame.destroy() +``` + +## Debugging and Troubleshooting + +### Logging Setup + +```python +# utils/logging_config.py +import logging +import sys + +def setup_logging(level=logging.INFO): + """Setup application logging""" + formatter = logging.Formatter( + '%(asctime)s - %(name)s - %(levelname)s - %(message)s' + ) + + # Console handler + console_handler = logging.StreamHandler(sys.stdout) + console_handler.setFormatter(formatter) + + # File handler + file_handler = logging.FileHandler('synapse_gui.log') + file_handler.setFormatter(formatter) + + # Root logger + root_logger = logging.getLogger() + root_logger.setLevel(level) + root_logger.addHandler(console_handler) + root_logger.addHandler(file_handler) +``` + +### Common Issues and Solutions + +#### 1. UI Freezing +```python +# Problem: Long operation blocking UI +def bad_operation(self): + time.sleep(10) # Blocks UI thread + self.update_ui() + +# Solution: Use threading +def good_operation(self): + def worker(): + time.sleep(10) # Runs in background + self.root.after(0, self.update_ui) # Update UI on main thread + + threading.Thread(target=worker, daemon=True).start() +``` + +#### 2. Memory Leaks +```python +# Problem: Not cleaning up references +class BadComponent: + def __init__(self): + self.timer = self.root.after(1000, self.update) # Never cancelled + +# Solution: Proper cleanup +class GoodComponent: + def __init__(self): + self.timer = None + self.start_timer() + + def start_timer(self): + self.timer = self.root.after(1000, self.update) + + def destroy(self): + if self.timer: + self.root.after_cancel(self.timer) +``` + +## Contributing Guidelines + +### Code Standards + +1. **PEP 8 Compliance**: Follow Python style guidelines +2. **Type Hints**: Use type hints for public APIs +3. **Docstrings**: Document all public classes and methods +4. **Error Handling**: Implement proper error handling and logging +5. **Testing**: Include tests for new functionality + +### Git Workflow + +```bash +# Create feature branch +git checkout -b feature/new-gui-component + +# Make changes and commit +git add . +git commit -m "Add new GUI component for feature X" + +# Push and create PR +git push origin feature/new-gui-component +``` + +### Code Review Checklist + +- [ ] Code follows style guidelines +- [ ] Tests are included and pass +- [ ] Documentation is updated +- [ ] Error handling is implemented +- [ ] Performance impact is considered +- [ ] UI/UX guidelines are followed +- [ ] Backwards compatibility is maintained + +### Pull Request Template + +```markdown +## Description +Brief description of changes + +## Type of Change +- [ ] Bug fix +- [ ] New feature +- [ ] Breaking change +- [ ] Documentation update + +## Testing +- [ ] Unit tests pass +- [ ] Integration tests pass +- [ ] Manual testing completed + +## Screenshots (if applicable) +Add screenshots of UI changes + +## Checklist +- [ ] Code follows style guidelines +- [ ] Self-review completed +- [ ] Tests added/updated +- [ ] Documentation updated +``` + +## Additional Resources + +- [Tkinter Documentation](https://docs.python.org/3/library/tkinter.html) +- [Synapse Python Client Docs](https://python-docs.synapse.org/) +- [Python Threading](https://docs.python.org/3/library/threading.html) +- [Pytest Documentation](https://docs.pytest.org/) +- [Python Type Hints](https://docs.python.org/3/library/typing.html) + +--- + +For questions or support, please: +1. Check existing [GitHub Issues](https://github.com/Sage-Bionetworks/synapsePythonClient/issues) +2. Create a new issue with detailed description +3. Contact the development team via Slack or email + +Happy coding! 🚀 diff --git a/synapsegui/components/__init__.py b/synapsegui/components/__init__.py new file mode 100644 index 000000000..f2774cae4 --- /dev/null +++ b/synapsegui/components/__init__.py @@ -0,0 +1,3 @@ +""" +Package initialization for UI components +""" diff --git a/synapsegui/components/base_component.py b/synapsegui/components/base_component.py new file mode 100644 index 000000000..a2972c6f4 --- /dev/null +++ b/synapsegui/components/base_component.py @@ -0,0 +1,41 @@ +""" +Base component class for UI components +""" +import tkinter as tk +from tkinter import ttk +from typing import Optional + + +class BaseComponent: + """Base class for UI components""" + + def __init__(self, parent: tk.Widget, **kwargs): + self.parent = parent + self.frame: Optional[ttk.Frame] = None + + def create_ui(self) -> None: + """Create the UI elements - to be implemented by subclasses""" + raise NotImplementedError("Subclasses must implement create_ui()") + + def get_frame(self) -> tk.Widget: + """Get the main frame for this component""" + if self.frame is None: + raise ValueError("Frame not initialized - call create_ui() first") + return self.frame + + def set_enabled(self, enabled: bool) -> None: + """Enable/disable component - default implementation""" + state = "normal" if enabled else "disabled" + if self.frame: + for child in self.frame.winfo_children(): + if hasattr(child, "config"): + try: + child.config(state=state) + except tk.TclError: + pass # Some widgets don't support state changes + + def destroy(self) -> None: + """Clean up component resources""" + if self.frame: + self.frame.destroy() + self.frame = None diff --git a/synapsegui/components/download_component.py b/synapsegui/components/download_component.py new file mode 100644 index 000000000..a7ca1abfe --- /dev/null +++ b/synapsegui/components/download_component.py @@ -0,0 +1,155 @@ +""" +Download component UI - separated from main window +""" +import tkinter as tk +from pathlib import Path +from tkinter import filedialog, messagebox, ttk +from typing import Callable, Optional + + +class DownloadComponent: + """Download file UI component""" + + def __init__( + self, parent: tk.Widget, on_download_callback: Callable[[str, str, str], None] + ): + self.parent = parent + self.on_download = on_download_callback + + # State variables + self.download_id_var = tk.StringVar() + self.download_version_var = tk.StringVar() + self.download_location_var = tk.StringVar(value=str(Path.home() / "Downloads")) + self.download_progress_var = tk.StringVar(value="") + + # UI references + self.download_button: Optional[ttk.Button] = None + self.download_progress_bar: Optional[ttk.Progressbar] = None + self.frame: Optional[ttk.Frame] = None + + self.create_ui() + + def create_ui(self) -> None: + """Create download UI components""" + self.frame = ttk.Frame(self.parent, padding="10") + self.frame.columnconfigure(1, weight=1) + + # Synapse ID + ttk.Label(self.frame, text="Synapse ID:").grid( + row=0, column=0, sticky=tk.W, pady=(0, 5) + ) + download_id_entry = ttk.Entry( + self.frame, textvariable=self.download_id_var, width=40 + ) + download_id_entry.grid( + row=0, column=1, sticky=(tk.W, tk.E), pady=(0, 5), padx=(10, 0) + ) + + # Version (optional) + ttk.Label(self.frame, text="Version (optional):").grid( + row=1, column=0, sticky=tk.W, pady=(0, 5) + ) + download_version_entry = ttk.Entry( + self.frame, textvariable=self.download_version_var, width=40 + ) + download_version_entry.grid( + row=1, column=1, sticky=(tk.W, tk.E), pady=(0, 5), padx=(10, 0) + ) + + # Download location + ttk.Label(self.frame, text="Download Location:").grid( + row=2, column=0, sticky=tk.W, pady=(0, 5) + ) + + location_frame = ttk.Frame(self.frame) + location_frame.grid( + row=2, column=1, sticky=(tk.W, tk.E), pady=(0, 5), padx=(10, 0) + ) + location_frame.columnconfigure(0, weight=1) + + download_location_entry = ttk.Entry( + location_frame, textvariable=self.download_location_var + ) + download_location_entry.grid(row=0, column=0, sticky=(tk.W, tk.E), padx=(0, 5)) + + browse_button = ttk.Button( + location_frame, text="Browse", command=self.browse_download_location + ) + browse_button.grid(row=0, column=1) + + # Download button + self.download_button = ttk.Button( + self.frame, + text="Download File", + command=self._handle_download, + state="disabled", + ) + self.download_button.grid(row=3, column=0, columnspan=2, pady=(20, 0)) + + # Progress bar for downloads + download_progress_label = ttk.Label( + self.frame, + textvariable=self.download_progress_var, + foreground="blue", + font=("Arial", 8), + ) + download_progress_label.grid(row=4, column=0, columnspan=2, pady=(5, 0)) + + self.download_progress_bar = ttk.Progressbar(self.frame, mode="determinate") + self.download_progress_bar.grid( + row=5, column=0, columnspan=2, sticky=(tk.W, tk.E), pady=(5, 0) + ) + + def browse_download_location(self) -> None: + """Browse for download directory""" + directory = filedialog.askdirectory(initialdir=self.download_location_var.get()) + if directory: + self.download_location_var.set(directory) + + def _handle_download(self) -> None: + """Handle download button click""" + synapse_id = self.download_id_var.get().strip() + version = self.download_version_var.get().strip() + download_path = self.download_location_var.get().strip() + + if not synapse_id: + messagebox.showerror("Error", "Synapse ID is required") + return + + self.on_download(synapse_id, version, download_path) + + def set_enabled(self, enabled: bool) -> None: + """Enable/disable download functionality""" + state = "normal" if enabled else "disabled" + if self.download_button: + self.download_button.config(state=state) + + def start_operation(self) -> None: + """Called when download operation starts""" + self.download_progress_var.set("Preparing download...") + if self.download_progress_bar: + self.download_progress_bar["value"] = 0 + + def update_progress(self, progress: int, message: str) -> None: + """Update progress bar and message""" + if self.download_progress_bar: + self.download_progress_bar["value"] = progress + self.download_progress_var.set(message) + + def show_success(self, message: str) -> None: + """Show success state""" + self.download_progress_var.set("Download completed") + if self.download_progress_bar: + self.download_progress_bar["value"] = 100 + messagebox.showinfo("Success", message) + + def show_error(self, error_message: str) -> None: + """Show error state""" + self.download_progress_var.set("Download failed") + if self.download_progress_bar: + self.download_progress_bar["value"] = 0 + messagebox.showerror("Download Error", error_message) + + def get_frame(self) -> ttk.Frame: + """Get the main frame for this component""" + return self.frame diff --git a/synapsegui/components/login_component.py b/synapsegui/components/login_component.py new file mode 100644 index 000000000..ce8efc30e --- /dev/null +++ b/synapsegui/components/login_component.py @@ -0,0 +1,259 @@ +""" +Login UI component - separated from main window +""" +import tkinter as tk +from tkinter import ttk +from typing import Callable + +from ..models.config import ConfigManager +from ..utils.tooltips import ToolTip + + +class LoginComponent: + """Login section UI component""" + + def __init__( + self, + parent: tk.Widget, + config_manager: ConfigManager, + on_login_callback: Callable, + on_logout_callback: Callable, + ) -> None: + self.parent = parent + self.config_manager = config_manager + self.on_login = on_login_callback + self.on_logout = on_logout_callback + + # State variables + self.login_mode_var = tk.StringVar() + self.profile_var = tk.StringVar() + self.profile_info_var = tk.StringVar() + self.username_var = tk.StringVar() + self.token_var = tk.StringVar() + self.login_status_var = tk.StringVar(value="Not logged in") + self.user_info_var = tk.StringVar() + + # UI references + self.login_button = None + self.login_status_label = None + self.profile_combo = None + self.manual_frame = None + self.profile_frame = None + + self.create_ui() + + def create_ui(self) -> None: + """Create login UI components""" + login_frame = ttk.LabelFrame(self.parent, text="Login", padding="10") + login_frame.grid(row=1, column=0, sticky=(tk.W, tk.E), pady=(0, 10)) + login_frame.columnconfigure(1, weight=1) + + # Determine default login mode + available_profiles = self.config_manager.get_available_profiles() + config_available = len(available_profiles) > 0 + default_mode = "config" if config_available else "manual" + self.login_mode_var.set(default_mode) + + self._create_mode_selection(login_frame, config_available) + self._create_profile_section(login_frame) + self._create_manual_section(login_frame) + self._create_login_button(login_frame) + self._create_status_labels(login_frame) + + # Initialize interface + self.refresh_profiles() + self.on_login_mode_change() + + def _create_mode_selection(self, parent: tk.Widget, config_available: bool) -> None: + """Create login mode radio buttons""" + mode_frame = ttk.Frame(parent) + mode_frame.grid( + row=0, column=0, columnspan=3, sticky=(tk.W, tk.E), pady=(0, 10) + ) + + ttk.Radiobutton( + mode_frame, + text="Manual Login (Username + Token)", + variable=self.login_mode_var, + value="manual", + command=self.on_login_mode_change, + ).grid(row=0, column=0, sticky=tk.W, padx=(0, 20)) + + config_radio = ttk.Radiobutton( + mode_frame, + text="Config File Login", + variable=self.login_mode_var, + value="config", + command=self.on_login_mode_change, + ) + config_radio.grid(row=0, column=1, sticky=tk.W) + + # Add tooltip if no config file available + if not config_available: + ToolTip(config_radio, "No Synapse config file found at ~/.synapseConfig") + + def _create_profile_section(self, parent: tk.Widget) -> None: + """Create profile selection UI""" + self.profile_frame = ttk.Frame(parent) + self.profile_frame.grid( + row=1, column=0, columnspan=3, sticky=(tk.W, tk.E), pady=(0, 10) + ) + self.profile_frame.columnconfigure(1, weight=1) + + ttk.Label(self.profile_frame, text="Profile:").grid( + row=0, column=0, sticky=tk.W, padx=(0, 5) + ) + + self.profile_combo = ttk.Combobox( + self.profile_frame, + textvariable=self.profile_var, + state="readonly", + width=25, + ) + self.profile_combo.grid(row=0, column=1, sticky=(tk.W, tk.E), padx=(0, 10)) + self.profile_combo.bind("<>", self.on_profile_selected) + + # Profile info label + profile_info_label = ttk.Label( + self.profile_frame, + textvariable=self.profile_info_var, + foreground="blue", + font=("Arial", 8), + ) + profile_info_label.grid(row=1, column=0, columnspan=3, sticky=tk.W, pady=(5, 0)) + + def _create_manual_section(self, parent: tk.Widget) -> None: + """Create manual login fields""" + self.manual_frame = ttk.Frame(parent) + self.manual_frame.grid( + row=2, column=0, columnspan=3, sticky=(tk.W, tk.E), pady=(0, 10) + ) + self.manual_frame.columnconfigure(1, weight=1) + + # Username + ttk.Label(self.manual_frame, text="Username/Email:").grid( + row=0, column=0, sticky=tk.W, padx=(0, 5) + ) + username_entry = ttk.Entry( + self.manual_frame, textvariable=self.username_var, width=30 + ) + username_entry.grid(row=0, column=1, sticky=(tk.W, tk.E), padx=(0, 10)) + + # Auth Token + ttk.Label(self.manual_frame, text="Personal Access Token:").grid( + row=1, column=0, sticky=tk.W, padx=(0, 5), pady=(5, 0) + ) + token_entry = ttk.Entry( + self.manual_frame, textvariable=self.token_var, show="*", width=30 + ) + token_entry.grid( + row=1, column=1, sticky=(tk.W, tk.E), padx=(0, 10), pady=(5, 0) + ) + + def _create_login_button(self, parent: tk.Widget) -> None: + """Create login/logout button""" + self.login_button = ttk.Button( + parent, text="Login", command=self._handle_login_logout + ) + self.login_button.grid(row=3, column=0, columnspan=3, pady=(10, 0)) + + def _create_status_labels(self, parent: tk.Widget) -> None: + """Create status and user info labels""" + self.login_status_label = ttk.Label( + parent, textvariable=self.login_status_var, foreground="red" + ) + self.login_status_label.grid(row=4, column=0, columnspan=3, pady=(5, 0)) + + user_info_label = ttk.Label( + parent, + textvariable=self.user_info_var, + foreground="green", + font=("Arial", 9, "bold"), + ) + user_info_label.grid(row=5, column=0, columnspan=3, pady=(5, 0)) + + def on_login_mode_change(self) -> None: + """Handle login mode radio button changes""" + mode = self.login_mode_var.get() + if mode == "manual": + self.manual_frame.grid() + self.profile_frame.grid_remove() + else: # config + self.manual_frame.grid_remove() + self.profile_frame.grid() + self.refresh_profiles() + + def refresh_profiles(self) -> None: + """Refresh the list of available profiles""" + try: + profiles = self.config_manager.get_available_profiles() + if profiles: + self.profile_combo["values"] = profiles + if not self.profile_var.get() or self.profile_var.get() not in profiles: + self.profile_var.set(profiles[0]) + self.on_profile_selected() + else: + self.profile_combo["values"] = [] + self.profile_var.set("") + self.profile_info_var.set("No profiles found in config file") + except Exception as e: + self.profile_combo["values"] = [] + self.profile_var.set("") + self.profile_info_var.set(f"Error reading config: {str(e)}") + + def on_profile_selected(self, event=None) -> None: + """Handle profile selection""" + profile_name = self.profile_var.get() + if profile_name: + username = self.config_manager.get_profile_info(profile_name) + if username: + self.profile_info_var.set(f"Username: {username}") + else: + self.profile_info_var.set("No username found for this profile") + else: + self.profile_info_var.set("") + + def _handle_login_logout(self) -> None: + """Handle login/logout button click""" + if self.login_button["text"] == "Login": + self._handle_login() + else: + self._handle_logout() + + def _handle_login(self) -> None: + """Handle login attempt""" + mode = self.login_mode_var.get() + + if mode == "manual": + username = self.username_var.get().strip() + token = self.token_var.get().strip() + self.on_login("manual", {"username": username, "token": token}) + else: # config + profile_name = self.profile_var.get() + self.on_login("config", {"profile": profile_name}) + + def _handle_logout(self) -> None: + """Handle logout""" + self.on_logout() + + def update_login_state( + self, is_logged_in: bool, username: str = "", error: str = "" + ) -> None: + """Update UI based on login state""" + if is_logged_in: + self.login_status_var.set("Logged in successfully") + self.login_status_label.config(foreground="green") + self.login_button.config(text="Logout") + self.user_info_var.set(f"Logged in as: {username}") + else: + if error: + self.login_status_var.set(f"Login failed: {error}") + else: + self.login_status_var.set("Not logged in") + self.login_status_label.config(foreground="red") + self.login_button.config(text="Login") + self.user_info_var.set("") + + def set_login_button_state(self, enabled: bool) -> None: + """Enable/disable login button""" + self.login_button.config(state="normal" if enabled else "disabled") diff --git a/synapsegui/components/output_component.py b/synapsegui/components/output_component.py new file mode 100644 index 000000000..5458dfe97 --- /dev/null +++ b/synapsegui/components/output_component.py @@ -0,0 +1,77 @@ +""" +Output component UI - separated from main window +""" +import tkinter as tk +from tkinter import scrolledtext, ttk +from typing import Optional + + +class OutputComponent: + """Output/logging UI component""" + + def __init__(self, parent: tk.Widget): + self.parent = parent + + # UI references + self.output_text: Optional[scrolledtext.ScrolledText] = None + self.status_var = tk.StringVar(value="Ready") + self.frame: Optional[ttk.LabelFrame] = None + self.status_bar: Optional[ttk.Label] = None + + self.create_ui() + + def create_ui(self) -> None: + """Create output UI components""" + # Output section + self.frame = ttk.LabelFrame(self.parent, text="Output", padding="5") + self.frame.columnconfigure(0, weight=1) + self.frame.rowconfigure(0, weight=1) + + self.output_text = scrolledtext.ScrolledText( + self.frame, height=20, wrap=tk.WORD, font=("Consolas", 9) + ) + self.output_text.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S)) + + # Clear button + clear_button = ttk.Button( + self.frame, text="Clear Output", command=self.clear_output + ) + clear_button.grid(row=1, column=0, pady=(5, 0)) + + # Status bar (separate from output frame) + self.status_bar = ttk.Label( + self.parent, textvariable=self.status_var, relief=tk.SUNKEN + ) + + def log_message(self, message: str, error: bool = False) -> None: + """Add message to output text widget""" + if self.output_text: + self.output_text.insert(tk.END, f"{message}\n") + self.output_text.see(tk.END) + + if error: + # Color the last line red for errors + line_start = self.output_text.index("end-1c linestart") + line_end = self.output_text.index("end-1c lineend") + self.output_text.tag_add("error", line_start, line_end) + self.output_text.tag_config("error", foreground="red") + + # Update the display + self.parent.update_idletasks() + + def clear_output(self) -> None: + """Clear the output text widget""" + if self.output_text: + self.output_text.delete(1.0, tk.END) + + def set_status(self, status: str) -> None: + """Set the status bar message""" + self.status_var.set(status) + + def get_frame(self) -> ttk.LabelFrame: + """Get the main frame for this component""" + return self.frame + + def get_status_bar(self) -> ttk.Label: + """Get the status bar widget""" + return self.status_bar diff --git a/synapsegui/components/upload_component.py b/synapsegui/components/upload_component.py new file mode 100644 index 000000000..144ee6dfe --- /dev/null +++ b/synapsegui/components/upload_component.py @@ -0,0 +1,217 @@ +""" +Upload component UI - separated from main window +""" +import tkinter as tk +from pathlib import Path +from tkinter import filedialog, messagebox, ttk +from typing import Callable, Optional + + +class UploadComponent: + """Upload file UI component""" + + def __init__( + self, + parent: tk.Widget, + on_upload_callback: Callable[[str, str, str, str], None], + ): + self.parent = parent + self.on_upload = on_upload_callback + + # State variables + self.upload_file_var = tk.StringVar() + self.upload_mode_var = tk.StringVar(value="new") + self.parent_id_var = tk.StringVar() + self.entity_id_var = tk.StringVar() + self.upload_name_var = tk.StringVar() + self.upload_progress_var = tk.StringVar(value="") + + # UI references + self.upload_button: Optional[ttk.Button] = None + self.upload_progress_bar: Optional[ttk.Progressbar] = None + self.parent_id_entry: Optional[ttk.Entry] = None + self.entity_id_entry: Optional[ttk.Entry] = None + self.frame: Optional[ttk.Frame] = None + + self.create_ui() + + def create_ui(self) -> None: + """Create upload UI components""" + self.frame = ttk.Frame(self.parent, padding="10") + self.frame.columnconfigure(1, weight=1) + + # File selection + ttk.Label(self.frame, text="File to Upload:").grid( + row=0, column=0, sticky=tk.W, pady=(0, 5) + ) + + file_frame = ttk.Frame(self.frame) + file_frame.grid(row=0, column=1, sticky=(tk.W, tk.E), pady=(0, 5), padx=(10, 0)) + file_frame.columnconfigure(0, weight=1) + + upload_file_entry = ttk.Entry(file_frame, textvariable=self.upload_file_var) + upload_file_entry.grid(row=0, column=0, sticky=(tk.W, tk.E), padx=(0, 5)) + + browse_file_button = ttk.Button( + file_frame, text="Browse", command=self.browse_upload_file + ) + browse_file_button.grid(row=0, column=1) + + # Upload mode selection + mode_frame = ttk.LabelFrame(self.frame, text="Upload Mode", padding="10") + mode_frame.grid( + row=1, column=0, columnspan=2, sticky=(tk.W, tk.E), pady=(10, 0) + ) + mode_frame.columnconfigure(2, weight=1) + + new_radio = ttk.Radiobutton( + mode_frame, + text="Create New File", + variable=self.upload_mode_var, + value="new", + command=self.on_upload_mode_change, + ) + new_radio.grid(row=0, column=0, sticky=tk.W, pady=(0, 5)) + + update_radio = ttk.Radiobutton( + mode_frame, + text="Update Existing File", + variable=self.upload_mode_var, + value="update", + command=self.on_upload_mode_change, + ) + update_radio.grid(row=1, column=0, sticky=tk.W) + + # Parent ID / Entity ID fields + parent_label = ttk.Label(mode_frame, text="Parent ID (Project/Folder):") + parent_label.grid(row=0, column=1, sticky=tk.W, padx=(20, 5), pady=(0, 5)) + + self.parent_id_entry = ttk.Entry( + mode_frame, textvariable=self.parent_id_var, width=30 + ) + self.parent_id_entry.grid(row=0, column=2, sticky=(tk.W, tk.E), pady=(0, 5)) + + entity_label = ttk.Label(mode_frame, text="Entity ID to Update:") + entity_label.grid(row=1, column=1, sticky=tk.W, padx=(20, 5)) + + self.entity_id_entry = ttk.Entry( + mode_frame, textvariable=self.entity_id_var, width=30, state="disabled" + ) + self.entity_id_entry.grid(row=1, column=2, sticky=(tk.W, tk.E)) + + # File name + ttk.Label(self.frame, text="Entity Name (optional):").grid( + row=2, column=0, sticky=tk.W, pady=(10, 5) + ) + upload_name_entry = ttk.Entry( + self.frame, textvariable=self.upload_name_var, width=40 + ) + upload_name_entry.grid( + row=2, column=1, sticky=(tk.W, tk.E), pady=(10, 5), padx=(10, 0) + ) + + # Upload button + self.upload_button = ttk.Button( + self.frame, + text="Upload File", + command=self._handle_upload, + state="disabled", + ) + self.upload_button.grid(row=3, column=0, columnspan=2, pady=(20, 0)) + + # Progress bar for uploads + upload_progress_label = ttk.Label( + self.frame, + textvariable=self.upload_progress_var, + foreground="blue", + font=("Arial", 8), + ) + upload_progress_label.grid(row=4, column=0, columnspan=2, pady=(5, 0)) + + self.upload_progress_bar = ttk.Progressbar(self.frame, mode="determinate") + self.upload_progress_bar.grid( + row=5, column=0, columnspan=2, sticky=(tk.W, tk.E), pady=(5, 0) + ) + + def browse_upload_file(self) -> None: + """Browse for file to upload""" + file_path = filedialog.askopenfilename( + title="Select file to upload", initialdir=str(Path.home()) + ) + if file_path: + self.upload_file_var.set(file_path) + if not self.upload_name_var.get(): + self.upload_name_var.set(Path(file_path).name) + + def on_upload_mode_change(self) -> None: + """Handle upload mode radio button changes""" + mode = self.upload_mode_var.get() + if mode == "new": + if self.parent_id_entry: + self.parent_id_entry.config(state="normal") + if self.entity_id_entry: + self.entity_id_entry.config(state="disabled") + self.entity_id_var.set("") + else: # update + if self.parent_id_entry: + self.parent_id_entry.config(state="disabled") + if self.entity_id_entry: + self.entity_id_entry.config(state="normal") + self.parent_id_var.set("") + + def _handle_upload(self) -> None: + """Handle upload button click""" + file_path = self.upload_file_var.get().strip() + parent_id = self.parent_id_var.get().strip() + entity_id = self.entity_id_var.get().strip() + name = self.upload_name_var.get().strip() + + if not file_path: + messagebox.showerror("Error", "File path is required") + return + + mode = self.upload_mode_var.get() + if mode == "new" and not parent_id: + messagebox.showerror("Error", "Parent ID is required for new files") + return + elif mode == "update" and not entity_id: + messagebox.showerror("Error", "Entity ID is required for updates") + return + + self.on_upload(file_path, parent_id, entity_id, name) + + def set_enabled(self, enabled: bool) -> None: + """Enable/disable upload functionality""" + state = "normal" if enabled else "disabled" + if self.upload_button: + self.upload_button.config(state=state) + + def start_operation(self) -> None: + """Called when upload operation starts""" + self.upload_progress_var.set("Preparing upload...") + if self.upload_progress_bar: + self.upload_progress_bar["value"] = 0 + + def update_progress(self, progress: int, message: str) -> None: + """Update progress bar and message""" + if self.upload_progress_bar: + self.upload_progress_bar["value"] = progress + self.upload_progress_var.set(message) + + def show_success(self, message: str) -> None: + """Show success state""" + self.upload_progress_var.set("Upload completed") + if self.upload_progress_bar: + self.upload_progress_bar["value"] = 100 + messagebox.showinfo("Success", message) + + def show_error(self, error_message: str) -> None: + """Show error state""" + self.upload_progress_var.set("Upload failed") + if self.upload_progress_bar: + self.upload_progress_bar["value"] = 0 + messagebox.showerror("Upload Error", error_message) + + def get_frame(self) -> ttk.Frame: + """Get the main frame for this component""" + return self.frame diff --git a/synapsegui/controllers/__init__.py b/synapsegui/controllers/__init__.py new file mode 100644 index 000000000..c70c2af74 --- /dev/null +++ b/synapsegui/controllers/__init__.py @@ -0,0 +1,3 @@ +""" +Package initialization for controllers +""" diff --git a/synapsegui/controllers/app_controller.py b/synapsegui/controllers/app_controller.py new file mode 100644 index 000000000..16ad49a89 --- /dev/null +++ b/synapsegui/controllers/app_controller.py @@ -0,0 +1,157 @@ +""" +Main application controller - orchestrates components +""" +import asyncio +import threading +from typing import Any, Dict + +from ..models.config import ConfigManager +from ..models.synapse_client import SynapseClientManager +from ..utils.progress import ProgressManager + + +class ApplicationController: + """Main application controller that coordinates between UI and business logic""" + + def __init__(self) -> None: + self.synapse_client = SynapseClientManager() + self.config_manager = ConfigManager() + self.progress_manager = ProgressManager() + + # UI components will be set by the main window + self.login_component = None + self.download_component = None + self.upload_component = None + self.output_component = None + + def set_ui_components( + self, login_component, download_component, upload_component, output_component + ) -> None: + """Set references to UI components""" + self.login_component = login_component + self.download_component = download_component + self.upload_component = upload_component + self.output_component = output_component + + def handle_login(self, mode: str, credentials: Dict[str, Any]) -> None: + """Handle login request from UI""" + + def login_worker(): + if mode == "manual": + result = asyncio.run( + self.synapse_client.login_manual( + credentials.get("username", ""), credentials.get("token", "") + ) + ) + else: # config + result = asyncio.run( + self.synapse_client.login_with_profile( + credentials.get("profile", "") + ) + ) + + # Update UI based on result + if result["success"]: + self.login_component.update_login_state( + True, result.get("username", "") + ) + self._enable_operations(True) + self.output_component.log_message( + f"Login successful! Logged in as: {result.get('username', '')}" + ) + else: + self.login_component.update_login_state(False, error=result["error"]) + self.output_component.log_message( + f"Login failed: {result['error']}", error=True + ) + + # Disable login button during attempt + self.login_component.set_login_button_state(False) + + # Run in background thread + threading.Thread(target=login_worker, daemon=True).start() + + def handle_logout(self) -> None: + """Handle logout request""" + self.synapse_client.logout() + self.login_component.update_login_state(False) + self._enable_operations(False) + self.output_component.log_message("Logged out successfully") + + def handle_download( + self, synapse_id: str, version: str, download_path: str + ) -> None: + """Handle file download request""" + + def download_worker(): + version_num = None + if version: + try: + version_num = int(version) + except ValueError: + self.output_component.log_message( + "Version must be a number", error=True + ) + return + + def progress_callback(progress: int, message: str): + self.download_component.update_progress(progress, message) + + result = asyncio.run( + self.synapse_client.download_file( + synapse_id, version_num, download_path, progress_callback + ) + ) + + if result["success"]: + self.output_component.log_message(f"Downloaded: {result['path']}") + self.download_component.show_success(f"Downloaded: {result['path']}") + else: + self.output_component.log_message( + f"Download failed: {result['error']}", error=True + ) + self.download_component.show_error(result["error"]) + + self.download_component.start_operation() + threading.Thread(target=download_worker, daemon=True).start() + + def handle_upload( + self, file_path: str, parent_id: str, entity_id: str, name: str + ) -> None: + """Handle file upload request""" + + def upload_worker(): + def progress_callback(progress: int, message: str): + self.upload_component.update_progress(progress, message) + + result = asyncio.run( + self.synapse_client.upload_file( + file_path, + parent_id or None, + entity_id or None, + name or None, + progress_callback, + ) + ) + + if result["success"]: + message = ( + f"Created/Updated entity: {result['entity_id']} - {result['name']}" + ) + self.output_component.log_message(message) + self.upload_component.show_success(message) + else: + self.output_component.log_message( + f"Upload failed: {result['error']}", error=True + ) + self.upload_component.show_error(result["error"]) + + self.upload_component.start_operation() + threading.Thread(target=upload_worker, daemon=True).start() + + def _enable_operations(self, enabled: bool) -> None: + """Enable/disable operation buttons based on login state""" + if self.download_component: + self.download_component.set_enabled(enabled) + if self.upload_component: + self.upload_component.set_enabled(enabled) diff --git a/synapsegui/main.py b/synapsegui/main.py new file mode 100644 index 000000000..b0efa9aff --- /dev/null +++ b/synapsegui/main.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python3 +""" +Main entry point for the refactored Synapse GUI application +""" +import os +import sys + +# Add the parent directory to the path so we can import synapsegui +if __name__ == "__main__": + # Get the directory containing this script + script_dir = os.path.dirname(os.path.abspath(__file__)) + # Add the parent directory to Python path + parent_dir = os.path.dirname(script_dir) + if parent_dir not in sys.path: + sys.path.insert(0, parent_dir) + + try: + from synapsegui.refactored_main import main + + main() + except Exception as e: + print(f"Error starting Synapse GUI: {e}") + sys.exit(1) diff --git a/synapsegui/models/__init__.py b/synapsegui/models/__init__.py new file mode 100644 index 000000000..28a41ad78 --- /dev/null +++ b/synapsegui/models/__init__.py @@ -0,0 +1,3 @@ +""" +Package initialization for Synapse GUI components +""" diff --git a/synapsegui/models/config.py b/synapsegui/models/config.py new file mode 100644 index 000000000..b604cb746 --- /dev/null +++ b/synapsegui/models/config.py @@ -0,0 +1,71 @@ +""" +Configuration management for Synapse profiles +""" +import os +from typing import List + +from synapseclient.api.configuration_services import get_config_file + + +class ConfigManager: + """Manages Synapse configuration profiles""" + + def __init__(self, config_path: str = None): + self.config_path = config_path or os.path.expanduser("~/.synapseConfig") + + def get_available_profiles(self) -> List[str]: + """Get list of available authentication profiles from config file""" + profiles = [] + + try: + config = get_config_file(self.config_path) + sections = config.sections() + + # Look for profiles + for section in sections: + if section == "default": + profiles.append("default") + elif section.startswith("profile "): + profile_name = section[8:] # Remove "profile " prefix + profiles.append(profile_name) + elif section == "authentication": + # Legacy authentication section + profiles.append("authentication (legacy)") + + # If no profiles found but config exists, add default + if not profiles and os.path.exists(self.config_path): + profiles.append("default") + + except Exception: + # If config file doesn't exist or can't be read, return empty list + pass + + return profiles + + def get_profile_info(self, profile_name: str) -> str: + """Get username for a specific profile""" + try: + config = get_config_file(self.config_path) + + # Handle different profile name formats + if profile_name == "default": + section_name = "default" + elif profile_name == "authentication (legacy)": + section_name = "authentication" + else: + section_name = f"profile {profile_name}" + + if config.has_section(section_name): + username = config.get(section_name, "username", fallback="") + return username + + except Exception: + pass + + return "" + + def has_config_file(self) -> bool: + """Check if config file exists""" + return ( + os.path.exists(self.config_path) and len(self.get_available_profiles()) > 0 + ) diff --git a/synapsegui/models/synapse_client.py b/synapsegui/models/synapse_client.py new file mode 100644 index 000000000..e04a9b3da --- /dev/null +++ b/synapsegui/models/synapse_client.py @@ -0,0 +1,199 @@ +""" +Synapse client operations - separated from UI logic +""" +import os +import re +import sys +from typing import Any, Callable, Dict, Optional + +import synapseclient +from synapseclient.core import utils +from synapseclient.models import File + + +class TQDMProgressCapture: + """Capture TQDM progress updates for GUI display""" + + def __init__(self, progress_callback: Callable[[int, str], None]): + self.progress_callback = progress_callback + self.last_progress = 0 + + def write(self, s: str) -> None: + """Capture TQDM output and extract progress information""" + if s and "\r" in s: + # TQDM typically uses \r for progress updates + progress_line = s.strip().replace("\r", "") + if "%" in progress_line and ( + "B/s" in progress_line or "it/s" in progress_line + ): + # Parse progress percentage + try: + # Look for percentage in the format "XX%" + match = re.search(r"(\d+)%", progress_line) + if match: + progress = int(match.group(1)) + if progress != self.last_progress: + self.last_progress = progress + self.progress_callback(progress, f"Progress: {progress}%") + except Exception: + pass + + def flush(self) -> None: + """Required for file-like object interface""" + pass + + +class SynapseClientManager: + """Handles all Synapse client operations""" + + def __init__(self): + self.client: Optional[synapseclient.Synapse] = None + self.is_logged_in = False + self.username = "" + + async def login_manual(self, username: str, token: str) -> Dict[str, Any]: + """Login with username and token""" + try: + self.client = synapseclient.Synapse(skip_checks=True) + + if username: + self.client.login(email=username, authToken=token, silent=True) + else: + self.client.login(authToken=token, silent=True) + + self.is_logged_in = True + self.username = getattr(self.client, "username", None) or getattr( + self.client, "email", "Unknown User" + ) + + return {"success": True, "username": self.username} + except Exception as e: + return {"success": False, "error": str(e)} + + async def login_with_profile(self, profile_name: str) -> Dict[str, Any]: + """Login with config file profile""" + try: + self.client = synapseclient.Synapse(skip_checks=True) + + if profile_name == "authentication (legacy)": + self.client.login(silent=True) + else: + self.client.login(profile=profile_name, silent=True) + + self.is_logged_in = True + self.username = getattr(self.client, "username", None) or getattr( + self.client, "email", "Unknown User" + ) + + return {"success": True, "username": self.username} + except Exception as e: + return {"success": False, "error": str(e)} + + def logout(self) -> None: + """Logout from Synapse""" + if self.client: + self.client.logout() + self.client = None + self.is_logged_in = False + self.username = "" + + async def download_file( + self, + synapse_id: str, + version: Optional[int], + download_path: str, + progress_callback: Callable[[int, str], None], + ) -> Dict[str, Any]: + """Download file from Synapse""" + try: + if not self.is_logged_in: + return {"success": False, "error": "Not logged in"} + + # Create progress capture for TQDM output + progress_capture = TQDMProgressCapture(progress_callback) + + # Redirect stderr to capture TQDM output + original_stderr = sys.stderr + sys.stderr = progress_capture + + try: + file_obj = File( + id=synapse_id, + version_number=version, + path=download_path, + download_file=True, + ) + + file_obj = file_obj.get(synapse_client=self.client) + + if file_obj.path and os.path.exists(file_obj.path): + return {"success": True, "path": file_obj.path} + else: + return { + "success": False, + "error": f"No files associated with entity {synapse_id}", + } + finally: + # Restore original stderr + sys.stderr = original_stderr + + except Exception as e: + return {"success": False, "error": str(e)} + + async def upload_file( + self, + file_path: str, + parent_id: Optional[str], + entity_id: Optional[str], + name: Optional[str], + progress_callback: Callable[[int, str], None], + ) -> Dict[str, Any]: + """Upload file to Synapse""" + try: + if not self.is_logged_in: + return {"success": False, "error": "Not logged in"} + + if not os.path.exists(file_path): + return {"success": False, "error": f"File does not exist: {file_path}"} + + # Create progress capture for TQDM output + progress_capture = TQDMProgressCapture(progress_callback) + + # Redirect stderr to capture TQDM output + original_stderr = sys.stderr + sys.stderr = progress_capture + + try: + if entity_id: # Update existing + file_obj = File( + id=entity_id, path=file_path, name=name, download_file=False + ) + file_obj = file_obj.get(synapse_client=self.client) + file_obj.path = file_path + if name: + file_obj.name = name + else: # Create new + if not parent_id: + return { + "success": False, + "error": "Parent ID is required for new files", + } + + file_obj = File( + path=file_path, + name=name or utils.guess_file_name(file_path), + parent_id=parent_id, + ) + + file_obj = file_obj.store(synapse_client=self.client) + return { + "success": True, + "entity_id": file_obj.id, + "name": file_obj.name, + } + finally: + # Restore original stderr + sys.stderr = original_stderr + + except Exception as e: + return {"success": False, "error": str(e)} diff --git a/synapse_gui.py b/synapsegui/synapse_gui.py similarity index 100% rename from synapse_gui.py rename to synapsegui/synapse_gui.py diff --git a/synapsegui/utils/__init__.py b/synapsegui/utils/__init__.py new file mode 100644 index 000000000..cce9f8b19 --- /dev/null +++ b/synapsegui/utils/__init__.py @@ -0,0 +1,3 @@ +""" +Package initialization for utilities +""" diff --git a/synapsegui/utils/progress.py b/synapsegui/utils/progress.py new file mode 100644 index 000000000..d874e869a --- /dev/null +++ b/synapsegui/utils/progress.py @@ -0,0 +1,25 @@ +""" +Progress handling utilities +""" +from typing import Callable + + +class ProgressManager: + """Manages progress updates for different operations""" + + def __init__(self): + self.callbacks = {} + + def register_callback(self, operation: str, callback: Callable[[int, str], None]): + """Register a progress callback for an operation""" + self.callbacks[operation] = callback + + def update_progress(self, operation: str, progress: int, message: str): + """Update progress for a specific operation""" + if operation in self.callbacks: + self.callbacks[operation](progress, message) + + def unregister_callback(self, operation: str): + """Remove callback for an operation""" + if operation in self.callbacks: + del self.callbacks[operation] diff --git a/synapsegui/utils/tooltips.py b/synapsegui/utils/tooltips.py new file mode 100644 index 000000000..b5ece51e4 --- /dev/null +++ b/synapsegui/utils/tooltips.py @@ -0,0 +1,47 @@ +""" +Tooltip utility for GUI components +""" +import tkinter as tk + + +class ToolTip: + """Create a tooltip for a given widget""" + + def __init__(self, widget, text="widget info"): + self.widget = widget + self.text = text + self.widget.bind("", self.enter) + self.widget.bind("", self.leave) + self.tipwindow = None + + def enter(self, event=None): + self.show_tooltip() + + def leave(self, event=None): + self.hide_tooltip() + + def show_tooltip(self): + if self.tipwindow or not self.text: + return + x, y, cx, cy = self.widget.bbox("insert") + x = x + self.widget.winfo_rootx() + 25 + y = y + cy + self.widget.winfo_rooty() + 25 + self.tipwindow = tw = tk.Toplevel(self.widget) + tw.wm_overrideredirect(True) + tw.wm_geometry("+%d+%d" % (x, y)) + label = tk.Label( + tw, + text=self.text, + justify=tk.LEFT, + background="#ffffe0", + relief=tk.SOLID, + borderwidth=1, + font=("tahoma", "8", "normal"), + ) + label.pack(ipadx=1) + + def hide_tooltip(self): + tw = self.tipwindow + self.tipwindow = None + if tw: + tw.destroy() From 9bfa9d9113618e3f200a53af4a92755c9ae1a480 Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Wed, 13 Aug 2025 15:25:34 +0000 Subject: [PATCH 12/46] Detailed progress tracking --- synapsegui/controllers/app_controller.py | 13 ++- synapsegui/models/synapse_client.py | 16 +++- synapsegui/refactored_main.py | 116 +++++++++++++++++++++++ synapsegui/synapse_gui.py | 4 +- 4 files changed, 143 insertions(+), 6 deletions(-) create mode 100644 synapsegui/refactored_main.py diff --git a/synapsegui/controllers/app_controller.py b/synapsegui/controllers/app_controller.py index 16ad49a89..53ea7ba19 100644 --- a/synapsegui/controllers/app_controller.py +++ b/synapsegui/controllers/app_controller.py @@ -97,9 +97,16 @@ def download_worker(): def progress_callback(progress: int, message: str): self.download_component.update_progress(progress, message) + def detail_callback(detail_message: str): + self.output_component.log_message(detail_message) + result = asyncio.run( self.synapse_client.download_file( - synapse_id, version_num, download_path, progress_callback + synapse_id, + version_num, + download_path, + progress_callback, + detail_callback, ) ) @@ -124,6 +131,9 @@ def upload_worker(): def progress_callback(progress: int, message: str): self.upload_component.update_progress(progress, message) + def detail_callback(detail_message: str): + self.output_component.log_message(detail_message) + result = asyncio.run( self.synapse_client.upload_file( file_path, @@ -131,6 +141,7 @@ def progress_callback(progress: int, message: str): entity_id or None, name or None, progress_callback, + detail_callback, ) ) diff --git a/synapsegui/models/synapse_client.py b/synapsegui/models/synapse_client.py index e04a9b3da..064755723 100644 --- a/synapsegui/models/synapse_client.py +++ b/synapsegui/models/synapse_client.py @@ -14,8 +14,13 @@ class TQDMProgressCapture: """Capture TQDM progress updates for GUI display""" - def __init__(self, progress_callback: Callable[[int, str], None]): + def __init__( + self, + progress_callback: Callable[[int, str], None], + detail_callback: Callable[[str], None], + ): self.progress_callback = progress_callback + self.detail_callback = detail_callback self.last_progress = 0 def write(self, s: str) -> None: @@ -34,7 +39,10 @@ def write(self, s: str) -> None: progress = int(match.group(1)) if progress != self.last_progress: self.last_progress = progress + # Send progress update for progress bar self.progress_callback(progress, f"Progress: {progress}%") + # Send detailed progress line for output logging + self.detail_callback(progress_line) except Exception: pass @@ -103,6 +111,7 @@ async def download_file( version: Optional[int], download_path: str, progress_callback: Callable[[int, str], None], + detail_callback: Callable[[str], None], ) -> Dict[str, Any]: """Download file from Synapse""" try: @@ -110,7 +119,7 @@ async def download_file( return {"success": False, "error": "Not logged in"} # Create progress capture for TQDM output - progress_capture = TQDMProgressCapture(progress_callback) + progress_capture = TQDMProgressCapture(progress_callback, detail_callback) # Redirect stderr to capture TQDM output original_stderr = sys.stderr @@ -147,6 +156,7 @@ async def upload_file( entity_id: Optional[str], name: Optional[str], progress_callback: Callable[[int, str], None], + detail_callback: Callable[[str], None], ) -> Dict[str, Any]: """Upload file to Synapse""" try: @@ -157,7 +167,7 @@ async def upload_file( return {"success": False, "error": f"File does not exist: {file_path}"} # Create progress capture for TQDM output - progress_capture = TQDMProgressCapture(progress_callback) + progress_capture = TQDMProgressCapture(progress_callback, detail_callback) # Redirect stderr to capture TQDM output original_stderr = sys.stderr diff --git a/synapsegui/refactored_main.py b/synapsegui/refactored_main.py new file mode 100644 index 000000000..10ccfbfff --- /dev/null +++ b/synapsegui/refactored_main.py @@ -0,0 +1,116 @@ +""" +Example of how the refactored main GUI would look +""" +import tkinter as tk +from tkinter import ttk +from typing import TYPE_CHECKING + +from .components.download_component import DownloadComponent +from .components.login_component import LoginComponent +from .components.output_component import OutputComponent +from .components.upload_component import UploadComponent +from .controllers.app_controller import ApplicationController + +if TYPE_CHECKING: + pass + + +class RefactoredSynapseGUI: + """Main GUI window - now much simpler and focused on coordination""" + + def __init__(self, root: tk.Tk) -> None: + self.root = root + self.root.title("Synapse Desktop Client") + self.root.geometry("800x700") + + # Initialize controller + self.controller = ApplicationController() + + # Create UI components + self.create_widgets() + + # Connect components to controller + self.controller.set_ui_components( + self.login_component, + self.download_component, + self.upload_component, + self.output_component, + ) + + def create_widgets(self) -> None: + """Create main window layout and components""" + # Main container + main_frame = ttk.Frame(self.root, padding="10") + main_frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S)) + + # Configure grid weights + self.root.columnconfigure(0, weight=1) + self.root.rowconfigure(0, weight=1) + main_frame.columnconfigure(0, weight=1) + main_frame.rowconfigure(3, weight=1) + + # Title + title_label = ttk.Label( + main_frame, text="Synapse Desktop Client", font=("Arial", 16, "bold") + ) + title_label.grid(row=0, column=0, pady=(0, 20)) + + # Login component + self.login_component = LoginComponent( + main_frame, + self.controller.config_manager, + self.controller.handle_login, + self.controller.handle_logout, + ) + + # Operation tabs + self.notebook = ttk.Notebook(main_frame) + self.notebook.grid( + row=2, column=0, sticky=(tk.W, tk.E, tk.N, tk.S), pady=(0, 10) + ) + + # Download component + self.download_component = DownloadComponent( + self.notebook, self.controller.handle_download + ) + self.notebook.add(self.download_component.get_frame(), text="Download File") + + # Upload component + self.upload_component = UploadComponent( + self.notebook, self.controller.handle_upload + ) + self.notebook.add(self.upload_component.get_frame(), text="Upload File") + + # Output component + self.output_component = OutputComponent(main_frame) + self.output_component.get_frame().grid( + row=3, column=0, sticky=(tk.W, tk.E, tk.N, tk.S), pady=(0, 10) + ) + + # Status bar + self.output_component.get_status_bar().grid( + row=4, column=0, sticky=(tk.W, tk.E) + ) + + +def main() -> None: + """Main function - much cleaner now""" + root = tk.Tk() + RefactoredSynapseGUI(root) + + # Center the window + root.update_idletasks() + width = root.winfo_width() + height = root.winfo_height() + x = (root.winfo_screenwidth() // 2) - (width // 2) + y = (root.winfo_screenheight() // 2) - (height // 2) + root.geometry(f"{width}x{height}+{x}+{y}") + + try: + root.mainloop() + except KeyboardInterrupt: + pass + + +if __name__ == "__main__": + main() diff --git a/synapsegui/synapse_gui.py b/synapsegui/synapse_gui.py index 98eeea72e..832fe124f 100644 --- a/synapsegui/synapse_gui.py +++ b/synapsegui/synapse_gui.py @@ -167,7 +167,7 @@ def hide_tooltip(self): class SynapseGUI: def __init__(self, root): self.root = root - self.root.title("Synapse File Manager") + self.root.title("Synapse Desktop Client") self.root.geometry("800x700") self.root.resizable(True, True) @@ -202,7 +202,7 @@ def create_widgets(self): # Title title_label = ttk.Label( - main_frame, text="Synapse File Manager", font=("Arial", 16, "bold") + main_frame, text="Synapse Desktop Client", font=("Arial", 16, "bold") ) title_label.grid(row=0, column=0, pady=(0, 20)) From ade9d93aa6948a2efda846c40b2fa2d79b65da04 Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Wed, 13 Aug 2025 15:55:45 +0000 Subject: [PATCH 13/46] Test out bulk download/upload and icon branding --- build.sh | 3 + build_windows_native_gui.bat | 3 + docs/assets/synapse_icon.png | Bin 0 -> 1100 bytes .../components/bulk_download_component.py | 467 ++++++++++++++++++ .../components/bulk_upload_component.py | 449 +++++++++++++++++ synapsegui/controllers/app_controller.py | 99 +++- synapsegui/models/bulk_item.py | 66 +++ synapsegui/models/synapse_client.py | 258 ++++++++++ synapsegui/refactored_main.py | 33 +- 9 files changed, 1376 insertions(+), 2 deletions(-) create mode 100644 docs/assets/synapse_icon.png create mode 100644 synapsegui/components/bulk_download_component.py create mode 100644 synapsegui/components/bulk_upload_component.py create mode 100644 synapsegui/models/bulk_item.py diff --git a/build.sh b/build.sh index 838f143a5..fff720780 100755 --- a/build.sh +++ b/build.sh @@ -34,6 +34,7 @@ build_for_platform() { pyinstaller \ --onefile \ --name "$output_name" \ + --icon="docs/assets/synapse_logo.png" \ --collect-all=synapseclient \ --hidden-import=synapsegui.models.synapse_client \ --hidden-import=synapsegui.models.config \ @@ -41,6 +42,8 @@ build_for_platform() { --hidden-import=synapsegui.components.download_component \ --hidden-import=synapsegui.components.upload_component \ --hidden-import=synapsegui.components.output_component \ + --hidden-import=synapsegui.components.bulk_download_component \ + --hidden-import=synapsegui.components.bulk_upload_component \ --hidden-import=synapsegui.controllers.app_controller \ --hidden-import=synapsegui.utils.progress \ --hidden-import=synapsegui.utils.tooltips \ diff --git a/build_windows_native_gui.bat b/build_windows_native_gui.bat index 60824f234..35e10a6b5 100644 --- a/build_windows_native_gui.bat +++ b/build_windows_native_gui.bat @@ -30,6 +30,7 @@ REM Build using the refactored structure pyinstaller ^ --onefile ^ --name "synapse-desktop-client%SUFFIX%.exe" ^ + --icon="docs/assets/synapse_logo.png" ^ --collect-all=synapseclient ^ --hidden-import=synapsegui.models.synapse_client ^ --hidden-import=synapsegui.models.config ^ @@ -37,6 +38,8 @@ pyinstaller ^ --hidden-import=synapsegui.components.download_component ^ --hidden-import=synapsegui.components.upload_component ^ --hidden-import=synapsegui.components.output_component ^ + --hidden-import=synapsegui.components.bulk_download_component ^ + --hidden-import=synapsegui.components.bulk_upload_component ^ --hidden-import=synapsegui.controllers.app_controller ^ --hidden-import=synapsegui.utils.progress ^ --hidden-import=synapsegui.utils.tooltips ^ diff --git a/docs/assets/synapse_icon.png b/docs/assets/synapse_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7d2bb6649c846f66ce1cf50a1fdf5312b783c8cc GIT binary patch literal 1100 zcmV-S1he~zP)a4$T{GA z{&e4WI?z0LB3u$YOI_wm@%Hw}8v>yc8VNt?9vS=6?d*tTUjE|feBdNfyz=46xqLJl zS>U9&Kth~6@%^maPC!?OV!JH;fI?omnl`#ubI!HW_y**HR{R2xAY_{*3g#KYb%8`hqOVICMjTYq{=x?6}P~z3;C?yRyt*Ho|)Phz)zh z783G`G%<=rL`<;UE^^w&N3M<>AVm}P|Buad$GXlo&H)16_XoX~wuN=iB%Tl`v$jtc zJ}Ow7<0WYd6y^Q*NN|b{@MJBuo{6{wYAKCrZodS%<qt`|yzwr?cGwPAL(2C4b+KlgucBQz#NTLt} zwC-6w_J3Ra_SDoAJ}fvaa2EFpuWHHX5|_>PJ74yl?25g-#CMJq2(0k?4U9#~D`SVY zQ)>F)cem|8N%-)$==8rg z;|K3Q$n>1Q6Q750}@xJoPxpz|fIh1bu8D~%f z3h18y9O4ZOsR$${WTQ}_Hs(1|81F-7s St43`A0000 None: + """ + Initialize the bulk download component. + + Args: + parent: Parent widget + on_bulk_download: Callback for bulk download operation + on_log_message: Callback for logging messages + on_progress_update: Callback for progress updates + """ + self.parent = parent + self.on_bulk_download = on_bulk_download + self.on_log_message = on_log_message + self.on_progress_update = on_progress_update + + # UI elements + self.frame: Optional[ttk.Frame] = None + self.container_id_var = tk.StringVar() + self.download_path_var = tk.StringVar() + self.recursive_var = tk.BooleanVar(value=True) + self.tree: Optional[ttk.Treeview] = None + self.progress_var = tk.StringVar() + + # Data + self.container_items: List[BulkItem] = [] + self.selected_items: Dict[str, BulkItem] = {} + + def create_ui(self) -> ttk.Frame: + """Create and return the bulk download UI.""" + self.frame = ttk.Frame(self.parent) + + # Container ID section + container_frame = ttk.LabelFrame(self.frame, text="Container Information") + container_frame.pack(fill="x", padx=10, pady=5) + + ttk.Label(container_frame, text="Project/Folder ID:").grid( + row=0, column=0, sticky="w", padx=5, pady=5 + ) + ttk.Entry(container_frame, textvariable=self.container_id_var, width=20).grid( + row=0, column=1, padx=5, pady=5 + ) + + ttk.Checkbutton( + container_frame, + text="Recursive (include subfolders)", + variable=self.recursive_var, + ).grid(row=0, column=2, padx=10, pady=5) + + ttk.Button( + container_frame, + text="Enumerate Contents", + command=self._on_enumerate_clicked, + ).grid(row=0, column=3, padx=5, pady=5) + + # Progress section + progress_frame = ttk.Frame(self.frame) + progress_frame.pack(fill="x", padx=10, pady=5) + + ttk.Label(progress_frame, text="Status:").pack(side="left") + ttk.Label(progress_frame, textvariable=self.progress_var).pack( + side="left", padx=(5, 0) + ) + + # Selection tree section + tree_frame = ttk.LabelFrame(self.frame, text="Contents Selection") + tree_frame.pack(fill="both", expand=True, padx=10, pady=5) + + # Tree with scrollbars + tree_container = ttk.Frame(tree_frame) + tree_container.pack(fill="both", expand=True, padx=5, pady=5) + + self.tree = ttk.Treeview( + tree_container, + columns=("Type", "Size"), + show="tree headings", + selectmode="extended", + ) + + # Configure columns + self.tree.heading("#0", text="Name") + self.tree.heading("Type", text="Type") + self.tree.heading("Size", text="Size") + + self.tree.column("#0", width=300) + self.tree.column("Type", width=100) + self.tree.column("Size", width=100) + + # Scrollbars for tree + v_scrollbar = ttk.Scrollbar( + tree_container, orient="vertical", command=self.tree.yview + ) + h_scrollbar = ttk.Scrollbar( + tree_container, orient="horizontal", command=self.tree.xview + ) + self.tree.configure( + yscrollcommand=v_scrollbar.set, xscrollcommand=h_scrollbar.set + ) + + self.tree.grid(row=0, column=0, sticky="nsew") + v_scrollbar.grid(row=0, column=1, sticky="ns") + h_scrollbar.grid(row=1, column=0, sticky="ew") + + tree_container.grid_rowconfigure(0, weight=1) + tree_container.grid_columnconfigure(0, weight=1) + + # Selection buttons + selection_frame = ttk.Frame(tree_frame) + selection_frame.pack(fill="x", padx=5, pady=5) + + ttk.Button(selection_frame, text="Select All", command=self._select_all).pack( + side="left", padx=5 + ) + ttk.Button(selection_frame, text="Select None", command=self._select_none).pack( + side="left", padx=5 + ) + ttk.Button( + selection_frame, text="Select Files Only", command=self._select_files_only + ).pack(side="left", padx=5) + ttk.Button( + selection_frame, + text="Select Folders Only", + command=self._select_folders_only, + ).pack(side="left", padx=5) + + # Download section + download_frame = ttk.LabelFrame(self.frame, text="Download Options") + download_frame.pack(fill="x", padx=10, pady=5) + + ttk.Label(download_frame, text="Download Path:").grid( + row=0, column=0, sticky="w", padx=5, pady=5 + ) + ttk.Entry(download_frame, textvariable=self.download_path_var, width=50).grid( + row=0, column=1, padx=5, pady=5 + ) + ttk.Button( + download_frame, text="Browse", command=self._browse_download_path + ).grid(row=0, column=2, padx=5, pady=5) + + ttk.Button( + download_frame, + text="Download Selected Items", + command=self._on_download_clicked, + ).grid(row=1, column=1, pady=10) + + # Bind tree selection + self.tree.bind("<>", self._on_tree_selection_changed) + + return self.frame + + def _on_enumerate_clicked(self) -> None: + """Handle enumerate button click.""" + container_id = self.container_id_var.get().strip() + if not container_id: + messagebox.showerror("Error", "Please enter a Project or Folder ID") + return + + if not container_id.startswith(("syn", "project")): + messagebox.showerror("Error", "ID must start with 'syn' or 'project'") + return + + # Start enumeration in background + self._start_enumeration_task(container_id, self.recursive_var.get()) + + def _start_enumeration_task(self, container_id: str, recursive: bool) -> None: + """Start the enumeration task asynchronously.""" + self.progress_var.set("Enumerating contents...") + self.on_log_message( + f"Starting enumeration of {container_id} (recursive={recursive})", False + ) + + # Clear previous results + self._clear_tree() + self.container_items.clear() + self.selected_items.clear() + + # Create enumeration task + task = asyncio.create_task( + self._enumerate_container_async(container_id, recursive) + ) + + # Schedule completion callback + task.add_done_callback(self._on_enumeration_complete) + + async def _enumerate_container_async( + self, container_id: str, recursive: bool + ) -> None: + """ + Enumerate container contents asynchronously. + + Args: + container_id: Synapse ID of container to enumerate + recursive: Whether to enumerate recursively + """ + try: + # Determine container type and create appropriate object + if container_id.startswith("project"): + container = Project(id=container_id) + else: + container = Folder(id=container_id) + + # Sync metadata only (download_file=False) + await container.sync_from_synapse_async( + download_file=False, recursive=recursive + ) + + # Convert to BulkItem objects + self.container_items = self._convert_to_bulk_items(container, recursive) + + except Exception as e: + self.on_log_message(f"Error during enumeration: {str(e)}", True) + raise + + def _convert_to_bulk_items(self, container: Any, recursive: bool) -> List[BulkItem]: + """ + Convert container contents to BulkItem objects. + + Args: + container: Container object with populated files/folders + recursive: Whether enumeration was recursive + + Returns: + List of BulkItem objects + """ + items = [] + + # Add files + if hasattr(container, "files"): + for file in container.files: + items.append( + BulkItem( + synapse_id=file.id, + name=file.name, + item_type="File", + size=file.file_handle.content_size if file.file_handle else 0, + parent_id=file.parent_id, + path=file.path if hasattr(file, "path") else None, + ) + ) + + # Add folders + if hasattr(container, "folders"): + for folder in container.folders: + items.append( + BulkItem( + synapse_id=folder.id, + name=folder.name, + item_type="Folder", + size=None, + parent_id=folder.parent_id, + path=folder.path if hasattr(folder, "path") else None, + ) + ) + + # Recursively add folder contents if recursive + if recursive: + items.extend(self._convert_to_bulk_items(folder, recursive)) + + return items + + def _on_enumeration_complete(self, task: asyncio.Task) -> None: + """Handle completion of enumeration task.""" + try: + task.result() # This will raise any exception that occurred + + # Update UI with results + self._populate_tree() + count = len(self.container_items) + self.progress_var.set(f"Found {count} items") + self.on_log_message(f"Enumeration complete: {count} items found", False) + + except Exception as e: + self.progress_var.set("Enumeration failed") + self.on_log_message(f"Enumeration failed: {str(e)}", True) + + def _populate_tree(self) -> None: + """Populate the tree view with enumerated items.""" + self._clear_tree() + + # Group items by parent to build tree structure + parent_map = {} + root_items = [] + + for item in self.container_items: + if item.parent_id: + if item.parent_id not in parent_map: + parent_map[item.parent_id] = [] + parent_map[item.parent_id].append(item) + else: + root_items.append(item) + + # Insert root items + for item in root_items: + self._insert_item_with_children(item, "", parent_map) + + def _insert_item_with_children( + self, item: BulkItem, parent_iid: str, parent_map: Dict[str, List[BulkItem]] + ) -> str: + """ + Insert an item and its children into the tree. + + Args: + item: Item to insert + parent_iid: Parent item ID in tree + parent_map: Map of parent IDs to child items + + Returns: + Tree item ID + """ + # Format size + size_str = self._format_size(item.size) if item.size else "" + + # Insert item + iid = self.tree.insert( + parent_iid, + "end", + text=item.name, + values=(item.item_type, size_str), + tags=(item.synapse_id,), + ) + + # Insert children if any + if item.synapse_id in parent_map: + for child in parent_map[item.synapse_id]: + self._insert_item_with_children(child, iid, parent_map) + + return iid + + def _format_size(self, size: Any) -> str: + """Format file size for display.""" + if not isinstance(size, (int, float)): + return "" + + for unit in ["B", "KB", "MB", "GB", "TB"]: + if size < 1024.0: + return f"{size:.1f} {unit}" + size /= 1024.0 + return f"{size:.1f} PB" + + def _clear_tree(self) -> None: + """Clear all items from the tree.""" + if self.tree: + for item in self.tree.get_children(): + self.tree.delete(item) + + def _select_all(self) -> None: + """Select all items in the tree.""" + if self.tree: + self.tree.selection_set(self.tree.get_children()) + self._update_selected_items() + + def _select_none(self) -> None: + """Deselect all items in the tree.""" + if self.tree: + self.tree.selection_remove(self.tree.selection()) + self._update_selected_items() + + def _select_files_only(self) -> None: + """Select only file items.""" + if self.tree: + self.tree.selection_remove(self.tree.selection()) + file_items = [] + self._collect_items_by_type(self.tree.get_children(), "File", file_items) + if file_items: + self.tree.selection_set(file_items) + self._update_selected_items() + + def _select_folders_only(self) -> None: + """Select only folder items.""" + if self.tree: + self.tree.selection_remove(self.tree.selection()) + folder_items = [] + self._collect_items_by_type( + self.tree.get_children(), "Folder", folder_items + ) + if folder_items: + self.tree.selection_set(folder_items) + self._update_selected_items() + + def _collect_items_by_type( + self, items: List[str], item_type: str, result: List[str] + ) -> None: + """Recursively collect items of specific type.""" + for item_id in items: + item_values = self.tree.item(item_id, "values") + if item_values and item_values[0] == item_type: + result.append(item_id) + + # Check children + children = self.tree.get_children(item_id) + if children: + self._collect_items_by_type(children, item_type, result) + + def _on_tree_selection_changed(self, event: tk.Event) -> None: + """Handle tree selection change.""" + self._update_selected_items() + + def _update_selected_items(self) -> None: + """Update the selected items dictionary.""" + self.selected_items.clear() + + if not self.tree: + return + + selection = self.tree.selection() + for item_id in selection: + # Get synapse ID from tags + tags = self.tree.item(item_id, "tags") + if tags: + synapse_id = tags[0] + # Find the corresponding BulkItem + for bulk_item in self.container_items: + if bulk_item.synapse_id == synapse_id: + self.selected_items[synapse_id] = bulk_item + break + + def _browse_download_path(self) -> None: + """Browse for download directory.""" + path = filedialog.askdirectory(title="Select Download Directory") + if path: + self.download_path_var.set(path) + + def _on_download_clicked(self) -> None: + """Handle download button click.""" + if not self.selected_items: + messagebox.showwarning("Warning", "Please select items to download") + return + + download_path = self.download_path_var.get().strip() + if not download_path: + messagebox.showerror("Error", "Please select a download directory") + return + + # Get list of selected items + selected_list = list(self.selected_items.values()) + + self.on_log_message( + f"Starting bulk download of {len(selected_list)} items", False + ) + + # Call the bulk download callback + self.on_bulk_download(selected_list, download_path, self.recursive_var.get()) diff --git a/synapsegui/components/bulk_upload_component.py b/synapsegui/components/bulk_upload_component.py new file mode 100644 index 000000000..7402bef67 --- /dev/null +++ b/synapsegui/components/bulk_upload_component.py @@ -0,0 +1,449 @@ +""" +Bulk Upload Component for Synapse Desktop Client. + +This component provides functionality to upload multiple files and folders +to Synapse containers with directory structure preservation. +""" + +import os +import tkinter as tk +from pathlib import Path +from tkinter import filedialog, messagebox, ttk +from typing import Callable, Dict, List, Optional + +from ..models.bulk_item import BulkItem + + +class BulkUploadComponent: + """Component for bulk upload operations with file/folder selection.""" + + def __init__( + self, + parent: tk.Widget, + on_bulk_upload: Callable[[List[BulkItem], str, bool], None], + on_log_message: Callable[[str, bool], None], + on_progress_update: Callable[[str, int], None], + ) -> None: + """ + Initialize the bulk upload component. + + Args: + parent: Parent widget + on_bulk_upload: Callback for bulk upload operation + on_log_message: Callback for logging messages + on_progress_update: Callback for progress updates + """ + self.parent = parent + self.on_bulk_upload = on_bulk_upload + self.on_log_message = on_log_message + self.on_progress_update = on_progress_update + + # UI elements + self.frame: Optional[ttk.Frame] = None + self.parent_id_var = tk.StringVar() + self.preserve_structure_var = tk.BooleanVar(value=True) + self.tree: Optional[ttk.Treeview] = None + self.status_var = tk.StringVar() + + # Data + self.upload_items: List[BulkItem] = [] + self.selected_items: Dict[str, BulkItem] = {} + + def create_ui(self) -> ttk.Frame: + """Create and return the bulk upload UI.""" + self.frame = ttk.Frame(self.parent) + + # Parent container section + parent_frame = ttk.LabelFrame(self.frame, text="Upload Destination") + parent_frame.pack(fill="x", padx=10, pady=5) + + ttk.Label(parent_frame, text="Parent Folder ID:").grid( + row=0, column=0, sticky="w", padx=5, pady=5 + ) + ttk.Entry(parent_frame, textvariable=self.parent_id_var, width=20).grid( + row=0, column=1, padx=5, pady=5 + ) + + ttk.Checkbutton( + parent_frame, + text="Preserve directory structure", + variable=self.preserve_structure_var, + ).grid(row=0, column=2, padx=10, pady=5) + + # File selection section + selection_frame = ttk.LabelFrame(self.frame, text="File Selection") + selection_frame.pack(fill="x", padx=10, pady=5) + + buttons_frame = ttk.Frame(selection_frame) + buttons_frame.pack(fill="x", padx=5, pady=5) + + ttk.Button(buttons_frame, text="Add Files", command=self._add_files).pack( + side="left", padx=5 + ) + + ttk.Button(buttons_frame, text="Add Folder", command=self._add_folder).pack( + side="left", padx=5 + ) + + ttk.Button( + buttons_frame, text="Remove Selected", command=self._remove_selected + ).pack(side="left", padx=5) + + ttk.Button(buttons_frame, text="Clear All", command=self._clear_all).pack( + side="left", padx=5 + ) + + # Status section + status_frame = ttk.Frame(self.frame) + status_frame.pack(fill="x", padx=10, pady=5) + + ttk.Label(status_frame, text="Status:").pack(side="left") + ttk.Label(status_frame, textvariable=self.status_var).pack( + side="left", padx=(5, 0) + ) + + # File list tree section + tree_frame = ttk.LabelFrame(self.frame, text="Files to Upload") + tree_frame.pack(fill="both", expand=True, padx=10, pady=5) + + # Tree with scrollbars + tree_container = ttk.Frame(tree_frame) + tree_container.pack(fill="both", expand=True, padx=5, pady=5) + + self.tree = ttk.Treeview( + tree_container, + columns=("Type", "Size", "Local Path"), + show="tree headings", + selectmode="extended", + ) + + # Configure columns + self.tree.heading("#0", text="Name") + self.tree.heading("Type", text="Type") + self.tree.heading("Size", text="Size") + self.tree.heading("Local Path", text="Local Path") + + self.tree.column("#0", width=250) + self.tree.column("Type", width=100) + self.tree.column("Size", width=100) + self.tree.column("Local Path", width=400) + + # Scrollbars for tree + v_scrollbar = ttk.Scrollbar( + tree_container, orient="vertical", command=self.tree.yview + ) + h_scrollbar = ttk.Scrollbar( + tree_container, orient="horizontal", command=self.tree.xview + ) + self.tree.configure( + yscrollcommand=v_scrollbar.set, xscrollcommand=h_scrollbar.set + ) + + self.tree.grid(row=0, column=0, sticky="nsew") + v_scrollbar.grid(row=0, column=1, sticky="ns") + h_scrollbar.grid(row=1, column=0, sticky="ew") + + tree_container.grid_rowconfigure(0, weight=1) + tree_container.grid_columnconfigure(0, weight=1) + + # Upload section + upload_frame = ttk.LabelFrame(self.frame, text="Upload Options") + upload_frame.pack(fill="x", padx=10, pady=5) + + ttk.Button( + upload_frame, text="Start Bulk Upload", command=self._on_upload_clicked + ).pack(pady=10) + + # Bind tree selection + self.tree.bind("<>", self._on_tree_selection_changed) + + return self.frame + + def _add_files(self) -> None: + """Add individual files to upload list.""" + files = filedialog.askopenfilenames( + title="Select Files to Upload", filetypes=[("All Files", "*.*")] + ) + + if files: + added_count = 0 + for file_path in files: + if self._add_file_item(file_path): + added_count += 1 + + self._refresh_tree() + self._update_status() + self.on_log_message(f"Added {added_count} files", False) + + def _add_folder(self) -> None: + """Add a folder and its contents to upload list.""" + folder_path = filedialog.askdirectory(title="Select Folder to Upload") + + if folder_path: + added_count = self._add_folder_recursive(folder_path) + self._refresh_tree() + self._update_status() + self.on_log_message(f"Added folder with {added_count} items", False) + + def _add_file_item(self, file_path: str) -> bool: + """ + Add a single file to the upload list. + + Args: + file_path: Path to the file + + Returns: + True if file was added, False if already exists + """ + # Check if already added + for item in self.upload_items: + if item.path == file_path: + return False + + # Get file info + path_obj = Path(file_path) + if not path_obj.exists(): + return False + + stat = path_obj.stat() + + # Create BulkItem + item = BulkItem( + synapse_id="", # Will be set after upload + name=path_obj.name, + item_type="File", + size=stat.st_size, + modified=None, # Will be set from file timestamp if needed + parent_id=None, # Will be determined during upload + path=file_path, + ) + + self.upload_items.append(item) + return True + + def _add_folder_recursive(self, folder_path: str) -> int: + """ + Add a folder and all its contents recursively. + + Args: + folder_path: Path to the folder + + Returns: + Number of items added + """ + added_count = 0 + folder_obj = Path(folder_path) + + if not folder_obj.exists() or not folder_obj.is_dir(): + return 0 + + # Add the folder itself + folder_item = BulkItem( + synapse_id="", + name=folder_obj.name, + item_type="Folder", + size=None, + modified=None, + parent_id=None, + path=folder_path, + ) + + # Check if folder already added + folder_exists = any(item.path == folder_path for item in self.upload_items) + if not folder_exists: + self.upload_items.append(folder_item) + added_count += 1 + + # Add all files and subfolders + try: + for item_path in folder_obj.rglob("*"): + if item_path.is_file(): + if self._add_file_item(str(item_path)): + added_count += 1 + elif item_path.is_dir() and item_path != folder_obj: + # Add subdirectory if not already added + if not any( + item.path == str(item_path) for item in self.upload_items + ): + subfolder_item = BulkItem( + synapse_id="", + name=item_path.name, + item_type="Folder", + size=None, + modified=None, + parent_id=None, + path=str(item_path), + ) + self.upload_items.append(subfolder_item) + added_count += 1 + except PermissionError as e: + self.on_log_message(f"Permission error accessing {folder_path}: {e}", True) + + return added_count + + def _remove_selected(self) -> None: + """Remove selected items from upload list.""" + if not self.tree or not self.tree.selection(): + return + + selected_paths = [] + for item_id in self.tree.selection(): + item_values = self.tree.item(item_id, "values") + if len(item_values) >= 3: + selected_paths.append(item_values[2]) # Local Path column + + # Remove items + original_count = len(self.upload_items) + self.upload_items = [ + item for item in self.upload_items if item.path not in selected_paths + ] + removed_count = original_count - len(self.upload_items) + + if removed_count > 0: + self._refresh_tree() + self._update_status() + self.on_log_message(f"Removed {removed_count} items", False) + + def _clear_all(self) -> None: + """Clear all items from upload list.""" + if self.upload_items: + count = len(self.upload_items) + self.upload_items.clear() + self._refresh_tree() + self._update_status() + self.on_log_message(f"Cleared {count} items", False) + + def _refresh_tree(self) -> None: + """Refresh the tree view with current upload items.""" + # Clear tree + if self.tree: + for item in self.tree.get_children(): + self.tree.delete(item) + + # Group items by directory structure if preserving structure + if self.preserve_structure_var.get(): + self._populate_tree_structured() + else: + self._populate_tree_flat() + + def _populate_tree_structured(self) -> None: + """Populate tree with directory structure preserved.""" + # Build directory tree + dirs_added = set() + + # Sort items by path depth to ensure parents are added first + sorted_items = sorted(self.upload_items, key=lambda x: len(Path(x.path).parts)) + + for item in sorted_items: + path_obj = Path(item.path) + + # Ensure parent directories are in tree + parent_iid = "" + current_path = "" + + for part in path_obj.parts[:-1]: # Exclude the file/folder name itself + current_path = ( + os.path.join(current_path, part) if current_path else part + ) + dir_key = (parent_iid, part) + + if dir_key not in dirs_added: + parent_iid = self.tree.insert( + parent_iid, + "end", + text=part, + values=("Directory", "", current_path), + tags=("directory",), + ) + dirs_added.add(dir_key) + else: + # Find existing directory item + for child in self.tree.get_children(parent_iid): + if self.tree.item(child, "text") == part: + parent_iid = child + break + + # Add the actual item + size_str = item.get_display_size() + self.tree.insert( + parent_iid, + "end", + text=item.name, + values=(item.item_type, size_str, item.path), + tags=(item.path,), + ) + + def _populate_tree_flat(self) -> None: + """Populate tree with flat structure (no directories).""" + for item in self.upload_items: + size_str = item.get_display_size() + self.tree.insert( + "", + "end", + text=item.name, + values=(item.item_type, size_str, item.path), + tags=(item.path,), + ) + + def _update_status(self) -> None: + """Update status display.""" + file_count = sum(1 for item in self.upload_items if item.item_type == "File") + folder_count = sum( + 1 for item in self.upload_items if item.item_type == "Folder" + ) + + total_size = sum(item.size or 0 for item in self.upload_items if item.size) + size_str = self._format_size(total_size) if total_size > 0 else "0 B" + + status_text = f"{file_count} files, {folder_count} folders, {size_str}" + self.status_var.set(status_text) + + def _format_size(self, size: int) -> str: + """Format file size for display.""" + size = float(size) + for unit in ["B", "KB", "MB", "GB", "TB"]: + if size < 1024.0: + return f"{size:.1f} {unit}" + size /= 1024.0 + return f"{size:.1f} PB" + + def _on_tree_selection_changed(self, event: tk.Event) -> None: + """Handle tree selection change.""" + # Update selected items for potential removal + pass + + def _on_upload_clicked(self) -> None: + """Handle upload button click.""" + if not self.upload_items: + messagebox.showwarning("Warning", "Please add files or folders to upload") + return + + parent_id = self.parent_id_var.get().strip() + if not parent_id: + messagebox.showerror("Error", "Please enter a parent folder ID") + return + + if not parent_id.startswith("syn"): + messagebox.showerror("Error", "Parent ID must start with 'syn'") + return + + # Confirm upload + file_count = sum(1 for item in self.upload_items if item.item_type == "File") + folder_count = sum( + 1 for item in self.upload_items if item.item_type == "Folder" + ) + + message = ( + f"Upload {file_count} files and {folder_count} folders to {parent_id}?" + ) + if not messagebox.askyesno("Confirm Upload", message): + return + + self.on_log_message( + f"Starting bulk upload of {len(self.upload_items)} items", False + ) + + # Call the bulk upload callback + self.on_bulk_upload( + self.upload_items.copy(), parent_id, self.preserve_structure_var.get() + ) diff --git a/synapsegui/controllers/app_controller.py b/synapsegui/controllers/app_controller.py index 53ea7ba19..b87ce7473 100644 --- a/synapsegui/controllers/app_controller.py +++ b/synapsegui/controllers/app_controller.py @@ -25,13 +25,21 @@ def __init__(self) -> None: self.output_component = None def set_ui_components( - self, login_component, download_component, upload_component, output_component + self, + login_component, + download_component, + upload_component, + output_component, + bulk_download_component=None, + bulk_upload_component=None, ) -> None: """Set references to UI components""" self.login_component = login_component self.download_component = download_component self.upload_component = upload_component self.output_component = output_component + self.bulk_download_component = bulk_download_component + self.bulk_upload_component = bulk_upload_component def handle_login(self, mode: str, credentials: Dict[str, Any]) -> None: """Handle login request from UI""" @@ -166,3 +174,92 @@ def _enable_operations(self, enabled: bool) -> None: self.download_component.set_enabled(enabled) if self.upload_component: self.upload_component.set_enabled(enabled) + if self.bulk_download_component: + pass + if self.bulk_upload_component: + pass + + def handle_bulk_download( + self, items: list, download_path: str, recursive: bool + ) -> None: + """ + Handle bulk download request from UI. + + Args: + items: List of BulkItem objects to download + download_path: Local directory path where files will be downloaded + recursive: Whether to download folder contents recursively. + If True, all subfolders and files within folders will be downloaded. + If False, only the immediate contents of folders will be downloaded. + """ + + def bulk_download_worker(): + result = asyncio.run( + self.synapse_client.bulk_download( + items, + download_path, + recursive, + self._on_progress_update, + self._on_detail_message, + ) + ) + + if result["success"]: + self.output_component.log_message( + f"Bulk download complete: {result['summary']}" + ) + if self.bulk_download_component: + # Could add a success notification method here if desired + pass + else: + self.output_component.log_message( + f"Bulk download failed: {result['error']}", error=True + ) + + self.output_component.log_message( + f"Starting bulk download of {len(items)} items..." + ) + threading.Thread(target=bulk_download_worker, daemon=True).start() + + def handle_bulk_upload( + self, items: list, parent_id: str, preserve_structure: bool + ) -> None: + """Handle bulk upload request from UI""" + + def bulk_upload_worker(): + result = asyncio.run( + self.synapse_client.bulk_upload( + items, + parent_id, + preserve_structure, + self._on_progress_update, + self._on_detail_message, + ) + ) + + if result["success"]: + self.output_component.log_message( + f"Bulk upload complete: {result['summary']}" + ) + if self.bulk_upload_component: + # Could add a success notification method here if desired + pass + else: + self.output_component.log_message( + f"Bulk upload failed: {result['error']}", error=True + ) + + self.output_component.log_message( + f"Starting bulk upload of {len(items)} items..." + ) + threading.Thread(target=bulk_upload_worker, daemon=True).start() + + def _on_progress_update(self, progress: int, message: str) -> None: + """Handle progress updates from bulk operations""" + if self.output_component: + self.output_component.log_message(f"Progress: {progress}% - {message}") + + def _on_detail_message(self, message: str) -> None: + """Handle detailed progress messages from bulk operations""" + if self.output_component: + self.output_component.log_message(message) diff --git a/synapsegui/models/bulk_item.py b/synapsegui/models/bulk_item.py new file mode 100644 index 000000000..7ad01eb21 --- /dev/null +++ b/synapsegui/models/bulk_item.py @@ -0,0 +1,66 @@ +""" +Bulk Item Model for Synapse Desktop Client. + +This module contains the data model for items in bulk operations. +""" + +from dataclasses import dataclass +from typing import Optional + + +@dataclass +class BulkItem: + """ + Represents an item in bulk download/upload operations. + + This class holds metadata about a Synapse entity that can be + selected for bulk operations. + """ + + synapse_id: str + name: str + item_type: str # "File" or "Folder" only + size: Optional[int] = None + parent_id: Optional[str] = None + path: Optional[str] = None + + def __str__(self) -> str: + """Return string representation of the item.""" + return f"{self.item_type}: {self.name} ({self.synapse_id})" + + def is_downloadable(self) -> bool: + """ + Check if this item type can be downloaded. + + Returns: + True if the item can be downloaded, False otherwise + """ + return self.item_type in ["File", "Folder"] + + def get_display_size(self) -> str: + """ + Get formatted size for display. + + Returns: + Formatted size string or empty if no size + """ + if not self.size or not isinstance(self.size, (int, float)): + return "" + + size = float(self.size) + for unit in ["B", "KB", "MB", "GB", "TB"]: + if size < 1024.0: + return f"{size:.1f} {unit}" + size /= 1024.0 + return f"{size:.1f} PB" + + def get_display_modified(self) -> str: + """ + Get formatted modification date for display. + + Returns: + Formatted date string or empty if no date + """ + if not self.modified: + return "" + return self.modified.strftime("%Y-%m-%d %H:%M") diff --git a/synapsegui/models/synapse_client.py b/synapsegui/models/synapse_client.py index 064755723..51178c618 100644 --- a/synapsegui/models/synapse_client.py +++ b/synapsegui/models/synapse_client.py @@ -207,3 +207,261 @@ async def upload_file( except Exception as e: return {"success": False, "error": str(e)} + + async def bulk_download( + self, + items: list, + download_path: str, + recursive: bool, + progress_callback: Callable[[int, str], None], + detail_callback: Callable[[str], None], + ) -> Dict[str, Any]: + """ + Download multiple items from Synapse. + + Args: + items: List of BulkItem objects to download + download_path: Base directory for downloads + recursive: Whether to download folders recursively + progress_callback: Callback for progress updates + detail_callback: Callback for detailed progress messages + + Returns: + Dictionary with success status and results + """ + try: + if not self.client: + return {"success": False, "error": "Not logged in"} + + results = [] + total_items = len(items) + + for i, item in enumerate(items): + # Update overall progress + overall_progress = int((i / total_items) * 100) + progress_callback( + overall_progress, f"Processing item {i + 1} of {total_items}" + ) + detail_callback(f"Downloading {item.name} ({item.synapse_id})") + + try: + if item.item_type == "File": + # Download individual file + result = await self.download_file( + synapse_id=item.synapse_id, + version=None, + download_path=download_path, + progress_callback=progress_callback, + detail_callback=detail_callback, + ) + results.append({"item": item, "result": result}) + elif item.item_type == "Folder": + # Use sync_from_synapse_async for folders + from synapseclient.models import Folder + + folder = Folder(id=item.synapse_id) + await folder.sync_from_synapse_async( + path=os.path.join(download_path, item.name), + download_file=True, + recursive=recursive, + synapse_client=self.client, + ) + + results.append( + { + "item": item, + "result": { + "success": True, + "message": "Folder downloaded", + }, + } + ) + else: + # Skip non-downloadable items + results.append( + { + "item": item, + "result": { + "success": False, + "error": f"Cannot download {item.item_type}", + }, + } + ) + + except Exception as e: + results.append( + {"item": item, "result": {"success": False, "error": str(e)}} + ) + + # Final progress + progress_callback(100, "Bulk download complete") + + # Count successes and failures + successes = sum(1 for r in results if r["result"].get("success", False)) + failures = total_items - successes + + return { + "success": True, + "results": results, + "summary": f"Downloaded {successes} items, {failures} failed", + } + + except Exception as e: + return {"success": False, "error": str(e)} + + async def bulk_upload( + self, + items: list, + parent_id: str, + preserve_structure: bool, + progress_callback: Callable[[int, str], None], + detail_callback: Callable[[str], None], + ) -> Dict[str, Any]: + """ + Upload multiple items to Synapse. + + Args: + items: List of BulkItem objects to upload + parent_id: Parent folder ID in Synapse + preserve_structure: Whether to preserve directory structure + progress_callback: Callback for progress updates + detail_callback: Callback for detailed progress messages + + Returns: + Dictionary with success status and results + """ + try: + if not self.client: + return {"success": False, "error": "Not logged in"} + + results = [] + + # If preserving structure, we need to create folders first + folder_mapping = {} + if preserve_structure: + folder_mapping = await self._create_folder_structure( + items, parent_id, progress_callback, detail_callback + ) + + # Upload files + file_items = [item for item in items if item.item_type == "File"] + + for i, item in enumerate(file_items): + # Update overall progress + overall_progress = int((i / len(file_items)) * 100) + progress_callback( + overall_progress, f"Uploading file {i + 1} of {len(file_items)}" + ) + detail_callback(f"Uploading {item.name}") + + try: + # Determine target parent + target_parent = parent_id + if preserve_structure and item.path: + # Find the appropriate parent folder + item_dir = os.path.dirname(item.path) + if item_dir in folder_mapping: + target_parent = folder_mapping[item_dir] + + result = await self.upload_file( + file_path=item.path, + parent_id=target_parent, + entity_id=None, + name=item.name, + progress_callback=progress_callback, + detail_callback=detail_callback, + ) + + results.append({"item": item, "result": result}) + + except Exception as e: + results.append( + {"item": item, "result": {"success": False, "error": str(e)}} + ) + + # Final progress + progress_callback(100, "Bulk upload complete") + + # Count successes and failures + successes = sum(1 for r in results if r["result"].get("success", False)) + failures = len(file_items) - successes + + return { + "success": True, + "results": results, + "summary": f"Uploaded {successes} files, {failures} failed", + } + + except Exception as e: + return {"success": False, "error": str(e)} + + async def _create_folder_structure( + self, + items: list, + base_parent_id: str, + progress_callback: Callable[[int, str], None], + detail_callback: Callable[[str], None], + ) -> Dict[str, str]: + """ + Create folder structure in Synapse for bulk upload. + + Args: + items: List of BulkItem objects + base_parent_id: Base parent folder ID + progress_callback: Callback for progress updates + detail_callback: Callback for detailed progress messages + + Returns: + Dictionary mapping local paths to Synapse folder IDs + """ + from pathlib import Path + + from synapseclient.models import Folder + + folder_mapping = {} + + # Get all unique directory paths + dir_paths = set() + for item in items: + if item.path and item.item_type == "File": + dir_path = os.path.dirname(item.path) + if dir_path: + # Add all parent directories + path_obj = Path(dir_path) + for parent in [path_obj] + list(path_obj.parents): + if str(parent) != ".": + dir_paths.add(str(parent)) + + # Sort by depth (create parents first) + sorted_dirs = sorted(dir_paths, key=lambda x: len(Path(x).parts)) + + detail_callback("Creating folder structure...") + + for i, dir_path in enumerate(sorted_dirs): + if i % 5 == 0: # Update progress periodically + progress = int( + (i / len(sorted_dirs)) * 50 + ) # Use 50% for folder creation + progress_callback( + progress, f"Creating folders ({i}/{len(sorted_dirs)})" + ) + + path_obj = Path(dir_path) + folder_name = path_obj.name + + # Determine parent folder ID + parent_folder_id = base_parent_id + parent_path = str(path_obj.parent) + if parent_path != "." and parent_path in folder_mapping: + parent_folder_id = folder_mapping[parent_path] + + # Create folder + try: + folder = Folder(name=folder_name, parent_id=parent_folder_id) + folder = folder.store(synapse_client=self.client) + folder_mapping[dir_path] = folder.id + detail_callback(f"Created folder: {folder_name} ({folder.id})") + except Exception as e: + detail_callback(f"Error creating folder {folder_name}: {str(e)}") + + return folder_mapping diff --git a/synapsegui/refactored_main.py b/synapsegui/refactored_main.py index 10ccfbfff..67865e9d3 100644 --- a/synapsegui/refactored_main.py +++ b/synapsegui/refactored_main.py @@ -1,10 +1,12 @@ """ -Example of how the refactored main GUI would look +Example of how the refactored main GUI would look with bulk operations """ import tkinter as tk from tkinter import ttk from typing import TYPE_CHECKING +from .components.bulk_download_component import BulkDownloadComponent +from .components.bulk_upload_component import BulkUploadComponent from .components.download_component import DownloadComponent from .components.login_component import LoginComponent from .components.output_component import OutputComponent @@ -35,6 +37,8 @@ def __init__(self, root: tk.Tk) -> None: self.download_component, self.upload_component, self.output_component, + self.bulk_download_component, + self.bulk_upload_component, ) def create_widgets(self) -> None: @@ -87,11 +91,38 @@ def create_widgets(self) -> None: row=3, column=0, sticky=(tk.W, tk.E, tk.N, tk.S), pady=(0, 10) ) + # Bulk Download component + self.bulk_download_component = BulkDownloadComponent( + self.notebook, + self.controller.handle_bulk_download, + self.output_component.log_message, + self._on_progress_update, + ) + self.notebook.add( + self.bulk_download_component.create_ui(), text="Bulk Download" + ) + + # Bulk Upload component + self.bulk_upload_component = BulkUploadComponent( + self.notebook, + self.controller.handle_bulk_upload, + self.output_component.log_message, + self._on_progress_update, + ) + self.notebook.add(self.bulk_upload_component.create_ui(), text="Bulk Upload") + # Status bar self.output_component.get_status_bar().grid( row=4, column=0, sticky=(tk.W, tk.E) ) + def _on_progress_update(self, message: str, progress: int) -> None: + """Handle progress updates from bulk operations""" + # Note: parameters are swapped compared to controller callback + # to match the component's expected signature + if self.output_component: + self.output_component.log_message(f"Progress: {progress}% - {message}") + def main() -> None: """Main function - much cleaner now""" From c598b48fee5ba48a48ac0107cac3f5cb27c7aeb5 Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Wed, 13 Aug 2025 14:12:33 -0400 Subject: [PATCH 14/46] Correction to logging and build processes --- .gitignore | 1 + build.sh | 25 +- build_windows_native_gui.bat | 23 +- docs/assets/favicon.ico | Bin 0 -> 4286 bytes docs/assets/synapse_icon.png | Bin 1100 -> 0 bytes synapsegui/main.py => gui_entrypoint.py | 16 +- synapsegui/README.md | 6 +- .../components/bulk_download_component.py | 199 ++- .../components/bulk_upload_component.py | 211 +++- synapsegui/controllers/app_controller.py | 68 +- synapsegui/models/bulk_item.py | 11 - synapsegui/models/synapse_client.py | 302 ++++- synapsegui/refactored_main.py | 147 --- synapsegui/synapse_gui.py | 1076 ++--------------- synapsegui/utils/logging_integration.py | 90 ++ 15 files changed, 785 insertions(+), 1390 deletions(-) create mode 100644 docs/assets/favicon.ico delete mode 100644 docs/assets/synapse_icon.png rename synapsegui/main.py => gui_entrypoint.py (56%) delete mode 100644 synapsegui/refactored_main.py create mode 100644 synapsegui/utils/logging_integration.py diff --git a/.gitignore b/.gitignore index c798f50b0..14d82e7af 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,4 @@ coverage.xml .ipynb_checkpoints *.ipynb .env +*.spec \ No newline at end of file diff --git a/build.sh b/build.sh index fff720780..2f74e1f2c 100755 --- a/build.sh +++ b/build.sh @@ -30,26 +30,21 @@ build_for_platform() { echo "Building executable: $output_name" - # Build the executable with the refactored structure + # Build pyinstaller \ --onefile \ --name "$output_name" \ - --icon="docs/assets/synapse_logo.png" \ + --icon="docs/assets/favicon.ico" \ --collect-all=synapseclient \ - --hidden-import=synapsegui.models.synapse_client \ - --hidden-import=synapsegui.models.config \ - --hidden-import=synapsegui.components.login_component \ - --hidden-import=synapsegui.components.download_component \ - --hidden-import=synapsegui.components.upload_component \ - --hidden-import=synapsegui.components.output_component \ - --hidden-import=synapsegui.components.bulk_download_component \ - --hidden-import=synapsegui.components.bulk_upload_component \ - --hidden-import=synapsegui.controllers.app_controller \ - --hidden-import=synapsegui.utils.progress \ - --hidden-import=synapsegui.utils.tooltips \ - --console \ + --hidden-import=io \ + --paths "synapsegui" \ + --paths "synapsegui/utils" \ + --paths "synapsegui/components" \ + --paths "synapsegui/controllers" \ + --paths "synapsegui/models" \ + --windowed \ $extra_args \ - synapsegui/main.py + gui_entrypoint.py # Clean up spec file rm -f *.spec diff --git a/build_windows_native_gui.bat b/build_windows_native_gui.bat index 35e10a6b5..bbc47735b 100644 --- a/build_windows_native_gui.bat +++ b/build_windows_native_gui.bat @@ -26,25 +26,20 @@ if exist *.spec del *.spec echo Building Windows executable... -REM Build using the refactored structure +REM Build pyinstaller ^ --onefile ^ --name "synapse-desktop-client%SUFFIX%.exe" ^ - --icon="docs/assets/synapse_logo.png" ^ + --icon="docs/assets/favicon.ico" ^ --collect-all=synapseclient ^ - --hidden-import=synapsegui.models.synapse_client ^ - --hidden-import=synapsegui.models.config ^ - --hidden-import=synapsegui.components.login_component ^ - --hidden-import=synapsegui.components.download_component ^ - --hidden-import=synapsegui.components.upload_component ^ - --hidden-import=synapsegui.components.output_component ^ - --hidden-import=synapsegui.components.bulk_download_component ^ - --hidden-import=synapsegui.components.bulk_upload_component ^ - --hidden-import=synapsegui.controllers.app_controller ^ - --hidden-import=synapsegui.utils.progress ^ - --hidden-import=synapsegui.utils.tooltips ^ + --hidden-import=io ^ + --paths "synapsegui" ^ + --paths "synapsegui/utils" ^ + --paths "synapsegui/components" ^ + --paths "synapsegui/controllers" ^ + --paths "synapsegui/models" ^ --windowed ^ - synapsegui/main.py + gui_entrypoint.py if errorlevel 1 ( echo ERROR: Build failed diff --git a/docs/assets/favicon.ico b/docs/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..937acb071a72ed6490954b250dfe2d99cfef3845 GIT binary patch literal 4286 zcmeH}dr(wW9LLWhWE!YVW#uE7v`m(CRw_z2G8JVL7Na05=yL8^sY+vy5N z#-Q^C#&3Zcv<}YMFuq66&Qy0hH3!6{+NFT%q`LLsaUX35E&f|Cbxic`4o_>Fv(6WFG}LRDJS6QB99U8!DF*yyXpP&244Z1-w(!t z`|^`hQL135+XLPJ@IAN*xU5Xs_S&ZAX79wVe#EE!_YEioCjhy7!BW8H#5sNsYrm*v zyqz;$weE@dig-UwrDh3ubwkaD3Cl~CGew!g4X%Zt3S1>Guz{UQbC9oZ%JHWVe+Re% z$TsB`C1x2sdT4 zJ93kJEMVA!wAPP+#h?X{{}=Ekpm)Kcnwve*DHOt|f zhjA_XaGvJFP2rc6Cgm1cxy&&xb$~p4l`S=sq2lwuev&1ce>moe2qAXE~ z{4|%O?N4I{!SJx!tj?$UBTJRNMFonG!yhjhE9zH{)DE9Zb;s~GaI{~F{)6FX9GxUr zCO?Yx7Y6&>gB-Tv9Sp`=wFJX6e5nP3dChxCfI zq5mBt_kR=i0{u^LyK>ZZdQCcOIoKjmTh#N>hrP(79bBY*!p-41QI_agjoSkz!Uu`>|n{=jmLCP7A1#8@>l?Jio zs^qcg{Y>n^x!NkN*ShL;t}2U)!NJ6=KnX@~U;yU<<#7$vfVZqWRzGRY4GSyYt~r*Q zk-~RnuI;JKQKi@KjPd+@^Xsg!zS5EUp5_EY0K-0TgKr_I2IS|0A*e^pmLJA=9s848 z^(*Y4FI>o$e<>D3dyBbY_vE_U!vfv`h9>;Or zGjMIMeO+^Pu}eeY8mIaxn7BKMi6z@y#Juno*oW{2(svWR3)GJu?9Yw$g<6mLT?tNi z4+U)4w}mzA|5Sn=KWohk4?*o3tbY{NVBUef>23##bwiK-Ki<{>Za@0)*|eT>oge3n z@Z@}gC+`Q>aNfrJ+H}lM$C}pb#@INUXyfjlHaubDt~h6y(@6k};cZQ9J+~o7KgDnz Qh(odLF?ATpL9T)0FaOFdD*ylh literal 0 HcmV?d00001 diff --git a/docs/assets/synapse_icon.png b/docs/assets/synapse_icon.png deleted file mode 100644 index 7d2bb6649c846f66ce1cf50a1fdf5312b783c8cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1100 zcmV-S1he~zP)a4$T{GA z{&e4WI?z0LB3u$YOI_wm@%Hw}8v>yc8VNt?9vS=6?d*tTUjE|feBdNfyz=46xqLJl zS>U9&Kth~6@%^maPC!?OV!JH;fI?omnl`#ubI!HW_y**HR{R2xAY_{*3g#KYb%8`hqOVICMjTYq{=x?6}P~z3;C?yRyt*Ho|)Phz)zh z783G`G%<=rL`<;UE^^w&N3M<>AVm}P|Buad$GXlo&H)16_XoX~wuN=iB%Tl`v$jtc zJ}Ow7<0WYd6y^Q*NN|b{@MJBuo{6{wYAKCrZodS%<qt`|yzwr?cGwPAL(2C4b+KlgucBQz#NTLt} zwC-6w_J3Ra_SDoAJ}fvaa2EFpuWHHX5|_>PJ74yl?25g-#CMJq2(0k?4U9#~D`SVY zQ)>F)cem|8N%-)$==8rg z;|K3Q$n>1Q6Q750}@xJoPxpz|fIh1bu8D~%f z3h18y9O4ZOsR$${WTQ}_Hs(1|81F-7s St43`A0000 None: @@ -31,21 +30,24 @@ def __init__( Args: parent: Parent widget on_bulk_download: Callback for bulk download operation + on_enumerate: Callback for enumeration operation on_log_message: Callback for logging messages on_progress_update: Callback for progress updates """ self.parent = parent self.on_bulk_download = on_bulk_download + self.on_enumerate = on_enumerate self.on_log_message = on_log_message self.on_progress_update = on_progress_update # UI elements self.frame: Optional[ttk.Frame] = None self.container_id_var = tk.StringVar() - self.download_path_var = tk.StringVar() + self.download_path_var = tk.StringVar(value=str(Path.home() / "Downloads")) self.recursive_var = tk.BooleanVar(value=True) self.tree: Optional[ttk.Treeview] = None self.progress_var = tk.StringVar() + self.bulk_progress_bar: Optional[ttk.Progressbar] = None # Data self.container_items: List[BulkItem] = [] @@ -87,6 +89,10 @@ def create_ui(self) -> ttk.Frame: side="left", padx=(5, 0) ) + # Progress bar for bulk operations + self.bulk_progress_bar = ttk.Progressbar(progress_frame, mode="determinate", length=300) + self.bulk_progress_bar.pack(side="right", padx=(10, 0)) + # Selection tree section tree_frame = ttk.LabelFrame(self.frame, text="Contents Selection") tree_frame.pack(fill="both", expand=True, padx=10, pady=5) @@ -97,18 +103,20 @@ def create_ui(self) -> ttk.Frame: self.tree = ttk.Treeview( tree_container, - columns=("Type", "Size"), + columns=("ID", "Type", "Size"), show="tree headings", selectmode="extended", ) # Configure columns self.tree.heading("#0", text="Name") + self.tree.heading("ID", text="Synapse ID") self.tree.heading("Type", text="Type") self.tree.heading("Size", text="Size") - self.tree.column("#0", width=300) - self.tree.column("Type", width=100) + self.tree.column("#0", width=250) + self.tree.column("ID", width=120) + self.tree.column("Type", width=80) self.tree.column("Size", width=100) # Scrollbars for tree @@ -184,119 +192,39 @@ def _on_enumerate_clicked(self) -> None: messagebox.showerror("Error", "ID must start with 'syn' or 'project'") return - # Start enumeration in background - self._start_enumeration_task(container_id, self.recursive_var.get()) - - def _start_enumeration_task(self, container_id: str, recursive: bool) -> None: - """Start the enumeration task asynchronously.""" - self.progress_var.set("Enumerating contents...") - self.on_log_message( - f"Starting enumeration of {container_id} (recursive={recursive})", False - ) - # Clear previous results self._clear_tree() self.container_items.clear() self.selected_items.clear() - - # Create enumeration task - task = asyncio.create_task( - self._enumerate_container_async(container_id, recursive) + + # Update status + self.progress_var.set("Enumerating contents...") + self.on_log_message( + f"Starting enumeration of {container_id} (recursive={self.recursive_var.get()})", False ) - # Schedule completion callback - task.add_done_callback(self._on_enumeration_complete) + # Delegate to controller using the same pattern as other operations + self.on_enumerate(container_id, self.recursive_var.get()) - async def _enumerate_container_async( - self, container_id: str, recursive: bool - ) -> None: + def handle_enumeration_result(self, items: List[BulkItem], error: str = None) -> None: """ - Enumerate container contents asynchronously. - + Handle enumeration results from the controller. + Args: - container_id: Synapse ID of container to enumerate - recursive: Whether to enumerate recursively + items: List of enumerated BulkItem objects, or empty list if error + error: Error message if enumeration failed, None if successful """ - try: - # Determine container type and create appropriate object - if container_id.startswith("project"): - container = Project(id=container_id) - else: - container = Folder(id=container_id) - - # Sync metadata only (download_file=False) - await container.sync_from_synapse_async( - download_file=False, recursive=recursive - ) - - # Convert to BulkItem objects - self.container_items = self._convert_to_bulk_items(container, recursive) - - except Exception as e: - self.on_log_message(f"Error during enumeration: {str(e)}", True) - raise - - def _convert_to_bulk_items(self, container: Any, recursive: bool) -> List[BulkItem]: - """ - Convert container contents to BulkItem objects. - - Args: - container: Container object with populated files/folders - recursive: Whether enumeration was recursive - - Returns: - List of BulkItem objects - """ - items = [] - - # Add files - if hasattr(container, "files"): - for file in container.files: - items.append( - BulkItem( - synapse_id=file.id, - name=file.name, - item_type="File", - size=file.file_handle.content_size if file.file_handle else 0, - parent_id=file.parent_id, - path=file.path if hasattr(file, "path") else None, - ) - ) - - # Add folders - if hasattr(container, "folders"): - for folder in container.folders: - items.append( - BulkItem( - synapse_id=folder.id, - name=folder.name, - item_type="Folder", - size=None, - parent_id=folder.parent_id, - path=folder.path if hasattr(folder, "path") else None, - ) - ) - - # Recursively add folder contents if recursive - if recursive: - items.extend(self._convert_to_bulk_items(folder, recursive)) - - return items - - def _on_enumeration_complete(self, task: asyncio.Task) -> None: - """Handle completion of enumeration task.""" - try: - task.result() # This will raise any exception that occurred - - # Update UI with results - self._populate_tree() - count = len(self.container_items) - self.progress_var.set(f"Found {count} items") - self.on_log_message(f"Enumeration complete: {count} items found", False) - - except Exception as e: + if error: self.progress_var.set("Enumeration failed") - self.on_log_message(f"Enumeration failed: {str(e)}", True) + self.on_log_message(f"Enumeration failed: {error}", True) + return + + # Store items and update UI + self.container_items = items + self._populate_tree() + count = len(self.container_items) + self.progress_var.set(f"Found {count} items") + self.on_log_message(f"Enumeration complete: {count} items found", False) def _populate_tree(self) -> None: """Populate the tree view with enumerated items.""" @@ -305,15 +233,28 @@ def _populate_tree(self) -> None: # Group items by parent to build tree structure parent_map = {} root_items = [] + all_parent_ids = set() for item in self.container_items: if item.parent_id: if item.parent_id not in parent_map: parent_map[item.parent_id] = [] parent_map[item.parent_id].append(item) + all_parent_ids.add(item.parent_id) else: root_items.append(item) + # If we have no root items but have items with parent_ids, + # find items whose parent_id doesn't exist in our item list + # These are effectively the "root" items for our view + if not root_items and self.container_items: + item_ids = {item.synapse_id for item in self.container_items} + for item in self.container_items: + if item.parent_id and item.parent_id not in item_ids: + # This item's parent is not in our enumerated list, + # so treat it as a root item for display purposes + root_items.append(item) + # Insert root items for item in root_items: self._insert_item_with_children(item, "", parent_map) @@ -335,12 +276,12 @@ def _insert_item_with_children( # Format size size_str = self._format_size(item.size) if item.size else "" - # Insert item + # Insert item with ID, Type, and Size columns iid = self.tree.insert( parent_iid, "end", text=item.name, - values=(item.item_type, size_str), + values=(item.synapse_id, item.item_type, size_str), tags=(item.synapse_id,), ) @@ -408,7 +349,8 @@ def _collect_items_by_type( """Recursively collect items of specific type.""" for item_id in items: item_values = self.tree.item(item_id, "values") - if item_values and item_values[0] == item_type: + # Type is now at index 1 (ID, Type, Size) + if item_values and len(item_values) > 1 and item_values[1] == item_type: result.append(item_id) # Check children @@ -465,3 +407,36 @@ def _on_download_clicked(self) -> None: # Call the bulk download callback self.on_bulk_download(selected_list, download_path, self.recursive_var.get()) + + def update_progress(self, progress: int, message: str) -> None: + """Update the progress bar and status message. + + Args: + progress: Progress percentage (0-100) + message: Status message to display + """ + if self.bulk_progress_bar: + self.bulk_progress_bar["value"] = progress + self.progress_var.set(message) + + def start_bulk_operation(self) -> None: + """Called when a bulk operation starts""" + self.progress_var.set("Starting bulk download...") + if self.bulk_progress_bar: + self.bulk_progress_bar["value"] = 0 + + def complete_bulk_operation(self, success: bool, message: str) -> None: + """Called when a bulk operation completes + + Args: + success: Whether the operation was successful + message: Completion message + """ + if self.bulk_progress_bar: + self.bulk_progress_bar["value"] = 100 if success else 0 + self.progress_var.set(message) + + if success: + self.on_log_message(f"Bulk download completed: {message}", False) + else: + self.on_log_message(f"Bulk download failed: {message}", True) diff --git a/synapsegui/components/bulk_upload_component.py b/synapsegui/components/bulk_upload_component.py index 7402bef67..0ca96ec61 100644 --- a/synapsegui/components/bulk_upload_component.py +++ b/synapsegui/components/bulk_upload_component.py @@ -5,7 +5,6 @@ to Synapse containers with directory structure preservation. """ -import os import tkinter as tk from pathlib import Path from tkinter import filedialog, messagebox, ttk @@ -44,6 +43,7 @@ def __init__( self.preserve_structure_var = tk.BooleanVar(value=True) self.tree: Optional[ttk.Treeview] = None self.status_var = tk.StringVar() + self.bulk_progress_bar: Optional[ttk.Progressbar] = None # Data self.upload_items: List[BulkItem] = [] @@ -102,6 +102,10 @@ def create_ui(self) -> ttk.Frame: side="left", padx=(5, 0) ) + # Progress bar for bulk operations + self.bulk_progress_bar = ttk.Progressbar(status_frame, mode="determinate", length=300) + self.bulk_progress_bar.pack(side="right", padx=(10, 0)) + # File list tree section tree_frame = ttk.LabelFrame(self.frame, text="Files to Upload") tree_frame.pack(fill="both", expand=True, padx=10, pady=5) @@ -213,7 +217,6 @@ def _add_file_item(self, file_path: str) -> bool: name=path_obj.name, item_type="File", size=stat.st_size, - modified=None, # Will be set from file timestamp if needed parent_id=None, # Will be determined during upload path=file_path, ) @@ -243,7 +246,6 @@ def _add_folder_recursive(self, folder_path: str) -> int: name=folder_obj.name, item_type="Folder", size=None, - modified=None, parent_id=None, path=folder_path, ) @@ -254,28 +256,15 @@ def _add_folder_recursive(self, folder_path: str) -> int: self.upload_items.append(folder_item) added_count += 1 - # Add all files and subfolders + # Add all files (but not subdirectories as separate items) try: for item_path in folder_obj.rglob("*"): if item_path.is_file(): if self._add_file_item(str(item_path)): added_count += 1 - elif item_path.is_dir() and item_path != folder_obj: - # Add subdirectory if not already added - if not any( - item.path == str(item_path) for item in self.upload_items - ): - subfolder_item = BulkItem( - synapse_id="", - name=item_path.name, - item_type="Folder", - size=None, - modified=None, - parent_id=None, - path=str(item_path), - ) - self.upload_items.append(subfolder_item) - added_count += 1 + # Note: We deliberately do NOT add subdirectories as separate BulkItem objects + # The directory structure will be preserved through the file paths and + # recreated during upload when preserve_structure is enabled except PermissionError as e: self.on_log_message(f"Permission error accessing {folder_path}: {e}", True) @@ -288,6 +277,11 @@ def _remove_selected(self) -> None: selected_paths = [] for item_id in self.tree.selection(): + # Skip visual directory nodes (they're not actual BulkItems) + item_tags = self.tree.item(item_id, "tags") + if "visual_directory" in item_tags: + continue + item_values = self.tree.item(item_id, "values") if len(item_values) >= 3: selected_paths.append(item_values[2]) # Local Path column @@ -328,50 +322,112 @@ def _refresh_tree(self) -> None: def _populate_tree_structured(self) -> None: """Populate tree with directory structure preserved.""" - # Build directory tree - dirs_added = set() + # Find root folders (folders that were explicitly selected) + root_folders = [] + for item in self.upload_items: + if item.item_type == "Folder": + # Check if this folder is not a subfolder of another folder in the list + is_root = True + for other_item in self.upload_items: + if (other_item.item_type == "Folder" and + other_item.path != item.path and + self._is_subpath(item.path, other_item.path)): + is_root = False + break + if is_root: + root_folders.append(item) + + # Build tree structure for each root folder + tree_nodes = {} # Maps folder paths to tree node IDs + + # Add root folders first - these appear at the top level + for root_folder in root_folders: + root_id = self.tree.insert( + "", + "end", + text=root_folder.name, + values=(root_folder.item_type, root_folder.get_display_size(), root_folder.path), + tags=(root_folder.path,), + ) + tree_nodes[root_folder.path] = root_id + + # Sort remaining items (files and any standalone files) by path depth + remaining_items = [item for item in self.upload_items if item not in root_folders] + + for item in sorted(remaining_items, key=lambda x: len(Path(x.path).parts)): + # Find which root folder this item belongs to + parent_id = "" + best_parent_path = "" + + for root_folder in root_folders: + if self._is_subpath(item.path, root_folder.path): + parent_id = tree_nodes[root_folder.path] + best_parent_path = root_folder.path + break + + if parent_id and best_parent_path: + # Build intermediate directory structure within the selected folder only + relative_parts = self._get_relative_path_parts(item.path, best_parent_path) + + current_parent_id = parent_id + current_path = Path(best_parent_path) + + # Build intermediate directories for display (exclude the last part which is the item itself) + for part in relative_parts[:-1]: + current_path = current_path / part + current_path_str = str(current_path) + + if current_path_str not in tree_nodes: + # Create visual directory node (not a BulkItem) + current_parent_id = self.tree.insert( + current_parent_id, + "end", + text=part, + values=("Directory", "", current_path_str), + tags=("visual_directory",), + ) + tree_nodes[current_path_str] = current_parent_id + else: + current_parent_id = tree_nodes[current_path_str] + + # Add the actual item (file) + self.tree.insert( + current_parent_id, + "end", + text=item.name, + values=(item.item_type, item.get_display_size(), item.path), + tags=(item.path,), + ) + else: + # Standalone file (no parent folder selected) - show at root level + self.tree.insert( + "", + "end", + text=item.name, + values=(item.item_type, item.get_display_size(), item.path), + tags=(item.path,), + ) - # Sort items by path depth to ensure parents are added first - sorted_items = sorted(self.upload_items, key=lambda x: len(Path(x.path).parts)) + def _is_subpath(self, child_path: str, parent_path: str) -> bool: + """Check if child_path is a subpath of parent_path.""" + try: + Path(child_path).relative_to(Path(parent_path)) + return True + except ValueError: + return False - for item in sorted_items: - path_obj = Path(item.path) + def _get_relative_path_parts(self, child_path: str, parent_path: str) -> List[str]: + """Get the relative path parts from parent to child.""" + try: + relative_path = Path(child_path).relative_to(Path(parent_path)) + return list(relative_path.parts) + except ValueError: + return [] - # Ensure parent directories are in tree - parent_iid = "" - current_path = "" - - for part in path_obj.parts[:-1]: # Exclude the file/folder name itself - current_path = ( - os.path.join(current_path, part) if current_path else part - ) - dir_key = (parent_iid, part) - - if dir_key not in dirs_added: - parent_iid = self.tree.insert( - parent_iid, - "end", - text=part, - values=("Directory", "", current_path), - tags=("directory",), - ) - dirs_added.add(dir_key) - else: - # Find existing directory item - for child in self.tree.get_children(parent_iid): - if self.tree.item(child, "text") == part: - parent_iid = child - break - - # Add the actual item - size_str = item.get_display_size() - self.tree.insert( - parent_iid, - "end", - text=item.name, - values=(item.item_type, size_str, item.path), - tags=(item.path,), - ) + def _get_path_for_node(self, node_id: str) -> str: + """Get the file path for a tree node.""" + values = self.tree.item(node_id, "values") + return values[2] if len(values) >= 3 else "" def _populate_tree_flat(self) -> None: """Populate tree with flat structure (no directories).""" @@ -447,3 +503,36 @@ def _on_upload_clicked(self) -> None: self.on_bulk_upload( self.upload_items.copy(), parent_id, self.preserve_structure_var.get() ) + + def update_progress(self, progress: int, message: str) -> None: + """Update the progress bar and status message. + + Args: + progress: Progress percentage (0-100) + message: Status message to display + """ + if self.bulk_progress_bar: + self.bulk_progress_bar["value"] = progress + self.status_var.set(message) + + def start_bulk_operation(self) -> None: + """Called when a bulk operation starts""" + self.status_var.set("Starting bulk upload...") + if self.bulk_progress_bar: + self.bulk_progress_bar["value"] = 0 + + def complete_bulk_operation(self, success: bool, message: str) -> None: + """Called when a bulk operation completes + + Args: + success: Whether the operation was successful + message: Completion message + """ + if self.bulk_progress_bar: + self.bulk_progress_bar["value"] = 100 if success else 0 + self.status_var.set(message) + + if success: + self.on_log_message(f"Bulk upload completed: {message}", False) + else: + self.on_log_message(f"Bulk upload failed: {message}", True) diff --git a/synapsegui/controllers/app_controller.py b/synapsegui/controllers/app_controller.py index b87ce7473..0c505e374 100644 --- a/synapsegui/controllers/app_controller.py +++ b/synapsegui/controllers/app_controller.py @@ -72,6 +72,9 @@ def login_worker(): self.output_component.log_message( f"Login failed: {result['error']}", error=True ) + + # Re-enable login/logout button after login attempt completes + self.login_component.set_login_button_state(True) # Disable login button during attempt self.login_component.set_login_button_state(False) @@ -85,6 +88,8 @@ def handle_logout(self) -> None: self.login_component.update_login_state(False) self._enable_operations(False) self.output_component.log_message("Logged out successfully") + # Ensure login button remains enabled after logout + self.login_component.set_login_button_state(True) def handle_download( self, synapse_id: str, version: str, download_path: str @@ -168,6 +173,29 @@ def detail_callback(detail_message: str): self.upload_component.start_operation() threading.Thread(target=upload_worker, daemon=True).start() + def handle_enumerate(self, container_id: str, recursive: bool) -> None: + """Handle container enumeration request from UI""" + + def enumerate_worker(): + result = asyncio.run( + self.synapse_client.enumerate_container(container_id, recursive) + ) + + # Schedule UI updates on the main thread using after() + if self.bulk_download_component: + if result["success"]: + self.bulk_download_component.parent.after( + 0, + lambda: self.bulk_download_component.handle_enumeration_result(result["items"]) + ) + else: + self.bulk_download_component.parent.after( + 0, + lambda: self.bulk_download_component.handle_enumeration_result([], result["error"]) + ) + + threading.Thread(target=enumerate_worker, daemon=True).start() + def _enable_operations(self, enabled: bool) -> None: """Enable/disable operation buttons based on login state""" if self.download_component: @@ -194,12 +222,16 @@ def handle_bulk_download( """ def bulk_download_worker(): + # Start the operation + if self.bulk_download_component: + self.output_component.get_frame().after(0, lambda: self.bulk_download_component.start_bulk_operation()) + result = asyncio.run( self.synapse_client.bulk_download( items, download_path, recursive, - self._on_progress_update, + self._on_bulk_download_progress_update, self._on_detail_message, ) ) @@ -209,12 +241,13 @@ def bulk_download_worker(): f"Bulk download complete: {result['summary']}" ) if self.bulk_download_component: - # Could add a success notification method here if desired - pass + self.output_component.get_frame().after(0, lambda: self.bulk_download_component.complete_bulk_operation(True, result['summary'])) else: self.output_component.log_message( f"Bulk download failed: {result['error']}", error=True ) + if self.bulk_download_component: + self.output_component.get_frame().after(0, lambda: self.bulk_download_component.complete_bulk_operation(False, result['error'])) self.output_component.log_message( f"Starting bulk download of {len(items)} items..." @@ -227,12 +260,16 @@ def handle_bulk_upload( """Handle bulk upload request from UI""" def bulk_upload_worker(): + # Start the operation + if self.bulk_upload_component: + self.output_component.get_frame().after(0, lambda: self.bulk_upload_component.start_bulk_operation()) + result = asyncio.run( self.synapse_client.bulk_upload( items, parent_id, preserve_structure, - self._on_progress_update, + self._on_bulk_upload_progress_update, self._on_detail_message, ) ) @@ -242,20 +279,37 @@ def bulk_upload_worker(): f"Bulk upload complete: {result['summary']}" ) if self.bulk_upload_component: - # Could add a success notification method here if desired - pass + self.output_component.get_frame().after(0, lambda: self.bulk_upload_component.complete_bulk_operation(True, result['summary'])) else: self.output_component.log_message( f"Bulk upload failed: {result['error']}", error=True ) + if self.bulk_upload_component: + self.output_component.get_frame().after(0, lambda: self.bulk_upload_component.complete_bulk_operation(False, result['error'])) self.output_component.log_message( f"Starting bulk upload of {len(items)} items..." ) threading.Thread(target=bulk_upload_worker, daemon=True).start() + def _on_bulk_download_progress_update(self, progress: int, message: str) -> None: + """Handle progress updates from bulk download operations""" + # Schedule UI updates on the main thread + if self.bulk_download_component: + self.output_component.get_frame().after(0, lambda: self.bulk_download_component.update_progress(progress, message)) + if self.output_component: + self.output_component.log_message(f"Download Progress: {progress}% - {message}") + + def _on_bulk_upload_progress_update(self, progress: int, message: str) -> None: + """Handle progress updates from bulk upload operations""" + # Schedule UI updates on the main thread + if self.bulk_upload_component: + self.output_component.get_frame().after(0, lambda: self.bulk_upload_component.update_progress(progress, message)) + if self.output_component: + self.output_component.log_message(f"Upload Progress: {progress}% - {message}") + def _on_progress_update(self, progress: int, message: str) -> None: - """Handle progress updates from bulk operations""" + """Handle progress updates from single file operations""" if self.output_component: self.output_component.log_message(f"Progress: {progress}% - {message}") diff --git a/synapsegui/models/bulk_item.py b/synapsegui/models/bulk_item.py index 7ad01eb21..53235fdf4 100644 --- a/synapsegui/models/bulk_item.py +++ b/synapsegui/models/bulk_item.py @@ -53,14 +53,3 @@ def get_display_size(self) -> str: return f"{size:.1f} {unit}" size /= 1024.0 return f"{size:.1f} PB" - - def get_display_modified(self) -> str: - """ - Get formatted modification date for display. - - Returns: - Formatted date string or empty if no date - """ - if not self.modified: - return "" - return self.modified.strftime("%Y-%m-%d %H:%M") diff --git a/synapsegui/models/synapse_client.py b/synapsegui/models/synapse_client.py index 51178c618..7076d97d4 100644 --- a/synapsegui/models/synapse_client.py +++ b/synapsegui/models/synapse_client.py @@ -1,9 +1,12 @@ """ Synapse client operations - separated from UI logic """ +import io +import logging import os import re import sys +from pathlib import Path from typing import Any, Callable, Dict, Optional import synapseclient @@ -11,6 +14,31 @@ from synapseclient.models import File +def _safe_stderr_redirect(new_stderr): + """ + Safely redirect stderr, handling the case where original stderr might be None. + + Returns: + Tuple of (original_stderr, safe_original_stderr) where safe_original_stderr + is guaranteed to be a valid file-like object. + """ + original_stderr = sys.stderr + safe_original_stderr = original_stderr if original_stderr is not None else io.StringIO() + sys.stderr = new_stderr + return original_stderr, safe_original_stderr + + +def _safe_stderr_restore(original_stderr, safe_original_stderr): + """ + Safely restore stderr, ensuring we never set it to None. + """ + if original_stderr is not None: + sys.stderr = original_stderr + else: + # If original was None, use a StringIO to avoid None issues + sys.stderr = safe_original_stderr + + class TQDMProgressCapture: """Capture TQDM progress updates for GUI display""" @@ -62,45 +90,64 @@ def __init__(self): async def login_manual(self, username: str, token: str) -> Dict[str, Any]: """Login with username and token""" try: - self.client = synapseclient.Synapse(skip_checks=True) + # Create client with debug logging to capture detailed messages + self.client = synapseclient.Synapse(skip_checks=True, debug=False) if username: - self.client.login(email=username, authToken=token, silent=True) + self.client.login(email=username, authToken=token, silent=False) else: - self.client.login(authToken=token, silent=True) + self.client.login(authToken=token, silent=False) self.is_logged_in = True self.username = getattr(self.client, "username", None) or getattr( self.client, "email", "Unknown User" ) + # Log successful login + logger = logging.getLogger('synapseclient') + logger.info(f"Successfully logged in as {self.username}") + return {"success": True, "username": self.username} except Exception as e: + # Log login error + logger = logging.getLogger('synapseclient') + logger.error(f"Login failed: {str(e)}") return {"success": False, "error": str(e)} async def login_with_profile(self, profile_name: str) -> Dict[str, Any]: """Login with config file profile""" try: - self.client = synapseclient.Synapse(skip_checks=True) + # Create client with debug logging to capture detailed messages + self.client = synapseclient.Synapse(skip_checks=True, debug=False) if profile_name == "authentication (legacy)": - self.client.login(silent=True) + self.client.login(silent=False) else: - self.client.login(profile=profile_name, silent=True) + self.client.login(profile=profile_name, silent=False) self.is_logged_in = True self.username = getattr(self.client, "username", None) or getattr( self.client, "email", "Unknown User" ) + # Log successful login + logger = logging.getLogger('synapseclient') + logger.info(f"Successfully logged in as {self.username} using profile {profile_name}") + return {"success": True, "username": self.username} except Exception as e: + # Log login error + logger = logging.getLogger('synapseclient') + logger.error(f"Login with profile '{profile_name}' failed: {str(e)}") return {"success": False, "error": str(e)} def logout(self) -> None: """Logout from Synapse""" if self.client: self.client.logout() + # Log logout + logger = logging.getLogger('synapseclient') + logger.info(f"User {self.username} logged out") self.client = None self.is_logged_in = False self.username = "" @@ -118,12 +165,16 @@ async def download_file( if not self.is_logged_in: return {"success": False, "error": "Not logged in"} + # Log download start + logger = logging.getLogger('synapseclient') + version_info = f" version {version}" if version else "" + logger.info(f"Starting download of {synapse_id}{version_info} to {download_path}") + # Create progress capture for TQDM output progress_capture = TQDMProgressCapture(progress_callback, detail_callback) - # Redirect stderr to capture TQDM output - original_stderr = sys.stderr - sys.stderr = progress_capture + # Safely redirect stderr to capture TQDM output + original_stderr, safe_original_stderr = _safe_stderr_redirect(progress_capture) try: file_obj = File( @@ -136,17 +187,19 @@ async def download_file( file_obj = file_obj.get(synapse_client=self.client) if file_obj.path and os.path.exists(file_obj.path): + logger.info(f"Successfully downloaded {synapse_id} to {file_obj.path}") return {"success": True, "path": file_obj.path} else: - return { - "success": False, - "error": f"No files associated with entity {synapse_id}", - } + error_msg = f"No files associated with entity {synapse_id}" + logger.error(error_msg) + return {"success": False, "error": error_msg} finally: - # Restore original stderr - sys.stderr = original_stderr + # Safely restore original stderr + _safe_stderr_restore(original_stderr, safe_original_stderr) except Exception as e: + logger = logging.getLogger('synapseclient') + logger.error(f"Download failed for {synapse_id}: {str(e)}") return {"success": False, "error": str(e)} async def upload_file( @@ -166,12 +219,18 @@ async def upload_file( if not os.path.exists(file_path): return {"success": False, "error": f"File does not exist: {file_path}"} + # Log upload start + logger = logging.getLogger('synapseclient') + if entity_id: + logger.info(f"Starting upload of {file_path} to update entity {entity_id}") + else: + logger.info(f"Starting upload of {file_path} to create new entity in {parent_id}") + # Create progress capture for TQDM output progress_capture = TQDMProgressCapture(progress_callback, detail_callback) - # Redirect stderr to capture TQDM output - original_stderr = sys.stderr - sys.stderr = progress_capture + # Safely redirect stderr to capture TQDM output + original_stderr, safe_original_stderr = _safe_stderr_redirect(progress_capture) try: if entity_id: # Update existing @@ -196,18 +255,123 @@ async def upload_file( ) file_obj = file_obj.store(synapse_client=self.client) + + # Log successful upload + logger.info(f"Successfully uploaded {file_path} as entity {file_obj.id}: {file_obj.name}") + return { "success": True, "entity_id": file_obj.id, "name": file_obj.name, } finally: - # Restore original stderr - sys.stderr = original_stderr + # Safely restore original stderr + _safe_stderr_restore(original_stderr, safe_original_stderr) except Exception as e: + logger = logging.getLogger('synapseclient') + logger.error(f"Upload failed for {file_path}: {str(e)}") return {"success": False, "error": str(e)} + async def enumerate_container( + self, container_id: str, recursive: bool + ) -> Dict[str, Any]: + """ + Enumerate contents of a Synapse container (Project or Folder). + + Args: + container_id: Synapse ID of the container to enumerate + recursive: Whether to enumerate recursively + + Returns: + Dictionary with success status and list of BulkItem objects + """ + try: + if not self.client: + return {"success": False, "error": "Not logged in"} + + # Log enumeration start + logger = logging.getLogger('synapseclient') + recursive_info = " (recursive)" if recursive else "" + logger.info(f"Starting enumeration of container {container_id}{recursive_info}") + + # Import here to avoid circular imports + from synapseclient.models import Folder, Project + + # Determine container type and create appropriate object + # TODO: This needs to be fixed as this is not correct + if container_id.startswith("project"): + container = Project(id=container_id) + else: + container = Folder(id=container_id) + + # Sync metadata only (download_file=False) + await container.sync_from_synapse_async( + download_file=False, recursive=recursive, synapse_client=self.client + ) + + # Convert to BulkItem objects + items = self._convert_to_bulk_items(container, recursive) + + # Log successful enumeration + logger.info(f"Successfully enumerated {len(items)} items from container {container_id}") + + return {"success": True, "items": items} + + except Exception as e: + logger = logging.getLogger('synapseclient') + logger.error(f"Enumeration failed for container {container_id}: {str(e)}") + return {"success": False, "error": str(e)} + + def _convert_to_bulk_items(self, container: Any, recursive: bool) -> list: + """ + Convert container contents to BulkItem objects. + + Args: + container: Container object with populated files/folders + recursive: Whether enumeration was recursive + + Returns: + List of BulkItem objects + """ + from ..models.bulk_item import BulkItem + + items = [] + + # Add files + if hasattr(container, "files"): + for file in container.files: + items.append( + BulkItem( + synapse_id=file.id, + name=file.name, + item_type="File", + size=file.file_handle.content_size if file.file_handle else 0, + parent_id=file.parent_id, + path=file.path if hasattr(file, "path") else None, + ) + ) + + # Add folders + if hasattr(container, "folders"): + for folder in container.folders: + items.append( + BulkItem( + synapse_id=folder.id, + name=folder.name, + item_type="Folder", + size=None, + parent_id=folder.parent_id, + path=folder.path if hasattr(folder, "path") else None, + ) + ) + + # Recursively add folder contents if recursive + if recursive: + items.extend(self._convert_to_bulk_items(folder, recursive)) + + return items + async def bulk_download( self, items: list, @@ -358,10 +522,24 @@ async def bulk_upload( # Determine target parent target_parent = parent_id if preserve_structure and item.path: - # Find the appropriate parent folder + # Find the appropriate parent folder for this file item_dir = os.path.dirname(item.path) - if item_dir in folder_mapping: - target_parent = folder_mapping[item_dir] + + # Normalize path separators to match folder_mapping keys + normalized_item_dir = item_dir.replace('\\', '/') + + # First check for exact match + if normalized_item_dir in folder_mapping: + target_parent = folder_mapping[normalized_item_dir] + else: + # Check if this file belongs to any created folder + # Find the deepest (most specific) folder that contains this file + best_match = "" + for folder_path, folder_id in folder_mapping.items(): + if self._is_subpath(item.path, folder_path): + if len(folder_path) > len(best_match): + best_match = folder_path + target_parent = folder_id result = await self.upload_file( file_path=item.path, @@ -414,23 +592,52 @@ async def _create_folder_structure( Returns: Dictionary mapping local paths to Synapse folder IDs """ - from pathlib import Path - from synapseclient.models import Folder folder_mapping = {} - # Get all unique directory paths + # Find root folders (explicitly selected folders) + root_folders = [] + for item in items: + if item.item_type == "Folder": + # Check if this folder is not a subfolder of another folder in the list + is_root = True + for other_item in items: + if (other_item.item_type == "Folder" and + other_item.path != item.path and + self._is_subpath(item.path, other_item.path)): + is_root = False + break + if is_root: + root_folders.append(item) + + # Get all unique directory paths that need to be created dir_paths = set() + + # First, add the explicitly selected folders + for root_folder in root_folders: + dir_paths.add(root_folder.path) + + # Then, add subdirectories within selected folders only for item in items: if item.path and item.item_type == "File": dir_path = os.path.dirname(item.path) if dir_path: - # Add all parent directories - path_obj = Path(dir_path) - for parent in [path_obj] + list(path_obj.parents): - if str(parent) != ".": - dir_paths.add(str(parent)) + # Only add directories that are within a selected root folder + for root_folder in root_folders: + if self._is_subpath(dir_path, root_folder.path): + # Add all directories between root folder and file's directory + current_path = Path(dir_path) + root_path = Path(root_folder.path) + + # Build list of directories from root folder to file's directory + relative_parts = current_path.relative_to(root_path).parts + temp_path = root_path + + for part in relative_parts: + temp_path = temp_path / part + dir_paths.add(str(temp_path)) + break # Sort by depth (create parents first) sorted_dirs = sorted(dir_paths, key=lambda x: len(Path(x).parts)) @@ -451,17 +658,40 @@ async def _create_folder_structure( # Determine parent folder ID parent_folder_id = base_parent_id - parent_path = str(path_obj.parent) - if parent_path != "." and parent_path in folder_mapping: - parent_folder_id = folder_mapping[parent_path] + + # For root folders, parent is the base parent + is_root_folder = any(root_folder.path == dir_path for root_folder in root_folders) + + if not is_root_folder: + # Find the parent directory that should already be created + parent_path = str(path_obj.parent) + normalized_parent_path = parent_path.replace('\\', '/') + if normalized_parent_path in folder_mapping: + parent_folder_id = folder_mapping[normalized_parent_path] + else: + # Parent might be a root folder + for root_folder in root_folders: + if root_folder.path == parent_path: + parent_folder_id = folder_mapping[normalized_parent_path] + break # Create folder try: folder = Folder(name=folder_name, parent_id=parent_folder_id) folder = folder.store(synapse_client=self.client) - folder_mapping[dir_path] = folder.id - detail_callback(f"Created folder: {folder_name} ({folder.id})") + # Normalize path separators for consistent lookup + normalized_dir_path = dir_path.replace('\\', '/') + folder_mapping[normalized_dir_path] = folder.id + detail_callback(f"Created folder: {folder_name} ({folder.id}) from path {dir_path}") except Exception as e: detail_callback(f"Error creating folder {folder_name}: {str(e)}") return folder_mapping + + def _is_subpath(self, child_path: str, parent_path: str) -> bool: + """Check if child_path is a subpath of parent_path.""" + try: + Path(child_path).relative_to(Path(parent_path)) + return True + except ValueError: + return False diff --git a/synapsegui/refactored_main.py b/synapsegui/refactored_main.py deleted file mode 100644 index 67865e9d3..000000000 --- a/synapsegui/refactored_main.py +++ /dev/null @@ -1,147 +0,0 @@ -""" -Example of how the refactored main GUI would look with bulk operations -""" -import tkinter as tk -from tkinter import ttk -from typing import TYPE_CHECKING - -from .components.bulk_download_component import BulkDownloadComponent -from .components.bulk_upload_component import BulkUploadComponent -from .components.download_component import DownloadComponent -from .components.login_component import LoginComponent -from .components.output_component import OutputComponent -from .components.upload_component import UploadComponent -from .controllers.app_controller import ApplicationController - -if TYPE_CHECKING: - pass - - -class RefactoredSynapseGUI: - """Main GUI window - now much simpler and focused on coordination""" - - def __init__(self, root: tk.Tk) -> None: - self.root = root - self.root.title("Synapse Desktop Client") - self.root.geometry("800x700") - - # Initialize controller - self.controller = ApplicationController() - - # Create UI components - self.create_widgets() - - # Connect components to controller - self.controller.set_ui_components( - self.login_component, - self.download_component, - self.upload_component, - self.output_component, - self.bulk_download_component, - self.bulk_upload_component, - ) - - def create_widgets(self) -> None: - """Create main window layout and components""" - # Main container - main_frame = ttk.Frame(self.root, padding="10") - main_frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S)) - - # Configure grid weights - self.root.columnconfigure(0, weight=1) - self.root.rowconfigure(0, weight=1) - main_frame.columnconfigure(0, weight=1) - main_frame.rowconfigure(3, weight=1) - - # Title - title_label = ttk.Label( - main_frame, text="Synapse Desktop Client", font=("Arial", 16, "bold") - ) - title_label.grid(row=0, column=0, pady=(0, 20)) - - # Login component - self.login_component = LoginComponent( - main_frame, - self.controller.config_manager, - self.controller.handle_login, - self.controller.handle_logout, - ) - - # Operation tabs - self.notebook = ttk.Notebook(main_frame) - self.notebook.grid( - row=2, column=0, sticky=(tk.W, tk.E, tk.N, tk.S), pady=(0, 10) - ) - - # Download component - self.download_component = DownloadComponent( - self.notebook, self.controller.handle_download - ) - self.notebook.add(self.download_component.get_frame(), text="Download File") - - # Upload component - self.upload_component = UploadComponent( - self.notebook, self.controller.handle_upload - ) - self.notebook.add(self.upload_component.get_frame(), text="Upload File") - - # Output component - self.output_component = OutputComponent(main_frame) - self.output_component.get_frame().grid( - row=3, column=0, sticky=(tk.W, tk.E, tk.N, tk.S), pady=(0, 10) - ) - - # Bulk Download component - self.bulk_download_component = BulkDownloadComponent( - self.notebook, - self.controller.handle_bulk_download, - self.output_component.log_message, - self._on_progress_update, - ) - self.notebook.add( - self.bulk_download_component.create_ui(), text="Bulk Download" - ) - - # Bulk Upload component - self.bulk_upload_component = BulkUploadComponent( - self.notebook, - self.controller.handle_bulk_upload, - self.output_component.log_message, - self._on_progress_update, - ) - self.notebook.add(self.bulk_upload_component.create_ui(), text="Bulk Upload") - - # Status bar - self.output_component.get_status_bar().grid( - row=4, column=0, sticky=(tk.W, tk.E) - ) - - def _on_progress_update(self, message: str, progress: int) -> None: - """Handle progress updates from bulk operations""" - # Note: parameters are swapped compared to controller callback - # to match the component's expected signature - if self.output_component: - self.output_component.log_message(f"Progress: {progress}% - {message}") - - -def main() -> None: - """Main function - much cleaner now""" - root = tk.Tk() - RefactoredSynapseGUI(root) - - # Center the window - root.update_idletasks() - width = root.winfo_width() - height = root.winfo_height() - x = (root.winfo_screenwidth() // 2) - (width // 2) - y = (root.winfo_screenheight() // 2) - (height // 2) - root.geometry(f"{width}x{height}+{x}+{y}") - - try: - root.mainloop() - except KeyboardInterrupt: - pass - - -if __name__ == "__main__": - main() diff --git a/synapsegui/synapse_gui.py b/synapsegui/synapse_gui.py index 832fe124f..fff799bec 100644 --- a/synapsegui/synapse_gui.py +++ b/synapsegui/synapse_gui.py @@ -1,195 +1,53 @@ -#!/usr/bin/env python3 """ -Tkinter GUI for Synapse CLI - Cross-platform desktop interface. -Provides a user-friendly GUI for GET and STORE operations. +Example of how the refactored main GUI would look with bulk operations """ - -import os -import queue -import sys -import threading import tkinter as tk -from pathlib import Path -from tkinter import filedialog, messagebox, scrolledtext, ttk - -# Import the existing CLI functionality -try: - import synapseclient - from synapseclient.api.configuration_services import get_config_file - from synapseclient.core import utils - from synapseclient.models import File -except ImportError as e: - print(f"Error: synapseclient is required but not installed: {e}") - print("Install with: pip install synapseclient") - sys.exit(1) - - -def get_available_profiles(config_path=None): - """Get list of available authentication profiles from config file""" - if config_path is None: - config_path = os.path.expanduser("~/.synapseConfig") - - profiles = [] - - try: - config = get_config_file(config_path) - sections = config.sections() - - # Look for profiles - for section in sections: - if section == "default": - profiles.append("default") - elif section.startswith("profile "): - profile_name = section[8:] # Remove "profile " prefix - profiles.append(profile_name) - elif section == "authentication": - # Legacy authentication section - profiles.append("authentication (legacy)") - - # If no profiles found but config exists, add default - if not profiles and os.path.exists(config_path): - profiles.append("default") - - except Exception: - # If config file doesn't exist or can't be read, return empty list - pass - - return profiles - - -def get_profile_info(profile_name, config_path=None): - """Get username for a specific profile""" - if config_path is None: - config_path = os.path.expanduser("~/.synapseConfig") - - try: - config = get_config_file(config_path) - - # Handle different profile name formats - if profile_name == "default": - section_name = "default" - elif profile_name == "authentication (legacy)": - section_name = "authentication" - else: - section_name = f"profile {profile_name}" - - if config.has_section(section_name): - username = config.get(section_name, "username", fallback="") - return username - - except Exception: - pass - - return "" - - -class TQDMProgressCapture: - """Capture TQDM progress updates for GUI display""" - - def __init__(self, operation_queue): - self.operation_queue = operation_queue - self.last_progress = 0 - - def write(self, s): - """Capture TQDM output and extract progress information""" - if s and "\r" in s: - # TQDM typically uses \r for progress updates - progress_line = s.strip().replace("\r", "") - if "%" in progress_line and ( - "B/s" in progress_line or "it/s" in progress_line - ): - # Parse progress percentage - try: - # Look for percentage in the format "XX%" - import re - - match = re.search(r"(\d+)%", progress_line) - if match: - progress = int(match.group(1)) - if progress != self.last_progress: - self.last_progress = progress - self.operation_queue.put( - ("progress", f"Progress: {progress}%", progress) - ) - # Also send the full progress line for detailed info - self.operation_queue.put(("progress_detail", progress_line)) - except Exception: - pass - - def flush(self): - """Required for file-like object interface""" - pass +from tkinter import ttk +from typing import TYPE_CHECKING +from .components.bulk_download_component import BulkDownloadComponent +from .components.bulk_upload_component import BulkUploadComponent +from .components.download_component import DownloadComponent +from .components.login_component import LoginComponent +from .components.output_component import OutputComponent +from .components.upload_component import UploadComponent +from .controllers.app_controller import ApplicationController +from .utils.logging_integration import LoggingIntegration -class ToolTip: - """Create a tooltip for a given widget""" - - def __init__(self, widget, text="widget info"): - self.widget = widget - self.text = text - self.widget.bind("", self.enter) - self.widget.bind("", self.leave) - self.tipwindow = None - - def enter(self, event=None): - self.show_tooltip() - - def leave(self, event=None): - self.hide_tooltip() - - def show_tooltip(self): - if self.tipwindow or not self.text: - return - x, y, cx, cy = self.widget.bbox("insert") - x = x + self.widget.winfo_rootx() + 25 - y = y + cy + self.widget.winfo_rooty() + 25 - self.tipwindow = tw = tk.Toplevel(self.widget) - tw.wm_overrideredirect(True) - tw.wm_geometry("+%d+%d" % (x, y)) - label = tk.Label( - tw, - text=self.text, - justify=tk.LEFT, - background="#ffffe0", - relief=tk.SOLID, - borderwidth=1, - font=("tahoma", "8", "normal"), - ) - label.pack(ipadx=1) - - def hide_tooltip(self): - tw = self.tipwindow - self.tipwindow = None - if tw: - tw.destroy() +if TYPE_CHECKING: + pass class SynapseGUI: - def __init__(self, root): + """Main GUI window""" + + def __init__(self, root: tk.Tk) -> None: self.root = root self.root.title("Synapse Desktop Client") self.root.geometry("800x700") - self.root.resizable(True, True) - - # Configure style - style = ttk.Style() - style.theme_use("clam") # Cross-platform theme - # Initialize variables - self.syn = None - self.is_logged_in = False - self.logged_in_username = "" - self.operation_queue = queue.Queue() - self.config_file_available = False + # Initialize controller + self.controller = ApplicationController() - # Create the GUI + # Create UI components self.create_widgets() - # Start checking for operation results - self.check_queue() + # Connect components to controller + self.controller.set_ui_components( + self.login_component, + self.download_component, + self.upload_component, + self.output_component, + self.bulk_download_component, + self.bulk_upload_component, + ) + + # Setup logging integration to forward console logs to GUI + self.logging_integration = LoggingIntegration(self.output_component.log_message) + self.logging_integration.setup_logging_integration(self.root) - def create_widgets(self): - """Create all GUI widgets""" + def create_widgets(self) -> None: + """Create main window layout and components""" # Main container main_frame = ttk.Frame(self.root, padding="10") main_frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S)) @@ -206,836 +64,88 @@ def create_widgets(self): ) title_label.grid(row=0, column=0, pady=(0, 20)) - # Login Section - self.create_login_section(main_frame) - - # Operation Tabs - self.create_operation_tabs(main_frame) - - # Output Section - self.create_output_section(main_frame) - - # Status Bar - self.create_status_bar(main_frame) - - def create_login_section(self, parent): - """Create login section with multi-profile support""" - login_frame = ttk.LabelFrame(parent, text="Login", padding="10") - login_frame.grid(row=1, column=0, sticky=(tk.W, tk.E), pady=(0, 10)) - login_frame.columnconfigure(1, weight=1) - - # Check if config file is available to determine default mode - available_profiles = get_available_profiles() - self.config_file_available = len(available_profiles) > 0 - default_mode = "config" if self.config_file_available else "manual" - - # Login mode selection - mode_frame = ttk.Frame(login_frame) - mode_frame.grid( - row=0, column=0, columnspan=3, sticky=(tk.W, tk.E), pady=(0, 10) - ) - - self.login_mode_var = tk.StringVar(value=default_mode) - ttk.Radiobutton( - mode_frame, - text="Manual Login (Username + Token)", - variable=self.login_mode_var, - value="manual", - command=self.on_login_mode_change, - ).grid(row=0, column=0, sticky=tk.W, padx=(0, 20)) - - config_radio = ttk.Radiobutton( - mode_frame, - text="Config File Login", - variable=self.login_mode_var, - value="config", - command=self.on_login_mode_change, - ) - config_radio.grid(row=0, column=1, sticky=tk.W) - - # Add tooltip if no config file available - if not self.config_file_available: - ToolTip(config_radio, "No Synapse config file found at ~/.synapseConfig") - - # Profile selection (for config mode) - self.profile_frame = ttk.Frame(login_frame) - self.profile_frame.grid( - row=1, column=0, columnspan=3, sticky=(tk.W, tk.E), pady=(0, 10) + # Login component + self.login_component = LoginComponent( + main_frame, + self.controller.config_manager, + self.controller.handle_login, + self.controller.handle_logout, ) - self.profile_frame.columnconfigure(1, weight=1) - ttk.Label(self.profile_frame, text="Profile:").grid( - row=0, column=0, sticky=tk.W, padx=(0, 5) - ) - self.profile_var = tk.StringVar() - self.profile_combo = ttk.Combobox( - self.profile_frame, - textvariable=self.profile_var, - state="readonly", - width=25, - ) - self.profile_combo.grid(row=0, column=1, sticky=(tk.W, tk.E), padx=(0, 10)) - self.profile_combo.bind("<>", self.on_profile_selected) - - # Profile info label - self.profile_info_var = tk.StringVar() - self.profile_info_label = ttk.Label( - self.profile_frame, - textvariable=self.profile_info_var, - foreground="blue", - font=("Arial", 8), - ) - self.profile_info_label.grid( - row=1, column=0, columnspan=3, sticky=tk.W, pady=(5, 0) - ) - - # Manual login fields - self.manual_frame = ttk.Frame(login_frame) - self.manual_frame.grid( - row=2, column=0, columnspan=3, sticky=(tk.W, tk.E), pady=(0, 10) - ) - self.manual_frame.columnconfigure(1, weight=1) - - # Username - ttk.Label(self.manual_frame, text="Username/Email:").grid( - row=0, column=0, sticky=tk.W, padx=(0, 5) - ) - self.username_var = tk.StringVar() - self.username_entry = ttk.Entry( - self.manual_frame, textvariable=self.username_var, width=30 - ) - self.username_entry.grid(row=0, column=1, sticky=(tk.W, tk.E), padx=(0, 10)) - - # Auth Token - ttk.Label(self.manual_frame, text="Personal Access Token:").grid( - row=1, column=0, sticky=tk.W, padx=(0, 5), pady=(5, 0) - ) - self.token_var = tk.StringVar() - self.token_entry = ttk.Entry( - self.manual_frame, textvariable=self.token_var, show="*", width=30 - ) - self.token_entry.grid( - row=1, column=1, sticky=(tk.W, tk.E), padx=(0, 10), pady=(5, 0) - ) - - # Login button - self.login_button = ttk.Button( - login_frame, text="Login", command=self.login_logout - ) - self.login_button.grid(row=3, column=0, columnspan=3, pady=(10, 0)) - - # Status indicator - self.login_status_var = tk.StringVar(value="Not logged in") - self.login_status_label = ttk.Label( - login_frame, textvariable=self.login_status_var, foreground="red" - ) - self.login_status_label.grid(row=4, column=0, columnspan=3, pady=(5, 0)) - - # Logged in user info - self.user_info_var = tk.StringVar() - self.user_info_label = ttk.Label( - login_frame, - textvariable=self.user_info_var, - foreground="green", - font=("Arial", 9, "bold"), - ) - self.user_info_label.grid(row=5, column=0, columnspan=3, pady=(5, 0)) - - # Initialize the interface - self.refresh_profiles() - self.on_login_mode_change() - - def create_operation_tabs(self, parent): - """Create tabbed interface for operations""" - self.notebook = ttk.Notebook(parent) + # Operation tabs + self.notebook = ttk.Notebook(main_frame) self.notebook.grid( row=2, column=0, sticky=(tk.W, tk.E, tk.N, tk.S), pady=(0, 10) ) - # Download tab - self.download_frame = ttk.Frame(self.notebook, padding="10") - self.notebook.add(self.download_frame, text="Download File") - self.create_download_tab() - - # Upload tab - self.upload_frame = ttk.Frame(self.notebook, padding="10") - self.notebook.add(self.upload_frame, text="Upload File") - self.create_upload_tab() - - def create_download_tab(self): - """Create download tab widgets""" - # Synapse ID - ttk.Label(self.download_frame, text="Synapse ID:").grid( - row=0, column=0, sticky=tk.W, pady=(0, 5) - ) - self.download_id_var = tk.StringVar() - download_id_entry = ttk.Entry( - self.download_frame, textvariable=self.download_id_var, width=40 - ) - download_id_entry.grid( - row=0, column=1, sticky=(tk.W, tk.E), pady=(0, 5), padx=(10, 0) - ) - - # Version (optional) - ttk.Label(self.download_frame, text="Version (optional):").grid( - row=1, column=0, sticky=tk.W, pady=(0, 5) - ) - self.download_version_var = tk.StringVar() - download_version_entry = ttk.Entry( - self.download_frame, textvariable=self.download_version_var, width=40 - ) - download_version_entry.grid( - row=1, column=1, sticky=(tk.W, tk.E), pady=(0, 5), padx=(10, 0) - ) - - # Download location - ttk.Label(self.download_frame, text="Download Location:").grid( - row=2, column=0, sticky=tk.W, pady=(0, 5) - ) - - location_frame = ttk.Frame(self.download_frame) - location_frame.grid( - row=2, column=1, sticky=(tk.W, tk.E), pady=(0, 5), padx=(10, 0) - ) - location_frame.columnconfigure(0, weight=1) - - self.download_location_var = tk.StringVar(value=str(Path.home() / "Downloads")) - download_location_entry = ttk.Entry( - location_frame, textvariable=self.download_location_var - ) - download_location_entry.grid(row=0, column=0, sticky=(tk.W, tk.E), padx=(0, 5)) - - browse_button = ttk.Button( - location_frame, text="Browse", command=self.browse_download_location + # Download component + self.download_component = DownloadComponent( + self.notebook, self.controller.handle_download ) - browse_button.grid(row=0, column=1) + self.notebook.add(self.download_component.get_frame(), text="Download File") - # Download button - self.download_button = ttk.Button( - self.download_frame, - text="Download File", - command=self.download_file, - state="disabled", + # Upload component + self.upload_component = UploadComponent( + self.notebook, self.controller.handle_upload ) - self.download_button.grid(row=3, column=0, columnspan=2, pady=(20, 0)) + self.notebook.add(self.upload_component.get_frame(), text="Upload File") - # Progress bar for downloads - self.download_progress_var = tk.StringVar(value="") - self.download_progress_label = ttk.Label( - self.download_frame, - textvariable=self.download_progress_var, - foreground="blue", - font=("Arial", 8), - ) - self.download_progress_label.grid(row=4, column=0, columnspan=2, pady=(5, 0)) - - self.download_progress_bar = ttk.Progressbar( - self.download_frame, mode="determinate" - ) - self.download_progress_bar.grid( - row=5, column=0, columnspan=2, sticky=(tk.W, tk.E), pady=(5, 0) - ) - - # Configure grid weights - self.download_frame.columnconfigure(1, weight=1) - - def create_upload_tab(self): - """Create upload tab widgets""" - # File selection - ttk.Label(self.upload_frame, text="File to Upload:").grid( - row=0, column=0, sticky=tk.W, pady=(0, 5) - ) - - file_frame = ttk.Frame(self.upload_frame) - file_frame.grid(row=0, column=1, sticky=(tk.W, tk.E), pady=(0, 5), padx=(10, 0)) - file_frame.columnconfigure(0, weight=1) - - self.upload_file_var = tk.StringVar() - upload_file_entry = ttk.Entry(file_frame, textvariable=self.upload_file_var) - upload_file_entry.grid(row=0, column=0, sticky=(tk.W, tk.E), padx=(0, 5)) - - browse_file_button = ttk.Button( - file_frame, text="Browse", command=self.browse_upload_file - ) - browse_file_button.grid(row=0, column=1) - - # Upload mode selection - mode_frame = ttk.LabelFrame(self.upload_frame, text="Upload Mode", padding="10") - mode_frame.grid( - row=1, column=0, columnspan=2, sticky=(tk.W, tk.E), pady=(10, 0) - ) - mode_frame.columnconfigure(1, weight=1) - - self.upload_mode_var = tk.StringVar(value="new") - - new_radio = ttk.Radiobutton( - mode_frame, - text="Create New File", - variable=self.upload_mode_var, - value="new", - command=self.on_upload_mode_change, - ) - new_radio.grid(row=0, column=0, sticky=tk.W, pady=(0, 5)) - - update_radio = ttk.Radiobutton( - mode_frame, - text="Update Existing File", - variable=self.upload_mode_var, - value="update", - command=self.on_upload_mode_change, - ) - update_radio.grid(row=1, column=0, sticky=tk.W) - - # Parent ID / Entity ID fields - self.parent_label = ttk.Label(mode_frame, text="Parent ID (Project/Folder):") - self.parent_label.grid(row=0, column=1, sticky=tk.W, padx=(20, 5), pady=(0, 5)) - - self.parent_id_var = tk.StringVar() - self.parent_id_entry = ttk.Entry( - mode_frame, textvariable=self.parent_id_var, width=30 - ) - self.parent_id_entry.grid(row=0, column=2, sticky=(tk.W, tk.E), pady=(0, 5)) - - self.entity_label = ttk.Label(mode_frame, text="Entity ID to Update:") - self.entity_label.grid(row=1, column=1, sticky=tk.W, padx=(20, 5)) - - self.entity_id_var = tk.StringVar() - self.entity_id_entry = ttk.Entry( - mode_frame, textvariable=self.entity_id_var, width=30, state="disabled" - ) - self.entity_id_entry.grid(row=1, column=2, sticky=(tk.W, tk.E)) - - # File name - ttk.Label(self.upload_frame, text="Entity Name (optional):").grid( - row=2, column=0, sticky=tk.W, pady=(10, 5) - ) - self.upload_name_var = tk.StringVar() - upload_name_entry = ttk.Entry( - self.upload_frame, textvariable=self.upload_name_var, width=40 - ) - upload_name_entry.grid( - row=2, column=1, sticky=(tk.W, tk.E), pady=(10, 5), padx=(10, 0) - ) - - # Upload button - self.upload_button = ttk.Button( - self.upload_frame, - text="Upload File", - command=self.upload_file, - state="disabled", - ) - self.upload_button.grid(row=3, column=0, columnspan=2, pady=(20, 0)) - - # Progress bar for uploads - self.upload_progress_var = tk.StringVar(value="") - self.upload_progress_label = ttk.Label( - self.upload_frame, - textvariable=self.upload_progress_var, - foreground="blue", - font=("Arial", 8), - ) - self.upload_progress_label.grid(row=4, column=0, columnspan=2, pady=(5, 0)) - - self.upload_progress_bar = ttk.Progressbar( - self.upload_frame, mode="determinate" - ) - self.upload_progress_bar.grid( - row=5, column=0, columnspan=2, sticky=(tk.W, tk.E), pady=(5, 0) - ) - - # Configure grid weights - self.upload_frame.columnconfigure(1, weight=1) - mode_frame.columnconfigure(2, weight=1) - - def create_output_section(self, parent): - """Create output/log section""" - output_frame = ttk.LabelFrame(parent, text="Output", padding="5") - output_frame.grid( + # Output component + self.output_component = OutputComponent(main_frame) + self.output_component.get_frame().grid( row=3, column=0, sticky=(tk.W, tk.E, tk.N, tk.S), pady=(0, 10) ) - output_frame.columnconfigure(0, weight=1) - output_frame.rowconfigure(0, weight=1) - self.output_text = scrolledtext.ScrolledText( - output_frame, height=20, wrap=tk.WORD, font=("Consolas", 9) + # Bulk Download component + self.bulk_download_component = BulkDownloadComponent( + self.notebook, + self.controller.handle_bulk_download, + self.controller.handle_enumerate, + self.output_component.log_message, + self._on_progress_update, ) - self.output_text.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S)) - - # Clear button - clear_button = ttk.Button( - output_frame, text="Clear Output", command=self.clear_output + self.notebook.add( + self.bulk_download_component.create_ui(), text="Bulk Download" ) - clear_button.grid(row=1, column=0, pady=(5, 0)) - - def create_status_bar(self, parent): - """Create status bar""" - self.status_var = tk.StringVar(value="Ready") - status_bar = ttk.Label(parent, textvariable=self.status_var, relief=tk.SUNKEN) - status_bar.grid(row=4, column=0, sticky=(tk.W, tk.E)) - - def log_output(self, message, error=False): - """Add message to output text widget""" - self.output_text.insert(tk.END, f"{message}\n") - self.output_text.see(tk.END) - if error: - # Color the last line red for errors - line_start = self.output_text.index("end-1c linestart") - line_end = self.output_text.index("end-1c lineend") - self.output_text.tag_add("error", line_start, line_end) - self.output_text.tag_config("error", foreground="red") - self.root.update_idletasks() - def clear_output(self): - """Clear the output text widget""" - self.output_text.delete(1.0, tk.END) - - def browse_download_location(self): - """Browse for download directory""" - directory = filedialog.askdirectory(initialdir=self.download_location_var.get()) - if directory: - self.download_location_var.set(directory) - - def browse_upload_file(self): - """Browse for file to upload""" - file_path = filedialog.askopenfilename( - title="Select file to upload", initialdir=str(Path.home()) + # Bulk Upload component + self.bulk_upload_component = BulkUploadComponent( + self.notebook, + self.controller.handle_bulk_upload, + self.output_component.log_message, + self._on_progress_update, ) - if file_path: - self.upload_file_var.set(file_path) - # Auto-fill name if empty - if not self.upload_name_var.get(): - self.upload_name_var.set(Path(file_path).name) - - def on_upload_mode_change(self): - """Handle upload mode radio button changes""" - mode = self.upload_mode_var.get() - if mode == "new": - self.parent_id_entry.config(state="normal") - self.entity_id_entry.config(state="disabled") - self.entity_id_var.set("") - else: # update - self.parent_id_entry.config(state="disabled") - self.entity_id_entry.config(state="normal") - self.parent_id_var.set("") - - def on_login_mode_change(self): - """Handle login mode radio button changes""" - mode = self.login_mode_var.get() - if mode == "manual": - # Show manual login fields, hide profile selection - self.manual_frame.grid() - self.profile_frame.grid_remove() - else: # config - # Show profile selection, hide manual login fields - self.manual_frame.grid_remove() - self.profile_frame.grid() - self.refresh_profiles() - - def refresh_profiles(self): - """Refresh the list of available profiles""" - try: - profiles = get_available_profiles() - if profiles: - self.profile_combo["values"] = profiles - if not self.profile_var.get() or self.profile_var.get() not in profiles: - self.profile_var.set(profiles[0]) - self.on_profile_selected() - else: - self.profile_combo["values"] = [] - self.profile_var.set("") - self.profile_info_var.set("No profiles found in config file") - except Exception as e: - self.profile_combo["values"] = [] - self.profile_var.set("") - self.profile_info_var.set(f"Error reading config: {str(e)}") - - def on_profile_selected(self, event=None): - """Handle profile selection""" - profile_name = self.profile_var.get() - if profile_name: - username = get_profile_info(profile_name) - if username: - self.profile_info_var.set(f"Username: {username}") - else: - self.profile_info_var.set("No username found for this profile") - else: - self.profile_info_var.set("") - - def login_logout(self): - """Handle login/logout button click""" - if self.is_logged_in: - self.logout() - else: - self.login() - - def logout(self): - """Logout from Synapse""" - try: - if self.syn: - self.syn.logout() - self.syn = None - self.is_logged_in = False - self.logged_in_username = "" - - # Update UI - self.login_status_var.set("Logged out") - self.login_status_label.config(foreground="red") - self.login_button.config(text="Login") - self.user_info_var.set("") - self.download_button.config(state="disabled") - self.upload_button.config(state="disabled") - self.status_var.set("Ready") - self.log_output("Logged out successfully") - - except Exception as e: - self.log_output(f"Logout error: {e}", error=True) - - def login(self): - """Login to Synapse with support for both manual and config file authentication""" - - def login_worker(): - try: - self.log_output("Attempting to login...") - self.syn = synapseclient.Synapse(skip_checks=True) - - mode = self.login_mode_var.get() - - if mode == "manual": - # Manual login with username and token - username = self.username_var.get().strip() - token = self.token_var.get().strip() - - if not token: - raise ValueError( - "Personal Access Token is required for manual login" - ) - - # Use email parameter for username when provided to ensure compliance - if username: - self.syn.login(email=username, authToken=token, silent=True) - else: - self.syn.login(authToken=token, silent=True) - - else: # config mode - # Config file login with profile - profile_name = self.profile_var.get() - if not profile_name: - raise ValueError("Please select a profile") - - # Clean profile name for login - if profile_name == "authentication (legacy)": - # Use None to let Synapse handle legacy authentication section - self.syn.login(silent=True) - else: - # Use the specific profile - self.syn.login(profile=profile_name, silent=True) + self.notebook.add(self.bulk_upload_component.create_ui(), text="Bulk Upload") - # Get the logged-in username from the Synapse client - username = getattr(self.syn, "username", None) or getattr( - self.syn, "email", "Unknown User" - ) - self.operation_queue.put( - ( - "login_success", - f"Login successful! Logged in as: {username}", - username, - ) - ) - - except Exception as e: - self.operation_queue.put(("login_error", str(e))) - - # Disable login button during login attempt - self.login_button.config(state="disabled") - self.status_var.set("Logging in...") - - # Run login in separate thread - threading.Thread(target=login_worker, daemon=True).start() - - def download_file(self): - """Download file from Synapse""" - - def download_worker(): - try: - synapse_id = self.download_id_var.get().strip() - version = self.download_version_var.get().strip() - download_path = self.download_location_var.get().strip() - - if not synapse_id: - raise ValueError("Synapse ID is required") - - version_num = None - if version: - try: - version_num = int(version) - except ValueError: - raise ValueError("Version must be a number") - - self.operation_queue.put(("status", f"Downloading {synapse_id}...")) - self.operation_queue.put(("progress_start", "download")) - - # Capture TQDM progress output - progress_capture = TQDMProgressCapture(self.operation_queue) - - # Redirect stderr to capture TQDM output - import sys - - original_stderr = sys.stderr - sys.stderr = progress_capture - - try: - file_obj = File( - id=synapse_id, - version_number=version_num, - path=download_path, - download_file=True, - ) - - file_obj = file_obj.get(synapse_client=self.syn) - - if file_obj.path and os.path.exists(file_obj.path): - self.operation_queue.put( - ("download_success", f"Downloaded: {file_obj.path}") - ) - else: - self.operation_queue.put( - ( - "download_error", - f"No files associated with entity {synapse_id}", - ) - ) - finally: - # Restore original stderr - sys.stderr = original_stderr - self.operation_queue.put(("progress_end", "download")) - - except Exception as e: - self.operation_queue.put(("download_error", str(e))) - self.operation_queue.put(("progress_end", "download")) - - if not self.is_logged_in: - messagebox.showerror("Error", "Please log in first") - return - - # Reset progress indicators and set operation context - self.download_progress_var.set("") - self.download_progress_bar["value"] = 0 - self._current_operation = "download" - - # Run download in separate thread - threading.Thread(target=download_worker, daemon=True).start() - - def upload_file(self): - """Upload file to Synapse""" - - def upload_worker(): - try: - file_path = self.upload_file_var.get().strip() - name = self.upload_name_var.get().strip() - mode = self.upload_mode_var.get() - - if not file_path: - raise ValueError("File path is required") - - if not os.path.exists(file_path): - raise ValueError(f"File does not exist: {file_path}") - - self.operation_queue.put(("status", f"Uploading {file_path}...")) - self.operation_queue.put(("progress_start", "upload")) - - # Capture TQDM progress output - progress_capture = TQDMProgressCapture(self.operation_queue) - - # Redirect stderr to capture TQDM output - import sys - - original_stderr = sys.stderr - sys.stderr = progress_capture - - try: - if mode == "new": - parent_id = self.parent_id_var.get().strip() - if not parent_id: - raise ValueError("Parent ID is required for new files") - - file_obj = File( - path=file_path, - name=name or utils.guess_file_name(file_path), - parent_id=parent_id, - ) - else: # update - entity_id = self.entity_id_var.get().strip() - if not entity_id: - raise ValueError("Entity ID is required for updates") - - file_obj = File( - id=entity_id, path=file_path, name=name, download_file=False - ) - file_obj = file_obj.get(synapse_client=self.syn) - file_obj.path = file_path - if name: - file_obj.name = name - - file_obj = file_obj.store(synapse_client=self.syn) - msg = f"Created/Updated entity: {file_obj.id} - {file_obj.name}" - self.operation_queue.put(("upload_success", msg)) - finally: - # Restore original stderr - sys.stderr = original_stderr - self.operation_queue.put(("progress_end", "upload")) - - except Exception as e: - self.operation_queue.put(("upload_error", str(e))) - self.operation_queue.put(("progress_end", "upload")) - - if not self.is_logged_in: - messagebox.showerror("Error", "Please log in first") - return - - # Reset progress indicators and set operation context - self.upload_progress_var.set("") - self.upload_progress_bar["value"] = 0 - self._current_operation = "upload" - - # Run upload in separate thread - threading.Thread(target=upload_worker, daemon=True).start() - - def check_queue(self): - """Check for operation results from background threads""" - try: - while True: - result = self.operation_queue.get_nowait() - - # Handle different result formats - if len(result) == 2: - operation_type, message = result - username = None - progress = None - elif len(result) == 3: - operation_type, message, username_or_progress = result - if operation_type == "progress": - username = None - progress = username_or_progress - else: - username = username_or_progress - progress = None - else: - continue - - if operation_type == "login_success": - self.is_logged_in = True - if username: - self.logged_in_username = username - self.user_info_var.set(f"Logged in as: {username}") - else: - self.user_info_var.set("Logged in successfully") - self.login_status_var.set("Logged in successfully") - self.login_status_label.config(foreground="green") - self.login_button.config(text="Logout", state="normal") - self.download_button.config(state="normal") - self.upload_button.config(state="normal") - self.status_var.set("Ready") - self.log_output(message) - - elif operation_type == "login_error": - self.is_logged_in = False - self.logged_in_username = "" - self.user_info_var.set("") - self.login_status_var.set(f"Login failed: {message}") - self.login_status_label.config(foreground="red") - self.login_button.config(text="Login", state="normal") - self.status_var.set("Ready") - self.log_output(f"Login failed: {message}", error=True) - - elif operation_type == "progress_start": - if message == "download": - self.download_progress_var.set("Preparing download...") - self.download_progress_bar["value"] = 0 - elif message == "upload": - self.upload_progress_var.set("Preparing upload...") - self.upload_progress_bar["value"] = 0 - - elif operation_type == "progress": - # Update progress bars based on current operation - if progress is not None: - # Determine which progress bar to update based on which operation is active - if hasattr(self, "_current_operation"): - if self._current_operation == "download": - self.download_progress_bar["value"] = progress - self.download_progress_var.set(message) - elif self._current_operation == "upload": - self.upload_progress_bar["value"] = progress - self.upload_progress_var.set(message) - else: - # Fallback: update both (shouldn't happen in normal operation) - self.download_progress_bar["value"] = progress - self.upload_progress_bar["value"] = progress - - elif operation_type == "progress_detail": - # Log detailed progress information - self.log_output(message) - - elif operation_type == "progress_end": - if message == "download": - self.download_progress_var.set("") - self.download_progress_bar["value"] = 0 - if ( - hasattr(self, "_current_operation") - and self._current_operation == "download" - ): - delattr(self, "_current_operation") - elif message == "upload": - self.upload_progress_var.set("") - self.upload_progress_bar["value"] = 0 - if ( - hasattr(self, "_current_operation") - and self._current_operation == "upload" - ): - delattr(self, "_current_operation") - - elif operation_type == "download_success": - self.status_var.set("Download completed") - self.log_output(message) - self.download_progress_var.set("Download completed") - self.download_progress_bar["value"] = 100 - messagebox.showinfo("Success", message) - - elif operation_type == "download_error": - self.status_var.set("Download failed") - self.log_output(f"Download failed: {message}", error=True) - self.download_progress_var.set("Download failed") - self.download_progress_bar["value"] = 0 - messagebox.showerror("Download Error", message) - - elif operation_type == "upload_success": - self.status_var.set("Upload completed") - self.log_output(message) - self.upload_progress_var.set("Upload completed") - self.upload_progress_bar["value"] = 100 - messagebox.showinfo("Success", message) + # Status bar + self.output_component.get_status_bar().grid( + row=4, column=0, sticky=(tk.W, tk.E) + ) - elif operation_type == "upload_error": - self.status_var.set("Upload failed") - self.log_output(f"Upload failed: {message}", error=True) - self.upload_progress_var.set("Upload failed") - self.upload_progress_bar["value"] = 0 - messagebox.showerror("Upload Error", message) + def _on_progress_update(self, message: str, progress: int) -> None: + """Handle progress updates from bulk operations""" + # Note: parameters are swapped compared to controller callback + # to match the component's expected signature + if self.output_component: + self.output_component.log_message(f"Progress: {progress}% - {message}") - elif operation_type == "status": - self.status_var.set(message) - self.log_output(message) + def cleanup(self) -> None: + """Clean up resources when closing the application""" + if hasattr(self, 'logging_integration'): + self.logging_integration.cleanup_logging_integration() - except queue.Empty: - pass - # Schedule next check - self.root.after(100, self.check_queue) +def main() -> None: + """Main function - much cleaner now""" + root = tk.Tk() + app = SynapseGUI(root) + # Setup cleanup on window close + def on_closing(): + app.cleanup() + root.destroy() -def main(): - """Main function to run the GUI""" - root = tk.Tk() - SynapseGUI(root) + root.protocol("WM_DELETE_WINDOW", on_closing) # Center the window root.update_idletasks() @@ -1048,7 +158,7 @@ def main(): try: root.mainloop() except KeyboardInterrupt: - pass + app.cleanup() if __name__ == "__main__": diff --git a/synapsegui/utils/logging_integration.py b/synapsegui/utils/logging_integration.py new file mode 100644 index 000000000..8f80f9442 --- /dev/null +++ b/synapsegui/utils/logging_integration.py @@ -0,0 +1,90 @@ +""" +Logging utilities for GUI integration +""" +import logging +import tkinter as tk +from typing import Callable, Optional + + +class GUILogHandler(logging.Handler): + """Custom logging handler that forwards log messages to the GUI""" + + def __init__(self, log_callback: Callable[[str, bool], None]): + super().__init__() + self.log_callback = log_callback + self.root = None + + def set_root(self, root: tk.Tk) -> None: + """Set the tkinter root for thread-safe GUI updates""" + self.root = root + + def emit(self, record: logging.LogRecord) -> None: + """Emit a log record to the GUI""" + try: + message = self.format(record) + is_error = record.levelno >= logging.ERROR + + # If we have a root widget, schedule the GUI update on the main thread + if self.root: + self.root.after(0, lambda: self.log_callback(message, is_error)) + else: + # Fallback: call directly (may not be thread-safe) + self.log_callback(message, is_error) + except Exception: + # Avoid recursion errors by not logging the exception + pass + + +class LoggingIntegration: + """Manages integration between Python logging and GUI logging""" + + def __init__(self, log_callback: Callable[[str, bool], None]): + self.log_callback = log_callback + self.gui_handler: Optional[GUILogHandler] = None + self.original_handlers = [] + + def setup_logging_integration(self, root: tk.Tk) -> None: + """Setup logging to forward messages to GUI""" + # Create GUI log handler + self.gui_handler = GUILogHandler(self.log_callback) + self.gui_handler.set_root(root) + + # Set formatter to match GUI expectations + formatter = logging.Formatter('%(name)s: %(message)s') + self.gui_handler.setFormatter(formatter) + + # Add the handler to the synapseclient loggers + synapse_loggers = [ + 'synapseclient_default', + 'synapseclient_debug', + 'synapseclient', + 'synapseclient.client', + 'synapseclient.core', + 'synapseclient.models' + ] + + for logger_name in synapse_loggers: + logger = logging.getLogger(logger_name) + # Store original handlers for cleanup + self.original_handlers.extend(logger.handlers[:]) + # Add our GUI handler + logger.addHandler(self.gui_handler) + + def cleanup_logging_integration(self) -> None: + """Clean up logging integration""" + if self.gui_handler: + synapse_loggers = [ + 'synapseclient_default', + 'synapseclient_debug', + 'synapseclient', + 'synapseclient.client', + 'synapseclient.core', + 'synapseclient.models' + ] + + for logger_name in synapse_loggers: + logger = logging.getLogger(logger_name) + if self.gui_handler in logger.handlers: + logger.removeHandler(self.gui_handler) + + self.gui_handler = None From 19f89e6abb81c56cc3aeb99aa5eda51e71c0d78e Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Wed, 13 Aug 2025 18:16:11 +0000 Subject: [PATCH 15/46] Run precommit --- .gitignore | 2 +- gui_entrypoint.py | 2 +- .../components/bulk_download_component.py | 23 ++-- .../components/bulk_upload_component.py | 54 +++++---- synapsegui/controllers/app_controller.py | 69 ++++++++--- synapsegui/models/synapse_client.py | 110 +++++++++++------- synapsegui/synapse_gui.py | 2 +- synapsegui/utils/logging_integration.py | 26 ++--- 8 files changed, 185 insertions(+), 103 deletions(-) diff --git a/.gitignore b/.gitignore index 14d82e7af..3d481963b 100644 --- a/.gitignore +++ b/.gitignore @@ -33,4 +33,4 @@ coverage.xml .ipynb_checkpoints *.ipynb .env -*.spec \ No newline at end of file +*.spec diff --git a/gui_entrypoint.py b/gui_entrypoint.py index 366544748..e7f500a58 100644 --- a/gui_entrypoint.py +++ b/gui_entrypoint.py @@ -20,7 +20,7 @@ def _fix_console_streams(): if __name__ == "__main__": # Fix console streams first for PyInstaller compatibility _fix_console_streams() - + # Get the directory containing this script script_dir = os.path.dirname(os.path.abspath(__file__)) # Add the parent directory to Python path diff --git a/synapsegui/components/bulk_download_component.py b/synapsegui/components/bulk_download_component.py index e46d142ed..2bf1839c6 100644 --- a/synapsegui/components/bulk_download_component.py +++ b/synapsegui/components/bulk_download_component.py @@ -90,7 +90,9 @@ def create_ui(self) -> ttk.Frame: ) # Progress bar for bulk operations - self.bulk_progress_bar = ttk.Progressbar(progress_frame, mode="determinate", length=300) + self.bulk_progress_bar = ttk.Progressbar( + progress_frame, mode="determinate", length=300 + ) self.bulk_progress_bar.pack(side="right", padx=(10, 0)) # Selection tree section @@ -196,20 +198,23 @@ def _on_enumerate_clicked(self) -> None: self._clear_tree() self.container_items.clear() self.selected_items.clear() - + # Update status self.progress_var.set("Enumerating contents...") self.on_log_message( - f"Starting enumeration of {container_id} (recursive={self.recursive_var.get()})", False + f"Starting enumeration of {container_id} (recursive={self.recursive_var.get()})", + False, ) # Delegate to controller using the same pattern as other operations self.on_enumerate(container_id, self.recursive_var.get()) - def handle_enumeration_result(self, items: List[BulkItem], error: str = None) -> None: + def handle_enumeration_result( + self, items: List[BulkItem], error: str = None + ) -> None: """ Handle enumeration results from the controller. - + Args: items: List of enumerated BulkItem objects, or empty list if error error: Error message if enumeration failed, None if successful @@ -218,7 +223,7 @@ def handle_enumeration_result(self, items: List[BulkItem], error: str = None) -> self.progress_var.set("Enumeration failed") self.on_log_message(f"Enumeration failed: {error}", True) return - + # Store items and update UI self.container_items = items self._populate_tree() @@ -410,7 +415,7 @@ def _on_download_clicked(self) -> None: def update_progress(self, progress: int, message: str) -> None: """Update the progress bar and status message. - + Args: progress: Progress percentage (0-100) message: Status message to display @@ -427,7 +432,7 @@ def start_bulk_operation(self) -> None: def complete_bulk_operation(self, success: bool, message: str) -> None: """Called when a bulk operation completes - + Args: success: Whether the operation was successful message: Completion message @@ -435,7 +440,7 @@ def complete_bulk_operation(self, success: bool, message: str) -> None: if self.bulk_progress_bar: self.bulk_progress_bar["value"] = 100 if success else 0 self.progress_var.set(message) - + if success: self.on_log_message(f"Bulk download completed: {message}", False) else: diff --git a/synapsegui/components/bulk_upload_component.py b/synapsegui/components/bulk_upload_component.py index 0ca96ec61..885f909bf 100644 --- a/synapsegui/components/bulk_upload_component.py +++ b/synapsegui/components/bulk_upload_component.py @@ -103,7 +103,9 @@ def create_ui(self) -> ttk.Frame: ) # Progress bar for bulk operations - self.bulk_progress_bar = ttk.Progressbar(status_frame, mode="determinate", length=300) + self.bulk_progress_bar = ttk.Progressbar( + status_frame, mode="determinate", length=300 + ) self.bulk_progress_bar.pack(side="right", padx=(10, 0)) # File list tree section @@ -263,7 +265,7 @@ def _add_folder_recursive(self, folder_path: str) -> int: if self._add_file_item(str(item_path)): added_count += 1 # Note: We deliberately do NOT add subdirectories as separate BulkItem objects - # The directory structure will be preserved through the file paths and + # The directory structure will be preserved through the file paths and # recreated during upload when preserve_structure is enabled except PermissionError as e: self.on_log_message(f"Permission error accessing {folder_path}: {e}", True) @@ -281,7 +283,7 @@ def _remove_selected(self) -> None: item_tags = self.tree.item(item_id, "tags") if "visual_directory" in item_tags: continue - + item_values = self.tree.item(item_id, "values") if len(item_values) >= 3: selected_paths.append(item_values[2]) # Local Path column @@ -329,9 +331,11 @@ def _populate_tree_structured(self) -> None: # Check if this folder is not a subfolder of another folder in the list is_root = True for other_item in self.upload_items: - if (other_item.item_type == "Folder" and - other_item.path != item.path and - self._is_subpath(item.path, other_item.path)): + if ( + other_item.item_type == "Folder" + and other_item.path != item.path + and self._is_subpath(item.path, other_item.path) + ): is_root = False break if is_root: @@ -339,44 +343,52 @@ def _populate_tree_structured(self) -> None: # Build tree structure for each root folder tree_nodes = {} # Maps folder paths to tree node IDs - + # Add root folders first - these appear at the top level for root_folder in root_folders: root_id = self.tree.insert( "", - "end", + "end", text=root_folder.name, - values=(root_folder.item_type, root_folder.get_display_size(), root_folder.path), + values=( + root_folder.item_type, + root_folder.get_display_size(), + root_folder.path, + ), tags=(root_folder.path,), ) tree_nodes[root_folder.path] = root_id # Sort remaining items (files and any standalone files) by path depth - remaining_items = [item for item in self.upload_items if item not in root_folders] - + remaining_items = [ + item for item in self.upload_items if item not in root_folders + ] + for item in sorted(remaining_items, key=lambda x: len(Path(x.path).parts)): # Find which root folder this item belongs to parent_id = "" best_parent_path = "" - + for root_folder in root_folders: if self._is_subpath(item.path, root_folder.path): parent_id = tree_nodes[root_folder.path] best_parent_path = root_folder.path break - + if parent_id and best_parent_path: # Build intermediate directory structure within the selected folder only - relative_parts = self._get_relative_path_parts(item.path, best_parent_path) - + relative_parts = self._get_relative_path_parts( + item.path, best_parent_path + ) + current_parent_id = parent_id current_path = Path(best_parent_path) - + # Build intermediate directories for display (exclude the last part which is the item itself) for part in relative_parts[:-1]: current_path = current_path / part current_path_str = str(current_path) - + if current_path_str not in tree_nodes: # Create visual directory node (not a BulkItem) current_parent_id = self.tree.insert( @@ -389,7 +401,7 @@ def _populate_tree_structured(self) -> None: tree_nodes[current_path_str] = current_parent_id else: current_parent_id = tree_nodes[current_path_str] - + # Add the actual item (file) self.tree.insert( current_parent_id, @@ -506,7 +518,7 @@ def _on_upload_clicked(self) -> None: def update_progress(self, progress: int, message: str) -> None: """Update the progress bar and status message. - + Args: progress: Progress percentage (0-100) message: Status message to display @@ -523,7 +535,7 @@ def start_bulk_operation(self) -> None: def complete_bulk_operation(self, success: bool, message: str) -> None: """Called when a bulk operation completes - + Args: success: Whether the operation was successful message: Completion message @@ -531,7 +543,7 @@ def complete_bulk_operation(self, success: bool, message: str) -> None: if self.bulk_progress_bar: self.bulk_progress_bar["value"] = 100 if success else 0 self.status_var.set(message) - + if success: self.on_log_message(f"Bulk upload completed: {message}", False) else: diff --git a/synapsegui/controllers/app_controller.py b/synapsegui/controllers/app_controller.py index 0c505e374..5eb45c2c1 100644 --- a/synapsegui/controllers/app_controller.py +++ b/synapsegui/controllers/app_controller.py @@ -72,7 +72,7 @@ def login_worker(): self.output_component.log_message( f"Login failed: {result['error']}", error=True ) - + # Re-enable login/logout button after login attempt completes self.login_component.set_login_button_state(True) @@ -185,13 +185,17 @@ def enumerate_worker(): if self.bulk_download_component: if result["success"]: self.bulk_download_component.parent.after( - 0, - lambda: self.bulk_download_component.handle_enumeration_result(result["items"]) + 0, + lambda: self.bulk_download_component.handle_enumeration_result( + result["items"] + ), ) else: self.bulk_download_component.parent.after( 0, - lambda: self.bulk_download_component.handle_enumeration_result([], result["error"]) + lambda: self.bulk_download_component.handle_enumeration_result( + [], result["error"] + ), ) threading.Thread(target=enumerate_worker, daemon=True).start() @@ -224,8 +228,10 @@ def handle_bulk_download( def bulk_download_worker(): # Start the operation if self.bulk_download_component: - self.output_component.get_frame().after(0, lambda: self.bulk_download_component.start_bulk_operation()) - + self.output_component.get_frame().after( + 0, lambda: self.bulk_download_component.start_bulk_operation() + ) + result = asyncio.run( self.synapse_client.bulk_download( items, @@ -241,13 +247,23 @@ def bulk_download_worker(): f"Bulk download complete: {result['summary']}" ) if self.bulk_download_component: - self.output_component.get_frame().after(0, lambda: self.bulk_download_component.complete_bulk_operation(True, result['summary'])) + self.output_component.get_frame().after( + 0, + lambda: self.bulk_download_component.complete_bulk_operation( + True, result["summary"] + ), + ) else: self.output_component.log_message( f"Bulk download failed: {result['error']}", error=True ) if self.bulk_download_component: - self.output_component.get_frame().after(0, lambda: self.bulk_download_component.complete_bulk_operation(False, result['error'])) + self.output_component.get_frame().after( + 0, + lambda: self.bulk_download_component.complete_bulk_operation( + False, result["error"] + ), + ) self.output_component.log_message( f"Starting bulk download of {len(items)} items..." @@ -262,8 +278,10 @@ def handle_bulk_upload( def bulk_upload_worker(): # Start the operation if self.bulk_upload_component: - self.output_component.get_frame().after(0, lambda: self.bulk_upload_component.start_bulk_operation()) - + self.output_component.get_frame().after( + 0, lambda: self.bulk_upload_component.start_bulk_operation() + ) + result = asyncio.run( self.synapse_client.bulk_upload( items, @@ -279,13 +297,23 @@ def bulk_upload_worker(): f"Bulk upload complete: {result['summary']}" ) if self.bulk_upload_component: - self.output_component.get_frame().after(0, lambda: self.bulk_upload_component.complete_bulk_operation(True, result['summary'])) + self.output_component.get_frame().after( + 0, + lambda: self.bulk_upload_component.complete_bulk_operation( + True, result["summary"] + ), + ) else: self.output_component.log_message( f"Bulk upload failed: {result['error']}", error=True ) if self.bulk_upload_component: - self.output_component.get_frame().after(0, lambda: self.bulk_upload_component.complete_bulk_operation(False, result['error'])) + self.output_component.get_frame().after( + 0, + lambda: self.bulk_upload_component.complete_bulk_operation( + False, result["error"] + ), + ) self.output_component.log_message( f"Starting bulk upload of {len(items)} items..." @@ -296,17 +324,26 @@ def _on_bulk_download_progress_update(self, progress: int, message: str) -> None """Handle progress updates from bulk download operations""" # Schedule UI updates on the main thread if self.bulk_download_component: - self.output_component.get_frame().after(0, lambda: self.bulk_download_component.update_progress(progress, message)) + self.output_component.get_frame().after( + 0, + lambda: self.bulk_download_component.update_progress(progress, message), + ) if self.output_component: - self.output_component.log_message(f"Download Progress: {progress}% - {message}") + self.output_component.log_message( + f"Download Progress: {progress}% - {message}" + ) def _on_bulk_upload_progress_update(self, progress: int, message: str) -> None: """Handle progress updates from bulk upload operations""" # Schedule UI updates on the main thread if self.bulk_upload_component: - self.output_component.get_frame().after(0, lambda: self.bulk_upload_component.update_progress(progress, message)) + self.output_component.get_frame().after( + 0, lambda: self.bulk_upload_component.update_progress(progress, message) + ) if self.output_component: - self.output_component.log_message(f"Upload Progress: {progress}% - {message}") + self.output_component.log_message( + f"Upload Progress: {progress}% - {message}" + ) def _on_progress_update(self, progress: int, message: str) -> None: """Handle progress updates from single file operations""" diff --git a/synapsegui/models/synapse_client.py b/synapsegui/models/synapse_client.py index 7076d97d4..bdd668e68 100644 --- a/synapsegui/models/synapse_client.py +++ b/synapsegui/models/synapse_client.py @@ -17,13 +17,15 @@ def _safe_stderr_redirect(new_stderr): """ Safely redirect stderr, handling the case where original stderr might be None. - + Returns: Tuple of (original_stderr, safe_original_stderr) where safe_original_stderr is guaranteed to be a valid file-like object. """ original_stderr = sys.stderr - safe_original_stderr = original_stderr if original_stderr is not None else io.StringIO() + safe_original_stderr = ( + original_stderr if original_stderr is not None else io.StringIO() + ) sys.stderr = new_stderr return original_stderr, safe_original_stderr @@ -104,13 +106,13 @@ async def login_manual(self, username: str, token: str) -> Dict[str, Any]: ) # Log successful login - logger = logging.getLogger('synapseclient') + logger = logging.getLogger("synapseclient") logger.info(f"Successfully logged in as {self.username}") return {"success": True, "username": self.username} except Exception as e: # Log login error - logger = logging.getLogger('synapseclient') + logger = logging.getLogger("synapseclient") logger.error(f"Login failed: {str(e)}") return {"success": False, "error": str(e)} @@ -131,13 +133,15 @@ async def login_with_profile(self, profile_name: str) -> Dict[str, Any]: ) # Log successful login - logger = logging.getLogger('synapseclient') - logger.info(f"Successfully logged in as {self.username} using profile {profile_name}") + logger = logging.getLogger("synapseclient") + logger.info( + f"Successfully logged in as {self.username} using profile {profile_name}" + ) return {"success": True, "username": self.username} except Exception as e: # Log login error - logger = logging.getLogger('synapseclient') + logger = logging.getLogger("synapseclient") logger.error(f"Login with profile '{profile_name}' failed: {str(e)}") return {"success": False, "error": str(e)} @@ -146,7 +150,7 @@ def logout(self) -> None: if self.client: self.client.logout() # Log logout - logger = logging.getLogger('synapseclient') + logger = logging.getLogger("synapseclient") logger.info(f"User {self.username} logged out") self.client = None self.is_logged_in = False @@ -166,15 +170,19 @@ async def download_file( return {"success": False, "error": "Not logged in"} # Log download start - logger = logging.getLogger('synapseclient') + logger = logging.getLogger("synapseclient") version_info = f" version {version}" if version else "" - logger.info(f"Starting download of {synapse_id}{version_info} to {download_path}") + logger.info( + f"Starting download of {synapse_id}{version_info} to {download_path}" + ) # Create progress capture for TQDM output progress_capture = TQDMProgressCapture(progress_callback, detail_callback) # Safely redirect stderr to capture TQDM output - original_stderr, safe_original_stderr = _safe_stderr_redirect(progress_capture) + original_stderr, safe_original_stderr = _safe_stderr_redirect( + progress_capture + ) try: file_obj = File( @@ -187,7 +195,9 @@ async def download_file( file_obj = file_obj.get(synapse_client=self.client) if file_obj.path and os.path.exists(file_obj.path): - logger.info(f"Successfully downloaded {synapse_id} to {file_obj.path}") + logger.info( + f"Successfully downloaded {synapse_id} to {file_obj.path}" + ) return {"success": True, "path": file_obj.path} else: error_msg = f"No files associated with entity {synapse_id}" @@ -198,7 +208,7 @@ async def download_file( _safe_stderr_restore(original_stderr, safe_original_stderr) except Exception as e: - logger = logging.getLogger('synapseclient') + logger = logging.getLogger("synapseclient") logger.error(f"Download failed for {synapse_id}: {str(e)}") return {"success": False, "error": str(e)} @@ -220,17 +230,23 @@ async def upload_file( return {"success": False, "error": f"File does not exist: {file_path}"} # Log upload start - logger = logging.getLogger('synapseclient') + logger = logging.getLogger("synapseclient") if entity_id: - logger.info(f"Starting upload of {file_path} to update entity {entity_id}") + logger.info( + f"Starting upload of {file_path} to update entity {entity_id}" + ) else: - logger.info(f"Starting upload of {file_path} to create new entity in {parent_id}") + logger.info( + f"Starting upload of {file_path} to create new entity in {parent_id}" + ) # Create progress capture for TQDM output progress_capture = TQDMProgressCapture(progress_callback, detail_callback) # Safely redirect stderr to capture TQDM output - original_stderr, safe_original_stderr = _safe_stderr_redirect(progress_capture) + original_stderr, safe_original_stderr = _safe_stderr_redirect( + progress_capture + ) try: if entity_id: # Update existing @@ -255,10 +271,12 @@ async def upload_file( ) file_obj = file_obj.store(synapse_client=self.client) - + # Log successful upload - logger.info(f"Successfully uploaded {file_path} as entity {file_obj.id}: {file_obj.name}") - + logger.info( + f"Successfully uploaded {file_path} as entity {file_obj.id}: {file_obj.name}" + ) + return { "success": True, "entity_id": file_obj.id, @@ -269,7 +287,7 @@ async def upload_file( _safe_stderr_restore(original_stderr, safe_original_stderr) except Exception as e: - logger = logging.getLogger('synapseclient') + logger = logging.getLogger("synapseclient") logger.error(f"Upload failed for {file_path}: {str(e)}") return {"success": False, "error": str(e)} @@ -291,9 +309,11 @@ async def enumerate_container( return {"success": False, "error": "Not logged in"} # Log enumeration start - logger = logging.getLogger('synapseclient') + logger = logging.getLogger("synapseclient") recursive_info = " (recursive)" if recursive else "" - logger.info(f"Starting enumeration of container {container_id}{recursive_info}") + logger.info( + f"Starting enumeration of container {container_id}{recursive_info}" + ) # Import here to avoid circular imports from synapseclient.models import Folder, Project @@ -314,12 +334,14 @@ async def enumerate_container( items = self._convert_to_bulk_items(container, recursive) # Log successful enumeration - logger.info(f"Successfully enumerated {len(items)} items from container {container_id}") + logger.info( + f"Successfully enumerated {len(items)} items from container {container_id}" + ) return {"success": True, "items": items} except Exception as e: - logger = logging.getLogger('synapseclient') + logger = logging.getLogger("synapseclient") logger.error(f"Enumeration failed for container {container_id}: {str(e)}") return {"success": False, "error": str(e)} @@ -524,10 +546,10 @@ async def bulk_upload( if preserve_structure and item.path: # Find the appropriate parent folder for this file item_dir = os.path.dirname(item.path) - + # Normalize path separators to match folder_mapping keys - normalized_item_dir = item_dir.replace('\\', '/') - + normalized_item_dir = item_dir.replace("\\", "/") + # First check for exact match if normalized_item_dir in folder_mapping: target_parent = folder_mapping[normalized_item_dir] @@ -603,9 +625,11 @@ async def _create_folder_structure( # Check if this folder is not a subfolder of another folder in the list is_root = True for other_item in items: - if (other_item.item_type == "Folder" and - other_item.path != item.path and - self._is_subpath(item.path, other_item.path)): + if ( + other_item.item_type == "Folder" + and other_item.path != item.path + and self._is_subpath(item.path, other_item.path) + ): is_root = False break if is_root: @@ -613,11 +637,11 @@ async def _create_folder_structure( # Get all unique directory paths that need to be created dir_paths = set() - + # First, add the explicitly selected folders for root_folder in root_folders: dir_paths.add(root_folder.path) - + # Then, add subdirectories within selected folders only for item in items: if item.path and item.item_type == "File": @@ -629,11 +653,11 @@ async def _create_folder_structure( # Add all directories between root folder and file's directory current_path = Path(dir_path) root_path = Path(root_folder.path) - + # Build list of directories from root folder to file's directory relative_parts = current_path.relative_to(root_path).parts temp_path = root_path - + for part in relative_parts: temp_path = temp_path / part dir_paths.add(str(temp_path)) @@ -658,14 +682,16 @@ async def _create_folder_structure( # Determine parent folder ID parent_folder_id = base_parent_id - + # For root folders, parent is the base parent - is_root_folder = any(root_folder.path == dir_path for root_folder in root_folders) - + is_root_folder = any( + root_folder.path == dir_path for root_folder in root_folders + ) + if not is_root_folder: # Find the parent directory that should already be created parent_path = str(path_obj.parent) - normalized_parent_path = parent_path.replace('\\', '/') + normalized_parent_path = parent_path.replace("\\", "/") if normalized_parent_path in folder_mapping: parent_folder_id = folder_mapping[normalized_parent_path] else: @@ -680,9 +706,11 @@ async def _create_folder_structure( folder = Folder(name=folder_name, parent_id=parent_folder_id) folder = folder.store(synapse_client=self.client) # Normalize path separators for consistent lookup - normalized_dir_path = dir_path.replace('\\', '/') + normalized_dir_path = dir_path.replace("\\", "/") folder_mapping[normalized_dir_path] = folder.id - detail_callback(f"Created folder: {folder_name} ({folder.id}) from path {dir_path}") + detail_callback( + f"Created folder: {folder_name} ({folder.id}) from path {dir_path}" + ) except Exception as e: detail_callback(f"Error creating folder {folder_name}: {str(e)}") diff --git a/synapsegui/synapse_gui.py b/synapsegui/synapse_gui.py index fff799bec..7e5e18590 100644 --- a/synapsegui/synapse_gui.py +++ b/synapsegui/synapse_gui.py @@ -131,7 +131,7 @@ def _on_progress_update(self, message: str, progress: int) -> None: def cleanup(self) -> None: """Clean up resources when closing the application""" - if hasattr(self, 'logging_integration'): + if hasattr(self, "logging_integration"): self.logging_integration.cleanup_logging_integration() diff --git a/synapsegui/utils/logging_integration.py b/synapsegui/utils/logging_integration.py index 8f80f9442..0ffa5074d 100644 --- a/synapsegui/utils/logging_integration.py +++ b/synapsegui/utils/logging_integration.py @@ -50,17 +50,17 @@ def setup_logging_integration(self, root: tk.Tk) -> None: self.gui_handler.set_root(root) # Set formatter to match GUI expectations - formatter = logging.Formatter('%(name)s: %(message)s') + formatter = logging.Formatter("%(name)s: %(message)s") self.gui_handler.setFormatter(formatter) # Add the handler to the synapseclient loggers synapse_loggers = [ - 'synapseclient_default', - 'synapseclient_debug', - 'synapseclient', - 'synapseclient.client', - 'synapseclient.core', - 'synapseclient.models' + "synapseclient_default", + "synapseclient_debug", + "synapseclient", + "synapseclient.client", + "synapseclient.core", + "synapseclient.models", ] for logger_name in synapse_loggers: @@ -74,12 +74,12 @@ def cleanup_logging_integration(self) -> None: """Clean up logging integration""" if self.gui_handler: synapse_loggers = [ - 'synapseclient_default', - 'synapseclient_debug', - 'synapseclient', - 'synapseclient.client', - 'synapseclient.core', - 'synapseclient.models' + "synapseclient_default", + "synapseclient_debug", + "synapseclient", + "synapseclient.client", + "synapseclient.core", + "synapseclient.models", ] for logger_name in synapse_loggers: From f22936d49575f8818caeafe88dd992a29c9c3c8a Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Wed, 13 Aug 2025 14:31:20 -0400 Subject: [PATCH 16/46] Change ico to icns for apple --- build.sh | 2 +- docs/assets/favicon.icns | Bin 0 -> 997902 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 docs/assets/favicon.icns diff --git a/build.sh b/build.sh index 2f74e1f2c..8551e4ae8 100755 --- a/build.sh +++ b/build.sh @@ -34,7 +34,7 @@ build_for_platform() { pyinstaller \ --onefile \ --name "$output_name" \ - --icon="docs/assets/favicon.ico" \ + --icon="docs/assets/favicon.icns" \ --collect-all=synapseclient \ --hidden-import=io \ --paths "synapsegui" \ diff --git a/docs/assets/favicon.icns b/docs/assets/favicon.icns new file mode 100644 index 0000000000000000000000000000000000000000..40b8e1801ab02b906eb5a5f02d4ed3bcbd4af784 GIT binary patch literal 997902 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�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

W**ze<&a&a+?IVa$IOia9IoBzhnH5I9T$MxUP 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

^+!&9YWaqQl7t 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%0D`Pm`u1Q7*_ct<_^J+d5Onom~d&R9B z61Sc#?9^|*Y^j#Qw+wjkGDk}#jTOWyugv$c0os9C591D);bS8-iMPC@10@Nz3`CXH zuig07h1GA|#5jJs@y@J|6u20PR?=yUx2~He2*su{k_Em^I5wxf^fCO(I;Kp!eOXW8 zjN~JMk|Am6ejQ(vXU%%pIG1*N|8OK+eh?= z(ZD_8W0Dws4+O4}_~^a*d$+V!OyCyQe;nOGD?q+{(2tBu*y;ghTNf?btaH($<(q<6 zV-NUcHB@^=D%I2dWn776$y_3*!0?~MwB38o)7m~UIW1SA{FY1M`k;7S+l*VC%#7PT z3G%4tSnd>de#EcR!6nM@?Zs^!hx5g8f!u>Z)G)Fv2Q6`0YcsGAI~qF#3#{rI$Z5L? zDGH0ZK@D&E7y%KtT}T}7XXxm(;jXO)$%+RcDwnXI6yTyPi$I`YP(-ZhTf6K;c6avj zqeAins$$}TY{n;I4cHEOzE*QdiwGQ z>xz?9Zqx%CKVk{qow>;v0s_B99{`Oxv4N!6s+GP8Yr`!swJYpbr_s)z z#Ug`ONVX7xom$7z@AY4i*{R1L`bU_$;Y>D2x|snb4i)2?lsbmIfRjY(SGxEV6~SJE z7^47DDjVX+Zz#Uz_qEOckEyQ?iz@K8Ju|d)NJw|LQUU|gN+T%((k0y>Gjt2mNVk+A zC>=w$q=d9|cMdRbe)qk5@7v!uf6pIhpMCaPd+)V?oc_Ju7$}BI6a@u5gwX#NN*o$# z_5Yps%nCjzUaK4DN`g!tX>KA`*1Dlor=6e7kO)!9P^?X223%k43B^8!`yAxnOAbD-y&pJnY3Re-s>f^)dz8)7U^X1@pG ztTX+nQH2cthGt73@+z*6_=E>zoC%vK2s}B7#t?@@O;v5T3cnHC$CBVUrM zEnK0qMek3NfW=Z%#TS%QTaD!4DK^FwsFJl9cIXu2 z9r2ZsRV32ziET>;^3R|)7fZpgnT$i0!`w7~6NpNg`R^^kT26yr%Qg8Y)&b%#bb`lA zNvMTNbENK>J{{!|xBKYMuErF_tl`(}SPS|BmQDAA4QphrC8r&M3^ko61|Maomt|iQd@ODF9KKsFMZ*8$Y7<)8Zp%= zr3lL7igdSFKRkh>Z+*>nj_`XMv0fuB?%3z*sP4$~ZtNqaWz>r15`xI*K?k^@I_acq zyo>hdgfPkEJQMmi+TDOveCdyZc>VJzuL1A5R!_DD;q^BQP`9;(2_X2Ya=;rSSP{IttE9?!>u0ha5T!W^*_pRalAFx_W@>GUu&<}I&O}QQk zTD>=3rnZl*T4v=+-;OrxJV)aoSrE`%mK>)u$`D~kwrQ*Sn?GMc>UC`Zi9LDoK|TP- zk$ukrOpkJi7nEj3NlLQkfA|nbv3b6v%@p!>_cF~d75fF_5pw#ez_)rfo!5QFIz=lj zPk`IWpL>LIuScz6g4HXpH#)L!I>_1W z<{9SpI}f>cQnKw6PeFf9MZ1+?NXWFYQgQ^6L5mT5boxM``SmF|nw=%c?&bOf(~Ym> zg3g~Zx4hTuPIGRAtM@MY@QC@nT z=<}kfGPoG`8vS^KO%xZ-g^M}4`B(-{-}BcQ8e_PBo$<5g;9*on9LS-Bx|Uz6mAV?T zW7M)-P3U~GzfK!o>iNio__EQ)7?RNv;+jna^)&hSUZ#pD0rB=c*ZH8X8#;Z7^`#Uo zhYxA@9jo{tHy==52~cGVY|_9csW!xC5U711=R+olMyOS@IObBkgBP zGx2RkMg%Q$)k)+z=~sDn%1LNOym^wM^SXLw-M`G_$LgaN9=T(em2Jqu^fkW z1^YsgWe>0IdKZW3TUX{)*0;d4#bWR%!|K@*8;p8&W~=mvaa_X@;p#pjR6l3Ef9`!7 z+lnzsAYjiL-lfJ1ezL~rsP;$Ag(CZ}e;rr(Zlu20Ef}dD0(3;(90L=kraT!|rndU1Pk}(|ni&E>#QkZ&A z@9)#DC)XBhk1jzKqsr4?oJE*n_(yB(x7TYh3Y0A;;R!ySF+d-96YsZ-wK2iG>b~l& z0oi81al{8#-pKwh3P1)5K7eOY@_p+pkMUoS(swjt$n&TD3oB=P-mBU4OPwF|ef6GH zeX+TQo%&d=iwjC*hRi*$$K)or`bD!8n~!aK#3r}^Y8L!jH1YITGm9MlICQa_ErehF z1yU93GABQCW9mJ@2&Vy@%odCHE9=Yw7cA$N-S6uQ!nMV)16o5QWoHg7>op)Isz6a- zYJ3tI$>&238OsRZ5=Ii^nN>eTycnPr8GH!oK~sChtn>RAwb@gkOaCWNC^7l~G8Z`m z7XsV1CqEX(p{u_}ryRZhI?*>#%MHxQi2V4R{1On28y$c4#_mu#qq1|e{)5BEWc&-J zJC1YVjCe$$rQ4$Tor_}r;ky}vie?G$%@HdAe~X@l zmbv-q2J;59(fhbR7(@YWjm`8r{c7b;kou;;$yN+2g0{*jidd}0pRh9Q8Pbd+j6=zc zF!`AR@G?V{ZQj$~C!{PYgsJqMFhgM?Q&oC(vBG7%6fKG%hlTJ{N|sAE%GK2l5JOH=Ye;RFLf{54|Y|o*XBOF6OLE%^y=E z4Y<4kr;qW?bB{sQW1y_Vpkd@Yg081I5M*@j`&QtD&&x;nz`!SS{flEE@xqrc zpFL(2yJQKaenv6={CK9&2PsA-;#iBFqVIsfOSWh1oCyCZ<-$5{G>QDLEVDgDn348} zMZ#YmaQ#o8-=h_mT|wNhob57J`jXF&vvQ*k0~`fBjK+)^1muTBf^ z17QAMvg|n5;TGZbnJ*qss{1E@5z@X$QOS{X98dWgI(7g>N27TbBsBCFyL)H(nT~=? zO@@(sOD4IeUp^0V;%A`lBpV)R`qfS=hR@ov2GM;~~F$&ow zHN)7om+d$Z`ov)?GMTWO*z*1md1|B_2Kk zaiRg*oRdpP3fZc#fSi-ozDl((cx~pe^r~A#sObh`g$YqQ>`V;hYgf`HY_TF@P(!|K zI@W$HYXDPH-GvF--UTp(@ZVC^t=rbq9Lm1(oYFFqm(L;>jJMS&$NnA3l2wUb_(IVq zE&XZp7dDHhhVfW?ww3SJGf!=;9M0T&yZ?kg!xaQ8r;k4w^6J;ivUS+xFNaH5U!TIaBZAZ z-#|XsN{`%`%FgRLF>jT19eqmm6IroCVDV(ZfUywTy8xp-MapHE+?p$F+}1)B!P z-HH14^I*z}Cwv_~yBqK0~x9lhy3dZWjunO9f*%Anhc#g`YRkFDDw~M%D>n>i>!^9 zeyLV!yHhz%HCc#XlgWlt)Y2R7oqig7G!^P%>0*=9Yb#2nD;tsv6anK1go=OrxKQ;k z$h&<_l@*?#LG$sdccNC9s--$0cxPt>xE<|r8`rdle)tmP;#IE%_}rdhKwFH_VxAJL znC|j9{cD-0il6m2t|YH-Xy*Ja0bW5%8krAFY%aqA#)2{je^O$uJIZ`L>I~3ylcU3A zm{JfNZ9aHaWM~Yt_I&zmer`CP%@_OK&Ywv_ zxX%1X;ue}90o9(sec8_rcH9@73g)IQySlnW3T3wC&R2m72e8+)RnzF-%Og+Adk;e* zTJ{ZbZD@oEMHHUQP@!+WC@1F#zGc#1ol{kn`&1gtji^%CveZd5CdFMP0Xy|y(lw&dXo3QRGI^+y527wh@a=XE_=T1*b<-=tTQ9<&Ew9X%2*m* zOwUkL^$2|mm#PKcDhJ+pf6&64JGzS~f7YemUmfn}toWc{+~E9bhH^pS4yr|+>|{e# z6`oF@`3BU<+~>rjh~dd9pfCI4wwkTjlmRLDw>9)h=pv-?YgPhoeaaDk>CUtMn@$zW zFd;MHWsQM6#baqr#fPV_swMj3X=rF1lOGpgT6f1`H-)kH+-pH6jx+e?bheaulzwIm zf|i>+co|Xi0{AN(J2QfBw%FV&>qe#=tC0V{5HHhn^7K#9S~_oQ+n0rP|TUeN$|gaX-jI zIUmarNQ0HoTH={)H04szQ2%f^-ZQ$^Es_=Rc?W7K-;X#XMRq zq4i|9WYxqPEQTG^^y$|R>Dntz@HD)G#M998DojkN)4Z@*Up(|}=D%p3p&N(G)o%#I zujurlX76Mmv-F!{=BXV~Ek+)VQ!!Yx7VqD$vRI7D-e^toKNIL-O=(0jx-A+RbIPeJ zv58bnR3m*|uhfuoS2Yacs_$b354+etpe@3CR5h&+^g}#TrHVDtik2I9NMA6g#P0uG zbrjsRf1*mb-0gPe{qGOD&5DLk;63l-VS~TKjj&5B6sx9dxEskN-N7t*O9Lm-$d%p< z@xQ)!N(UySe}676`n*-j2$YxqpIDm>IjnO%tSs;P>rlh{fJ7yxw7kb7{VE70L6SVY z-NAYytsajY`a^?Cl$b}v)9wA9d_okofBJ<~@P*Obm4(+c3y;(QVf}@=wBMz%z46rB z$5C$l7KrkGXi`>t#zt}CfvKX8mglr7&WU+wgzhnfs1s@- z_04`1X+~~Z%$DSeCqiGjD2GdUOJR4s0udb=TZSgJasaRAa?O1s?&Hzv<&^ovl!wqG zXcb`GAukRg18v;+0A|W53}%xk_p?gSvZ!-YOB3~~nS%rbgax_P!aoRTG^KeCJ;T&U z;;T;gw6OLSqn>VqjDCVBS46E0Wc$>4&&ez6nBs?QEiJBG%T`=6)MZRMu5CNOQyo4C zrH$rKQM_5q`F=5>)FypvSv58F^6o%%_=YR>4Nwi!PwR;1KUyNC155*(co3JI(&F#Y z`f+KX9(ia1k#%iP)A(nMd1fW<4~>S8uNxbT=9W9v+74iUR`g4Dd&B`{hh;dKl=U+o zOsa$u{{auPCNFgo0WpO})~&Bt2^b{vwm4us@pwkq3s1Tu!It1(T)Gh&Pr_FErFH+^ zIPkB8e)~j4MjUF=BgL{wX0e>x`-A>-U`iRq8jNu*g@OCgtcQx@C%V=Mmp{Z|8^VR} zJpIt&m-Onf-x@0AWX~gei+IM3nYms&bdU2o^B_KsBri~c67u@bW${g^Id_7kUP-w8 zk#f2qO}<{VI)n%BjTu&9Ej8kwu2Ai)Sxp&X={y@EL_=H2*Llg~d*J3Yi)*-!Dtl>< zFV@mCk3cuoRk`fIm2;2dV=@0x<0gO4$5o5_t*)`r?wdGi340M(cy6p7 zVEbQj<5`gP9$`KDqVzNM8GS93K?3P>0-!RP^#sGD{T@n6PuNrSat={_ELJD1K1+)T z>G?U!NZ6M=)OzqMQzMos11n=fnX~!vgz1!>JDBk$w0S;~ujFlO%(uO&=c4Ut8 zr+4;M!d^du!b{Uq0NZ3z3uY_=g3krUl=F}ED;dnfO+7Y0o3x$}bE(Z%{f6`?8}UCP z%TWUhKoJ9|uLM#KC=#7`Oad*RVTxz{+*y7zU*`Ce@fC;|9iof?6dQA+!7y!3296{e zfch+*6;^`-f1Mwc@vN5B>RiS88PkL52+60NZ%yfff@xL_jLnZV>PDA*nfr=+g$pZc zw7V}mo$mbKmo6j~cSvBQUr8<<{`7IKir1&duFmOHPivNvno>fZE8Q`Z&q3ZhG#T&x z;a=U?uyoJ}#FT6?FKzdH1Gu=6#8jKKb)Chqs=G$Fl;*CJR)TnHyfN>$AJt4N+c(W| z4o0u<9i>jZ8cx#Y(3(GY;UqW_mpUADtf|ey3nl{;PK+1FURQ%+lN&D9<*f50%HxUs^@j{6%J^Hpy$%21vwNX$^gc%; z#Xo-Oe6+Dm;=FnQxn3Q%+Htgkw>#v?3LE8eGK~l>8R4T$6V)#Sn=L%i3=_5JHIv(G zlDpD+ig$`#=h{Su*=7l_FuUC=P9H&{_h0=!ThIw~;E84lAHYbUUb0t@d?)0`&YU{m zEI)y@KlRp#eJIvH`}8@L>(@L!*I(YT-E~xH2slYU{PbCRV0nu-GPs-7CE$t^MhDM5 zIhe_!@3?z~nyaZS`i(0?yT_vcI}?4BTm?_66Om)Ni;Q%@7^;@`-+;%QKB=ifdOI5& z{O)pA+K|$EB1AxVVDIe)=Ge6GhbN+?HEeDLhSthovuhF_DWv$@yw=G$A3Z3wsiu_1 zrJDW7X|;7!mAMCZ-+izT8;MA3ASaLZd3Gspn%qsKhupb}f7~|b{Z2b5Xjm1yk9(_hiPSfREP}{`zpHk`ewi(DFHm_%FQApClo6%lO5^44#8lB`En>;^^V)l5Qkgk=84kfOJXS&#e)#`^4 z@S}$WzAO1}&IyWkur9ZFM|**Mn2MVBZ}@qC^{(aN^dt0kv}jr8+G@R8+Sw&2H3)z4CMW8zjcbwS1Zrq>s9*9utj+DEdZYKql`f?7vBYr%!z6w*FN#H^;w zww^RH!Kqey`nUv^t)o`Wsz^iqWvS0hRUj3*c^q8P&p7InbRA%lfu=h`R6J~tK_Jfxtq)QaS=J@0=1Or&D_Ccf&^@=&34VRG zUhYy`yMOvnD91Zf9eHdG|M!k22h0z-tNHQ}Zc0-HjQ`(&F#||$Scgr$yWNF=jXllMEVYg{QkTp4r=7w z*}rF-Kh;kv(erws1bSV(k#GN#c5hm{2HQy2I?<$j&{wri{_HUdhBwa$xOjsUJ%J`DUe=@g1IiK-|IY8Bh?nE~U`bbxt$| z3BHI}RPqeqz!w_gEqZNf9h%BEF!HZrBu6cwsn#;JuGi~y34`IP0O%wTU{A?qA_z&Y%$-YlW2Zj^$-1Po@*x3bf#NI^#wBLiF{%7eO zO-LgwZMp7u`A>mo{}s!E#s~N7*gkJRA=mHtPxfYJv!oylCV_GR_n--lCP`@L?Z1S& z>+H`M`fY-0P68oW-&Kr$K(Y1NG3IdzDS#CdO=iKt%4k^1$0=I*o7n3RJHxuy1o$Jc(rd~)nSvnsq|nnURX-ewmz{f_nS67E>*Rz#Hy`=sj9Dp~BPp6MkZ zE+i{3^?Z1>>l>eNkhoHk9|xj|%9aRI%!;;?Mh{s7N_e94I_{Q!=|n+R1N3}I*sPv) zxLV}X^g*j}$$NQ5c>ODoR`V{pq@r6_ObZ;lxo=V~s_{fC&UDXWHUp@Kb0002V>+5d zi!9g&lv;UN$6;-3G4K>V7VHRe`9|Y^`%48s(IcCM{ycmWPydz|4y;qk8Q;W~o zGFbOlQ^h{i<~+9$a#6NCcB)Tg6WtkheCwP{6_GqwO(G~B!4@(7FRRY3Yp-?P4S&&~ z1GQPdci=M=GKeJ+cp2O1tphIwU^b>uwbeSsd+I>1IS2yd|Do!8cP&z6Py{?==W*rJ z)eGd|t@|SZApJlFxCCBFrEQabFWok-CO?>snp=<)rTj#>V|_8wC^DJlVLh~7^ml02 z+c-&4{;a7#U7BAS`TDUNNgo%$G}+2b$iUaa{*Xz~QH~)aRQ4AX-RP|Vr#c)bC^doj~QJXR$S&?H#c>xjAkWe@TaypRnAD5UKzC_g9s?NX_t-m zt`1W^Q{XO1J;-|>=j{Ed7`xa^gAca(`<<+Y!IV%L=y$V`@8W?@L)*5t{E1~%nJ_m% znxu?^-$Y&(1gE%GznHgqlbsV-0QslU_{mGDL7zLDZ`KHfVNCn?6&kkd+GH!FU*V>d zw9|cN-8Vk?d-UElpZc!!4(-8fkE4Y8N{S|R#iMCb$T z@6WCM&rp0wo5ujz8bOoiwY9HJ#obu%->lbronkmJ>`b(v1OVNtx&zIs;1x||Pn9Ss`v&QWQ?R!P>#a1%#h_a|qchzJ2Wrbt%yCF;UjlXrCW$d2T7oFk1Z37)2 zBz~Ck&S{X$4rAyi34brO>8W~W@LS@aD13K$1t%bOokAF8`m_z5zcr%+Ywi5yTo!qL zFZL5GBlll{2CNPy^;b?p7qMU~>ziwI@uuyoyUVenTRQDXX<$(vvMc5hl_V`#n)9AX z3bpFL8D!nZBWjo>IlO+qXy5TY{8BdsB|c44*F+X=Jk0=i3;z8hn`$9h_uC*6JH8rS z=Lfk<5m^cf0~cU|{|Qk|7_iK3axhbOTAdYgi4mOjBtDM0UgR=c&b|Y|T;xxDh#vQD ztJ8=yQHzIoctYt)+7!M(2p6c5#gsB~07UfhKekMh$L5&YlGZHucxN~pv01|D5o93P zLBTp?;7kCuz%vuVKa)M|mv*^)cxY3+Y(*NO_Q0S~b<3`mWWrzUN8s_>F?B*)*!OhUwta^`c7N4OO=DhJs&UE@zy zJ8`8jPf*EelgsOQeL+eK{W*U64~mVv)z50D4}+a||8lCt%wIUaW*1g6y0xc7&%DV| z3vkN57RQ}wy4$c58ryT{#IzJO(DPzHyD@A@7!}YI*U6FER<%#)s+aBc<~0W@*#+Tq zXftxslygaxWGm+ke~I!FHk(yH<%uB3`X90s9rM{{|gE4(A>y(Eh9?SIp+N~2^$~K7&`G9Dkb#HCHd~wRaR%?v#MG-fw|3ln#@Ef$C z3~EdZwp=c)LQpp_`Y3Z@hr6H@QYod~Yx4{uu?sPOz4Zwhx z?VyzQ`bYe(-zZ~Mx<9jkTy4%g=1}aArBLbS?Y4shWWeEJ zCug*~9PjpiFyw^d1;`#FpX^CrUJX7y=cMg)GhiQSP}zggXKFk6d$*z9Nj}7NKSW=w z#PED73|lXr3_j`lbf=sd`9xNS15G3mDi}f+icg~p$a`EF4w%xeZ|CDhu0jNHBVz&1 zRKq72)4+z{DgA&rcYHKV6BN1v@gCXl%r+;-61_AO@$q=Tnk{#)V*74&{8}eM?fufw z2X50#{uc|>KaB~W%p;Aqhkp?e%=%s3Q$3!erdta(-X5s)PH3zY3BCRq@*wBrMi8d7 z&{A1{`8cRLnAhXL7rs;g`W#wl&ggTa8BYfyG?5%{^JnkUBL;3romSclyEh{w3@SZp z0yMUVYj}C|+N}NCoV>X8DS8QtYa}@?`4q1qY8h3TR$i&S2dX2KwWM+$kN9X|Jo}0m z;l9zY@Oh(w9<#n24h&i+i3f%uZz_9GIT>1{EJtU8E{G|Pl=hVZlRl@S0)YZq@!Pim zdiHaaH=MHeQf_{>X)>-AOw^|A< z-spt_t0rt;LP_9En()3Amhi+u$unTlJe%SyS6F<2H*;cC*=irtVwO7Mr}YtO#Lum9 zDuh#KU`C@6%lF@;voSdO+wADlJ-esL`QXM_tjugmA1i7w zt$EDvOvO*#GMsE(ZqV>Zow~kFBU=Xz<3P!9%71o*KN0EzQ>n6fbgnCV3fkjLJX9Bs zQ&o+`ff?$ReuGOn|CbHPsdu0Fl~3%$UDyUYi6U^8p5$59-T_ z58N>?$OHlqJY^_fv%K(s3-st?Oqd~nuc+ zJj!Xsw>x>&>P95(zW&;in(vvSF(PaW#;#_?H>#=|C-j2~orfLodeQxa?Ef6^m+-m7 zS7+y@%?YHeMaCDL$G4cSp*p>|9Ay6(3~_zzaB)BD5?v*}<81SJYlitVK+}6J?I*uV zpnjCSvzsRByFa7f=zrIgLyyF00IkkMhy`Bq5)cGUS*&8th~7W6%@}cA!%+N4JbC#z@ zmN-v}!rr0gfeBWttC<03Y3;$M27mRY9qZS&yzW~*y_W+jp2}2Wv?ksXLuk0l>8ICQ z@7aFRV`T}$yFu3ANL*{ zo-*-Kp%~{{5BK|ah6A3@G3G_UlIuL}dEZ)2%{{hFHRchT-|Z-r7~%aD*|A0;tMmVc zC-+ZQk2Y0}I7qi^n6Z4&B%yvu)hHTf)qPR=KD@#7==@~$T@GCYzo&2D&}FR!M1^K1 zO0MG{3spt0iGn}_+)F|T|q%dltFyk5nl zFy@9B7rF#(DCRpS}?yaQALSGFQC0iQY?C|Ld*!pZ$OrJNGrS z=1nteh!Ax`eF@3;dyNUud*W}kNPl+Io#i(FE{oO22MVzL>I$(*?!~o)aY8bE*pocz zC1!yCH60vP(flswZBRdL?_=_pa6?P7EIvI6DdYY76RGU#nKP%Y9c#YKyXG;s%$vJ8 z3vid8%Vh{R8=FM>`%hOAYK%gl^q?#p%ev=cZX#1=^2U~O0wYy?5RnF5i3h#r$1nSN zalvSnQw#+=7BrgC%52t*wd@7s^7>?XLnk1G(vDb~*v|CWW?ib6ute`5*W2c?$B6b! zZYO7`Rplj2Ox>cE?e!;fX6#5o4B6!>Y3(m}{ElRxP}D_AZ(z>=NzpckP&pZye2r1M z!5Lt$Wu<8e8tA&)V8yGU=HUUXX%Ypm9n_n9>}+V7SrIDc9jXUuwEEk$D_Fo{-|gwO zq*$QBBF1lmEp)zZR7Tw!+hV}N|0}#{{&S#%2ABdjG?zW+I;#!v-BWK=Q#(do$9Zi{ zx-8im71(CkVIp`P<+~F#PbU5)+lq_OgI$VZmnZv+`jG_(g_PpGZae)Tk{GQN|h1bTAAv%?6CN zId3P2>89TF4fN_RzUS17wametqAruCf}hbl?4G;oy@)4o@O|}+;m%dS4}$9ZfcgD^ zUo&x5)l-`i*cWc^2avQ&eA&n}Z;hw5P{1d)A21<1BQ)!NXplfco+`a-D1@J2zaS$r z4a8xHCb?mDK@^64Ms;^5dUGIwj$P5zW4m@EhbFq`ErPZknKwmaf8RLdzT4)a$oyTW zCaRE3S!{qSG-5Z2uZ}0a>8Ki#j=42}uKDFAhVfeCXU< ze9S^|BiUcT(tPUH=0|Y?&#dlIJkw)!A&-{MUH3Fe!}o_uU)SANbnqk0#b)Dkd31YX zm_l03DZw<6#q06f2Fwh*f2UZoMMJ4Nwk#aqUIQn-RD*xV zPtN~80wmz_5AzWl5(1x!&rSV41v>R#z1hUgY5Ph_|0(pLjx%kW*x;85Ut>o{yj|Ly zC$U$`J{hbE2XL|i!@kg15(5K?-?N!LD%kwuzP-N}!e@v@R<46$YP?5qzUjjJg6Wr+ zCOdJvoL`JMGlTg0g3GVy_i=wAG{}Cz$-j#s>7EYvk`bL980pahz4o0$Mb5j_D@O;@f3c(cTpla$enfwrb`Ejt7G2-?L$%9gV5(!7&S@kC)n{P zl&B(f9m?O)(_bw;HQbWBqhUd8R=hq%=-Ftz@9|@1-mU7kHjPc#w5sl6nX49WrsEHWj7u`-;kfOQuN-a{$vW2?Q5pHe*4q zKgu!6S^Z?rV3Y`}6pF4b*NjeG>2B8U*HhdGJUmPDiKz_;x-iv6YfSAwKYK{4-`qUx z!-;ux;cqK8C5cSE^On=#ZoLPjUM<}kg{;H>{&r9SW1?w+DYB*wIh2%;^CiPBR zad%_{-*EFjJUFf8T-^s;A{X}Vpn37g(#*hs{ceWwl=~I@Go*dY{kkhFGQM7VmHGbu z0(n>3f&3SQQbP4Q&Vlitp4z-wYWJ5Q2N5_|U+CXIrAKOresVs|`HdoFtNnaM&;JP6 zF4_2gy))VS&x{}UTUBa)1r#UdB>YLZ!=;o0(BkKs%(+yEPRy%wWC z`MB?Qqwnaswv|H26^)Fm!eWl2pSAl*YR3Zz{S@mR>tMY8eMkce+X*86NYnw*>jP$1 zwPyv?u?7SUd#9_V;0Mdjz$ONl$TqwF zg@&N>b)2Ah0O&^ugFCua>Ojx$!T z8ZQ-YwE0lrb6VA@gF^6o9LRp9mt!#!H^UmOTtX%mH~GWFD0{*1n-9sKlE~MfXKvI~ z;dmbvC-Ebbk)B?nHmOYuJ+*fSC2c(WOV+7NY~OpQr)1N(Pp_S-iI52hgvZ$Fpc({) zu>u@u>F(-MoS;AF7?Bo#p}Y4G%o?@FTuI+=g@vZckMUy3RzTs~7`e;NjLAOFp zg#9(uF?Wh`3Ij=8h=fBBNv65gZJUt$Up)dDu6nk*5qWL$4$ll$TzITWAYnJTRaVi9 zZFjS;B#30ON)pg2Ao?SR90Pu98Q_k3?5Oj=h<{)JhEnmj?7=bdGr0TB9=O`ayu%4)ZD(q0|y)GnHUQ z-sgenaY*T6MgjvxmB;+sCuqH+8kksRr!Wg`Q3sJ+dp}W8o8!y;Uv*fqWBM(@T+AdP zWMtGbD#}W_v<&8*ipxKCg-p7BnZxX{7%&v}I}!p@*z7%YVt5%?uu}piy1{VcWN;=8 z%q`PQ3-p#-Cf28rF=k-0ZzYcRj6wnS^`PVQ%9(GV3A4|0WJaMs_jhHWOQujuiWYSE z*M7iZZ3?}5>QVp1X@}Ii8$;H|q*wQ84z#&^xTi>ZKi}5z+(+!zRz%bZ%K$PBJMrO0 zu!i;y%aQcVwWB@Js`=%T)&^Ni+7kb^r%Jk#n8aTbJ_T4myw0Ef?(9vnd9S{Y?=@+g zq{+^e67FFxpJ$E1u4B{8ZJbGrXZ5bhOx$zN;odH4N*dO9Z3JbK9#NkE__{J^*N zmXD{`M@FA+utO`vFnU!{j*8ge6}V~u`AaL}?HS~Vnw63$aq6`zXEM;cU46>DzH?T+ zo3Ah-glY8l?AX&rAJrbd5<%mC@L&5r+@CK-*C4~WlhTPTzzxBgqd`>iCwiK&bJ}ds zE2b;ode-=~C=?f!o4h)($YEXx&6~vo*rfru;e{2Q!$=uG^Jb@Y{X(4gv$)2>aNf1Qson z%V7RZ=Hbow&UN+n%w|T&@`>L+%C?F3R z0IswV;OM{wV_{GKFho+jk^e-K(QoHpjzE7VC(~$V>8wzl^JT(CK^V_&EhpL>Pr%4ZbM0G45Zkx-DtY;>Zr96b}PT_ zkJjnBSd*?nT*&pZZT+s53HtnHk$wS)dmcl<% ztH#!vz?gfqck%R7@Hf}|-}|{_s(50rV29%!U+$e>+=}*?_mkIjZf&&s74|d9u&VZg z0qo~WR6i68l}c0AIzCT(Vr{(I00SgJevdMp>UkA-U4I(EfX|)wQ{GVI zLy6C}i_a@*);tbM3{{D>w^M)dsa(~CRQ~kR;J$wD3CU^FAPh*)Y8-QJ9&^4s-JO-- z(MB>n;C?`UUTOC)U*OlcJgq1$*hjMFEWMmqvdPqfQVc=`&I(1Ble}NvJNKuF3Ig?}9VZz@A+5}S-Cuk%cT2!Sj_($*rmT$ljTGZbprnZ{BZ@5}6o{=SekO__ z)JC}DiiwFH>Na7udp&mQ9=kT=r zH^mAc=3B=oG_M*tsC_LZtB)=1TMwMP%J6ckwj!ct7OI_SlWMg3FAo)4=wu{H3!&hd zU?BRQ{@od}`5>A&L_n$5oIY|9=zO0%3&>E_^4Dc{Mj2kAds8pAc^CgqDald$tUu^G zemnS&zxid`E>!y6+DRdj(PL$8^Ay~0jOthrrl{M(4x=YGcsD3;L<)j0^i;7A5crTls#d_ob|jIBV9WK(yG7%^%) z>GVl;&Jsoqe5pJ0b8pnzj8S^v&VF4^`tMJF2rr(ycB7yFLH`OeQ{A2VYm0@`{#*I0 zWn{38Q1OV?7XlcSqF~Gbra=bh?xw-X&S9ou=&NMKU!7(ymLN<+Oew}ny0QaODov&x zGhPXm(56*EceI37p+HA$NPkhxaNJ!(PssxGQor6Eczv3rxo5w=^zH??sm~%uP%V_0 zMDsCP-r%;4Qc6D3n8fX^o@Q)pqV0k6QyP_`0l`!4R*!05FiVo)rR7S{^L2Ttm%}5U z3SvE|{!oAPLX-3Ek~Ez97{3((=ry_qc2QIWo!#3#;&6$8fNfY*e3W@8ed!G%-_v(3J|A?rXt^G$Hv6 z53M?&9NT8!C#JuxlTj!0A|=71;Ym#kE8o&fa?qYR8L6(-BTeZi$ESxPPe31%ScU#_ zz|+CN`0E;5HQbAW>ju{Xc5LCVgy@~}MC8%zOv3ryf3uckN*J*_Z0I5BSu<~Er&?Hp zsKIOi?D8zu-%g=8LmF_wl*h)E?mZQSZr$$UF5jsXr-p~W|L*~A_si&QlmP>$6FDJ# z8-83WyJG_K23jRw<~P|cN0iVDTQ0&mx8_o|*?jo44TPV3l6tyAgxuTL!1PJ@$l2_1 zSww^CRWv1hfEX|g1)L~Q7C7uzx}3l>fIkXZ=$U5#4N_Ages}!A#;yTT{hrPZ^p}V+ zS{gd94xP|1t#*)s(sZQnP4X8qD6o?=)G}bho&IZzI&F5kv^PKIx3 zRUq>VS3XEaT&X|JW1>yYO>0@LS(0%PKhPT2`%TW+Y`X+?Pn1JVhRvItQXR-j$NIz? z7EHepv6^!vElmYUKwKk5*Ln-{Zmnv2^f%kbavd@5!{(t_5c#`m%M9na(~hI42Bb9^ z+R(lPSh|0!UFn*hxVQGCfqe`h%klD3GEnO5CSY$CTsr?#A)JG!VlAv6P3#h@6^*`? zK8a&#>+)4%Ba8D{)f<4uMBK~EB4C9PPm8NX|MP`kS`e#J*K3fOCU_HPfa-NVSAO>{ zOsQdIhltigCG29BN%u!hC^%1kFDyvXR_AN)Vn zzB&=@gyuged7_8mn)BTC9tQ>JkO3mT%7V*1l2N(jb1W(O8s)1?=&1g$0qG$Sau`-oV{rwQvsQ6bCMIUW%JV{2 zK=NFOqsZO=7zzPh2#p|`wt1o~Hqnpwe~VJ`H^2NNctf>8KB$DL9nRS;Ski`z%?(h# z4@gg=gkiJr*qsP98cWyxwyB7ks%6ihXSvziP+e-W6B+$lmFDNUj~gHO$lL07YHkzC zLib9{FLJCOMe=$}&sToJpYOOB)aUZpq^RB$NER!B&3i5Wv z8gnJBTX|Gl+SRsk&wHm{NF#H0;#z`(>A`}DR}28^94rQ3t&TCGwZ9uu zspG~&Ke}LDK8@z24K*Y7*~Uyu;v7zv9ZpPC&>d8?(5{2!*?GN8%+edE41y1P@lQIHnt?h=r0r5glf0|{xQyAcEg z1eKIcQd&Stx>HhmY|rlJ|J?WQdA+^Zb?qBx9LMLZ#lg4KiTr|h=^%x4TeZ2qC&=X{ z`(B)%O$Q@+RvbElD{n#{=kN^A`#Tt(bX=_5=KRTlk{{p#*l4F?sa*Kj4OBu_L_ayW zs0jJ%FI!zPKb*&COxZd`^-XQ%<+PB(V{HCQrhh(MKb&s){Eg1z+bZ99jx)s=cPKo` z+$?qvItqP|m%2NXk7KF#E2w3Y@ioO?vjbdw~O$zTpp;q(NRP0%|Xh zc2_>8uvEgtaG?44aL=809sCdhRRVc~1)59@wH1Fe5FvATY|@ByJeER#tJtV69XWao z1fEAiB6M;~&EMZHdb39*%HFo%kM-t#ADA_S7c+-oyQB^G>Tn$&%yndbwDgPVNO`Ad z*UfJ{M|xZ0e)^*@;+%Un{i^)Yh?iyaO~%(59ZS;icC0UOycZ+gjGf zj$6E=6&Q{%dF;2HDax%P`Rpjy4-){Z3THXCyse|4dn}gcr7~tCec>?RG4;{q z;%~DivOK}mskN1-hsp1sAkX9owm0|55&IWvK)O2`A3jdhq-`R6sQCN(123*>cIR#F zK*dGtOR-E_V>&Iurt#;DJovy-J;O13!EYWQ@+4bcJ`ZEt-q$gRw~g@VjU`^uY`p^c z*7HpTae4pUj;YL;Y;yv6)J`+|8VRH|s{*kmc6Cp2iqWta8_hyviW-0*aJt$dEG^dG zCf(b9J%Y}MFh@f#o+m8wZ)Jl$-xT#d;N20pq!_TK`RF12P6o;x_cx1`5(`Lt=qE+% z8FapGEZjzPdhZts!Of3Lc;rf6Htf(rerj`p$o#9e1EYLj^StuBcmiVc#oWRYsnOa!bcYgP{+;Qa1 zl(OqX&5A3xA?c8#4*_~}n>MFrFRwGp|EqG-BPUo@a;8XqA*!b0Y4b}UWm?wFXQ~+F z6E{^oywOxpUw*4_IR1Qkek~8MYHbVxEa#b+I@v9!8iC-nD$vut&E>(4xVtcEAN#Gs ztMI#T-^VY#ZVxx|!>=HB-6*{~8$|5#az|9h)zRKYzQp}}m~Q9Xz?#5>o;5hZXf7oA zhJ)<>(LrMwY<9Nq_wup9b8dA?cz_Kwfhop^g#ub}XF=^N!t!Py+kB4hMnEv9mf zqf#{`-U}bO;rq3FVU_YSj+=MVNOZ9T74u(RHbz3#x?wL)*?MZJ%ppa&>YdaiVu`|T zaSt(z>B*t$MP%^-xgpM=CuCNI_3O`pGW5?8DvPZo3M;wgz&K(8C+rk#=^~8W_rp|d8r%zG`BcaiOSrH3gSA(@QO8ZZwZb(810UTl9DY4ScRn$K#HEfVc$ zjQQbrYOxXqtOr;dNx(FqR1$`u89Fxosi$U|6*Z@Gwno!WTuDr|)do4JS zl}+K7gom1IXV&YN@PiF>D_opXXv zBN6U+Eclj@s11>pL1>=6ji{W_tWqpq`^}lL1Wfwl@^K8*+dpdD2lGix5e8;>!a~Bz zOSAfbcFW-zicyd)ZIs50fDU60u!Ok-#0aI&XP63&Px@yuR_;>W07oS}!%&cj+FSu2fhZnbK$k@N&U|rt_mB;hu+^7 zn&JGZU+Ah=0_{6vvIVl^LLP>tpeGNHgcoS8=l8;V2yHhX=g6o`0(>%~BI)vM>4$LQ zT`qXZN0@A3zZVC^!+eZd;+}Sw?X;pKH;X2jock~qJEb1CpZNcu_=kvnECuE;JDz(M z55I%2F|WGWlE`;6ENm|oV*lijmhXA5M1#HbI~NDwzW`H($~9)L2dt%7cfQVrHr8jm zHeG!gFH7Lx?;e{%J{)|I0E8aIb&KkFyraxK#d5&4HNj6MeeweL#YQW<1_0t`JA%82 z2ww*E3bh(?+}9>NRN#-s_{9rEU%RAKjR>`AO>o5c5>s<@?G&vJKRu{B?)$?3I_u)% zHnXd@SrsW9`RiSjnlLk7D@MUG88NbVA?Wfiq_FOnU{&`c+gCpk_bFjtuCo|JN{90{ z>jvG|m1EapL`lYkI-G>Gd|t2#<3p3xBO*T1AmTLK5Aacxs)9}#-H{4FMp?i!ucyC)6u(lkYlS$@*}t%+FSrJPY*eWpO# zzCK&>jPFapo&A>g9r89mL#Q*27!F)97NWGdhz@;)6hNC5`Su19EBtzymmod(4dy`~ zoge+%UkF+vn80DI#LNFP#|6`PBhLC}crS6hF6K6Ki#FKC4;!Ua#4DPNg};UxeEO`F zQ8xU3GIOD=#0+0iVO+YI@b~`D2jFfYEo2KPz+f4AJe_Y7Yef*yTj9n*EOr4)t7*09 zt89Gd#PC`)S*JV~= zL}EB^1V`rzd-QU)-KTZ(&y*3}h8SY}yeF=`8Gc^+w|$)AsnP_zjD zy-udOQz8n}<|Buuo#}ZJ*VBGmtEo>*tD;HgAMVP7l)Qw*2^D- zIyX$*##PuwYSKvKVwY4DQdKA38D%1Sa4~`o!3}P+FwdLr4cBn^mT9=p#-HRBG<&)5 zPyL&EGjh_I%@Xfwr=E1{h=jR!d;%Md`=_eDucx5fR8 zc)+;r>Om~MlQ#{sd7R^I>D)X$eF{V0eko}Z7ydooTQL=Vjp#Fm(TS}RnXco)U#}h& zQoKgcH6j)i=P*wGVlb^9UoV6R{>6AEfo(T8RW~j_#%7i7--F{!e4qDfe~2G1eN&z- z$I^K33a2V4<#<_34I+R!vBWb`ZYvLW;Ev4L{lVDGqrZ1@86fz4ninX2LDsEkczNKX z*%$5btgr9g|B9OPeaSdw*nE1(Kp~5b|jds-S96l?nh_fF~#b&O2uPT1(sOYnesQc=CUxGQ zm={t-dVCA>)IiprK@L-WwJuq#4>f<_r?X50l}vOC^xw?d#R5Iu(perYetGtiR&Y=>Yi(Ed&);--R1OLb~ z-0t_Carm;kYzo~CCB%k(lp-j zFXdiz(Ff)(?i5R$p`Q14`Jm7yuy6z|T7gb1cdHI~qZKB$ZPdWwAC?!>B+rS=r^5Bp z&1W39_kCv;J#SO3=B?V&W6qfRg1)qUGg>{ha{#Fe43WP0oMg7hZT<W5!5N$j)ea#111Qj|(-EJ}_fdz!S35>y5a8N>uwF##GMLxRslL~<1WX}g(v&#UwZ96-<& z6ybRAnt$u>`-UimF<(Pu`#M|?o`a$9lO(-L9)3IgArJaaQl%SWLhzPx2Z3j;xH51G z{bFUYkY~XGbH@DD8^wmfv#9GFeUk4uxM-BB?8hsD8V*34(<&b4@@##Wkvc#e64u_7 z>@9a8iC6pWD|`m-~8}X#pfX@eZ>aCv#Mbl8) zMuVr~2?}Uo6UmT+KnWWxrPQ7eAMledZ+$tUo%M3WIQcL=4_KYw?WyNuttw&w!QbQl z6qewFF0?>)MPI(Se)(V69)ydQQrxKEw(KyDFMvF6h*13(`O`OHFx2joJ%NQvEut>N0t}1{kF))K&fadvbkFK^b|r*%(qFWxVUD7chqwMwv)@D5RH*ND{|WgJJuV~y z2%Oss{=#wSGQ-`S9XW8Vlm>vh@$u(Xur-#*e{1b8uH)W*K46wV&b`U|ScY?Rn~bWj zGcETCI^4BswQ<-u*O9u*FLHowwFUo)_l%ryr4h^eva}cE{sZz*?Af{vC3r3e;WqV* zR*ltt7%74DqPFt?NcU6wGe6TRd$JtVQM)>WVJ9$XJei3wuVSft00 zyhH}AxPNM}47u_$#=I`I+8<4k^-x7wg~Im9#AguVe`9GpKpV$#MqL3D+v`OG7XaxV zO5QXCb(C9#6T&R1l2h>>XpcxF1e6Kk%)lZK&=SZ(D*O2zp>K^L?w{4wLdyinusb?w+jmegZ`b6x2Wcd9xN85|=%9;Dvw9 z-26>;^wzQoaLyZPYCojsG9sdw)z1LLNLYEh8Ag?e^ao_x#lNPeBGl$bYR!wdT4&p! zDoKXVQDXNH_L~%sq0!bFacbj7L(x}V=3SP8*KKa<4HqXFv!oY|qnGbE^&M66yV+ce z;3>^)gGzslMfLh+g!Dj+K97{Y6kAe(=YF0H|L;`^t@g=nH6(K%K11ECQQQ+PJ1_7v z-%>opu1Z=$DPBHETrxHWiSTE}dyC-!DSM!^Mx0dkJ?@WxgT4M$@mpT5}9I{!5W*Fx*jkYJM+T;<6ac_lzEAdFsvwm55M)lQCzF9}Ek_ zluh&(h0Fms!J-)xesJ_w(rc#Tf>lho{~X2G_yma`(bR|b!~L+D`h1>%M`Wx?=ERk6 z)5WtJBh4($t_ZTU-_Cgz7~t~of&OsZWiK#N2z*sU2EIoN{O?ECO6m?b$hV(Ah6~qb*7j#c(w#E5H!UH ziOvu%N$Nw(iHN+S|F>aPybGyTZE$8!V-waQyb?d*Hy*rO4m6Q5JL@%e`lUiv;!5T% zTsX5k=UE3*;RF(2ISJwZ_*Cd2^aGmN4a9)5(tcu?VekfME-CZsMLE6B+^MF9&L@e7 zB6j+U0U(y8J^<~Lfw!13E>d=3phKL;3k?48Ms-!Cn7i1*#VGRHX?mq19!}n>M$bf= zt1>{n={cjwpkFex>?7(V)k=*Yx~@;V#P95vS~P#!40b2X`lx*E%WPfml9*3l4)zM| zQMA>jYC|*@K6#fzNnVKhfoezxi~B-UXl>u!raXfRx&iIPO|96#IEKl&emo|83SMZ( zYvBN_V9Kc}yD9aE|9j1rf*?qZlp~wa2H3^jtL%!&Y%FJXcRm_)+wxcd^HK5S+_PoYA}2YnVA>SC8qoyI;9aIhht$X%-Tgv4@&c z0v6OjK$+p*nUbgB7~NxrY0etDjOsN=B`zsyz|*1vW$n+gummZiE~sgOg`f_w@;eh+ zBCR{F9ZEuSte_8E>GLbmGBpY%l}u45j&{Y{b2zSQA&}D@ySBdr3!%4F>Jk1AYVqPa z_Ire2+X=*o)Jw_iYbVG=(8>`xT|;Oaipgp)Id6VA=oH2Z{M2_`eE-~^Rma#+wOZ%} zmxK{EDLaTt1qwdb{enqK0Z_~RIe)>^8o%*6x}!L(OfI{!=Sq$gSZtNbINk^yxx9={ zKe72MYFg|!2XNJIQg9w)*4bHER@H}B3E2W?z>uRR8N$pD&{okQkDy3a+-&jSB)pX4 z1NFCbi-W1 zZRv&*6YV^pTV~pr>*q^pi-uu4w6@sM7hD)(N@bQtoPKC9e}Kf|*>P;yrecJr%z$2Y z9O}};Dg<7sQ*U*Xp4?We-q~AAe7rGPTm`M=SlOrP6E&sFoe1kk3ey~rFK2N^#V`1%Cl-++b|7a z2SLgHnhtzPA}Re4ZrFrIE59!QsbMcg71%Y=-cXOQ0GinHB*PXe(7}A;=TA{ma!Enp zD@cj$SsCTrB{7@Z+I9DR`ktkHwP^eEYV!tCO(=8Lll~`JcqH#RB+^BBT}rS~H#yyF zWVa-}Xm=%-LW1PrpGMf^#}z_Mp1XZ&S8=#A8{B#6;2gZ1I@~3=^(`4;b86X;e%l<3 zdNea#upy1UX#QEFq<>LE?@^rE5p=1s(pa|TsN-x8a`_%P;(wp@q_)T4^MjP|^{KEc zaR%5^oK+opca2m?(pD(u>&BA4IwDV6e3FU{?IHI#nSoz2+$l zrxeD0=}XnEms$2xJbo5-6f_&Ko4~}nyqiBC^f(Jc^=c@kN4ROhnXBy^-&13Vy} zIPa|3xshsXA5s298VQL$zEdWGJ*aiM7WMEaHPs-}UY$jM^ChOEEbDoxh%7bwI?-|hCxZH@th~)BPM9R{*a*e z!Ha4pRJ*B7Kn^m)wdia8my5+&Bt7CS%xQKpoB<(uiXvH^7Cx;YB4YTj{oe6b7&$Mz z>Tyay4GKT1x+MAp6L~mlgL3({*=(B7n?s-5sWq5dr|Sc7595g!U0ZAmP~N zbf(q|570Y$;<<^!S#{t*9-N-e{Hb+wM^DqiLZ8r$xpUC)gUH6foXWI&{ZH?Z$DOLe z51=C747gEwf`QVvrnsnv&>Dz3?{RzCdOpI=6KOGd zr5-t)|E;lJC4~DkC=1@56c_|~Y`vq><=G)IkMuxYPQN9t<=r*rbm&s54>SSgdkD#8 zTRk`qrx+m>9lQb-0dMa=S*X)XJ!G;1x?*5|jcTbBFWv}}+k2%&Ws7A?RQE~M2FY-{ z_9eQo@P0j#zU0UyAixCUS7=Moro9bI{%O|2>sx}9yWG?CcpTI^h`q;kJ|2?@rT^dS zY@qDe`xBk<FP5AMr9 zqlQvOTZGUNrs0t9ir?;R-OJ5;*Y6i1j~)X-0NVea9g4}kTHA0$VLD>wHP=t}{~F%I zZvS!}KkevS7*|4~_AZ@aakbyhDeA|@g~Hz7N#cm7(`A1_!TN986j+rbtd#y*`y$xti|u0}%V+` zp7B`FEP2{+?-fpC&)$a#n+D&GuaAUhz^-r311=&9aggUH8z1^odLP&O?o0Igk?hX$ zKLf$f5K+S$$7oDm(7Ms;&6M!Xvm3Hw`nN1|nSo+J(0-DI&zC218zDYp7d2epSAa`b zMMS5i9wgZ`1k|BYG5hKOay|F0y0wj!t95-sP9wDEjN#<>oy7R7`_qdC4w6<$lCsjZ zY=wV8kBIow=Tz_mU%(T#-8Ea9XA3eG7J13AA`MA2eoa8bY~^&um>;p=Fj^mSNVU1S z6La6ojgpemXgTH3t9kT_-rx5b696>g9Ac0uBcDP^BIq&S3Zof7uY5nvF6ghVqSfB8 zcGO$+dS6q?93A#TCJ5V%1tVOCHja^9Q>TyygdYV!483q2WVjf6W$DZ*9xjcP;m!6f zxrYX~@a0?0vJiQM#9a3BuhwRVym=wxPLJ=WNvREH5{HZQCsWR4 zBbUU#-_4vP{7)4DLi`!*V{H+I$1 zl>ES}162N@zQNxD`fhTW$iGy`#jwfA#iZgf&t9o+MvGCkYy{n)zFg9eVrLE`A2EzEwnyJysyMvMYBt!$5(yRNy zRdkd!Q9OUP{hk`)KKd~WW5k|M2~(si`Vey3laICtF8)_Gu#pNh0Z4=v?{1FP(WbZ+ z)CY)^hZRh#iqWelJ?`3l$bmz1{eoq-PllX>Ts`_QAoWcV9SwH`-jnoKtmSW>s4yqy zqeTWRB(S>1?=-;Ef#IF;o3j&!WDpP(#L^~t(E8-~A0Ku$LA`L)_oS7PnceGxSc$nd zdz;kyIWny!b>A+#FMBlISe&{hScldA;bC^G>!PGIV6g#%Sc_*71p5`WhT<>C>eNNw zDg0eZtM`?)`T#bwbF1!&x!2nc{dll)LefL>Hs=5MJ@ny%!Do`j|KQ9xyRN}-n(ru7 zq&jat=z1y|=UZ%!*0+>VvnDCUo&7m)L~X_=8rHbf`eSt@A1gS_gGinnl-k+)&aPlW zi2DVl|I6B9bkBST{!{RSL%AodX>+e#c)y)JBXQTp{swBZ)$u=Wz-*~;cT}sT+!xMT-;)${1F1G-Jirr@Vn7zr6{HZ}# zs1=xA%RScNLe8|sDnBG2%oV&w%b(y|1+7g{h-+GX zTOC>Enn>fga5P)(DDf}{AC!*FEp|QRR5;y`Sj7pS|7ygTopAPhd}5UNuP~L$&y!lU zfA?>v(myK?v^qU&LjfFxBc<3X+(`^Tk_!HDSHP1LoasI9(BM(JBTNRcg#=$**jW(2 zg7rH?_2*K9Flj&N*(cJ*8}GM7wRr2CA?6d_$mVc}$yb@g@8FCN3{gapb4c}>3w{+U)C$fCrcdu88f;@DL=ucR zV_1HQ`0Rf3NE}30WmXip`8TmqY$CvNYH-m{S~qp2pYj!{Xwp%|i;8B_8-9EYyiYBg ztaoJwiUydLPoZ?=X;w@qm}Ziv~LYW!M)vB>!O^hInq0o4X2c9hvaMzu+ZD zE*mSE1vDU(M(Mwo(i41>4LiBcmn}Mmt-3$m*$*Dv3K3yyW7SMtk)d5q3!9)Y!CI#WnLe~KslauV?E@Uc_!s=N1DlUsGLoehD|0y9V_x6 z%~vrRPWD(eC|ju8VV=|#AlD{tFQZL=QZW9$h^rA@Z6`DSBrVMav|lOVKBV$Ku>kJi zJ3-8=-{0U|_n=N8mc;&{IBQ2wq{08(5y8H(<8oaZi|s0lC`QQ~@X8_RPSh4D*od>3 ziy@J`;bvV>NZJ#BB35NJ@WEv=G%|N4;e@hB6pf+=;r;a8olep{ z*N;hjmcAZB;v};Rum6epiOO*!oM+mevKsOoBR}68_7lJ*Kk!KY0Pef8=|uWG><_Ra z>FYWy(UwVEsm-iH<_?`{J?PUuA*5GMI3X6rOG`{kE%RlMxB8Iuwdehs4e)Ptg|t(e4^=N{}*!J$#gZV>|!C8~gOC5n%mhvG@)B`JajZy6;3VR?MWO zXRcF&EFB1%dZp4410qsBPXllg#{+)n$TSun(dT9$&DoV|12R%;pGln&d;eG}O+d>r zYr<)ykcV@KVsK(PuKYQVgQS=K~Z&$L5(JB#sQ-A9W^S6v@JJYso^=m=FL7LRw6GvORWj;;{#M! zfR3|Tzh+ctC+X%&26BS&a|OqJO(k8)w9W z<{xRc8s@21VH#-XFB4WZC;UP9*Q-#V*HPSHQm3+>Vn#;{T|NG9T_G3Pbf=P_q2@x8 zztdhqE_MwZTw#)wh2frLWr`K<1u$!i+UTcZmExO5lTpdR7ikCE2^0QlF zY!V(KvcJPHB(c3i5VDU@w5>~aQUX8rcnOt&WM5i;D(y-sp-97M`_lSCu_m-9)r z?oZPL#4F3o-%!esE9um-yOCBbW;mb>1WBWmO6D}Xg%r*9Hq#X!+$FA0(bDh6Taoa{ zUhvo^-9SwkPe@ouf=A!NSZWl!+0SQZzL0j)eJ4|ZL}mL_IdHi!`ddJFQXmh#?gPq zn)A6T+<#5ZB`9Z4G(7XaIP~Ipf3=L!B?}@gy6m}^$$q*N)P`^Ce7l0WN&@f93>4!H z?;t)46f;8x-h7ifdC-X1j>-u%E97PlQCrshe3baQh}>=CXL>>W(HosjY$vU_ibQfk zUv?!BDlE&N`g)^-f&3D(RcsiX43T=sti9PS%ZQ z9*mG3B=k*@2Fnhnp-(32pX@@t?Fixu&-yRgQ`dQ)$1FHdv~Ulg!5Xwj7#bUTb`$%& z@MCzy_@_0i0jl?(|Ife~gVN>Mftx6Gg+2{47D^d9+ZX_tG0@14up3TKh;L0#3NqGn zv90``MDEw&iR>uJ%3bzJ!1-i#8$SoEuIlnaAz%FN=+g8vUVu+&NLawdr73Iwt;beH z5@B(sRMd34`c=7$MK>Upd?GsSDM)#C^tkbO&%tW6N&vHFM(;8p79WS19SPdTX2RSmAOok~2Ej!7y#UlFP|%9uKY- z2ihL-RFi#TJa80}P&;Ia9MPg>Ti#N+jgttI zF!ewx}`(|b}IiHD8&F5%M5pdkMV z`~>^Nr|p~{7)N0;hGQHaW0-*Ie+f3YigD|Y{8+~;u$uaJwG5G8?5A6*0S2l zw+Z{J(XyQ6wTY<2E&1J>tzOFv$+e{n%eb=e{y1@EwS`){K_gCSO}^UUadIa*X9SH5 z#ZX=X=b4oSFPx*^6=D;=ihn}eOsyU2r=3~770E>Cvcp{vE{$W2kbxctE+5M+-rqOG zoNdcNuJwb@a)1*VK=|MuO*uK=IDQp+=>`8AHP91pwrDRWWw*lQn?>Gc?U$p|N{^lI zmaOjmR z7yG{mno!NgjZfVsB3C74$t#A_8J$r66Hz{JeZyeigkPWP=>j=NalP+usUx6l0IeRR zKYhZv_Ar?*`DH}OG$Aw`z`@>)R~B8qh$mgQIVu?V-m-=qB@$ zp18}%3II=Ny@ zT38un$l!S(dtX7adHdz}x9WZDz~J74U%>aI8Ug8?i5%r;UC^Jq1GZw6XEtwXY}2&A zXvtVlmF$Xza3ZW=7xhI zvf|V=)gmtR`S88n@i5Kj&wLYIs8ji(q)++e++OTr>WDHYNW=W4t)z$sta7f>v~0ox={uawm1dQQqS1wff@2)=TFTJ33W$nFyBWsfu; zd3PK&8m$r7!>4b|q#If}e=FFG+<@qATyN;;HN4(d`-4nQ4(_<6QtA%8&q zFAX@pS%0wxT5Bk7glH^Ur-k1vcLA%%5H$obYRAUsdSbn>{*xF&Md3|kZ{+qf_X-&0@>3Nv_u zXS$6o5x?xJg&2E!dEO|uh(AHSlVy&w{)<`O7X6nct!-zMZ}P~Vz7=NlKJBZ>~kvdPrDj4kZe ziFFy`$rR=0GRo5Ler0909IxzodB`%ar=axsv<{dF*xXHgZ_9efUQ$m$0oPz#^WXM= z8QpMXu1?tgK$OJbW1#Eya?jae665`@J4dn;n&U=K`U^=DuQxnD+%Q?Sh@rU!`D|Pt zcwDm*EYd1D0PpN48uvfhJNP>?rZ|wl`QqQdT-QuzJQ#}@d;yZgK4BX3TI~Gm9EAUm z;0fd3Txe}Jk+g>ZA~`uR@$M<)Ou1MNVF`QXV{^sQNqVx?x>wx7EWU!iyZR#lTalG1 z$A#JuynC*5e5XVcX4E|AjVW393fZ|$`29uHefL@4&h>YD_*hxsK8C66$FD3weSQS% zVwTR13S^RFth#o+&e!*~4pIoz_fcEri*q*)KY?WrtW&*GVtsH%6Z_yhXbov&8jb!y zUo^SA3Kpp*umSynp)RgWEx(_efP$ovJ3yHl3j#5_r;r`9VV%c(m}|ScyJyP=F5JsV zV7NKCc93p%IQd{Oa_S;&fo=)p`_x(Ap{uhw4)PdnR z#EAG>gXL(!gH!|Hp{|3GnhxN^@C+`?dYTcG(J}i(*B!z$T|>0 zh%sUX2l6uF(dwy2Yj&rXyOv5t$-=Gq!HZ9^xO$ey7;=x*K$i^xed#UNBj~&Bzg+x8 z*Y>~|QEe#)J}O$AIyco?LT*y5jYIm8ADyJ=?k^`r{ikx<2en^{nB-|2djRr3tOZph z5}ie~R4#2+?TBb?blQZ2&o2MEdxG0rJo@_h8t=nozFSk3$H1O$NA{zLdhYA{zohWL z9{VT{pRl%+{!l&;(y<}TA62XVLi@ixA6zKn#nrYo#sJA zlK_A7hSM0{64!{Y7DqZ=b2L^7L!uO2ETt9dWy`928!J$t$GtIjjwRlq*Q28R=+8f( zuJ9|StMTNvCvscMb2m2L?V5*1n1JeujZ1AoQqjj_>4T*tD-o8Ax5gEymmEkid3CRH zdG3SRF^Hv>)c0ZZaqF{K#ipgWMPCZmHvk@D$CFn-iy$2o^#y$`L+WQ&{;`F7SXSe7 zI#I0-jkZ7@2=x)^=dTb=n^qH~5Y-y+l9NtMq&$|J4t|p+XV`I{s0%Rw_ojP90;6Sl z@>)&5;xr#I!L7`$8aJEjr}V?wBRFH8m`IFZ0!xqGL!0 zT}A5~Tc9@;)qml+r@XVVKR*hJ)~!q=zqqMw@V=f<>xO`F5=f$87;t{=*`B!%?Zh*c z2f3f--;<_BeBSEVqW-|Gvk~`Nf3vlrCVe0h3S=z5^4R`E4GN6x2w!FYK5YlU#~fBl zto6-gOMHH@XljW#*SY;t%NBC;M}f>w>NWqm{bW%q+di6@PcpvZc%}F*z$id=QvJ-> z1bF5PD#Mj`C*NH9@g!A13XpndwJ)`oq-4qkVqEN9UUyGOxfkLCh#CgGK&$MlZ%7Qb zP?DJMYg18r(gd|Cr%0oD*Q;WYsYcz5h13xd!&AhShA~?iuC2U?DS2iM7^qi%?vJ#> zd*%zs`@t=X;7uuL?ulV=jb?^#ugcm>?OT>AjNWj|Nx_y-#Nr1sOQ50kLfSGE{<5VS z=kWGgOQEse?-#gKe8IQ&&c^EgLMn>yylR>eYEM+%1<|Olumdc)L%N6eA-y zO|hWR&*s7uk*g+Dz$j7K7CLE`0^Z4x_5l*?Up~9{FQSRC+l|(KW}KJ9SP@qMz_M~r zD-647$U+2hetnvimVV;p zqB=?{2IaAdWQ!LB@RZ5lRm}D4V4FsUetFB0MF?am1VZbG6XnG&Y0g-vY99W=P-!D) z2ff+OCWJl*lhzx8-Jj;W;$4^Oc{h(9kc?H=WY$CG!(>QP<#P$kZm+cBi@lf=4Cig> zVt9s3&VhKz5=spB#LYTT)u&|>LzEys2KwsZ&Th*{|7=Zj43Qwq(yACVKG-wfksNTH z`)cxo?N>XVJp`~10QHPH4|18w=bsEV8ak(WsKE%>E#pKm0=Fizy2_c=BvqO zIR=1A&tg^SE`u33f9Vh^+Nc3(SrMOgZr9#n0FxpaxX+*I&JX!zvC4BXbfBC$9Jig( z`oPJg!}2!NVz}OFAgChJ0g|*0QAa)+x_5i)^oxMfPgW=*o2J1Bzw;(JVEVM0Xg-D8 z=*Nu-iC9t>)Mx+gen(t@3J$C0V`I$*X&wcUiI2g7Y)PzPfHbHsKYFRnTN^A;VGnvIpDBqy_d>%0b@3QYmP z>d8!O2Y1N|3x*`t*w_#yz`B)$g6!M~@;+&Lzk085NJKX`2+ZZNKT~S|>glj^8KCke z(oHuzj;ZbBfEIO7jEesl#9S(PjQZhUc44#gKDO?;!c=Na(Bp|hZaQ*;}Br}dZW9h$}+XskZ~ z!n|dccdFpc4PK{Y%%7ycGjtb{xG$3ZL%rEUgf4g8gPw89*~yxFn+Z#qGsK3AUXl!b zeMSkYc3ciE(`=FBf587kj*1!5`zIA?0Zw27D({XBNWmGby-lHPq(*?fz5J%iuf;eK zWJ;x&^@p=($u@WmgufZth1;4}j{jaY)Zp|o$(?BIcYhBU^)cs_{p<#st7o2B$$0m7 zAVDp+A5YSC&PI?>c}MP0%|XcaTaI#GK^k{@K5rGrxjx7-eMDABLjfscdZt@DjjvQx zUEGSkyq9{To25akn8UBMv94dn*T%$1{I4PAP#xuzZjHQ-|7hL0O_v3rqvbm(Ewp{f zU+ym$LI3F_xj1{h@~$ScrD&I+l@d45&L?c__jbZ?zM|5}D0``FUdKud)J>JQsIL({xdc{AiGj;GX z@_KfVunVs1)%LS%_;&mkA=1LhyyAYHE7)h<1R4etU#6%;h2D}>q>LRg2RXLN4h=I_ z?u5#spMvjC=^klPZ~LzRWiE@ zYt?;k$#Jg&N^MFb(`cL=R3kS63q&Z~jtWLRt78pdF#v0x{&+;4CjVTJ8SgR6AT0X2 zaQYyneY{Dxmhc@=b}*i#6TXPCKdpjA^A?&%qs7OPIiq_R@lvsx;{zyNgGnU;BG zEGdTrXy5XHwY?7AmfKN8DEWW?3?-#ie&G6VybLj!-`W-EFv(4p2ouVS_Vl^j(C`7K zg)b~EuavmiJBFZTf4`AZd%t8{<#d8Gtp3jXp0#T0@@AN8d*7WW;w8_w0THLpkPqKI zZoXh*yzEjLljl&!`_A7_DuEs#wvVEThsi{OH_9;6KP125X9s1*ox;Fz7-YLh3`B|HDqp?WlvT zNF|pFlCJ`rFs+J(0-i2NusDY(PhUlB9p*xlUt`UactkO60`P^FgD2Obt~R=K&PI_) zA3aLpRd>8Ca5iFyJvT$z>4U2zUAI^BEfDGb5 z88FiJC@9_9aNL(+reLI3j_Xln!&E<|CX@+0L0V`66N?}Hk(n8?gN8p)MxVeHac+b_ zFL;Uc4CN_3TQM$;_0Y;??d})^xYT|*kyzcl&pauH^sSvL1`w}00KuO>{&szFefnPk z02_c0zk#_IcC3KnFFG*4JLCxDPUR^*Z`P8n!aZZjahEmveS1|^;A%;|>ZdiCLJ%FH zg%{aC1+o-8g79bP)%q*8Z9S)D?_cLEuLjxjSwT`0SHU(=yz3ZG*b^rNS&nf@r~ zT>NTC3J<)3nPD)-WeoZaF<%0D;?6{k&cLr@W&C>xN%?WOW9Qtj_m6qkyo>7g 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 z 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 GeahF^W?_8Y>@*4kVimFMzYeSex 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 z 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 z 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%0A~&D42Cl}&PkpN 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 +RHk&@hkWfAc^Wv_M&p#RO45qdO0p5E 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 ANdN!< literal 0 HcmV?d00001 From 0e364339f7f10ca8e934f2a15c39e4fbd9a9d0c7 Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Wed, 13 Aug 2025 15:30:07 -0400 Subject: [PATCH 17/46] Add missing tkinter imports for build process --- build.sh | 4 ++++ build_windows_native_gui.bat | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/build.sh b/build.sh index 8551e4ae8..db5103712 100755 --- a/build.sh +++ b/build.sh @@ -37,6 +37,10 @@ build_for_platform() { --icon="docs/assets/favicon.icns" \ --collect-all=synapseclient \ --hidden-import=io \ + --hidden-import=tkinter \ + --hidden-import=tkinter.ttk \ + --hidden-import=tkinter.filedialog \ + --hidden-import=tkinter.messagebox \ --paths "synapsegui" \ --paths "synapsegui/utils" \ --paths "synapsegui/components" \ diff --git a/build_windows_native_gui.bat b/build_windows_native_gui.bat index bbc47735b..0e82df39f 100644 --- a/build_windows_native_gui.bat +++ b/build_windows_native_gui.bat @@ -33,6 +33,10 @@ pyinstaller ^ --icon="docs/assets/favicon.ico" ^ --collect-all=synapseclient ^ --hidden-import=io ^ + --hidden-import=tkinter ^ + --hidden-import=tkinter.ttk ^ + --hidden-import=tkinter.filedialog ^ + --hidden-import=tkinter.messagebox ^ --paths "synapsegui" ^ --paths "synapsegui/utils" ^ --paths "synapsegui/components" ^ From 22e4b08792a92df9f2c6ae1f897075e0ce40557a Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Thu, 14 Aug 2025 13:38:23 -0400 Subject: [PATCH 18/46] Cleaning up and simplifying code --- .github/workflows/build.yml | 4 +- build.sh => build_gui.sh | 2 +- synapsegui/README.md | 323 +----------------- synapsegui/components/base_component.py | 44 ++- .../components/bulk_download_component.py | 87 +++-- .../components/bulk_upload_component.py | 114 +++---- synapsegui/components/download_component.py | 67 +++- synapsegui/components/login_component.py | 101 ++++-- synapsegui/components/output_component.py | 56 ++- synapsegui/components/upload_component.py | 72 ++-- synapsegui/controllers/app_controller.py | 143 ++++++-- synapsegui/models/config.py | 49 ++- synapsegui/models/synapse_client.py | 197 ++++++----- synapsegui/synapse_gui.py | 43 +-- synapsegui/utils/logging_integration.py | 69 ++-- synapsegui/utils/progress.py | 40 ++- synapsegui/utils/tooltips.py | 38 ++- 17 files changed, 747 insertions(+), 702 deletions(-) rename build.sh => build_gui.sh (98%) mode change 100755 => 100644 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1ef493829..74fce7b66 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -418,8 +418,8 @@ jobs: if: matrix.platform == 'macos' shell: bash run: | - chmod +x build.sh - ./build.sh macos $TAG_CLEAN + chmod +x build_gui.sh + ./build_gui.sh macos $TAG_CLEAN - name: Prepare artifact (Windows) if: matrix.platform == 'windows' diff --git a/build.sh b/build_gui.sh old mode 100755 new mode 100644 similarity index 98% rename from build.sh rename to build_gui.sh index db5103712..76c7a9c91 --- a/build.sh +++ b/build_gui.sh @@ -2,7 +2,7 @@ # Build script for Synapse Desktop Client # This script creates cross-platform binaries using PyInstaller -# Usage: ./build.sh [platform] [suffix] +# Usage: ./build_gui.sh [platform] [suffix] # Platforms: linux, macos, all # Suffix: optional suffix to add to the output filename diff --git a/synapsegui/README.md b/synapsegui/README.md index 7b2741550..bdef59335 100644 --- a/synapsegui/README.md +++ b/synapsegui/README.md @@ -2,17 +2,6 @@ Welcome to the Synapse GUI development guide. This document provides comprehensive information for developers who want to contribute to, maintain, or extend the Synapse desktop GUI application. -## Table of Contents - -- [Architecture Overview](#architecture-overview) -- [Development Setup](#development-setup) -- [Code Structure](#code-structure) -- [Adding New Features](#adding-new-features) -- [Testing Guidelines](#testing-guidelines) -- [UI/UX Guidelines](#uiux-guidelines) -- [Performance Considerations](#performance-considerations) -- [Debugging and Troubleshooting](#debugging-and-troubleshooting) -- [Contributing Guidelines](#contributing-guidelines) ## Architecture Overview @@ -38,101 +27,21 @@ The Synapse GUI follows a **Model-View-Controller (MVC)** architecture with comp ## Development Setup -### Prerequisites - -```bash -# Python 3.8+ required -python --version - -# Required packages -pip install synapseclient -pip install tkinter # Usually included with Python -pip install pytest # For testing -pip install black # For code formatting -pip install pylint # For linting -``` - -### Environment Setup - -```bash -# Clone the repository -git clone https://github.com/Sage-Bionetworks/synapsePythonClient.git -cd synapsePythonClient/synapsegui - -# Create virtual environment (recommended) -python -m venv venv -source venv/bin/activate # On Windows: venv\Scripts\activate - -# Install dependencies -pip install -r requirements.txt - -# Run the GUI -python gui_entrypoint.py -``` - -### Development Tools - -```bash -# Code formatting -black --line-length 88 synapsegui/ - -# Linting -pylint synapsegui/ - -# Type checking (if using type hints) -mypy synapsegui/ - -# Testing -pytest tests/ -``` +See the contributing guide at the root of the project for instructions to set up your local environment. ## Code Structure ``` +build_gui.sh # Shell script to build the GUI to run on mac machines +build_windows_native_gui.bat # Batch file to build an EXE to run on windows machines +gui_entrypoint.py # Entrypoint for running and building the GUI synapsegui/ -├── __init__.py # Package initialization -├── gui_entrypoint.py # Main application entry point -├── README.md # This file -├── REFACTORING_GUIDE.md # Architecture migration guide -│ +├── synapse_gui.py # Main application entry point ├── models/ # Business logic and data -│ ├── __init__.py -│ ├── synapse_client.py # Synapse API operations -│ ├── config.py # Configuration management -│ └── app_state.py # Application state models -│ ├── components/ # UI components (reusable) -│ ├── __init__.py -│ ├── login_component.py # Authentication UI -│ ├── download_component.py # File download UI -│ ├── upload_component.py # File upload UI -│ ├── output_component.py # Logging/output display -│ └── base_component.py # Base component class -│ ├── controllers/ # Application logic coordination -│ ├── __init__.py -│ ├── app_controller.py # Main application controller -│ ├── login_controller.py # Login logic -│ └── file_controller.py # File operation logic -│ ├── utils/ # Utilities and helpers -│ ├── __init__.py -│ ├── progress.py # Progress tracking -│ ├── tooltips.py # UI helpers -│ ├── validators.py # Input validation -│ └── threading_utils.py # Threading helpers -│ -├── tests/ # Test files -│ ├── __init__.py -│ ├── test_models/ -│ ├── test_components/ -│ ├── test_controllers/ -│ └── test_utils/ -│ -└── assets/ # Static resources - ├── icons/ - ├── images/ - └── styles/ + ``` ## Adding New Features @@ -222,96 +131,6 @@ class NewFeatureModel: pass ``` -## Testing Guidelines - -### Unit Testing - -```python -# tests/test_models/test_synapse_client.py -import pytest -from unittest.mock import Mock, patch -from synapsegui.models.synapse_client import SynapseClientManager - -class TestSynapseClientManager: - def setup_method(self): - self.client = SynapseClientManager() - - @pytest.mark.asyncio - async def test_login_manual_success(self): - """Test successful manual login""" - with patch('synapseclient.Synapse') as mock_synapse: - mock_instance = Mock() - mock_synapse.return_value = mock_instance - mock_instance.username = "test@example.com" - - result = await self.client.login_manual("test@example.com", "token") - - assert result["success"] is True - assert result["username"] == "test@example.com" -``` - -### Running Tests - -```bash -# Run all tests -pytest - -# Run specific test file -pytest tests/test_models/test_synapse_client.py - -# Run with coverage -pytest --cov=synapsegui - -# Run integration tests only -pytest tests/test_integration/ - -# Run with verbose output -pytest -v -``` - -## UI/UX Guidelines - -### Design Principles - -1. **Consistency**: Use consistent spacing, fonts, and colors -2. **Accessibility**: Support keyboard navigation and screen readers -3. **Responsiveness**: Handle window resizing gracefully -4. **Progressive Disclosure**: Show advanced options when needed -5. **Clear Feedback**: Provide immediate feedback for user actions - -### Component Standards - -```python -# Standard component structure -class StandardComponent: - def __init__(self, parent, controller, **kwargs): - self.parent = parent - self.controller = controller - self.frame = None - self.create_ui() - self.setup_bindings() - - def create_ui(self): - """Create UI elements with consistent styling""" - self.frame = ttk.LabelFrame(self.parent, text="Component Title", padding="10") - self.frame.grid(sticky="ew", padx=5, pady=5) - - # Use grid layout with proper weights - self.frame.columnconfigure(1, weight=1) - - def setup_bindings(self): - """Setup keyboard and event bindings""" - self.frame.bind("", self.handle_enter) - self.frame.bind("", self.handle_escape) - - def set_enabled(self, enabled: bool): - """Standard method for enabling/disabling component""" - state = "normal" if enabled else "disabled" - for child in self.frame.winfo_children(): - if hasattr(child, 'config'): - child.config(state=state) -``` - ## Performance Considerations ### Threading Best Practices @@ -337,61 +156,9 @@ def handle_long_operation_bad(self): self.update_ui(result) ``` -### Memory Management - -```python -# Proper cleanup in components -class Component: - def __init__(self, parent): - self.parent = parent - self.cleanup_callbacks = [] - - def add_cleanup_callback(self, callback): - """Register cleanup callback""" - self.cleanup_callbacks.append(callback) - - def destroy(self): - """Clean up resources""" - for callback in self.cleanup_callbacks: - try: - callback() - except Exception: - pass # Log error but continue cleanup - - if self.frame: - self.frame.destroy() -``` ## Debugging and Troubleshooting -### Logging Setup - -```python -# utils/logging_config.py -import logging -import sys - -def setup_logging(level=logging.INFO): - """Setup application logging""" - formatter = logging.Formatter( - '%(asctime)s - %(name)s - %(levelname)s - %(message)s' - ) - - # Console handler - console_handler = logging.StreamHandler(sys.stdout) - console_handler.setFormatter(formatter) - - # File handler - file_handler = logging.FileHandler('synapse_gui.log') - file_handler.setFormatter(formatter) - - # Root logger - root_logger = logging.getLogger() - root_logger.setLevel(level) - root_logger.addHandler(console_handler) - root_logger.addHandler(file_handler) -``` - ### Common Issues and Solutions #### 1. UI Freezing @@ -430,81 +197,3 @@ class GoodComponent: if self.timer: self.root.after_cancel(self.timer) ``` - -## Contributing Guidelines - -### Code Standards - -1. **PEP 8 Compliance**: Follow Python style guidelines -2. **Type Hints**: Use type hints for public APIs -3. **Docstrings**: Document all public classes and methods -4. **Error Handling**: Implement proper error handling and logging -5. **Testing**: Include tests for new functionality - -### Git Workflow - -```bash -# Create feature branch -git checkout -b feature/new-gui-component - -# Make changes and commit -git add . -git commit -m "Add new GUI component for feature X" - -# Push and create PR -git push origin feature/new-gui-component -``` - -### Code Review Checklist - -- [ ] Code follows style guidelines -- [ ] Tests are included and pass -- [ ] Documentation is updated -- [ ] Error handling is implemented -- [ ] Performance impact is considered -- [ ] UI/UX guidelines are followed -- [ ] Backwards compatibility is maintained - -### Pull Request Template - -```markdown -## Description -Brief description of changes - -## Type of Change -- [ ] Bug fix -- [ ] New feature -- [ ] Breaking change -- [ ] Documentation update - -## Testing -- [ ] Unit tests pass -- [ ] Integration tests pass -- [ ] Manual testing completed - -## Screenshots (if applicable) -Add screenshots of UI changes - -## Checklist -- [ ] Code follows style guidelines -- [ ] Self-review completed -- [ ] Tests added/updated -- [ ] Documentation updated -``` - -## Additional Resources - -- [Tkinter Documentation](https://docs.python.org/3/library/tkinter.html) -- [Synapse Python Client Docs](https://python-docs.synapse.org/) -- [Python Threading](https://docs.python.org/3/library/threading.html) -- [Pytest Documentation](https://docs.pytest.org/) -- [Python Type Hints](https://docs.python.org/3/library/typing.html) - ---- - -For questions or support, please: -1. Check existing [GitHub Issues](https://github.com/Sage-Bionetworks/synapsePythonClient/issues) -2. Create a new issue with detailed description -3. Contact the development team via Slack or email - -Happy coding! 🚀 diff --git a/synapsegui/components/base_component.py b/synapsegui/components/base_component.py index a2972c6f4..6016b0e59 100644 --- a/synapsegui/components/base_component.py +++ b/synapsegui/components/base_component.py @@ -7,24 +7,54 @@ class BaseComponent: - """Base class for UI components""" + """ + Base class for UI components. + + Provides common functionality for UI component management including + frame creation, enabling/disabling, and cleanup operations. + """ - def __init__(self, parent: tk.Widget, **kwargs): + def __init__(self, parent: tk.Widget, **kwargs) -> None: + """ + Initialize the base component. + + Args: + parent: Parent widget to contain this component + **kwargs: Additional keyword arguments + """ self.parent = parent self.frame: Optional[ttk.Frame] = None def create_ui(self) -> None: - """Create the UI elements - to be implemented by subclasses""" + """ + Create the UI elements for this component. + + Raises: + NotImplementedError: Must be implemented by subclasses + """ raise NotImplementedError("Subclasses must implement create_ui()") def get_frame(self) -> tk.Widget: - """Get the main frame for this component""" + """ + Get the main frame for this component. + + Returns: + The main frame widget + + Raises: + ValueError: If frame not initialized + """ if self.frame is None: raise ValueError("Frame not initialized - call create_ui() first") return self.frame def set_enabled(self, enabled: bool) -> None: - """Enable/disable component - default implementation""" + """ + Enable or disable the component and all its child widgets. + + Args: + enabled: True to enable, False to disable + """ state = "normal" if enabled else "disabled" if self.frame: for child in self.frame.winfo_children(): @@ -32,10 +62,10 @@ def set_enabled(self, enabled: bool) -> None: try: child.config(state=state) except tk.TclError: - pass # Some widgets don't support state changes + pass def destroy(self) -> None: - """Clean up component resources""" + """Clean up component resources and destroy the frame.""" if self.frame: self.frame.destroy() self.frame = None diff --git a/synapsegui/components/bulk_download_component.py b/synapsegui/components/bulk_download_component.py index 2bf1839c6..75f9d2793 100644 --- a/synapsegui/components/bulk_download_component.py +++ b/synapsegui/components/bulk_download_component.py @@ -40,7 +40,6 @@ def __init__( self.on_log_message = on_log_message self.on_progress_update = on_progress_update - # UI elements self.frame: Optional[ttk.Frame] = None self.container_id_var = tk.StringVar() self.download_path_var = tk.StringVar(value=str(Path.home() / "Downloads")) @@ -49,7 +48,6 @@ def __init__( self.progress_var = tk.StringVar() self.bulk_progress_bar: Optional[ttk.Progressbar] = None - # Data self.container_items: List[BulkItem] = [] self.selected_items: Dict[str, BulkItem] = {} @@ -57,7 +55,6 @@ def create_ui(self) -> ttk.Frame: """Create and return the bulk download UI.""" self.frame = ttk.Frame(self.parent) - # Container ID section container_frame = ttk.LabelFrame(self.frame, text="Container Information") container_frame.pack(fill="x", padx=10, pady=5) @@ -80,7 +77,6 @@ def create_ui(self) -> ttk.Frame: command=self._on_enumerate_clicked, ).grid(row=0, column=3, padx=5, pady=5) - # Progress section progress_frame = ttk.Frame(self.frame) progress_frame.pack(fill="x", padx=10, pady=5) @@ -89,17 +85,14 @@ def create_ui(self) -> ttk.Frame: side="left", padx=(5, 0) ) - # Progress bar for bulk operations self.bulk_progress_bar = ttk.Progressbar( progress_frame, mode="determinate", length=300 ) self.bulk_progress_bar.pack(side="right", padx=(10, 0)) - # Selection tree section tree_frame = ttk.LabelFrame(self.frame, text="Contents Selection") tree_frame.pack(fill="both", expand=True, padx=10, pady=5) - # Tree with scrollbars tree_container = ttk.Frame(tree_frame) tree_container.pack(fill="both", expand=True, padx=5, pady=5) @@ -110,7 +103,6 @@ def create_ui(self) -> ttk.Frame: selectmode="extended", ) - # Configure columns self.tree.heading("#0", text="Name") self.tree.heading("ID", text="Synapse ID") self.tree.heading("Type", text="Type") @@ -121,7 +113,6 @@ def create_ui(self) -> ttk.Frame: self.tree.column("Type", width=80) self.tree.column("Size", width=100) - # Scrollbars for tree v_scrollbar = ttk.Scrollbar( tree_container, orient="vertical", command=self.tree.yview ) @@ -139,7 +130,6 @@ def create_ui(self) -> ttk.Frame: tree_container.grid_rowconfigure(0, weight=1) tree_container.grid_columnconfigure(0, weight=1) - # Selection buttons selection_frame = ttk.Frame(tree_frame) selection_frame.pack(fill="x", padx=5, pady=5) @@ -158,7 +148,6 @@ def create_ui(self) -> ttk.Frame: command=self._select_folders_only, ).pack(side="left", padx=5) - # Download section download_frame = ttk.LabelFrame(self.frame, text="Download Options") download_frame.pack(fill="x", padx=10, pady=5) @@ -178,13 +167,12 @@ def create_ui(self) -> ttk.Frame: command=self._on_download_clicked, ).grid(row=1, column=1, pady=10) - # Bind tree selection self.tree.bind("<>", self._on_tree_selection_changed) return self.frame def _on_enumerate_clicked(self) -> None: - """Handle enumerate button click.""" + """Handle enumerate button click to start the enumeration process.""" container_id = self.container_id_var.get().strip() if not container_id: messagebox.showerror("Error", "Please enter a Project or Folder ID") @@ -194,19 +182,16 @@ def _on_enumerate_clicked(self) -> None: messagebox.showerror("Error", "ID must start with 'syn' or 'project'") return - # Clear previous results self._clear_tree() self.container_items.clear() self.selected_items.clear() - # Update status self.progress_var.set("Enumerating contents...") self.on_log_message( f"Starting enumeration of {container_id} (recursive={self.recursive_var.get()})", False, ) - # Delegate to controller using the same pattern as other operations self.on_enumerate(container_id, self.recursive_var.get()) def handle_enumeration_result( @@ -216,7 +201,7 @@ def handle_enumeration_result( Handle enumeration results from the controller. Args: - items: List of enumerated BulkItem objects, or empty list if error + items: List of enumerated BulkItem objects, or empty list if error occurred error: Error message if enumeration failed, None if successful """ if error: @@ -224,7 +209,6 @@ def handle_enumeration_result( self.on_log_message(f"Enumeration failed: {error}", True) return - # Store items and update UI self.container_items = items self._populate_tree() count = len(self.container_items) @@ -232,10 +216,9 @@ def handle_enumeration_result( self.on_log_message(f"Enumeration complete: {count} items found", False) def _populate_tree(self) -> None: - """Populate the tree view with enumerated items.""" + """Populate the tree view with enumerated items using hierarchical structure.""" self._clear_tree() - # Group items by parent to build tree structure parent_map = {} root_items = [] all_parent_ids = set() @@ -249,18 +232,12 @@ def _populate_tree(self) -> None: else: root_items.append(item) - # If we have no root items but have items with parent_ids, - # find items whose parent_id doesn't exist in our item list - # These are effectively the "root" items for our view if not root_items and self.container_items: item_ids = {item.synapse_id for item in self.container_items} for item in self.container_items: if item.parent_id and item.parent_id not in item_ids: - # This item's parent is not in our enumerated list, - # so treat it as a root item for display purposes root_items.append(item) - # Insert root items for item in root_items: self._insert_item_with_children(item, "", parent_map) @@ -278,10 +255,8 @@ def _insert_item_with_children( Returns: Tree item ID """ - # Format size size_str = self._format_size(item.size) if item.size else "" - # Insert item with ID, Type, and Size columns iid = self.tree.insert( parent_iid, "end", @@ -290,7 +265,6 @@ def _insert_item_with_children( tags=(item.synapse_id,), ) - # Insert children if any if item.synapse_id in parent_map: for child in parent_map[item.synapse_id]: self._insert_item_with_children(child, iid, parent_map) @@ -298,7 +272,15 @@ def _insert_item_with_children( return iid def _format_size(self, size: Any) -> str: - """Format file size for display.""" + """ + Format file size for human-readable display. + + Args: + size: File size in bytes + + Returns: + Formatted size string with appropriate units + """ if not isinstance(size, (int, float)): return "" @@ -309,25 +291,25 @@ def _format_size(self, size: Any) -> str: return f"{size:.1f} PB" def _clear_tree(self) -> None: - """Clear all items from the tree.""" + """Clear all items from the tree view.""" if self.tree: for item in self.tree.get_children(): self.tree.delete(item) def _select_all(self) -> None: - """Select all items in the tree.""" + """Select all items in the tree view.""" if self.tree: self.tree.selection_set(self.tree.get_children()) self._update_selected_items() def _select_none(self) -> None: - """Deselect all items in the tree.""" + """Deselect all items in the tree view.""" if self.tree: self.tree.selection_remove(self.tree.selection()) self._update_selected_items() def _select_files_only(self) -> None: - """Select only file items.""" + """Select only file items in the tree view.""" if self.tree: self.tree.selection_remove(self.tree.selection()) file_items = [] @@ -337,7 +319,7 @@ def _select_files_only(self) -> None: self._update_selected_items() def _select_folders_only(self) -> None: - """Select only folder items.""" + """Select only folder items in the tree view.""" if self.tree: self.tree.selection_remove(self.tree.selection()) folder_items = [] @@ -351,24 +333,34 @@ def _select_folders_only(self) -> None: def _collect_items_by_type( self, items: List[str], item_type: str, result: List[str] ) -> None: - """Recursively collect items of specific type.""" + """ + Recursively collect tree items of a specific type. + + Args: + items: List of tree item IDs to check + item_type: Type of items to collect ("File" or "Folder") + result: List to append matching items to + """ for item_id in items: item_values = self.tree.item(item_id, "values") - # Type is now at index 1 (ID, Type, Size) if item_values and len(item_values) > 1 and item_values[1] == item_type: result.append(item_id) - # Check children children = self.tree.get_children(item_id) if children: self._collect_items_by_type(children, item_type, result) def _on_tree_selection_changed(self, event: tk.Event) -> None: - """Handle tree selection change.""" + """ + Handle tree view selection changes. + + Args: + event: Tkinter event object + """ self._update_selected_items() def _update_selected_items(self) -> None: - """Update the selected items dictionary.""" + """Update the selected items dictionary based on current tree selection.""" self.selected_items.clear() if not self.tree: @@ -376,24 +368,22 @@ def _update_selected_items(self) -> None: selection = self.tree.selection() for item_id in selection: - # Get synapse ID from tags tags = self.tree.item(item_id, "tags") if tags: synapse_id = tags[0] - # Find the corresponding BulkItem for bulk_item in self.container_items: if bulk_item.synapse_id == synapse_id: self.selected_items[synapse_id] = bulk_item break def _browse_download_path(self) -> None: - """Browse for download directory.""" + """Open directory browser to select download location.""" path = filedialog.askdirectory(title="Select Download Directory") if path: self.download_path_var.set(path) def _on_download_clicked(self) -> None: - """Handle download button click.""" + """Handle download button click to initiate bulk download.""" if not self.selected_items: messagebox.showwarning("Warning", "Please select items to download") return @@ -403,14 +393,12 @@ def _on_download_clicked(self) -> None: messagebox.showerror("Error", "Please select a download directory") return - # Get list of selected items selected_list = list(self.selected_items.values()) self.on_log_message( f"Starting bulk download of {len(selected_list)} items", False ) - # Call the bulk download callback self.on_bulk_download(selected_list, download_path, self.recursive_var.get()) def update_progress(self, progress: int, message: str) -> None: @@ -425,17 +413,18 @@ def update_progress(self, progress: int, message: str) -> None: self.progress_var.set(message) def start_bulk_operation(self) -> None: - """Called when a bulk operation starts""" + """Initialize UI state for starting a bulk operation.""" self.progress_var.set("Starting bulk download...") if self.bulk_progress_bar: self.bulk_progress_bar["value"] = 0 def complete_bulk_operation(self, success: bool, message: str) -> None: - """Called when a bulk operation completes + """ + Update UI state when a bulk operation completes. Args: success: Whether the operation was successful - message: Completion message + message: Completion message to display """ if self.bulk_progress_bar: self.bulk_progress_bar["value"] = 100 if success else 0 diff --git a/synapsegui/components/bulk_upload_component.py b/synapsegui/components/bulk_upload_component.py index 885f909bf..b0f913d33 100644 --- a/synapsegui/components/bulk_upload_component.py +++ b/synapsegui/components/bulk_upload_component.py @@ -37,7 +37,6 @@ def __init__( self.on_log_message = on_log_message self.on_progress_update = on_progress_update - # UI elements self.frame: Optional[ttk.Frame] = None self.parent_id_var = tk.StringVar() self.preserve_structure_var = tk.BooleanVar(value=True) @@ -45,7 +44,6 @@ def __init__( self.status_var = tk.StringVar() self.bulk_progress_bar: Optional[ttk.Progressbar] = None - # Data self.upload_items: List[BulkItem] = [] self.selected_items: Dict[str, BulkItem] = {} @@ -53,7 +51,6 @@ def create_ui(self) -> ttk.Frame: """Create and return the bulk upload UI.""" self.frame = ttk.Frame(self.parent) - # Parent container section parent_frame = ttk.LabelFrame(self.frame, text="Upload Destination") parent_frame.pack(fill="x", padx=10, pady=5) @@ -70,7 +67,6 @@ def create_ui(self) -> ttk.Frame: variable=self.preserve_structure_var, ).grid(row=0, column=2, padx=10, pady=5) - # File selection section selection_frame = ttk.LabelFrame(self.frame, text="File Selection") selection_frame.pack(fill="x", padx=10, pady=5) @@ -93,7 +89,6 @@ def create_ui(self) -> ttk.Frame: side="left", padx=5 ) - # Status section status_frame = ttk.Frame(self.frame) status_frame.pack(fill="x", padx=10, pady=5) @@ -102,17 +97,14 @@ def create_ui(self) -> ttk.Frame: side="left", padx=(5, 0) ) - # Progress bar for bulk operations self.bulk_progress_bar = ttk.Progressbar( status_frame, mode="determinate", length=300 ) self.bulk_progress_bar.pack(side="right", padx=(10, 0)) - # File list tree section tree_frame = ttk.LabelFrame(self.frame, text="Files to Upload") tree_frame.pack(fill="both", expand=True, padx=10, pady=5) - # Tree with scrollbars tree_container = ttk.Frame(tree_frame) tree_container.pack(fill="both", expand=True, padx=5, pady=5) @@ -123,7 +115,6 @@ def create_ui(self) -> ttk.Frame: selectmode="extended", ) - # Configure columns self.tree.heading("#0", text="Name") self.tree.heading("Type", text="Type") self.tree.heading("Size", text="Size") @@ -134,7 +125,6 @@ def create_ui(self) -> ttk.Frame: self.tree.column("Size", width=100) self.tree.column("Local Path", width=400) - # Scrollbars for tree v_scrollbar = ttk.Scrollbar( tree_container, orient="vertical", command=self.tree.yview ) @@ -152,7 +142,6 @@ def create_ui(self) -> ttk.Frame: tree_container.grid_rowconfigure(0, weight=1) tree_container.grid_columnconfigure(0, weight=1) - # Upload section upload_frame = ttk.LabelFrame(self.frame, text="Upload Options") upload_frame.pack(fill="x", padx=10, pady=5) @@ -160,13 +149,12 @@ def create_ui(self) -> ttk.Frame: upload_frame, text="Start Bulk Upload", command=self._on_upload_clicked ).pack(pady=10) - # Bind tree selection self.tree.bind("<>", self._on_tree_selection_changed) return self.frame def _add_files(self) -> None: - """Add individual files to upload list.""" + """Open file dialog to add individual files to the upload list.""" files = filedialog.askopenfilenames( title="Select Files to Upload", filetypes=[("All Files", "*.*")] ) @@ -182,7 +170,7 @@ def _add_files(self) -> None: self.on_log_message(f"Added {added_count} files", False) def _add_folder(self) -> None: - """Add a folder and its contents to upload list.""" + """Open directory dialog to add a folder and its contents to the upload list.""" folder_path = filedialog.askdirectory(title="Select Folder to Upload") if folder_path: @@ -201,19 +189,16 @@ def _add_file_item(self, file_path: str) -> bool: Returns: True if file was added, False if already exists """ - # Check if already added for item in self.upload_items: if item.path == file_path: return False - # Get file info path_obj = Path(file_path) if not path_obj.exists(): return False stat = path_obj.stat() - # Create BulkItem item = BulkItem( synapse_id="", # Will be set after upload name=path_obj.name, @@ -228,13 +213,13 @@ def _add_file_item(self, file_path: str) -> bool: def _add_folder_recursive(self, folder_path: str) -> int: """ - Add a folder and all its contents recursively. + Add a folder and all its contents recursively to the upload list. Args: - folder_path: Path to the folder + folder_path: Path to the folder to add Returns: - Number of items added + Number of items added to the upload list """ added_count = 0 folder_obj = Path(folder_path) @@ -242,7 +227,6 @@ def _add_folder_recursive(self, folder_path: str) -> int: if not folder_obj.exists() or not folder_obj.is_dir(): return 0 - # Add the folder itself folder_item = BulkItem( synapse_id="", name=folder_obj.name, @@ -252,43 +236,36 @@ def _add_folder_recursive(self, folder_path: str) -> int: path=folder_path, ) - # Check if folder already added folder_exists = any(item.path == folder_path for item in self.upload_items) if not folder_exists: self.upload_items.append(folder_item) added_count += 1 - # Add all files (but not subdirectories as separate items) try: for item_path in folder_obj.rglob("*"): if item_path.is_file(): if self._add_file_item(str(item_path)): added_count += 1 - # Note: We deliberately do NOT add subdirectories as separate BulkItem objects - # The directory structure will be preserved through the file paths and - # recreated during upload when preserve_structure is enabled except PermissionError as e: self.on_log_message(f"Permission error accessing {folder_path}: {e}", True) return added_count def _remove_selected(self) -> None: - """Remove selected items from upload list.""" + """Remove selected items from the upload list.""" if not self.tree or not self.tree.selection(): return selected_paths = [] for item_id in self.tree.selection(): - # Skip visual directory nodes (they're not actual BulkItems) item_tags = self.tree.item(item_id, "tags") if "visual_directory" in item_tags: continue item_values = self.tree.item(item_id, "values") if len(item_values) >= 3: - selected_paths.append(item_values[2]) # Local Path column + selected_paths.append(item_values[2]) - # Remove items original_count = len(self.upload_items) self.upload_items = [ item for item in self.upload_items if item.path not in selected_paths @@ -301,7 +278,7 @@ def _remove_selected(self) -> None: self.on_log_message(f"Removed {removed_count} items", False) def _clear_all(self) -> None: - """Clear all items from upload list.""" + """Clear all items from the upload list.""" if self.upload_items: count = len(self.upload_items) self.upload_items.clear() @@ -311,24 +288,20 @@ def _clear_all(self) -> None: def _refresh_tree(self) -> None: """Refresh the tree view with current upload items.""" - # Clear tree if self.tree: for item in self.tree.get_children(): self.tree.delete(item) - # Group items by directory structure if preserving structure if self.preserve_structure_var.get(): self._populate_tree_structured() else: self._populate_tree_flat() def _populate_tree_structured(self) -> None: - """Populate tree with directory structure preserved.""" - # Find root folders (folders that were explicitly selected) + """Populate tree view with hierarchical directory structure preserved.""" root_folders = [] for item in self.upload_items: if item.item_type == "Folder": - # Check if this folder is not a subfolder of another folder in the list is_root = True for other_item in self.upload_items: if ( @@ -341,10 +314,8 @@ def _populate_tree_structured(self) -> None: if is_root: root_folders.append(item) - # Build tree structure for each root folder - tree_nodes = {} # Maps folder paths to tree node IDs + tree_nodes = {} - # Add root folders first - these appear at the top level for root_folder in root_folders: root_id = self.tree.insert( "", @@ -359,13 +330,11 @@ def _populate_tree_structured(self) -> None: ) tree_nodes[root_folder.path] = root_id - # Sort remaining items (files and any standalone files) by path depth remaining_items = [ item for item in self.upload_items if item not in root_folders ] for item in sorted(remaining_items, key=lambda x: len(Path(x.path).parts)): - # Find which root folder this item belongs to parent_id = "" best_parent_path = "" @@ -376,7 +345,6 @@ def _populate_tree_structured(self) -> None: break if parent_id and best_parent_path: - # Build intermediate directory structure within the selected folder only relative_parts = self._get_relative_path_parts( item.path, best_parent_path ) @@ -384,13 +352,11 @@ def _populate_tree_structured(self) -> None: current_parent_id = parent_id current_path = Path(best_parent_path) - # Build intermediate directories for display (exclude the last part which is the item itself) for part in relative_parts[:-1]: current_path = current_path / part current_path_str = str(current_path) if current_path_str not in tree_nodes: - # Create visual directory node (not a BulkItem) current_parent_id = self.tree.insert( current_parent_id, "end", @@ -402,7 +368,6 @@ def _populate_tree_structured(self) -> None: else: current_parent_id = tree_nodes[current_path_str] - # Add the actual item (file) self.tree.insert( current_parent_id, "end", @@ -411,7 +376,6 @@ def _populate_tree_structured(self) -> None: tags=(item.path,), ) else: - # Standalone file (no parent folder selected) - show at root level self.tree.insert( "", "end", @@ -421,7 +385,16 @@ def _populate_tree_structured(self) -> None: ) def _is_subpath(self, child_path: str, parent_path: str) -> bool: - """Check if child_path is a subpath of parent_path.""" + """ + Check if child_path is a subpath of parent_path. + + Args: + child_path: Path to check if it's a child + parent_path: Path to check if it's a parent + + Returns: + True if child_path is within parent_path + """ try: Path(child_path).relative_to(Path(parent_path)) return True @@ -429,7 +402,16 @@ def _is_subpath(self, child_path: str, parent_path: str) -> bool: return False def _get_relative_path_parts(self, child_path: str, parent_path: str) -> List[str]: - """Get the relative path parts from parent to child.""" + """ + Get the relative path parts from parent to child. + + Args: + child_path: Full path to the child + parent_path: Full path to the parent + + Returns: + List of path components from parent to child + """ try: relative_path = Path(child_path).relative_to(Path(parent_path)) return list(relative_path.parts) @@ -437,12 +419,20 @@ def _get_relative_path_parts(self, child_path: str, parent_path: str) -> List[st return [] def _get_path_for_node(self, node_id: str) -> str: - """Get the file path for a tree node.""" + """ + Get the file path for a tree node. + + Args: + node_id: Tree node identifier + + Returns: + File path associated with the node + """ values = self.tree.item(node_id, "values") return values[2] if len(values) >= 3 else "" def _populate_tree_flat(self) -> None: - """Populate tree with flat structure (no directories).""" + """Populate tree view with flat structure without directory hierarchy.""" for item in self.upload_items: size_str = item.get_display_size() self.tree.insert( @@ -454,7 +444,7 @@ def _populate_tree_flat(self) -> None: ) def _update_status(self) -> None: - """Update status display.""" + """Update the status display with current file and folder counts.""" file_count = sum(1 for item in self.upload_items if item.item_type == "File") folder_count = sum( 1 for item in self.upload_items if item.item_type == "Folder" @@ -467,7 +457,15 @@ def _update_status(self) -> None: self.status_var.set(status_text) def _format_size(self, size: int) -> str: - """Format file size for display.""" + """ + Format file size for human-readable display. + + Args: + size: File size in bytes + + Returns: + Formatted size string with appropriate units + """ size = float(size) for unit in ["B", "KB", "MB", "GB", "TB"]: if size < 1024.0: @@ -476,12 +474,16 @@ def _format_size(self, size: int) -> str: return f"{size:.1f} PB" def _on_tree_selection_changed(self, event: tk.Event) -> None: - """Handle tree selection change.""" - # Update selected items for potential removal + """ + Handle tree view selection changes. + + Args: + event: Tkinter event object + """ pass def _on_upload_clicked(self) -> None: - """Handle upload button click.""" + """Handle upload button click to initiate bulk upload.""" if not self.upload_items: messagebox.showwarning("Warning", "Please add files or folders to upload") return @@ -495,7 +497,6 @@ def _on_upload_clicked(self) -> None: messagebox.showerror("Error", "Parent ID must start with 'syn'") return - # Confirm upload file_count = sum(1 for item in self.upload_items if item.item_type == "File") folder_count = sum( 1 for item in self.upload_items if item.item_type == "Folder" @@ -511,7 +512,6 @@ def _on_upload_clicked(self) -> None: f"Starting bulk upload of {len(self.upload_items)} items", False ) - # Call the bulk upload callback self.on_bulk_upload( self.upload_items.copy(), parent_id, self.preserve_structure_var.get() ) diff --git a/synapsegui/components/download_component.py b/synapsegui/components/download_component.py index a7ca1abfe..da594cff0 100644 --- a/synapsegui/components/download_component.py +++ b/synapsegui/components/download_component.py @@ -8,21 +8,31 @@ class DownloadComponent: - """Download file UI component""" + """ + Download file UI component. + + Provides functionality for downloading individual files from Synapse, + including optional version specification and custom download location. + """ def __init__( self, parent: tk.Widget, on_download_callback: Callable[[str, str, str], None] - ): + ) -> None: + """ + Initialize the download component. + + Args: + parent: Parent widget to contain this component + on_download_callback: Callback function for download operations + """ self.parent = parent self.on_download = on_download_callback - # State variables self.download_id_var = tk.StringVar() self.download_version_var = tk.StringVar() self.download_location_var = tk.StringVar(value=str(Path.home() / "Downloads")) self.download_progress_var = tk.StringVar(value="") - # UI references self.download_button: Optional[ttk.Button] = None self.download_progress_bar: Optional[ttk.Progressbar] = None self.frame: Optional[ttk.Frame] = None @@ -30,11 +40,10 @@ def __init__( self.create_ui() def create_ui(self) -> None: - """Create download UI components""" + """Create and configure the download UI components.""" self.frame = ttk.Frame(self.parent, padding="10") self.frame.columnconfigure(1, weight=1) - # Synapse ID ttk.Label(self.frame, text="Synapse ID:").grid( row=0, column=0, sticky=tk.W, pady=(0, 5) ) @@ -45,7 +54,6 @@ def create_ui(self) -> None: row=0, column=1, sticky=(tk.W, tk.E), pady=(0, 5), padx=(10, 0) ) - # Version (optional) ttk.Label(self.frame, text="Version (optional):").grid( row=1, column=0, sticky=tk.W, pady=(0, 5) ) @@ -56,7 +64,6 @@ def create_ui(self) -> None: row=1, column=1, sticky=(tk.W, tk.E), pady=(0, 5), padx=(10, 0) ) - # Download location ttk.Label(self.frame, text="Download Location:").grid( row=2, column=0, sticky=tk.W, pady=(0, 5) ) @@ -77,7 +84,6 @@ def create_ui(self) -> None: ) browse_button.grid(row=0, column=1) - # Download button self.download_button = ttk.Button( self.frame, text="Download File", @@ -86,7 +92,6 @@ def create_ui(self) -> None: ) self.download_button.grid(row=3, column=0, columnspan=2, pady=(20, 0)) - # Progress bar for downloads download_progress_label = ttk.Label( self.frame, textvariable=self.download_progress_var, @@ -101,13 +106,13 @@ def create_ui(self) -> None: ) def browse_download_location(self) -> None: - """Browse for download directory""" + """Open directory browser to select download location.""" directory = filedialog.askdirectory(initialdir=self.download_location_var.get()) if directory: self.download_location_var.set(directory) def _handle_download(self) -> None: - """Handle download button click""" + """Handle download button click and validate input parameters.""" synapse_id = self.download_id_var.get().strip() version = self.download_version_var.get().strip() download_path = self.download_location_var.get().strip() @@ -119,37 +124,63 @@ def _handle_download(self) -> None: self.on_download(synapse_id, version, download_path) def set_enabled(self, enabled: bool) -> None: - """Enable/disable download functionality""" + """ + Enable or disable download functionality. + + Args: + enabled: True to enable download operations, False to disable + """ state = "normal" if enabled else "disabled" if self.download_button: self.download_button.config(state=state) def start_operation(self) -> None: - """Called when download operation starts""" + """Initialize UI state when download operation begins.""" self.download_progress_var.set("Preparing download...") if self.download_progress_bar: self.download_progress_bar["value"] = 0 def update_progress(self, progress: int, message: str) -> None: - """Update progress bar and message""" + """ + Update progress bar and status message. + + Args: + progress: Progress percentage (0-100) + message: Status message to display + """ if self.download_progress_bar: self.download_progress_bar["value"] = progress self.download_progress_var.set(message) def show_success(self, message: str) -> None: - """Show success state""" + """ + Display success state and message. + + Args: + message: Success message to display + """ self.download_progress_var.set("Download completed") if self.download_progress_bar: self.download_progress_bar["value"] = 100 messagebox.showinfo("Success", message) def show_error(self, error_message: str) -> None: - """Show error state""" + """ + Display error state and message. + + Args: + error_message: Error message to display + """ self.download_progress_var.set("Download failed") if self.download_progress_bar: self.download_progress_bar["value"] = 0 messagebox.showerror("Download Error", error_message) def get_frame(self) -> ttk.Frame: - """Get the main frame for this component""" + """ + Get the main frame for this component. + + Returns: + The main frame widget containing all download UI elements + """ return self.frame diff --git a/synapsegui/components/login_component.py b/synapsegui/components/login_component.py index ce8efc30e..597650716 100644 --- a/synapsegui/components/login_component.py +++ b/synapsegui/components/login_component.py @@ -10,7 +10,12 @@ class LoginComponent: - """Login section UI component""" + """ + Login section UI component. + + Provides functionality for user authentication through manual login + (username/token) or configuration file profiles. + """ def __init__( self, @@ -19,12 +24,20 @@ def __init__( on_login_callback: Callable, on_logout_callback: Callable, ) -> None: + """ + Initialize the login component. + + Args: + parent: Parent widget to contain this component + config_manager: Configuration manager for profile handling + on_login_callback: Callback function for login events + on_logout_callback: Callback function for logout events + """ self.parent = parent self.config_manager = config_manager self.on_login = on_login_callback self.on_logout = on_logout_callback - # State variables self.login_mode_var = tk.StringVar() self.profile_var = tk.StringVar() self.profile_info_var = tk.StringVar() @@ -33,7 +46,6 @@ def __init__( self.login_status_var = tk.StringVar(value="Not logged in") self.user_info_var = tk.StringVar() - # UI references self.login_button = None self.login_status_label = None self.profile_combo = None @@ -43,12 +55,11 @@ def __init__( self.create_ui() def create_ui(self) -> None: - """Create login UI components""" + """Create and configure the login UI components.""" login_frame = ttk.LabelFrame(self.parent, text="Login", padding="10") login_frame.grid(row=1, column=0, sticky=(tk.W, tk.E), pady=(0, 10)) login_frame.columnconfigure(1, weight=1) - # Determine default login mode available_profiles = self.config_manager.get_available_profiles() config_available = len(available_profiles) > 0 default_mode = "config" if config_available else "manual" @@ -60,12 +71,17 @@ def create_ui(self) -> None: self._create_login_button(login_frame) self._create_status_labels(login_frame) - # Initialize interface self.refresh_profiles() self.on_login_mode_change() def _create_mode_selection(self, parent: tk.Widget, config_available: bool) -> None: - """Create login mode radio buttons""" + """ + Create login mode radio buttons. + + Args: + parent: Parent widget to contain the mode selection + config_available: Whether configuration file profiles are available + """ mode_frame = ttk.Frame(parent) mode_frame.grid( row=0, column=0, columnspan=3, sticky=(tk.W, tk.E), pady=(0, 10) @@ -88,12 +104,16 @@ def _create_mode_selection(self, parent: tk.Widget, config_available: bool) -> N ) config_radio.grid(row=0, column=1, sticky=tk.W) - # Add tooltip if no config file available if not config_available: ToolTip(config_radio, "No Synapse config file found at ~/.synapseConfig") def _create_profile_section(self, parent: tk.Widget) -> None: - """Create profile selection UI""" + """ + Create profile selection UI elements. + + Args: + parent: Parent widget to contain the profile section + """ self.profile_frame = ttk.Frame(parent) self.profile_frame.grid( row=1, column=0, columnspan=3, sticky=(tk.W, tk.E), pady=(0, 10) @@ -113,7 +133,6 @@ def _create_profile_section(self, parent: tk.Widget) -> None: self.profile_combo.grid(row=0, column=1, sticky=(tk.W, tk.E), padx=(0, 10)) self.profile_combo.bind("<>", self.on_profile_selected) - # Profile info label profile_info_label = ttk.Label( self.profile_frame, textvariable=self.profile_info_var, @@ -123,14 +142,18 @@ def _create_profile_section(self, parent: tk.Widget) -> None: profile_info_label.grid(row=1, column=0, columnspan=3, sticky=tk.W, pady=(5, 0)) def _create_manual_section(self, parent: tk.Widget) -> None: - """Create manual login fields""" + """ + Create manual login input fields. + + Args: + parent: Parent widget to contain the manual section + """ self.manual_frame = ttk.Frame(parent) self.manual_frame.grid( row=2, column=0, columnspan=3, sticky=(tk.W, tk.E), pady=(0, 10) ) self.manual_frame.columnconfigure(1, weight=1) - # Username ttk.Label(self.manual_frame, text="Username/Email:").grid( row=0, column=0, sticky=tk.W, padx=(0, 5) ) @@ -139,7 +162,6 @@ def _create_manual_section(self, parent: tk.Widget) -> None: ) username_entry.grid(row=0, column=1, sticky=(tk.W, tk.E), padx=(0, 10)) - # Auth Token ttk.Label(self.manual_frame, text="Personal Access Token:").grid( row=1, column=0, sticky=tk.W, padx=(0, 5), pady=(5, 0) ) @@ -151,14 +173,24 @@ def _create_manual_section(self, parent: tk.Widget) -> None: ) def _create_login_button(self, parent: tk.Widget) -> None: - """Create login/logout button""" + """ + Create the login/logout button. + + Args: + parent: Parent widget to contain the button + """ self.login_button = ttk.Button( parent, text="Login", command=self._handle_login_logout ) self.login_button.grid(row=3, column=0, columnspan=3, pady=(10, 0)) def _create_status_labels(self, parent: tk.Widget) -> None: - """Create status and user info labels""" + """ + Create status and user information labels. + + Args: + parent: Parent widget to contain the labels + """ self.login_status_label = ttk.Label( parent, textvariable=self.login_status_var, foreground="red" ) @@ -173,18 +205,18 @@ def _create_status_labels(self, parent: tk.Widget) -> None: user_info_label.grid(row=5, column=0, columnspan=3, pady=(5, 0)) def on_login_mode_change(self) -> None: - """Handle login mode radio button changes""" + """Handle login mode radio button changes to show/hide appropriate sections.""" mode = self.login_mode_var.get() if mode == "manual": self.manual_frame.grid() self.profile_frame.grid_remove() - else: # config + else: self.manual_frame.grid_remove() self.profile_frame.grid() self.refresh_profiles() def refresh_profiles(self) -> None: - """Refresh the list of available profiles""" + """Refresh the list of available configuration profiles.""" try: profiles = self.config_manager.get_available_profiles() if profiles: @@ -201,8 +233,13 @@ def refresh_profiles(self) -> None: self.profile_var.set("") self.profile_info_var.set(f"Error reading config: {str(e)}") - def on_profile_selected(self, event=None) -> None: - """Handle profile selection""" + def on_profile_selected(self, event: tk.Event = None) -> None: + """ + Handle profile selection from the combobox. + + Args: + event: Tkinter event object (optional) + """ profile_name = self.profile_var.get() if profile_name: username = self.config_manager.get_profile_info(profile_name) @@ -214,32 +251,39 @@ def on_profile_selected(self, event=None) -> None: self.profile_info_var.set("") def _handle_login_logout(self) -> None: - """Handle login/logout button click""" + """Handle login/logout button click based on current state.""" if self.login_button["text"] == "Login": self._handle_login() else: self._handle_logout() def _handle_login(self) -> None: - """Handle login attempt""" + """Handle login attempt using the selected authentication method.""" mode = self.login_mode_var.get() if mode == "manual": username = self.username_var.get().strip() token = self.token_var.get().strip() self.on_login("manual", {"username": username, "token": token}) - else: # config + else: profile_name = self.profile_var.get() self.on_login("config", {"profile": profile_name}) def _handle_logout(self) -> None: - """Handle logout""" + """Handle logout request.""" self.on_logout() def update_login_state( self, is_logged_in: bool, username: str = "", error: str = "" ) -> None: - """Update UI based on login state""" + """ + Update UI components based on current login state. + + Args: + is_logged_in: Whether the user is currently logged in + username: Username of the logged-in user (if applicable) + error: Error message if login failed (if applicable) + """ if is_logged_in: self.login_status_var.set("Logged in successfully") self.login_status_label.config(foreground="green") @@ -255,5 +299,10 @@ def update_login_state( self.user_info_var.set("") def set_login_button_state(self, enabled: bool) -> None: - """Enable/disable login button""" + """ + Enable or disable the login button. + + Args: + enabled: True to enable the button, False to disable + """ self.login_button.config(state="normal" if enabled else "disabled") diff --git a/synapsegui/components/output_component.py b/synapsegui/components/output_component.py index 5458dfe97..6125a4622 100644 --- a/synapsegui/components/output_component.py +++ b/synapsegui/components/output_component.py @@ -7,12 +7,22 @@ class OutputComponent: - """Output/logging UI component""" - - def __init__(self, parent: tk.Widget): + """ + Output and logging UI component. + + Provides a scrollable text area for displaying log messages, + progress updates, and application status information. + """ + + def __init__(self, parent: tk.Widget) -> None: + """ + Initialize the output component. + + Args: + parent: Parent widget to contain this component + """ self.parent = parent - # UI references self.output_text: Optional[scrolledtext.ScrolledText] = None self.status_var = tk.StringVar(value="Ready") self.frame: Optional[ttk.LabelFrame] = None @@ -21,8 +31,7 @@ def __init__(self, parent: tk.Widget): self.create_ui() def create_ui(self) -> None: - """Create output UI components""" - # Output section + """Create and configure the output UI components.""" self.frame = ttk.LabelFrame(self.parent, text="Output", padding="5") self.frame.columnconfigure(0, weight=1) self.frame.rowconfigure(0, weight=1) @@ -32,46 +41,63 @@ def create_ui(self) -> None: ) self.output_text.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S)) - # Clear button clear_button = ttk.Button( self.frame, text="Clear Output", command=self.clear_output ) clear_button.grid(row=1, column=0, pady=(5, 0)) - # Status bar (separate from output frame) self.status_bar = ttk.Label( self.parent, textvariable=self.status_var, relief=tk.SUNKEN ) def log_message(self, message: str, error: bool = False) -> None: - """Add message to output text widget""" + """ + Add a message to the output text widget. + + Args: + message: The message to log + error: True if this is an error message (will be colored red) + """ if self.output_text: self.output_text.insert(tk.END, f"{message}\n") self.output_text.see(tk.END) if error: - # Color the last line red for errors line_start = self.output_text.index("end-1c linestart") line_end = self.output_text.index("end-1c lineend") self.output_text.tag_add("error", line_start, line_end) self.output_text.tag_config("error", foreground="red") - # Update the display self.parent.update_idletasks() def clear_output(self) -> None: - """Clear the output text widget""" + """Clear all text from the output widget.""" if self.output_text: self.output_text.delete(1.0, tk.END) def set_status(self, status: str) -> None: - """Set the status bar message""" + """ + Set the status bar message. + + Args: + status: Status message to display + """ self.status_var.set(status) def get_frame(self) -> ttk.LabelFrame: - """Get the main frame for this component""" + """ + Get the main frame for this component. + + Returns: + The main frame widget containing the output area + """ return self.frame def get_status_bar(self) -> ttk.Label: - """Get the status bar widget""" + """ + Get the status bar widget. + + Returns: + The status bar label widget + """ return self.status_bar diff --git a/synapsegui/components/upload_component.py b/synapsegui/components/upload_component.py index 144ee6dfe..81a22446a 100644 --- a/synapsegui/components/upload_component.py +++ b/synapsegui/components/upload_component.py @@ -8,17 +8,28 @@ class UploadComponent: - """Upload file UI component""" + """ + Upload file UI component. + + Provides functionality for uploading individual files to Synapse, + supporting both new file creation and updating existing entities. + """ def __init__( self, parent: tk.Widget, on_upload_callback: Callable[[str, str, str, str], None], - ): + ) -> None: + """ + Initialize the upload component. + + Args: + parent: Parent widget to contain this component + on_upload_callback: Callback function for upload operations + """ self.parent = parent self.on_upload = on_upload_callback - # State variables self.upload_file_var = tk.StringVar() self.upload_mode_var = tk.StringVar(value="new") self.parent_id_var = tk.StringVar() @@ -26,7 +37,6 @@ def __init__( self.upload_name_var = tk.StringVar() self.upload_progress_var = tk.StringVar(value="") - # UI references self.upload_button: Optional[ttk.Button] = None self.upload_progress_bar: Optional[ttk.Progressbar] = None self.parent_id_entry: Optional[ttk.Entry] = None @@ -36,11 +46,10 @@ def __init__( self.create_ui() def create_ui(self) -> None: - """Create upload UI components""" + """Create and configure the upload UI components.""" self.frame = ttk.Frame(self.parent, padding="10") self.frame.columnconfigure(1, weight=1) - # File selection ttk.Label(self.frame, text="File to Upload:").grid( row=0, column=0, sticky=tk.W, pady=(0, 5) ) @@ -57,7 +66,6 @@ def create_ui(self) -> None: ) browse_file_button.grid(row=0, column=1) - # Upload mode selection mode_frame = ttk.LabelFrame(self.frame, text="Upload Mode", padding="10") mode_frame.grid( row=1, column=0, columnspan=2, sticky=(tk.W, tk.E), pady=(10, 0) @@ -82,7 +90,6 @@ def create_ui(self) -> None: ) update_radio.grid(row=1, column=0, sticky=tk.W) - # Parent ID / Entity ID fields parent_label = ttk.Label(mode_frame, text="Parent ID (Project/Folder):") parent_label.grid(row=0, column=1, sticky=tk.W, padx=(20, 5), pady=(0, 5)) @@ -99,7 +106,6 @@ def create_ui(self) -> None: ) self.entity_id_entry.grid(row=1, column=2, sticky=(tk.W, tk.E)) - # File name ttk.Label(self.frame, text="Entity Name (optional):").grid( row=2, column=0, sticky=tk.W, pady=(10, 5) ) @@ -110,7 +116,6 @@ def create_ui(self) -> None: row=2, column=1, sticky=(tk.W, tk.E), pady=(10, 5), padx=(10, 0) ) - # Upload button self.upload_button = ttk.Button( self.frame, text="Upload File", @@ -119,7 +124,6 @@ def create_ui(self) -> None: ) self.upload_button.grid(row=3, column=0, columnspan=2, pady=(20, 0)) - # Progress bar for uploads upload_progress_label = ttk.Label( self.frame, textvariable=self.upload_progress_var, @@ -134,7 +138,7 @@ def create_ui(self) -> None: ) def browse_upload_file(self) -> None: - """Browse for file to upload""" + """Open file browser to select a file for upload.""" file_path = filedialog.askopenfilename( title="Select file to upload", initialdir=str(Path.home()) ) @@ -144,7 +148,7 @@ def browse_upload_file(self) -> None: self.upload_name_var.set(Path(file_path).name) def on_upload_mode_change(self) -> None: - """Handle upload mode radio button changes""" + """Handle upload mode radio button changes to update field availability.""" mode = self.upload_mode_var.get() if mode == "new": if self.parent_id_entry: @@ -152,7 +156,7 @@ def on_upload_mode_change(self) -> None: if self.entity_id_entry: self.entity_id_entry.config(state="disabled") self.entity_id_var.set("") - else: # update + else: if self.parent_id_entry: self.parent_id_entry.config(state="disabled") if self.entity_id_entry: @@ -160,7 +164,7 @@ def on_upload_mode_change(self) -> None: self.parent_id_var.set("") def _handle_upload(self) -> None: - """Handle upload button click""" + """Handle upload button click and validate input parameters.""" file_path = self.upload_file_var.get().strip() parent_id = self.parent_id_var.get().strip() entity_id = self.entity_id_var.get().strip() @@ -181,37 +185,63 @@ def _handle_upload(self) -> None: self.on_upload(file_path, parent_id, entity_id, name) def set_enabled(self, enabled: bool) -> None: - """Enable/disable upload functionality""" + """ + Enable or disable upload functionality. + + Args: + enabled: True to enable upload operations, False to disable + """ state = "normal" if enabled else "disabled" if self.upload_button: self.upload_button.config(state=state) def start_operation(self) -> None: - """Called when upload operation starts""" + """Initialize UI state when upload operation begins.""" self.upload_progress_var.set("Preparing upload...") if self.upload_progress_bar: self.upload_progress_bar["value"] = 0 def update_progress(self, progress: int, message: str) -> None: - """Update progress bar and message""" + """ + Update progress bar and status message. + + Args: + progress: Progress percentage (0-100) + message: Status message to display + """ if self.upload_progress_bar: self.upload_progress_bar["value"] = progress self.upload_progress_var.set(message) def show_success(self, message: str) -> None: - """Show success state""" + """ + Display success state and message. + + Args: + message: Success message to display + """ self.upload_progress_var.set("Upload completed") if self.upload_progress_bar: self.upload_progress_bar["value"] = 100 messagebox.showinfo("Success", message) def show_error(self, error_message: str) -> None: - """Show error state""" + """ + Display error state and message. + + Args: + error_message: Error message to display + """ self.upload_progress_var.set("Upload failed") if self.upload_progress_bar: self.upload_progress_bar["value"] = 0 messagebox.showerror("Upload Error", error_message) def get_frame(self) -> ttk.Frame: - """Get the main frame for this component""" + """ + Get the main frame for this component. + + Returns: + The main frame widget containing all upload UI elements + """ return self.frame diff --git a/synapsegui/controllers/app_controller.py b/synapsegui/controllers/app_controller.py index 5eb45c2c1..24aa3de4e 100644 --- a/synapsegui/controllers/app_controller.py +++ b/synapsegui/controllers/app_controller.py @@ -11,14 +11,19 @@ class ApplicationController: - """Main application controller that coordinates between UI and business logic""" + """ + Main application controller that coordinates between UI components and business logic. + + Handles user interactions, manages the Synapse client, and orchestrates + data flow between the UI components and backend services. + """ def __init__(self) -> None: + """Initialize the application controller with necessary managers and components.""" self.synapse_client = SynapseClientManager() self.config_manager = ConfigManager() self.progress_manager = ProgressManager() - # UI components will be set by the main window self.login_component = None self.download_component = None self.upload_component = None @@ -33,7 +38,17 @@ def set_ui_components( bulk_download_component=None, bulk_upload_component=None, ) -> None: - """Set references to UI components""" + """ + Set references to UI components for interaction. + + Args: + login_component: Login UI component + download_component: Download UI component + upload_component: Upload UI component + output_component: Output/logging UI component + bulk_download_component: Bulk download UI component (optional) + bulk_upload_component: Bulk upload UI component (optional) + """ self.login_component = login_component self.download_component = download_component self.upload_component = upload_component @@ -42,9 +57,16 @@ def set_ui_components( self.bulk_upload_component = bulk_upload_component def handle_login(self, mode: str, credentials: Dict[str, Any]) -> None: - """Handle login request from UI""" + """ + Handle login request from UI components. + + Args: + mode: Login mode ("manual" or "config") + credentials: Dictionary containing login credentials + """ - def login_worker(): + def login_worker() -> None: + """Worker function to handle login in background thread.""" if mode == "manual": result = asyncio.run( self.synapse_client.login_manual( @@ -73,30 +95,33 @@ def login_worker(): f"Login failed: {result['error']}", error=True ) - # Re-enable login/logout button after login attempt completes self.login_component.set_login_button_state(True) - # Disable login button during attempt self.login_component.set_login_button_state(False) - - # Run in background thread threading.Thread(target=login_worker, daemon=True).start() def handle_logout(self) -> None: - """Handle logout request""" + """Handle logout request and update UI components accordingly.""" self.synapse_client.logout() self.login_component.update_login_state(False) self._enable_operations(False) self.output_component.log_message("Logged out successfully") - # Ensure login button remains enabled after logout self.login_component.set_login_button_state(True) def handle_download( self, synapse_id: str, version: str, download_path: str ) -> None: - """Handle file download request""" + """ + Handle file download request from UI. - def download_worker(): + Args: + synapse_id: Synapse entity ID to download + version: Entity version (optional, empty string if not specified) + download_path: Local path where file should be downloaded + """ + + def download_worker() -> None: + """Worker function to handle download in background thread.""" version_num = None if version: try: @@ -107,10 +132,12 @@ def download_worker(): ) return - def progress_callback(progress: int, message: str): + def progress_callback(progress: int, message: str) -> None: + """Callback for download progress updates.""" self.download_component.update_progress(progress, message) - def detail_callback(detail_message: str): + def detail_callback(detail_message: str) -> None: + """Callback for detailed download messages.""" self.output_component.log_message(detail_message) result = asyncio.run( @@ -138,13 +165,24 @@ def detail_callback(detail_message: str): def handle_upload( self, file_path: str, parent_id: str, entity_id: str, name: str ) -> None: - """Handle file upload request""" + """ + Handle file upload request from UI. + + Args: + file_path: Local path to file to upload + parent_id: Parent entity ID for new files (empty for updates) + entity_id: Entity ID for file updates (empty for new files) + name: Entity name (optional) + """ - def upload_worker(): - def progress_callback(progress: int, message: str): + def upload_worker() -> None: + """Worker function to handle upload in background thread.""" + def progress_callback(progress: int, message: str) -> None: + """Callback for upload progress updates.""" self.upload_component.update_progress(progress, message) - def detail_callback(detail_message: str): + def detail_callback(detail_message: str) -> None: + """Callback for detailed upload messages.""" self.output_component.log_message(detail_message) result = asyncio.run( @@ -174,14 +212,20 @@ def detail_callback(detail_message: str): threading.Thread(target=upload_worker, daemon=True).start() def handle_enumerate(self, container_id: str, recursive: bool) -> None: - """Handle container enumeration request from UI""" + """ + Handle container enumeration request from UI. - def enumerate_worker(): + Args: + container_id: Synapse container ID to enumerate + recursive: Whether to enumerate contents recursively + """ + + def enumerate_worker() -> None: + """Worker function to handle enumeration in background thread.""" result = asyncio.run( self.synapse_client.enumerate_container(container_id, recursive) ) - # Schedule UI updates on the main thread using after() if self.bulk_download_component: if result["success"]: self.bulk_download_component.parent.after( @@ -201,7 +245,12 @@ def enumerate_worker(): threading.Thread(target=enumerate_worker, daemon=True).start() def _enable_operations(self, enabled: bool) -> None: - """Enable/disable operation buttons based on login state""" + """ + Enable or disable operation buttons based on login state. + + Args: + enabled: True to enable operations, False to disable + """ if self.download_component: self.download_component.set_enabled(enabled) if self.upload_component: @@ -225,7 +274,8 @@ def handle_bulk_download( If False, only the immediate contents of folders will be downloaded. """ - def bulk_download_worker(): + def bulk_download_worker() -> None: + """Worker function to handle bulk download in background thread.""" # Start the operation if self.bulk_download_component: self.output_component.get_frame().after( @@ -273,9 +323,17 @@ def bulk_download_worker(): def handle_bulk_upload( self, items: list, parent_id: str, preserve_structure: bool ) -> None: - """Handle bulk upload request from UI""" + """ + Handle bulk upload request from UI. + + Args: + items: List of BulkItem objects to upload + parent_id: Synapse parent folder ID for uploads + preserve_structure: Whether to preserve directory structure + """ - def bulk_upload_worker(): + def bulk_upload_worker() -> None: + """Worker function to handle bulk upload in background thread.""" # Start the operation if self.bulk_upload_component: self.output_component.get_frame().after( @@ -321,8 +379,13 @@ def bulk_upload_worker(): threading.Thread(target=bulk_upload_worker, daemon=True).start() def _on_bulk_download_progress_update(self, progress: int, message: str) -> None: - """Handle progress updates from bulk download operations""" - # Schedule UI updates on the main thread + """ + Handle progress updates from bulk download operations. + + Args: + progress: Progress percentage (0-100) + message: Progress message to display + """ if self.bulk_download_component: self.output_component.get_frame().after( 0, @@ -334,8 +397,13 @@ def _on_bulk_download_progress_update(self, progress: int, message: str) -> None ) def _on_bulk_upload_progress_update(self, progress: int, message: str) -> None: - """Handle progress updates from bulk upload operations""" - # Schedule UI updates on the main thread + """ + Handle progress updates from bulk upload operations. + + Args: + progress: Progress percentage (0-100) + message: Progress message to display + """ if self.bulk_upload_component: self.output_component.get_frame().after( 0, lambda: self.bulk_upload_component.update_progress(progress, message) @@ -346,11 +414,22 @@ def _on_bulk_upload_progress_update(self, progress: int, message: str) -> None: ) def _on_progress_update(self, progress: int, message: str) -> None: - """Handle progress updates from single file operations""" + """ + Handle progress updates from single file operations. + + Args: + progress: Progress percentage (0-100) + message: Progress message to display + """ if self.output_component: self.output_component.log_message(f"Progress: {progress}% - {message}") def _on_detail_message(self, message: str) -> None: - """Handle detailed progress messages from bulk operations""" + """ + Handle detailed progress messages from bulk operations. + + Args: + message: Detailed message to log + """ if self.output_component: self.output_component.log_message(message) diff --git a/synapsegui/models/config.py b/synapsegui/models/config.py index b604cb746..4908e542b 100644 --- a/synapsegui/models/config.py +++ b/synapsegui/models/config.py @@ -8,46 +8,66 @@ class ConfigManager: - """Manages Synapse configuration profiles""" - - def __init__(self, config_path: str = None): + """ + Manages Synapse configuration profiles. + + Handles reading and parsing Synapse configuration files to extract + available authentication profiles and their associated information. + """ + + def __init__(self, config_path: str = None) -> None: + """ + Initialize the configuration manager. + + Args: + config_path: Path to the Synapse configuration file. + Defaults to ~/.synapseConfig if not provided. + """ self.config_path = config_path or os.path.expanduser("~/.synapseConfig") def get_available_profiles(self) -> List[str]: - """Get list of available authentication profiles from config file""" + """ + Get list of available authentication profiles from configuration file. + + Returns: + List of profile names found in the configuration file + """ profiles = [] try: config = get_config_file(self.config_path) sections = config.sections() - # Look for profiles for section in sections: if section == "default": profiles.append("default") elif section.startswith("profile "): - profile_name = section[8:] # Remove "profile " prefix + profile_name = section[8:] profiles.append(profile_name) elif section == "authentication": - # Legacy authentication section profiles.append("authentication (legacy)") - # If no profiles found but config exists, add default if not profiles and os.path.exists(self.config_path): profiles.append("default") except Exception: - # If config file doesn't exist or can't be read, return empty list pass return profiles def get_profile_info(self, profile_name: str) -> str: - """Get username for a specific profile""" + """ + Get username for a specific profile. + + Args: + profile_name: Name of the profile to get information for + + Returns: + Username associated with the profile, or empty string if not found + """ try: config = get_config_file(self.config_path) - # Handle different profile name formats if profile_name == "default": section_name = "default" elif profile_name == "authentication (legacy)": @@ -65,7 +85,12 @@ def get_profile_info(self, profile_name: str) -> str: return "" def has_config_file(self) -> bool: - """Check if config file exists""" + """ + Check if configuration file exists and contains profiles. + + Returns: + True if config file exists and has profiles, False otherwise + """ return ( os.path.exists(self.config_path) and len(self.get_available_profiles()) > 0 ) diff --git a/synapsegui/models/synapse_client.py b/synapsegui/models/synapse_client.py index bdd668e68..8e5b80303 100644 --- a/synapsegui/models/synapse_client.py +++ b/synapsegui/models/synapse_client.py @@ -1,5 +1,9 @@ """ -Synapse client operations - separated from UI logic +Synapse client operations and management. + +This module provides the SynapseClientManager class and supporting utilities +for handling all Synapse client operations, including authentication, file +uploads/downloads, and bulk operations, separated from UI logic. """ import io import logging @@ -14,13 +18,16 @@ from synapseclient.models import File -def _safe_stderr_redirect(new_stderr): +def _safe_stderr_redirect(new_stderr: Any) -> tuple[Any, Any]: """ Safely redirect stderr, handling the case where original stderr might be None. + Args: + new_stderr: New stderr object to redirect to + Returns: Tuple of (original_stderr, safe_original_stderr) where safe_original_stderr - is guaranteed to be a valid file-like object. + is guaranteed to be a valid file-like object """ original_stderr = sys.stderr safe_original_stderr = ( @@ -30,38 +37,57 @@ def _safe_stderr_redirect(new_stderr): return original_stderr, safe_original_stderr -def _safe_stderr_restore(original_stderr, safe_original_stderr): +def _safe_stderr_restore(original_stderr: Any, safe_original_stderr: Any) -> None: """ Safely restore stderr, ensuring we never set it to None. + + Args: + original_stderr: The original stderr object + safe_original_stderr: Fallback stderr object if original was None """ if original_stderr is not None: sys.stderr = original_stderr else: - # If original was None, use a StringIO to avoid None issues sys.stderr = safe_original_stderr class TQDMProgressCapture: - """Capture TQDM progress updates for GUI display""" + """ + Capture TQDM progress updates for GUI display. + + Intercepts TQDM progress output and extracts progress information + to provide callbacks for GUI progress bars and status updates. + """ def __init__( self, progress_callback: Callable[[int, str], None], detail_callback: Callable[[str], None], - ): + ) -> None: + """ + Initialize the TQDM progress capture. + + Args: + progress_callback: Function to call with progress updates (progress%, message) + detail_callback: Function to call with detailed progress messages + """ self.progress_callback = progress_callback self.detail_callback = detail_callback self.last_progress = 0 def write(self, s: str) -> None: - """Capture TQDM output and extract progress information""" + """ + Capture TQDM output and extract progress information. + + Args: + s: String output from TQDM to parse for progress information + """ if s and "\r" in s: # TQDM typically uses \r for progress updates progress_line = s.strip().replace("\r", "") if "%" in progress_line and ( "B/s" in progress_line or "it/s" in progress_line ): - # Parse progress percentage try: # Look for percentage in the format "XX%" match = re.search(r"(\d+)%", progress_line) @@ -69,30 +95,43 @@ def write(self, s: str) -> None: progress = int(match.group(1)) if progress != self.last_progress: self.last_progress = progress - # Send progress update for progress bar self.progress_callback(progress, f"Progress: {progress}%") - # Send detailed progress line for output logging self.detail_callback(progress_line) except Exception: pass def flush(self) -> None: - """Required for file-like object interface""" + """Required for file-like object interface.""" pass class SynapseClientManager: - """Handles all Synapse client operations""" + """ + Handles all Synapse client operations. + + Manages authentication, file operations, and bulk operations for the + Synapse platform, providing a clean interface between the GUI and + the underlying synapseclient library. + """ - def __init__(self): + def __init__(self) -> None: + """Initialize the Synapse client manager with default state.""" self.client: Optional[synapseclient.Synapse] = None self.is_logged_in = False self.username = "" async def login_manual(self, username: str, token: str) -> Dict[str, Any]: - """Login with username and token""" + """ + Login with username and authentication token. + + Args: + username: Synapse username or email address + token: Personal access token for authentication + + Returns: + Dictionary with 'success' boolean and either 'username' or 'error' key + """ try: - # Create client with debug logging to capture detailed messages self.client = synapseclient.Synapse(skip_checks=True, debug=False) if username: @@ -105,21 +144,26 @@ async def login_manual(self, username: str, token: str) -> Dict[str, Any]: self.client, "email", "Unknown User" ) - # Log successful login logger = logging.getLogger("synapseclient") logger.info(f"Successfully logged in as {self.username}") return {"success": True, "username": self.username} except Exception as e: - # Log login error logger = logging.getLogger("synapseclient") logger.error(f"Login failed: {str(e)}") return {"success": False, "error": str(e)} async def login_with_profile(self, profile_name: str) -> Dict[str, Any]: - """Login with config file profile""" + """ + Login with configuration file profile. + + Args: + profile_name: Name of the profile from Synapse configuration file + + Returns: + Dictionary with 'success' boolean and either 'username' or 'error' key + """ try: - # Create client with debug logging to capture detailed messages self.client = synapseclient.Synapse(skip_checks=True, debug=False) if profile_name == "authentication (legacy)": @@ -132,7 +176,6 @@ async def login_with_profile(self, profile_name: str) -> Dict[str, Any]: self.client, "email", "Unknown User" ) - # Log successful login logger = logging.getLogger("synapseclient") logger.info( f"Successfully logged in as {self.username} using profile {profile_name}" @@ -140,16 +183,14 @@ async def login_with_profile(self, profile_name: str) -> Dict[str, Any]: return {"success": True, "username": self.username} except Exception as e: - # Log login error logger = logging.getLogger("synapseclient") logger.error(f"Login with profile '{profile_name}' failed: {str(e)}") return {"success": False, "error": str(e)} def logout(self) -> None: - """Logout from Synapse""" + """Logout from Synapse and clear authentication state.""" if self.client: self.client.logout() - # Log logout logger = logging.getLogger("synapseclient") logger.info(f"User {self.username} logged out") self.client = None @@ -164,22 +205,30 @@ async def download_file( progress_callback: Callable[[int, str], None], detail_callback: Callable[[str], None], ) -> Dict[str, Any]: - """Download file from Synapse""" + """ + Download a file from Synapse. + + Args: + synapse_id: Synapse entity ID to download + version: Specific version to download (None for latest) + download_path: Local directory path for download + progress_callback: Function for progress updates (progress%, message) + detail_callback: Function for detailed progress messages + + Returns: + Dictionary with 'success' boolean and either 'path' or 'error' key + """ try: if not self.is_logged_in: return {"success": False, "error": "Not logged in"} - # Log download start logger = logging.getLogger("synapseclient") version_info = f" version {version}" if version else "" logger.info( f"Starting download of {synapse_id}{version_info} to {download_path}" ) - # Create progress capture for TQDM output progress_capture = TQDMProgressCapture(progress_callback, detail_callback) - - # Safely redirect stderr to capture TQDM output original_stderr, safe_original_stderr = _safe_stderr_redirect( progress_capture ) @@ -204,7 +253,6 @@ async def download_file( logger.error(error_msg) return {"success": False, "error": error_msg} finally: - # Safely restore original stderr _safe_stderr_restore(original_stderr, safe_original_stderr) except Exception as e: @@ -221,7 +269,20 @@ async def upload_file( progress_callback: Callable[[int, str], None], detail_callback: Callable[[str], None], ) -> Dict[str, Any]: - """Upload file to Synapse""" + """ + Upload a file to Synapse. + + Args: + file_path: Local path to the file to upload + parent_id: Parent entity ID for new files (required for new files) + entity_id: Entity ID to update (for updating existing files) + name: Name for the entity (optional, uses filename if not provided) + progress_callback: Function for progress updates (progress%, message) + detail_callback: Function for detailed progress messages + + Returns: + Dictionary with 'success' boolean and either entity info or 'error' key + """ try: if not self.is_logged_in: return {"success": False, "error": "Not logged in"} @@ -229,7 +290,6 @@ async def upload_file( if not os.path.exists(file_path): return {"success": False, "error": f"File does not exist: {file_path}"} - # Log upload start logger = logging.getLogger("synapseclient") if entity_id: logger.info( @@ -240,16 +300,13 @@ async def upload_file( f"Starting upload of {file_path} to create new entity in {parent_id}" ) - # Create progress capture for TQDM output progress_capture = TQDMProgressCapture(progress_callback, detail_callback) - - # Safely redirect stderr to capture TQDM output original_stderr, safe_original_stderr = _safe_stderr_redirect( progress_capture ) try: - if entity_id: # Update existing + if entity_id: file_obj = File( id=entity_id, path=file_path, name=name, download_file=False ) @@ -257,7 +314,7 @@ async def upload_file( file_obj.path = file_path if name: file_obj.name = name - else: # Create new + else: if not parent_id: return { "success": False, @@ -272,7 +329,6 @@ async def upload_file( file_obj = file_obj.store(synapse_client=self.client) - # Log successful upload logger.info( f"Successfully uploaded {file_path} as entity {file_obj.id}: {file_obj.name}" ) @@ -283,7 +339,6 @@ async def upload_file( "name": file_obj.name, } finally: - # Safely restore original stderr _safe_stderr_restore(original_stderr, safe_original_stderr) except Exception as e: @@ -316,24 +371,17 @@ async def enumerate_container( ) # Import here to avoid circular imports - from synapseclient.models import Folder, Project + from synapseclient.models import Folder - # Determine container type and create appropriate object - # TODO: This needs to be fixed as this is not correct - if container_id.startswith("project"): - container = Project(id=container_id) - else: - container = Folder(id=container_id) + container = Folder(id=container_id) # Sync metadata only (download_file=False) await container.sync_from_synapse_async( - download_file=False, recursive=recursive, synapse_client=self.client + download_file=False, recursive=recursive, include_types=["file", "folder"], synapse_client=self.client ) - # Convert to BulkItem objects - items = self._convert_to_bulk_items(container, recursive) + items = self._convert_to_bulk_items(container=container, recursive=recursive) - # Log successful enumeration logger.info( f"Successfully enumerated {len(items)} items from container {container_id}" ) @@ -360,7 +408,6 @@ def _convert_to_bulk_items(self, container: Any, recursive: bool) -> list: items = [] - # Add files if hasattr(container, "files"): for file in container.files: items.append( @@ -374,7 +421,6 @@ def _convert_to_bulk_items(self, container: Any, recursive: bool) -> list: ) ) - # Add folders if hasattr(container, "folders"): for folder in container.folders: items.append( @@ -388,7 +434,6 @@ def _convert_to_bulk_items(self, container: Any, recursive: bool) -> list: ) ) - # Recursively add folder contents if recursive if recursive: items.extend(self._convert_to_bulk_items(folder, recursive)) @@ -423,7 +468,6 @@ async def bulk_download( total_items = len(items) for i, item in enumerate(items): - # Update overall progress overall_progress = int((i / total_items) * 100) progress_callback( overall_progress, f"Processing item {i + 1} of {total_items}" @@ -432,7 +476,6 @@ async def bulk_download( try: if item.item_type == "File": - # Download individual file result = await self.download_file( synapse_id=item.synapse_id, version=None, @@ -442,7 +485,6 @@ async def bulk_download( ) results.append({"item": item, "result": result}) elif item.item_type == "Folder": - # Use sync_from_synapse_async for folders from synapseclient.models import Folder folder = Folder(id=item.synapse_id) @@ -450,6 +492,7 @@ async def bulk_download( path=os.path.join(download_path, item.name), download_file=True, recursive=recursive, + include_types=["file", "folder"], synapse_client=self.client, ) @@ -462,27 +505,14 @@ async def bulk_download( }, } ) - else: - # Skip non-downloadable items - results.append( - { - "item": item, - "result": { - "success": False, - "error": f"Cannot download {item.item_type}", - }, - } - ) except Exception as e: results.append( {"item": item, "result": {"success": False, "error": str(e)}} ) - # Final progress progress_callback(100, "Bulk download complete") - # Count successes and failures successes = sum(1 for r in results if r["result"].get("success", False)) failures = total_items - successes @@ -529,11 +559,9 @@ async def bulk_upload( items, parent_id, progress_callback, detail_callback ) - # Upload files file_items = [item for item in items if item.item_type == "File"] for i, item in enumerate(file_items): - # Update overall progress overall_progress = int((i / len(file_items)) * 100) progress_callback( overall_progress, f"Uploading file {i + 1} of {len(file_items)}" @@ -541,16 +569,13 @@ async def bulk_upload( detail_callback(f"Uploading {item.name}") try: - # Determine target parent target_parent = parent_id if preserve_structure and item.path: # Find the appropriate parent folder for this file item_dir = os.path.dirname(item.path) - # Normalize path separators to match folder_mapping keys normalized_item_dir = item_dir.replace("\\", "/") - # First check for exact match if normalized_item_dir in folder_mapping: target_parent = folder_mapping[normalized_item_dir] else: @@ -579,10 +604,8 @@ async def bulk_upload( {"item": item, "result": {"success": False, "error": str(e)}} ) - # Final progress progress_callback(100, "Bulk upload complete") - # Count successes and failures successes = sum(1 for r in results if r["result"].get("success", False)) failures = len(file_items) - successes @@ -618,11 +641,9 @@ async def _create_folder_structure( folder_mapping = {} - # Find root folders (explicitly selected folders) root_folders = [] for item in items: if item.item_type == "Folder": - # Check if this folder is not a subfolder of another folder in the list is_root = True for other_item in items: if ( @@ -635,7 +656,6 @@ async def _create_folder_structure( if is_root: root_folders.append(item) - # Get all unique directory paths that need to be created dir_paths = set() # First, add the explicitly selected folders @@ -663,16 +683,15 @@ async def _create_folder_structure( dir_paths.add(str(temp_path)) break - # Sort by depth (create parents first) sorted_dirs = sorted(dir_paths, key=lambda x: len(Path(x).parts)) detail_callback("Creating folder structure...") for i, dir_path in enumerate(sorted_dirs): - if i % 5 == 0: # Update progress periodically + if i % 5 == 0: progress = int( (i / len(sorted_dirs)) * 50 - ) # Use 50% for folder creation + ) progress_callback( progress, f"Creating folders ({i}/{len(sorted_dirs)})" ) @@ -680,7 +699,6 @@ async def _create_folder_structure( path_obj = Path(dir_path) folder_name = path_obj.name - # Determine parent folder ID parent_folder_id = base_parent_id # For root folders, parent is the base parent @@ -701,11 +719,9 @@ async def _create_folder_structure( parent_folder_id = folder_mapping[normalized_parent_path] break - # Create folder try: folder = Folder(name=folder_name, parent_id=parent_folder_id) folder = folder.store(synapse_client=self.client) - # Normalize path separators for consistent lookup normalized_dir_path = dir_path.replace("\\", "/") folder_mapping[normalized_dir_path] = folder.id detail_callback( @@ -717,7 +733,16 @@ async def _create_folder_structure( return folder_mapping def _is_subpath(self, child_path: str, parent_path: str) -> bool: - """Check if child_path is a subpath of parent_path.""" + """ + Check if child_path is a subpath of parent_path. + + Args: + child_path: The potential child path to check + parent_path: The potential parent path + + Returns: + True if child_path is a subpath of parent_path, False otherwise + """ try: Path(child_path).relative_to(Path(parent_path)) return True diff --git a/synapsegui/synapse_gui.py b/synapsegui/synapse_gui.py index 7e5e18590..78f22e8f4 100644 --- a/synapsegui/synapse_gui.py +++ b/synapsegui/synapse_gui.py @@ -22,17 +22,19 @@ class SynapseGUI: """Main GUI window""" def __init__(self, root: tk.Tk) -> None: + """ + Initialize the Synapse GUI application. + + Args: + root: The main tkinter window instance + """ self.root = root self.root.title("Synapse Desktop Client") self.root.geometry("800x700") - # Initialize controller self.controller = ApplicationController() - - # Create UI components self.create_widgets() - # Connect components to controller self.controller.set_ui_components( self.login_component, self.download_component, @@ -42,29 +44,24 @@ def __init__(self, root: tk.Tk) -> None: self.bulk_upload_component, ) - # Setup logging integration to forward console logs to GUI self.logging_integration = LoggingIntegration(self.output_component.log_message) self.logging_integration.setup_logging_integration(self.root) def create_widgets(self) -> None: - """Create main window layout and components""" - # Main container + """Create and configure the main window layout and components.""" main_frame = ttk.Frame(self.root, padding="10") main_frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S)) - # Configure grid weights self.root.columnconfigure(0, weight=1) self.root.rowconfigure(0, weight=1) main_frame.columnconfigure(0, weight=1) main_frame.rowconfigure(3, weight=1) - # Title title_label = ttk.Label( main_frame, text="Synapse Desktop Client", font=("Arial", 16, "bold") ) title_label.grid(row=0, column=0, pady=(0, 20)) - # Login component self.login_component = LoginComponent( main_frame, self.controller.config_manager, @@ -72,31 +69,26 @@ def create_widgets(self) -> None: self.controller.handle_logout, ) - # Operation tabs self.notebook = ttk.Notebook(main_frame) self.notebook.grid( row=2, column=0, sticky=(tk.W, tk.E, tk.N, tk.S), pady=(0, 10) ) - # Download component self.download_component = DownloadComponent( self.notebook, self.controller.handle_download ) self.notebook.add(self.download_component.get_frame(), text="Download File") - # Upload component self.upload_component = UploadComponent( self.notebook, self.controller.handle_upload ) self.notebook.add(self.upload_component.get_frame(), text="Upload File") - # Output component self.output_component = OutputComponent(main_frame) self.output_component.get_frame().grid( row=3, column=0, sticky=(tk.W, tk.E, tk.N, tk.S), pady=(0, 10) ) - # Bulk Download component self.bulk_download_component = BulkDownloadComponent( self.notebook, self.controller.handle_bulk_download, @@ -108,7 +100,6 @@ def create_widgets(self) -> None: self.bulk_download_component.create_ui(), text="Bulk Download" ) - # Bulk Upload component self.bulk_upload_component = BulkUploadComponent( self.notebook, self.controller.handle_bulk_upload, @@ -117,37 +108,39 @@ def create_widgets(self) -> None: ) self.notebook.add(self.bulk_upload_component.create_ui(), text="Bulk Upload") - # Status bar self.output_component.get_status_bar().grid( row=4, column=0, sticky=(tk.W, tk.E) ) def _on_progress_update(self, message: str, progress: int) -> None: - """Handle progress updates from bulk operations""" - # Note: parameters are swapped compared to controller callback - # to match the component's expected signature + """ + Handle progress updates from bulk operations. + + Args: + message: Progress message to display + progress: Progress percentage (0-100) + """ if self.output_component: self.output_component.log_message(f"Progress: {progress}% - {message}") def cleanup(self) -> None: - """Clean up resources when closing the application""" + """Clean up resources when closing the application.""" if hasattr(self, "logging_integration"): self.logging_integration.cleanup_logging_integration() def main() -> None: - """Main function - much cleaner now""" + """Main entry point for the Synapse Desktop Client application.""" root = tk.Tk() app = SynapseGUI(root) - # Setup cleanup on window close - def on_closing(): + def on_closing() -> None: + """Handle application closing event.""" app.cleanup() root.destroy() root.protocol("WM_DELETE_WINDOW", on_closing) - # Center the window root.update_idletasks() width = root.winfo_width() height = root.winfo_height() diff --git a/synapsegui/utils/logging_integration.py b/synapsegui/utils/logging_integration.py index 0ffa5074d..a8cd3306a 100644 --- a/synapsegui/utils/logging_integration.py +++ b/synapsegui/utils/logging_integration.py @@ -7,56 +7,87 @@ class GUILogHandler(logging.Handler): - """Custom logging handler that forwards log messages to the GUI""" - - def __init__(self, log_callback: Callable[[str, bool], None]): + """ + Custom logging handler that forwards log messages to the GUI. + + Captures Python logging messages and forwards them to a GUI callback + function for display in the application interface. + """ + + def __init__(self, log_callback: Callable[[str, bool], None]) -> None: + """ + Initialize the GUI log handler. + + Args: + log_callback: Function to call with log messages (message, is_error) + """ super().__init__() self.log_callback = log_callback self.root = None def set_root(self, root: tk.Tk) -> None: - """Set the tkinter root for thread-safe GUI updates""" + """ + Set the tkinter root for thread-safe GUI updates. + + Args: + root: The main tkinter window + """ self.root = root def emit(self, record: logging.LogRecord) -> None: - """Emit a log record to the GUI""" + """ + Emit a log record to the GUI. + + Args: + record: The log record to emit + """ try: message = self.format(record) is_error = record.levelno >= logging.ERROR - # If we have a root widget, schedule the GUI update on the main thread if self.root: self.root.after(0, lambda: self.log_callback(message, is_error)) else: - # Fallback: call directly (may not be thread-safe) self.log_callback(message, is_error) except Exception: - # Avoid recursion errors by not logging the exception pass class LoggingIntegration: - """Manages integration between Python logging and GUI logging""" - - def __init__(self, log_callback: Callable[[str, bool], None]): + """ + Manages integration between Python logging and GUI logging. + + Handles setup and cleanup of logging handlers to forward Python + log messages to the GUI output component. + """ + + def __init__(self, log_callback: Callable[[str, bool], None]) -> None: + """ + Initialize the logging integration. + + Args: + log_callback: Function to call with log messages (message, is_error) + """ self.log_callback = log_callback self.gui_handler: Optional[GUILogHandler] = None self.original_handlers = [] def setup_logging_integration(self, root: tk.Tk) -> None: - """Setup logging to forward messages to GUI""" - # Create GUI log handler + """ + Setup logging to forward messages to GUI. + + Args: + root: The main tkinter window for thread-safe updates + """ self.gui_handler = GUILogHandler(self.log_callback) self.gui_handler.set_root(root) - # Set formatter to match GUI expectations formatter = logging.Formatter("%(name)s: %(message)s") self.gui_handler.setFormatter(formatter) - # Add the handler to the synapseclient loggers synapse_loggers = [ "synapseclient_default", - "synapseclient_debug", + "synapseclient_debug", "synapseclient", "synapseclient.client", "synapseclient.core", @@ -65,19 +96,17 @@ def setup_logging_integration(self, root: tk.Tk) -> None: for logger_name in synapse_loggers: logger = logging.getLogger(logger_name) - # Store original handlers for cleanup self.original_handlers.extend(logger.handlers[:]) - # Add our GUI handler logger.addHandler(self.gui_handler) def cleanup_logging_integration(self) -> None: - """Clean up logging integration""" + """Clean up logging integration by removing GUI handlers.""" if self.gui_handler: synapse_loggers = [ "synapseclient_default", "synapseclient_debug", "synapseclient", - "synapseclient.client", + "synapseclient.client", "synapseclient.core", "synapseclient.models", ] diff --git a/synapsegui/utils/progress.py b/synapsegui/utils/progress.py index d874e869a..3f281159d 100644 --- a/synapsegui/utils/progress.py +++ b/synapsegui/utils/progress.py @@ -5,21 +5,45 @@ class ProgressManager: - """Manages progress updates for different operations""" + """ + Manages progress updates for different operations. + + Provides a centralized way to register, update, and manage + progress callbacks for various application operations. + """ - def __init__(self): + def __init__(self) -> None: + """Initialize the progress manager with an empty callback registry.""" self.callbacks = {} - def register_callback(self, operation: str, callback: Callable[[int, str], None]): - """Register a progress callback for an operation""" + def register_callback(self, operation: str, callback: Callable[[int, str], None]) -> None: + """ + Register a progress callback for a specific operation. + + Args: + operation: Name of the operation to register callback for + callback: Function to call with progress updates (progress, message) + """ self.callbacks[operation] = callback - def update_progress(self, operation: str, progress: int, message: str): - """Update progress for a specific operation""" + def update_progress(self, operation: str, progress: int, message: str) -> None: + """ + Update progress for a specific operation. + + Args: + operation: Name of the operation to update + progress: Progress percentage (0-100) + message: Progress message to display + """ if operation in self.callbacks: self.callbacks[operation](progress, message) - def unregister_callback(self, operation: str): - """Remove callback for an operation""" + def unregister_callback(self, operation: str) -> None: + """ + Remove callback for a specific operation. + + Args: + operation: Name of the operation to unregister + """ if operation in self.callbacks: del self.callbacks[operation] diff --git a/synapsegui/utils/tooltips.py b/synapsegui/utils/tooltips.py index b5ece51e4..e18642eee 100644 --- a/synapsegui/utils/tooltips.py +++ b/synapsegui/utils/tooltips.py @@ -5,22 +5,47 @@ class ToolTip: - """Create a tooltip for a given widget""" + """ + Create a tooltip for a given widget. + + Provides hover-based tooltips that appear when the mouse enters + a widget and disappear when it leaves. + """ - def __init__(self, widget, text="widget info"): + def __init__(self, widget: tk.Widget, text: str = "widget info") -> None: + """ + Initialize the tooltip for a widget. + + Args: + widget: The widget to attach the tooltip to + text: The text to display in the tooltip + """ self.widget = widget self.text = text self.widget.bind("", self.enter) self.widget.bind("", self.leave) self.tipwindow = None - def enter(self, event=None): + def enter(self, event: tk.Event = None) -> None: + """ + Handle mouse enter event to show tooltip. + + Args: + event: Tkinter event object (optional) + """ self.show_tooltip() - def leave(self, event=None): + def leave(self, event: tk.Event = None) -> None: + """ + Handle mouse leave event to hide tooltip. + + Args: + event: Tkinter event object (optional) + """ self.hide_tooltip() - def show_tooltip(self): + def show_tooltip(self) -> None: + """Display the tooltip window near the widget.""" if self.tipwindow or not self.text: return x, y, cx, cy = self.widget.bbox("insert") @@ -40,7 +65,8 @@ def show_tooltip(self): ) label.pack(ipadx=1) - def hide_tooltip(self): + def hide_tooltip(self) -> None: + """Hide and destroy the tooltip window.""" tw = self.tipwindow self.tipwindow = None if tw: From 3f4e91feedeae71b64f0157c8b02e63c86878464 Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Thu, 14 Aug 2025 14:35:27 -0400 Subject: [PATCH 19/46] Add user agent to Synapse client initialization --- synapsegui/models/synapse_client.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/synapsegui/models/synapse_client.py b/synapsegui/models/synapse_client.py index 8e5b80303..0d983d5a8 100644 --- a/synapsegui/models/synapse_client.py +++ b/synapsegui/models/synapse_client.py @@ -17,6 +17,7 @@ from synapseclient.core import utils from synapseclient.models import File +DESKTOP_CLIENT_VERSION = "0.1.0" def _safe_stderr_redirect(new_stderr: Any) -> tuple[Any, Any]: """ @@ -132,7 +133,7 @@ async def login_manual(self, username: str, token: str) -> Dict[str, Any]: Dictionary with 'success' boolean and either 'username' or 'error' key """ try: - self.client = synapseclient.Synapse(skip_checks=True, debug=False) + self.client = synapseclient.Synapse(skip_checks=True, debug=False, user_agent=[f"synapsedesktopclient/{DESKTOP_CLIENT_VERSION}"]) if username: self.client.login(email=username, authToken=token, silent=False) @@ -164,7 +165,7 @@ async def login_with_profile(self, profile_name: str) -> Dict[str, Any]: Dictionary with 'success' boolean and either 'username' or 'error' key """ try: - self.client = synapseclient.Synapse(skip_checks=True, debug=False) + self.client = synapseclient.Synapse(skip_checks=True, debug=False, user_agent=[f"synapsedesktopclient/{DESKTOP_CLIENT_VERSION}"]) if profile_name == "authentication (legacy)": self.client.login(silent=False) From 7defa0db2fda57311f215dd90604cc3e63df4605 Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Thu, 14 Aug 2025 18:36:35 +0000 Subject: [PATCH 20/46] pre-commit --- synapsegui/components/base_component.py | 10 +++--- .../components/bulk_download_component.py | 8 ++--- .../components/bulk_upload_component.py | 18 +++++------ synapsegui/components/download_component.py | 2 +- synapsegui/components/login_component.py | 2 +- synapsegui/components/output_component.py | 4 +-- synapsegui/components/upload_component.py | 2 +- synapsegui/controllers/app_controller.py | 7 ++-- synapsegui/models/config.py | 4 +-- synapsegui/models/synapse_client.py | 32 +++++++++++++------ synapsegui/utils/logging_integration.py | 8 ++--- synapsegui/utils/progress.py | 8 +++-- synapsegui/utils/tooltips.py | 2 +- 13 files changed, 61 insertions(+), 46 deletions(-) diff --git a/synapsegui/components/base_component.py b/synapsegui/components/base_component.py index 6016b0e59..b89834bb9 100644 --- a/synapsegui/components/base_component.py +++ b/synapsegui/components/base_component.py @@ -9,7 +9,7 @@ class BaseComponent: """ Base class for UI components. - + Provides common functionality for UI component management including frame creation, enabling/disabling, and cleanup operations. """ @@ -28,7 +28,7 @@ def __init__(self, parent: tk.Widget, **kwargs) -> None: def create_ui(self) -> None: """ Create the UI elements for this component. - + Raises: NotImplementedError: Must be implemented by subclasses """ @@ -37,10 +37,10 @@ def create_ui(self) -> None: def get_frame(self) -> tk.Widget: """ Get the main frame for this component. - + Returns: The main frame widget - + Raises: ValueError: If frame not initialized """ @@ -51,7 +51,7 @@ def get_frame(self) -> tk.Widget: def set_enabled(self, enabled: bool) -> None: """ Enable or disable the component and all its child widgets. - + Args: enabled: True to enable, False to disable """ diff --git a/synapsegui/components/bulk_download_component.py b/synapsegui/components/bulk_download_component.py index 75f9d2793..846862b12 100644 --- a/synapsegui/components/bulk_download_component.py +++ b/synapsegui/components/bulk_download_component.py @@ -274,10 +274,10 @@ def _insert_item_with_children( def _format_size(self, size: Any) -> str: """ Format file size for human-readable display. - + Args: size: File size in bytes - + Returns: Formatted size string with appropriate units """ @@ -335,7 +335,7 @@ def _collect_items_by_type( ) -> None: """ Recursively collect tree items of a specific type. - + Args: items: List of tree item IDs to check item_type: Type of items to collect ("File" or "Folder") @@ -353,7 +353,7 @@ def _collect_items_by_type( def _on_tree_selection_changed(self, event: tk.Event) -> None: """ Handle tree view selection changes. - + Args: event: Tkinter event object """ diff --git a/synapsegui/components/bulk_upload_component.py b/synapsegui/components/bulk_upload_component.py index b0f913d33..5a89be3a5 100644 --- a/synapsegui/components/bulk_upload_component.py +++ b/synapsegui/components/bulk_upload_component.py @@ -387,11 +387,11 @@ def _populate_tree_structured(self) -> None: def _is_subpath(self, child_path: str, parent_path: str) -> bool: """ Check if child_path is a subpath of parent_path. - + Args: child_path: Path to check if it's a child parent_path: Path to check if it's a parent - + Returns: True if child_path is within parent_path """ @@ -404,11 +404,11 @@ def _is_subpath(self, child_path: str, parent_path: str) -> bool: def _get_relative_path_parts(self, child_path: str, parent_path: str) -> List[str]: """ Get the relative path parts from parent to child. - + Args: child_path: Full path to the child parent_path: Full path to the parent - + Returns: List of path components from parent to child """ @@ -421,10 +421,10 @@ def _get_relative_path_parts(self, child_path: str, parent_path: str) -> List[st def _get_path_for_node(self, node_id: str) -> str: """ Get the file path for a tree node. - + Args: node_id: Tree node identifier - + Returns: File path associated with the node """ @@ -459,10 +459,10 @@ def _update_status(self) -> None: def _format_size(self, size: int) -> str: """ Format file size for human-readable display. - + Args: size: File size in bytes - + Returns: Formatted size string with appropriate units """ @@ -476,7 +476,7 @@ def _format_size(self, size: int) -> str: def _on_tree_selection_changed(self, event: tk.Event) -> None: """ Handle tree view selection changes. - + Args: event: Tkinter event object """ diff --git a/synapsegui/components/download_component.py b/synapsegui/components/download_component.py index da594cff0..0a2745923 100644 --- a/synapsegui/components/download_component.py +++ b/synapsegui/components/download_component.py @@ -10,7 +10,7 @@ class DownloadComponent: """ Download file UI component. - + Provides functionality for downloading individual files from Synapse, including optional version specification and custom download location. """ diff --git a/synapsegui/components/login_component.py b/synapsegui/components/login_component.py index 597650716..c56cd3047 100644 --- a/synapsegui/components/login_component.py +++ b/synapsegui/components/login_component.py @@ -12,7 +12,7 @@ class LoginComponent: """ Login section UI component. - + Provides functionality for user authentication through manual login (username/token) or configuration file profiles. """ diff --git a/synapsegui/components/output_component.py b/synapsegui/components/output_component.py index 6125a4622..4e195f9b3 100644 --- a/synapsegui/components/output_component.py +++ b/synapsegui/components/output_component.py @@ -9,8 +9,8 @@ class OutputComponent: """ Output and logging UI component. - - Provides a scrollable text area for displaying log messages, + + Provides a scrollable text area for displaying log messages, progress updates, and application status information. """ diff --git a/synapsegui/components/upload_component.py b/synapsegui/components/upload_component.py index 81a22446a..c5b8ce859 100644 --- a/synapsegui/components/upload_component.py +++ b/synapsegui/components/upload_component.py @@ -10,7 +10,7 @@ class UploadComponent: """ Upload file UI component. - + Provides functionality for uploading individual files to Synapse, supporting both new file creation and updating existing entities. """ diff --git a/synapsegui/controllers/app_controller.py b/synapsegui/controllers/app_controller.py index 24aa3de4e..e53b8fdd0 100644 --- a/synapsegui/controllers/app_controller.py +++ b/synapsegui/controllers/app_controller.py @@ -13,7 +13,7 @@ class ApplicationController: """ Main application controller that coordinates between UI components and business logic. - + Handles user interactions, manages the Synapse client, and orchestrates data flow between the UI components and backend services. """ @@ -43,7 +43,7 @@ def set_ui_components( Args: login_component: Login UI component - download_component: Download UI component + download_component: Download UI component upload_component: Upload UI component output_component: Output/logging UI component bulk_download_component: Bulk download UI component (optional) @@ -177,6 +177,7 @@ def handle_upload( def upload_worker() -> None: """Worker function to handle upload in background thread.""" + def progress_callback(progress: int, message: str) -> None: """Callback for upload progress updates.""" self.upload_component.update_progress(progress, message) @@ -401,7 +402,7 @@ def _on_bulk_upload_progress_update(self, progress: int, message: str) -> None: Handle progress updates from bulk upload operations. Args: - progress: Progress percentage (0-100) + progress: Progress percentage (0-100) message: Progress message to display """ if self.bulk_upload_component: diff --git a/synapsegui/models/config.py b/synapsegui/models/config.py index 4908e542b..d1dda73f2 100644 --- a/synapsegui/models/config.py +++ b/synapsegui/models/config.py @@ -10,7 +10,7 @@ class ConfigManager: """ Manages Synapse configuration profiles. - + Handles reading and parsing Synapse configuration files to extract available authentication profiles and their associated information. """ @@ -20,7 +20,7 @@ def __init__(self, config_path: str = None) -> None: Initialize the configuration manager. Args: - config_path: Path to the Synapse configuration file. + config_path: Path to the Synapse configuration file. Defaults to ~/.synapseConfig if not provided. """ self.config_path = config_path or os.path.expanduser("~/.synapseConfig") diff --git a/synapsegui/models/synapse_client.py b/synapsegui/models/synapse_client.py index 0d983d5a8..49ac9bbe6 100644 --- a/synapsegui/models/synapse_client.py +++ b/synapsegui/models/synapse_client.py @@ -19,6 +19,7 @@ DESKTOP_CLIENT_VERSION = "0.1.0" + def _safe_stderr_redirect(new_stderr: Any) -> tuple[Any, Any]: """ Safely redirect stderr, handling the case where original stderr might be None. @@ -55,7 +56,7 @@ def _safe_stderr_restore(original_stderr: Any, safe_original_stderr: Any) -> Non class TQDMProgressCapture: """ Capture TQDM progress updates for GUI display. - + Intercepts TQDM progress output and extracts progress information to provide callbacks for GUI progress bars and status updates. """ @@ -109,8 +110,8 @@ def flush(self) -> None: class SynapseClientManager: """ Handles all Synapse client operations. - - Manages authentication, file operations, and bulk operations for the + + Manages authentication, file operations, and bulk operations for the Synapse platform, providing a clean interface between the GUI and the underlying synapseclient library. """ @@ -133,7 +134,11 @@ async def login_manual(self, username: str, token: str) -> Dict[str, Any]: Dictionary with 'success' boolean and either 'username' or 'error' key """ try: - self.client = synapseclient.Synapse(skip_checks=True, debug=False, user_agent=[f"synapsedesktopclient/{DESKTOP_CLIENT_VERSION}"]) + self.client = synapseclient.Synapse( + skip_checks=True, + debug=False, + user_agent=[f"synapsedesktopclient/{DESKTOP_CLIENT_VERSION}"], + ) if username: self.client.login(email=username, authToken=token, silent=False) @@ -165,7 +170,11 @@ async def login_with_profile(self, profile_name: str) -> Dict[str, Any]: Dictionary with 'success' boolean and either 'username' or 'error' key """ try: - self.client = synapseclient.Synapse(skip_checks=True, debug=False, user_agent=[f"synapsedesktopclient/{DESKTOP_CLIENT_VERSION}"]) + self.client = synapseclient.Synapse( + skip_checks=True, + debug=False, + user_agent=[f"synapsedesktopclient/{DESKTOP_CLIENT_VERSION}"], + ) if profile_name == "authentication (legacy)": self.client.login(silent=False) @@ -378,10 +387,15 @@ async def enumerate_container( # Sync metadata only (download_file=False) await container.sync_from_synapse_async( - download_file=False, recursive=recursive, include_types=["file", "folder"], synapse_client=self.client + download_file=False, + recursive=recursive, + include_types=["file", "folder"], + synapse_client=self.client, ) - items = self._convert_to_bulk_items(container=container, recursive=recursive) + items = self._convert_to_bulk_items( + container=container, recursive=recursive + ) logger.info( f"Successfully enumerated {len(items)} items from container {container_id}" @@ -690,9 +704,7 @@ async def _create_folder_structure( for i, dir_path in enumerate(sorted_dirs): if i % 5 == 0: - progress = int( - (i / len(sorted_dirs)) * 50 - ) + progress = int((i / len(sorted_dirs)) * 50) progress_callback( progress, f"Creating folders ({i}/{len(sorted_dirs)})" ) diff --git a/synapsegui/utils/logging_integration.py b/synapsegui/utils/logging_integration.py index a8cd3306a..aa4669786 100644 --- a/synapsegui/utils/logging_integration.py +++ b/synapsegui/utils/logging_integration.py @@ -9,7 +9,7 @@ class GUILogHandler(logging.Handler): """ Custom logging handler that forwards log messages to the GUI. - + Captures Python logging messages and forwards them to a GUI callback function for display in the application interface. """ @@ -56,7 +56,7 @@ def emit(self, record: logging.LogRecord) -> None: class LoggingIntegration: """ Manages integration between Python logging and GUI logging. - + Handles setup and cleanup of logging handlers to forward Python log messages to the GUI output component. """ @@ -87,7 +87,7 @@ def setup_logging_integration(self, root: tk.Tk) -> None: synapse_loggers = [ "synapseclient_default", - "synapseclient_debug", + "synapseclient_debug", "synapseclient", "synapseclient.client", "synapseclient.core", @@ -106,7 +106,7 @@ def cleanup_logging_integration(self) -> None: "synapseclient_default", "synapseclient_debug", "synapseclient", - "synapseclient.client", + "synapseclient.client", "synapseclient.core", "synapseclient.models", ] diff --git a/synapsegui/utils/progress.py b/synapsegui/utils/progress.py index 3f281159d..0830c9af6 100644 --- a/synapsegui/utils/progress.py +++ b/synapsegui/utils/progress.py @@ -7,8 +7,8 @@ class ProgressManager: """ Manages progress updates for different operations. - - Provides a centralized way to register, update, and manage + + Provides a centralized way to register, update, and manage progress callbacks for various application operations. """ @@ -16,7 +16,9 @@ def __init__(self) -> None: """Initialize the progress manager with an empty callback registry.""" self.callbacks = {} - def register_callback(self, operation: str, callback: Callable[[int, str], None]) -> None: + def register_callback( + self, operation: str, callback: Callable[[int, str], None] + ) -> None: """ Register a progress callback for a specific operation. diff --git a/synapsegui/utils/tooltips.py b/synapsegui/utils/tooltips.py index e18642eee..e251b9ddc 100644 --- a/synapsegui/utils/tooltips.py +++ b/synapsegui/utils/tooltips.py @@ -7,7 +7,7 @@ class ToolTip: """ Create a tooltip for a given widget. - + Provides hover-based tooltips that appear when the mouse enters a widget and disappear when it leaves. """ From fd32666e5f03e408bd6e9dd500ecadff609a77e9 Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Thu, 14 Aug 2025 19:04:19 +0000 Subject: [PATCH 21/46] Re-enable all testing suite --- .github/workflows/build.yml | 186 ++++++++++++++++++------------------ 1 file changed, 92 insertions(+), 94 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 74fce7b66..21c53d2cc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -54,8 +54,7 @@ jobs: # if changing the below change the run-integration-tests versions and the check-deploy versions # Make sure that we are running the integration tests on the first and last versions of the matrix - # python: ['3.9', '3.10', '3.11', '3.12', '3.13'] - python: ['3.13'] + python: ['3.9', '3.10', '3.11', '3.12', '3.13'] runs-on: ${{ matrix.os }} @@ -103,96 +102,96 @@ jobs: pip install numpy fi - # - name: run-unit-tests - # shell: bash - # run: | - # pytest -sv --cov-append --cov=. --cov-report xml tests/unit - # - name: Check for Secret availability - # id: secret-check - # if: ${{ contains(fromJSON('["3.9"]'), matrix.python) || contains(fromJSON('["3.13"]'), matrix.python) }} - # # perform secret check & put boolean result as an output - # shell: bash - # run: | - # if [ -z "${{ secrets.encrypted_d17283647768_key }}" ] || [ -z "${{ secrets.encrypted_d17283647768_iv }}" ]; then - # echo "secrets_available=false" >> $GITHUB_OUTPUT; - # else - # echo "secrets_available=true" >> $GITHUB_OUTPUT; - # fi - - # if [ -z "${{ secrets.synapse_personal_access_token }}" ]; then - # echo "synapse_pat_available=false" >> $GITHUB_OUTPUT; - # else - # echo "synapse_pat_available=true" >> $GITHUB_OUTPUT; - # fi + - name: run-unit-tests + shell: bash + run: | + pytest -sv --cov-append --cov=. --cov-report xml tests/unit + - name: Check for Secret availability + id: secret-check + if: ${{ contains(fromJSON('["3.9"]'), matrix.python) || contains(fromJSON('["3.13"]'), matrix.python) }} + # perform secret check & put boolean result as an output + shell: bash + run: | + if [ -z "${{ secrets.encrypted_d17283647768_key }}" ] || [ -z "${{ secrets.encrypted_d17283647768_iv }}" ]; then + echo "secrets_available=false" >> $GITHUB_OUTPUT; + else + echo "secrets_available=true" >> $GITHUB_OUTPUT; + fi + + if [ -z "${{ secrets.synapse_personal_access_token }}" ]; then + echo "synapse_pat_available=false" >> $GITHUB_OUTPUT; + else + echo "synapse_pat_available=true" >> $GITHUB_OUTPUT; + fi # run integration tests iff the decryption keys for the test configuration are available. # they will not be available in pull requests from forks. # run integration tests on the oldest and newest supported versions of python. # we don't run on the entire matrix to avoid a 3xN set of concurrent tests against # the target server where N is the number of supported python versions. - # - name: run-integration-tests - # shell: bash - - # # keep versions consistent with the first and last from the strategy matrix - # if: ${{ (contains(fromJSON('["3.9"]'), matrix.python) || contains(fromJSON('["3.13"]'), matrix.python)) && steps.secret-check.outputs.secrets_available == 'true'}} - # run: | - # # decrypt the encrypted test synapse configuration - # openssl aes-256-cbc -K ${{ secrets.encrypted_d17283647768_key }} -iv ${{ secrets.encrypted_d17283647768_iv }} -in test.synapseConfig.enc -out test.synapseConfig -d - # mv test.synapseConfig ~/.synapseConfig - - # if [ "${{ startsWith(matrix.os, 'ubuntu') }}" == "true" ]; then - # # on linux only we can build and run a docker container to serve as an SFTP host for our SFTP tests. - # # Docker is not available on GH Action runners on Mac and Windows. - - # docker build -t sftp_tests - < tests/integration/synapseclient/core/upload/Dockerfile_sftp - # docker run -d sftp_tests:latest - - # # get the internal IP address of the just launched container - # export SFTP_HOST=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -q)) - - # printf "[sftp://$SFTP_HOST]\nusername: test\npassword: test\n" >> ~/.synapseConfig - - # # add to known_hosts so the ssh connections can be made without any prompting/errors - # mkdir -p ~/.ssh - # ssh-keyscan -H $SFTP_HOST >> ~/.ssh/known_hosts - # fi - - # # set env vars used in external bucket tests from secrets - # export EXTERNAL_S3_BUCKET_NAME="${{secrets.EXTERNAL_S3_BUCKET_NAME}}" - # export EXTERNAL_S3_BUCKET_AWS_ACCESS_KEY_ID="${{secrets.EXTERNAL_S3_BUCKET_AWS_ACCESS_KEY_ID}}" - # export EXTERNAL_S3_BUCKET_AWS_SECRET_ACCESS_KEY="${{secrets.EXTERNAL_S3_BUCKET_AWS_SECRET_ACCESS_KEY}}" - - # # Set env vars for OTEL - # export OTEL_EXPORTER_OTLP_ENDPOINT="${{ vars.OTEL_EXPORTER_OTLP_ENDPOINT }}" - # export OTEL_SERVICE_INSTANCE_ID="${{ vars.OTEL_SERVICE_INSTANCE_ID }}" - # export SYNAPSE_INTEGRATION_TEST_OTEL_ENABLED="${{ vars.SYNAPSE_INTEGRATION_TEST_OTEL_ENABLED }}" - # export OTEL_EXPORTER_OTLP_HEADERS="${{ secrets.OTEL_EXPORTER_OTLP_HEADERS }}" - - # # Setup ignore patterns based on Python version - # IGNORE_FLAGS="--ignore=tests/integration/synapseclient/test_command_line_client.py" - - # if [ "${{ matrix.python }}" == "3.9" ]; then - # # For min Python version, ignore async tests - # IGNORE_FLAGS="$IGNORE_FLAGS --ignore=tests/integration/synapseclient/models/async/" - # echo "Running integration tests for Min Python version (3.9) - ignoring async tests" - # elif [ "${{ matrix.python }}" == "3.13" ]; then - # # For max Python version, ignore synchronous tests - # IGNORE_FLAGS="$IGNORE_FLAGS --ignore=tests/integration/synapseclient/models/synchronous/" - # echo "Running integration tests for Max Python version (3.13) - ignoring synchronous tests" - # fi - - # # use loadscope to avoid issues running tests concurrently that share scoped fixtures - # pytest -sv --reruns 3 --cov-append --cov=. --cov-report xml tests/integration -n 8 $IGNORE_FLAGS --dist loadscope - - # # Execute the CLI tests in a non-dist way because they were causing some test instability when being run concurrently - # pytest -sv --reruns 3 --cov-append --cov=. --cov-report xml tests/integration/synapseclient/test_command_line_client.py - # - name: Upload coverage report - # id: upload_coverage_report - # uses: actions/upload-artifact@v4 - # if: ${{ contains(fromJSON('["3.13"]'), matrix.python) && contains(fromJSON('["ubuntu-22.04"]'), matrix.os)}} - # with: - # name: coverage-report - # path: coverage.xml + - name: run-integration-tests + shell: bash + + # keep versions consistent with the first and last from the strategy matrix + if: ${{ (contains(fromJSON('["3.9"]'), matrix.python) || contains(fromJSON('["3.13"]'), matrix.python)) && steps.secret-check.outputs.secrets_available == 'true'}} + run: | + # decrypt the encrypted test synapse configuration + openssl aes-256-cbc -K ${{ secrets.encrypted_d17283647768_key }} -iv ${{ secrets.encrypted_d17283647768_iv }} -in test.synapseConfig.enc -out test.synapseConfig -d + mv test.synapseConfig ~/.synapseConfig + + if [ "${{ startsWith(matrix.os, 'ubuntu') }}" == "true" ]; then + # on linux only we can build and run a docker container to serve as an SFTP host for our SFTP tests. + # Docker is not available on GH Action runners on Mac and Windows. + + docker build -t sftp_tests - < tests/integration/synapseclient/core/upload/Dockerfile_sftp + docker run -d sftp_tests:latest + + # get the internal IP address of the just launched container + export SFTP_HOST=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -q)) + + printf "[sftp://$SFTP_HOST]\nusername: test\npassword: test\n" >> ~/.synapseConfig + + # add to known_hosts so the ssh connections can be made without any prompting/errors + mkdir -p ~/.ssh + ssh-keyscan -H $SFTP_HOST >> ~/.ssh/known_hosts + fi + + # set env vars used in external bucket tests from secrets + export EXTERNAL_S3_BUCKET_NAME="${{secrets.EXTERNAL_S3_BUCKET_NAME}}" + export EXTERNAL_S3_BUCKET_AWS_ACCESS_KEY_ID="${{secrets.EXTERNAL_S3_BUCKET_AWS_ACCESS_KEY_ID}}" + export EXTERNAL_S3_BUCKET_AWS_SECRET_ACCESS_KEY="${{secrets.EXTERNAL_S3_BUCKET_AWS_SECRET_ACCESS_KEY}}" + + # Set env vars for OTEL + export OTEL_EXPORTER_OTLP_ENDPOINT="${{ vars.OTEL_EXPORTER_OTLP_ENDPOINT }}" + export OTEL_SERVICE_INSTANCE_ID="${{ vars.OTEL_SERVICE_INSTANCE_ID }}" + export SYNAPSE_INTEGRATION_TEST_OTEL_ENABLED="${{ vars.SYNAPSE_INTEGRATION_TEST_OTEL_ENABLED }}" + export OTEL_EXPORTER_OTLP_HEADERS="${{ secrets.OTEL_EXPORTER_OTLP_HEADERS }}" + + # Setup ignore patterns based on Python version + IGNORE_FLAGS="--ignore=tests/integration/synapseclient/test_command_line_client.py" + + if [ "${{ matrix.python }}" == "3.9" ]; then + # For min Python version, ignore async tests + IGNORE_FLAGS="$IGNORE_FLAGS --ignore=tests/integration/synapseclient/models/async/" + echo "Running integration tests for Min Python version (3.9) - ignoring async tests" + elif [ "${{ matrix.python }}" == "3.13" ]; then + # For max Python version, ignore synchronous tests + IGNORE_FLAGS="$IGNORE_FLAGS --ignore=tests/integration/synapseclient/models/synchronous/" + echo "Running integration tests for Max Python version (3.13) - ignoring synchronous tests" + fi + + # use loadscope to avoid issues running tests concurrently that share scoped fixtures + pytest -sv --reruns 3 --cov-append --cov=. --cov-report xml tests/integration -n 8 $IGNORE_FLAGS --dist loadscope + + # Execute the CLI tests in a non-dist way because they were causing some test instability when being run concurrently + pytest -sv --reruns 3 --cov-append --cov=. --cov-report xml tests/integration/synapseclient/test_command_line_client.py + - name: Upload coverage report + id: upload_coverage_report + uses: actions/upload-artifact@v4 + if: ${{ contains(fromJSON('["3.13"]'), matrix.python) && contains(fromJSON('["ubuntu-22.04"]'), matrix.os)}} + with: + name: coverage-report + path: coverage.xml sonarcloud: needs: [test] @@ -347,7 +346,7 @@ jobs: # build standalone desktop client artifacts for Windows and macOS on release build-desktop-clients: needs: [test, pre-commit] - # if: github.event_name == 'release' + if: github.event_name == 'release' strategy: matrix: @@ -449,13 +448,12 @@ jobs: name: ${{ env.ARTIFACT_NAME }} path: ${{ env.ARTIFACT_PATH }} - # Commented out for testing - only upload to action run, not GitHub release - # - name: Upload to GitHub Release - # uses: softprops/action-gh-release@v1 - # with: - # files: ${{ env.ARTIFACT_PATH }} - # env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Upload to GitHub Release + uses: softprops/action-gh-release@v1 + with: + files: ${{ env.ARTIFACT_PATH }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # re-download the built package to the appropriate pypi server. From a8e2f7f99cc9d7b97981a19d2dfb663f9e63242d Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Fri, 15 Aug 2025 18:13:23 +0000 Subject: [PATCH 22/46] Refactor UI update calls to use a minimal delay for thread-safe operations --- synapsegui/README.md | 6 +- synapsegui/controllers/app_controller.py | 238 ++++++++++++++--------- synapsegui/synapse_gui.py | 21 +- synapsegui/utils/logging_integration.py | 2 +- 4 files changed, 166 insertions(+), 101 deletions(-) diff --git a/synapsegui/README.md b/synapsegui/README.md index bdef59335..16701334c 100644 --- a/synapsegui/README.md +++ b/synapsegui/README.md @@ -144,9 +144,9 @@ def handle_long_operation(self): result = self.model.long_operation() # Update UI on main thread - self.root.after(0, lambda: self.update_ui(result)) + self.root.after(0.001, lambda: self.update_ui(result)) except Exception as e: - self.root.after(0, lambda: self.show_error(str(e))) + self.root.after(0.001, lambda: self.show_error(str(e))) threading.Thread(target=worker, daemon=True).start() @@ -172,7 +172,7 @@ def bad_operation(self): def good_operation(self): def worker(): time.sleep(10) # Runs in background - self.root.after(0, self.update_ui) # Update UI on main thread + self.root.after(0.001, self.update_ui) # Update UI on main thread threading.Thread(target=worker, daemon=True).start() ``` diff --git a/synapsegui/controllers/app_controller.py b/synapsegui/controllers/app_controller.py index e53b8fdd0..6028e0acb 100644 --- a/synapsegui/controllers/app_controller.py +++ b/synapsegui/controllers/app_controller.py @@ -28,6 +28,9 @@ def __init__(self) -> None: self.download_component = None self.upload_component = None self.output_component = None + self.bulk_download_component = None + self.bulk_upload_component = None + self.root = None def set_ui_components( self, @@ -35,6 +38,7 @@ def set_ui_components( download_component, upload_component, output_component, + root, bulk_download_component=None, bulk_upload_component=None, ) -> None: @@ -46,15 +50,20 @@ def set_ui_components( download_component: Download UI component upload_component: Upload UI component output_component: Output/logging UI component + root: Main tkinter window for thread-safe GUI updates (required) bulk_download_component: Bulk download UI component (optional) bulk_upload_component: Bulk upload UI component (optional) """ + if root is None: + raise ValueError("Root window is required for thread-safe GUI operations") + self.login_component = login_component self.download_component = download_component self.upload_component = upload_component self.output_component = output_component self.bulk_download_component = bulk_download_component self.bulk_upload_component = bulk_upload_component + self.root = root def handle_login(self, mode: str, credentials: Dict[str, Any]) -> None: """ @@ -80,8 +89,9 @@ def login_worker() -> None: ) ) - # Update UI based on result - if result["success"]: + # Update UI based on result - marshal to main thread + def update_ui_on_success(): + """Update UI components on successful login.""" self.login_component.update_login_state( True, result.get("username", "") ) @@ -89,13 +99,20 @@ def login_worker() -> None: self.output_component.log_message( f"Login successful! Logged in as: {result.get('username', '')}" ) - else: + self.login_component.set_login_button_state(True) + + def update_ui_on_failure(): + """Update UI components on failed login.""" self.login_component.update_login_state(False, error=result["error"]) self.output_component.log_message( f"Login failed: {result['error']}", error=True ) + self.login_component.set_login_button_state(True) - self.login_component.set_login_button_state(True) + if result["success"]: + self.root.after(0.001, update_ui_on_success) + else: + self.root.after(0.001, update_ui_on_failure) self.login_component.set_login_button_state(False) threading.Thread(target=login_worker, daemon=True).start() @@ -127,18 +144,29 @@ def download_worker() -> None: try: version_num = int(version) except ValueError: - self.output_component.log_message( - "Version must be a number", error=True + self.root.after( + 0.001, + lambda: self.output_component.log_message( + "Version must be a number", error=True + ), ) return def progress_callback(progress: int, message: str) -> None: """Callback for download progress updates.""" - self.download_component.update_progress(progress, message) + + def update_progress(): + self.download_component.update_progress(progress, message) + + self.root.after(0.001, update_progress) def detail_callback(detail_message: str) -> None: """Callback for detailed download messages.""" - self.output_component.log_message(detail_message) + + def log_message(): + self.output_component.log_message(detail_message) + + self.root.after(0.001, log_message) result = asyncio.run( self.synapse_client.download_file( @@ -150,15 +178,23 @@ def detail_callback(detail_message: str) -> None: ) ) - if result["success"]: + def handle_success(): + """Handle successful download result.""" self.output_component.log_message(f"Downloaded: {result['path']}") self.download_component.show_success(f"Downloaded: {result['path']}") - else: + + def handle_error(): + """Handle failed download result.""" self.output_component.log_message( f"Download failed: {result['error']}", error=True ) self.download_component.show_error(result["error"]) + if result["success"]: + self.root.after(0.001, handle_success) + else: + self.root.after(0.001, handle_error) + self.download_component.start_operation() threading.Thread(target=download_worker, daemon=True).start() @@ -180,11 +216,19 @@ def upload_worker() -> None: def progress_callback(progress: int, message: str) -> None: """Callback for upload progress updates.""" - self.upload_component.update_progress(progress, message) + + def update_progress(): + self.upload_component.update_progress(progress, message) + + self.root.after(0.001, update_progress) def detail_callback(detail_message: str) -> None: """Callback for detailed upload messages.""" - self.output_component.log_message(detail_message) + + def log_message(): + self.output_component.log_message(detail_message) + + self.root.after(0.001, log_message) result = asyncio.run( self.synapse_client.upload_file( @@ -197,18 +241,26 @@ def detail_callback(detail_message: str) -> None: ) ) - if result["success"]: + def handle_success(): + """Handle successful upload result.""" message = ( f"Created/Updated entity: {result['entity_id']} - {result['name']}" ) self.output_component.log_message(message) self.upload_component.show_success(message) - else: + + def handle_error(): + """Handle failed upload result.""" self.output_component.log_message( f"Upload failed: {result['error']}", error=True ) self.upload_component.show_error(result["error"]) + if result["success"]: + self.root.after(0.001, handle_success) + else: + self.root.after(0.001, handle_error) + self.upload_component.start_operation() threading.Thread(target=upload_worker, daemon=True).start() @@ -228,21 +280,22 @@ def enumerate_worker() -> None: ) if self.bulk_download_component: - if result["success"]: - self.bulk_download_component.parent.after( - 0, - lambda: self.bulk_download_component.handle_enumeration_result( - result["items"] - ), + + def handle_success(): + self.bulk_download_component.handle_enumeration_result( + result["items"] ) - else: - self.bulk_download_component.parent.after( - 0, - lambda: self.bulk_download_component.handle_enumeration_result( - [], result["error"] - ), + + def handle_error(): + self.bulk_download_component.handle_enumeration_result( + [], result["error"] ) + if result["success"]: + self.root.after(0.001, handle_success) + else: + self.root.after(0.001, handle_error) + threading.Thread(target=enumerate_worker, daemon=True).start() def _enable_operations(self, enabled: bool) -> None: @@ -277,11 +330,9 @@ def handle_bulk_download( def bulk_download_worker() -> None: """Worker function to handle bulk download in background thread.""" - # Start the operation + # Start the operation - marshal to main thread if self.bulk_download_component: - self.output_component.get_frame().after( - 0, lambda: self.bulk_download_component.start_bulk_operation() - ) + self.root.after(0, self.bulk_download_component.start_bulk_operation) result = asyncio.run( self.synapse_client.bulk_download( @@ -294,27 +345,29 @@ def bulk_download_worker() -> None: ) if result["success"]: - self.output_component.log_message( - f"Bulk download complete: {result['summary']}" - ) - if self.bulk_download_component: - self.output_component.get_frame().after( - 0, - lambda: self.bulk_download_component.complete_bulk_operation( - True, result["summary"] - ), + + def handle_success(): + self.output_component.log_message( + f"Bulk download complete: {result['summary']}" ) + if self.bulk_download_component: + self.bulk_download_component.complete_bulk_operation( + True, result["summary"] + ) + + self.root.after(0.001, handle_success) else: - self.output_component.log_message( - f"Bulk download failed: {result['error']}", error=True - ) - if self.bulk_download_component: - self.output_component.get_frame().after( - 0, - lambda: self.bulk_download_component.complete_bulk_operation( - False, result["error"] - ), + + def handle_error(): + self.output_component.log_message( + f"Bulk download failed: {result['error']}", error=True ) + if self.bulk_download_component: + self.bulk_download_component.complete_bulk_operation( + False, result["error"] + ) + + self.root.after(0.001, handle_error) self.output_component.log_message( f"Starting bulk download of {len(items)} items..." @@ -335,11 +388,9 @@ def handle_bulk_upload( def bulk_upload_worker() -> None: """Worker function to handle bulk upload in background thread.""" - # Start the operation + # Start the operation - marshal to main thread if self.bulk_upload_component: - self.output_component.get_frame().after( - 0, lambda: self.bulk_upload_component.start_bulk_operation() - ) + self.root.after(0, self.bulk_upload_component.start_bulk_operation) result = asyncio.run( self.synapse_client.bulk_upload( @@ -352,27 +403,29 @@ def bulk_upload_worker() -> None: ) if result["success"]: - self.output_component.log_message( - f"Bulk upload complete: {result['summary']}" - ) - if self.bulk_upload_component: - self.output_component.get_frame().after( - 0, - lambda: self.bulk_upload_component.complete_bulk_operation( - True, result["summary"] - ), + + def handle_success(): + self.output_component.log_message( + f"Bulk upload complete: {result['summary']}" ) + if self.bulk_upload_component: + self.bulk_upload_component.complete_bulk_operation( + True, result["summary"] + ) + + self.root.after(0.001, handle_success) else: - self.output_component.log_message( - f"Bulk upload failed: {result['error']}", error=True - ) - if self.bulk_upload_component: - self.output_component.get_frame().after( - 0, - lambda: self.bulk_upload_component.complete_bulk_operation( - False, result["error"] - ), + + def handle_error(): + self.output_component.log_message( + f"Bulk upload failed: {result['error']}", error=True ) + if self.bulk_upload_component: + self.bulk_upload_component.complete_bulk_operation( + False, result["error"] + ) + + self.root.after(0.001, handle_error) self.output_component.log_message( f"Starting bulk upload of {len(items)} items..." @@ -387,15 +440,16 @@ def _on_bulk_download_progress_update(self, progress: int, message: str) -> None progress: Progress percentage (0-100) message: Progress message to display """ - if self.bulk_download_component: - self.output_component.get_frame().after( - 0, - lambda: self.bulk_download_component.update_progress(progress, message), - ) - if self.output_component: - self.output_component.log_message( - f"Download Progress: {progress}% - {message}" - ) + + def update_ui(): + if self.bulk_download_component: + self.bulk_download_component.update_progress(progress, message) + if self.output_component: + self.output_component.log_message( + f"Download Progress: {progress}% - {message}" + ) + + self.root.after(0.001, update_ui) def _on_bulk_upload_progress_update(self, progress: int, message: str) -> None: """ @@ -405,14 +459,16 @@ def _on_bulk_upload_progress_update(self, progress: int, message: str) -> None: progress: Progress percentage (0-100) message: Progress message to display """ - if self.bulk_upload_component: - self.output_component.get_frame().after( - 0, lambda: self.bulk_upload_component.update_progress(progress, message) - ) - if self.output_component: - self.output_component.log_message( - f"Upload Progress: {progress}% - {message}" - ) + + def update_ui(): + if self.bulk_upload_component: + self.bulk_upload_component.update_progress(progress, message) + if self.output_component: + self.output_component.log_message( + f"Upload Progress: {progress}% - {message}" + ) + + self.root.after(0.001, update_ui) def _on_progress_update(self, progress: int, message: str) -> None: """ @@ -432,5 +488,9 @@ def _on_detail_message(self, message: str) -> None: Args: message: Detailed message to log """ - if self.output_component: - self.output_component.log_message(message) + + def update_ui(): + if self.output_component: + self.output_component.log_message(message) + + self.root.after(0.001, update_ui) diff --git a/synapsegui/synapse_gui.py b/synapsegui/synapse_gui.py index 78f22e8f4..7ca8231d0 100644 --- a/synapsegui/synapse_gui.py +++ b/synapsegui/synapse_gui.py @@ -36,12 +36,13 @@ def __init__(self, root: tk.Tk) -> None: self.create_widgets() self.controller.set_ui_components( - self.login_component, - self.download_component, - self.upload_component, - self.output_component, - self.bulk_download_component, - self.bulk_upload_component, + login_component=self.login_component, + download_component=self.download_component, + upload_component=self.upload_component, + output_component=self.output_component, + root=self.root, + bulk_download_component=self.bulk_download_component, + bulk_upload_component=self.bulk_upload_component, ) self.logging_integration = LoggingIntegration(self.output_component.log_message) @@ -120,8 +121,12 @@ def _on_progress_update(self, message: str, progress: int) -> None: message: Progress message to display progress: Progress percentage (0-100) """ - if self.output_component: - self.output_component.log_message(f"Progress: {progress}% - {message}") + + def update_ui(): + if self.output_component: + self.output_component.log_message(f"Progress: {progress}% - {message}") + + self.root.after(0.001, update_ui) def cleanup(self) -> None: """Clean up resources when closing the application.""" diff --git a/synapsegui/utils/logging_integration.py b/synapsegui/utils/logging_integration.py index aa4669786..79f24a3f9 100644 --- a/synapsegui/utils/logging_integration.py +++ b/synapsegui/utils/logging_integration.py @@ -46,7 +46,7 @@ def emit(self, record: logging.LogRecord) -> None: is_error = record.levelno >= logging.ERROR if self.root: - self.root.after(0, lambda: self.log_callback(message, is_error)) + self.root.after(0.001, lambda: self.log_callback(message, is_error)) else: self.log_callback(message, is_error) except Exception: From d4232ac449ddf1afa609fb0955252135584900d9 Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Fri, 15 Aug 2025 14:19:57 -0400 Subject: [PATCH 23/46] Update UI update calls to use zero delay for improved responsiveness --- synapsegui/README.md | 6 +- synapsegui/controllers/app_controller.py | 38 ++++++------- synapsegui/synapse_gui.py | 72 +++++++++++++++++++++--- synapsegui/utils/logging_integration.py | 2 +- 4 files changed, 88 insertions(+), 30 deletions(-) diff --git a/synapsegui/README.md b/synapsegui/README.md index 16701334c..bdef59335 100644 --- a/synapsegui/README.md +++ b/synapsegui/README.md @@ -144,9 +144,9 @@ def handle_long_operation(self): result = self.model.long_operation() # Update UI on main thread - self.root.after(0.001, lambda: self.update_ui(result)) + self.root.after(0, lambda: self.update_ui(result)) except Exception as e: - self.root.after(0.001, lambda: self.show_error(str(e))) + self.root.after(0, lambda: self.show_error(str(e))) threading.Thread(target=worker, daemon=True).start() @@ -172,7 +172,7 @@ def bad_operation(self): def good_operation(self): def worker(): time.sleep(10) # Runs in background - self.root.after(0.001, self.update_ui) # Update UI on main thread + self.root.after(0, self.update_ui) # Update UI on main thread threading.Thread(target=worker, daemon=True).start() ``` diff --git a/synapsegui/controllers/app_controller.py b/synapsegui/controllers/app_controller.py index 6028e0acb..ea7fa2771 100644 --- a/synapsegui/controllers/app_controller.py +++ b/synapsegui/controllers/app_controller.py @@ -110,9 +110,9 @@ def update_ui_on_failure(): self.login_component.set_login_button_state(True) if result["success"]: - self.root.after(0.001, update_ui_on_success) + self.root.after(0, update_ui_on_success) else: - self.root.after(0.001, update_ui_on_failure) + self.root.after(0, update_ui_on_failure) self.login_component.set_login_button_state(False) threading.Thread(target=login_worker, daemon=True).start() @@ -158,7 +158,7 @@ def progress_callback(progress: int, message: str) -> None: def update_progress(): self.download_component.update_progress(progress, message) - self.root.after(0.001, update_progress) + self.root.after(0, update_progress) def detail_callback(detail_message: str) -> None: """Callback for detailed download messages.""" @@ -166,7 +166,7 @@ def detail_callback(detail_message: str) -> None: def log_message(): self.output_component.log_message(detail_message) - self.root.after(0.001, log_message) + self.root.after(0, log_message) result = asyncio.run( self.synapse_client.download_file( @@ -191,9 +191,9 @@ def handle_error(): self.download_component.show_error(result["error"]) if result["success"]: - self.root.after(0.001, handle_success) + self.root.after(0, handle_success) else: - self.root.after(0.001, handle_error) + self.root.after(0, handle_error) self.download_component.start_operation() threading.Thread(target=download_worker, daemon=True).start() @@ -220,7 +220,7 @@ def progress_callback(progress: int, message: str) -> None: def update_progress(): self.upload_component.update_progress(progress, message) - self.root.after(0.001, update_progress) + self.root.after(0, update_progress) def detail_callback(detail_message: str) -> None: """Callback for detailed upload messages.""" @@ -228,7 +228,7 @@ def detail_callback(detail_message: str) -> None: def log_message(): self.output_component.log_message(detail_message) - self.root.after(0.001, log_message) + self.root.after(0, log_message) result = asyncio.run( self.synapse_client.upload_file( @@ -257,9 +257,9 @@ def handle_error(): self.upload_component.show_error(result["error"]) if result["success"]: - self.root.after(0.001, handle_success) + self.root.after(0, handle_success) else: - self.root.after(0.001, handle_error) + self.root.after(0, handle_error) self.upload_component.start_operation() threading.Thread(target=upload_worker, daemon=True).start() @@ -292,9 +292,9 @@ def handle_error(): ) if result["success"]: - self.root.after(0.001, handle_success) + self.root.after(0, handle_success) else: - self.root.after(0.001, handle_error) + self.root.after(0, handle_error) threading.Thread(target=enumerate_worker, daemon=True).start() @@ -355,7 +355,7 @@ def handle_success(): True, result["summary"] ) - self.root.after(0.001, handle_success) + self.root.after(0, handle_success) else: def handle_error(): @@ -367,7 +367,7 @@ def handle_error(): False, result["error"] ) - self.root.after(0.001, handle_error) + self.root.after(0, handle_error) self.output_component.log_message( f"Starting bulk download of {len(items)} items..." @@ -413,7 +413,7 @@ def handle_success(): True, result["summary"] ) - self.root.after(0.001, handle_success) + self.root.after(0, handle_success) else: def handle_error(): @@ -425,7 +425,7 @@ def handle_error(): False, result["error"] ) - self.root.after(0.001, handle_error) + self.root.after(0, handle_error) self.output_component.log_message( f"Starting bulk upload of {len(items)} items..." @@ -449,7 +449,7 @@ def update_ui(): f"Download Progress: {progress}% - {message}" ) - self.root.after(0.001, update_ui) + self.root.after(0, update_ui) def _on_bulk_upload_progress_update(self, progress: int, message: str) -> None: """ @@ -468,7 +468,7 @@ def update_ui(): f"Upload Progress: {progress}% - {message}" ) - self.root.after(0.001, update_ui) + self.root.after(0, update_ui) def _on_progress_update(self, progress: int, message: str) -> None: """ @@ -493,4 +493,4 @@ def update_ui(): if self.output_component: self.output_component.log_message(message) - self.root.after(0.001, update_ui) + self.root.after(0, update_ui) diff --git a/synapsegui/synapse_gui.py b/synapsegui/synapse_gui.py index 7ca8231d0..89b8ef357 100644 --- a/synapsegui/synapse_gui.py +++ b/synapsegui/synapse_gui.py @@ -30,7 +30,22 @@ def __init__(self, root: tk.Tk) -> None: """ self.root = root self.root.title("Synapse Desktop Client") - self.root.geometry("800x700") + + # Make window resizable + self.root.resizable(True, True) + + # Set minimum size to ensure usability + self.root.minsize(600, 500) + + # Set initial geometry, but make it responsive to screen size + screen_width = self.root.winfo_screenwidth() + screen_height = self.root.winfo_screenheight() + + # Use 80% of screen size or default values, whichever is smaller + window_width = min(800, int(screen_width * 0.8)) + window_height = min(700, int(screen_height * 0.8)) + + self.root.geometry(f"{window_width}x{window_height}") self.controller = ApplicationController() self.create_widgets() @@ -50,14 +65,47 @@ def __init__(self, root: tk.Tk) -> None: def create_widgets(self) -> None: """Create and configure the main window layout and components.""" - main_frame = ttk.Frame(self.root, padding="10") + # Create a canvas with scrollbar for scrollable content + canvas = tk.Canvas(self.root) + scrollbar = ttk.Scrollbar(self.root, orient="vertical", command=canvas.yview) + self.scrollable_frame = ttk.Frame(canvas) + + self.scrollable_frame.bind( + "", + lambda e: canvas.configure(scrollregion=canvas.bbox("all")) + ) + + canvas.create_window((0, 0), window=self.scrollable_frame, anchor="nw") + canvas.configure(yscrollcommand=scrollbar.set) + + canvas.pack(side="left", fill="both", expand=True) + scrollbar.pack(side="right", fill="y") + + # Main content frame inside the scrollable area + main_frame = ttk.Frame(self.scrollable_frame, padding="10") main_frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S)) - self.root.columnconfigure(0, weight=1) - self.root.rowconfigure(0, weight=1) + self.scrollable_frame.columnconfigure(0, weight=1) + self.scrollable_frame.rowconfigure(0, weight=1) main_frame.columnconfigure(0, weight=1) main_frame.rowconfigure(3, weight=1) + # Enable mouse wheel scrolling + def _on_mousewheel(event): + canvas.yview_scroll(int(-1*(event.delta/120)), "units") + + canvas.bind("", _on_mousewheel) + + # Bind canvas to mouse wheel events when mouse enters + def _bind_to_mousewheel(event): + canvas.bind_all("", _on_mousewheel) + + def _unbind_from_mousewheel(event): + canvas.unbind_all("") + + canvas.bind('', _bind_to_mousewheel) + canvas.bind('', _unbind_from_mousewheel) + title_label = ttk.Label( main_frame, text="Synapse Desktop Client", font=("Arial", 16, "bold") ) @@ -126,7 +174,7 @@ def update_ui(): if self.output_component: self.output_component.log_message(f"Progress: {progress}% - {message}") - self.root.after(0.001, update_ui) + self.root.after(0, update_ui) def cleanup(self) -> None: """Clean up resources when closing the application.""" @@ -146,11 +194,21 @@ def on_closing() -> None: root.protocol("WM_DELETE_WINDOW", on_closing) + # Center the window on screen root.update_idletasks() width = root.winfo_width() height = root.winfo_height() - x = (root.winfo_screenwidth() // 2) - (width // 2) - y = (root.winfo_screenheight() // 2) - (height // 2) + screen_width = root.winfo_screenwidth() + screen_height = root.winfo_screenheight() + x = max(0, (screen_width // 2) - (width // 2)) + y = max(0, (screen_height // 2) - (height // 2)) + + # Ensure window fits on screen + if x + width > screen_width: + x = screen_width - width + if y + height > screen_height: + y = screen_height - height + root.geometry(f"{width}x{height}+{x}+{y}") try: diff --git a/synapsegui/utils/logging_integration.py b/synapsegui/utils/logging_integration.py index 79f24a3f9..aa4669786 100644 --- a/synapsegui/utils/logging_integration.py +++ b/synapsegui/utils/logging_integration.py @@ -46,7 +46,7 @@ def emit(self, record: logging.LogRecord) -> None: is_error = record.levelno >= logging.ERROR if self.root: - self.root.after(0.001, lambda: self.log_callback(message, is_error)) + self.root.after(0, lambda: self.log_callback(message, is_error)) else: self.log_callback(message, is_error) except Exception: From 04cfbe3b4bb63d248b20d62bfc6543ded85a5f52 Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Fri, 15 Aug 2025 18:20:28 +0000 Subject: [PATCH 24/46] pre-commit --- synapsegui/synapse_gui.py | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/synapsegui/synapse_gui.py b/synapsegui/synapse_gui.py index 89b8ef357..f8f4693c3 100644 --- a/synapsegui/synapse_gui.py +++ b/synapsegui/synapse_gui.py @@ -30,21 +30,21 @@ def __init__(self, root: tk.Tk) -> None: """ self.root = root self.root.title("Synapse Desktop Client") - + # Make window resizable self.root.resizable(True, True) - + # Set minimum size to ensure usability self.root.minsize(600, 500) - + # Set initial geometry, but make it responsive to screen size screen_width = self.root.winfo_screenwidth() screen_height = self.root.winfo_screenheight() - + # Use 80% of screen size or default values, whichever is smaller window_width = min(800, int(screen_width * 0.8)) window_height = min(700, int(screen_height * 0.8)) - + self.root.geometry(f"{window_width}x{window_height}") self.controller = ApplicationController() @@ -71,8 +71,7 @@ def create_widgets(self) -> None: self.scrollable_frame = ttk.Frame(canvas) self.scrollable_frame.bind( - "", - lambda e: canvas.configure(scrollregion=canvas.bbox("all")) + "", lambda e: canvas.configure(scrollregion=canvas.bbox("all")) ) canvas.create_window((0, 0), window=self.scrollable_frame, anchor="nw") @@ -92,19 +91,19 @@ def create_widgets(self) -> None: # Enable mouse wheel scrolling def _on_mousewheel(event): - canvas.yview_scroll(int(-1*(event.delta/120)), "units") - + canvas.yview_scroll(int(-1 * (event.delta / 120)), "units") + canvas.bind("", _on_mousewheel) - + # Bind canvas to mouse wheel events when mouse enters def _bind_to_mousewheel(event): canvas.bind_all("", _on_mousewheel) - + def _unbind_from_mousewheel(event): canvas.unbind_all("") - - canvas.bind('', _bind_to_mousewheel) - canvas.bind('', _unbind_from_mousewheel) + + canvas.bind("", _bind_to_mousewheel) + canvas.bind("", _unbind_from_mousewheel) title_label = ttk.Label( main_frame, text="Synapse Desktop Client", font=("Arial", 16, "bold") @@ -202,13 +201,13 @@ def on_closing() -> None: screen_height = root.winfo_screenheight() x = max(0, (screen_width // 2) - (width // 2)) y = max(0, (screen_height // 2) - (height // 2)) - + # Ensure window fits on screen if x + width > screen_width: x = screen_width - width if y + height > screen_height: y = screen_height - height - + root.geometry(f"{width}x{height}+{x}+{y}") try: From a6a969362e38744dabe7117d89b2c372dfaf0cdc Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Thu, 21 Aug 2025 18:27:19 -0400 Subject: [PATCH 25/46] Migrate the UI and application to use ElectronJS --- .github/workflows/build.yml | 345 +- .gitignore | 2 + build_electron_app.bat | 163 + build_electron_app.sh | 186 + setup.cfg | 9 + synapse-electron/.electron-builder.json | 61 + synapse-electron/assets/icon.icns | Bin 0 -> 997902 bytes synapse-electron/assets/icon.ico | Bin 0 -> 91558 bytes synapse-electron/assets/icon.png | Bin 0 -> 3863 bytes synapse-electron/backend/hook-uvicorn.py | 37 + synapse-electron/backend/requirements.txt | 5 + synapse-electron/backend/server.py | 1069 +++++ synapse-electron/main.js | 483 ++ synapse-electron/package-lock.json | 5175 +++++++++++++++++++++ synapse-electron/package.json | 97 + synapse-electron/preload.js | 39 + synapse-electron/src/app.js | 2037 ++++++++ synapse-electron/src/index.html | 404 ++ synapse-electron/src/styles.css | 1309 ++++++ synapse-electron/start.bat | 65 + synapse-electron/start.sh | 101 + synapsegui/models/synapse_client.py | 204 +- 22 files changed, 11587 insertions(+), 204 deletions(-) create mode 100644 build_electron_app.bat create mode 100644 build_electron_app.sh create mode 100644 synapse-electron/.electron-builder.json create mode 100644 synapse-electron/assets/icon.icns create mode 100644 synapse-electron/assets/icon.ico create mode 100644 synapse-electron/assets/icon.png create mode 100644 synapse-electron/backend/hook-uvicorn.py create mode 100644 synapse-electron/backend/requirements.txt create mode 100644 synapse-electron/backend/server.py create mode 100644 synapse-electron/main.js create mode 100644 synapse-electron/package-lock.json create mode 100644 synapse-electron/package.json create mode 100644 synapse-electron/preload.js create mode 100644 synapse-electron/src/app.js create mode 100644 synapse-electron/src/index.html create mode 100644 synapse-electron/src/styles.css create mode 100644 synapse-electron/start.bat create mode 100644 synapse-electron/start.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 21c53d2cc..4c18b8143 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -61,137 +61,137 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python }} - - - name: get-dependencies-location - shell: bash - run: | - SITE_PACKAGES_LOCATION=$(python -c "from sysconfig import get_path; print(get_path('purelib'))") - SITE_BIN_DIR=$(python3 -c "import os; import platform; import sysconfig; pre = sysconfig.get_config_var('prefix'); bindir = os.path.join(pre, 'Scripts' if platform.system() == 'Windows' else 'bin'); print(bindir)") - echo "site_packages_loc=$SITE_PACKAGES_LOCATION" >> $GITHUB_OUTPUT - echo "site_bin_dir=$SITE_BIN_DIR" >> $GITHUB_OUTPUT - id: get-dependencies - - - name: Cache py-dependencies - id: cache-dependencies - uses: actions/cache@v4 - env: - cache-name: cache-py-dependencies - with: - path: | - ${{ steps.get-dependencies.outputs.site_packages_loc }} - ${{ steps.get-dependencies.outputs.site_bin_dir }} - key: ${{ runner.os }}-${{ matrix.python }}-build-${{ env.cache-name }}-${{ hashFiles('setup.py') }}-v24 - - - name: Install py-dependencies - if: steps.cache-dependencies.outputs.cache-hit != 'true' - shell: bash - run: | - python -m pip install --upgrade pip - - pip install -e ".[boto3,pandas,pysftp,tests]" - - # ensure that numpy c extensions are installed on windows - # https://stackoverflow.com/a/59346525 - if [ "${{startsWith(runner.os, 'Windows')}}" == "true" ]; then - pip uninstall -y numpy - pip uninstall -y setuptools - pip install setuptools - pip install numpy - fi - - - name: run-unit-tests - shell: bash - run: | - pytest -sv --cov-append --cov=. --cov-report xml tests/unit - - name: Check for Secret availability - id: secret-check - if: ${{ contains(fromJSON('["3.9"]'), matrix.python) || contains(fromJSON('["3.13"]'), matrix.python) }} - # perform secret check & put boolean result as an output - shell: bash - run: | - if [ -z "${{ secrets.encrypted_d17283647768_key }}" ] || [ -z "${{ secrets.encrypted_d17283647768_iv }}" ]; then - echo "secrets_available=false" >> $GITHUB_OUTPUT; - else - echo "secrets_available=true" >> $GITHUB_OUTPUT; - fi - - if [ -z "${{ secrets.synapse_personal_access_token }}" ]; then - echo "synapse_pat_available=false" >> $GITHUB_OUTPUT; - else - echo "synapse_pat_available=true" >> $GITHUB_OUTPUT; - fi - - # run integration tests iff the decryption keys for the test configuration are available. - # they will not be available in pull requests from forks. - # run integration tests on the oldest and newest supported versions of python. - # we don't run on the entire matrix to avoid a 3xN set of concurrent tests against - # the target server where N is the number of supported python versions. - - name: run-integration-tests - shell: bash - - # keep versions consistent with the first and last from the strategy matrix - if: ${{ (contains(fromJSON('["3.9"]'), matrix.python) || contains(fromJSON('["3.13"]'), matrix.python)) && steps.secret-check.outputs.secrets_available == 'true'}} - run: | - # decrypt the encrypted test synapse configuration - openssl aes-256-cbc -K ${{ secrets.encrypted_d17283647768_key }} -iv ${{ secrets.encrypted_d17283647768_iv }} -in test.synapseConfig.enc -out test.synapseConfig -d - mv test.synapseConfig ~/.synapseConfig - - if [ "${{ startsWith(matrix.os, 'ubuntu') }}" == "true" ]; then - # on linux only we can build and run a docker container to serve as an SFTP host for our SFTP tests. - # Docker is not available on GH Action runners on Mac and Windows. - - docker build -t sftp_tests - < tests/integration/synapseclient/core/upload/Dockerfile_sftp - docker run -d sftp_tests:latest - - # get the internal IP address of the just launched container - export SFTP_HOST=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -q)) - - printf "[sftp://$SFTP_HOST]\nusername: test\npassword: test\n" >> ~/.synapseConfig - - # add to known_hosts so the ssh connections can be made without any prompting/errors - mkdir -p ~/.ssh - ssh-keyscan -H $SFTP_HOST >> ~/.ssh/known_hosts - fi - - # set env vars used in external bucket tests from secrets - export EXTERNAL_S3_BUCKET_NAME="${{secrets.EXTERNAL_S3_BUCKET_NAME}}" - export EXTERNAL_S3_BUCKET_AWS_ACCESS_KEY_ID="${{secrets.EXTERNAL_S3_BUCKET_AWS_ACCESS_KEY_ID}}" - export EXTERNAL_S3_BUCKET_AWS_SECRET_ACCESS_KEY="${{secrets.EXTERNAL_S3_BUCKET_AWS_SECRET_ACCESS_KEY}}" - - # Set env vars for OTEL - export OTEL_EXPORTER_OTLP_ENDPOINT="${{ vars.OTEL_EXPORTER_OTLP_ENDPOINT }}" - export OTEL_SERVICE_INSTANCE_ID="${{ vars.OTEL_SERVICE_INSTANCE_ID }}" - export SYNAPSE_INTEGRATION_TEST_OTEL_ENABLED="${{ vars.SYNAPSE_INTEGRATION_TEST_OTEL_ENABLED }}" - export OTEL_EXPORTER_OTLP_HEADERS="${{ secrets.OTEL_EXPORTER_OTLP_HEADERS }}" - - # Setup ignore patterns based on Python version - IGNORE_FLAGS="--ignore=tests/integration/synapseclient/test_command_line_client.py" - - if [ "${{ matrix.python }}" == "3.9" ]; then - # For min Python version, ignore async tests - IGNORE_FLAGS="$IGNORE_FLAGS --ignore=tests/integration/synapseclient/models/async/" - echo "Running integration tests for Min Python version (3.9) - ignoring async tests" - elif [ "${{ matrix.python }}" == "3.13" ]; then - # For max Python version, ignore synchronous tests - IGNORE_FLAGS="$IGNORE_FLAGS --ignore=tests/integration/synapseclient/models/synchronous/" - echo "Running integration tests for Max Python version (3.13) - ignoring synchronous tests" - fi - - # use loadscope to avoid issues running tests concurrently that share scoped fixtures - pytest -sv --reruns 3 --cov-append --cov=. --cov-report xml tests/integration -n 8 $IGNORE_FLAGS --dist loadscope - - # Execute the CLI tests in a non-dist way because they were causing some test instability when being run concurrently - pytest -sv --reruns 3 --cov-append --cov=. --cov-report xml tests/integration/synapseclient/test_command_line_client.py - - name: Upload coverage report - id: upload_coverage_report - uses: actions/upload-artifact@v4 - if: ${{ contains(fromJSON('["3.13"]'), matrix.python) && contains(fromJSON('["ubuntu-22.04"]'), matrix.os)}} - with: - name: coverage-report - path: coverage.xml + # - uses: actions/setup-python@v5 + # with: + # python-version: ${{ matrix.python }} + + # - name: get-dependencies-location + # shell: bash + # run: | + # SITE_PACKAGES_LOCATION=$(python -c "from sysconfig import get_path; print(get_path('purelib'))") + # SITE_BIN_DIR=$(python3 -c "import os; import platform; import sysconfig; pre = sysconfig.get_config_var('prefix'); bindir = os.path.join(pre, 'Scripts' if platform.system() == 'Windows' else 'bin'); print(bindir)") + # echo "site_packages_loc=$SITE_PACKAGES_LOCATION" >> $GITHUB_OUTPUT + # echo "site_bin_dir=$SITE_BIN_DIR" >> $GITHUB_OUTPUT + # id: get-dependencies + + # - name: Cache py-dependencies + # id: cache-dependencies + # uses: actions/cache@v4 + # env: + # cache-name: cache-py-dependencies + # with: + # path: | + # ${{ steps.get-dependencies.outputs.site_packages_loc }} + # ${{ steps.get-dependencies.outputs.site_bin_dir }} + # key: ${{ runner.os }}-${{ matrix.python }}-build-${{ env.cache-name }}-${{ hashFiles('setup.py') }}-v24 + + # - name: Install py-dependencies + # if: steps.cache-dependencies.outputs.cache-hit != 'true' + # shell: bash + # run: | + # python -m pip install --upgrade pip + + # pip install -e ".[boto3,pandas,pysftp,tests]" + + # # ensure that numpy c extensions are installed on windows + # # https://stackoverflow.com/a/59346525 + # if [ "${{startsWith(runner.os, 'Windows')}}" == "true" ]; then + # pip uninstall -y numpy + # pip uninstall -y setuptools + # pip install setuptools + # pip install numpy + # fi + + # - name: run-unit-tests + # shell: bash + # run: | + # pytest -sv --cov-append --cov=. --cov-report xml tests/unit + # - name: Check for Secret availability + # id: secret-check + # if: ${{ contains(fromJSON('["3.9"]'), matrix.python) || contains(fromJSON('["3.13"]'), matrix.python) }} + # # perform secret check & put boolean result as an output + # shell: bash + # run: | + # if [ -z "${{ secrets.encrypted_d17283647768_key }}" ] || [ -z "${{ secrets.encrypted_d17283647768_iv }}" ]; then + # echo "secrets_available=false" >> $GITHUB_OUTPUT; + # else + # echo "secrets_available=true" >> $GITHUB_OUTPUT; + # fi + + # if [ -z "${{ secrets.synapse_personal_access_token }}" ]; then + # echo "synapse_pat_available=false" >> $GITHUB_OUTPUT; + # else + # echo "synapse_pat_available=true" >> $GITHUB_OUTPUT; + # fi + + # # run integration tests iff the decryption keys for the test configuration are available. + # # they will not be available in pull requests from forks. + # # run integration tests on the oldest and newest supported versions of python. + # # we don't run on the entire matrix to avoid a 3xN set of concurrent tests against + # # the target server where N is the number of supported python versions. + # - name: run-integration-tests + # shell: bash + + # # keep versions consistent with the first and last from the strategy matrix + # if: ${{ (contains(fromJSON('["3.9"]'), matrix.python) || contains(fromJSON('["3.13"]'), matrix.python)) && steps.secret-check.outputs.secrets_available == 'true'}} + # run: | + # # decrypt the encrypted test synapse configuration + # openssl aes-256-cbc -K ${{ secrets.encrypted_d17283647768_key }} -iv ${{ secrets.encrypted_d17283647768_iv }} -in test.synapseConfig.enc -out test.synapseConfig -d + # mv test.synapseConfig ~/.synapseConfig + + # if [ "${{ startsWith(matrix.os, 'ubuntu') }}" == "true" ]; then + # # on linux only we can build and run a docker container to serve as an SFTP host for our SFTP tests. + # # Docker is not available on GH Action runners on Mac and Windows. + + # docker build -t sftp_tests - < tests/integration/synapseclient/core/upload/Dockerfile_sftp + # docker run -d sftp_tests:latest + + # # get the internal IP address of the just launched container + # export SFTP_HOST=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -q)) + + # printf "[sftp://$SFTP_HOST]\nusername: test\npassword: test\n" >> ~/.synapseConfig + + # # add to known_hosts so the ssh connections can be made without any prompting/errors + # mkdir -p ~/.ssh + # ssh-keyscan -H $SFTP_HOST >> ~/.ssh/known_hosts + # fi + + # # set env vars used in external bucket tests from secrets + # export EXTERNAL_S3_BUCKET_NAME="${{secrets.EXTERNAL_S3_BUCKET_NAME}}" + # export EXTERNAL_S3_BUCKET_AWS_ACCESS_KEY_ID="${{secrets.EXTERNAL_S3_BUCKET_AWS_ACCESS_KEY_ID}}" + # export EXTERNAL_S3_BUCKET_AWS_SECRET_ACCESS_KEY="${{secrets.EXTERNAL_S3_BUCKET_AWS_SECRET_ACCESS_KEY}}" + + # # Set env vars for OTEL + # export OTEL_EXPORTER_OTLP_ENDPOINT="${{ vars.OTEL_EXPORTER_OTLP_ENDPOINT }}" + # export OTEL_SERVICE_INSTANCE_ID="${{ vars.OTEL_SERVICE_INSTANCE_ID }}" + # export SYNAPSE_INTEGRATION_TEST_OTEL_ENABLED="${{ vars.SYNAPSE_INTEGRATION_TEST_OTEL_ENABLED }}" + # export OTEL_EXPORTER_OTLP_HEADERS="${{ secrets.OTEL_EXPORTER_OTLP_HEADERS }}" + + # # Setup ignore patterns based on Python version + # IGNORE_FLAGS="--ignore=tests/integration/synapseclient/test_command_line_client.py" + + # if [ "${{ matrix.python }}" == "3.9" ]; then + # # For min Python version, ignore async tests + # IGNORE_FLAGS="$IGNORE_FLAGS --ignore=tests/integration/synapseclient/models/async/" + # echo "Running integration tests for Min Python version (3.9) - ignoring async tests" + # elif [ "${{ matrix.python }}" == "3.13" ]; then + # # For max Python version, ignore synchronous tests + # IGNORE_FLAGS="$IGNORE_FLAGS --ignore=tests/integration/synapseclient/models/synchronous/" + # echo "Running integration tests for Max Python version (3.13) - ignoring synchronous tests" + # fi + + # # use loadscope to avoid issues running tests concurrently that share scoped fixtures + # pytest -sv --reruns 3 --cov-append --cov=. --cov-report xml tests/integration -n 8 $IGNORE_FLAGS --dist loadscope + + # # Execute the CLI tests in a non-dist way because they were causing some test instability when being run concurrently + # pytest -sv --reruns 3 --cov-append --cov=. --cov-report xml tests/integration/synapseclient/test_command_line_client.py + # - name: Upload coverage report + # id: upload_coverage_report + # uses: actions/upload-artifact@v4 + # if: ${{ contains(fromJSON('["3.13"]'), matrix.python) && contains(fromJSON('["ubuntu-22.04"]'), matrix.os)}} + # with: + # name: coverage-report + # path: coverage.xml sonarcloud: needs: [test] @@ -344,9 +344,9 @@ jobs: # build standalone desktop client artifacts for Windows and macOS on release - build-desktop-clients: + build-electron-desktop-clients: needs: [test, pre-commit] - if: github.event_name == 'release' + # if: github.event_name == 'release' strategy: matrix: @@ -383,11 +383,18 @@ jobs: activate-environment: true python-version: 3.13 - - name: Install py-dependencies + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '18' + cache: 'npm' + cache-dependency-path: synapse-electron/package-lock.json + + - name: Install Python dependencies shell: bash run: | - uv pip install -e ".[boto3,pandas,pysftp,tests]" - uv pip install pyinstaller + uv pip install "pyinstaller>=6.14.0" "pyinstaller-hooks-contrib>=2024.0" + uv pip install -e ".[electron]" # ensure that numpy c extensions are installed on windows # https://stackoverflow.com/a/59346525 @@ -407,53 +414,47 @@ jobs: TAG_CLEAN=${TAG_NAME#v} echo "TAG_CLEAN=$TAG_CLEAN" >> $GITHUB_ENV - - name: Build Windows Desktop Client - if: matrix.platform == 'windows' - shell: cmd - run: | - call build_windows_native_gui.bat %TAG_CLEAN% - - - name: Build macOS Desktop Client - if: matrix.platform == 'macos' + - name: Install Node.js dependencies shell: bash run: | - chmod +x build_gui.sh - ./build_gui.sh macos $TAG_CLEAN + cd synapse-electron + npm install - - name: Prepare artifact (Windows) + - name: Build using build scripts (Windows) if: matrix.platform == 'windows' shell: bash run: | - cd dist - ARTIFACT_FILE=$(ls synapse-desktop-client*.exe | head -n1) - FINAL_NAME="${{ matrix.artifact-name }}-${{ env.TAG_CLEAN }}.exe" - mv "$ARTIFACT_FILE" "$FINAL_NAME" - echo "ARTIFACT_PATH=dist/$FINAL_NAME" >> $GITHUB_ENV - echo "ARTIFACT_NAME=$FINAL_NAME" >> $GITHUB_ENV - - - name: Prepare artifact (macOS) + # Set environment variable to skip dependency installation in build script + export SKIP_DEPENDENCY_INSTALL=1 + + # Use cmd to run the batch file with proper Windows syntax + cmd //c "build_electron_app.bat ${TAG_CLEAN}" + + - name: Build using build scripts (macOS) if: matrix.platform == 'macos' shell: bash run: | - cd dist - ARTIFACT_FILE=$(ls synapse-desktop-client-macos* | head -n1) - FINAL_NAME="${{ matrix.artifact-name }}-${{ env.TAG_CLEAN }}" - mv "$ARTIFACT_FILE" "$FINAL_NAME" - echo "ARTIFACT_PATH=dist/$FINAL_NAME" >> $GITHUB_ENV - echo "ARTIFACT_NAME=$FINAL_NAME" >> $GITHUB_ENV - - - name: Upload build artifact - uses: actions/upload-artifact@v4 - with: - name: ${{ env.ARTIFACT_NAME }} - path: ${{ env.ARTIFACT_PATH }} + # Set environment variable to skip dependency installation in build script + export SKIP_DEPENDENCY_INSTALL=1 + + chmod +x build_electron_app.sh + ./build_electron_app.sh macos "${TAG_CLEAN}" - - name: Upload to GitHub Release - uses: softprops/action-gh-release@v1 + - name: List built files + shell: bash + run: | + echo "Built files in synapse-electron/dist:" + if [ -d "synapse-electron/dist" ]; then + ls -la synapse-electron/dist/ + else + echo "No dist directory found" + fi + + - name: Upload desktop client artifacts + uses: actions/upload-artifact@v4 with: - files: ${{ env.ARTIFACT_PATH }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + name: ${{ matrix.artifact-name }} + path: synapse-electron/dist/* # re-download the built package to the appropriate pypi server. diff --git a/.gitignore b/.gitignore index 3d481963b..4d0c8a0c2 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,5 @@ coverage.xml *.ipynb .env *.spec + +synapse-electron/node_modules \ No newline at end of file diff --git a/build_electron_app.bat b/build_electron_app.bat new file mode 100644 index 000000000..afdd55479 --- /dev/null +++ b/build_electron_app.bat @@ -0,0 +1,163 @@ +@echo off +REM Build script for Synapse Desktop Client (Electron + Python Backend) +REM This script creates a complete packaged application with both frontend and backend +REM Usage: build_electron_app.bat [suffix] + +echo *** RUNNING UPDATED SCRIPT VERSION - DEBUG MODE *** +echo. + +set SUFFIX=%1 +if not "%SUFFIX%"=="" set SUFFIX=-%SUFFIX% + +echo Building Synapse Desktop Client (Electron + Python Backend)... + +REM Ensure we're in the project root +cd /d "%~dp0" + +REM Activate virtual environment if it exists +if exist ".venv\Scripts\activate.bat" ( + echo Activating virtual environment... + call .venv\Scripts\activate.bat +) else ( + echo Warning: Virtual environment not found at .venv\Scripts\activate.bat + echo Continuing with system Python... +) + +REM Check required tools +echo Checking required tools... +where node >nul 2>nul +if %ERRORLEVEL% NEQ 0 ( + echo ERROR: Node.js is not installed or not in PATH + echo Please install Node.js from https://nodejs.org/ + exit /b 1 +) + +where python >nul 2>nul +if %ERRORLEVEL% NEQ 0 ( + echo ERROR: Python is not installed or not in PATH + echo Please install Python from https://python.org/ + exit /b 1 +) + +REM Install Python dependencies with electron extras +if "%SKIP_DEPENDENCY_INSTALL%"=="1" ( + echo Skipping Python dependency installation (CI mode) +) else ( + echo Installing Python dependencies... + where uv >nul 2>nul + if %ERRORLEVEL% EQU 0 ( + echo Using uv package manager... + uv pip install "pyinstaller>=6.14.0" "pyinstaller-hooks-contrib>=2024.0" + uv pip install -e .[electron] + ) else ( + echo Using pip package manager... + python -m pip install "pyinstaller>=6.14.0" "pyinstaller-hooks-contrib>=2024.0" + python -m pip install -e .[electron] + ) + if errorlevel 1 ( + echo ERROR: Failed to install Python dependencies + exit /b 1 + ) +) + +@REM REM Verify PyInstaller version +@REM echo Verifying PyInstaller installation... +@REM python -c "import pyinstaller; print('PyInstaller version:', pyinstaller.__version__)" +@REM if errorlevel 1 ( +@REM echo ERROR: PyInstaller not properly installed +@REM exit /b 1 +@REM ) + +REM Build Python backend with PyInstaller +echo Building Python backend... +cd synapse-electron\backend + +REM Clean previous builds +if exist dist rmdir /s /q dist +if exist build rmdir /s /q build +if exist *.spec del *.spec + +REM Build using the same pattern as the working build +pyinstaller ^ + --onefile ^ + --name "synapse-backend%SUFFIX%" ^ + --collect-all=synapseclient ^ + --collect-all=fastapi ^ + --collect-all=uvicorn ^ + --collect-all=starlette ^ + --collect-all=pydantic ^ + --collect-all=websockets ^ + --collect-all=synapsegui ^ + --paths "..\.." ^ + --paths "..\..\synapsegui" ^ + --paths "..\..\synapseclient" ^ + --console ^ + server.py + +echo Checking if executable was created... +if not exist "dist\synapse-backend%SUFFIX%.exe" ( + echo ERROR: PyInstaller failed to create executable + echo Check the output above for errors + exit /b 1 +) + +if errorlevel 1 ( + echo ERROR: Python backend build failed + exit /b 1 +) + +echo Python backend built successfully + +REM Go back to electron directory +cd .. + +@REM REM Install Node.js dependencies +@REM echo. +@REM echo ======================================== +@REM echo Installing Node.js dependencies... +@REM echo ======================================== +@REM echo DEBUG: About to run npm install +@REM npm install --verbose +@REM echo DEBUG: npm install command completed +@REM set NPM_INSTALL_EXIT=%ERRORLEVEL% +@REM echo DEBUG: npm install exit code: %NPM_INSTALL_EXIT% +@REM REM Check if node_modules exists to verify successful install +@REM if not exist "node_modules" ( +@REM echo ERROR: Failed to install Node.js dependencies - node_modules directory not found +@REM exit /b 1 +@REM ) +@REM echo DEBUG: Node.js dependencies installed successfully +@REM echo DEBUG: Continuing to Electron build step... + +REM Build Electron application +echo. +echo ======================================== +echo Building Electron application... +echo ======================================== +echo DEBUG: About to run npm run dist +echo Running: npm run dist +npm run dist --verbose +if errorlevel 1 ( + echo ERROR: Electron build failed + echo Check the output above for details + exit /b 1 +) + +echo. +echo Build complete! +echo. +echo Electron application packages are in: synapse-electron\dist\ +echo Python backend executable is in: synapse-electron\backend\dist\ + +REM Show built files +echo Built files: +if exist dist ( + dir /b dist\*.exe 2>nul + dir /b dist\*.dmg 2>nul + dir /b dist\*.AppImage 2>nul +) + +echo. +echo SUCCESS: Synapse Desktop Client built! + +pause diff --git a/build_electron_app.sh b/build_electron_app.sh new file mode 100644 index 000000000..6014b1aab --- /dev/null +++ b/build_electron_app.sh @@ -0,0 +1,186 @@ +#!/bin/bash + +# Build script for Synapse Desktop Client (Electron + Python Backend) +# This script creates a complete packaged application with both frontend and backend +# Usage: ./build_electron_app.sh [platform] [suffix] +# Platforms: linux, macos, all +# Suffix: optional suffix to add to the output filename + +set -e + +# Default to current platform if no argument provided +TARGET_PLATFORM=${1:-"auto"} +SUFFIX=${2:-""} + +echo "Building Synapse Desktop Client (Electron + Python Backend)..." + +# Ensure we're in the project root +cd "$(dirname "$0")" + +# Activate virtual environment if it exists +if [ -f ".venv/bin/activate" ]; then + echo "Activating virtual environment..." + source .venv/bin/activate +else + echo "Warning: Virtual environment not found at .venv/bin/activate" + echo "Continuing with system Python..." +fi + +# Check required tools +echo "Checking required tools..." +if ! command -v node &> /dev/null; then + echo "ERROR: Node.js is not installed or not in PATH" + echo "Please install Node.js from https://nodejs.org/" + exit 1 +fi + +if ! command -v python3 &> /dev/null; then + echo "ERROR: Python is not installed or not in PATH" + echo "Please install Python from https://python.org/" + exit 1 +fi + +# Install Python dependencies with electron extras +if [ "$SKIP_DEPENDENCY_INSTALL" = "1" ]; then + echo "Skipping Python dependency installation (CI mode)" +else + echo "Installing Python dependencies..." + if command -v uv &> /dev/null; then + echo "Using uv package manager..." + uv pip install "pyinstaller>=6.14.0" "pyinstaller-hooks-contrib>=2024.0" + uv pip install -e ".[electron]" + else + echo "Using pip package manager..." + python3 -m pip install "pyinstaller>=6.14.0" "pyinstaller-hooks-contrib>=2024.0" + python3 -m pip install -e ".[electron]" + fi +fi + +# Verify PyInstaller version +# echo "Verifying PyInstaller installation..." +# python3 -c "import PyInstaller; print('PyInstaller version:', PyInstaller.__version__)" +# if [ $? -ne 0 ]; then +# echo "ERROR: PyInstaller not properly installed" +# exit 1 +# fi + +# Function to build Python backend for a specific platform +build_python_backend() { + local platform=$1 + local suffix_part="" + if [ -n "$SUFFIX" ]; then + suffix_part="-$SUFFIX" + fi + + echo "Building Python backend for $platform..." + cd synapse-electron/backend + + # Clean previous builds + rm -rf dist/ build/ *.spec + + # Create PyInstaller spec and build + pyinstaller \ + --onefile \ + --name "synapse-backend-${platform}${suffix_part}" \ + --collect-all=synapseclient \ + --collect-all=fastapi \ + --collect-all=uvicorn \ + --collect-all=starlette \ + --collect-all=pydantic \ + --collect-all=websockets \ + --collect-all=synapsegui \ + --paths "../.." \ + --paths "../../synapsegui" \ + --paths "../../synapseclient" \ + --console \ + server.py + + if [ ! -f "dist/synapse-backend-${platform}${suffix_part}" ]; then + echo "ERROR: Python backend build failed" + exit 1 + fi + + echo "Python backend built successfully" + cd ../.. +} + +# Function to build Electron app for a specific platform +build_electron_app() { + local platform=$1 + + echo "Building Electron application for $platform..." + cd synapse-electron + + # # Install Node.js dependencies + # echo "Installing Node.js dependencies..." + # npm install + + # Set platform-specific build command + case "$platform" in + "linux") + npm run build -- --linux + ;; + "macos") + npm run build -- --mac + ;; + "windows") + npm run build -- --win + ;; + *) + npm run build + ;; + esac + + cd .. +} + +# Determine what to build +case "$TARGET_PLATFORM" in + "auto") + # Auto-detect current platform + if [[ "$OSTYPE" == "linux-gnu"* ]]; then + build_python_backend "linux" + build_electron_app "linux" + elif [[ "$OSTYPE" == "darwin"* ]]; then + build_python_backend "macos" + build_electron_app "macos" + else + echo "Unsupported platform: $OSTYPE" + echo "This script supports Linux and macOS platforms" + echo "Please specify platform: linux, macos, or all" + exit 1 + fi + ;; + "linux") + build_python_backend "linux" + build_electron_app "linux" + ;; + "macos") + build_python_backend "macos" + build_electron_app "macos" + ;; + "all") + echo "Building for all supported platforms..." + build_python_backend "linux" + build_python_backend "macos" + build_electron_app "linux" + build_electron_app "macos" + ;; + *) + echo "Unknown platform: $TARGET_PLATFORM" + echo "Available platforms: linux, macos, all" + exit 1 + ;; +esac + +echo "" +echo "Build(s) complete!" +echo "" +echo "Electron application packages are in: synapse-electron/dist/" +echo "Python backend executables are in: synapse-electron/backend/dist/" + +echo "" +echo "Available packages:" +if [ -d "synapse-electron/dist" ]; then + ls -la synapse-electron/dist/ +fi diff --git a/setup.cfg b/setup.cfg index 5b56465d8..f50456d56 100644 --- a/setup.cfg +++ b/setup.cfg @@ -121,6 +121,15 @@ docs = mkdocs-open-in-new-tab~=1.0.3 markdown-include~=0.8.1 +electron = + # For building the Electron app + pyinstaller>=6.14.0,<7.0 + pyinstaller-hooks-contrib>=2024.0,<2026.0 + fastapi>=0.104.1 + uvicorn>=0.24.0 + websockets>=12.0 + pydantic>=2.5.0 + python-multipart>=0.0.6 [options.entry_points] console_scripts = diff --git a/synapse-electron/.electron-builder.json b/synapse-electron/.electron-builder.json new file mode 100644 index 000000000..c5115b09f --- /dev/null +++ b/synapse-electron/.electron-builder.json @@ -0,0 +1,61 @@ +{ + "name": "Synapse Desktop Client", + "version": "1.0.0", + "description": "Development configuration for Synapse Desktop Client", + "main": "main.js", + "scripts": { + "electron": "electron .", + "electron-dev": "ELECTRON_IS_DEV=1 electron .", + "electron-pack": "electron-builder", + "preelectron-pack": "npm run build" + }, + "build": { + "appId": "com.sagebase.synapse-desktop-client", + "productName": "Synapse Desktop Client", + "copyright": "Copyright © 2023 Sage Bionetworks", + "directories": { + "output": "dist" + }, + "files": [ + "**/*", + "!backend/__pycache__", + "!backend/*.pyc", + "!backend/venv", + "!.git", + "!README.md" + ], + "mac": { + "category": "public.app-category.developer-tools", + "target": [ + { + "target": "dmg", + "arch": ["x64", "arm64"] + } + ] + }, + "win": { + "target": [ + { + "target": "nsis", + "arch": ["x64", "ia32"] + } + ] + }, + "linux": { + "target": [ + { + "target": "AppImage", + "arch": ["x64"] + }, + { + "target": "deb", + "arch": ["x64"] + } + ] + } + }, + "devDependencies": { + "electron": "^27.0.0", + "electron-builder": "^24.6.4" + } +} diff --git a/synapse-electron/assets/icon.icns b/synapse-electron/assets/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..40b8e1801ab02b906eb5a5f02d4ed3bcbd4af784 GIT binary patch literal 997902 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�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

^+!&9YWaqQl7t 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%0D`Pm`u1Q7*_ct<_^J+d5Onom~d&R9B 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%0D;?6{k&cLr@W&C>xN%?WOW9Qtj_m6qkyo>7g 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 z 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 GeahF^W?_8Y>@*4kVimFMzYeSex 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 z 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 z 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%0A~&D42Cl}&PkpN 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 +RHk&@hkWfAc^Wv_M&p#RO45qdO0p5E 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

W**ze<&a&a+?IVa$IOia9IoBzhnH5I9T$MxUP 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 ANdN!< literal 0 HcmV?d00001 diff --git a/synapse-electron/assets/icon.ico b/synapse-electron/assets/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8c36dc4a7884eca5e3f236a014a30cb4ab7874f6 GIT binary patch literal 91558 zcmagFQ;;q^ur>UQZQJ(jv2EM7ZQHi7$F{x4wr$(`-*e9GU-k7x(kp$DN>z6{y^;U` zKmc$6A|l{FAq1QQ0{~|KqY?fe-h==EV z0{#yxN&^6QO#h?*j}QV(&j0{HUjQIdK~5YF8XNk*K{!bX5vBk7|CtdH68yiG;PKZG z006F+6cJSM$O%=pmQWEyi!3tT%Tpo&6JKAR!EFS5Vhz*>JVnMK_D<#P+h`0Cf+L0`RG@DOb1^z{Fz#Kkb+{Fb6| zN{V43mI=l|0J33)pG1jU57qN}JGMf#C+HnHf#ZLv$!Z7=e0`WAf82K=To)`qo>`E+2vLCs|^3^w%i&X)@r-8 zQwdy_?XgLz1Ckxc-opnr9WI`ftY! z1p?vyh8a9Jx;T<;!8PulKwrST;<|QQ5?hr@nl~}6niT$~Kg7V0(>UH^=CLTR5etX>3Q^S632*7$G zigMe?`iAkt{>Q+~&adSbWtTsDj06z-p9=#dMdd_lg$#oJe;l3gKQrO~I=Zu$*AoB$ zQS^U~-lB$Jld6u!f4cSA^SS{+7d-g(Cjp3g1K4?RE5m4&3ZAHFsF@iLg%q8ftuzHH zE3;1DC?vF@kZBznHkFg5#wO9Eym+lKLjYGd%qG>}6(@z?_FQYDxA(R8cE@|l_j)J| z-L+rtq371`KRk1r^T>Uw7obfxb=E1f*J(0(Zr^$suaD_X0QfvyS&>T5{0Q#ak?U4P ztZu_|$8E2osW_oZD+aspV3B!tH$(8R>V6CKU=TRch6%s|LZYULpYU3KfFn5eN+>+n zx@1JM1o}Y6dcMr5K6B3QW9{p){{|qspsXxrwdZZ1laIe+aV2&Iy2=!JhHL0EQ&NB* zrL?(@^s0Y6ejCEPY`DzDX1VJMh#WQI`Qu}O)&qzBnSYB+M#`nd6B{^)cu5bI>W-si z1}PYo{g-Js(1`|8OutWFvZ&sMgOnLNViCT4d(&Y*wX^Je3J#cSE`5++mptL5&2fw* ze31ljz$?s)Z|ndTVl!KyFOO|l&Vj%1^{hNsMYOfp@mb0*m zs}KTUgGh1?3C*oJ{t)$8A^t=4Sh#aXu+8pN75wR|Nc|sLNDX1RGwBExSe3@e1O{fV zMb_~vfhKa${RBmmFJYp9hY1RFe4I+yhTUxG*L1T$1a|@8#)xuVv&qsL1pC-^FtC;u zr-S<&AG1?#V$x`ZF-IGhHnmD{1%86mA$iCfJrgtz;9AtDMtv$A(QOgWW zF&)*)golI<-C+h{ijkho3tK~8Q$3_qMJjU^DtE|WPY-#n(Kt2gwU-lNUp}>Up4fbe z%SaqbMe|~cr=qD`G1TDRdFa%;+I%DIepIFk^cEZhN`=!%Xqt3BnvycQXQ0kP^N){6 zuI`Ah`bPz)4F*?#W&7y#J;FL>=dpW>BqNE6f68h`gWk^bF)mH!H0V9GA z=)mstRQt&T6Xn#VcOcHZsxpL9hW-$;7?C$LlYoB$2j_@S>PF2;PyZV=9M=hlH)Cw=`;i zxpgsKF=rkuvERh_rd5o#Vj}S^p)JNiE0y106g9D-d3NsuUUNz*un9#|)@9aur`d_a zGWlFRgAh%kzl6|dFBvx;Hmb{&x!louHvfzaFm!-1YG2|ii+WpUGK{*uQHDms&ia6b zL_%7;SNSfAe`&cmRwz+Gg6vp0k^=Fd9-`R1+Iw^?ODDMI2aRHp0&Hsott^hRfsYVV}Nf!8_6;hxH2} zfI6%Zou=Ltc*i-2AW34|H%DTbTKOK^6JS6s+rDqq(pQx`4yD*ojM1W+ObjNSKy2hF zgiY4L4h8?|2~+u~g#p-NG7Szrtx1T~)O5XiQbiudqaa27w9VmtVr z6*`-g&r=eT@E z^61`v0PPM`Y*$+#V@v3<4Dg+&E_Xd9`IO@8@!kyDW&ia^v->pM`7~!g+0E9vc;Q-U z=6j7q@K3pIv&&g`=%lsR+T99}MucPD%|?uNAd~`?OV?3UO)Rf^oT`#;?Njx*`63Xq zIgk*^QCRf|GkLT-#6cEjrwfXwhSbs3sktopFT}|?Y67w&4Z0DZJQh2@A~6i)&TKSy z%t;TJ1u0Y6Ch4UQ|ex)c5q0qydHW>f)9y$k-ixX~+zFCT>4_TZerZ2}8~S8pok%?>PB zD2Jo6uk+j~ot&@vzia=})GyARC!GHNzCIuAX0*8?`S%@Z^~$31$FhnIFe>FxuCURMeypk z%b9yyYhr^x=u$t#UOd0N?cI0F<9C{~%SjWmJAjNd1#F;?@9?0fjZF$e7(sbwsVjFU zBQ`evP9$IOxy9?=>7DlyoIm9hv`pLWcnGsY52!=zm4w00Ho5lc>-2iIdc@B>QZ5Q8 zfD8y0cXw~w;M`d-0%f2MbyFM8$S9+>BAj%8V|MQ%W>S6bagF5 z+2_z9xVW7_buM1j#-m*iGP1C1sHJ<4i_p@>!UrejhO|!#h68D393x~rF&~d&({84Q zl@MT8`2y}fR8Dg^AxlWEf?zf%!Ul(ltvUcBG9@Z65qj0DR?3xf*8zYizN)Zb9ZhZc z>c-^@B|Q0+Yy%(7@er7vS6j3Ku52z5SZ9e(< zi$!incACC6Lgi8?KY0`oB4#Q=9HY?`7nOn)>jAmHOCHi709<#(36rLb$=ochSq)f# zNiheewZt&31hS;(Usl91q+R7Yw!h%wc&%MG>j!lcPiHnZ4*e7t!h1}wY%tX5)d)Zb z%DE5YGPQ99w6s%kH2>(N4+V&7AJ16`@^o1?oAB5WCchb*7XgAD zwus|s2q*~sXl)3(`5Yn4ayN1C6Rs{A>3yeLtHq;BaT zd+ZLy>TFK*BGhU~2N_5Xpg}NE(iDjLuos{7CFAqSjHQ9fRlp2fF%PuJT?3V(B8GnD zte#)_b=KbNX16uQ(m&$gvBo8XH~n0Y^*OQoba1BTJ}y+qpc zQuqjvd>hdPtO)=Zsf1jjU&x9Jer#-RuO}zT z76t&!2!l5pH_J&D2Rd|W(|SP}bLCNvfI3UE9gEnws$N?_#25uaTygXzdJV$3nDzymJkTxQxLDTjouNX@$z1KD_5+`0fbNKY+mhDP}C;HW(${mp##tIz9t?$P0i z@Oda71ar^TPDH3Gt=5)3)~Y(D89=hNDtR$CK#nrw$IX3kQP%eFofJ|RvPjyc$F>h% zw6N)whv?ePiirF>_DjTLYyG&rvu++R z46b!5By-KzNmohPPEk!(?HCzx!G*u#>vx8Cdt>f>Puq!SWFj3udD9JMXxU)6w4(o5 zB|LIh8a#=st65Ev&LQ?Oke1RasjWC72^LExs9kBet-D& z6>}id-Tm(4{kuHvOkbbc>2hyT*l|XLG+DnsGFSM0uj=f6gqT`ZOAH~l;%{agl5X61 zw_F9s47oxaVgqO&4*e#iJ>rIhHJ}Q$;H&;ER7JFIJPi9T?+-6xd7vTdoey7{6%a#? zjEaSNVnF|(L%M13zbph_>b8I-$b>!2m2o@2D|Gg^`Ay1-mVe^tUk;CC`NFw<-QL{{ zwcU)f#NZ27c_1L$v)2zFtKPu|k>1A3_ z!L1TSI>ibQ3W;uKY_;Eu)%6ivE$CyAx6fKqCfvx;)IJ=KWU-*+R|!Bd!J*9k>3w4W z3NSnh4TMsUpnys609P{XOve>cwoRz7gfCv(B^)b`xU(5xAn-BxK9xeDLU(4Rl`dru zXAPs6%bc}`A)5~SSfto~%fX-8s4{)TV(vWlUt5b6>xwew&L)$% za01eS2U3YLGK5%C#Yqz~IL38@;{75@dh9<(^CT<~+xw$<#XYId-IAi7$iGC~g^h<+ z>}!8cND(+4Mu*%Zi1J1eWmcIiV5>&sMsSk&;}?_iZM6Ky8&J+!vyX9+PDP2M97-`F zlQIE}u`E;~CITFY(ZhPPH8WUa08#!KHByLBTL$8^?so8pV5y@0vHs4I;Y3MbjAig} zBz3;o1!80;zN51x><5W(uFeSo@C9E>mprCGLC_~%EmOCGW5=4QhLU*NmUEvKZFX}3 zLAML=FB#h02r~FMP?8~=b5XMoW^9#e!BW8E5O!LXFKIaR3|A^3%T}!b%~5V zyXe0c2n1GSd9G~W*jk)s&Ds2J293Iwed9wX)q#0lx^sW z%Y^EbDltbQ1>A?wSQ76n2`#uk?!}_rc|FyYe>Hy7sdYN0Jq0w7CzS2-P7IDAp&Cq^ z18cmF&;$Z#H&Px_&DX@Nz_yzjC;j+tYEk;qP5YY5OBG`)!!l;`I<(6yOO&{rElO_E&TU8aa zGiE>#{EaP@V@xxVwFZHwThkgYfbP1DOURmv#_i!blnz{Y93IXX9-F3`6>)Wu*Y=_k zh8_hBxPYjLs3;X6e0Kerz#F!W2QbqLnl&`kkmsNYHF7LuNNp_&x%7Bx31^Y!;psjy zJxZESKihshRG16mQy4VSq4k7=)Tu&5ff-j<{|eKX8lE>1$`c-%=?122-(J&n@(sQN z$|N9@ztPMZv0T1(sG2QTOaBE5Lul2kWlE(~AqY>XgWQQyp46{^aK!X=JWYFI8bL7m zCPt)1jp>x69?IH)IEx^9#mp5`)zAJuOaCrrm8bp6AblAMRbh#NR)*=qLLyy+h?R%v zASTj*KG};WJ*arsGPvYL@GzGEC$BnPEJLucQ1GKv_-Vh|KAZM+2MG6Og{%u$KqZSy=Sj{*3LdzX_Hth6@2P>eW1T39Xbtd^lpNKSJp5LOT2A#(7e4 zY14X2Z^4-4H}*eex+Dv^Y6&xs5Q66^c^<^*MM~v!# zfV@7Rw-t3Escy_DU6K+9QQsCPIqMFUe51=?fI96JS%0_?$@{wdt0?bn|0>2R6-%f> z!7!*>gBnLZRxKvT8Zdxl(<|O6yb6iHoF4Ug6s3K9zoIEa85Mn$Z8z8K3-OlVW5QQ| zoolV=WeU>c^J-y@phbnc%80N=Z4EF7Gu3K7uw4fieW;0a>Sx;h8~1Xm@#chZ-`$xZ z6{~iQI}5(Jb&6Nd%TDlYS|e8c)IJo+XkT4LcX#`%ye`((?P`_IWp#HW?P? z$Lieu6z0s2j0MVvi!i+p3wR#7dh_ELb&pCIGz9aIAW}2F`2-frSHOJ@YGTgJ4$wz+ z(9|f|+%%W!WasDObD5_pW_pGv@2;XG4&qQ=egESODAvR*7r8wNfVipu18UKW7O8Ht z1foi}9+7wS30NdB`X}$hriDXnbGozRqmrOtfrtnXkp=>Iia2`c@4o=S*~luMb?*P{ zq_P8n|Eddr(rIAfJ7T-C$oJH8E|gb; z!6?vVj{(Q}87WCu%UDGkBVhlhD!uH4iH&6z=!YQ;ZBVPWCKI7IrUOa$Ls9f|su{Um z$Aus&Jee$>Wq$k#BtDTd3&yB=r~jDh1wbUgL+}_AJ|1qd68%R8eea~NTvav(Q_X9H z>4%Nt;jrS^!+^{O!jkw~hEJDQ!D`5xSPNq;j$+n*0HKm%!5dwEMjP>8CrhX=G% z5rLndYT*gyyh&3w8#>dBJQFpO1@Pc-_JdJ5hz>C&B9eh{BkVUmTJNp5($9U&^%b6R z%!F02gNAo;L*qEdrP#`o$>xW-I7~Gz&g;U+pU1o*s6RH%b_=CItJ3oPYOX%pjD(#V zpXm3_cU+8*_c-afr2TCYmz7w}?AY32aRWiA`XiEl}yRkbd z%~-URHZn;fDq4bX=Q!sUCudT$nOIwz+}P8vpM>DntJjyCbgPpPNzlHg^ow8!f2FcP~=U@AGdg$)Y@7qHe|=tY)6Ag-Qy4tWcKj-7@#zlsDtK0aLD zv*X)(m@03YpAGC8t@#x&n*7<^`U<1$%zd!4Cw#+k&Y^AF6=eyxj3^2CY)a)RYMPqX zXrbG*X|!>dq)z{i5!OJiP|8q}naAvfkbBk?;LQG<-)^(_he zov$W6FaB9V;eO9u5BViD`*ArqN=`clGW*Fe_9JXil2ZDy`SY6&|lO;5+A4JcE%62}1kh6#yw^T`xOe$y1!t zU9ACsDtiaI9L@0kUi?|gJXrgOhq@aFF|)~?xI#^Gg7{+ezA`ll;gvj&KQm%$w%-eg z$`L(@{9u9Oge8tt7Pl;t@lQc8IE9t>#8*Q|a=fJD!wm!f%l84#y~@Sq;wp3^_$@MZ z>O@d3wAD9UMa!lV%`4}KUM@|wnVW+n%d{nnl!!SRBXB5cj44|xt6aTU_7*f+7?@e_ zA4eWxg~NIn-^lTxYI?cdL`38nn5S;2pwn|JSQf!H=|J z#jg(OV|vHj5^%9T=v9a`3b`pX@P!nvyR@J!?Q0M2hxih>)IrNtZgc;h?%mN~tyPLtV2o|w3YmCp&VrD8*BjTPhd=AcwQPrV-{gjzZPH(@_EtwCbM^z|_bN$$|S6A4!L29>{$)s90A)Cb?jmO6i`;k_u zjUrUe&Cc*Dc6cb5)ux+p!0DuL=38HF z+iLs0Gj!gJY>!mhfGtO0+A71W)Rw@pu2~E*EI#r-1^$_Vw#|#9%&eRRyca=T6l`)1 ziz|r}G{(>;)3EfDsc~G-T7Rv|(tU*MUw@As3CZrUj{JGEvSwc;75tjmb=uwJyOMg# z@u^oMc>-!lx(mXfPyHMWJ3JquOw1Ko6F+jZ9yFs2Ip-t+rSG8%CJKT$~!o74dib2pWhxpJ^t}s>nESh2PkG_T}ZpOWaAfpbAMXEPczs zt+r{2N>v483~ZvnsU&9j5hOPqDwn|yyvu66V!r`XC^TxHjd&e~tSh7hM&wek za@hip@^)Zt1T+&pkO+^K1dsYuX^llz5LGY&44JY7S`aZ|0UCFeBp`n!t9QBl7^126 z`>%VNvo%_1rF!Y5Ie;$l#C3Hk-S)fYxt&2QOOBm&_Q)i*!G*$dV>rPZ$cEj}E|eLl zgEXvZ98{3rLaD4-ZHVwF_qax=GFUVXD1`!LiYhlAc`A3FjhCwRQ@9lGdasXD z{l;cCEvfculfxtWxcY=jjoRr?7RArreDJ{BodOWL;mirC1!PfdGEQ-c)rqZbdtZK> zz*cwDBy##zg^oDt9Q^beiI!W$m>QxQm1$P$J!dr9s2gm5H0*aXa30y;QwcQe!ehH& zmpZ5O?LCuVsfvOWVlx8DWl^;O$Fk`Lz)5D%VDvQeqnFqhTu`msT_Od+_;8bB6p(qgR1dx)>?6M2OZ>4 z4ukO`MQ0jw8`L32fkkHfR#(z(Op<*GF7!=N0Mg7me0tlZUE(aF)>^69GDTWBBz%G%YY}*7A?q~`0h`!ncCL$VBh&3A7MfZapP2S zEijm=%1RSP1o<4Zn^TwZCTRgY&@G4=iD+$ZXlr6A9CW89j_^T_z5e^(BeIfnOGZ4? zY2{@{fkc}pdfA|9D;fq{%U708myw`yr|gg=IAX{q+vc+bP0TD*^RSq3%%Ji zb%6zL!NoL}p7FCZa$BKPG1u&+vQZ#Tn36b}^5OtaElA6~IRd|@gP>S1lq>Q03qgd} zmzM<$uJCUeT9WG$e|P&{Q|j?xU4eh3e-UXEiBaQD)sKjZE0rn=Aim30s+?uIu;3g# zSMAn!E|pdf*F3XJJiQ54r3ly=M^n{`2a%aQa!ohKD{NE?Cz{fVq>HArx`KRPw(~7K4pRAzmRh@iKJv1`OqK2#syWa`V z3VFr~!0?UXBzQv+JBh8I8~+HC!S@y%%m6zDTkTrCiqy3%r7Sqc43;hi;(9ZjknP`m z@f5EA`27QR`;!iGeRTb$hGR)1-6|@QB}i#e>|1dfuTLym1~(NdC4W3ICnRh}iJr&~ zc7qD)if3hU%}Oj8Jh)~eJ~_)khj^<V;(NI2~^)0?^PPm>7;oN1%Gj{ROb`ZHvDco}Gu9NhNIIljxh z@Twp-6{A#nGlctzloDPr7N?!*p;?mie0!QL=WNkZlf}}KJZGifUT^$nhAwdtxBXPA zYPoIQ-v6RV|b0cj!9y)ebt<)lD zVtCe_(El6V)^ulw-m6R~inDn|ZiJ>qLAT56xbu1}4$tdj!8AUu5GG{0ld2CvIT|7Z zQMZufz}`n=LZuSSl0#HTRPz+-LN2>F_ImU;GxW7I$&dEnEEpvjMVsK<`>(If?%IY* zNtcZkf0k5de(3F8WMWfXr0-j)D%2+4^ZGts{`sfO=YnUS`OZ(?ccluAr?dCyFvH4{ zB-=@`Cr&mu#m*`u(OaJ&pF!_OWStz}N3OU$O^IH^%8k)oDIo#szj5?*E@ZMmXS-NT zto;mUt#i7m?$OB2LgDSo)EB5^O0@~iHod)_*{MQG%ipawzSjxiU7s_SQYKB`_N=0d zq1_@*-Id^Xd$eC;1CK;bNyfx5J58a0I{ecGVS=&{+?<&l=M_gCr`cE`B&0T}O9er+ zJhq9ikdP4{?_3s3h&KA;=25QCu1MKl1LaQzt3`Ru)-KS-t;IsgPlUt?lVw_B_vkT- z{X0$c9~Y~I_NI%lBjmfXr;By))%1%FbtgSY=N{*4cl;nRV$r)ErF;tx(*3?UOVz0 z%KISW{CmX0LA(ca04?W#B0#GQF7& z{zKp9Fr9ZQa;Lqi$y@GlQ&42oS{^w{)So8y^?YWP4FX`Jz|cQxRL` zdMFtI5p2L`K!<`HUwL6aHN`e1Tiw zf>eo3wzjl{1k^&LR&*%c+30r;^VK^X=?WTCR8vo|iTR9i#t^ErrOMnykbCqAZ=J8y znA!yi*T*uy#-f%&lrCb-1{fXlBH@y2tBca{E>&{ zfjWTj*@rISdA0i#4|vhdo}#UinSem1=}%XdI(CqxyR#xTSkA!-E;2ljgJ3|hp|OLS zBBkkD(Y2EQkeElo>ea+_CTDhmHO{j02QykM29nz|&vc%5c;ADw^c0Bj;*@&aMBKa$ z8`!gEek9Y;7~}a7BKracxtnjvfhKbc1}vDPAT3uAhhdvwoA$`yo~+6Eqplv**?bPm zGG9F59*Xb5lsnT95<(e|{b$*^eT$u{Z;yLd!S(PoZc?o0#W42z!Of^6f*a~mdJnuo zrL|`g`%WL_eSUO!Yd>|dPb1G=u*-7UTKQ%zV4MX>u$C=Qx&&$MO$@GOB2>GMpC04C z-YG`tVG(TU#O^`Dj)n>qaUKJes6d{VI7g8+>xq>FnG|FLSfu|;Ab-hHKBPj!3JT%Svmu-DLU;|X$YiyH zd=efR8k-_x0}a7*En|~c-Q#28Zm{s|wDCo`g=1?%1un;+%4l5;vB*VHrXZmfYEPyH z>@$o1ji&ZOKAa#V*Y-Fg@05vvRU_{xI`2_}b8FlB>DU6 zLv^Zv>>`5HC#30cK6rIq);cyXsV@j(vm8IZyCT|FVHBd(rSI$dI&DrH(*-7^vFo24xn`tkXx zDldkv zu%wLBdmr^Gi8axWlmGjm>q@+w#$4CjuvN$kjAUalqK3W-y(i1?JakLgGx^ZT=9f8T zZ8<6=lPB++{*fMz?_bU#w{(EY*0NN56PKBZ;1U;mdx1-Exn`7{W12`c!esPrEq!sz z{&n6zPNN0+aFWiYEgOIU^i(Ht^fQuU7f-ipOyOUb@pJJu-%5bT;q=c7<*de3n|5~v zA>-1ZKPlyyi)pm+s%Jf7>oX;ZAU*{^f!x=W6MrDXo3zq3n4uZ4<{rb^_GiK?-KYK1MZ zgWxAPTq5LW5YZ;lu{9_ZAqacDK(IbPI%~O3m{wP-HUbt=XS5uY|i zWpW*DW(p!Z%6u49b}jM%jtIp;hmzrqr};0(DkkQJK_HxnibQUI)L)Ui>{7EX@Gjgv z@wm1%@(L-mg@p%Nb?Wb0A=N@`9ldE8u0c^^nUNi!fUhUhR7SUv2Alk^jqORt^|0f+ zpKtQH4miXXlpuP*q)*YmAV*+&t5bSK+uAwmR4F|so9~b^FtgWXD@xPi@V4-Qu8@smIQ54Q zjN1;xlc`0ucDj}=3&?C7r%uJPFTTmfai)<76X>8h3^UG}w0D1;yO|dJE=Mq)vJ5{X z!cpzlZmqsPo@Y#f%sDGQ@r=4d|Hp-nBX04?aY_d!)0Gq>;Q`8H5o|LhJA=Hc z5Fueo%+NI^;>luwUu8tEcy+#AF8qu#!sk_ zPfGh(Y2%+(J36E&T1|$*QO`&vk^i>45EGSv^jHP|f~k1z#Y|NODjPk|_P)Wc31^xVoA){er$XJ)b59|J6j# ztH#xkj-~grfg6Lz?0G9|QJ8`q}b=2(zWcDN>u}3MGWXU;A)6{vkn@v4(>Nb%b4_LRHkODif%oJ|C ztDjaau&zC;eH4W1^HTmc`;Ts?b}zmsX7*pMMAoL$pP;a5khw!oR~_e~z^1ar1`Z_! zP2_$v9>vZ9H2401Ee6oLWmP(?{|6@@@Si>4e>wRfKEp`>KpOM^IQi=y>ljmYH~g2H zmRHVK#kL*YW!>Q$v&Ra@R2KY96tbkydP`VDqC1X&zzcvNK+sJ9Jg%gHWK8O(yz*<* z5mdV#mYWEP|EOP3<#{NL&LbrN(1iriYTQEWxWqa{v`+e|sH%HA>YL~MqBXE_s^;$6 zlpSxF{CK8k;@V@E>wUX!ef#{e(gqoStQ>`mnxU^zkh-qfm>+XM{RCB`|6njEsQmYnL67grh+uLQdVr{*En1Nc^3ckw@=0O|Z&cg@9mx;(?w^3~WypK<*q{sR5Ih++d3VjEK zPOwsu{DwU?w z0{X-Zsdj4moH%h0LIj_tKb+L-SiJ3o#QhM*zI)&Q)k{rMC+~zv((QHJxnz&n9N0?2 zS54~~I#h~JA;yS*)PXG9&#V4*LcK4`f2rkj9*FN2@xB3gi!S8dGwU|oDH^8TKE{sy zx-C6zA$wfJwZy)~4k;N^I^V z!Hg&A7!y8}sCX$H+OBpMgGhPbGQh6+wmd00UO zwJ4YYnUg}`VGNco0t?g{#R_lzuG<`My6NXtID$jKjC_7aqHepx0O~%BGbjNKz$TlY z<0{Ml5U%ghtn6mdg^|=wg*5vLErWEVy)usGK7taiQbJdy3SAQ{`VdtH)**ng7(hf) z)JlRI;36O4hD_DU<3Unx<4Dadj0KPP%=cyt!SJ@7s76WOnjrx}&Y3PlQ%j*Fa za?q;!=hWyI8nmdRzEz;PE+iI!AKVVEaxtyLBPqShok6eCB1zyRP^^5XU=0!94ZJ0P zqU!m0t6NP07K?UJ+DPmVjW1s@_eba{1yH7X1e%EBz~^WXH;Jo$Ji|{YO*qVeX_Hv^ zEe1@AN>a&OS|Dh+q|$Q0q5|krp;UY9evAIy`yJj|Q1bS)lcPn})F7puBFGF3r-&~A z7FqpyfzQfpXuL}8GWt9|KCWB|7mMC23p!hz_~-`p5<@i?bb*#izS0>gVXc=}pcWAD zT)Vv9>Rk_f3%RO(Q1>G-g5DEKWM=_YdqgEA<>a_GqmK|;HCIZH0kM4;;QL)4mBbN zeMg2o1?8zIAS!2B^AzU`e1wXy(FGO(HsIEo7^AD@M9JWlfik)mm|{Yt{I6`$9!WzV zCK9wmy6?h&vK@V+_x57AHf*`B@A>?&p8juX4m_MDL>2o;adHv2&uKhf6#er^x^@yz z{4^&6W%u?Amz&pNs4ha3Iq1t}s9!Nc`AGANg!rIC>zVjbz>q*nCZ!_KaKuHNNX)8q zQ-0A}%oJRqX-H0`DDy;w#LAFn<^chnK?|6)%tC@mAgEVP1I|o{?e5p+{)I5g0bS@` zKsf63JM;>^bq`}y{h=_EF(n;`qoo`C(lF9b5WkahtT^Scr=A=Y4vPs6T;+M_d#HP2 zx=Cxq#Hd&zQ9_Ykh^U}XHWYsplMC<|vysbSX5p_gw8Xre}w*k!21~)ob9~^Ts@8<@Hjyu(s&{bJHJlre4eQLOzz?eoaK&% zloon%MdYX%D4`9}%jT?mD*~apRV&L6c*F7n7U_}P3OYv}=n|e}EPEH0?v77k2J7Q>^sX*8Tf z*fWn)r?f>pDTI1SQBDC674`!RiStkgT@bl!?|}tnv%AqnD{bx=!T-rY;-NtCy7}pg zvOC{t4IkskFSjB@CJ=z3H-vOM>|Fhtcak;i-JOkZhbg1Ew0pN)tie%tKv9`U1tvqs z2v(RaV^RruK4D-<{2dbUhPB~1dBt6H&)6a;n`5_@{19JW>d~xeXTOy3KYIL%$Gy*v zJBw2Pt|jR>DY#Tv50&~8!jsGsZ5Q$mMQ8;n=eF2B#7+A$!x>0MB8A? zV9(^3&(D7?e^I1O$o!`%%#2m=Q1Fi;32 zNMWC}r9O#l7912)tN=+ZCgO0Q#;lExao!^By`}$>yDlL}P?u6mVVkr_6+%Z^gx_Is^+HvTcav|+|DE9{lYSfS z?d+%6|4Hn{jZA`u%5n*A>*a|EX^8zGQu1$q5 zn(5F9p?>!p?q3$v!VA7v4MN1Istv ztMZimAJ7iz3R7Qnm~+JpR-*>tzHR@#qLUjoayn3%_H^Fi%>S36J84{Coyr4Y!}y4e zQUl?nJu&{{&;Pop`w=0f`)B)_4CGyJ=$uYKo%e}6*)HfkAk|5lJd;GCA!O{O6Sshh zin>TtHbD(3E485v+MIAX+*KT(39P-(#?isRRmu&wNSK|leDd^t)!-+B-3CFJufO5+n!DQ>f^53BpZ)gHe8GB z0CIzI0%>wlf?qew4F@m-DS;d_T1yCeLH7g#sjpWFDnRzGt2laG+{C-5-kfLBOCStz zo#-8Q8$qfz6S~7yJ|-|UCKjZv5uZaGeDV@|Q>PmS1AWTq&jWHFBk%Rq;i()e&xzR< zbQ*73+BNZqdhdPgj=TzmcB&4%szZTEbR8a|6AkGaSwxP;h!$uXw;Sm}u*5-h!qVnZ zS68TZ2aMDYmOUIk)OlSWwVAmsE5k!H49tya&S}eP?@bmweR+LArf5#(+B8LwrkVEd zTOla?zm(uaZ-*JJ5Eh)dj?~n0A_l!o!b`*$-JsdtZT}mrwb}TX|1L`lRd}F}ixd)r z3JRyNN7))45YJ9=MN(7OE+qb%kx&!dqZ{82mZ`^x3j@XRm~ca-1*Wb)dO;yNL+*P0 zD9{KG9U!AOe%b1rk!br-{ELI3987CMfM$@%%PI6{ORm!YT=pQCJuH%`sRjSU%*mn- zSPw`|HQ;aCWtgVxh^^0WPC-F>a4;bcKZf53R~fE#?K(4l>DR-stPRDmU41=O*ON{<=pH6=EaUz18W$pTSRah>p*Z`BRMy^I}e`^#*RT9ChyUvVQjW+B<{;tRiG<76~V=w;Ab251=-SFq776&uR{Q)(LVsDEHO$IjuanhT3 zfX}E^0TnHj4V0PouW%rvLqE~?Uj{2@qaXyY>}Q^KA~JrVN?~BU041fg^3R`qAn0`~ zDD3{MCaW7F&n)+-ZzOnxd5Et><$(4%Gx5_C`ug=Z$*G6iUbgF#w6t}(h0pJKNuTwL z`ui(}*Zh=|cKuEE9PxLYny9mS@E8ni@&c|2O}4o+w`BQ;gWB5a<*XhXQWIt(pkzVE zAOQCw4N?N)l_nS>Q+t3Rq<8gM63li;#j3^8`_kFsu+jQ|KmX1Sie{#CBJ(DTs{t=* zw3tH=4>5XK-=AE;P@W&pikX>RPP@j=mXf-B2iP%1f>W$CJBS0Rdf6R^L`4oN(==sS z$gz;~A)s8T5IL|H@>dgQ5k!%E7pmXI>^tSPr>cfnj*P+_Xen}BsgA1Hq=aCaUwYJnB3}T#KrNouV7Y*K(!y=P6@gjpf6S}JkN>Ya z#I!30e7F}EqnA*)TU)uO0?{wpi~pVADQFNsp2%z@X6Kj#I1AKWLZ!;2QvuN=^dF!V zr3KR=Oh$HAR9XF_YpisW(^-ZPKe{^zHJ}^b;HO8kiwL9j26=(Dhry~k@^&sQcM2_# zE;|Rt^cm2=(#SVS3`>E!}#Q|knm7_9#Ny(yPUA050d6->^>MKu`h6dRccdDh zT_O5!-cq6$7tZ(1*!h^@xuo*~{_D|*-zzW9&--Vaql3MqJqD_c_kx@x!V@ZZf}K7g zLZ?AANzj1^>o;3$o`L0PNymJoZmf6yHKq(M9^cCm zN71qxLZv+M==*j8SnB$&koowpN}C+F(!)9pN&*F1v{jzB=1E{a{^BAonTsq7wtjb> zYkr=89_LaXJ2}_|CYJ{9N&c82ToN?H@}ut3K}=!AmD1v&ZubD*2n2EAg82xjl6!Qr%m&H}dUaSDoYK!@NA!d2R1>aV>- z9k!=4h)>K9rwAcYXf-GXm~@DgMuo6P;`Tx4l0in5z4eKUVpxbrpgID@5C{$SNlMP3 z1|`N&12Tme>SvRIn?!t*22b*Rja!V@yNYWfSG73idHr_!sBj@c*IyJGIe#ctC>;bG1I^8DkhW z1WW;Zl2pe53>oOtIUgfF2^RZ@i1#lGH4z6GD}zx#d`hCB67oD15sMB6RA?ALi$Dev z4KbP*se;Mc#~K7Qh^Q9V-ly?8cJy1|2S|rhb_jHnncidO_ZYM);&!Sh#=7{N!|M;j9x@e%QFanVj} z`&y1Eg5K-k%^8Y!4%jI3>Cx1mKYvjc>HbP!*#7M1#lb4NBdNL*NW^ycl(L>w(Nk>L zJkSXk+zUF&lDvl^?{!FZ4bZDD!3ryVJ4yUIsTS8qT=mw) zb7)?A>80XBeT}fb#`|*^JiHU2Z{OpNpN~6NZ4p+MSLi&>YqUXk8fzY?STl1oI)fRt zzgxiy&d;6K#fyu$v~WomXyHEl-_Bjd4CZxl37EeEU0GS7<=HuV`VWiUkmW1M+O>;A zok}q#ijyc~?X#*lL(He3a!P;`P#K10;D{?$0tU!i`7Pu@ZN(w>DTZMkv&%$UIF22^ zHHjTPMU7oz-QO{1Vf#{&b7J&ZYQRZ8GyqPhv6q`Z-DO5tyBce@5vP=Pil*P1P6u0;Ui#{XkAG_yQ{$@oY~8{?+?_%5%5zxuXP+5PHk7NnFGEg~ zv7GWrVx97e(*g7(pr@5^N)_hekC01JW;@W!-5zYWhhU(LE>tqMk}vTg6ArDVn;qw3 z2wsr^fQExzL(ouSZ%$mS9$L!4@LX0&zI_zN=;3&upq*O5^7~}DN1y|uUB_5s=JyHo z7L%+baPL;&*M1Cx`^Q?vKkP(XH1ru2z<&b8_|#8ulyd!Wck9Q90V$5;W9+;+c`Fka z>-BcMvA!+C;&hlm&1l%Os`!TaghXcPObV9}u<&4|zj zq)i|Lc?_yBGW+@CV)h1egcUFO-4R zBBE{Ak6ZAI7caVtxafzT86x?1ENO!GSt8;v zRzkf$e~vwL$)z*B0d0(qilZ3T5xGg#FjXG)n6!irtO-Lc!?^|Nd+&Z1l^kcb;37e(pEFnN~Sz)WZH4acvR-r;)hR zq_E7|G*qUo`-Y&yfW`9>T$vCfiOySG9JL~ksA+)hdc`IL>*Vx00oR3+Yffb?@z@9? z%_MW;olirRhbXs1QFdBY&am{(xDckDhDky`Mk3}=Ry|o?sNFe^yZ|cb1f<~A5#7=SOM^$1wYt4NLr(W+o6c5}GdyS9HV2j;@^{S@ME z#qhv?;;_F`<3fjgfiXcbLF%Une1@QBl`OW`X;L}~v(dyAw!XXaget>2XaSI&`8|lX zVRS9PHlVklyrzz>LG*?)-{j1#57c=Z_-=bDeO}rjNw!fN^xPYF(wTBnobh?{TqSg$ ztVr)POLmGiA9I>FSk($j<`9$t1^L5*-B#erYM1ICWJ&dEo>Z7T5j(J=BgV}>hYqd4tDsG7Pc(_a5L1rEb z6b3|PKnkfjc1fU+#Og^2ZU_YxIf1(BwUZTxO$0PIY4afIBzx!5bBFcxN^@yxsr8^! z;lF<7XKKa1YlPm)Ad!r^peF=w!j6367{fmSC5!1N6>LSCQJ>VjGkA4`RRsjI^F^@k z+NLpcK(VJxyAauC#w}I81*Tghv?kuI7cSY%GTF^WHxHLDymIuqy7Pamy`6veAMzZM zRl-3wBF&;6nwl1eoTB5CB1>2@?;zgWIw_G5iUMgTW51XA+FFZ;-fy~*clOwS;3@;R zJd)ifw>A!c>6iWst0~;Q2J?}y&Nu)*KbkmWx?I3Qgq+<^5$2ZW+{DI2tvl8o^4^a- zb|;DGWYBPen99tSV!*OuU?fUvxOI-~c9ttw%9XXNLA%U+s7!lAw1q%h6<59G2^+rW zcmAijzj;s=-TIrPLGV_z`q8R@Epbb5cvP zaGA`DS+*kU8M5Qh0Kk@A6QOk?tbui1L$R)oHyn67_{t8WyT9GlR%fTyzO;Bx>}_kZ zr0HJrhxHTJ{%Cxvd-LqD?mk-$2hS&=_nepPoRi`dA&fXeYWFmVcGV?o8T{3P2UeQC z@vV(y@;lcDXRdYA!Gn>3iT2`!AGh4W_eIJm;7$VPxJjT_UwzfDBr5~?seIV0pHS85 zpy3QDomSFG6}5!QkoCA5v1TMwVJ7G!&>3)U&m5 zi6Z0~;(>35-t4^U0hG2tw62irV7;#DZV<_;CVsu}*m0G?gW@1-WAiZky;%f&<3A5E z*WAA=N5}Bu1>|!}Upf4I_wpjg#b)F`E~}0(?qbc?{;3C&XPr%P>-8OAL)IC>A(AHaEUp#{tyIPYWZgFv zcA9i^s<7kQ=C(heGgEni{UqsN2wXj3MH?pnq>`Lvf_2tD0fB{K!;ZNcyJ%uOUxr)O zw{NRXsyzj@$&P&Jjv=xbSXIS!C|@Vdous>t6{M$2(uL)t{=d&%5$>A@_@!_DQi>*qs7fcb(9;Au zOGIZ>^^A~AfiR&G^XDVXJYWqp>=^7B_W4N6`3iaP5~LFH&=8RZE7#3wv|SstsDZdH z;1MchqR8c-@F5Sq!-QRJ5QQ~q@|3Z15#tFZIvM$SL`Gd&^)88()IRS{jvy9qNh>b8 z!m4UJ4BZr^EoI%%fOT&St9|=&7`shs|VkO18ETqtC?0Qfns-eP!T2M7i+$5NGRHdmZIcesdB#nY- zlt2@Jo&=)39|qAN`_#u=dORu z0M*gvC^p-dUi$O*t+Lt8SY4e8U!VS6T*cF}d|~l!C)Ls#AFt`)fAzAgtgMv&*cW65{30z{O+7xN;o5%h>hINimEIVq zJT19AqpV*NmS;8S86!r7(O{Q0-WmU)fhILSBEE@paBg2bQs;=0<-Vho_a+6@{nQZ5DsHLhuFGZL_10V6_D~OJcEf9TJp2d9B3@X1QLny!|9jWpoS6oi;9Zk|?G)WbkM{akN^OJLm)weJ+bLsBf$LB2eD%E!X z+}xb|-RyTOn&^-dHz{Ha8TwSvVC0BTDs;+wUo%D%>thLdNsA`t^b`hRCaY_jvRk$y zUOcv0m|-RH#-M4Z1+laE*m4D4wMYdRAjq(4(NQXTKo%Ss7`9R+^5)H}~x1c`kFF z3s_kJEgNa%g2f<&g^Mrpdd^2j#DgO zxbP6?kbHUtpy%*hg_K4JG!#>i+G=u zy5{^_%M*Z#vJMzpCRk2hF=~pT0cQUZ!Pj=-92K#STq*)_rf^+mR1zYyHWBF`9lav6 zh8=AI#>EphMZ+zEyGg*hI=$rrY_D!OA9g~P9(0A98+)7W<;4dqz6p^og97G%jSU`R za%u5=EPyY~L0_195m$F7qxWB?w@Q%M-}>8sTYy5GgtDQ}oSS%CO4=Tq2p2D}V&}h_ zU2w)S;++T%1h^>6OA7*;Gxk?Ifr0Or0?g0PyS2{R0DCrDdkR4G_!Vk6xrUN0n%V-C z*p)(z;_`r*H(-ez_;tgvIdY~5ZS#qO1dD`?^k_I}m>>#Gf%MEJkU~rms*xMxHfLXO z${DfiDbR7mb|`cZa<)vKN^pfLHI;aSRBjPtl|k24wP@;{y=PP>7EmCX8uXtC>nOw$AvfU7yCubfW;hSsQ|IlzhsRx zXGo1ex{~*F_U%jG*Q5VPyrp@kUzko0^k5*9Y*kytNg~0*nu^|ZkQ>70?4@f8*>3Q`e)|$S|8V)J~*i&$m=$U5VCQ!fQnlHsJh5mZv-Qop%ra{^Bou zBzErV?qzPw%<0^0WQHPZ{_5A*@u-SVN7I2ewFhmdDqGi!3<+e2h#J0P0e&=WB)KRn zcgR>Rh;BHztEBV}GhgL|Z@Ap;MGBPz6hq@fa!?#Fa`-N~X;Mu#H0Zu^o(VicKPpfd zk|u^t2|J4oBIz!)$Sj|ef&3o0a?>HdR*2lxz&An38fkAc%X&MM6#EV%O-zlpe(M|m z=||+#NtfqTV&e$@B`~+3xUxV*7x1X={3G%0O1q(j4m0tfsx}HL%v+Cz9ha2A$9`g` zP^h&kZ4l_XV|Ue&d)L9e7kpSh!)IDM%^h89t|_KV-+!gM!lxRi=6zc;qmF{*=} z78MCu-Lb0*s1j_*0;FQ|H7tp2PE&}+5?%6sm*H2ns9yC&+0(3ZK>{t!NX={ z=(*mPu58NUU;6QnxAXnxiDS@l{rqq555D+{uQU$naFBc4$T^RTZ%22`>6?RNS?Tgt zSa|gs+BeJmFq4Yy4DS6H~haDZ~e37uimxjmdBWxnXzt}IGNjq zG~aFKA6Ya1k;3iJjyZZ^vAVu3gmtPWBewvc>7Nk zf69Q9AA4t4FRykRBaK~_bd!~D5$G1wYVv54`4^TRGBXfMNrm|W1^Hf=sM$;_`+K#@ z=5BR*clX(y@#gX}eQ3we%*^Q8^fb*}nV^eC0Ryl>$`|J6&EsTy|O z;&vi3!UG={#Lnz;|Cku}t+8PpKyeU4Xx1t;?&YfF6Rm zYlS=m>6UnTLsLck6To?qq*<0G?Os}I_MWd^&;R=3{jr7CmoT;ZasbZDrG@k1(!xSm zK7y4+1%15x?)4gw7fUG{u#6=4UUIH%)C|UV(I#r#GKdBc#W6?5fTc*Hsd4-2eku%;cSk{?Mh(8 zuiZn*USHEjw;}A4K%57oU%1~A#U8_`aGEhoFL9ygxREvRbbzsZ#c5wNq>c98R>jzG%5rYm*K$MZ+AFZ^-e1R zp+-uz;6in0V<(-RoxSUJ$I8e;T+a{f#Ad7MeehK{W{s;?7U3D1>s-#TW^V^|Id32g4s!KXk*7aq%9B0ZlNDhO!#S!=Pk_ zC$w%JtN6r;N@ju#UtnO;xRY%LlUOfRpiS4i{TvHKx^ZPuHm+Qh-K(z)&O;W@BYr++ z{~yaI5Klr)M=s^S?OgM&I?XhcME0?|UosWi5~r3SRM810o-U|3Y)Pw|wX^(}|H&`o zTJ>6Yd2ZR9x#LGLEiEna>rcPVZ>_#H%wQ`uPZe5BE9psvTH4u8ln5+|mc{Tn_Sq5< z#>N3x$py7d;_AZkvH?Q!Xe<`(k(cgzGY=@?JWc?7gz#{6ct3UNexT4~;ub4gEL0bC~e^KFaE1vOkcf57#?I-GU0vCjU^=$8M3!MUZm zPejRP?QQ*!Bb9tuW`W{%I0(i7Q05p)R_CK^(*wl_XUHC3s1<>KAjDS(tB2^qbHe)~ za$t=c3~p)AUePORWe;6k6eo}dfhG<86CFfz*eH-o9A|l!GI;;5{mx(ON=+ndWG?UI z)rzkS7AVHGP=j+nBao*RM$HmS%|l9BiT*|e^hWet{Ld0nLNdaF$->D_(9jmYQ+Pj0 zb4zmv%NLgKpZizP-0~dHOw7>Qch~5x)wgtVc~X~jDfU&x$9zn$X0D&3O%$1v^+o@gcvJ!WD_h(ep@3~4np1;R0}?@5&Oz}+1e%b>>)mzBBD~Pj!dzGAm>{B%+cvEs3mMlu`<_daU;Zb*d=Smf zh2^^wQ464%g_*b%yPLaoY4wsu{(`yNTnC@&B%sK~Wz!ipb+bKUjbB=D3IBQ!kT*^h zHnV0xD26&udVcl?!z}riUV5qc^?&l~omQjOWXF4<2s_Md&5}DIgocXNEK6q~H_O$D zND8A?k25&UZwq$hr*X6i(Ux??ShCEANZ4^*N)*M4*cbtI zC1a*x5QfYYDQRr$Q8nPDR#Bi<36;U!>h4Y*_5Hu_zx{>QnV~bii&rknrNv7H7GYh* zA9|w{XD&zio^L$$JHG8o-`yDqgK1Kb%L-O4VmGA4$5sSC_BXb5m}BBf*s5G$5%vLB zj`jR~A0>kLzk24Yy~HI=R^IjOZ`nK?Vp=26E)+dm6srunibGOK*kE2Z-b_`e3^!Ov z@g)iJ6Cs2@S%l&zgNC1!LcS7;@F!LD#|84Gfbg_6lo;T|d13nPKWf&I@Tx7edSzZZhr3Ld3(!d_wr*t zo(T`~4-5=Sm~PU<%tmSVkI8dm?}XH5zp5*Y%(;wN%4XoZIdUjYiH)R#ETS%mCaep0 z6BpCPnT_~d50M7=lS9H@I{#AmmEZZ5c95`3j@G^SYdP|W|Bnb>L-eXu>q~H()d)fn z>CtR=d*w)=JRu_1iPN=)uyWD@rNL;_m@Il21{p7|T0en5BB?#T^KTPI8G?!<&zdQL zEm3NvY7oX$)OzwaU@hIi8ZoWrlHZc9Z2RZ^&I_-;uz&fL%lSw72S;2*CgvZ^%twx+ zyLqpoAVtWI%zEtn|hCk?bx*OtU(2F0msaXNR z7_yU)h0)tkx6;w^eH&i4oPfY`{KzFllw?HO#KD=CKM=K^K`S)*_%quoh1|A}90A04 z$Rv+==ghPi9uXRuJ4ZysSUpchS~tQbF`ZD+(SR`I6F-npl0MgX&ON>K^uf&BOz$2d zshA`(o}#{w0OKe!|3DX27ytS_9k>h7!FgNrhwJ!4r92Al-+Az_|IDw~_S$=6ZEioI zqR-`;|9H^wCq(6GQ8@*N0rLg4h*?1^-b56K6^+UaULP`Beu`DSBf69lPaBg79Q&;p7T~uQ2hq9l7^ddBc%AAf+sF0NnFFj%<1V#Jl~o zqunpTAi&)8*fN#jEcLOOuG2h4I>ftRpCwT!ylc zSuG$Q)s_w^snzw~g}0_LF{LqfEMnRs&>DlUMR*w-O$&Mw#L~?cT}&&q8JkR?S>DS> zLlKOCDf$m_#FBZA3fuV=BdH*bFf zB{dYqP>*!nGfhe`C8g6OI19k|hEIZG_mjcvE4~kI$qJh^j$IIL8ZuoqeAkovu84e~ zj5U|(4u_(3IQB$#4wo{z9btSib&Llxg`5SHeanpcu5TCda#?P#}$o>dJG3o15A zXk1iAnAjY{iY0FZl6vy7OV&;k%ia;i@^aTIj!?8&`H-2n9o&Y6a8*=qb-UdIN~3}# zb{bGddz|pDhB%}576{g?IuTj92^M-9DTVnVspSz$t7{X!CC$6}xSb@XlreDx7$3n< z+H8LHL-vBmDg_P5ACUZ#S~YV<5UFG>@Ox?@tjbyd-C*DYlH$4xZmk!J4WHI`PyMYo zZD7Q`i*JRk2zPs!O7O7`hMBTov&P9;_{Q^%BwNku2XruyWXV8BJB>Wg8VC052r=8N%IfduJ^i&W$ z$z+V<7*#SzyH+{2x*JzQoGxQNY8(LGUo==T)w~vt@HYyg$Ot$v5=s^03shqTf7e0Z zGjp{KUH?+|scrhZzt{Va0?dK1e7C>wuod7oo%?N2$2})Q>?QpAw5$1Ax^Zozwwvt^ zjBQ0^#X=m*o=1_bj3#o#B@tePxHqjiS zjK(CFNlVPC=viVq&EQipH$fPOMqr77Rjd`wa@EE~Q2Gb`mR+NJ1@wRvTg1E;R902> zIxAlfjMbj{wUCDGbFEhU&wQ|!K6%(28wlB%w2V{N*r<=IciQ(;v#Wi1h{1796DnSy+wj+0Nz!?I{@C!*uBS8U0vUigBM=A zY<$A;ZhWB%5NTo;N~rZml};`1`HwID<8*Ituez7-RZ)d;BYB^B@~PJXMIc96jcUEd ziAHzzU#=Ph=BFBb@ZuXU`g42d%=sIULQW){oU{rdi_yNzsaT#i`wks5fC&>1iHcF$ zCBD-45BizMkOkEc4guN})eU7{4WKn+52HeE4Ho(KndW}`x&4-Zs<}Trl66m4gFM43 z&w}uz15SG98rCsaHnBwPoH=^vl~u9c5mkKu@U*!xsj-*UytP`D@5vOVTf|9(`=q!P zRBn*EcSP|WVtktl_g<%?n?2uY|I@K|a?43PKmk6plX%}E$X%EJ1WyqCg!Ay&gg-NV zhFS-$_?NEcq*v*M#9%P+rde8Jz-i!~(}-XE@wW}^cRZaBDL3q5LW=PW$Mj;&xc zWh^F^DmJWvkysk9h)dm_aI^@JtO$i@Qxto`ydy+AMqO7G-5Tn4_D;9Et#b#5G~H?r zj%A(6S|Mkg7H8Peq$eJ%`A9P!Y3K?yJ`>{tw)R=$Er7x6dU4RS@gpeA9M+5l#XA@` z$nDCLB}0Q%5ut}!z^&AbbF;I2SK7EwBl{4X!jB#padf~O zn;LRkN)vI^gmJXU`mqbSU}IeG$k8mn{xvNDQktN$+Xq-FH%vcqV;?!@(V3r}-@i&% z4-!pU62xwN({`b?unWmyEM)^05)Nz70qcCSfzKXfg=nWlbsGSoYTW;nv4mC{q?tn6 z-Uu*^#70qPkabEACTxSAZK|6TnVQK*(|}>dkYd=A$WcVrB_Z8N1wra;_X9krB%@Fs zg>_&913|Qr6IH8@IC10)1KFsKi^fxImsR(~QPZWNRpe*eOEWWFx(ELlrMx$vX>)zF z0!W$LkGwdu<)jZA8DnE&`tuk+^^@Cm?DNre=8iMtEQ2r$>K$^96PNhd^#oP# zGxC)zuO(76(jXlpE=q#f22I)6za81GwZp?oLpI*Uco4SDekD0bCU7h^!1Q1M2vMGlo;b zIoJ#$8$VB|PZ9juJ2hCO1JiP~u*R`DDN0cl4yGGUnk72`ZMq%<%gG1*1q zsdJ59dnf(SHeXqx^D|KezHf5_`_A)sc1QIn34RPali5 z3v)hV`#d!G>7902nA#Q!X<_X`Do7qsVON6w!!k7$xCh=V`!YwaRY;?!qVR#Qx$2N5-CB z<4v45C-E*DZ!%+0m-v9&%5ZP>_)|TH_5EMny-HWtu43+MbN8R3y$JcO#oy}AEzRXM zbc2N3qiiybGWuHhZ{fh8#jz6;Uned%Tx8FF?_m5crJ1LW1=zx z<>x{ABoR#{%r%2KHibOo739(fPUlO-hLj#6Iv8N%kktpPA{$B zkLlr`cSr7rhf*$nGXG#{e!jIZw9;GCf&F(z-B!qG<5a7-)d*qJ<+4{V^3Gt$^G1)ICt6?!FKA4jTYRtYc~&WY~A=o!ya0dfl$>-D^0@=6}-hR zYzC1@h5<@qasa7|jYB?HP9u(zj8{3NK_vOkexH2!e)r}FY<&C|C#5%W*L2dOA(abQ zjLqy+5#dh^XE!gD`;tDC7d(;~G{ zb)SiiUBSHj*i-M==+cOKxmwP_q6in%_;T4dCVF>x_#dKtE*JfRBz7)air4&uqtUci zcdxQdCw<^wef5=m<)?@CMymO(sl0vjWUF&?w42`;&AaQ3kZ-4k zA6hX9JqPU+EbV62>OS{(qf%K&MmY7XpIV(to^PH^t{pMwOVk23UoXz0qh;vjustX+xBeuSMGrqTz;D`AH z=y&Pd#-OPwf?0;kFPFRjfqzMh@|9O#Xr5@D*d1;kYz&At28%FU$+PiPwZ#ytTa=_# zHvO!RYqbWzBU5Jpz}sRBCBO7fvDrKt^l`UDh?mKjf!2V64I6KuXv2<`82a)J-T7Qr ze?EV*iyvkMIFj2psh?K1*70M%ECQB{EBa;J_- z(D`2jzqSVV+h2oRnVXM;t8Y&_Uzo>NI=`E>TiPya-NQW5!<<~p<~+q#&XOMsMqg`{ zJ#t7QpCPPgk%v8{LwkEqwsii3B0{*VSaVOo=D7T;FW+=uMx~Zoi#_W|5E)gl!QZVw z6lt@KBEcH54cutSM$ku>rCUJhk!qd3UEgRw6Z)$)6-Y+`Y!mbix>60!C0|D z^9#l#vZ#0gdHtu(wm`nQkEEp}tw7opaBPUT5^PLfShguhHGqa(*`7Axgm&B2fz}?L z?0zUsdmnirqzN}@pb#BHFi;7dP{N1^>IR^*Cp1%I#Y%vCN;bq=GLE%{JRcZ%|3Ns4 z&r}QeVRiyPN@8pzC#H#q)xT=Vfu>QZRsp-E6vy9EUv{EZFtsu&EBg zb!@VzO(qB>MNQe?L8vl};apFu&~#9pN^%_^KddxjO#V?XW-hkCHzep7A)<$;pma(^ z$E*xt-GssB-WW+z1kl=4Q);VF2SVKeMz8h$z}+zRl{v!9i)0R_eH-7;_n-(rx+g%t zyC+VpvTtlQQvBgP4|3J8Ykdw(-OL6QfIDm@WwqpwR!RypQ7>~k=N`xk>YXf<= zhHc5Q@K#!9Qd3P&OmMY8clfOVdt!|g{|0R@Sp%_iwJujyptO)K=al}`_LG&K9~N0 zM?(Sb#8h90HX|4tu$z8fbwjY+}Y7j*kI9BD6M&>%{vi<+zXPd3i+x4vLAU$Et zo|cafM7{`;7;=LR7A9J^%3Wb}Kh_Xq(^Y_dV%=BeLnWJjW?4iy1AP!<5Mq4G4(AHs0~{ACzAjjg(r1)MQUUH2 z0`%rir{^bRzsTtp6Ayz5V==YimZ=CT1?fP=rXD)yVG~aZtqAELD~%Hw41}7niDpbu z0Yu0!fz=>Z`!}Qy53rGBSbou_>^ftai{q_BAy#O@1{1AHpc~A5v&h0m+DP`@E$!m( z#oopKOFg#e$5O%Ht32uoKz&v>T?6vxJNbS)sjM3oFxXJ)2n*1JNGw~YLC{D&xaJtC zR}KNSLQu;?7!fl51aukHi!CB$Cf63c?i^RD36mB4?KigTtt}v;ifzWR`5dGl5coaE z?tKl#O{yiE`&)<2-TG)Y)$cPn&Om2yaEoX@Yo_=|H4kuqA){ouR3?FrM9WVvy!QLW zppLcB(G3AzgBI@+!@UKPw@HfkjrpVkzuVcZcC0(dUf+DbY3F#| z|5yjw_biXp2@vi5-5!%-0g(+cGt4h=G~zaio_>WQ6*;trU9ab7-$1^ z&sM1`ThDAqmrp>}BN!XfVgpDYPY~0))^=(RpD6Mo*xZG^LSam7?-SEih`x)0uL87M zsnGUt<#KCm$>t^8S>WZBSZY4L;EzqfLy?8jw#G3fiz}JV&FnXyWe%xNRf^QCwiH(P zw;6_LDbq+%7~7dttXv>sMZH)pjO}vPBpTClC799h0yY>?Z1@_Hbk&+eflUG3B&DnD z165tERNeOAJ6VgCVVsAbyF79VaBo6oq5pB$W0qI4Yk&3hK|L9@*+$N&jbdsR zuvx{Mq%^Kd!hOl>X_HzTzjV+SJJ1lsBa>?mbB2*bMrNwaxkztKh6 z4*o^5#64Dkd!+>894+7-)~W|g21;h6@D92#VXgK9sL0U~5C6e{~NnC6Y4P3aggV^US36%py zeptxiVc2o)bHDY$eTzJ%07erxx7=^MeXIaqoao2k>#g>G{or&(D_oVLQK_g_TtZ3c z*Z{s@z;2FEQAe62#t!X^kR#7iWUV6Yj&?iU>qV{i)z==tXZ#6Y$HS7x3h+J1QJo)a zFVMx_mOFpWP@+?G<=q2!yh3Me)}s?O$l^LEXH$Jq6?2` z5f+RG;ozU*gn=jFi@4nwV{;>jlLb=Onn+08d{e_q?s!nw%-7)gdQl9I7e*4(p zJ~x)?l@(xiW+Hn3%PW^O=JiX4um0t~Kl1+rs^La?7fieN00000NkvXXu0mjfiBL{Q z4GJ0x0000DNk~Le00031000312nGNE09X_g*_t+oDr zIhVLsMNVfHzs*E%T>9ga`|m6s_d#p(#%p+)cD+T{Uw_@`Zu;)t?y>)FXK&BwARWWO z!GZacr+=3I_KUM#_|3gqSL>rV0IUym0$2-2fOXj!yx3|DAM39FPuHGf{Isxr|M$uP zT&=71Gg|ES)tcCojsR=f8C+ZrSJh|-SzNjxO{-Zwq)w)_&>uO!Ct97-m)@OWOr2tp!XA{zYwnA=xW;(*3 zndAS^>&gLKt&g~jmu=^wxR=)L^h5iUw%WMsQ0zZ(+*n_PHsO^6xLO~J@n351-Md`T z-`Ux-+o;03BlxuJsK&H^!28c^Nuq0ze*SrP0#^>;YJKFe`C|9HY)F^ZA<^N^k$pOx zKr()!1KNYL+I#k+y7uAiPj3YCk(YeZ2XM7Mvuj}t9jFGzaU&wHG^HUi|a9bplro;A(x+i>)ohr8>g< zAp>7*J-K_gaNp0Z5r33*@y>9+f;^dDpMa z$yv$t3+eImv(xr^-KOoO=jpF)+E3}HG?>0(!_CUp#&di03sc(~jf}Rpb@%w#j*gD( z+uy#et*`kw7JnWhgDVGcwO%Y#{uulEcm_4&gS&Ub?(w$#i0%cQy)GlZA09V-k!CJc z5xAaZTxNmm`P5&uu0lGB;pOMc>%I|2 z>BY@iuc5tr@wenw{E$w7Vf_0C$!N_rb(YsU%jff=;Eb}F)w$LdILo9l5uU4PVAdE}C0UwA<`5$jWhB9j zgBh`Ck#VdV)jr%tX|+abh8*jB0KGs$zqMcYW?HZ2oAq$}xcM75Z`L9lU$kzySZ0it z=e^xs?rIGO2W0#ijs&h8z}0%c#k9YVi+*{UmM(hZFTV4&#vlIu@BSbQ{U7JY$Md3| zTghA$6~{uSRvJlOWigNQJPWyndTt?_3Jl+r*|>E85?P`$Q6LGy5Y!v1=9WhevzSw_ z=ECZrQe_&eqR1-Kyc!Ogs>)-1Bdk`42KM%L8)4QLvs~l-7CUfnx3!zYL%MTkPe02= z#_W?mfUET>U$=>FA9OwQOJ1P0{par?_zi6K|M3t0LH7I8Ukv}@;obaEzL8arW2tp0 zHCm}zQ^tyWWK>4x!YU~&)_Kh#G;Dz>z(!duO6PG%@zrl+8sQg^*TV@kYM~*DwKP&u zZgYxOHPp=6bj~xGPbgM2q3oUfK~4YYtWvWY*#v)(0ec$My$8GgBVZdYI)$Ij^%*|& ztM&6O0{ZT^WF*hu{h644_l|~>*WQxi{5(87&GVD7WlhzTYLW+<_cY7Px|#NcxTleO z(Lx!GN@FWxJizJ^&tq$TYAt#<9sHt3<3aqIu9b&vKp% z*(^{#tEHZ2T+USMYAp}*E$vs2CJ!6B|5|f!u-oAI_}St7GIk)@4Z|7SR{9LDD+h43 zUeE!^`)AB%uo^x%xGS`~Ep#%=Xz(zbYo5p2N~MrDM7_$a3`9K^?MI~ROg$s+nNqKF z0IHlb6DoSh?gO6J)Rr6oj;5_gvY8OVc+<=sfHr|c#bOmP%|+v!CCr#;mWfQ~L^C)8 zF`AW4H809yb{?y0&|IrtyH54}x6bv!jkn|P+`k`D;QPSH;4{9i9KhB3$UW`-{e2<2 zDO0S&1DP#5`|ol!t7ysAO(3R#b+8JOC@nERyMgHtf<{$>RU z8~|k=0l@gp0&;&u0JIbVq-tR20LUExvqZKSSwc;sH5*l|JSVXk8_gIFfO$%RCsNxq zP@DwG#+B-{v~p4mbUGf_l`+r18e~4DX-)TM4bfin!cG7V>NCWJa8(5SqOKIOFCe%F zhSr{&mc3*@U;Z!0RYvoEo@rG^pim^Cke3k|`?sF&NjT+?ZJ-WOINBjcCRs zQ?)n~4U@=m!b;<)ab!y4n(C1>H0Io<)HKsG3PD#kXZ6a2UtfF6pZ`U%0~e3;1AeLZ z^yj^<9KhB3Pzx3aB;VR`nd^97o;0!KrtVV~`jKsD7FX-2YizWp#OrEtg^5=z>OhGH z%r;P?9vc|=(m#yf#|e-V;7_BGMO609 zEGkRI1_uzUU_2$_nVL?-coNx0Y;;b<=awNAky4_KHIrO>g~aKU^BV)YKO+0x-!;8; zi}Aegzu-*M9RfyxKIQAm0epd1H+%zN3tIj35*O^Z_J0r8PWF(BBBy!JEcWYMhNiSa z7FStl-HbLYgmp6AV5T)ST_p+wBOQ=2@Vh-D%gs2)b19+i2ctLS`-lP%;iJ@_I*JQg zabwpS!B(3bfq&;v0WwqLm?n%ksz(7-5pflXW*!X~O^9gBN+V`Nq%xpLJrydIsnjU> ztcj8fahy)+aj{}Y$^l%hmtK2!?gScBHha4%V{zVZ zv>C9;(4wqH(KTaRSK|!|ys42kjd;_H)`)18$c9GTC!;>GhyS^87w*G?y}A#p2KJY+ zr7x>@_`SAt(YXW<1-f(_nGM{7#|EA|G)7z-8Suk%bOzXDVyY8jK4+%B8uyr`h(x&= z6%;g!8knMxqWT!mj0S!E_qTq4r>s6toq;O{aJ61)?eCjBdhp$hwx&fB)=Q$MKW}&? zh^%VUtP_WIwPw>OY^d=Tk!_LDCW)Zvikd%koS%J^Ox^e(l>!pf@2M0&lcvuz1dB4~6t3hMU3M;Ke zit9?cVJaKZXp31ljeY0eG^S1L{+1$u0VyH;$7D}I#2Ir)`+a(yCF?;#0N?NoTkH1z z?r|;Z@ZxKi8K6oS@ohs$1z^0u9T1lU!#B=|4Pc`XNi)X5VAvoNoUld-Kp;ekRUB}z zV@k1@4uL7|6AXZ-NQrv&TFs9@%DL<#r3k`*}!78!j`W^ zjvLh2rb*aP(k&*0{j^DD8%DChND1Ho%vOlFuVg)ukV_U&@J~kG*{r{4GTtYCh&2D= zu$E1(#p5Q!2TJJT?@$Ub)C4tVsxhNz(Tq`G%nUeVVNvr=gOD%=3xrUF^qvAnmq;@; zwOHw-E-0KoqKOI5wtj`b`JK0P@6J1VXAk9v_K27bS^tyl$WO0D!19SYk1Gf8`CcCh z;DbN@*0)sX=3RL(orXWX_g==UQqqhDb-x&z)@!7+(KNIrL|aO_NlII8{K^}~w8lhh z%Ct(#E6D#5c1y^Dgp4H1h*??(;5GdAaJ{;Japdhz?x}sZy#Ci6=!M~XeP9s*B&UHa z0^lLiK*lks#Xdp~@rr}Hjnr*W&A4qnHU@|>AqFrDxz-{o(r|{SnFb#8a+%ZpdWUwJ z!$a32L~$@N5T#SWq~NoiK!;-Vlkfxn#GJqtDd^{Z;bKdLwI_dr5EiYfoui{?UVy&; z-MlOGL(2Z_epP61wbW4@1hFAEx~5S!EZP7gZ}C+~fbiqxTYK2;UYS|}-Hn&Nw#MK7&E@AvH)>zY9gk#qbV(F?#yl{V z6(d@Q<1(f#W!fUMSIp=Y_IWn)Swbm9l1dUeEjeVzn6k$&d4+BMSTb`^)cd zn;Ja5+&Q#51n%n6Kc865;K~7fo^$qg6YXwGh4iPE_pJFzx-ODO(_aiUq%3R=3z|?r zWHe;;g5EkAZyFhP{#Tj#RkgTnX0H;{mgoM2%0CZ@P-RD}5Bc_mFG|;bdvqSEce}sO z_OxH4=kU0BVJ=3p*!`?~j1p=4)ld53@6)Y|2GV-~XOqHxLJa~)#DTHbD3Gdbl6e&K zN@RY;m|iiGt!TW-OdDqPdd>A}A?2VZ>NT$x`Ptf+!(F=hlr24rQCQU&>A}5wXuW<= zn((tOMb#XSIk42ZUKHZ^*5RS-(M~AdZL+i8yr3rQWqCCiH?qQ} zYs|V4&9;QHSIqboQ+w3}4uLkhVjq*hz;b|mfb7FAoSt6YUfmUl$KJkWvKy-(XKUOD z-#cUWYTiY`5C3!_f4BQmxPU*$;$6X+3+^EN$kXqfRs{BdU$A;3LJg=Q zVO6|z#LGseCIF^blhlO)beOGcy!K1Sc&ML6_ijJex&gXC+OX$fA$}SB#mBv_9Kh#z zImCCd3qA81^CZ;kXG>-EeLCO=C%-92^iI}XTg`c7C0o;$LGp}%{;GEZz!!i6 z1N{KFVmNsTYHC*4&f*Kgz)%h`ha_fhy3tpn<1F6L(kAr_&KgC z2k<#x7lo*nzwX&9If5?qr$c`9OKU>!Jo zAtEMGk}N7|)W#YMT1Te3n9r+6XQ%b%=4*J|GFgDE0y9gEpTa*M|KoHt(1awAL9pMtB{q zm!|o!)5FLC+Tr#_K<_a%WbP`Oi-N(TG>E7o5L@PW0@N7HawB~2PC*=GWE_|+s9L5H zgDAR>DE7CZfCmPhGl->67bb_}GX-SU5HqNUBE_a*;U%7XFSy{a@|BJh8 zo<4k*Z~<2i;B&q%ggWoxpBK{Z*?ss>?oacqS;_K-{638=&DL>^35`S)av;CKEv z9{zVE9iRwBCXpF?Uq2@Wtk?=R3>P`P7&8VrrD7inkcA`t1OrCs@}=Y_)f3tpUIY>l z89%!NU_%)o4HhL>F~KQS6m@QyOq)z*nKo0S$?Q+7Np|PXVY9c43;2|;D+lnoUQcrP zeegOYVvu@p@0HBzQOTzLhCQcW(Nz6UH&pn|R@G?5%m&Or*R^fFfHofts&xR^^BvZ^ z$gN@U6%$u5CO39wu=dQEF|dRAeV&ofoQP{SZP=)Zq>27(F}G}Z73A(P_QIG-G44gC zlFfkhD;@4jgk8OCD+2gK^!pj#rG$T}-6)R#&%sfcA`%P~X>wW$xoL;)~^legZIN!SYYY*tvLo|QV# z2q_L(RkAfzT}KfRxjuG&g#1L*Q>BvFatTX)_fChiYdP^eJvAW3>3Msn^0d+fD}X{G>FDSL7UIZ4jz(t zn2s3(ZcBx&V``lMj^7`X8*7h{s(34b8fAhrs)%I{ZUN&kBGWNz?32i3GJ80`w)^Gk zZ2PX#x6#UY{>O4{_omU|EjqXZ>GV%-T{(cy`FePCx3#__+IfK#VD@lLLiLkuT=Wak zx~DM?ner7S5A}WbCsv>AGvWa`!3QY4JqLH|d3v?bUeEZE&-*aVjEp91G!|yemsR-Xjsz-EPtl#CH$)1e9t$sB*M%3`P;ph1Xy zqYF#?X85r)4PBl$@>Zf5+Lm}JFc!n(AZ@9Xcpk{6isLgquhqt+GRg`ob-0$FJ$Rh& z(pMt-{qLU!9MaCt&a;2t0-sV}=4Y!wcI5!RFzY4}-F@Fjpu_d=9R4HWQnIXyMI+q9 z{C+fDK?Fc-tHivjp7-+*#_wT2u=Oym7Ut$1vlhPVhTnm7P~B&)1Y^0r>+?w1&e(5s z%EV_xdd}_;bi%|_)C1rEf^gF~s27#^)cZ3=mk#+xQ--KL5^xOgiq|Pnti+D3UcB=| z5hoV4t~JS?okY!9+Qwg34{%s9fWU@HMVt*NM;fKz?7~J2K7kS1oxnT9V0~$%muX$l zU?ckxouR_mJj-(3Ki)xPwr6y7M7N(cOr+lPToNb#+0_%S9Kh9DS_gbaH^bSa%JZ@; ztd6}#bP$M#O1h%Pt4tpDL!Hkr&qVZ$8k=MiCPrEjg*t?+VV-M-XO^Hb`X~=J_ds}GyiEPfyQ#PA;$WL@8%#WGu zgjgPt@QDOI6%A+1Itipx<%nWoT?jQQndT7$pqb_wQ4=cGXh9gXV$w5~fpRvBs4uWJ z*y>|f=vUVjfVhZr3@$K_=6h}CA-_uvr3@jpFdcOyCW>MMBAuSG^}%LDOnm{VscGLB z+6J)~LRLfz`SG~Ue*e2uv>hWvjh<=YK>vM`$$z`99Kh9DER6g1{y*=AdEL*dpappP zanUn7fyaQ;4v1U7#n2ZB{{fBjCty}Z!CbJ}M)C+9CddXO1|1iQdt(+JvDq0how3nl z5qZSIj{@n5P5A_U?e2i`qks?`o@MFBI|IB!>1Pzbmai9)`H%9_VA%p0wkT~ zL|M+JC3yRy7y1PGK3IJEMA~bOQ$1P1$YCDZ15=%sQ~&tN94|QQR8~**T1# zj7|e00I|o$cET(tWOSAXIS)OXUbB3rn^NaBHP`6X_%Cj*=vVUpukCJcE2No_tDzZdwJ&k+85{x9@cj2^4dX%ITisW~s}V!UQF+bq}Sua@_l-}s;Y zhC^`?PPfOqSm@R3{(kd+{OV1J2kLPai9$)!8906{WNJY}n)i2$_WGfh`8gE>9ZiU1 z56~i5Ja0Rq+)fTSj{rHah!bz1gNu>_0Qkr_6e0S1mg{7ePd3)Wwe$0E_vT%@dvFsI z5Ep_0fMkE$sE`u^^&q37&<=l5BgC$GsQXozfqD#?j7SJlE;3IlDo z?{e0|Zs(PMAnsV4LJKiJY-_1-?Q^`Gpu7;}m@@I0nMOo(&SvLAc1l90r18v{&a%j7 zIc4X0UXC_GJz3Fe_OJia$^2jWAOE$vFuQo?0tdXb91?i@w*HMD-mNx>W~+HQVUqEn z$j&q6Gs@^xNIc32jC6w^6X}^S=)h$xsT%?GAvi!hwMhH|IHi`SAh-%KTpMZyIZ%g4 z7YN`Zqy>17QW}vPH96x%CX~JVqs?&l_*iy#4_iRQ6Qlso|JeBA>(6#%_{sr%wwLc@ zi`%8&uz8UgWHlH)J$&|jx-T=jzS-kJupp7MCgZF@bw5}OrNua}wT^%b@{3&{;E}O( z6E=Y6UT|{40RT1&fleZuGGq6*5qkd2bY{#b0GC-U!X|I!;7rlnI|@0g;A0CW152QxQ2uBqB^>2O=d@BG873 zUesj=+7V+XFG-F7(~XJ56i7nUJ_y(cj|!0gt5{JP=QFBusVIAQdYsXCTaLE3)9k;0 zMjxa?Y`otNapCL!{?C>$L597k70zO zBta_7BLK`Gx1+`||JLX|u<4kE(h2$il92*_?Ai!;pD;tfm?or{!->vo$|{M0UOAT= zZ?8H5$P@#Yb9ycXgB_(y5CT&syMY-k?}aoNcN{`T@?YZmM@u| z3u_@#OhlsyI^r(QAt;m?F7^cQPg;El`%{>V9n!60!E*_SP2%z*$MDaYWh%h;r;riY5!eN>fH5bKp>BcGX}Ag;ZuBAAz{&C4+y`5iNe1 z-VcC?SukEKrXUQ?8nTR|X37+%y+Z1hT0mT&s$dx;ETH!QznPI_xR-OUlhuN zm)o(sC;lw&mnUYOq`;Zt;Fe6gy>-9tp41}%fbf9eBeu#gK$E%wGa`jd_l$$g@%>O`NA;5MfH122SuLaY1fI}dIMZN5e;wB0&@yL4^$*bevi45-?4n5HOves^VB z$M-TB4bb|_vdUsFDy9x;YNj)QlUN`XX6OK*=AaAOqQ$#}cc2>?Zi)QUoKFi8Ffru- zcL{n!poby{vAPM8H`1T#zB?^Hy zL2#-u;0Tg{DTRnG0n&gF1x#XWjhr_#IXiim=?(f+uB!;(^Sj&__74td*L5qr9mqQv zLV;7*-DSFU$S4jzxN(E$@6LsbK5OE^1YibPzTnFu8E(1#l5A%?J(uYDI&Gd7TbD+F z1V$xjuYppF8X>DSSdDNy2sI5;NE z@#zKU8c5?iPe=akPg1y(LVy$@rSgXl8E|(~l}v=2T6nETG&(C81nDmW{R5NJ2NiBV zj&&6Qe5Tj?aeJgl7UA>J(Oo_|B7V5N?K|pXSKUe9U*Fv1x}0!jBWcWsW<1FE>)g39 zyEMSJKyQe*b8{Edb4wv|w__p-KxG|Mw6>%zDx(Q!M zkX;fZTl(rAE`qSHgqx zj8Cp_UOdJA!A0BbF46VZUpJz+2)EU(N49$XE7o!xwp@ot7YFj>slV|Cjf_+vtp&l=#Y#jV*Nzh$7)7)0 zH@N=;n0>#71fEGSH`0qXJO=yy`fsInyIt|JrCog28ViB|x2;8`5VQ5-G=9(k%fQBy z3754zZu&C7jL`o6#r1fYjt#ea$H#WExv99l^WcWPb277cPF_o2AG~Jx*)r4_XYX_b zhlld;;Sa>BsZg1VR$vIm^sqt*RGb)ec_+X8rggB!=ji*TS_2v$_-_#cD5i%qlPt3= zSDW|xMn5Imyz$zn2K=+Uu4(|E&$STz*xBE=d-o1Jq&(ci&r@Exf0PPlw~vV4{LSA~ z`q4;Fn`j|JL0dgUPGTHsoAmJ+{G=W9?-;)P#hxgfFVzd$VH=+?4B+o$u?+Ow%o&t; zgU&5%%3Ngk>%2!p_HxDT13SDZ#a&tlM+Zi4zPb4Rp4Tz%+rb{0hYg*%qR6?u&HwoA zvp}1}FssK|9XN|{J(yxN&0G!0X~PYJK&h^O`2`o)<|ipW-KVuK(fbZ5;&BL6G*J40 zcCauxJExVk%+Bf4xvm_*=X=?=zx{1fJxF3WOE~mpa?tM_9MInX>z!ESy@r%gxWi-} zNO(PmPofy!+Cxx`yWTN-ep$=QV!p#-n+I;56te|snvN~Y*f3vTXZ@m-^CFWmD&?Eq z-@B?#y7!DHPfR+O*X?Kg?C^M7wl_(RXYXa)3^L<+ZkX6>2X`2Feo}~m0O^<}2A{p2 z83m+LiK`d6xl2gzRfcS*G|jozGT&AjozSOsU8Mk@-PKNv9kAb?vpPn*W#fPPnOJH5 zqsVa*$?BN7NC#t#7lb;|i+H%mB~g5&r|p&|b&sW4z0^2&#lFl40s&f(_$)!8YEGPC z6!WN@Mb^NvlGT36JA2PoDgLl)Wu@Q|%>re^3`8BV2?aGk0y0GX3Jf{*PrNed`i}p1NdyMmJ!=;5b#p)TZW(P{@{T3Zrzf-UE;e3cg5R#hs1lg4#joqKg9Ux4#NCUD2VI? zML;ioqafI#^MH0)jO4ef_ML+7C24O|!aQUM#*$&Db^ZW1JnE@&U)B0bu_s~$XOw}1 zKv1ar7}wpqcjfHi!))HCT;r_NhI_2s_tyutS>p5SwTwQP?}w}yCYw3{&{7p*`LtQ# z5Mlf&{C6$G2=yXFO(I!?@J33GG_91%zS8ht(&fVIr)ga|fKT^ock~OxPnz;5>h00P zZE{51*WX^{oo(WWJ4XzF&;CKGYQNMg-MmS?912@$1!(6%V$-x8_U}qw{%hav+n#_U zZ&3|T9fBmZg^59z;qrXjIrRFbU=p^08ueARZx%{vw2+K5a1jt4ek|7`j^OvF({Nh# z@}_FahKrt(4vb^~c4KEWHlGJ@DKl^zve(1B4zM8a@^}4-NXKg;&VA-uhR_^{P&$H! zp|Uk>5iEp_m_*BFO1)LRaWb==qdg$2KG+F7(TniP#xu1RKAv^u06x{LyYQBOc0dWp zbHt;!-|{O1Ad?4gzr~{mH~f42-c^BL!U=5s{xmcb4O->F) zlkulr-vvxflZK(W6W|zZ7Rxn`UtK-d`>&td!NH45h2gPI;`08A&L7LVasZ#|wa~F& zN=y$3y9w^CyngP*CG?oDzy5};T)+RJE*9H2`LkhF^oCiU1x;)}sFDkWH&d0o9S3fw zgxc1a`vEwDbX(LQ(!4xKMZg}^BNF7^17jMh*@~I2L}(3KHZ%y2s10gk<3 z;Um3cOmz5<{!#hkO4gO4lQ;eQ-M8}QS; z7NsZbOSijC1pgk8B5X%(>EP~x>~6l}7I_`M>un-s(|P z_f=xgRQtrCRMV2(h!Y72qJkxyVOI}JVe-Xu;%VV9pcaJUS_y?;Gp7e@m4A6kYLf;; zp-fX%nUUE1Y`$9mZ|BhSaGgMB1bV4A%ZUG-!#lmBKYn*Ok<}qtv#MEGja6Jzvo&T} zvl!ReodB;e@c{5gP<=ZkxD%Z?gK+nR$q{&s)1gHXJO|(o5E5`50P+W!v&wJIfoQc* zQHwr~E7#WJ$q#33;`HfM3%+sypGAZpU-ZMMq=!VciTU;SbB z4@>xrD?@&J9J-NrVG0w4xtogU1? zWTTqQDrK4*(JV8Xn(EwyD^+S{v)b}7;J@>q-3`C{U*4G?{TamvCmn(gP~Z+0O!VMw z%nn@42VDP`-{FJ1+r?=1Xh2jBW7IWPURR16%Dh3$8y4dRQyU48x&tsoD3A?TaQ#`v zVHq;qzO^uZ6!xu^HfJ9nZbZ0Z!$cvBpDV$Hqj6=$v@sbpf9~{D_uf3!<>UOctt$uc z1>yWhx8UCHuF#JTLpfWQM_bb{uU;v*C`vLNXj82O<~7y0VG`B^I)ExeDB*CD%FY#J zn5ghC3T4aHaV$@tI|N|D*eBU;Y@bdL;zFNB6_5wf<-oa)rcF@O7;>IwA<&G9JyC&KJ5|RbI%BrHsXGA?|<^zk+{>xX|-El+6w$yloDXu|f*B}gnT@uh) zpYrYK|2s5ndp_-fUr2AGkHD!I2ug9M-exrY-FS=@qrovKV@4Pi_?%43sB_SD&9b3X zMTM$*(2%i(sFp>b5W(Xa*cC%HN|=a%StL@^i%lG|$%=)1l}I+p4EVxLBf|X+B3ncF zkD?@X>P9$5;A~&UnTQvkv4E1LEkrsr>1U`Q^hwhcb=mBtwLFFW z;!pI3ABtv} z@AdNnk4ATKCzOD<3n3Af)PbBI5ES7&AyZcfN|NAoDy*lF3Ik(rFg^!cFtJWaK`0t3 zCl9GqLnay$aVNzZdVeBn(J9QC1;^Bn0+3IDbonZBeKK1!qBS#FGj>^XbOBbFvw{TY zK}AP*4&`7_{I!XI)lxdZSlYuY{#qj+q5v>|zz)?9T^vqoixMWPxDf0WYVkd-*6lfg_U45HgpP{Qk>=#t+oKoKZ|G)`11>K zqZl-@%tFYOq|g}A*Z1=@#qme9`ygkIkbecy0o0B0S{}{VqWACTw1{L-@B^M7)Tm}P znYy?MfySH+RN`ZoIwP7G+f>wMoaM8qRaFYrwE0>?M~6y#dr$TL{dzt)NMbE}2QC2O zO2JRBpXtv3X>kDQB$vpXIs@(u`nhU0PpnIZ|LNQPlLlprliOeP^A8NvPuKR|A11p0 zQn}#1?CtMnv`xie*6U5j)u54LkZBD=9;(W!N$`B1Sl7vWnKw}I5-p{Y$+ z3=&^6BA!R$O3h+GH^EWHXvTxD5HMoSebSI(&xrfxfFl5pJYpF_)!2jw*`>l&~Z9ms`Eo!Z=0jzDp46VWhbiZf-N*A}X?-fI1; zbT1w~lb0baurwv7e@Hv+c=q$Jo6olc!0NW{ORF8rdb#KLbg!;<&S@04D*|4=09v?j zH&g?%8|)CzEE6oRy}di({I5L7UakIOrp>!WP3z^Ph<#M@gYb|tS!K3WFKM#Y(GFg-mMUtVb@Q(h7dM&W#bVE zji5njIM$fW8f~gP4C=r5TG8BkV^8VUEp%i*_1ER6!2vvPed^!5j{)5C)Pi$(Vz#{v zg%-*i9;zaAL<;fF$!qf3=$&k}DKZ*d&*$^H==E0%meA)Y1C@x-cLkw7qX5RXCNOxW zbs}C*IX)v_MxKw|AG;@vDNV~U1TT~EyZDdq`7IuBftP)1xwO{8GkB^1J}?zi^M1Sd z^Wr{1WVAqS0k5q_J$AV+P>7@8#`ucrI~0PWwh;ih27G|WrOe>~l4`MfB*C4*qtJ&o zUzy~*xlpD;I0K0{c^=V*FN*JD^w`8az_40S-8Y*G^EkQK#x+(46ne)*R_GuQ5?*#TUw<>mYu#(Rf{^3CtOCiAbJhw@L>!(aST6ZCw$XtGgR zPRky_I+0HN4UU=25aJ^hXd%e#&*yU9=`mRd8Lo_F@h>e^{O zu9|pJ4=KP3u>jQL6>af<*$xfl(p@Jigof(`Je2xJAizlX8hx z+oN*t5a3K*J21&>yV-llokj|i1?ytUPBkK_kLEafuF}i^;I-I=sfKhn;KbI_Z?$iK zA{|Lp{0v1(O!aAUUO7^O)Y@afd(kmO6h-dT+K9${m?@G*+)(U~6`9Q-TuMe~03M3i zdm{WE8^0@P0gAkr89!=7PjZoyy5`f>esexOD<(&~H2eNHzJXNbxeFzRTZb5X#<0er zw|YP7wed+ifM*;3!DWMcc=V8O5{6e=hT7e0ixb{C+OdTrxHzhp+ljkJw}yXj_ws8y zGxicIOZWQEbOg_T{YyLkrG7qm>=#__d-U+=E~gi~Nnotq*(1B%5ly`0+QWq0kG@>c z%D5=cwB%fRT1a1N9W;T4A;uL!yG!Cw5yqqF$1>!Io!(X$EkME~p1QGP3XYBX#L`Eu zEM6ExAx_ci3ou#`_ojNi&;PXHe=^vM@mR;mD!6cA_MN!4X%ZFj0iw>};0W9SpcarU zSX(Co2hct*c6p51!sxrO-*f*&O9os)djB*H>bQ&YR-#7&=1~MfeenUN)Ytc&-;V)~ zsBK7e>5Rho8;Y@3R-K~KPhw}J^q7ervCuJzy(=ci?f?QmDwt0!v&X0hX98Eyn>6F**S|dmqo{@TqVB&olm=qn%`Y&scZw-hI9!_~4NIvYDcv z3S-&byD5m?~%`5-&Hw`a#?fBSsj*d{^ zd#N08Z_fh#_x@2akaJyAU1k?l2 zV(W`pTi`=$PmpgT*GDTZC&rEmLurjARr6BFk27~8bz{Xl(0~ocIRkx2#_|5?k!fHE z@LCvQ?ndV-<31Yr*k9Z`Sgf{k45YuGam<{;}G(9iS;B0 zfGL+Vi8dot*=70n5D$&V4w7G@svv9qs0ZdJ~}a)}$SC^8GXp0tHrs!5;Q`_%s>U7UmL7aI$STMxOz2vWzBoen1N(;NNU5aEWze z@!op7u-z$fY~5IXir5!o1qnuk0ljpXK7iCxdbzAQ0L$Hl(z14@qx9j#_H{LqHV80m zPQ+8j?w@l0GZH&xw#RJtn1xTw_(aSetI(-(1|71o)bnXM-Nuc`hNKAbb(Kv}&|5b`I}eau zUL#TvUZCLTU>;IiNfU4Av0Gsn=s^V@iM=5_N01M_4#)K+L6216YiaIV@=Mr^!+L%8 z9V5LkdgSRIuBYOhkIKTRM_{Q9=QH=v2kDA%3*wEoz_>t2bQEMu@9Tou z*b9>ic5!0oy#%f{wmusnfa~(4{~16b7}0irJ>jGGg@jjZT^A5fSozddN%<+4MM& zyenD$$h0}@2OSk5OlsEI>(l>X_2!!xcYcZV&fn{c&-{}t9DXWsvtN+q#s>aAhXfz( zgq^P*%RdjBA-wm;`B^h4UMY&ADY)O%GgRk?Bw)}%zVA|#!0cZ*0OK_!1?h$F{K)yq z3}`;|)x8?7M7bl~+x-4Q=r-;8X^&6SZ|u1&F#K-Z;Qoq4QV|2wpJw2N@x7B`r0RTv z2P4K0NGD7^;wVA50Zf6{8Cv))F)D^>un?8KRATUZZEqoAiMzLI0X|%|GT+%RzU%DW z9YEqkPkVnCJFo+Z9q7}_msgnNV}$;~BVj%zY8`;_yCixnL=P#*yJGfU-?GPA>UlQH zCaaq?yK%BQfAh^ZfcJl4y07-QuN=S^eDU6$JF(;V$NVVR?4X3R}!9e|qp z3o&GIS_B@zJqcXosfa_0SqLIz&cLGp3%KKOOnxUle!!+2{o zPKl1IgS|aOME1Oi&*vI8z=jZF*On>l6LbLCM|2oJmji!R8Q{ZA48HWsCdge|*gRO` zi~VQ|#((}`B`d4|t3*zo>F5iduV87X8R*@5z87uZXF)@rZ4O5^4{y z-8G>2I6-??x;gh`{0R;lvRoug`6riva*?>jasAK-4Sw=5#zs zfw&u$Uu=`@hteVuyHBFMbBUYOol)B5FFFa3D7RX0zda{n!ud>)&odG7`ZfaaUjHK& ze#B88XPKT+laH*4)82MI+xnAH{ph!k8s=N?e=R&Q=6ea$1#gG1h|O-*bnCMc3kMR=lQ(~NkAh`^%- zOy_v$u4c_c+GAi~De(+#%tk_ERtov7Z}{jFa(GwDS-I`2KSeJ{RUQ6F$oVp9Ru$ z$;(mi{CqZlb!)b^J+Ht0jc*`LdY@}(iH`kaw2e>70X(zMzx?&~!R?N}AsCm08Zs>^xP*`P}f8vNMo*WC4yr#?-`_1e%Lb zgE^lJLSP{1;0(M0J(jEwyn?B%x&t6vXOb17xJn@9z-&Gy4+&F%)Pq=v!+6aKh>AE# zC*}vca)1~57ZZq=3W3Q1q^<;td+L;3K2AKrc^SreeSRO~yyE9X0#Xt_4ll4NURIOGI=&ky9-h8up2FKrL)&aao4IuG5;+zi1_7C>ccQcbsHnRKVQab-zVmm#6CQ6p4k!0dGRncZT!-SU0P&JM3Xiy+qh^!VG)}FKwVl?d zN;&BtWq+jeAI#$!pT+ohWBfaR@9)Il?*DeAZ+Lb3CEI!lCje58w=T$NeZ7W%K+v&6 zFW%1wckO@lJNe^3SugV5xM(&*ub9O_6UqS$o-&4kuUTNQ)~u4nwIH&h>Uq5v_6!yM zwBrM+i(;C$)X2kU{|XQf24m95u5X(ir#&WHf!|Mu%}|0z{;3?XsIXz9?`YEk?b_fIOD7wmSMt^OlFcb)&wP} z#$u>7;MW`*bfeM=8m!UA%1~-EZ7dK-t*FUnS)@KS^YJ`xG#gD=56!3;#T%*c(XUSVSp zUkoYBha$GBHLn1LKzhGZ5U}$2T)xldV?YP=T+Y}7B^z(&`Dkl9;8L)FptA+>plF8q z_(a5;Vtq&QEq%N#ZXYFau~g~z5E;9_G5Gn%giv2~gx#Lm2VhRk=#)fG6~<5bDK|9Y ztRAWHq$fI+Oe(Q?3{7Eq7FbzBos}7DUe?wOpa4XXR`U>7P3sM?4++P$P{$4CxF)J= zLclfXkPI!(=&1~o;+7lg0$v<+cricI0XSNaYh&@Yo^qJrMjS?Javnv_BEUTyPNUE{ zNp?ykr^J}(lQWCWsF!CWQ=P5_oyNY+Le2A7_p3pu>zhBM<}TgT+b@dP`wT?@Kbs1q zLA5qT3J__$xqVa4?wy6>^<&wLn<0}dn~p&M9kNh`Oa_u!;~aAtH=J2+$pJu?4lr(% znB#@*2`*tV%_LK(*b702%^ImB&hvT08Q0~cY_!oP+sNwKXcn7!(`@~>wi@~a(i?y2 zM*QA8-_s5S_z??xsh>{=eE056PaXa{zyIAZ?_CQgbdopmtQ^$+LW``=E>JlcBHwqw zPM|eWUdL?yvI9V6--s~92a*ni%FbZhifll^CinNnF)vGD*MgU?MaiHAmL_!|+Y`OX z&r&mJu98THhyK3vx4Ay6g7^YC@F_qs!RS;2oe^WF?48lP8B1=XXkn7mbe@%274$5Y zvlScka;_wXX}Owlla~+xB?B9et^}H|8a3;pyh>Va1dAKN>J8SomRVd699LN5Dq9>f z#eqP$)3g*H>d{>AF{3!x@{KP$02Zm0xK;u~uS`wCxG@=!86v8~L&a3IkwB7}^7u}1$b?dhrqiiqQ5&I%L093i@ zCiw`(8J&gs_B`a2XL_vpJj}BdS;?mPG>@}b^vYgl5r7fPGtKf?#LOy~zXdS8Sz|z} zVICa~=8Mf2V_~Ki7;N&U!9s&a<7=&TLqc^Ci@Fi6IW%>ZRdxToU(2f0S(VkcYR&n{ zc`T`nYZ&1?B0V@b_%Pw!ML)mzgK$6G2)|Sf<=jSj7-zYy<%P`8dNvPz%0geF4M?IF z#en2vPG~+h^z&&=(c4FhPmm{rmrqwYh5mhn{-~CFUhi0a!0o%x3;X(ohMgw-ZUXTb zC%rlkjjcA2Yp7iqKkkjV-PTHLIc#a}EQx*kd>WpchdOfCK1A#oA!aTbY8QpUfl6R9VJ= z>NY0l7V^gp=O-2CCyit$QSy@*iqkser%ZAlv+_JpGmbVGZH(hioJEY=g#{qyCaXC`7k81o6ZafIX<6(AMoMv2c-W)eY*(-~z z%nE=&W;QEA6~M$=s%oxLiy$Fyq{(B9zPpJ@pa^fz!MWp-#V`Iff_wxCl`*OB%UKjHiGf^u;QI|XiPd$u2fLaS-JgBz7vj=fX+!CONp;Y7Z`5@~= zfebnSutoJ@a<7L0T>+Ve7xXaIwyeyR@Ve;YC%XPl#KL!Zl=#u!bMOvwW6%3N=htZ$ z`lA=FhTrL7G@JjTJPrU=jc!=EaYJtHO@ll%>rni zmFHzy&I&5#)Te6qc=!GKyHB35{MD_kd^KFp*UGhGrdC!gy=-PBD*Tp7Kd=o*vEyeg z!KMtb6L!7))W^3(*x^pWrK*Mu&U)wNBcS%tp z=EX0TbE03Z{?l8}*YEQJ?-Aw4_Z}9#`lMIu2W3+ahhel<&ZZkZo@|CV+sd`t zDq^*nQM1WbZDfc9G_Hv?L!>_*382G4mLvJ|#z4E#MtuIlb0tCEe;z5Esf3dT1|Q0I zD=OZdOYhxz)_ZRz{YT?4JgxeJ^C0~R^~!0Lg_$+O`Awo~?`XG?r9A(ITYcT)&te4d z{BMd;ZAdwrl)XkK0|IJ~tuF+6ElcDZ z>I}R-oZ|yJhR5iT9or9doGb4PJUVE3@lvku)qW@E=w|9$i0s8j(_!JAR3o+ZT&$98 zZi;h;_@+}@dEXn%w&1c`^!C|C{yo_!ijBp15;;yJI(Pr1$?}OzZDy-B(_r(W;CXRY z);rtt`t~>YeH|szseQ9%``$G=&X1{diJc-A)x0UEV;ky-hdPp6ry-AZR@giX*5qt; zkz0eIrBV#n2iU+-&+w^44sAyYI|712%p#NXd4|}CG)AF{Dzk=*iE1&LaeiJ)|8yjS z$87O&q`_%zJPwg&S-mosb*)xTsovY$ZTMC){ukQFVeFluFCi5_Yb!gTG``!e1*Ceh zo&aAx`Ky2J&c7BOefLq;JL?s*ty!TH?PX=wuj_g!!5L^A0K&p63IK@FFvi%&F2|Y* zTWabv>EMPF64V7U3XThR2Y@2r6Ol?v0YEtIv9Hgi!|)OILbx#%xyWXwIwJ;bl_nG{ z?Q~{ijXcUq%d40Ls{vh$d_TWWhj$K)Z#fgqbJyPfonn4glx45zWz(ilRu2owhm|>G z7h3eItg*!9uVcT&wU3yn-^#7tna1&7^8#7Ql|cyq4g1wY)!Ak3IVr_pE@M5c`v zGqL%c`aHKLtEuYOnM|8MJEP{#&71K>CRjm^;ZERim#Fua&Zvm1vmfiL@r=vaX&B0R zD0G_TS{1kjYf7@ZpF5wQ_Qe_qa-e|eEkcJH0~XXq0B``V*@-KJ8Thd#5;_54rjkvf z7UMaU=ksiQ-mh2A0ySsTeC50^8{@I`>$BCWxqjMfXm8gAJf6P3KVbK3DN>($*k`C! z_;du&Ql-7$nd9yM*8aET#*G`{pV2?d8fxc zgu-kPZZPD-ZDrflXI+6-ZCQ`rQvn$Nr4*oT<#`0q(nLA*(+qfTcLEOobm=A-h3Uj_ zfjcNg!RC4{VueM{qD@2KAoHx@a2CAx|9Af0-{Rl?jsKupF0ft!_w!!RZ!P-yDc5)St2X#OD6Ho#h4$3i={8eWy z@VK!uPb?3!tghz5NQpu|1XU)+JRJAlh2}L(}u#N(PA{JN8>V|jbhE?Kj?2x%UK<1a!u*Y-FO?R z9&+Ax-op~Yw_h&XDk5n;*?M_Kq^9{w-#fA8;oz3%i^vjBA+7uvw6F0|-~0q$`Ho}u@;-RU`2-zm2N z<^d6Ad#)~2(MCNjqjn1Mec#7fc6@vU^gV`Mph?ejg#8`99lO7pjS`TDPT>HE4TCOT z-8Vx-ke#trBZJyanT@4xrc;fT4XbLa-l(R{qxjC_*P7kkd(kDzjt=OsZI?P77b27W zrK{wiCGB|nqOn6RXO92JA#;I7G8R^_iD`Efa;Mw5V zwbdZqvL#SWewqbFKX;lprMHk zIr^yTDnuqtpg7|#F7I)-KOZXjR9I?nCE*F|{t5aC`6&l}fY}8MFCE3yQwx`cL&rP? zaEdA*!OR_i&w4xV+xg{vGR{FXKA&!dIHhzWwe#J3tpQO7qM6L7D2lK#`;(@wZS(6& zrx*>_K!ZU(pIVtm>Pgvy+RV_<%7gA4(K@qkU{)XZjd`5`ePze<1JE;cF22;u$L{Z> zm5$&`44RAm#{W$d@-9<_{U4Qmc)B!~-=;h%?E!OcD)J0KGk%*U5|@bsu?u2Ls5x}6M-6A71c>c z+>xWX3Em&S^jZ_lmK*>c5ZxL21p~j77>j^#v``Bqyj3garrOeGzCNz1zjW{KR{xXR z-|_mz?aTTLexSGR?8&d6Yzh$ICw`tM^sT)eyUh!wR{KIa0Qg`S|3CchKg_;deYxoM zdgWv`83@U+k_rW_6(GJEZPrA@!+uiQaKmQ#e`ESca3!(_02unjC=1u^u zeOf~QDt@ME%C~VP==5PH{h(Nbv+~rs8R#0vn~R1j<9Y9{drFX){^cX1IY(q z4~!p^aUk9-7=`_osn&rli_pHy^%2^5Qx7{~gp4+5xLljwBOE|*Q$L?Et;Y!cvHROZ zm`A?L3pv!)3~7MFU(ZSDTtYdjwH^nyNl7vph578!tf>C}-c6tbmFRE2@3nx|*UcRm z{|){xW{>1AY<-DF5aGT{vUhxF&UCxK-#Ls+1`}?R#=m~t48w6VoUJx>K4>Z`!KK$I z3V9?Ai^Q0W*)>P~N!q4|bCcK%+~ zD;`&mdn`PVQoN0&QP)^_%>+OesLiy(6D^$8MJLe*M-{vc{Sl70>NB4IV;Am>-hm$8 z{Nwj^0De;gG7wI{2_f4SA&evqltA1fr4?X|&CDYVXOMMgBWOXg%1?(2o>mls60o>zpJM#@c5Q7oda+tHlFO0QlO&JBM<# za}?;9^4P>uMF%z4t6J;21VNa)p{5(AwhmcoO$D&k))Anu?c$8!r)zh8Fw=Ug3x*j& z0D*L3Z|xXqyMDLZ$TFtA`_d9xv^O^(2f`SsqYKqB1h_W9zv47i&La=<39mJPGd_nh zZ8{c=)$-6Hrq%!_g(_{RVUZD)c84a{IaFqpLr+n}G#(PB+hFL7VIEL&VSE?!`DpvG zv+{IuTbPsae!ipmy4GHIUI=(waNmNc!#f&Xh!4~rbn0O6Q$|tK+BRPc<>hYL&D(uE zQi{;8Lz{0bV&iB!5y_@=u~{^kl{20H3;*q6{-1mRm;I9qAerCY+q08j-!z()Jl%R^ zKcFAb_1AyJuHS{R0AGFk`L>2i>wmXx_G*KP1`Av|7pb833BYg5^w7CNXA$!cXz&lLq7^jhJKBa0d6sooGr8%v=Rp0&}eDkG@zgv4d zhj#b=uh}tOv#(%+^2S%}-#Wf$hfeAKbm)I+A;In{85x3mzW{*f@svmtCF!M4y{(M2 zU!R7kEcRr77$ygR4ikiJ7tizR2X5Q8d++;p^6PKf4*i5ikMN`4Cpx@Fx9_yZzYO{P z9IWhlsPiJZFM1h@UZ{E}>gYC^T4L7izNX4oI|BOj=a%N$+R)i|%oY^WUI~aGRK1Ak&zfRM z$C9^6o3pi$?tRZLK$yg0#yvd*HT(F#<6r@lraTX$1>+=6&8%1WTEGED11rPfDv!D4&P z6i4Pey^IBpBFdDhnX2+6W1B^4a6WSymUWnDQ@y%T(+M@#@83th@zTrx*7xmX z^9}E{p3{o$-2cAOtrswk(s_A=dZiHcrO6AfBN$yol!ejp2l5v_vbEoIowTB)Et6j2 zAxCi6)~H(cK)^(NA~IrzBvZk(8C9nOZix>%w4)ueoA>|FW)DVm0#EhpWJk2q(ZMZF z|MRl4j@$myPg^Q3O!EEL)qkBmj*kmovs@ee>o4~{R2+B_kz;-sh#q23Xmx4yWR7`0i>!?yN9G%0z^6~ z9cUc@7;*tE^{xOW?HF8l-ZpgHyvL1D!SH!?4AnJ4;J&2bLY8g!0&-fQ-S(m;Cz1}I z)yJr=Q(${Q+u|5n=9&c&XLp>fI*uleE-zk!y#~Y_0P2`&Ql>S7T-7<7gLzIdwMP`s zh2>nyd_>n!7vN?_F`s2wHf?67b;zWOdEL<2c6={;tiQ57k972Z)0ZVRS-L#ZKYK*4 zUth5|E{iUG@ZZiUP>;e~SHhgi5G)HZfEo~yyMqjHCHSY`DYbY(pxv0d>juqHe-|&r zoIKh?O;E|C5ed1ORLWscP@pfJ3Oa_JuJNyT}B<6CgL zT#Rw~P+u$7a8cE7xhxh&|EvOFI#9d3gI@Z4Iv;=oW(G0~=i|dpe{RI*f$UU$rX4r){(eMz!m=~fdPHJlpdGV@XVGY0TRFFC zS`A0%&@RQDqhIy>{PxWQqi=lUBVEu3`^3AKdW0{w;vR)}*Ix+(8ic8qA(}Ts zf~lam@4N10=0WXyVkYIrv0P4Z0Ce@M!<}%d064tZzK>L3h z==RGEeSMx6jPt1r;TGMJzcT$R;ZgrlcHW#9d6D;Ot3gk_5+tl?)D2^Uv7-jC3BzxD z{kSDgdbHFa$1KpGXbpWSv~NXcoC*f{JEFD4_lY*$j|=o(&pPl6Wm-=M5>_DbMfvog zAR_DpX>lbOXayWMju~RK|B^FsIcgV?^qku;OW<7u#hghJtpnzUK`s;nQG~oKY6k_e zmTahPaEWe%PcjO|^^&{86`UNEGgAY%jB`y%3-Aj`?i%RD3iAujR7<*m@)BgJ6|_}= z@$xBJd2LnS*?9tET8~lfA5+2OYDBY*f@Y63)Xfi%Yx>o_>OcA0ULCpo9$xN$Um~%@ zy#vUswZb*GJN26MNMGN2COO|T*HVik-Fxdh-;~Xhw`4Z0#41L@FCnyAg23D)%!hwn zLPab+;pGURyR5qEfDdxCjzpmn1hPoMHId6Wgz(>N?F6&$Ua-sX(qVp1clnp<0_^Ya z^Mkh@$fIkI!r8lLMN>CuT>-j_0vC4vb!A2V@5XNmRT}>}ih?U3wFJNi;?l5%P6A=6 zUr(?lH;iNiU~!F$uSsF1>xHFw`ALLX8$tMU;mR@W9&LI7FcEeUeCXy_`m}*`O4Xi= zqe=v3ovtI`G}g5##4!P`!TdaW3NU_P(UEl`c#J`%$w)(vE)!(7+Fc*q+tO*^B@9o} zzH|BMgkte00BSLTRT5yyT$zS3u?HmI+(4bhAg$C1DPtV>JR$n*ETXp`f-~5_8Dv4u zYvpm7mE$TlQ>tzL>Q*-Yr$5Y^@Bh1ht)YMS1)5bZP68F9U6(ey1z9uN<}RlHH5B*` zQ*R$CChb*{#8>Yg@{P?A-@LwJZ$B9Ey_2p&cVY0!p?Ld@Ab|34R!V_+DNo7N^?K3w z^N`75|1e;fu5bVFmzTWF(ns$d6Mq>8475q3=l?z>$U!nzj$BdheI=z_M$M`~op-+# z=A^d2-#!f=-nzxxI}hoLvYsl6+@-s6{rq~Eoy>9@TggzSiOrBex@CkGA9njqHFe`h z)n5s%vliLs?Jn_Rat)Aya3tx&Z3}~bEKrNh{J4O(NBEyaE0DIB`V^n5 z>Vl1z<0^5pLe!+MV6Ks7$O7gX9ZH}w%QFdCP9bFEGy9z*@UnyNS~yo2J?0Ch7d-U# zm|TU1-eaP7iR>Y<{gjA)YDPaXrk^s?PgNCH|GsOoBT!5b5G>@H+8TRzMY`{753sH8rTc9maDh8sASk;Vd^@5)aVHQ> z9A}N!npAy0IotH(fR^LE_M9%&!1jpX%;<|60bJX?CdYJ~t=H>ClQlhUbQn0S0_0-R zHko;IDgR$jICo0zJ_tUbsn_=Oy@%gz2whpHqj7?9wt25B%rI4K(1iCJ$SYhI9*=Va zS{SnHPbH3k3vo*?<|W}vDtwX-JG_%-_$aY=1N;){a>$fmVB5h=A@~SVk1&*98e!;IYCE8ki&G@s`#BkQd$bvm=fmM8VG0cJ zkcrcAJ4r|C?Vp>e_wrE?#A8flOu0?CZl(=qQ;T6Xv2r%Z->wdCfAfMl^@SH3BK!j= zI^R3wYkNuDlwK#I`?!NpVApl*yT3Tv*)bwGf$yUex%6D7TXm33G zVQoB*ODFaG+gi_pl*c8%7EQPmXg!J0?eapV06LKtB8rC$im7d`oh;5{$It1BHrOH2 z>pMVie*ql;NIibI{X?;_LV}yuWiU_@$pYnTbzj+%+_FM%QsxzRRCa~TDQrbq3 zm=%p$cy%rf*tUu+ZGmY4I&vUc0NIc`0YQJVY3b-1Z!EEMUn2m($s{z3lk%okM$5O~ z-C~VtH&sn=-Hv&eE%o(L#KVX#dihRUoltuuG7`}VD~~ncJ&99Qo9V2Xb7@tGS=Ff2 zEBQ%tGMY92!sx$j9o|P+%q_}oAp*hsJFQ`~MZnt&lD9J^y>Rd8B$yCu^wL zf;8BI+H~uucKf$!vGd8yvFiiml8in`13Iq;tiMkG<+-A>!(vznSbj$oMi5BC_$_JKVHN<88jl?OQb-@LHd-QLf8sO0 zD1s+QX@Zoq^U@)Ugt`=Vf6xu0c#wihpHxM|pglhi`Nd0o3CRcH%x*jv2)@|1^-!;{ z^LAPfI&@&)_5MDIofC&~<|#ooX=FYX3e)*?KFYDf)PerYpuR z{uEB&0{54Cx)%=M^8Iclx8gt{6mcGVk_(D}Zd_eu+^MZV zYo&~^8#^$-G%55?28KAyz}@dZa2dLG=SP2=fon$??4zkL{4*op5gppvb^#{A0-^)_ zO|7O86yWXirS={%_ybY&!+Ze-jWC>plmfMc3M|10{C&DC!EKO6;4pm_p<^4yQzoR& z^4rpOAmMX7AjOUk7YQ9?xU?0D8M;PF~EWdfOD>c z1r3rM0AvChZUFT52!MqP1K+;u=0V?1kzRlf3`u)i(eGeKiAT_prU|MGedewl=mlm! zk%Zz&ywhn8ASq1a;qHhk#mqWshz7&wtRjjPvrAI>^d2hwDZNQz8xGiUA`UwjH+Th( z|IC!n#rRxBN4dyk8t1dMm6hoh_2&D_|7otq?@TapeKBno?7k007|=;0gLDGNVl9JR7GWM(TI zub&Ws2_e+A1YCTgeJK0|puo;Z0VjZr1dgSyi9^NEp#%0FqyZGCM5tXDB(;SL2wUuUmaQ}^pZ~yX(=k_?>%fiisUOqjz z_#W!UXvK9-;9|Z#y|JwqxN-ttpp{kcR@vy)QLsl)WaWY)uNnUA%iNiAId{R+`RwC%7z@nqZpp8U#&lP1B z69x`6Oxu0iPhJcswTjdo)TE`Na1K`$-i;?4T0NT%VLN!f898a6U#I5Uw4N$uq*Amsg&E*Bfbx+v0OmBD<(lUj6ywH|EM&7LHZ@c# zTMknS!h&LegMxetF^OrmeL%$Z*!|NM=s!tQh>M8h0+l{)G zOMHF4<2&NcIqNCwV7{L7qvr}*E+@|LiwUJbT*Mv37mBlI#Dq})gqa_S$a@_5L_{8$ z80rA$8D*gCo=1&Ms4*z!+SaxuTk4rL)~iI19z2qs_V~0qmD=i1V%m%9tO&(agH}b9 zI1l38c`x)C1u=vWP!mlelkf}e+_4XyB(8u9kWi>~+N+ zXVLNEnGb6?+&6K)UNHHj-9KUc0euCP71OB2?8DFz@_YCnI6Mj=oHX<1ER^BA(rU7r ztyW;Yp$oYqCY^9Rn&bb0*^ zw7Kr_-fWMKj*b{JE4|}hRc%y}&fueJwD~-0QPL8WWNp{L&xwr}Is_d%aKewZalvBj zyhRNryYxv#^!ZJAPFhbn@K`jQo5~q6q5woV&0|wN<%Z6b^RY#l%(Pq+F{OTU0mLGhdK}Pe`xZF!+YHUIN~j#-q7<$N^o9CF)C)oc4b=xhs`H%njKeqdSc0W)_+1%zOp#(O!ESx4%f5wbJL)L)6qhgVnIc*n@IS=Pt&(9@fr%|g@v%zVm#hHb*arT&I^wqD< ze)x!*@BeS$9Dn)!=JV;+-W@^8j;#I89t14X&lghEm)`KjKUao+wO)Dw#8Ys_h1Lq} ze<4-c{go9Y87-amMFg22B64nO_&O?@VoVuL z*1o(p{Wre;Z@jqiKW8CD{~KTZ8}tA0hyP(VK0VH>SoCHx>p8?&oRi;4I=#k`?w1B} zQl}12oWdTN{C62TQP3-u(>d~6MmLyp&*je^GUIId2< zMz73n|IJWc3`e~0;+>r%rlXtm;Ktj0aQ7y#>0Zgdb$G}h+|T!auAITudZC3&+;_!D zvCu|~PN>rjA0(b>$j9{hQved@wwsE`7`I?yoJlq=rJQCf z*>s?T`Cp#@WlRRr$Fbm;UYovF4~8Wq!KXqp2^tc0wzuNIpoUzvUT z_6r-ozlXcKy9VROH#go+UmqUbWz6d1hVL)t>(e~@mBnAJ53>aAGgXKGBG=D3^C6q$ z01~@S){<&=f}LriuH|1@^v)L~ehK-9Nf}K1nSo^Ug3lgky`W)cxy@Gd)#}ezf4;eS z^X7+Zdp&3M`~6s)pjS^7+Jbn^B%1{R4VoY=abOaZb$p`7YZjK`PyOhjU++A>+qiKVJQC?L>;@Ad-=XD`uU3=U4{Qw>m^sFnFfgx8fub2 zCVJ#8ZMUg&>ftLY>WOR#CoBwLbb1 zC)5OuH7pzd0TPR=85MsRJt&$NS^ovK_Y*aMv{I?e7JPr=v|n%n4af9fW?2&`M6Ote z%`o-WFk1I9Eo{_pzx_5J(=k;|WwY8;>gdi01O1(ZAO%(5&uYFqi09p0nCeI%)M_5Ev+WQ`Mj`W}wKa5l?6`PSD?{ zKl{KZe!&Gbqx+lp{mH6WS)+|rVj4O6)PBd+gIR&ZFOrDL76rieES|@F-KGg1(hQ1JMTitg%YK=jZ@Vp;zQj2|=lUbQ4Oi=Gz0kr=54x<6{eo-5XhSf8|AGcZ zzLCXD%TVg-*6PbbUO&_^mV;7r$rXG8xOs5n_~3MWmks{|kHANq9qZsc0Oqw05^7AW zp+HUG7^x=Rm~ZIjtDFAZ@mo-;^KrtCL|}3M(yg6M_%P>rwXW8OSt#@&_Get8UJHM* zWiMi!Zd@+mmq>j@z!YNEG>stw!0!9n$!pIGVHfp%olotE#Yj^`tbTjdjoy}?MD9^g4Aqt z@Ez$CntjMA08d?T{;jLJp?x}#kaRazIU~* z*3W85#%Kei@Yrd$kkf)nwcYVh&|AoFcKqyZ6?}2SYAXb76}_t|K=V0u6u{%>p$1BW zEc5A{&)$Q^<@>JZIh^-hdwV`qlTI)fi~xzS0LtubPDqyF)}b501+e^_oz`HdSJ;A- zoJ|NMxRcZd>S{C1UZi@{NU}k`DF9{;)d_x z3~t^8*yo5J9_{eX_7P*g0kaPNNBhqsTEALX>!U3gMg;4w3w5Me-9rL=kDs^jHy7tf zBlSzhk=R!+QL-jwR$a6cU5yu$cQ81m9A6{FP*@RksND@NF4(1)E07-;5|4Xh zmYzsXd02p)jKLmMEXJJK(T<7LC;@*HBXBF{cS(6T$$PbObgol?9$+IZjYf@>Srh9R zp?5c8*2*5Kqq1l4e4vt{$dUwO$WAP!L1;Dr#5q8_$||6A_z=f z05Dm5I$##HiwqF!DCeYMrPVZCs202OjHFwnoCl_s(&W&Rextcw#&ea__z&$Ik z|DnBe@{axKqgC5H*|a}={d&6H|3kZXe9x}!UbAaA?-}YC_^WOt`fBgLT0e`GvG_zA zJL)ew%dhkBC9n*;6G;4ezUwV&0A5XZF`R`MWM{(w5W%3~0KhKP1DR;cCJZH^83(Q! zYJd!k6PYv*`w#UW{N6vXZ+zpKqLy7T@P+V#ckE91um1D@s;CB4PbM-55(X+dR8zb* zXw9K?1ZM!EQ;!1LS%*amu#hn8&NWF;En*+1LiBC|(2)I}bnxz4Zeussz2iL>S398-x_S3{3;Ma+F_QYjclLJZ@Zc~>b+vVbt97+L?uDJN z$_b=E>dZO9QUR|IxUPkSmRqLyULaO+Sb3(bN%&K_ZbGB8 z*(~NOx!pa#Yx}>qj|fUp^23rC2aCh$5%YQ1}p4V_xHU^q8_gD2os+ zBBfeBb}yP9l27tI*}lB=65pn8U+wx=>*vx1n3s78Cf&I)F!BZ>j~ctQ&-I(rdnMFd zLieRY;4^N%l1K7Cy{A5ca^o#|?@uo@})>#FG*1zL55 zqa1BIax zZ@rb_7@yJ5{Jro%ewmZ>cBI z&159Yx2|WN!e|uLT(q;zxeeyG^(uSYt_nN zrT&NUAM*Cy?Re+T9Xr}Pvfaa7KDc|pw43tnV>-_ApXOOsW_dETAwn%7;h_-Ow*fuTNX3h161zU?6S1hw3*W5>K;4wY!&GUKh@y6rcpPl_#KTzmX zLxZf$hT7g$w^v(~6DP(~Md|Ao*= z#}q(Llmfm)v=IAkI5t1P;P8(Fg+o495(u$Ug) z*WdoS-$rkbcywd5IPMNKlqkYJ(d+uDoqrk8d^R_pHO6&>Zj*sH;*y<1ZS~_g2t1F6 zqVDO@0wVhHqo>=nU*wgIPDk~ZU;lD^_=gV>N`uDR>jBQ<15!_RN$(k$bnulJve$-C z8_|Ma%!^`K5(b5>I1a$W0XLXnc z!1*y$j4~yng-oZKHQJOMy_JXl{t9+~39{}H0P&WQZK~;}v2C~mN{$FE$-zSCB!QRG z@hx9??JjXif<7@LfhaY#H&cCMrluYp0YRzam#>dcM~hO|frU^J!|9#6{EIICyGwV{^I)(&&9$)0!~Eh_{)OK0pIjLoQFC+eCjXNk|C73T z+|*WEMOmWog7K4)-&$V3^wq47BA<(gc!N9bmTB(C1$ki1Fn$EoD3~P$;Z}639n5i% zu~UvX@s>f$2i^3n=DL7kH`2^{u~#(_YCL37BP2&qK*$1x9O%M^o1Ul)NeK8mRQs{h zqv(f7V-vYQE5rC#P0g$SUYtzE4@Z^q{AZQUmYR2dJ}xH8Ib_jMMD&P=4QiojJ|K~y zP=k^O&W8o9)gTk-nNp@_nvd)8teG~|-v55De)yLk*5Cie_u~iE`fr^6H#@skb#mZ{2;o5y;yZ?=g`NKgbywLzzlNLLW_+S<13AQGLG@rC|5<_YM!@K}A z3SgjpNQ&1~S5D-C90MMPoUO=V#t{2p^T!TNZIzkVEZREK2<-l-{FAv;SVe>YS#z)a z6N+~X79>B!OZjpu5a`rr-6n>sOMPYlU?|`Q+F1ZMejq17dV<=9PaKL0(hAp708&7$ zzd*#GqPaCzWSW7Hw5(z^%f6J&uN_~j-~637>+74>n|pN6=P`j6bkyTA)AC|7UwEj? zvzs3z9sbF$MT~F1{+h-={(YrMrdHu&Wxrue%;9Jq>^wDPKGch0PYNh1p#JaAEB>6C zv7X)Ne?00-pOb}))QxeaSZQX8%*?C*bAjlE+B9l(UVq4Tw+cVrLi79?vYpcA&`WgT zZdmOQkGuM4kQ#G`&=$e`0>@|XDkBLy-~^?fTVr=6nnaCANh+r-L3IuvrMS{>(kn1? zet$6;qP^#BzSM3+u8&Ayjg3*DTk$!7Wc)ptKG1xZcKjzDfDZ_!=*Hm3DJ7N%& zJzEWg1dj5VVkZhq^$&JXP#!fFa8yFlQ&w~yrcKpA0ClEO=hBz?!}?*pop0AAmGRN9 zJkmG6^QK-@>yP^H7J?PEE-gOoKN4#P_l&~ z4chRxZ2!LOcKS{)5JFoE;!rQ_8VZIm*mjU0%@ni-wx}6+(J&3_0Imx?0n{QYPpvVc zECymP7x!%Cz2JmU%!6^S2+Io4et;aCCBTnS+w(VdK@jkt!1y6-`dkO#9aURX@=j)3_~?j6yhecIY73yH&m2VRM~y@1A!w!(7M|qud@8w28){|}WERUf zKab}qtJcHo!{*-RJ@ojSkIe}@Sy%(N%9C6JFBlqwuw?fh@%BUF)n89VNW9s*-)npQ z@6%$#2Jqwk>$XCfPEpkXB}G8#B(W^P^c`K@PGBU8x%XLZ2Ab|Vg21DH1a07di41sa zV~r1}rjp6!w}mdhFZY(t2{T$JpOB;cc{+e@hW_yAuzBa+JGHV_S(eSJx|#+GBNH2_ z>KS0YBuQq=arEZ80qr~QLqJbO0gHA{a7mrcIGQD7AsC4ga3~el5M6-28<1h>3V^p? zwXF?%VKH$GWEk;P(_~~uL$m>5@LuGD@uzBkzcp9@ep1-qHT{-GjTiUZ#&h>yTi8sG z!QVw}U5e*QCVlpPCN#r=GCeQ_mCEg4w&+kzuW<0Yrl|1+Ic+I);Vu`}W?I5tiz-%g>yAbUU8n z6Px&`QnDmOWxx+EABy4OiECl8?h^5Kdrt3MCwk-L6O5LAo(=$>8B|)$tZA%gRh-4S zm`s|`^n{^zZvzqOVYJu7Xux&=g}vy$cKz{7#?@iETBGs;o~sVSAEZw#{fxbu4-7ws zhLU0rP>5jN!A^h+CB2f*EhNnz=NCwk0~4kW`|d;%1UU`+q=KCn{1!~c-8pwTe%lRB zs-O#TkjoCDJFnIWwCzLG18`i(7jQi2V0eKLDF@y&CPsY%-G>n~PndbEs$&w5szx!y z5gY9YgvsXt@ z0_Ac3O(Oc!M_=Jx`XegnYqUDQ$JjCbX%o8{nQJya%XmiZ$5P{iF%vieBh*b7uyUtf ze?}$1p3eCf1(RpQ3$+?Il!`^G57O@58UNuuTF9;8?RjmJ_)p7qrkQ4AAvy1)y+y>;eVP4s2I(ya@`3l?>tJmw<_XS#E>CuY zXHW3bj&F|3Up2E0BSR1WRU^A*WM4A1>t=R?4E);d4fl<%6VsQ7=@*FUnwh<7X0H$v zs{dWP4+aQl1qb2L$>MlA%C8Q=*d6aPZp)Z}Zhl1=*`|{@3qa>$~XVtZzjk35%B{6 z5bbR5_}5Wu2$x7lx;N-K1IWv!)p3^qS3_U>TDk*rlf6B{e+Z@VtAi)ljQou|i_C>` z6)sYHMJ%=G<1H?l7iwZIvC*^+`$D~T@w$!jSsA%^J?-ubmK%^qkg*VQ(0x{`3J3$?s{sO+F1 znA&+L3}%2cw>1UtKH#{LxL1okXbl^_s@vsTEW)LA2}sk;0(F>&G&0=n`pbY*M?X4b z8mdD8QYF|iY9|vmh9nuH08oVvSQzcp9t-z`T$D9AEHO+LhB?hc8A=&H9Lrz*dw*3{ zN2|@@t-}wdZiV3>$8UFc7&!0)t};aT=o(!kx}F~TB!1v_`<^^2Y+O5sAwuFQ+=1}G0ys${NAB`%$GID0!}bVz)YzHi`WIcyLAU*0MVQ4A)rZ|+_^ zHGSS40MY=|0(SrAZu6*qR99Bbdsz=v>wM1hBA2{qw85CKV*ngXgHSjbnRfz^5632= z>g@pUwm`PnMNuJW>jfwm;%~dr-y|rKVhFU@d~RT|C3KfV0u4EnaVu1URwV8ts_;~# zW%ucL{!%x&y-F6&sN*v5Pd0TJJA#j=!hUZAw3khnhNc2R_nKX2!#NYs7Q_q%6N4E-ndr!y3e8gZVep&p0Z`lazclXH79}->r`nqE0Kci!MXOr}e zy+bcrE=0_ptOM-cTKV9PTAZEY8&9`7Y4 zKi^TVcZXy+2kNeQCN8a=~HU7>4ELybq=gyrwiYVav8`qn)pR85q z@qCt-xzD;cO_PTZPo&#^Nf$ zW#HAEge^)npzdQ@dz@v$_?~s0ud#zCR0?Xfhe-S_|IuYpS!|5!@KAtqF4z-wo zO5WpFQ-=+E8n93iT@F9n*HSlb7%6HPsF?sz)n5RSQWqsTQ4AK5M^gnN0mnk1m>9IM zXgL>LlvRnx&#R)U96#`P->k3y)9cN>dr#p9(vnNn@n?PZ_F?e@9@yO>-9JD#;5B~Z zdqnRzKajC@?;Q!R)iNnKWDSL=NsrPbjJ<=k}D^J z=@SS?uLh*9!jfKMmogw4$}l;psxWHQ3X;)-Dh*SJ$pI(sL|ZrlI0dvrO9_G&VlPyo z7br}dx|t2~!5q}1(PH)RhYzc5+OC^kqmO>&Q3QVA^k+JNMY6i&AiBa`$59ZC&|+@)^C%{X=RgR9PhF?M*?rv+B!psmg@j%N zej&{b0R6~@)D^o{`njKiLm(IDvv5ifMF~o=iKvZW2BA}0cIVM4F1zuIJ5+!EwwvLT zh8U-Av_VUA!o*W$o%(!6()jg)b28~GEj@3# zG?MlN&_2*}Mg-w>*DCI~13}0=gelLZ*m^MnTK4PZ>4#qCz~N}!reJIQX)nFB zqc0eGpRUez$GG@@*#RsU96MUC_BjFC0sa6A#Z!dj$jwox6P83%2F`=7|BNYxWUx*n zj$PRccH}&X*rAh?P%ql0L~|jb+Mb61`<#+ee2>~lm-@63PglE05kPtkv=E2hJ`@|V zGNuX(_Pi`-R;pyZTD2cI^n|UaY&|w9iL7L2X`+msUAh%- zSp-&36#d()q0LP2NdQfdnNzi;2rDY*(lpsxS%mu05WnXSbsppx2fR0*8>Z%k1Gofu zA);@~w-q?8gTn*9(YsM2bB(h|=i%I&cma_=u~lf-8!)}rNEGC|XdgO=$1mcfzzYXq zf;k~4fuO=asuxu0>OOrx&gCeGErlkEx`1fir-U!}&WRvddOe7Mi#d zaM81sULfSQbD#-=P39N^-~=2<1W-|9jeo`Wa0q~G_o+Ya^?EX|=KNQ``&a4j^WVo% z*Gn%q{@p!3I(o=AZ$6~A-yZSnJ1cg0YfsEx&I!1Y9_-`~iHfY(@AaBle=cEAM;d0r zgC^Qgm;NqE3(nW#S$N!RnU^pg$w--I%%a!@1rq7c#fJ+g=QfqH9 z!;i56)kIVh4O&Dn1Qc~0h(k;xAvtReD*<$jG3f}t0~hlENoX79yWy)T@Cx8fbVAd1 z0?_9GRJCWdrwI;WZynv@ycWlZOBDesVAF|>2#-J-P_#F+1W_!+Y{LvYz8^C&Ktp2@ zNe)42Bqrx1&PUMGsAU#17ddIFCR^h*FIw*X!JZxdr9*rUFTC*X-`d?{+J4A4Zj5;K z?N+lL0g~_6L?qT*ACL88C4Rhi(jl3>GYfKT~sa4FQ zA@bq2J<9F?oLb%|Njr2x0{LEC1sy&!4WuDrLm?H$&piVg6i{r^VWYaj_y zkN+vX{qKEE{=#qn0BzbAbCC%9Z+*Uc0+%Cz6kR{%1pHTK@$m2vv|O~3tRhNQ=)IvwF{QdP$s>n1_t}oE2x|Oj&>*sQ%X9`&-pke=FX;dt3Ro;}o8G zLBMD2+o8u)_fP}CP&L-~i1wgqaLZl5r9Av_Z%?*&9`g3RW7+*H71O~lhadKv;+1z} z9xClIW&KKc5VCqjC|gmAYs|c^8a9M^-F$-6pbl*@7%DR&ZRu*&+Z@ma*h}?@k#1wQ>H>hX1Tw z+gj@#KRzCop&Z5#SE!-YMjAkI*TBICHXgA50v@}d<4PAZD&jq$3ETG9Vx-tmO+Y0# zbrlnrOTrdB<&rz_c|=I2(l3j=%$~nS`+O1Im2brUHlzCLlwF z&L12=6C3ao6lw~l-ytc1Q(zU8<`_4|t_8MZV@LUU_==$<)C+t}8B>7>M{)5clFANC zfZG3JXsTOF6l4kgm62?_DO#D!#|guzPcV( z&+{z5J`F`Bc|NzIDXgrTW{_o}pIJVvqOAruNLyo;H6z_%v2{^iR|9b?uljq-UO+}& zpob0t2Ku}xh#Vh*;v)TX&Oclkb0(Xr(O6hcjp;F)(|^88X73u&yMgW9hU|n{9%mZQ zsw^Lo>SR@l>8gh6Cr#bdI?%JVv$#v!O7wk&Aj>l={9XNd2~0|#qZ+_dZNcSr>+n{* zLwBh6*Lt+_l@%L}ajiMauf`Y^I)ly`Na~@!@4{)v$4)k7<4%Ehoc|XS(VkBy-n~B#BYA*P2B^2;FhEKUg%=>9Q>Pa1Uma^reAus*sjm> zVm%bi4EzUKF|pXs>a3lS;DK@UnGX=N5VRTK1dP_i7|zt$n!5;q6L6}qq%DyKxqumS zqLu}tPkPUiV51{Z8Se*DDQ~0t5LVK*z__8aQKPdXS#4Bg5lB`pPn&sJN0|{%=R{5O z3zLnSnt5~dXFKuU-o0ptgudaE0I}}1pZi{YRtQI*b^u)t{yxi{z}_8N*;=vte|n#b z^#Z1*p$xH#Rg-fLZZQYiI26`+YGTNaz#v z-BU(@<+`!Ea0)2Vke9Oo&Wn^{+}_Z#8?dpr`I{e&Eg?y-2Mf0R!O3?&qXMu{t03V?fwm^#c9>+k2ZJ zxvuO??3{bwd-+=h6iA?(=x&)qi;|-tx9ou&!^RskRY z5+ndJPj|9@kjQ+Q$b0U&=X^h|UrQXYcf%-Q=scl%8Vb|c+v10G8;==;E$B8R;?|hE zUEfB>7>5ESiN-3DC;JugAbOn>L532LmciT4 z+2Xi%?ON0uN`F56^XlCAoIV;o5_&`ty#SnzGtNRyby|EVztzfb+a)pk#o}l|FC7dP zyO~L8K_37gba)kXI)W}8%scY28JV}ce%kTLGJTrmGu4iqH2~Xb1jJ0|D5IfnWaBla z37UTyWmDh+#0w6K>qHzf_^bU|j&8|JRLPzpnh8!Ys=ZgAOZTf>N((5?G!BbmWoezEF3~#h+dO8Lz*) zPM;ops>9JxdZ8D}rVND^O&#kx=NvmL&ZFiI>=Yvz?K8Tx=wdscM~%S1TO+GA6*cFb z7H-?l2o~fXJ13g}CrUfEgkv3fFbUyp*j61F)dBQlWxFGXj(X|XpkH#57Wzn&^lU=I}u20k~sbY{CcKk@*iA zVh@XvP1FR5DH*ILeuTp@qa#dpQ07G}B?h1-O)d=@cS#$x6DdtD%n3R?u<3y6+&P{q zDilmNn9wgklXD`#J_t{P%1oS_<{8gKc#cx3Uk3LeKTntc=%;$i2E9*?M5CjeilR89 zMgKv>?yYO=+*)K^kIHL`a$a>!na83u&RB=cZWL8UoG9Q{C8>fril!a+*(MpB#-Ucq zr~b(?t?xMW@vk;Ra;;|r*p+P(b()%pI3o2G8V&aEf{`PQ91;*5tDPGV1ZD%QX+Xx} zEQH!M>lxRF1>L4y6cNpr0S~?IaZ(Dq`^^gkcBJh;+xF+?=ltJ({^bv4DEnno+$~}p#W1a>Iyf`X z`N5q1*t^+emQ}vWMsbwaP2J0Tc~MCPZ2ll}9HQh#1z_fX6yw9rpOuCQepqF^4 zMSjRNj*0c8uZ>x;*6iWysoplaltj5ag(p* zO?6Pk^Z9xC=;M#%H~*90v{LWx!Cihtk9eKdn+MYeu6Vof`iWLqo@LahqOR+N*$*_7 zT&CXnsi>rBf)XUnuo%r+ts9HB>_Br{ZehAHhB%NYIbhZT@!F;7z!StsQ1*8-Qab{) z?nZ_mXd9Hk50ohNSqUXSlFm_wFtjEmGaQ==c3dT2g$$U@qZ2{XDoBF^qpAoCc{Vg7p=@Od zmI^nBrs2aoP=TLI+G zrCxyb`n%arx+2pJI8gyOwz<3y-h2%JO9m+kF@tHzi$a(`;WKz9L$Thi9X%^l&eoF_fGLnJt-&t^ZfHX&SH_R zWhHt9S&_~0)vJg7ITjxPL#R9wRsbb+n(doVi0K5tVJTUK;VUf7bBdPq5`LibTUbI9 zV%-})A?Y1-lxCZPAQ85zOnA%%^3fT5c>%LEF;@tWIEJ1g70zoeocStfCX{DICT=Yr z_}~2Gj(_;^|4@B;co;ALANTaXzWdkyL;7XmYd1LOhQo%!8jJ1nXPIe(;qpZM7F?bj z>sf_5Q|rTsrkvnlW#zuj>O0BwL?Q1em>uypRiTT2?_=ZX$3Bh6;$dksatS(|kXQI> zXGPOyu!d~kAjddz0Cuftp4#=`sDU1W;oGBtF6v2QRO&S%f#Sp7FXMmkeVia{-27VZ z<}Vcrd@8zZeDZ}a&yG#Mt!;kp*y4oh4&S_a(?6I!aG(6}6CWgGMPB&Xe3nCFU_PA} zQDW{hkMqBEv)iViRR9?6WT=l7Wne4fpPno2pil~JfisSchtT-k*I4{M`bGy@=SAMo z0fk{PY-T)*=j2@c@jw1?e6agKZ~w#F3eLkanP}-8-j#1%7~J`1*MH`Y{_~@H^ovpT zh#u9AHb^ctEY@_cHHg!ZVzcm71j(pf@Muo9UJGfIh#foa$T$k2G)`WHVk16}aUc@k z0zZ(tp$iQHYmz2S1_NWYRR;PY=zWx&#$nb~2itBzM`kJlnui#*nb`?toOpsCmzoIyyJ-pC7$ltP>6PoB3FCcP0})t3+p=#&gQ<9I2cma_8_n zMg@RlkBtGX^v6s;EjDInD{ZNzpX^~;!-E8k>h}CZab2Em8hReQRGw)dY(pEpff>r z!MkTPp#AnE1#t$oYMzgdJ>_P@YRJ%YIAl~*IkCtu(eY*2MN(B%ypY8Hp z8{P6nGWu$}>jnz3HIMfuC4l4Surf(ZVk&E3?vf@a30};tS`5krWB_|aZ-WqlRSnFl z8x6rx1i;~ky>17iNxxPudvvY!<^sTJ`QY^C{UXTgVmatejD507t(f`Sx z{7G~B^V`{5{kI^Rk--`0AROeba(>_kkPvr8R=9dzySzBo#f%cQ=X(O>z?j8IKzR2# z6vHCm__nsb)?9dSA?|&$7k=`SpMdMH*XY`dUGTGB59H*o?bcVWUy)zG{OjT!=4x}( zHO%rXa7@iQGgbu)(K*10p|5BxK5G_sJ`2gM7&wBqOyz}Cm=Tf^)*qw54ko?84|F|) zjuU}~p%dpc$iU9jt+EdOiot2ygkm|>y5m+6VDyIj4^?Q`V>jWtnHL<(LG7AMN*Fi7 z->4wW`8696%Ng(ZENOg;h~9E=V1^wV^I1#%$ zjy6dXGKsXbz^^U=K;^F$0x>jV>)p~ZhVWt+;{%XSz0Cpb`GX+ACY>jrxGwf2xVxB> zU?Ll!cmNzsT^0(bp`3G!G?()gvPeO+xf!kkF?jt0Nm@EDoCMmdd$rl)xf8(V=CODr z;)MLv3q(hZF}(&A8QdJiznuSN=!d@d;=Sv+td!E%TKiEpf;6@p_s85+$F8pHYwLoE z9cL_gm5Up>F!tlvWKG1vfA9P6h08ZDN4MkTr$7BEeVy?EI>UcPbfI@aH$L5vnV;Ec zQk(>Bw8=E9)hW9403ywtb4MB!v+=Pyz+z>DDFPA!l0cUXx=~r13`{!FAkq*cIgKCa zq|n;mqwY1%ZiuKRj@2y^wAv~OKx@^&N!CCFP64B_v2!}fRHm8Jd0sVDAx-Tf_GZf~ z8N3+P%whbxQanS%=NKle#2b$E43n;TK%)&0q5aG`k9r%!{I)7zD*M}8SE^gDBay3M z=uH538HF?{y4dGuA^O=#us{>iK2n(gMR`iZW0_-?00l%Lp#T+$#>xOZKTN7DNiM)e zA`SvFF_5^xo?_pWt{RzpqR%E7|DgV5*#1vRA%Bie|A{BY1fbIlIK>xOQaF0$K%r+P z03$o>=ng?*8mh7QWmk57mE_eO5llhoy2#C|H<1W@8Olf{xnf+nEX!DZQ4~{E< zL2sayuXGrO>Vua(-jgCL;>Lpw+1lE&ox}YW{w=?m_w|GS?1OMcuF&x2P+@5jLzKME zqj$ccoGRBiGzVuY3eeHOIX4U%Mo!%r<3j*t3`dZFLoG6nD>U?4oP+gL7JgT-9|KbG z3Gk96G?Fy2%pgx9%6^0R!gw!vD}p_TJ_9NYcqh;R_ys1ImFSF-07S|jX_X7rIUwDz zW)RL*T@i$aIoy~Ne0Re!oneI)n~{1j@-!$fDvhjN{7d>Rt>;fV>RZ`wCSle^wuz2G z$Hf3$_&&B=&-O@ZWqb0WNa#Pvhk<7fNonMoMZ5U4_*be92;vQR?kv%c?J?8)ky;2z zw#IDVTx3TL+JGL@1eBhI7wt7v=Q*v>kZ#}J)Ju2n#1kSTSop1y($m6(MLI2;R|ph( zo<02WLE%dVM05?q-Q8Wcx3}juHa7V7^tM|ctuuCi+~=@&cw7Ng>$>swhEA)gesBIg zy>Q`z9336$)vH(07f6O9-*hPPm77=mkLN%3pG`i?hxssbjmrxva4zpRgQkbCa8`1` z0Sb+s-WGnl_>C;(#H|U-T8kf85RQ--T3a?dCOGfB;RiY^wq<#=mKv?lM1cJsBw88% z7+Q;fYD}o<&Gi}Io38^vQlfJ&S{5R+evoPuL%Ckp&DpAoXX-#3Rpr;3x)_J1-wR<> zNE~~S^$fUv!#yNMpZ8RFrre{6i*tYL@PWWCZw(wQd_!;9P#5$2Mr=|74GF-v+eDE3 z7Z(c1*taDeZQ%7|eT)Pif>j(aCEW9lJyv&Wlca;fF@~T$Dy0v0gYjt;YNBc#R58Zg zC)S6K_<=%5-O=BX(EUjAc~03w$*O~D-kbEZIGZ)o(z{swX!^ZC@7#*KWAFSENNXqA zllTurSBy>A-r-dxfaf^^oT6X9{7CXU;J^sRh>8SoX>=*xK7X74KK*_A`OkmO>zA<} z+PFn@e(k)Tr}Ok+@<4y*cYen<7Cgo`wd+4AAk}?g_kwP`w;|R4Q-#Ji&G_wcRfVd` z;rmrqyLdTiFeQ5{?HXH0PXW6cg{DbwuiP2e1Ha!)z(l5h5VCnYQA>i}CnG z+3Fm32WM=Crau77JnIdZUZd@R0|tgbY&?lXP`JHo_Q zI>~mM>lyJ!tecPN1>BwuQD|f^;3Jxd24`vopv~X)AB=XhJ2uOyC7bh@j%2@mnd+Yy4Rzz>WzMoqO= z`AM9V1Ds_hRD?1NWGsLp&kHRu5(LyZfrt16hQPE9T6(Z86vGcV?x~m>kO8PV{6Kdt zi%xrzAFz3Q(p*3T(Ei;Ef@4-|zs68V7OFf(h@zDfweP)X<4A)EB#Jq}c_0;54{P-3VFVaA_Eqc-}3!mtBdFpy>*<3|+xox+GSH3mG6`H{893?!U}F}5`( zCXyjopjuM2qe(;F1>LLp>6zT0~{KD;C|m2n4+nmFFfBq1pee(J zxz;L~h(wBY3+Cy-LdO__v?#!90R6Z`gRRvcF#G@{wjo0f{DArEnof%`WUK~&OfKG5 z*zw{RoGNi3DqY|tZ-%e-!FPIm^MndOECHYo&{ozt6F^%@#mK0~Aa)7mW)s!EaBJU7 zI`Rh`N36NW4QpEP0<466-(e#ZudC!1(P;R4?8c_j)Sm0m$V@U}mc(r5H;jRiq56`h z8LhNB1ZNCtj8;T07>5db3;}I`LRK4@(g-RPfpohiT0?N+8cS(Wow&x_aT%EEJaX+^ zR_n;u)7hkX*sH_(UnK~`n-=^s78w?ZApjBEr@iK$9A;#J4kOM%U$LS1ShSDWx#B+8 z^}r(Q3GvLoyGyirGz;(E(9u!+GkegM@#rz;3B6%xBMemtY!Wte&s%(kt`8BNY?jcp>+8uLZWVYMk@ zYL6Poq9YSx=3oT(cbR}GJ2?M9*T{U}*3Qe+Zw-nZvw)!e%M#%#35Mh*ZM zKL*ma0KkH`qee+4#!3Jzft)ob;<+Q4L*OIHxPi}MDoOD8NbhZgQj>X2XJ|+w0Yr$g zI1tS22m+*EVir0>{v}oC)~?+<&d?*UK7ngB7?Ay;44=E zU$pqmffj)Z{w9(6(>?8BUS=$vs-Ac~Z7g5U7cF%Ad#6qz7akn{T{BgA-f~WfcK*>$ zxPJY*R97p>LKds45?8ty^Vnp9<7)(%D1nDihN>FBpj9*Onuov*4B0^&(8h(y3>7nd z>%g~SD=9IU^-3qmp8SlCt#>hF0MydM(k&4B+=UZuyhxJ~;cN6Nf<6FfdQJ)IyWX`s zYkPji!di&;r8mbo4>(T;RUBuuREV!Sqbbh_udCHm08xiP*ddx(g0KdlHjtfdjT~E? z9(m}l%ED996^1l4426z_pfYTb=MgJt#ykK~2w0yq@v|NRFcH*!RPdJI+A$Zc%?H8~ z#z565%U}G#55($h%D|N2QSjwqDL%`RE^TX!m_7!JJLeB^+{+suSw=R&j?!@}W zRsdajY)RlbcH70ykNA2~R104A_3i7=zOE-!0MGMUmM{@7{yLQ0KfU=+i{67?FNWB! z$8|3+^FhN67=}Zy-lhbi0)GFPqfw5HeMkhOk@T}E>H@@*Fa!qwb;+U}FyJJ-;yA;y zwWVwJ8OK9199~@%Lh31+hKj18Vco>FrVeTMuftkh>sr&$C1OhtVQ+0h}8MYb&V+f2oZdsZ3y^Sm}PQvd7o?Op+%JWnvB`~0vjW|`9 znt)9yG!Z2*1|Kr%Ln3-D5&&l}*Eb=*%`#h@d1<4PZBAdMT9?kd}R_+E|y0OJK zA-R6(g6{6_($JzP6J8>DPC>L*IrYG!Pq430T3N zip6U=y}K{D>DrEZ8U*sZ!6dUAvxd$Sg-;Fhf__1STo>>Ikz$#1p45~eVB&ZLkeK7H(}J>nLSNPrVF3rlB z6nSAv#_(1ssF-{8^WcJska+e3=iNX=Mh^Xg*y`(n`wvY+qadS-h2@z>^IA?^q9mXY zBF@Ba(Mz+AxQ$#40%ugZ)>bEp4k|i}Nt#E*=!0GaBL&0F;|OiQ`sJO!o%OeNEEri< zIO78XtwhivH~mLp|Nnt#R$7z$|T)#EPheWBsy@lod|Y+^WL(GArWX6jkI>> z$GFePQfao2&c2=RCnS7GOb4X2CnS5s?h!e9L_+(K+(BjfXgSy~y{gbw8ihnPj0y<6<7wmBT-h{1M~zwMdC{s-T^!f^c!g4l>5O`FJsDUaoM08c)GsLub|3(qZ7d6 zI!~|uk-q%1FF$MBfNa0FoRtyzg^& zI94}#SRBsZ|AUV)0(`E2zZ*pUhg(0aeo&0-(4&xx2!@7O;OrQ5^Pb>5Z%V@oufTK+ zNL&KOvqWGDTBc=(TDIy43I)(-a1LfK2EhjI!5RL7`;oX0-`q-?qHvOB&_ud<6OZ$y zOj*AR3E;6savEgw#Btj5{_gtmB5QpGmY?<1GryF091GDpMq+|+pYB5tWpU?gyVvaA zKsaLRu&vfa{K7_1E7NU8AzQm!O)vBs$gTAYZ%#{5W5@_z4AeN!O)vzTs|1>daKo|2 zmChY>@)Oy}QO0jRkYUgTrlPn z@6!~(e7CGg*p~g>Eva_2C4f=t4esA)GEqUdd@8CF$AkoM7*!7)$pOAb^+z0Z(r7k2 zvvxS=7hL?y@f*8$>YxAKuW~jhT&R6Pkel-ugYv+PK}oT5o8N#Cl3r4sPL%*mM^bT? z7}oYrW+ZC}rSU4qM_ z7cAHlN#NLm`KbuK6Zc#G)o}%Iy3|H|{aG2;yuGPi5*YtlYpS^fgtFHJKIqPiHy2S6 zT-WRR(anzx;IUY-PUF9J;is?NPMHLC>;#SGpLr#si%&rKF{cW^gh}~O z9YKrV+?lL8;A|eos8W9Zr5Aq}@BjYa)b!tdFRN)|F5dSj=v19T4jnuN14>ynkRZ%? z5+=3DC-?vf8DV}i_y*u8@CZze3A!c8bkvScc8n-Qj7S7RQbrkaaPB`l-1Fx*lM2?e z0yuy-eGK@b(VchGTfAiV2OPoj9iMs}_<{w$^w8Z8k3aXzjmO5I-BG|W1eX9GS*loC z;L!HgwziA^OI_0r@5t7Ttp*snGaFv|(@YwXNF%{9psa(=6`KDcn>IckdDU@YM*uO+ z0Z+2#n8!}V=)bvw`6qQQ8giAGiNLfGJpe2JotQ40Epzu+1<(<0+xH_KR}27@puRd& zcoPs7JrV&Q5#-4w&Wb{2p=!#%eUvx9@dsc1+-%MK>u)vn=Tb+itK9eJN`eL?6o4_# zvl6}|E-?&M(Bw1I5ZJ9*>n|xTB{ox{4hb#n*A({y_1M;qsTyZ7NT%$wCNzFfoOM_4 zwN>92MY|aQqO$YPPks(gQ;NS%nDDD=0xo#akDb@Mm-)#Fv37_AKfDgx-%51He%_#2$r~M$=z==$JLJDHhk6{?1 z8rQvQ={455#Ja#dEs7MlVFYM%f0X_am|L&_A)vL8qC;`u z3YhfSfL)RcZ|T3*3;;IBbOjSy!q|rq0<9*V${-dY7a}j(;siCFxMuV?}q z2*?ruHh;?i9oPLtOQroU?qK2`N`jGOX{b3C>qB_bX>?E=^7DDARgp$1@%eewtluw#L^Akg}4Oc0st6 z-T(fY-2Sib^PjIx_`Uu=;Rox7{`0#bck{eB7j+(k&T}^}UC7E@n<`gnvWQ(DoY^3G z4Ac{0+zRaa5luk#NCKt-V0whs5kEd0-ThMP($;Y zVzowx75BCIdH-JA*?Ea$vrW=)Zy-ngqqr`k*#r-JLN1ytxH ztDZ)HOX8)*qDt~X?WqTo0&}qj@fk_cadeJy5EP?+0btNmzTexC&wWtOM#^Nbq;)TL+t3GAibmoxe&DIK zvmHII8HV7Y-Utu(J_(zLcj89g#5_a{$8`{D>PK;X39i?KtRG|67s+}tWO>9WP;-m~ zy*cPWXTVO%=D2g(v9n#gXcR!_6GEPW)HUq17HIrMs-sff7`{>H4l(ExkiJy?#L&`K5U6haPw~GmvlrsUlY0zV_$ zKm`c<^)KiFyk@aV0IxV~@zcr05B&kiplw{-;9EbxMMU>#{A*?~l$THg8S zpXvJ_u?*%l4Jzk)A^5eR*+618Y(hR1$%+{BBF3U0W05Pc0TDo<9!z@@9e>g9Oumq< zB3mo;YuLIZ;RQUNL6I9JSnb8ebJ5IHLlfrV@ZQJq@0}LUxUB}rgLJK@E7-fp>M4Xqi7k$Lq9Q34${;FW@jox z09HBD7|mYIPA{jCn4MXBS8ydqrp}K5Uz6K{%?x120L?LW=qbK2K)}b8lUMN#$6}1R zgn0m7;Ld|P`qy{=T7e@N|JpkW0TSE&asMx~zkn6^?z?sIU{tFfwl0MC|s-dgM>eMSlNRiMrc|k7~xG^)fUf z(~-g6zoU1?Dq{>cokH?2gB}Q)8Vrtr=@E;d>&I5H2)l*vKnvAgdPVIIHswf@Ylb1? z!iBWGA!>l2U+5qI)uRPh6~L>B1%MG!3vHg z_imUuAJ4d38xN2g7I0a66LyJiZ4kk0%&&X%eaA9A4dkGsErE}aZ6 z-5o3a>Eb2w+Pw*1e81tlM-U)Z$3^a9AfIKyAsUE@B(|ShXo4(V#_@V@8G>zJz}|pl zM3_!Hc5bj^5FSt?zBk$7=R5+uVo7ksDgnIuI1P$we_Z;-&eQqj-MyasQ^chI{vS@_ z=ut21XH7GL<_5e7Vwih&HX_SN<}6Y=cpBQATqC^tx-PqY>RTA_aWb%_58>c;VWBye zn8OUV9RoxYvKV8YjRyX$bN`N4{TQGjTP-**(B`fl(G~6Anaiag5&fInQ-@@bVkGa* zh;H=;dh6bC1Mt!@s?M(MI!OBOyvHPe>3py7TuK&ufI65Pa!wjyAYx9`qz-7l)=>Cy z`c5Yj(z2bBmMR1m7W4-Pr+G6K3IYm5P#w%QuEUZ2&4^V3c)jBb7rrf;;~$?(S=P4j zyJNjOoJ9S68rDYZwfA);O)Om&=OSD>5>SULhP^rb0!-KwB7c^M7EmDcz><|-E23fF zrX63IGH-l(DV!vcQs=118!pP;q^Y}1;M35wjOzRw`W+q$a0h+Fz#zXLi-i%l!fHyRLM&zz-5pSV!cANOpCDQA+ zuj^@IRcbPJIOXHNfAOQS40;p_nS{_#-9&*GK`my^AvU^$RhI*~NAO`cre7D2jUf^V zULCo_p*QaV0bSPhBJ9w}^@UwO%Y83*zBo8MXwIx3M!G>l*V0iSd6?S6Eietw6FaA% zbj7`i^Y6^z8=V)D7gG41hy8kD1ok87yl^lQ@Bk7asMP~lL|4R{jaj;`_FHo+w(s%2 zq~Eh>21I}gt>t3s3vWoQ62O}k$7L#}26Tnb-zK_val(6hSUNWqngh@w=v2&iO@m;I zZf|Ysb#t-ZQM!YY`L=Aph%A?el$!}FY`CCB2nF9-#WkMI9t&l9lKJbj`P&13#|K!P z0ASH+wqvdHkhuqGPofUgn}@+b9L-}b{ovP|hlh1|>-J_;z4OvkanIi;K76<5Gn!|^ zT%Z>Ssq{Xu|4{N#aYJIrh^Hh#I1bqL8n7p6r?oAAgh1XHx6}i%9X~DllmwFJs=&q- zrlAtKly~XfH)amF8Uwybabk(IN<&wP?%tg*_V&&5n}#8v_IA7VLbzlYgLbRj+*P`N zUg-WbP*VqDX~wat`>+C6sxw%E0W4#UZfkb8q9o}w++D^g8fMGr!kOAE%#%A0>A-=2 z!#q^sVHSBP8VAzEenGCdOM96i|6Wp@zp&~0_0(s9fn(~`DgzQTRUP3P?3OeU2GS}c zX>u4&S8tGJGYEmUA#910Q?O|aa!Q8qXoP1Ww>O8Ik9m{DuwMvW{Ka!6Gk5~fD~?qK z@FvAmdd3$qI%@;?fz58wqd9izf_2w#Z|>^$P6D#?4!poVfX8B_+4lnFYYp|K$)h$k zH%-jE`Sux74)*QI#M3_bwiyEP-zfkrjmKJHGcf1On~w-;y)<;HBZ3Puu=peuIaevg zrf#Si#6d%wn}O)gOA*jmr$e8~+qowyDwe)iH;6ZK-TnR-X;|?2%`1$?r9l^V zcfSdlny1F90(i4xF|gX+-qA~UKF|jbF6dn}^?q%vckWzJ;05jgNOb9f!n@vXSp3^* z@pn6ThVu0mME?4bTnRIx09g?@;yTjC!GJW0ds-5};>S*iYQT2LwmH`I%F_AWfU*!7 z#km@y8v{q!@v-RKI0~&rfcu2UdFF>v@o_`>s_W*<@)-Yr`9@!3tSW#v7(a0PI_dV-?lE9!lhiOp=!)YG zTgMC;w?sw8H|-%+X!fzt#(R-){Ldt)`atH$qvjlJ=A>}*#Y6xfcH$V6G7}2v+Ttzc zIYDGG?n7e@@>>e-Jq%1rWi35+e$_^l8|NZ=4?zb_IAjk0@eh9}M4!&T^qZo}cYpd@ z#aa)lfX#rsgO>joVkkmvi(f4X=o)kp*gOOU2CD@|l^i6O~QgV%>7&Jgfc^+q|09xUf=ky17r4xfy1@MN3t!rR}wrvWaxb47X5+nNd z*2(o7WAF)KzuzQ*mM(c8tKehfB?QtC*a5?D_TA>vi-uq#&IGu80#Iw6!B!GH%?1^| zprF#jva8SV=(EzBvGcAg$r&a+!!SM-zmCO7fybftK=}{!_kI;s!wbiCBKOIE`w#o$ zb8ZlwACadqtFDpiT4Y)$)pccF$92FSjP06m1Tcjlcqf{@x{;Z?9)OMiHHui-4-yeL zzU_@W_u?92tUhWJ3kk!#i2MISx=U`)(r97?8)Og&{N{498X*7!4ru+;p-Yll_1Nvn4^ zSeS#|h^A>|Z8C{LhE=@q;Nw^3^Y>+9l>okbaRNLD(ee#+&&Qd#NglwDFUg_NRclhq zF|!fucCZ~|oPS~WE#x4l+h%|yst;y7CgLco)!2jJ*+XpyKqC9TU0>#b2qI3x6~c;) z{M@PkVZWdM7v+2TPku6QroB<@V815jv;Gd#-I=>T4*cPxf8cUgx$k?I?Pm>CdIw|T zQE+lbm^Rq)Ss^|vs%K%dj)VXmL`@Zdx%v?F0hw}KaGO%hAH_QUkXf;bAcF`6Zv|6Y zc0_YgScp@ZDV0H_&a$j&ghPBJ@{9MZxAMlsDgk`EBS~5r=KMNsUti)CpugmtA_4s4 zi$i%>YaE0kxKK5PPyBtHc^zw|LX~q0mEQ`!gQogxTA^UmBo%G5*v7W$+A6@=!tW>G zjOhf%5Y4O5AhpN@IGjXP7s&yRTVxcArl0kF;4+TJ^?K}u&nC&hkc%~DFa(8tJ@-5s z!o)=Vp*rXk^tjPs%(9U%pJ7L5Rp}g)ZZPv1Q~N$>zU2oMf%`h9`TcSG}D?&dCQD$y9w zjwf%xeQsjS>Z31MIY{j_7oP`Th-xopJW`D#&$=Fj&oa|lCE8%3GiU(f+z$;v$I@qV z1+nJf@8d$v5xCv{7vhG=UJQ-O3QoYp@K)dnse-CFCDj>4H)p(0j_Oc`0O-NaD{kt& zXsi;z8yq&)YY*Y((zz6^fUi-EjWBZ}j&lXZgcmQ~6MuL&UZi0iJ)po^W*X=0Xci;S zGv=9n;LYUIc0kPcZEJ^GF#JT5jCR`-09_6`f{@Sl6r;3a9qB)*zn&zGJcFd;2_-x% z%}1OuyaeYq#y86|7WFKRCAh#o7gwwEnU78y&Lf9H)%Vkxo=1_f*sbJ0gT=3crX!>C zkH#Oa8-^aaW7wLbW7)kQY8RQ_9z*;EQqwh@JA$(@Pf2MaN)zYp>lCWT92hq4&2Tgb z_ovpk(C6_3Xsy9td8`t^8yu&)d5^{RHZi6IH@7ivx}d3F*naMiFqCL#ds}bpUXxhP z!gMxvgFLH(#wsU(cH+!ow-cI@xmz|{3OIdC%s0a_8+$u09E+Rfi!zzOh!aUah5kTu7yf5Z!e6Pgga zX&{>SJeSVLI!x#B{onYTXG4Hdg56j$2I*W+Us0?Qz_&QC;CFZLF!=O~INhOU*4x*w z>s7iR`$KB7s;OfrE6&jEb~B|o71pU&h1DC#Ov-7s7)Xq8Z6C#6kmy~%)qI!1ZJt^$H;nGtG8hXM* z=7c*?5CUqOq15jZ`}33KSdiHi{GT@x_ywU6)yT!Lln^b)mEe zum@x#_#QGa2F75Iq;lfoKji@L$(FQuoX8BJr*;}GR!uRU{S2r3cxQ@OTZfJsP|DS06dtJGp;}) z3mFvG4PYYT3}t6_VhLn}kt4uINx(Dp5YmFhW8(SjF~B(h<{%{!U=J*z;IV=6H!Ck@ z$`~fc<_rwS-^O47)z*Gs>4-zrjDi#3%@J-iLC+%OcU4WwAagK6}hsRmCbNm z2m0Jpi}iU8K|ln;*H?T3SS5f}9EVNA9-WV$Wcxw&p!Vv@;B*FrfOFu{Yr&Eh6cRx4 z4F!<~e0qGA*ojak*y7Xbx3b@MZfIuNfZZHb z5}_&Awl&f2w1k7_1mnEp`Dw@ z@{xqIs&$Y3yl$GQV>8jrS+MXy_CfdFY_&ZaYNi2TH|T~qbon!7#u+~y1+ZnecM8fr z3aSMl@F2~NUEbvX+OxMI5Yc__$Vhes=rnmc$}y4-y7{K;V@Cnw{bQVnWMGTmRJ)Uy zcY3j%pCNh)t%m_8mS0T%KREBx5#yXsbik?ys(L`A2c+&WQ$DJhrW9lb%dw1NeKynP z!}@c1|IU91Ns+EE+dbt|D+28PrU99B0bg0HxB%brIPFABbX7)G47EVzI+RNJl$<+M zatG|)9x*>+rbk4&r=*wr;xuZUA z8B^im;hjhd2Kq^_JR->`fKCbAgHj*6{ed#=6VVZ8L=T_<^fZQA8h;&s zNO!h%+B+Y6QR^H&f<#m0c;v_(IHEl)eoy?6h#s-hBgeF-*e%lnni46RXEhNA%+k8L z*beTF0T{4EfJNE!Y{{UPIhT9W=0h?-_a0sRG1z>G#>=oX#{yqhHFD2MYA?|+b5!)O z`ZGMPv&XlE@6&U7l>Y7FH?mIxC)KKk@S9+_C#F3td{(t2XE&lfW!?AU4mt3ojxaZk z^In!$RRu%Ew!6K`hy)BA|&SAW9Rc$h}dMiOm*0X0?s*0ENy~Gx7NX< z8#=c0{UqdPYCpka%0K`d5kNi@bvk9GeMJHw{#=zFDe)s#+4n>TmAWHUnL6&x^MRD} zJ!i{w2xVPXzl*^ zDt5H#{~CaqdARPiseu4?cItNk%42x~N7LD5yR^Z!5PDtW)N?KPJ-NKyffwiSlh@iN z2BRmK|F)oOulB3XJJ9ah{uMLv?soNd)Nn%7Kbe)Kh2Ls;!5D->gcA@|AoMWtR7tJ$ zXSH+xBS*Z)qz|L=LnhrLr~B0S!@|1>Nj=M(x;%=5`tY5@ctpI^EjM%V^_9gc0ep+2mD=VfeF#s)wkcn?p>z!a3CAg3)*~dhG`w; zIV7(m%>&4Qnzfs|Prx8k4NY=Ety&1Kp$a;P0Pol?y(}c!F4hGK?|8>j@L`wn?Ik7XpDowEX+vCfgDjzs2`}L7Z>T|e2`@(!! z4L-aM2(A1=T zW_qY%UmrQqeV_RQPjZxr&UDx-&m4SK(Xt^f&_F^B zrxvC0gu(VnZrs*M$4~AtC6fdV#{W!XpsW5FD!y3wb}}$av!)gF1j2Bxq%$!3Sou&O zLd3e~G0{LJAbwv3y#P5-b`ubx$}FF6c&XMN{Ypc-|65?%c_RToPm5Io_?E{Db(qaK zyRN#ShgW5{0V}^z#yrK8@-I&gi%>3ju+L3I|jm zP=tw_h}I$)hF};Qe#aC;(n;UIyH*JtFMQJ$u;)!9y%sRUASurSS5f}EMog9 zi@yurA<-Kbnlra2?w6HwRL@+m=g6U7F9fmBhE*%_T(a_vRVQlH+*XDQI{d)wtFZuk z$_%4UGY&-`L0e>@p$e@sFp)8{GO*`Q$AQkFNJ!0^3za_>JcHvm@L5ODogiP+9> zr9Y7Xs02-e2?-r35P#7fFv)?iJ9N1oHBB}f5>L5k%3_vRNAa-U=zkh`_v7dHE!ZZ# zy-l>$0e+tGzP`$M)i{Jzybh9Ki=UodF_g7-#<(^bLUPca+FJ1-nC{Y})VhG-y_y zo9p}+IW_Oqd3|fzgv)<)D?D!{wEzMoEr!=(*8fGZN&u^P9I5uK`(MYx+{`|kWclE2 zE$XA9AGzu0;s&baK$S<8_;E%8Qx2GLAQ6n5D*kK;=AJV5U8l-RTqqI&S#uDo!l(+6 z2s}fw@3;xrAq`BkKTQ}IY{8`4&ukTla$5MRToUV?J2fM3sy?%bpGl`){G<_`WsVHq z>w9%s%Ub<|-moJ2DA2vPBfWDgqVo9)?`L=EuVt)`0IPW6-O25c{EMwiackojN*Di5 z9_ANgLq{Zsg0oM3As)aylvr^jKoY>>w`u?t zKspMbC(v1vx2Jy$3ovL*rlp}J4b>`O5^CujmjZnOlk*}p{pMKkq&$mJ=HyTXxEYI^ zLH%SnC}u^ORUzih`Mxwn7s5>>HU0#hF{Mgs|sKhUn;s%mv+g~?Ja+o zevy?W<^BFq-fOfM>!L4t91zDL#bW5q98`u8=A5bn*mN`LfJFQ19Av@3>(4PJG~EE= zOsyY~rUUk*=n|T$s6D+^06719f;PXY7}s8<6o+x2&PCiDsyz~QPAW5Ueio%FiFppD zV^eWelB*p1s-InGzF+^_Kp^%23AwZLg|=K~hTIX9-++bwv{)s8RXk5AyO_W|>BA1x z-oN-=^_!cUetrGW|LCxv->b*Ho@@G%rLT<}s*eM&Iw*yQp0w}8_labnLjBk#0Pg|+ zg@{KI?Zgq_@dUuf34lT6$GM*xVpxt*?Nv*4T!NG&!gHVNOqy7d_p>0bWbpWzt6|~G z{yx_g$L7G-&HI1(gGg7e3h(^$cE{H*Voj!5L`O4TC4g0Y%fj01_OS-BrM0o%hW8-s z$G+eLZ{_+QQTBiT{Kv(+xfWILuqV{-Ys>~&BYk1t*Vy!(_q`Bg0Bitx*UJ=k-s$|0 z1OS;alM`g;AO>oW4QU}%0J5k6#Ds_<1%`uEG`qmSMV|LB7c!WUKSi)yD6TJ8Rz)mVR%6Tqqmu!_f`Tl^go!t!fdj#9=2EAOq(lR0vBE1Ls-BnUG{844HA;{Uw?L z(4qopTY~5Sz){Gi0K{g|-7v$~z#zYsid2zZnX#0m)-^$FRAXI7sSmTV`S*tZZbSde z2l4OG#|zZ)Q(se;3)}ajlk=i)L98l(RXi4pa(Af$Fd@qu)_8mF557$cE^TJ_Z&Ohb z6&tn74@G)etaF$5^HQpw7ncjX0hqJGIUl2B(K(-!IFk<(Acl`C04R$Ad!!ChL?VG0 zNMtiD6_wEQT$fIpzT+y+xy}lzo5*!P9MolYra7u-;s5&VZ^E@*0}j2|dvYo%0ynY! zhF1Wq1h9(dO9BZ9)NyQ{|8cI9yG@(f1`V7TG6)2-Xpkt*NA)p!hh9J)a!<{{B!=8eQ-(V9v$FZo z^m}3Zom=r4#-mS-#Zdt72WI@M9>6NTOLAdf_JeMfz{Sh{qr0E`{^X258qa*M8u+ZP zd>I<=$2~Wm_aH;;91G0F9Opf*tLQKvtYb<71(XO8?N<#>wdX|UjY!{%XePa?i81TN zP}Ff4>rfBJ@#3R{n7aF4Zmjpz{>Ul;tYQ@}avUJ0KfUZe>>arG&oz9P-gbKr=FX2I zpD!c3;Th&K@Zmt1ae}Xfxz`$YO^C*MG75!)2Vz_}rJjc;2@-(n>_BDeHJl&FMfzMm ze3a{9bw)1ly(in7yO2Kr)?xX-YOE5#D!#EeQ9^gkG#Hm`Ua_CAw)eYr4<##wr1<;;SDIp0u=H-Bu!^tT9PD;-`@Yk>N4$o+@98R}yMBCqY_#_+Y4m+jtYpDg@#4{r!%i;# z?!Q}$1@$^EoYU8{+g|@x`~C8@e;49A^Gmcp8a)N^?S8+^<9`!g$5)9}0$9aMvJ^XxH*LY_Q(nvK&gEalDps+I zRjgtatN3!UIs&ZX>y8$`yA-E>(Vf3vlzDjKF^(TgpE1{e!WDdXW0e3_@%003PE89I zW5X??o44s<#)!9Eo4IjUbIo;szBUZ)`p&}I+lLCsugo{w% z03r~A$RJP{2;)Nq3}8V57_5!jr;3i%3JH~m1RTPUE0E;m-1lDJ{FurhWbbp~1Vhe# z|K(ZV{`Ow$UF*ALt#tq$I&|pJp+kob9XfPG5?(2J@2<5aWxc=4Z(tES`1?K>)#{ZC z96lP{?B>ZXnS^iJ3?idg19QZggz9)B-&ByBwVg3WIw2i^)o=b`(q$J`*E#rIM1hTQ zf=Tf8j1!CJ=4Q@djB%ZiFkt_#x<#pK@sK&(x{VT}j6^AOPVVpz!l_s2%7iqz>3Bzw0RUc^Sapm1&MPG!C5BV4 z)K$qSDtZ5@FB?3A{K;7iOi8r}pO_^&CJ5|nMl8vrU__%+8GhA67OiJnJY=?eUB3e` zMmJf0FsJx4Qw-MG z<1(9dlcnLvn_Svt^iLF5*(Qz1RwDxdUVI|6V4&5MW0KU9LbptU%T3F4AEE&V8J2O4 zWTRJ{^ueNuSqlTvRWN?oTYVCQwOTT*US*6x8Jy zW{D}P{>96G5{gcb%pTR60P#@?AL@jtAl}I8)!OPE%HUwj9X2AN(ZxrrwZ|BkM=PI+ zctWC$!sn`{M}g4nalI9cK51|HwySQgT1JUC3)OnqtAeLqEBjHSi~4HGoNtkbt=jY6 z>Ol0Zd9(c2XRr9CX~`s-*sJ0C{w`C?dTL8qGFMm;13d{quto{E?Bbe^zfXd6tQ&bI z%$hW&^(Hg5v)nA0_^#@!a*m=AwZ$5lcT3(VQ@HwZ$5(sD+e(b4q`29nU;zUq1Ul0= z0cWqu4_ge{;)gSJRKiH;Oha_ zuf6uP7!kE?N{78aHAbi{dU|A!aO%7xSIASF-W|xn|DA}kwB}T!Q$d`Oq17Ay9Xu8T zQxZ*lT)6e#QG|?t<)bK*$v%&W&trhapS;WgFb0bRIOXt>Vv-p3jc1R~oiOT?aQE?! zFj+R6O{h-#@xKzm28OgCAHR?qEpB(n{5N)wdW|cXmC+|bm^S~3tk*lF%Fx-#n6#)jv}K|uaF6w%DyK7 z>p;i}_B#n|m%?b#-kI4oH{}(3|2U)0$yYYHctW5%7p-QYEhR>LW#NS3OFO#XosN*F zcb1#wHtzy36aa`0^6`_L(F?n0jxP5n`0}2zANdq+w&gsao@ofxg{ldvr*yrcvG#+Q_cruu|u zna{g~fM9q2RWpX!yJlt|Mi+!CAxle_Zmn_GY9H%Av9nE z82vEFRIL@nmRO95o44gZ;JY1zLjtH%5VEp#<)U-$b9v!>5hu=SeYI=iqMFg>N(kyv z0NY_8+wbzTYs2|Xr+c`W)!E5c$hxEJhMaMqSwS5zIXE~B-A+L8WP$U5T*jZdfaiD5 z$o>l=1UHRJgRkMB%w@km!z`F7NlI!oipEO>6208pqtVxB^>VM~a}M5ul;jH3*8R|L z80$`M*|9G-S3v~fTZF7UvT|m%t6Fmxo=G%OA9J65{muPnj?Em~bbZ^NV|#jC;1~Y$ zocr7`AE}%9W>$qLQ$M&omiEdWYb-`@;kNv-PDCKSMM#^{_HSCk2~vW$uchzs>7%Cq zxxMy@4^R9Wz|XgoZJBz?acaApyW3r93MuH`?HvB6F5~8M$Fnz=J0c0!ii@@bw!0g> zjjG!rO@fIA#16<*Bjb8Z&z@d9&@ylV(@1li!iDS09mC&vcGTqdYEKbMh{Dz`?zbo8Z%f>j=4h*_jn zf-x||pL7b;2oWu%>XwDzl%4+(jN-LrYoqJE_0Ooaix3gZV#{<2R0xSP#qHIKi0Zs` z8MabeV8?$6ti{vvpRjzUaBQQ&H#jdn(xif=%|y{~d|`rQIw#Z)9HCV9Ve~W5rk{jAVE& z`z|Y573CWuwIl+)8Y{&9*OZbe!y=jx0LUMmf8;*PeLqbzrnTOhlVa!_)wg0~?8qdA zDT6_HCrA}Tn84njx_|27sRyS1Ae^1=?v07>)KOM@C@(LUDm)e2&brS2s!eGNYPWo{ zG1=MM*n3g_==^UTik!B8+E@VV3DhUZ@AU%st;g+I{Klj=LYgQwv(pm|5CKayx`K`%TiAzfW%mfgu z1OJ>cHhah8J2Y=mxHNa*{UQ@~6K?JQFGSdKB^ocJ+bX@Cija=LwEfeD5To@VgyO(U z1uo3mp1b}0O(mZN>BGTs5I}4=zLS8mHkaoYeK%Hlx-=mj;a}Q_rL8?ZHzEkRM$GQKB-to0 z4#mGbedbJazn11eHxWAkoCRP2Fd)Ep$&9n1DMb}0Z%ZE18L;h_+nS1Vik}C^&%p3$ zpwIPdZbkrPC?K{KoE}O!KPW!6uyROhVP%HFCjf+C278wB0+xE3PrLgiDfW4t5#|2D|7?af=_T}#L?#S7(L1NMX0NVh3 zD>3YCZ}nHoncHL4sjmVwA7o^vnE-0lW$0fbnviS$^k497yrvPs~F zv=)-W#X&kD?f4fnH{ToQ@m^LPIfm1r=)MxgH1`^i7}`yzU78R8*qpn$Ek^dKIuT9? zsRlI&-8E}-f}(hILe!yUvqHKK{F3vEW*J9eOeaL$EV0uXQPYUf21yyIWwDrK`bsB6 z-7IPOiTmp3rvEf3hn_dozyPhYF;!`+zG&15QR@(AntQv5VRK!;qpWNjLNhvz@v7b8ByzxVL$-l%>6BN+Mt7#NU$>42S$UG`VnYUibAGT^LUTW(h4glhg)x#{b9+p!pd@DSkOUa ze8IRly+eW$bYY~esVro`k}#`%SG3@tQj1PHbV5Rjx(X{-Fi-(*DAR{%;D668=Est4 zm2DlC*djtuJ1_k~0c?xE-HIxxVT9Q!Yby_Qc%=am1Oiw?LB?Yw&`bcC{w)MM!9Y8i z1-m+^FOpYRRzZgj9XfRA(4j+z4jtjf Z{{jnz&L|mFP7nY9002ovPDHLkV1kfAZzKQ! literal 0 HcmV?d00001 diff --git a/synapse-electron/backend/hook-uvicorn.py b/synapse-electron/backend/hook-uvicorn.py new file mode 100644 index 000000000..1546d0529 --- /dev/null +++ b/synapse-electron/backend/hook-uvicorn.py @@ -0,0 +1,37 @@ +# PyInstaller hook for uvicorn +# This helps ensure all uvicorn modules are properly included + +from PyInstaller.utils.hooks import collect_all, collect_submodules + +# Collect all uvicorn modules +datas, binaries, hiddenimports = collect_all('uvicorn') + +# Add specific hidden imports that are often missed +hiddenimports += [ + 'uvicorn.main', + 'uvicorn.server', + 'uvicorn.config', + 'uvicorn.lifespan', + 'uvicorn.lifespan.on', + 'uvicorn.loops', + 'uvicorn.loops.auto', + 'uvicorn.loops.asyncio', + 'uvicorn.loops.uvloop', + 'uvicorn.protocols', + 'uvicorn.protocols.http', + 'uvicorn.protocols.http.auto', + 'uvicorn.protocols.http.h11_impl', + 'uvicorn.protocols.http.httptools_impl', + 'uvicorn.protocols.websockets', + 'uvicorn.protocols.websockets.auto', + 'uvicorn.protocols.websockets.websockets_impl', + 'uvicorn.protocols.websockets.wsproto_impl', + 'uvicorn.supervisors', + 'uvicorn.supervisors.basereload', + 'uvicorn.supervisors.statreload', + 'uvicorn.supervisors.watchgodreload', + 'uvicorn.supervisors.watchfilesreload', +] + +# Add all submodules +hiddenimports += collect_submodules('uvicorn') diff --git a/synapse-electron/backend/requirements.txt b/synapse-electron/backend/requirements.txt new file mode 100644 index 000000000..1ecea8f63 --- /dev/null +++ b/synapse-electron/backend/requirements.txt @@ -0,0 +1,5 @@ +fastapi==0.104.1 +uvicorn==0.24.0 +websockets==12.0 +pydantic==2.5.0 +python-multipart==0.0.6 diff --git a/synapse-electron/backend/server.py b/synapse-electron/backend/server.py new file mode 100644 index 000000000..706d0b1c0 --- /dev/null +++ b/synapse-electron/backend/server.py @@ -0,0 +1,1069 @@ +#!/usr/bin/env python3 +""" +FastAPI backend server for Synapse Desktop Client +Bridges the existing Python Synapse functionality with the Electron frontend +""" + +import argparse +import asyncio +import json +import logging +import os +import sys +import threading +from contextlib import asynccontextmanager +from pathlib import Path +from typing import Any, Dict, List, Optional + +import uvicorn +from fastapi import FastAPI, HTTPException +from fastapi.middleware.cors import CORSMiddleware +from pydantic import BaseModel +import websockets + +# Add the parent directory to the path to import synapsegui modules +current_dir = Path(__file__).parent +parent_dir = current_dir.parent.parent # Go up two levels to reach the project root +sys.path.insert(0, str(parent_dir)) + +try: + # Import existing Synapse functionality + from synapsegui.models.config import ConfigManager + from synapsegui.models.synapse_client import SynapseClientManager + from synapsegui.models.bulk_item import BulkItem +except ImportError as e: + print(f"Error importing synapsegui modules: {e}") + print("Make sure you're running this from the correct directory and synapsegui is accessible") + sys.exit(1) + +# Configure logging +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + +# WebSocket clients set +connected_clients = set() + + +# Custom logging handler to forward logs to Electron +class ElectronLogHandler(logging.Handler): + """Custom logging handler that forwards logs to Electron via WebSocket""" + + def emit(self, record): + """Send log record to Electron frontend""" + try: + # Skip WebSocket-related logs to prevent feedback loops + if record.name.startswith('websockets'): + return + + # Format the log message + message = self.format(record) + + # Determine log level + level_mapping = { + logging.DEBUG: "debug", + logging.INFO: "info", + logging.WARNING: "warning", + logging.ERROR: "error", + logging.CRITICAL: "critical" + } + level = level_mapping.get(record.levelno, "info") + + # Create enhanced log message + log_data = { + "type": "log", + "message": message, + "level": level, + "logger_name": record.name, + "timestamp": record.created, + "source": "python-logger", + "auto_scroll": True, + "raw_message": record.getMessage(), # Original message without formatting + "filename": getattr(record, 'filename', ''), + "line_number": getattr(record, 'lineno', 0) + } + + # Send to Electron via REST polling instead of WebSocket + try: + # Simply add all log messages to the queue for UI polling + log_message_queue.append(log_data) + # Keep queue size reasonable - remove old messages if it gets too large + if len(log_message_queue) > 1000: + log_message_queue.pop(0) + + except Exception as e: + # Don't let logging errors crash the app - just print to console + print(f"Error queuing log message: {e}") + except Exception as e: + # Don't let logging errors crash the app + print(f"Error in ElectronLogHandler: {e}") + + +# Simple message queue for logs to avoid asyncio issues +log_message_queue = [] + + +# Set up the custom handler for the root logger to catch all logs +electron_handler = ElectronLogHandler() +electron_handler.setLevel(logging.DEBUG) +formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') +electron_handler.setFormatter(formatter) + +# Add handler only to root logger to catch all log messages +root_logger = logging.getLogger() +root_logger.addHandler(electron_handler) +root_logger.setLevel(logging.INFO) + +# Explicitly set WebSocket logger to WARNING to prevent debug spam +websockets_logger = logging.getLogger('websockets') +websockets_logger.setLevel(logging.WARNING) + +# Pydantic models for API requests + + +class LoginRequest(BaseModel): + mode: str # 'manual' or 'config' + username: Optional[str] = None + token: Optional[str] = None + profile: Optional[str] = None + + +class DownloadRequest(BaseModel): + synapse_id: str + version: Optional[str] = None + download_path: str + + +class UploadRequest(BaseModel): + file_path: str + mode: str # 'new' or 'update' + parent_id: Optional[str] = None + entity_id: Optional[str] = None + name: Optional[str] = None + + +class EnumerateRequest(BaseModel): + container_id: str + recursive: bool = True + + +class BulkDownloadRequest(BaseModel): + items: List[Dict[str, Any]] + download_path: str + create_subfolders: bool = True + + +class BulkUploadRequest(BaseModel): + parent_id: str + files: List[Dict[str, Any]] # List of file objects with path, name, size etc + preserve_folder_structure: bool = True + + +class ScanDirectoryRequest(BaseModel): + directory_path: str + recursive: bool = True + + +# Global synapse client manager instance +synapse_client = None +config_manager = None + + +@asynccontextmanager +async def lifespan(app: FastAPI): + """Manage application lifespan events""" + # Startup + # Give a moment for WebSocket connections to establish + await asyncio.sleep(1) + await initialize_logging() + + yield + + # Shutdown - add any cleanup here if needed + pass + + +def create_app() -> FastAPI: + """Create and configure the FastAPI application""" + app = FastAPI( + title="Synapse Desktop Client API", + description="Backend API for Synapse Desktop Client", + version="0.1.0", + lifespan=lifespan + ) + + # Configure CORS for Electron app + app.add_middleware( + CORSMiddleware, + allow_origins=["http://localhost:*", "file://*"], + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], + ) + + return app + + +app = create_app() + +# WebSocket connection handler + + +async def handle_websocket_client(websocket, path=None): + """Handle WebSocket connections from Electron frontend""" + connected_clients.add(websocket) + logger.info(f"WebSocket client connected from path: {path}. Total clients: {len(connected_clients)}") + + # Send connection status + try: + await websocket.send(json.dumps({ + "type": "connection_status", + "connected": True + })) + + async for message in websocket: + # Handle incoming WebSocket messages if needed + logger.info(f"Received WebSocket message: {message}") + except websockets.exceptions.ConnectionClosed: + logger.info("WebSocket client disconnected") + except Exception as e: + logger.error(f"WebSocket error: {e}") + finally: + connected_clients.discard(websocket) + logger.info(f"WebSocket client removed. Total clients: {len(connected_clients)}") + + +async def broadcast_message(message: dict): + """Broadcast message to all connected WebSocket clients""" + if not connected_clients: + # Only log once per message type to avoid spam + message_type = message.get('type', 'unknown') + if message_type not in ['log', 'progress']: # Don't spam for frequent message types + logger.debug(f"No WebSocket clients connected to send message: {message_type}") + return + + # Add debug logging for completion messages + if message.get("type") == "complete": + logger.info(f"Broadcasting completion message: {message}") + + # Add auto-scroll flag for log messages + if message.get("type") == "log": + message["auto_scroll"] = True + + # Add timestamp if not present + if "timestamp" not in message: + import time + message["timestamp"] = time.time() + + # Create a copy of the set to avoid "set changed size during iteration" error + clients_copy = connected_clients.copy() + disconnected = set() + message_json = json.dumps(message) + for client in clients_copy: + try: + await client.send(message_json) + except websockets.exceptions.ConnectionClosed: + disconnected.add(client) + except Exception as e: + logger.warning(f"Failed to send message to client: {e}") + disconnected.add(client) + # Remove disconnected clients from the original set + for client in disconnected: + connected_clients.discard(client) + + +# API Routes + +async def initialize_logging(): + """Initialize logging and send startup message""" + try: + logger.info("Synapse Backend Server started successfully") + logger.info("Logging system initialized - all log messages will appear here") + logger.info("Backend server logging initialized") + except Exception as e: + print(f"Failed to initialize logging: {e}") + + +@app.get("/logs/poll") +async def poll_log_messages(): + """Poll for new log messages from the queue""" + try: + # Get all messages and clear the queue atomically + messages = log_message_queue.copy() + log_message_queue.clear() + + return { + "success": True, + "messages": messages, + "count": len(messages) + } + except Exception as e: + logger.error(f"Error polling log messages: {e}") + return { + "success": False, + "messages": [], + "count": 0, + "error": str(e) + } + + +@app.get("/health") +async def health_check(): + """Health check endpoint""" + return {"status": "healthy", "service": "synapse-backend"} + + +@app.get("/test/logging") +async def test_logging(): + """Test endpoint to verify logging functionality""" + try: + logger.info("This is a test INFO message") + logger.error("This is a test ERROR message") + logger.warning("Test log via Python logger WARNING") + logger.debug("Test log via Python logger DEBUG") + return {"message": "Test logging messages sent"} + except Exception as e: + logger.error(f"Test logging failed: {e}") + return {"error": str(e)} + + +@app.get("/system/home-directory") +async def get_home_directory(): + """Get the user's home directory path""" + try: + home_dir = os.path.expanduser("~") + downloads_dir = os.path.join(home_dir, "Downloads") + + # Verify the Downloads directory exists, create if it doesn't + if not os.path.exists(downloads_dir): + try: + os.makedirs(downloads_dir, exist_ok=True) + logger.info(f"Created Downloads directory: {downloads_dir}") + except Exception as e: + logger.warning(f"Could not create Downloads directory: {e}") + # Fall back to home directory if Downloads can't be created + downloads_dir = home_dir + + return { + "home_directory": home_dir, + "downloads_directory": downloads_dir + } + except Exception as e: + logger.error(f"Error getting home directory: {e}") + raise HTTPException(status_code=500, detail=str(e)) + + +# Authentication endpoints + + +@app.get("/auth/profiles") +async def get_profiles(): + """Get available authentication profiles""" + try: + global config_manager + if not config_manager: + config_manager = ConfigManager() + + profiles = config_manager.get_available_profiles() + logger.info(f"Available profiles: {profiles}") + profile_data = [] + + for profile in profiles: + profile_data.append({ + "name": profile, + "display_name": profile.replace("_", " ").title() + }) + + return {"profiles": profile_data} + except Exception as e: + logger.error(f"Error getting profiles: {e}") + raise HTTPException(status_code=500, detail=str(e)) + + +@app.post("/auth/login") +async def login(request: LoginRequest): + """Authenticate user with Synapse""" + try: + global synapse_client, config_manager + if not synapse_client: + synapse_client = SynapseClientManager() + if not config_manager: + config_manager = ConfigManager() + + if request.mode == "manual": + if not request.username or not request.token: + raise HTTPException(status_code=400, detail="Username and token are required") + + # Handle manual login + result = await synapse_client.login_manual(request.username, request.token) + else: + if not request.profile: + raise HTTPException(status_code=400, detail="Profile is required") + + # Handle config-based login + result = await synapse_client.login_with_profile(request.profile) + + if result["success"]: + return { + "username": result.get("username", request.username), + "name": result.get("username", request.username), + "user_id": "", + "token": "authenticated" + } + else: + raise HTTPException(status_code=401, detail=result["error"]) + + except HTTPException: + raise + except Exception as e: + logger.error(f"Login error: {e}") + raise HTTPException(status_code=500, detail=str(e)) + + +@app.post("/auth/logout") +async def logout(): + """Logout current user""" + try: + global synapse_client + if synapse_client: + synapse_client.logout() + return {"message": "Logged out successfully"} + except Exception as e: + logger.error(f"Logout error: {e}") + raise HTTPException(status_code=500, detail=str(e)) + +# File operation endpoints + + +@app.post("/files/download") +async def download_file(request: DownloadRequest): + """Download a file from Synapse""" + try: + global synapse_client + if not synapse_client or not synapse_client.is_logged_in: + raise HTTPException(status_code=401, detail="Not authenticated") + + async def download_task(): + try: + logger.info(f"Starting download of {request.synapse_id}") + + # Eliminate callbacks entirely - just use direct async calls + # This prevents all the asyncio task issues + result = await synapse_client.download_file( + synapse_id=request.synapse_id, + version=int(request.version) if request.version else None, + download_path=request.download_path, + progress_callback=None, # Disable progress callbacks + detail_callback=None # Disable detail callbacks + ) + + # Manually log completion instead of broadcast_message (since we're in a thread) + if result["success"]: + logger.info(f"✅ Successfully downloaded {request.synapse_id}") + logger.info(f"Downloaded to {result.get('path', 'download location')}") + else: + logger.error(f"❌ Download failed: {result['error']}") + except Exception as e: + logger.exception(f"Download task error: {e}") + logger.error(f"❌ Download error: {str(e)}") + finally: + # Always ensure completion message is sent + logger.info(f"Download task completed for {request.synapse_id}") + + # Start the task in the background using a separate thread + import asyncio + + # Create a background task that will run the download + def run_download_in_background(): + try: + # Run the async download task in a new event loop + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + loop.run_until_complete(download_task()) + except Exception as e: + logger.error(f"Background download error: {e}") + finally: + loop.close() + + # Start in a thread to avoid blocking + import threading + thread = threading.Thread(target=run_download_in_background) + thread.daemon = True + thread.start() + + return {"message": "Download started", "synapse_id": request.synapse_id} + + except HTTPException: + raise + except Exception as e: + logger.error(f"Download endpoint error: {e}") + raise HTTPException(status_code=500, detail=str(e)) + + +@app.post("/files/upload") +async def upload_file(request: UploadRequest): + """Upload a file to Synapse""" + try: + global synapse_client + if not synapse_client or not synapse_client.is_logged_in: + raise HTTPException(status_code=401, detail="Not authenticated") + + async def upload_task(): + try: + logger.info(f"Starting upload of {request.file_path}") + # Eliminate callbacks entirely - just use direct async calls + # This prevents all the asyncio task issues + result = await synapse_client.upload_file( + file_path=request.file_path, + parent_id=request.parent_id if request.mode == "new" else None, + entity_id=request.entity_id if request.mode == "update" else None, + name=request.name, + progress_callback=None, # Disable progress callbacks + detail_callback=None # Disable detail callbacks + ) + + # Manually log completion instead of broadcast_message (since we're in a thread) + if result["success"]: + logger.info(f"✅ Successfully uploaded {request.file_path}") + logger.info(f"Uploaded as {result.get('entity_id', 'new entity')}") + else: + logger.error(f"❌ Upload failed: {result['error']}") + except Exception as e: + logger.exception(f"Upload task error: {e}") + logger.error(f"❌ Upload error: {str(e)}") + finally: + # Always ensure completion message is sent + logger.info(f"Upload task completed for {request.file_path}") + + # Start the task in the background using a separate thread + def run_upload_in_background(): + try: + # Run the async upload task in a new event loop + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + loop.run_until_complete(upload_task()) + except Exception as e: + logger.error(f"Background upload error: {e}") + finally: + loop.close() + + # Start in a thread to avoid blocking + import threading + thread = threading.Thread(target=run_upload_in_background) + thread.daemon = True + thread.start() + + return {"message": "Upload started", "file_path": request.file_path} + + except HTTPException: + raise + except Exception as e: + logger.error(f"Upload endpoint error: {e}") + raise HTTPException(status_code=500, detail=str(e)) + +# Bulk operation endpoints + + +@app.post("/files/scan-directory") +async def scan_directory(request: ScanDirectoryRequest): + """Scan a directory for files to upload""" + try: + import mimetypes + + directory_path = request.directory_path + if not os.path.exists(directory_path): + raise HTTPException(status_code=400, detail="Directory does not exist") + + if not os.path.isdir(directory_path): + raise HTTPException(status_code=400, detail="Path is not a directory") + + logger.info(f"Scanning directory: {directory_path}") + + files = [] + total_size = 0 + + def scan_directory_recursive(current_path: str, base_path: str): + nonlocal total_size + items = [] + + try: + for item in os.listdir(current_path): + item_path = os.path.join(current_path, item) + relative_path = os.path.relpath(item_path, base_path) + + if os.path.isfile(item_path): + try: + file_size = os.path.getsize(item_path) + mime_type, _ = mimetypes.guess_type(item_path) + + file_info = { + "id": item_path, # Use full path as ID + "name": item, + "type": "file", + "size": file_size, + "path": item_path, + "relative_path": relative_path, + "parent_path": current_path, + "mime_type": mime_type or "application/octet-stream" + } + items.append(file_info) + total_size += file_size + + except (OSError, IOError) as e: + logger.warning(f"Could not access file {item_path}: {e}") + continue + + elif os.path.isdir(item_path) and request.recursive: + # Add folder to list + folder_info = { + "id": item_path, + "name": item, + "type": "folder", + "size": 0, + "path": item_path, + "relative_path": relative_path, + "parent_path": current_path + } + items.append(folder_info) + + # Recursively scan subdirectories + sub_items = scan_directory_recursive(item_path, base_path) + items.extend(sub_items) + + except (PermissionError, OSError) as e: + logger.warning(f"Could not access directory {current_path}: {e}") + + return items + + files = scan_directory_recursive(directory_path, directory_path) + + # Count files vs folders + file_count = sum(1 for f in files if f["type"] == "file") + folder_count = sum(1 for f in files if f["type"] == "folder") + + logger.info(f"Found {file_count} files and {folder_count} folders") + + return { + "success": True, + "files": files, + "summary": { + "total_items": len(files), + "file_count": file_count, + "folder_count": folder_count, + "total_size": total_size + } + } + + except HTTPException: + raise + except Exception as e: + logger.error(f"Directory scan error: {e}") + raise HTTPException(status_code=500, detail=str(e)) + + +@app.post("/bulk/enumerate") +async def enumerate_container(request: EnumerateRequest): + """Enumerate contents of a Synapse container""" + try: + global synapse_client + if not synapse_client or not synapse_client.is_logged_in: + raise HTTPException(status_code=401, detail="Not authenticated") + + logger.info(f"Enumerating container {request.container_id}") + + result = await synapse_client.enumerate_container( + request.container_id, + request.recursive + ) + + if result["success"]: + # Convert items to JSON-serializable format + items = [] + for item in result["items"]: + if hasattr(item, 'synapse_id'): # BulkItem object + items.append({ + "id": item.synapse_id, + "name": item.name, + "type": item.item_type.lower(), # Use item_type and convert to lowercase + "size": item.size, + "parent_id": item.parent_id, + "path": item.path if item.path else "" + }) + else: # Already a dict + items.append(item) + + logger.info(f"Found {len(items)} items in container") + return {"items": items} + else: + raise HTTPException(status_code=500, detail=result["error"]) + + except HTTPException: + raise + except Exception as e: + logger.exception(f"Enumerate error: {e}") + raise HTTPException(status_code=500, detail=str(e)) + + +@app.post("/bulk/download") +async def bulk_download(request: BulkDownloadRequest): + """Bulk download files from Synapse""" + logger.info("Bulk download endpoint") + try: + global synapse_client + if not synapse_client or not synapse_client.is_logged_in: + raise HTTPException(status_code=401, detail="Not authenticated") + + # Execute the download task and wait for completion + try: + # Filter to only include files for bulk download + file_items_data = [item for item in request.items if item.get("type", "file").lower() == "file"] + + if not file_items_data: + raise HTTPException( + status_code=400, + detail="No files selected for download. Only files can be bulk downloaded." + ) + + logger.info( + f"Starting bulk download of {len(file_items_data)} files " + f"(filtered from {len(request.items)} selected items)" + ) + # Convert items back to BulkItem objects with path information + bulk_items = [] + for item_data in file_items_data: + bulk_item = BulkItem( + synapse_id=item_data["id"], + name=item_data["name"], + item_type=item_data.get("type", "file"), + size=item_data.get("size"), + parent_id=item_data.get("parent_id"), + path=item_data.get("path", "") + ) + bulk_items.append(bulk_item) + + # Create async wrapper functions for the callbacks + async def async_progress_callback(p, m): + pass # Remove progress callback functionality + + async def async_detail_callback(m): + logger.info(m) + + result = await synapse_client.bulk_download( + items=bulk_items, + download_path=request.download_path, + recursive=request.create_subfolders, + progress_callback=async_progress_callback, + detail_callback=async_detail_callback + ) + + if result["success"]: + logger.info(f"Successfully downloaded {len(file_items_data)} files") + await broadcast_message({ + "type": "complete", + "operation": "bulk-download", + "success": True, + "data": {"message": f"Downloaded {len(file_items_data)} files"} + }) + return { + "success": True, + "message": "Bulk download completed successfully", + "item_count": len(file_items_data), + "summary": result.get("summary", f"Downloaded {len(file_items_data)} files") + } + else: + logger.error(f"Bulk download failed: {result['error']}") + await broadcast_message({ + "type": "complete", + "operation": "bulk-download", + "success": False, + "data": {"error": result['error']} + }) + raise HTTPException(status_code=500, detail=result['error']) + + except Exception as e: + logger.error(f"Bulk download task error: {e}") + logger.info(f"Bulk download error: {str(e)}", True) + await broadcast_message({ + "type": "complete", + "operation": "bulk-download", + "success": False, + "data": {"error": str(e)} + }) + raise HTTPException(status_code=500, detail=str(e)) + + except HTTPException: + raise + except Exception as e: + logger.exception("Bulk download endpoint error") + raise HTTPException(status_code=500, detail=str(e)) + + +@app.post("/bulk/upload") +async def bulk_upload(request: BulkUploadRequest): + """Bulk upload files to Synapse with proper folder hierarchy""" + try: + global synapse_client + if not synapse_client or not synapse_client.is_logged_in: + raise HTTPException(status_code=401, detail="Not authenticated") + + # Filter to only include files for bulk upload + file_items_data = [file for file in request.files if file.get("type", "file").lower() == "file"] + + if not file_items_data: + raise HTTPException( + status_code=400, + detail="No files selected for upload. Only files can be bulk uploaded." + ) + + logger.info( + f"Starting bulk upload of {len(file_items_data)} files " + f"(filtered from {len(request.files)} selected items)" + ) + # Import required models + from synapseclient.models.file import File + from synapseclient.models.folder import Folder + + # Build folder hierarchy and organize files + folder_map = {} # path -> Folder object + root_files = [] # Files that go directly in the parent folder + + for file_data in file_items_data: + file_path = file_data.get("path") + relative_path = file_data.get("relative_path", "") + + if not file_path or not os.path.exists(file_path): + logger.info(f"Skipping file with invalid path: {file_data.get('name', 'Unknown')}", True) + continue + + # Create File object + file_obj = File( + path=file_path, + name=file_data.get("name"), + description=file_data.get("description", None) + ) + + if request.preserve_folder_structure and relative_path: + # Normalize path separators and split into folder parts + relative_path = relative_path.replace('\\', '/').strip('/') + path_parts = relative_path.split('/') + + if len(path_parts) > 1: + # File is in a subfolder - build folder hierarchy + folder_parts = path_parts[:-1] # All parts except filename + current_path = "" + current_parent_id = request.parent_id + + # Create folder hierarchy + for i, folder_name in enumerate(folder_parts): + if current_path: + current_path += "/" + current_path += folder_name + + if current_path not in folder_map: + # Create new folder + folder_obj = Folder( + name=folder_name, + parent_id=current_parent_id, + files=[], + folders=[] + ) + folder_map[current_path] = folder_obj + + # Add to parent folder's folders list + if i > 0: + parent_path = "/".join(folder_parts[:i]) + if parent_path in folder_map: + folder_map[parent_path].folders.append(folder_obj) + + # Update parent_id for next level + current_parent_id = None # Will be set when folder is stored + + # Add file to its containing folder + folder_path = "/".join(folder_parts) + if folder_path in folder_map: + folder_map[folder_path].files.append(file_obj) + else: + # File is in root directory + file_obj.parent_id = request.parent_id + root_files.append(file_obj) + else: + # No folder structure preservation - all files go to parent + file_obj.parent_id = request.parent_id + root_files.append(file_obj) + + # Get all unique folders (top-level folders only for initial upload) + top_level_folders = [] + for path, folder_obj in folder_map.items(): + if '/' not in path: # Top-level folder + top_level_folders.append(folder_obj) + + total_items = len(root_files) + len(top_level_folders) + if total_items == 0: + logger.error("No valid files found to upload") + await broadcast_message({ + "type": "complete", + "operation": "bulk-upload", + "success": False, + "data": {"error": "No valid files found to upload"} + }) + raise HTTPException(status_code=400, detail="No valid files found to upload") + + logger.info(f"Created folder hierarchy: {len(top_level_folders)} folders, {len(root_files)} root files") + + # Track progress + completed_items = 0 + upload_results = [] + + async def upload_item(item, item_type: str, item_name: str) -> dict: + """Upload a file or folder and return result""" + nonlocal completed_items + try: + logger.info(f"Uploading {item_type}: {item_name}") + + # Store the item (folder or file) + stored_item = await item.store_async() + + completed_items += 1 + return { + "success": True, + "item_name": item_name, + "item_type": item_type, + "entity_id": stored_item.id, + "path": getattr(item, 'path', None) + } + except Exception as e: + completed_items += 1 + logger.error(f"Failed to upload {item_name}: {str(e)}") + + return { + "success": False, + "item_name": item_name, + "item_type": item_type, + "error": str(e), + "path": getattr(item, 'path', None) + } + + # Create upload tasks for all items + upload_tasks = [] + + # Add root files + for file_obj in root_files: + upload_tasks.append(upload_item(file_obj, "file", file_obj.name)) + + # Add top-level folders (which will handle their subfolders/files automatically) + for folder_obj in top_level_folders: + upload_tasks.append(upload_item(folder_obj, "folder", folder_obj.name)) + + # Wait for all uploads to complete + upload_results = await asyncio.gather(*upload_tasks, return_exceptions=True) + + # Process results and handle any exceptions + processed_results = [] + for i, result in enumerate(upload_results): + if isinstance(result, Exception): + item_name = "Unknown" + if i < len(root_files): + item_name = root_files[i].name + elif i - len(root_files) < len(top_level_folders): + item_name = top_level_folders[i - len(root_files)].name + + processed_results.append({ + "success": False, + "item_name": item_name, + "error": str(result) + }) + else: + processed_results.append(result) + + # Calculate final statistics + successful_uploads = sum(1 for r in processed_results if r.get("success", False)) + failed_uploads = total_items - successful_uploads + + logger.info(f"Bulk upload completed: {successful_uploads} successful, {failed_uploads} failed") + + await broadcast_message({ + "type": "complete", + "operation": "bulk-upload", + "success": True, + "data": { + "message": f"Uploaded {successful_uploads} items, {failed_uploads} failed", + "successful_uploads": successful_uploads, + "failed_uploads": failed_uploads, + "results": processed_results + } + }) + + return { + "success": True, + "message": "Bulk upload completed successfully", + "successful_uploads": successful_uploads, + "failed_uploads": failed_uploads, + "total_items": total_items, + "summary": f"Uploaded {successful_uploads} items, {failed_uploads} failed" + } + + except HTTPException: + raise + except Exception as e: + logger.exception("Bulk upload endpoint error") + logger.info(f"Bulk upload error: {str(e)}", True) + await broadcast_message({ + "type": "complete", + "operation": "bulk-upload", + "success": False, + "data": {"error": str(e)} + }) + raise HTTPException(status_code=500, detail=str(e)) + + +def start_websocket_server(port: int): + """Start the WebSocket server in a separate thread""" + def run_websocket_server(): + async def websocket_server(): + # Create a wrapper that handles both old and new websockets library signatures + async def websocket_handler(websocket, path=None): + await handle_websocket_client(websocket, path) + + try: + async with websockets.serve(websocket_handler, "localhost", port): + logger.info("WebSocket server started on ws://localhost:%s", port) + await asyncio.Future() # Run forever + except Exception as e: + logger.error(f"WebSocket server error: {e}") + + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + loop.run_until_complete(websocket_server()) + + ws_thread = threading.Thread(target=run_websocket_server) + ws_thread.daemon = True + ws_thread.start() + + +def main(): + """Main entry point for the backend server""" + parser = argparse.ArgumentParser(description="Synapse Desktop Client Backend") + parser.add_argument("--host", default="127.0.0.1", help="Host to bind to") + parser.add_argument("--port", type=int, default=8000, help="Port to bind to") + parser.add_argument("--ws-port", type=int, default=8001, help="WebSocket port") + parser.add_argument("--reload", action="store_true", help="Enable auto-reload") + + args = parser.parse_args() + + # Start WebSocket server + start_websocket_server(args.ws_port) + + # Start FastAPI server + logger.info("Starting Synapse Backend Server on %s:%s", args.host, args.port) + logger.info("WebSocket server on ws://%s:%s", args.host, args.ws_port) + + uvicorn.run( + app, + host=args.host, + port=args.port, + reload=args.reload, + log_level="info" + ) + + +if __name__ == "__main__": + main() diff --git a/synapse-electron/main.js b/synapse-electron/main.js new file mode 100644 index 000000000..d63dcac77 --- /dev/null +++ b/synapse-electron/main.js @@ -0,0 +1,483 @@ +const { app, BrowserWindow, ipcMain, dialog, shell } = require('electron'); +const path = require('path'); +const { spawn } = require('child_process'); +const axios = require('axios'); +const WebSocket = require('ws'); +const log = require('electron-log'); + +class SynapseElectronApp { + constructor() { + this.pythonProcess = null; + this.mainWindow = null; + this.backendPort = 8000; + this.wsPort = 8001; + this.websocketServer = null; + this.connectedClients = new Set(); + } + + async startPythonBackend() { + log.info('Starting Python backend...'); + + // Determine Python executable path + let pythonExe; + let backendPath; + + if (app.isPackaged) { + // In packaged app, use the compiled backend + backendPath = path.join(process.resourcesPath, 'backend'); + + if (process.platform === 'win32') { + pythonExe = path.join(backendPath, 'synapse-backend.exe'); + } else { + pythonExe = path.join(backendPath, 'synapse-backend'); + } + + log.info(`Using packaged backend: ${pythonExe}`); + + this.pythonProcess = spawn(pythonExe, [ + '--port', this.backendPort.toString(), + '--ws-port', this.wsPort.toString() + ], { + stdio: ['pipe', 'pipe', 'pipe'], + cwd: backendPath + }); + } else { + // In development, use the Python script + backendPath = path.join(__dirname, 'backend'); + + if (process.platform === 'win32') { + // On Windows, try to use the venv first, fallback to system python + const venvPython = path.join(backendPath, 'venv', 'Scripts', 'python.exe'); + if (require('fs').existsSync(venvPython)) { + pythonExe = venvPython; + log.info(`Using virtual environment Python: ${pythonExe}`); + } else { + pythonExe = 'python.exe'; + log.info('Virtual environment not found, using system Python'); + } + } else { + pythonExe = 'python3'; + } + + this.pythonProcess = spawn(pythonExe, [ + path.join(backendPath, 'server.py'), + '--port', this.backendPort.toString(), + '--ws-port', this.wsPort.toString() + ], { + stdio: ['pipe', 'pipe', 'pipe'], + cwd: backendPath + }); + } + + this.pythonProcess.stdout.on('data', (data) => { + log.info(`Python Backend: ${data.toString()}`); + }); + + this.pythonProcess.stderr.on('data', (data) => { + log.error(`Python Backend Error: ${data.toString()}`); + }); + + this.pythonProcess.on('close', (code) => { + log.info(`Python backend exited with code ${code}`); + }); + + this.pythonProcess.on('error', (error) => { + log.error(`Failed to start Python backend: ${error.message}`); + }); + + // Wait for backend to be ready + await this.waitForBackend(); + + // Start WebSocket server connection + this.setupWebSocketConnection(); + } + + setupWebSocketConnection() { + const wsUrl = `ws://127.0.0.1:${this.wsPort}`; + + const connectWebSocket = () => { + try { + this.ws = new WebSocket(wsUrl); + + this.ws.on('open', () => { + log.info('WebSocket connected to Python backend'); + }); + + this.ws.on('message', (data) => { + try { + const message = JSON.parse(data.toString()); + this.handleWebSocketMessage(message); + } catch (error) { + log.error('Error parsing WebSocket message:', error); + } + }); + + this.ws.on('close', () => { + log.warn('WebSocket connection closed, attempting to reconnect...'); + setTimeout(connectWebSocket, 2000); + }); + + this.ws.on('error', (error) => { + log.error('WebSocket error:', error); + }); + } catch (error) { + log.error('Failed to connect WebSocket:', error); + setTimeout(connectWebSocket, 2000); + } + }; + + connectWebSocket(); + } + + handleWebSocketMessage(message) { + // Forward WebSocket messages to renderer process + if (this.mainWindow && !this.mainWindow.isDestroyed()) { + this.mainWindow.webContents.send('websocket-message', message); + } + } + + async waitForBackend(maxRetries = 30) { + for (let i = 0; i < maxRetries; i++) { + try { + log.info(`Attempt ${i + 1}/${maxRetries}: Checking backend health at http://127.0.0.1:${this.backendPort}/health`); + await axios.get(`http://127.0.0.1:${this.backendPort}/health`); + log.info('Python backend is ready'); + return; + } catch (error) { + log.info(`Backend not ready yet (attempt ${i + 1}): ${error.message}`); + if (i === maxRetries - 1) { + throw new Error('Python backend failed to start within timeout'); + } + await new Promise(resolve => setTimeout(resolve, 1000)); + } + } + } + + createWindow() { + // Check if we're running in a headless environment + const isHeadless = process.env.DISPLAY === ':99' || process.env.CI || process.env.HEADLESS; + + const webPrefs = { + nodeIntegration: false, + contextIsolation: true, + preload: path.join(__dirname, 'preload.js'), + webSecurity: true, + // Force software rendering to avoid GPU issues + hardwareAcceleration: false + }; + + // Add offscreen rendering for headless mode + if (isHeadless) { + webPrefs.offscreen = true; + } + + this.mainWindow = new BrowserWindow({ + width: 1200, + height: 800, + minWidth: 800, + minHeight: 600, + webPreferences: webPrefs, + icon: path.join(__dirname, 'assets', 'icon.png'), + show: !isHeadless // Don't show in headless mode + }); + + this.mainWindow.loadFile(path.join(__dirname, 'src', 'index.html')) + .then(() => { + log.info('HTML file loaded successfully'); + }) + .catch((error) => { + log.error('Failed to load HTML file:', error); + }); + + // Show window when ready (only if not headless) + if (!isHeadless) { + this.mainWindow.once('ready-to-show', () => { + this.mainWindow.show(); + + // Center window on screen + this.mainWindow.center(); + }); + } else { + console.log('Running in headless mode - window will not be displayed'); + } + + // Handle window closed + this.mainWindow.on('closed', () => { + this.mainWindow = null; + }); + + // Add debugging for web contents + this.mainWindow.webContents.on('did-finish-load', () => { + log.info('WebContents finished loading'); + }); + + this.mainWindow.webContents.on('did-fail-load', (event, errorCode, errorDescription) => { + log.error('WebContents failed to load:', errorCode, errorDescription); + }); + + // Development: Open DevTools + if (!app.isPackaged) { + this.mainWindow.webContents.openDevTools(); + } + } + + setupIPC() { + // Authentication endpoints + ipcMain.handle('synapse-login', async (event, credentials) => { + try { + const response = await axios.post(`http://127.0.0.1:${this.backendPort}/auth/login`, credentials); + return { success: true, data: response.data }; + } catch (error) { + return { + success: false, + error: error.response?.data?.detail || error.message + }; + } + }); + + ipcMain.handle('synapse-logout', async (event) => { + try { + const response = await axios.post(`http://127.0.0.1:${this.backendPort}/auth/logout`); + return { success: true, data: response.data }; + } catch (error) { + return { + success: false, + error: error.response?.data?.detail || error.message + }; + } + }); + + ipcMain.handle('synapse-get-profiles', async (event) => { + try { + const response = await axios.get(`http://127.0.0.1:${this.backendPort}/auth/profiles`); + return { success: true, data: response.data }; + } catch (error) { + return { + success: false, + error: error.response?.data?.detail || error.message + }; + } + }); + + // File operations + ipcMain.handle('synapse-upload', async (event, uploadData) => { + try { + const response = await axios.post(`http://127.0.0.1:${this.backendPort}/files/upload`, uploadData); + return { success: true, data: response.data }; + } catch (error) { + return { + success: false, + error: error.response?.data?.detail || error.message + }; + } + }); + + ipcMain.handle('synapse-download', async (event, downloadData) => { + try { + const response = await axios.post(`http://127.0.0.1:${this.backendPort}/files/download`, downloadData); + return { success: true, data: response.data }; + } catch (error) { + return { + success: false, + error: error.response?.data?.detail || error.message + }; + } + }); + + // Bulk operations + ipcMain.handle('synapse-scan-directory', async (event, scanData) => { + try { + const response = await axios.post(`http://127.0.0.1:${this.backendPort}/files/scan-directory`, scanData); + return { success: true, data: response.data }; + } catch (error) { + return { + success: false, + error: error.response?.data?.detail || error.message + }; + } + }); + + ipcMain.handle('synapse-enumerate', async (event, containerData) => { + try { + const response = await axios.post(`http://127.0.0.1:${this.backendPort}/bulk/enumerate`, containerData); + return { success: true, data: response.data }; + } catch (error) { + return { + success: false, + error: error.response?.data?.detail || error.message + }; + } + }); + + ipcMain.handle('synapse-bulk-download', async (event, bulkData) => { + try { + const response = await axios.post(`http://127.0.0.1:${this.backendPort}/bulk/download`, bulkData); + return { success: true, data: response.data }; + } catch (error) { + return { + success: false, + error: error.response?.data?.detail || error.message + }; + } + }); + + ipcMain.handle('synapse-bulk-upload', async (event, bulkData) => { + try { + const response = await axios.post(`http://127.0.0.1:${this.backendPort}/bulk/upload`, bulkData); + return { success: true, data: response.data }; + } catch (error) { + return { + success: false, + error: error.response?.data?.detail || error.message + }; + } + }); + + // File dialogs + ipcMain.handle('show-open-dialog', async (event, options) => { + const result = await dialog.showOpenDialog(this.mainWindow, options); + return result; + }); + + ipcMain.handle('show-save-dialog', async (event, options) => { + const result = await dialog.showSaveDialog(this.mainWindow, options); + return result; + }); + + // External links + ipcMain.handle('open-external', async (event, url) => { + await shell.openExternal(url); + }); + + // Application info + ipcMain.handle('get-app-version', () => { + return app.getVersion(); + }); + + // System utilities + ipcMain.handle('get-home-directory', async (event) => { + try { + const response = await axios.get(`http://127.0.0.1:${this.backendPort}/system/home-directory`); + return { success: true, data: response.data }; + } catch (error) { + return { + success: false, + error: error.response?.data?.detail || error.message + }; + } + }); + } + + async initialize() { + await app.whenReady(); + + try { + await this.startPythonBackend(); + this.createWindow(); + this.setupIPC(); + + log.info('Synapse Electron app initialized successfully'); + } catch (error) { + log.error('Failed to initialize app:', error); + + // Show error dialog and exit + dialog.showErrorBox( + 'Startup Error', + `Failed to start the application: ${error.message}` + ); + app.quit(); + } + } + + cleanup() { + log.info('Cleaning up application...'); + + if (this.ws) { + this.ws.close(); + } + + if (this.pythonProcess) { + this.pythonProcess.kill('SIGTERM'); + + // Force kill after 5 seconds if still running + setTimeout(() => { + if (this.pythonProcess && !this.pythonProcess.killed) { + this.pythonProcess.kill('SIGKILL'); + } + }, 5000); + } + } +} + +// Initialize the application +const synapseApp = new SynapseElectronApp(); + +// Add command line arguments for better headless support on Linux +if (process.platform === 'linux') { + app.commandLine.appendSwitch('disable-dev-shm-usage'); + app.commandLine.appendSwitch('disable-gpu'); + app.commandLine.appendSwitch('disable-software-rasterizer'); + app.commandLine.appendSwitch('disable-background-timer-throttling'); + app.commandLine.appendSwitch('disable-renderer-backgrounding'); + app.commandLine.appendSwitch('disable-features', 'VizDisplayCompositor'); + + // Check if we're in a headless environment + if (process.env.DISPLAY === ':99' || process.env.CI || process.env.HEADLESS) { + app.commandLine.appendSwitch('headless'); + app.commandLine.appendSwitch('disable-gpu-sandbox'); + app.commandLine.appendSwitch('no-sandbox'); + } +} + +// Add Windows-specific GPU debugging flags +if (process.platform === 'win32') { + // Fix GPU issues on Windows by disabling GPU acceleration + app.commandLine.appendSwitch('disable-gpu'); + app.commandLine.appendSwitch('disable-gpu-sandbox'); + app.commandLine.appendSwitch('disable-software-rasterizer'); + app.commandLine.appendSwitch('disable-gpu-compositing'); + app.commandLine.appendSwitch('disable-gpu-rasterization'); + app.commandLine.appendSwitch('disable-gpu-memory-buffer-compositor-resources'); + app.commandLine.appendSwitch('disable-gpu-memory-buffer-video-frames'); + app.commandLine.appendSwitch('enable-logging'); + app.commandLine.appendSwitch('log-level', '0'); + + // Use software rendering + app.commandLine.appendSwitch('disable-features', 'VizDisplayCompositor'); + + log.info('Applied Windows GPU compatibility flags'); +} + +// Disable hardware acceleration completely +app.disableHardwareAcceleration(); + +// App event handlers +app.on('ready', () => { + synapseApp.initialize(); +}); + +app.on('window-all-closed', () => { + synapseApp.cleanup(); + if (process.platform !== 'darwin') { + app.quit(); + } +}); + +app.on('activate', () => { + if (BrowserWindow.getAllWindows().length === 0) { + synapseApp.createWindow(); + } +}); + +app.on('before-quit', () => { + synapseApp.cleanup(); +}); + +// Handle uncaught exceptions +process.on('uncaughtException', (error) => { + log.error('Uncaught Exception:', error); +}); + +process.on('unhandledRejection', (reason, promise) => { + log.error('Unhandled Rejection at:', promise, 'reason:', reason); +}); diff --git a/synapse-electron/package-lock.json b/synapse-electron/package-lock.json new file mode 100644 index 000000000..d200f3bfa --- /dev/null +++ b/synapse-electron/package-lock.json @@ -0,0 +1,5175 @@ +{ + "name": "synapse-desktop-client", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "synapse-desktop-client", + "version": "1.0.0", + "license": "Apache-2.0", + "dependencies": { + "axios": "^1.5.0", + "cors": "^2.8.5", + "electron-log": "^4.4.8", + "electron-updater": "^6.1.4", + "express": "^4.18.2", + "multer": "^1.4.5-lts.1", + "ws": "^8.14.2" + }, + "devDependencies": { + "concurrently": "^8.2.2", + "cross-env": "^10.0.0", + "electron": "^27.0.0", + "electron-builder": "^24.6.4" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.3.tgz", + "integrity": "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@develar/schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@electron/asar": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.4.1.tgz", + "integrity": "sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/@electron/asar/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@electron/asar/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@electron/get": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", + "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^11.8.5", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "global-agent": "^3.0.0" + } + }, + "node_modules/@electron/notarize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.2.1.tgz", + "integrity": "sha512-aL+bFMIkpR0cmmj5Zgy0LMKEpgy43/hw5zadEArgmAMWWlKc5buwFvFT9G/o/YJkvXAJm5q3iuTuLaiaXW39sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/notarize/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/notarize/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/notarize/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/osx-sign": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.5.tgz", + "integrity": "sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "compare-version": "^0.1.2", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "isbinaryfile": "^4.0.8", + "minimist": "^1.2.6", + "plist": "^3.0.5" + }, + "bin": { + "electron-osx-flat": "bin/electron-osx-flat.js", + "electron-osx-sign": "bin/electron-osx-sign.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@electron/osx-sign/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron/osx-sign/node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/@electron/osx-sign/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/osx-sign/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/universal": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.5.1.tgz", + "integrity": "sha512-kbgXxyEauPJiQQUNG2VgUeyfQNFk6hBF11ISN2PNI6agUgPl55pv4eQmaqHzTAzchBvqZ2tQuRVaPStGf0mxGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron/asar": "^3.2.1", + "@malept/cross-spawn-promise": "^1.1.0", + "debug": "^4.3.1", + "dir-compare": "^3.0.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@electron/universal/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@electron/universal/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/universal/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/universal/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@electron/universal/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@epic-web/invariant": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz", + "integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz", + "integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "Apache-2.0", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@malept/flatpak-bundler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "tmp-promise": "^3.0.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "18.19.123", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.123.tgz", + "integrity": "sha512-K7DIaHnh0mzVxreCR9qwgNxp3MH9dltPNIEddW9MYUlcKAzm+3grKNSTe2vCJHI1FaLpvpL5JGJrz1UZDKYvDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/plist": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.5.tgz", + "integrity": "sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*", + "xmlbuilder": ">=11.0.1" + } + }, + "node_modules/@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/verror": { + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.11.tgz", + "integrity": "sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", + "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/7zip-bin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz", + "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/app-builder-bin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", + "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", + "dev": true, + "license": "MIT" + }, + "node_modules/app-builder-lib": { + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.13.3.tgz", + "integrity": "sha512-FAzX6IBit2POXYGnTCT8YHFO/lr5AapAII6zzhQO3Rw4cEDOgK+t1xhLc5tNcKlicTHlo9zxIwnYCX9X2DLkig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@develar/schema-utils": "~2.6.5", + "@electron/notarize": "2.2.1", + "@electron/osx-sign": "1.0.5", + "@electron/universal": "1.5.1", + "@malept/flatpak-bundler": "^0.4.0", + "@types/fs-extra": "9.0.13", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.4", + "ejs": "^3.1.8", + "electron-publish": "24.13.1", + "form-data": "^4.0.0", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", + "is-ci": "^3.0.0", + "isbinaryfile": "^5.0.0", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^5.1.1", + "read-config-file": "6.3.2", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.8", + "tar": "^6.1.12", + "temp-file": "^3.4.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "dmg-builder": "24.13.3", + "electron-builder-squirrel-windows": "24.13.3" + } + }, + "node_modules/app-builder-lib/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/app-builder-lib/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/app-builder-lib/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/app-builder-lib/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "license": "MIT" + }, + "node_modules/archiver": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/archiver-utils/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/archiver-utils/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/axios": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", + "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/bluebird-lst": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bluebird": "^3.5.5" + } + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/builder-util": { + "version": "24.13.1", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.13.1.tgz", + "integrity": "sha512-NhbCSIntruNDTOVI9fdXz0dihaqX2YuE1D6zZMrwiErzH4ELZHE6mdiB40wEgZNprDia+FghRFgKoAqMZRRjSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/debug": "^4.1.6", + "7zip-bin": "~5.2.0", + "app-builder-bin": "4.0.0", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "9.2.4", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "fs-extra": "^10.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0" + } + }, + "node_modules/builder-util-runtime": { + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.4.tgz", + "integrity": "sha512-upp+biKpN/XZMLim7aguUyW8s0FUpDvOtK6sbanMFDAMBzpHDqdhgVYm6zc9HJ6nWo7u2Lxk60i2M6Jd3aiNrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/builder-util/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/builder-util/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/builder-util/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/compress-commons": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", + "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/concurrently": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", + "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "date-fns": "^2.30.0", + "lodash": "^4.17.21", + "rxjs": "^7.8.1", + "shell-quote": "^1.8.1", + "spawn-command": "0.0.2", + "supports-color": "^8.1.1", + "tree-kill": "^1.2.2", + "yargs": "^17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": "^14.13.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/config-file-ts": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.6.tgz", + "integrity": "sha512-6boGVaglwblBgJqGyxm4+xCmEGcWgnWHSWHY5jad58awQhB6gftq0G8HbzU39YqCIYHMLAiL1yjwiZ36m/CL8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "^10.3.10", + "typescript": "^5.3.3" + } + }, + "node_modules/config-file-ts/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/config-file-ts/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/config-file-ts/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "buffer": "^5.1.0" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", + "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cross-env": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.0.0.tgz", + "integrity": "sha512-aU8qlEK/nHYtVuN4p7UQgAwVljzMg8hB4YK5ThRqD2l/ziSnryncPNn7bMLt5cFYsKVKBh8HqLqyCoTupEUu7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@epic-web/invariant": "^1.0.0", + "cross-spawn": "^7.0.6" + }, + "bin": { + "cross-env": "dist/bin/cross-env.js", + "cross-env-shell": "dist/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/dir-compare": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", + "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal": "^1.0.0", + "minimatch": "^3.0.4" + } + }, + "node_modules/dir-compare/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/dir-compare/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/dmg-builder": { + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.13.3.tgz", + "integrity": "sha512-rcJUkMfnJpfCboZoOOPf4L29TRtEieHNOeAbYPWPxlaBw/Z1RKrRA86dOI9rwaI4tQSc/RD82zTNHprfUHXsoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "app-builder-lib": "24.13.3", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", + "fs-extra": "^10.1.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + }, + "optionalDependencies": { + "dmg-license": "^1.0.11" + } + }, + "node_modules/dmg-builder/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dmg-builder/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/dmg-builder/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/dmg-license": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "@types/plist": "^3.0.1", + "@types/verror": "^1.10.3", + "ajv": "^6.10.0", + "crc": "^3.8.0", + "iconv-corefoundation": "^1.1.7", + "plist": "^3.0.4", + "smart-buffer": "^4.0.2", + "verror": "^1.10.0" + }, + "bin": { + "dmg-license": "bin/dmg-license.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", + "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron": { + "version": "27.3.11", + "resolved": "https://registry.npmjs.org/electron/-/electron-27.3.11.tgz", + "integrity": "sha512-E1SiyEoI8iW5LW/MigCr7tJuQe7+0105UjqY7FkmCD12e2O6vtUbQ0j05HaBh2YgvkcEVgvQ2A8suIq5b5m6Gw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@electron/get": "^2.0.0", + "@types/node": "^18.11.18", + "extract-zip": "^2.0.1" + }, + "bin": { + "electron": "cli.js" + }, + "engines": { + "node": ">= 12.20.55" + } + }, + "node_modules/electron-builder": { + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.13.3.tgz", + "integrity": "sha512-yZSgVHft5dNVlo31qmJAe4BVKQfFdwpRw7sFp1iQglDRCDD6r22zfRJuZlhtB5gp9FHUxCMEoWGq10SkCnMAIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "app-builder-lib": "24.13.3", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", + "chalk": "^4.1.2", + "dmg-builder": "24.13.3", + "fs-extra": "^10.1.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "read-config-file": "6.3.2", + "simple-update-notifier": "2.0.0", + "yargs": "^17.6.2" + }, + "bin": { + "electron-builder": "cli.js", + "install-app-deps": "install-app-deps.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/electron-builder-squirrel-windows": { + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-24.13.3.tgz", + "integrity": "sha512-oHkV0iogWfyK+ah9ZIvMDpei1m9ZRpdXcvde1wTpra2U8AFDNNpqJdnin5z+PM1GbQ5BoaKCWas2HSjtR0HwMg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "app-builder-lib": "24.13.3", + "archiver": "^5.3.1", + "builder-util": "24.13.1", + "fs-extra": "^10.1.0" + } + }, + "node_modules/electron-builder-squirrel-windows/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-builder-squirrel-windows/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-builder-squirrel-windows/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-builder/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-builder/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-builder/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-log": { + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-4.4.8.tgz", + "integrity": "sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA==", + "license": "MIT" + }, + "node_modules/electron-publish": { + "version": "24.13.1", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.13.1.tgz", + "integrity": "sha512-2ZgdEqJ8e9D17Hwp5LEq5mLQPjqU3lv/IALvgp+4W8VeNhryfGhYEQC/PgDPMrnWUp+l60Ou5SJLsu+k4mhQ8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/fs-extra": "^9.0.11", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", + "chalk": "^4.1.2", + "fs-extra": "^10.1.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + } + }, + "node_modules/electron-publish/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-publish/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-publish/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-updater": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.6.2.tgz", + "integrity": "sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==", + "license": "MIT", + "dependencies": { + "builder-util-runtime": "9.3.1", + "fs-extra": "^10.1.0", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "lodash.escaperegexp": "^4.1.2", + "lodash.isequal": "^4.5.0", + "semver": "^7.6.3", + "tiny-typed-emitter": "^2.1.0" + } + }, + "node_modules/electron-updater/node_modules/builder-util-runtime": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.3.1.tgz", + "integrity": "sha512-2/egrNDDnRaxVwK3A+cJq6UOlqOdedGA7JPqCeJjN2Zjk1/QB/6QUi3b714ScIGS7HafFXTyzJEOr5b44I3kvQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/electron-updater/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-updater/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-updater/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-updater/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "optional": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/global-agent/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-corefoundation": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", + "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "cli-truncate": "^2.1.0", + "node-addon-api": "^1.6.3" + }, + "engines": { + "node": "^8.11.2 || >=10" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/isbinaryfile": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.4.tgz", + "integrity": "sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.6", + "filelist": "^1.0.4", + "picocolors": "^1.1.1" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/lazy-val": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==", + "license": "MIT" + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "license": "MIT" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multer": { + "version": "1.4.5-lts.2", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.2.tgz", + "integrity": "sha512-VzGiVigcG9zUAoCNU+xShztrlr1auZOlurXynNvO9GiWD1/mTBbUljOKY+qMeazBqXgRnjzeEgJI/wyjJUHg9A==", + "deprecated": "Multer 1.x is impacted by a number of vulnerabilities, which have been patched in 2.x. You should upgrade to the latest 2.x version.", + "license": "MIT", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/plist": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-config-file": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.3.2.tgz", + "integrity": "sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "config-file-ts": "^0.2.4", + "dotenv": "^9.0.2", + "dotenv-expand": "^5.1.0", + "js-yaml": "^4.1.0", + "json5": "^2.2.0", + "lazy-val": "^1.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "license": "WTFPL OR ISC", + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "license": "ISC" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spawn-command": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", + "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true + }, + "node_modules/stat-mode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.1.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/temp-file": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-exit-hook": "^2.0.1", + "fs-extra": "^10.0.0" + } + }, + "node_modules/temp-file/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/temp-file/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/temp-file/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/tiny-typed-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", + "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==", + "license": "MIT" + }, + "node_modules/tmp": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", + "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "dev": true, + "license": "WTFPL", + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", + "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true, + "license": "MIT" + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", + "dev": true, + "license": "(WTFPL OR MIT)" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/zip-stream": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", + "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "archiver-utils": "^3.0.4", + "compress-commons": "^4.1.2", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/archiver-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", + "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "glob": "^7.2.3", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + } + } +} diff --git a/synapse-electron/package.json b/synapse-electron/package.json new file mode 100644 index 000000000..ba3954b63 --- /dev/null +++ b/synapse-electron/package.json @@ -0,0 +1,97 @@ +{ + "name": "synapse-desktop-client", + "version": "1.0.0", + "description": "Synapse Desktop Client - Electron version", + "main": "main.js", + "scripts": { + "start": "electron .", + "dev": "electron .", + "build": "electron-builder", + "dist": "electron-builder", + "dist:win": "electron-builder --win", + "dist:mac": "electron-builder --mac", + "dist:linux": "electron-builder --linux" + }, + "build": { + "appId": "com.sagebase.synapse-desktop-client", + "productName": "Synapse Desktop Client", + "directories": { + "output": "dist" + }, + "files": [ + "**/*", + "!backend/__pycache__", + "!backend/*.pyc", + "!backend/venv", + "!backend/build", + "!backend/*.spec" + ], + "extraResources": [ + { + "from": "backend/dist", + "to": "backend", + "filter": [ + "**/*" + ] + } + ], + "win": { + "target": [ + { + "target": "nsis", + "arch": [ + "x64" + ] + } + ], + "icon": "assets/icon.ico", + "verifyUpdateCodeSignature": false + }, + "mac": { + "target": [ + { + "target": "dmg", + "arch": [ + "x64", + "arm64" + ] + } + ], + "icon": "assets/icon.icns" + }, + "linux": { + "target": [ + { + "target": "AppImage", + "arch": [ + "x64" + ] + } + ], + "icon": "assets/icon.png" + }, + "nsis": { + "oneClick": false, + "allowToChangeInstallationDirectory": true, + "createDesktopShortcut": true, + "createStartMenuShortcut": true + } + }, + "devDependencies": { + "concurrently": "^8.2.2", + "cross-env": "^10.0.0", + "electron": "^27.0.0", + "electron-builder": "^24.6.4" + }, + "dependencies": { + "axios": "^1.5.0", + "cors": "^2.8.5", + "electron-log": "^4.4.8", + "electron-updater": "^6.1.4", + "express": "^4.18.2", + "multer": "^1.4.5-lts.1", + "ws": "^8.14.2" + }, + "author": "Sage Bionetworks", + "license": "Apache-2.0" +} diff --git a/synapse-electron/preload.js b/synapse-electron/preload.js new file mode 100644 index 000000000..378b43a43 --- /dev/null +++ b/synapse-electron/preload.js @@ -0,0 +1,39 @@ +const { contextBridge, ipcRenderer } = require('electron'); + +// Expose protected methods that allow the renderer process to use +// the ipcRenderer without exposing the entire object +contextBridge.exposeInMainWorld('electronAPI', { + // Authentication + login: (credentials) => ipcRenderer.invoke('synapse-login', credentials), + logout: () => ipcRenderer.invoke('synapse-logout'), + getProfiles: () => ipcRenderer.invoke('synapse-get-profiles'), + + // File operations + uploadFile: (uploadData) => ipcRenderer.invoke('synapse-upload', uploadData), + downloadFile: (downloadData) => ipcRenderer.invoke('synapse-download', downloadData), + + // Bulk operations + enumerate: (containerData) => ipcRenderer.invoke('synapse-enumerate', containerData), + bulkDownload: (bulkData) => ipcRenderer.invoke('synapse-bulk-download', bulkData), + bulkUpload: (bulkData) => ipcRenderer.invoke('synapse-bulk-upload', bulkData), + scanDirectory: (scanData) => ipcRenderer.invoke('synapse-scan-directory', scanData), + + // File dialogs + showOpenDialog: (options) => ipcRenderer.invoke('show-open-dialog', options), + showSaveDialog: (options) => ipcRenderer.invoke('show-save-dialog', options), + + // External links + openExternal: (url) => ipcRenderer.invoke('open-external', url), + + // App info + getAppVersion: () => ipcRenderer.invoke('get-app-version'), + getHomeDirectory: () => ipcRenderer.invoke('get-home-directory'), + + // WebSocket events + onWebSocketMessage: (callback) => ipcRenderer.on('websocket-message', callback), + removeWebSocketListener: (callback) => ipcRenderer.removeListener('websocket-message', callback), + + // Window events + onWindowClose: (callback) => ipcRenderer.on('window-close', callback), + removeWindowCloseListener: (callback) => ipcRenderer.removeListener('window-close', callback) +}); diff --git a/synapse-electron/src/app.js b/synapse-electron/src/app.js new file mode 100644 index 000000000..da0407ba5 --- /dev/null +++ b/synapse-electron/src/app.js @@ -0,0 +1,2037 @@ +// Synapse Desktop Client - Electron Frontend Application +class SynapseDesktopClient { + constructor() { + this.isLoggedIn = false; + this.currentUser = null; + this.activeTab = 'download'; + this.websocketConnected = false; + this.containerItems = []; + this.selectedItems = new Set(); + + // Upload-specific properties + this.uploadFileItems = []; + this.selectedUploadFiles = new Set(); + + // Auto-scroll related properties + this.autoScrollEnabled = true; + this.lastScrollTime = 0; + this.scrollThrottleDelay = 50; // Minimum ms between scroll operations + this.pendingScroll = false; + + this.initializeApp(); + } + + async initializeApp() { + try { + await this.setupEventListeners(); + await this.loadAppVersion(); + await this.loadProfiles(); + await this.setupWebSocketListener(); + + // Initialize auto-scroll UI + this.updateAutoScrollUI(); + this.updateLogCount(); + + // Start polling for log messages + this.startLogPolling(); + + // Set default download location + const homeResult = await window.electronAPI.getHomeDirectory(); + let defaultDownloadPath = 'Downloads'; // fallback + + if (homeResult.success && homeResult.data.downloads_directory) { + defaultDownloadPath = homeResult.data.downloads_directory; + } else { + console.error('Error getting home directory:', homeResult.error); + } + + const downloadLocationEl = document.getElementById('download-location'); + const bulkDownloadLocationEl = document.getElementById('bulk-download-location'); + + if (downloadLocationEl) { + downloadLocationEl.value = defaultDownloadPath; + } + if (bulkDownloadLocationEl) { + bulkDownloadLocationEl.value = defaultDownloadPath; + } + + // Initialize button states based on current form values + this.updateUploadButtonState(); + this.updateDownloadButtonState(); + this.updateBulkUploadButtonState(); + this.updateBulkDownloadButtonState(); + + console.log('Synapse Desktop Client initialized'); + } catch (error) { + console.error('Error in initializeApp:', error); + } + } + + async loadAppVersion() { + try { + const version = await window.electronAPI.getAppVersion(); + document.getElementById('app-version').textContent = `v${version}`; + } catch (error) { + console.error('Error loading app version:', error); + } + } + + setupEventListeners() { + // Cleanup on window close + window.addEventListener('beforeunload', () => { + this.stopLogPolling(); + }); + + // Login mode toggle + document.querySelectorAll('input[name="loginMode"]').forEach(radio => { + radio.addEventListener('change', (e) => { + this.toggleLoginMode(e.target.value); + }); + }); + + // Login button + document.getElementById('login-btn').addEventListener('click', () => { + this.handleLogin(); + }); + + // Logout button + document.getElementById('logout-btn').addEventListener('click', () => { + this.handleLogout(); + }); + + // Profile selection + document.getElementById('profile').addEventListener('change', (e) => { + this.updateProfileInfo(e.target.value); + }); + + // Tab navigation + document.querySelectorAll('.tab-btn').forEach(btn => { + btn.addEventListener('click', (e) => { + this.switchTab(e.currentTarget.dataset.tab); + }); + }); + + // File browser buttons + document.getElementById('browse-download-location').addEventListener('click', () => { + this.browseDirectory('download-location'); + }); + + document.getElementById('browse-upload-file').addEventListener('click', () => { + this.browseFile('upload-file'); + }); + + document.getElementById('browse-bulk-download-location').addEventListener('click', () => { + this.browseDirectory('bulk-download-location'); + }); + + document.getElementById('browse-bulk-upload-location').addEventListener('click', () => { + this.browseDirectory('bulk-upload-location'); + }); + + // Upload mode toggle + document.querySelectorAll('input[name="uploadMode"]').forEach(radio => { + radio.addEventListener('change', (e) => { + this.toggleUploadMode(e.target.value); + }); + }); + + // Operation buttons + document.getElementById('download-btn').addEventListener('click', () => { + this.handleDownload(); + }); + + document.getElementById('upload-btn').addEventListener('click', () => { + this.handleUpload(); + }); + + document.getElementById('enumerate-btn').addEventListener('click', () => { + this.handleEnumerate(); + }); + + document.getElementById('scan-upload-btn').addEventListener('click', () => { + this.handleScanUploadDirectory(); + }); + + document.getElementById('bulk-download-btn').addEventListener('click', () => { + this.handleBulkDownload(); + }); + + document.getElementById('bulk-upload-btn').addEventListener('click', () => { + this.handleBulkUpload(); + }); + + // Selection controls + document.getElementById('select-all-btn').addEventListener('click', () => { + this.selectAllItems(true); + }); + + document.getElementById('deselect-all-btn').addEventListener('click', () => { + this.selectAllItems(false); + }); + + document.getElementById('expand-all-btn').addEventListener('click', () => { + this.expandAllFolders(); + }); + + document.getElementById('collapse-all-btn').addEventListener('click', () => { + this.collapseAllFolders(); + }); + + // Upload selection controls + document.getElementById('select-all-upload-btn').addEventListener('click', () => { + this.selectAllUploadFiles(true); + }); + + document.getElementById('deselect-all-upload-btn').addEventListener('click', () => { + this.selectAllUploadFiles(false); + }); + + document.getElementById('expand-all-upload-btn').addEventListener('click', () => { + this.expandAllUploadFolders(); + }); + + document.getElementById('collapse-all-upload-btn').addEventListener('click', () => { + this.collapseAllUploadFolders(); + }); + + // Clear output + document.getElementById('clear-output-btn').addEventListener('click', () => { + this.clearOutput(); + }); + + // Auto-scroll toggle + document.getElementById('auto-scroll-toggle').addEventListener('click', () => { + this.toggleAutoScroll(); + }); + + // Scroll to bottom + document.getElementById('scroll-to-bottom-btn').addEventListener('click', () => { + this.scrollToBottom(); + }); + + // Detect manual scrolling to temporarily disable auto-scroll + document.getElementById('output-log').addEventListener('scroll', (e) => { + this.handleManualScroll(e); + }); + + // File input change for auto-naming + document.getElementById('upload-file').addEventListener('change', (e) => { + if (e.target.value && !document.getElementById('upload-name').value) { + const fileName = e.target.value.split('\\').pop().split('/').pop(); + document.getElementById('upload-name').value = fileName; + } + // Re-enable upload button if form is now valid + this.updateUploadButtonState(); + }); + + // Download input changes + document.getElementById('download-id').addEventListener('input', () => { + this.updateDownloadButtonState(); + }); + + document.getElementById('download-location').addEventListener('change', () => { + this.updateDownloadButtonState(); + }); + + // Upload mode and ID input changes + document.querySelectorAll('input[name="uploadMode"]').forEach(radio => { + radio.addEventListener('change', () => { + this.updateUploadButtonState(); + }); + }); + + document.getElementById('parent-id').addEventListener('input', () => { + this.updateUploadButtonState(); + }); + + document.getElementById('entity-id').addEventListener('input', () => { + this.updateUploadButtonState(); + }); + + // Bulk upload directory change + document.getElementById('bulk-upload-location').addEventListener('change', () => { + this.handleScanUploadDirectory(); + }); + + // Bulk operation form field changes + document.getElementById('bulk-parent-id').addEventListener('input', () => { + this.updateBulkUploadButtonState(); + }); + + document.getElementById('bulk-download-location').addEventListener('change', () => { + this.updateBulkDownloadButtonState(); + }); + } + + setupWebSocketListener() { + window.electronAPI.onWebSocketMessage((event, message) => { + this.handleWebSocketMessage(message); + }); + } + + startLogPolling() { + // Poll for log messages every 500ms + this.logPollingInterval = setInterval(async () => { + try { + const response = await fetch('http://localhost:8000/logs/poll'); + if (response.ok) { + const result = await response.json(); + if (result.success && result.messages && result.messages.length > 0) { + // Process each log message + result.messages.forEach(message => { + this.handleLogMessage(message); + }); + } + } + } catch (error) { + // Silently ignore polling errors to avoid spam + // Only log if we're having connection issues + if (error.message && !error.message.includes('Failed to fetch')) { + console.debug('Log polling error:', error); + } + } + }, 500); + } + + stopLogPolling() { + if (this.logPollingInterval) { + clearInterval(this.logPollingInterval); + this.logPollingInterval = null; + } + } + + handleWebSocketMessage(message) { + console.log('WebSocket message received:', message); + switch (message.type) { + case 'log': + this.handleLogMessage(message); + break; + case 'complete': + console.log('Handling completion message:', message); + this.handleOperationComplete(message.operation, message.success, message.data); + break; + case 'connection_status': + this.updateConnectionStatus(message.connected); + break; + case 'scroll_command': + this.handleScrollCommand(message); + break; + default: + console.log('Unknown WebSocket message:', message); + } + } + + handleLogMessage(logMessage) { + // Display in the UI log with enhanced formatting + this.logMessageAdvanced(logMessage); + + // Auto-scroll if enabled and requested + if (logMessage.auto_scroll) { + this.autoScrollIfEnabled(); + } + + // Also log to browser console with more details + const timestamp = logMessage.timestamp ? + new Date(logMessage.timestamp * 1000).toISOString() : + new Date().toISOString(); + const consoleMessage = `[${timestamp}] [${logMessage.logger_name || 'backend'}] ${logMessage.message}`; + + switch (logMessage.level) { + case 'error': + case 'critical': + console.error(consoleMessage); + break; + case 'warning': + case 'warn': + console.warn(consoleMessage); + break; + case 'debug': + console.debug(consoleMessage); + break; + case 'info': + default: + console.info(consoleMessage); + break; + } + + // For synapse client logs, add special formatting + if (logMessage.logger_name && logMessage.logger_name.includes('synapse')) { + console.group(`🔬 Synapse Client Log [${logMessage.level.toUpperCase()}]`); + console.log(`Logger: ${logMessage.logger_name}`); + console.log(`Message: ${logMessage.message}`); + console.log(`Timestamp: ${timestamp}`); + if (logMessage.operation) { + console.log(`Operation: ${logMessage.operation}`); + } + console.groupEnd(); + } + } + + updateConnectionStatus(connected) { + this.websocketConnected = connected; + const statusElement = document.getElementById('connection-status'); + const icon = statusElement.querySelector('i'); + + if (connected) { + icon.className = 'fas fa-circle status-connected'; + statusElement.lastChild.textContent = 'Connected'; + } else { + icon.className = 'fas fa-circle status-disconnected'; + statusElement.lastChild.textContent = 'Disconnected'; + } + } + + async loadProfiles() { + try { + const result = await window.electronAPI.getProfiles(); + if (result.success) { + this.populateProfiles(result.data.profiles); + this.updateLoginModeAvailability(result.data.profiles.length > 0); + } + } catch (error) { + console.error('Error loading profiles:', error); + this.updateLoginModeAvailability(false); + } + } + + populateProfiles(profiles) { + const profileSelect = document.getElementById('profile'); + profileSelect.innerHTML = ''; + + profiles.forEach(profile => { + const option = document.createElement('option'); + option.value = profile.name; + option.textContent = profile.display_name || profile.name; + profileSelect.appendChild(option); + }); + } + + updateLoginModeAvailability(hasProfiles) { + const configMode = document.getElementById('config-mode'); + const manualMode = document.getElementById('manual-mode'); + + if (!hasProfiles) { + configMode.disabled = true; + manualMode.checked = true; + this.toggleLoginMode('manual'); + } else { + configMode.disabled = false; + } + } + + updateProfileInfo(profileName) { + const infoElement = document.getElementById('profile-info'); + if (profileName) { + infoElement.textContent = `Using profile: ${profileName}`; + } else { + infoElement.textContent = ''; + } + } + + toggleLoginMode(mode) { + const manualForm = document.getElementById('manual-login'); + const configForm = document.getElementById('config-login'); + + if (mode === 'manual') { + manualForm.classList.add('active'); + configForm.classList.remove('active'); + } else { + manualForm.classList.remove('active'); + configForm.classList.add('active'); + } + } + + toggleUploadMode(mode) { + const parentIdGroup = document.getElementById('parent-id-group'); + const entityIdGroup = document.getElementById('entity-id-group'); + + if (mode === 'new') { + parentIdGroup.style.display = 'block'; + entityIdGroup.style.display = 'none'; + document.getElementById('entity-id').value = ''; + } else { + parentIdGroup.style.display = 'none'; + entityIdGroup.style.display = 'block'; + document.getElementById('parent-id').value = ''; + } + } + + switchTab(tabName) { + if (!tabName) { + console.error('switchTab called with invalid tabName:', tabName); + return; + } + + // Update tab buttons + document.querySelectorAll('.tab-btn').forEach(btn => { + btn.classList.remove('active'); + }); + + const activeTabBtn = document.querySelector(`[data-tab="${tabName}"]`); + if (activeTabBtn) { + activeTabBtn.classList.add('active'); + } else { + console.error(`No tab button found with data-tab="${tabName}"`); + } + + // Update tab panels + document.querySelectorAll('.tab-panel').forEach(panel => { + panel.classList.remove('active'); + }); + + const activeTabPanel = document.getElementById(`${tabName}-tab`); + if (activeTabPanel) { + activeTabPanel.classList.add('active'); + } else { + console.error(`No tab panel found with id="${tabName}-tab"`); + } + + this.activeTab = tabName; + } + + async handleLogin() { + const loginBtn = document.getElementById('login-btn'); + const statusDiv = document.getElementById('login-status'); + + loginBtn.disabled = true; + loginBtn.innerHTML = ' Logging in...'; + + try { + const mode = document.querySelector('input[name="loginMode"]:checked').value; + let credentials = { mode }; + + if (mode === 'manual') { + credentials.username = document.getElementById('username').value.trim(); + credentials.token = document.getElementById('token').value.trim(); + + if (!credentials.username || !credentials.token) { + throw new Error('Username and token are required'); + } + } else { + credentials.profile = document.getElementById('profile').value; + + if (!credentials.profile) { + throw new Error('Please select a profile'); + } + } + + const result = await window.electronAPI.login(credentials); + + if (result.success) { + this.handleLoginSuccess(result.data); + } else { + throw new Error(result.error); + } + } catch (error) { + this.showStatus('login-status', error.message, 'error'); + } finally { + loginBtn.disabled = false; + loginBtn.innerHTML = ' Login'; + } + } + + handleLoginSuccess(userData) { + this.isLoggedIn = true; + this.currentUser = userData; + + // Hide login section and show main app + document.getElementById('login-section').style.display = 'none'; + document.getElementById('main-section').style.display = 'flex'; + + // Update user info + document.getElementById('user-name').textContent = userData.username || userData.name || 'User'; + + this.logMessage(`Successfully logged in as ${userData.username || userData.name}`, false); + this.setStatus('Logged in successfully'); + } + + async handleLogout() { + try { + await window.electronAPI.logout(); + + this.isLoggedIn = false; + this.currentUser = null; + + // Show login section and hide main app + document.getElementById('login-section').style.display = 'flex'; + document.getElementById('main-section').style.display = 'none'; + + // Clear form data + document.getElementById('username').value = ''; + document.getElementById('token').value = ''; + document.getElementById('profile').value = ''; + + // Clear status + document.getElementById('login-status').classList.remove('success', 'error', 'info'); + document.getElementById('login-status').style.display = 'none'; + + this.logMessage('Logged out successfully', false); + this.setStatus('Ready'); + } catch (error) { + console.error('Logout error:', error); + this.logMessage(`Logout error: ${error.message}`, true); + } + } + + async browseDirectory(inputId) { + try { + const result = await window.electronAPI.showOpenDialog({ + properties: ['openDirectory'], + defaultPath: document.getElementById(inputId).value || '' + }); + + if (!result.canceled && result.filePaths.length > 0) { + document.getElementById(inputId).value = result.filePaths[0]; + + // Trigger scan for bulk upload if it's the upload location + if (inputId === 'bulk-upload-location') { + this.handleScanUploadDirectory(); + } + } + } catch (error) { + console.error('Error browsing directory:', error); + this.logMessage(`Error selecting directory: ${error.message}`, true); + } + } + + async browseFile(inputId) { + try { + const result = await window.electronAPI.showOpenDialog({ + properties: ['openFile'], + defaultPath: document.getElementById(inputId).value || '' + }); + + if (!result.canceled && result.filePaths.length > 0) { + document.getElementById(inputId).value = result.filePaths[0]; + + // Auto-populate upload name if empty + if (inputId === 'upload-file' && !document.getElementById('upload-name').value) { + const fileName = result.filePaths[0].split('\\').pop().split('/').pop(); + document.getElementById('upload-name').value = fileName; + } + } + } catch (error) { + console.error('Error browsing file:', error); + this.logMessage(`Error selecting file: ${error.message}`, true); + } + } + + async handleDownload() { + const synapseId = document.getElementById('download-id').value.trim(); + const version = document.getElementById('download-version').value.trim(); + const downloadPath = document.getElementById('download-location').value.trim(); + + if (!synapseId) { + this.logMessage('Synapse ID is required for download', true); + return; + } + + if (!downloadPath) { + this.logMessage('Download location is required', true); + return; + } + + try { + const result = await window.electronAPI.downloadFile({ + synapse_id: synapseId, + version: version || null, + download_path: downloadPath + }); + + if (result.success) { + this.logMessage(`Download initiated for ${synapseId}`, false); + } else { + throw new Error(result.error); + } + } catch (error) { + this.logMessage(`Download error: ${error.message}`, true);} + } + + async handleUpload() { + const filePath = document.getElementById('upload-file').value.trim(); + const mode = document.querySelector('input[name="uploadMode"]:checked').value; + const parentId = document.getElementById('parent-id').value.trim(); + const entityId = document.getElementById('entity-id').value.trim(); + const name = document.getElementById('upload-name').value.trim(); + + if (!filePath) { + this.logMessage('File path is required for upload', true); + return; + } + + if (mode === 'new' && !parentId) { + this.logMessage('Parent ID is required for new file upload', true); + return; + } + + if (mode === 'update' && !entityId) { + this.logMessage('Entity ID is required for file update', true); + return; + } + + try { + const result = await window.electronAPI.uploadFile({ + file_path: filePath, + mode: mode, + parent_id: parentId || null, + entity_id: entityId || null, + name: name || null + }); + + if (result.success) { + this.logMessage(`Upload initiated for ${filePath}`, false); + } else { + throw new Error(result.error); + } + } catch (error) { + this.logMessage(`Upload error: ${error.message}`, true);} + } + + async handleEnumerate() { + const containerId = document.getElementById('container-id').value.trim(); + const recursive = document.getElementById('recursive').checked; + + if (!containerId) { + this.logMessage('Container ID is required for enumeration', true); + return; + } + + try { + const result = await window.electronAPI.enumerate({ + container_id: containerId, + recursive: recursive + }); + + if (result.success) { + this.displayContainerContents(result.data.items); + this.logMessage(`Found ${result.data.items.length} items in container`, false); + } else { + throw new Error(result.error); + } + } catch (error) { + this.logMessage(`Enumeration error: ${error.message}`, true); + } finally {} + } + + displayContainerContents(items) { + this.containerItems = items; + this.selectedItems.clear(); + + const contentsDiv = document.getElementById('container-contents'); + const treeDiv = document.getElementById('items-tree'); + + treeDiv.innerHTML = ''; + + // Build hierarchical structure + const { rootItems, parentMap } = this.buildHierarchy(items); + + // Use JSTree for better tree functionality + this.initializeJSTree(treeDiv, rootItems, parentMap); + + contentsDiv.style.display = 'block'; + + // Update status + const folderCount = items.filter(item => { + const itemType = item.type || item.item_type || 'file'; + return itemType === 'folder'; + }).length; + const fileCount = items.length - folderCount; + this.logMessage(`Loaded ${items.length} items (${folderCount} folders, ${fileCount} files)`, false); + } + + initializeJSTree(container, rootItems, parentMap) { + // Clear any existing JSTree + if ($.fn.jstree && $(container).jstree) { + $(container).jstree('destroy'); + } + + // Build JSTree data structure + const treeData = this.buildJSTreeData(rootItems, parentMap); + + // Initialize JSTree with enhanced features + $(container).jstree({ + 'core': { + 'data': treeData, + 'themes': { + 'name': 'default', + 'responsive': true, + 'icons': true + }, + 'check_callback': true + }, + 'checkbox': { + 'three_state': true, // Enable three-state checkboxes (checked, unchecked, indeterminate) + 'whole_node': true, // Click anywhere on the node to check/uncheck + 'tie_selection': false, // Don't tie selection to checkbox state + 'cascade': 'up+down' // Cascade checkbox state up and down the tree + }, + 'types': { + 'folder': { + 'icon': 'fas fa-folder', + 'a_attr': { 'class': 'tree-folder' } + }, + 'file': { + 'icon': 'fas fa-file', + 'a_attr': { 'class': 'tree-file' } + } + }, + 'plugins': ['checkbox', 'types', 'wholerow'] + }) + .on('check_node.jstree uncheck_node.jstree', (e, data) => { + this.handleJSTreeSelection(data); + }) + .on('ready.jstree', () => { + // Expand first level by default + $(container).jstree('open_all', null, 1); + this.updateSelectionCount(); + }); + } + + buildJSTreeData(items, parentMap, parentPath = '') { + const treeData = []; + + items.forEach(item => { + const hasChildren = parentMap[item.id] && parentMap[item.id].length > 0; + const currentPath = parentPath ? `${parentPath}/${item.name}` : item.name; + const sizeStr = this.formatFileSize(item.size); + const itemType = item.type || item.item_type || 'file'; + + const nodeData = { + 'id': item.id, + 'text': `${item.name} (${itemType}${sizeStr ? ', ' + sizeStr : ''})`, + 'type': itemType, + 'data': { + 'item': item, + 'path': currentPath, + 'size': item.size + }, + 'state': { + 'opened': false + } + }; + + if (hasChildren) { + nodeData.children = this.buildJSTreeData(parentMap[item.id], parentMap, currentPath); + } + + treeData.push(nodeData); + }); + + return treeData; + } + + handleJSTreeSelection(data) { + console.log('handleJSTreeSelection called'); + const treeDiv = document.getElementById('items-tree'); + + // Get all checked nodes to rebuild the selection set + if ($.fn.jstree && $(treeDiv).jstree) { + const checkedNodes = $(treeDiv).jstree('get_checked', true); + this.selectedItems.clear(); + + checkedNodes.forEach(node => { + if (node.data && node.data.item) { + this.selectedItems.add(node.data.item.id); + } + }); + + console.log(`handleJSTreeSelection: ${this.selectedItems.size} items selected`); + } + + this.updateSelectionCount(); + } + + buildHierarchy(items) { + const parentMap = {}; + const rootItems = []; + const allItemIds = new Set(items.map(item => item.id)); + + // Build parent-child relationships + items.forEach(item => { + if (item.parent_id) { + if (!parentMap[item.parent_id]) { + parentMap[item.parent_id] = []; + } + parentMap[item.parent_id].push(item); + } else { + rootItems.push(item); + } + }); + + // Handle orphaned items (parent not in current item set) + if (rootItems.length === 0 && items.length > 0) { + items.forEach(item => { + if (item.parent_id && !allItemIds.has(item.parent_id)) { + rootItems.push(item); + } + }); + } + + // Sort items: folders first, then alphabetically + rootItems.sort((a, b) => { + const aType = a.type || a.item_type || 'file'; + const bType = b.type || b.item_type || 'file'; + if (aType !== bType) { + return aType === 'folder' ? -1 : 1; + } + return a.name.localeCompare(b.name); + }); + + Object.values(parentMap).forEach(children => { + children.sort((a, b) => { + const aType = a.type || a.item_type || 'file'; + const bType = b.type || b.item_type || 'file'; + if (aType !== bType) { + return aType === 'folder' ? -1 : 1; + } + return a.name.localeCompare(b.name); + }); + }); + + return { rootItems, parentMap }; + } + + populateTreeLevel(container, items, parentMap, level, parentPath = '') { + items.forEach(item => { + const hasChildren = parentMap[item.id] && parentMap[item.id].length > 0; + const currentPath = parentPath ? `${parentPath}/${item.name}` : item.name; + + // Create tree item element + const itemDiv = this.createTreeItem(item, level, hasChildren, currentPath); + container.appendChild(itemDiv); + + // Create children container + if (hasChildren) { + const childrenDiv = document.createElement('div'); + childrenDiv.className = 'tree-children'; + childrenDiv.id = `children-${item.id}`; + + this.populateTreeLevel( + childrenDiv, + parentMap[item.id], + parentMap, + level + 1, + currentPath + ); + + container.appendChild(childrenDiv); + } + }); + } + + createTreeItem(item, level, hasChildren, currentPath) { + const itemDiv = document.createElement('div'); + itemDiv.className = `tree-item level-${level}`; + itemDiv.dataset.itemId = item.id; + itemDiv.dataset.level = level; + itemDiv.style.setProperty('--indent-level', level); + + // Format size for display + const sizeStr = this.formatFileSize(item.size); + const itemType = item.type || item.item_type || 'file'; + + itemDiv.innerHTML = ` + +
+ + + ${this.escapeHtml(item.name)} + ${itemType} + ${sizeStr} + ${currentPath} +
+ `; + + // Add checkbox event listener + const checkbox = itemDiv.querySelector('input[type="checkbox"]'); + checkbox.addEventListener('change', (e) => { + this.handleItemSelection(e, item, itemDiv); + }); + + // Add context menu support + itemDiv.addEventListener('contextmenu', (e) => { + e.preventDefault(); + this.showTreeItemContextMenu(e, item, itemDiv); + }); + + return itemDiv; + } + + toggleTreeNode(itemId) { + const toggleButton = document.querySelector(`.tree-item[data-item-id="${itemId}"] .tree-toggle`); + const childrenDiv = document.getElementById(`children-${itemId}`); + + if (toggleButton && childrenDiv) { + const isExpanded = toggleButton.classList.contains('expanded'); + + if (isExpanded) { + toggleButton.classList.remove('expanded'); + toggleButton.classList.add('collapsed'); + childrenDiv.style.display = 'none'; + } else { + toggleButton.classList.remove('collapsed'); + toggleButton.classList.add('expanded'); + childrenDiv.style.display = 'block'; + } + } + } + + handleItemSelection(event, item, itemDiv) { + if (event.target.checked) { + this.selectedItems.add(item.id); + itemDiv.classList.add('selected'); + } else { + this.selectedItems.delete(item.id); + itemDiv.classList.remove('selected'); + } + + // Update selection count display + this.updateSelectionCount(); + } + + updateSelectionCount() { + const count = this.selectedItems.size; + console.log(`updateSelectionCount called: ${count} items selected`); + + // Calculate stats for selected items + const selectedItemsData = this.containerItems.filter(item => + this.selectedItems.has(item.id) + ); + + const fileCount = selectedItemsData.filter(item => { + const itemType = item.type || item.item_type || 'file'; + return itemType === 'file'; + }).length; + + const folderCount = selectedItemsData.filter(item => { + const itemType = item.type || item.item_type || 'file'; + return itemType === 'folder'; + }).length; + + const totalSize = selectedItemsData.reduce((sum, item) => { + return sum + (item.size || 0); + }, 0); + + // Update selection info + let selectionInfo = document.querySelector('.selection-info'); + if (!selectionInfo) { + // Create selection info if it doesn't exist + selectionInfo = document.createElement('div'); + selectionInfo.className = 'selection-info'; + selectionInfo.style.cssText = 'margin: 0.5rem 0; font-size: 0.875rem; color: var(--text-muted);'; + + const controlsDiv = document.querySelector('.selection-controls'); + if (controlsDiv) { + controlsDiv.parentNode.insertBefore(selectionInfo, controlsDiv.nextSibling); + } + } + + // Format the selection information + if (count === 0) { + selectionInfo.textContent = 'No items selected'; + } else { + const sizeStr = this.formatFileSize(totalSize); + const parts = []; + + if (fileCount > 0) { + parts.push(`${fileCount} file${fileCount !== 1 ? 's' : ''}`); + } + if (folderCount > 0) { + parts.push(`${folderCount} folder${folderCount !== 1 ? 's' : ''}`); + } + + let infoText = `${count} item${count !== 1 ? 's' : ''} selected`; + if (parts.length > 0) { + infoText += ` (${parts.join(', ')})`; + } + if (sizeStr) { + infoText += ` - Total size: ${sizeStr}`; + } + + selectionInfo.textContent = infoText; + } + + // Update download button text and state + const downloadBtn = document.getElementById('bulk-download-btn'); + if (downloadBtn) { + console.log(`Updating download button: count=${count}, disabled=${count === 0}`); + if (count === 0) { + downloadBtn.innerHTML = ' Download Selected Items'; + } else { + const sizeStr = this.formatFileSize(totalSize); + const btnText = sizeStr + ? `Download ${count} item${count !== 1 ? 's' : ''} (${sizeStr})` + : `Download ${count} item${count !== 1 ? 's' : ''}`; + downloadBtn.innerHTML = ` ${btnText}`; + } + // Use the validation function to determine button state + this.updateBulkDownloadButtonState(); + } else { + console.error('Download button not found!'); + } + } + + formatFileSize(bytes) { + if (!bytes || bytes === 0) return ''; + + const units = ['B', 'KB', 'MB', 'GB', 'TB']; + let size = bytes; + let unitIndex = 0; + + while (size >= 1024 && unitIndex < units.length - 1) { + size /= 1024; + unitIndex++; + } + + return `${size.toFixed(1)} ${units[unitIndex]}`; + } + + escapeHtml(text) { + const div = document.createElement('div'); + div.textContent = text; + return div.innerHTML; + } + + // Make tree items focusable for better accessibility + makeTreeItemsFocusable() { + const treeItems = document.querySelectorAll('.tree-item'); + treeItems.forEach((item, index) => { + item.setAttribute('tabindex', index === 0 ? '0' : '-1'); + item.addEventListener('focus', () => { + // Remove focus from other tree items + treeItems.forEach(otherItem => { + if (otherItem !== item) { + otherItem.setAttribute('tabindex', '-1'); + } + }); + item.setAttribute('tabindex', '0'); + }); + }); + } + + showTreeItemContextMenu(event, item, itemDiv) { + // Remove any existing context menu + const existingMenu = document.querySelector('.tree-context-menu'); + if (existingMenu) { + existingMenu.remove(); + } + + // Create context menu + const contextMenu = document.createElement('div'); + contextMenu.className = 'tree-context-menu'; + contextMenu.style.cssText = ` + position: fixed; + left: ${event.clientX}px; + top: ${event.clientY}px; + background: white; + border: 1px solid var(--border-color); + border-radius: var(--border-radius-sm); + box-shadow: 0 2px 10px rgba(0,0,0,0.1); + z-index: 1000; + min-width: 150px; + `; + + const checkbox = itemDiv.querySelector('input[type="checkbox"]'); + const isSelected = checkbox.checked; + + const menuItems = [ + { + label: isSelected ? 'Deselect Item' : 'Select Item', + action: () => { + checkbox.checked = !checkbox.checked; + checkbox.dispatchEvent(new Event('change')); + } + } + ]; + + // Add folder-specific options + const itemType = item.type || item.item_type || 'file'; + if (itemType === 'folder') { + const toggleButton = itemDiv.querySelector('.tree-toggle'); + const isExpanded = toggleButton && toggleButton.classList.contains('expanded'); + + menuItems.push({ + label: isExpanded ? 'Collapse Folder' : 'Expand Folder', + action: () => { + if (toggleButton && !toggleButton.classList.contains('leaf')) { + toggleButton.click(); + } + } + }); + } + + menuItems.push( + { separator: true }, + { + label: 'Show Info', + action: () => { + this.showItemInfo(item); + } + } + ); + + // Build menu HTML + const menuHTML = menuItems.map(menuItem => { + if (menuItem.separator) { + return '
'; + } + return `
${menuItem.label}
`; + }).join(''); + + contextMenu.innerHTML = menuHTML; + + // Add event listeners + contextMenu.addEventListener('click', (e) => { + const actionIndex = e.target.dataset.action; + if (actionIndex !== undefined) { + menuItems[actionIndex].action(); + } + contextMenu.remove(); + }); + + // Close menu when clicking outside + const closeMenu = (e) => { + if (!contextMenu.contains(e.target)) { + contextMenu.remove(); + document.removeEventListener('click', closeMenu); + } + }; + + document.addEventListener('click', closeMenu); + document.body.appendChild(contextMenu); + } + + showItemInfo(item) { + const itemType = item.type || item.item_type || 'file'; + const infoText = ` +Item Information: + +Name: ${item.name} +Type: ${itemType} +Synapse ID: ${item.id} +Size: ${item.size ? this.formatFileSize(item.size) : 'N/A'} +Parent ID: ${item.parent_id || 'N/A'} + `.trim(); + + alert(infoText); + } + + selectAllItems(select) { + const treeDiv = document.getElementById('items-tree'); + + if ($.fn.jstree && $(treeDiv).jstree) { + if (select) { + $(treeDiv).jstree('check_all'); + } else { + $(treeDiv).jstree('uncheck_all'); + } + + // Manually update the selection after JSTree operations + // Use a short timeout to ensure JSTree has completed its operations + setTimeout(() => { + const checkedNodes = $(treeDiv).jstree('get_checked', true); + this.selectedItems.clear(); + + checkedNodes.forEach(node => { + if (node.data && node.data.item) { + this.selectedItems.add(node.data.item.id); + } + }); + + console.log(`Select all ${select ? 'enabled' : 'disabled'}: ${this.selectedItems.size} items selected`); + this.updateSelectionCount(); + }, 10); // Slightly longer timeout to ensure completion + } else { + // Fallback to original method if JSTree is not available + const checkboxes = document.querySelectorAll('#items-tree input[type="checkbox"]'); + this.selectedItems.clear(); + + checkboxes.forEach(checkbox => { + checkbox.checked = select; + const itemDiv = checkbox.closest('.tree-item'); + + if (select) { + this.selectedItems.add(checkbox.dataset.itemId); + itemDiv.classList.add('selected'); + } else { + itemDiv.classList.remove('selected'); + } + }); + + console.log(`Select all ${select ? 'enabled' : 'disabled'} (fallback): ${this.selectedItems.size} items selected`); + this.updateSelectionCount(); + } + } + + // Add convenience methods for expand/collapse all + expandAllFolders() { + const treeDiv = document.getElementById('items-tree'); + + if ($.fn.jstree && $(treeDiv).jstree) { + $(treeDiv).jstree('open_all'); + } else { + // Fallback to original method + const toggleButtons = document.querySelectorAll('.tree-toggle.collapsed'); + toggleButtons.forEach(button => { + button.click(); + }); + } + } + + collapseAllFolders() { + const treeDiv = document.getElementById('items-tree'); + + if ($.fn.jstree && $(treeDiv).jstree) { + $(treeDiv).jstree('close_all'); + } else { + // Fallback to original method + const toggleButtons = document.querySelectorAll('.tree-toggle.expanded'); + toggleButtons.forEach(button => { + button.click(); + }); + } + } + + async handleBulkDownload() { + const downloadPath = document.getElementById('bulk-download-location').value.trim(); + + if (this.selectedItems.size === 0) { + this.logMessage('Please select items to download', true); + return; + } + + if (!downloadPath) { + this.logMessage('Download location is required', true); + return; + } + + try { + const selectedItemsData = this.containerItems.filter(item => + this.selectedItems.has(item.id) + ); + + const result = await window.electronAPI.bulkDownload({ + items: selectedItemsData, + download_path: downloadPath, + create_subfolders: document.getElementById('recursive').checked + }); + + if (result.success) { + this.logMessage(`Bulk download initiated for ${selectedItemsData.length} items`, false); + } else { + throw new Error(result.error); + } + } catch (error) { + this.logMessage(`Bulk download error: ${error.message}`, true);} + } + + async handleScanUploadDirectory() { + const uploadPath = document.getElementById('bulk-upload-location').value.trim(); + + if (!uploadPath) { + this.logMessage('Please select a directory to scan', true); + return; + } + + try { + this.logMessage('Scanning directory for files...', false); + + const recursive = document.getElementById('bulk-preserve-structure').checked; + + // Call backend API to scan directory + const result = await window.electronAPI.scanDirectory({ + directory_path: uploadPath, + recursive: recursive + }); + + if (result.success) { + this.displayUploadFileContents(result.data.files); + const summary = result.data.summary; + this.logMessage( + `Found ${summary.file_count} files and ${summary.folder_count} folders ` + + `(${this.formatFileSize(summary.total_size)} total)`, false + ); + } else { + throw new Error(result.error); + } + } catch (error) { + this.logMessage(`Directory scan error: ${error.message}`, true); + } + } + + displayUploadFileContents(files) { + this.uploadFileItems = files; + this.selectedUploadFiles.clear(); + + const contentsDiv = document.getElementById('bulk-upload-files'); + const treeDiv = document.getElementById('upload-files-tree'); + + treeDiv.innerHTML = ''; + + // Build hierarchical structure for files + const { rootItems, parentMap } = this.buildUploadHierarchy(files); + + // Create tree elements + this.createUploadTreeElements(rootItems, treeDiv, parentMap); + + contentsDiv.style.display = 'block'; + this.updateUploadSelectionDisplay(); + } + + buildUploadHierarchy(files) { + const itemsMap = new Map(); + const parentMap = new Map(); + const rootItems = []; + + // Create virtual folders for directory structure + files.forEach(file => { + // Handle both Windows (\) and Unix (/) path separators + const pathParts = file.relative_path.replace(/\\/g, '/').split('/').filter(part => part.length > 0); + + // Create all parent directories as virtual folders + let currentPath = ''; + for (let i = 0; i < pathParts.length - 1; i++) { + const part = pathParts[i]; + const parentPath = currentPath; + currentPath = currentPath ? `${currentPath}/${part}` : part; + + if (!itemsMap.has(currentPath)) { + const virtualFolder = { + id: `folder_${currentPath}`, + name: part, + type: 'folder', + path: currentPath, + isVirtual: true + }; + itemsMap.set(currentPath, virtualFolder); + + if (parentPath) { + if (!parentMap.has(parentPath)) { + parentMap.set(parentPath, []); + } + parentMap.get(parentPath).push(virtualFolder); + } else { + rootItems.push(virtualFolder); + } + } + } + + // Add the file itself + const fileName = pathParts[pathParts.length - 1]; + const fileObj = { + ...file, + id: `file_${file.path}`, + name: fileName, + type: 'file' + }; + + const parentPath = pathParts.length > 1 ? pathParts.slice(0, -1).join('/') : ''; + + if (parentPath) { + if (!parentMap.has(parentPath)) { + parentMap.set(parentPath, []); + } + parentMap.get(parentPath).push(fileObj); + } else { + rootItems.push(fileObj); + } + }); + + return { rootItems, parentMap }; + } + + createUploadTreeElements(items, container, parentMap, level = 0) { + items.forEach(item => { + const itemElement = this.createUploadTreeItem(item, level); + container.appendChild(itemElement); + + // Add children if this is a folder + if (item.type === 'folder' && parentMap.has(item.path)) { + const childrenContainer = document.createElement('div'); + childrenContainer.className = 'tree-children'; + childrenContainer.id = `upload-children-${item.id}`; + childrenContainer.style.display = 'block'; // Start expanded like download tree + + this.createUploadTreeElements( + parentMap.get(item.path), + childrenContainer, + parentMap, + level + 1 + ); + + container.appendChild(childrenContainer); + } + }); + } + + createUploadTreeItem(item, level) { + const itemDiv = document.createElement('div'); + itemDiv.className = `tree-item level-${level} upload-tree-item ${item.type === 'folder' ? 'folder' : 'file'}`; + itemDiv.dataset.id = item.id; + itemDiv.dataset.type = item.type; + itemDiv.dataset.level = level; + + let content = ''; + + if (item.type === 'folder') { + // For folders: "Folder Name (folder)" - we'll add count later if needed + content = ` + +
+ + ${this.escapeHtml(item.name)} (folder) +
+ `; + } else { + // For files: "File Name (file, size)" + const sizeStr = this.formatFileSize(item.size); + content = ` + +
+ + + ${this.escapeHtml(item.name)} (${sizeStr}) +
+ `; + + itemDiv.addEventListener('change', (e) => { + if (e.target.classList.contains('item-checkbox')) { + this.handleUploadFileSelection(item.id, e.target.checked); + } + }); + } + + itemDiv.innerHTML = content; + return itemDiv; + } + + handleUploadFileSelection(fileId, selected) { + if (selected) { + this.selectedUploadFiles.add(fileId); + } else { + this.selectedUploadFiles.delete(fileId); + } + this.updateUploadSelectionDisplay(); + } + + updateUploadSelectionDisplay() { + const selectedCount = this.selectedUploadFiles.size; + const totalFiles = this.uploadFileItems.filter(item => item.type === 'file').length; + + const button = document.getElementById('bulk-upload-btn'); + if (button) { + button.textContent = `Upload Selected Files (${selectedCount})`; + // Use the validation function instead of just checking count + this.updateBulkUploadButtonState(); + } + } + + selectAllUploadFiles(select) { + const checkboxes = document.querySelectorAll('#upload-files-tree .item-checkbox'); + checkboxes.forEach(checkbox => { + checkbox.checked = select; + const fileId = checkbox.dataset.id; + if (select) { + this.selectedUploadFiles.add(fileId); + } else { + this.selectedUploadFiles.delete(fileId); + } + }); + this.updateUploadSelectionDisplay(); + } + + toggleUploadFolder(itemId) { + const toggleButton = document.querySelector(`#upload-files-tree .tree-item[data-id="${itemId}"] .tree-toggle`); + const childrenDiv = document.getElementById(`upload-children-${itemId}`); + + if (toggleButton && childrenDiv) { + const isExpanded = toggleButton.classList.contains('expanded'); + + if (isExpanded) { + toggleButton.classList.remove('expanded'); + toggleButton.classList.add('collapsed'); + childrenDiv.style.display = 'none'; + } else { + toggleButton.classList.remove('collapsed'); + toggleButton.classList.add('expanded'); + childrenDiv.style.display = 'block'; + } + } + } + + expandAllUploadFolders() { + const toggles = document.querySelectorAll('#upload-files-tree .tree-toggle'); + toggles.forEach(toggle => { + if (!toggle.classList.contains('leaf')) { + const treeItem = toggle.closest('.tree-item'); + const itemId = treeItem.dataset.id; + const childrenContainer = document.getElementById(`upload-children-${itemId}`); + if (childrenContainer) { + childrenContainer.style.display = 'block'; + toggle.classList.remove('collapsed'); + toggle.classList.add('expanded'); + } + } + }); + } + + collapseAllUploadFolders() { + const toggles = document.querySelectorAll('#upload-files-tree .tree-toggle'); + toggles.forEach(toggle => { + if (!toggle.classList.contains('leaf')) { + const treeItem = toggle.closest('.tree-item'); + const itemId = treeItem.dataset.id; + const childrenContainer = document.getElementById(`upload-children-${itemId}`); + if (childrenContainer) { + childrenContainer.style.display = 'none'; + toggle.classList.remove('expanded'); + toggle.classList.add('collapsed'); + } + } + }); + } + + collapseAllUploadFolders() { + const toggles = document.querySelectorAll('#upload-files-tree .tree-toggle'); + toggles.forEach(toggle => { + const folderElement = toggle.closest('.tree-item'); + const childrenContainer = folderElement.nextElementSibling; + if (childrenContainer && childrenContainer.classList.contains('tree-children')) { + childrenContainer.style.display = 'none'; + toggle.textContent = '▶'; + } + }); + } + + formatFileSize(bytes) { + if (!bytes) return ''; + const sizes = ['B', 'KB', 'MB', 'GB', 'TB']; + const i = Math.floor(Math.log(bytes) / Math.log(1024)); + return (bytes / Math.pow(1024, i)).toFixed(1) + ' ' + sizes[i]; + } + + async handleBulkUpload() { + const parentId = document.getElementById('bulk-parent-id').value.trim(); + const preserveStructure = document.getElementById('bulk-preserve-structure').checked; + + if (!parentId) { + this.logMessage('Parent ID is required for bulk upload', true); + return; + } + + if (this.selectedUploadFiles.size === 0) { + this.logMessage('Please select files to upload', true); + return; + } + + try { + // Get selected file data + const selectedFileData = this.uploadFileItems.filter(file => + this.selectedUploadFiles.has(`file_${file.path}`) + ); + + const result = await window.electronAPI.bulkUpload({ + parent_id: parentId, + files: selectedFileData, + preserve_folder_structure: preserveStructure + }); + + if (result.success) { + this.logMessage(`Bulk upload initiated for ${selectedFileData.length} files`, false); + } else { + throw new Error(result.error); + } + } catch (error) { + this.logMessage(`Bulk upload error: ${error.message}`, true);} + } + + setOperationInProgress(operation, message) { + const progressText = document.getElementById(`${operation}-progress-text`); + const progressBar = document.getElementById(`${operation}-progress`); + const button = document.getElementById(`${operation}-btn`); + + if (progressText) progressText.textContent = message; + if (progressBar) { + progressBar.style.width = '0%'; + progressBar.classList.remove('error'); // Remove any error styling + } + if (button) { + // Button state management removed + // Add visual indicator that operation is in progress + if (!button.innerHTML.includes('fa-spinner')) { + const originalText = button.innerHTML; + button.dataset.originalText = originalText; + button.innerHTML = ' Processing...'; + } + } + + this.setStatus(message); + } + + updateProgress(operation, progress, message) { + const progressText = document.getElementById(`${operation}-progress-text`); + const progressBar = document.getElementById(`${operation}-progress`); + + if (progressText) progressText.textContent = message; + if (progressBar) progressBar.style.width = `${progress}%`; + + this.setStatus(`${operation}: ${progress}%`); + } + + setOperationComplete(operation, success) { + const progressText = document.getElementById(`${operation}-progress-text`); + const progressBar = document.getElementById(`${operation}-progress`); + const button = document.getElementById(`${operation}-btn`); + + if (progressText) { + progressText.textContent = success ? 'Operation completed' : 'Operation failed'; + } + if (progressBar) { + progressBar.style.width = success ? '100%' : '0%'; + if (success) { + progressBar.classList.remove('error'); + } else { + progressBar.classList.add('error'); + } + } + if (button) { + // Restore original button text if it was saved + if (button.dataset.originalText) { + button.innerHTML = button.dataset.originalText; + delete button.dataset.originalText; + } + // Don't just enable the button - check if it should be enabled based on current form state + } + + this.setStatus(success ? 'Operation completed' : 'Operation failed'); + } + + updateButtonStateForOperation(operation) { + switch (operation) { + case 'upload': + this.updateUploadButtonState(); + break; + case 'download': + this.updateDownloadButtonState(); + break; + case 'bulk-upload': + this.updateBulkUploadButtonState(); + break; + case 'bulk-download': + this.updateBulkDownloadButtonState(); + break; + default: + // For other operations, just enable the button + const button = document.getElementById(`${operation}-btn`); + if (button) { + // Button state management removed - no action needed + } + break; + } + } + + validateUploadForm() { + const filePathEl = document.getElementById('upload-file'); + const modeEl = document.querySelector('input[name="uploadMode"]:checked'); + const parentIdEl = document.getElementById('parent-id'); + const entityIdEl = document.getElementById('entity-id'); + + if (!filePathEl || !parentIdEl || !entityIdEl) return false; + + const filePath = filePathEl.value.trim(); + const mode = modeEl?.value; + const parentId = parentIdEl.value.trim(); + const entityId = entityIdEl.value.trim(); + + if (!filePath) return false; + if (mode === 'new' && !parentId) return false; + if (mode === 'update' && !entityId) return false; + + return true; + } + + validateDownloadForm() { + const synapseIdEl = document.getElementById('download-id'); + const downloadPathEl = document.getElementById('download-location'); + + if (!synapseIdEl || !downloadPathEl) return false; + + const synapseId = synapseIdEl.value.trim(); + const downloadPath = downloadPathEl.value.trim(); + + return synapseId && downloadPath; + } + + updateUploadButtonState() { + const button = document.getElementById('upload-btn'); + if (button) { + // Only update state if not currently processing (no spinner) + const isProcessing = button.innerHTML.includes('fa-spinner') || button.disabled && button.innerHTML.includes('Processing'); + if (!isProcessing) { + // Button state management removed + } + } + } + + updateDownloadButtonState() { + const button = document.getElementById('download-btn'); + if (button) { + // Only update state if not currently processing (no spinner) + const isProcessing = button.innerHTML.includes('fa-spinner') || button.disabled && button.innerHTML.includes('Processing'); + if (!isProcessing) { + // Button state management removed + } + } + } + + updateBulkUploadButtonState() { + const button = document.getElementById('bulk-upload-btn'); + const parentIdEl = document.getElementById('bulk-parent-id'); + + if (button && parentIdEl) { + // Only update state if not currently processing + const isProcessing = button.innerHTML.includes('fa-spinner') || button.disabled && button.innerHTML.includes('Processing'); + if (!isProcessing) { + const parentId = parentIdEl.value.trim(); + const hasSelectedFiles = this.selectedUploadFiles && this.selectedUploadFiles.size > 0; + // Button state management removed + } + } + } + + updateBulkDownloadButtonState() { + const button = document.getElementById('bulk-download-btn'); + const downloadPathEl = document.getElementById('bulk-download-location'); + + if (button && downloadPathEl) { + // Only update state if not currently processing + const isProcessing = button.innerHTML.includes('fa-spinner') || button.disabled && button.innerHTML.includes('Processing'); + if (!isProcessing) { + const downloadPath = downloadPathEl.value.trim(); + const hasSelectedItems = this.selectedItems && this.selectedItems.size > 0; + // Button state management removed + } + } + } + + handleOperationComplete(operation, success, data) { + console.log(`Operation complete: ${operation}, success: ${success}`, data); + + if (success) { + this.logMessage(`${operation} completed successfully`, false); + if (data && data.message) { + this.logMessage(data.message, false); + } + } else { + this.logMessage(`${operation} failed`, true); + if (data && data.error) { + this.logMessage(data.error, true); + } + } + } + + logMessage(message, isError = false) { + const outputLog = document.getElementById('output-log'); + const timestamp = new Date().toLocaleTimeString(); + const logClass = isError ? 'log-error' : 'log-success'; + const icon = isError ? '❌' : '✅'; + + const logEntry = document.createElement('div'); + logEntry.className = `log-entry ${logClass}`; + logEntry.textContent = `[${timestamp}] ${icon} ${message}`; + + outputLog.appendChild(logEntry); + this.updateLogCount(); + this.autoScrollIfEnabled(); + } + + logMessageAdvanced(logMessage) { + const outputLog = document.getElementById('output-log'); + const timestamp = logMessage.timestamp ? + new Date(logMessage.timestamp * 1000).toLocaleTimeString() : + new Date().toLocaleTimeString(); + + // Determine icon based on level + const icons = { + 'error': '❌', + 'critical': '🚨', + 'warning': '⚠️', + 'warn': '⚠️', + 'info': 'ℹ️', + 'debug': '🔍', + 'success': '✅' + }; + + const icon = icons[logMessage.level] || 'ℹ️'; + const logClass = `log-${logMessage.level || 'info'}`; + + const logEntry = document.createElement('div'); + logEntry.className = `log-entry ${logClass}`; + + // Create structured log entry + let logContent = ''; + logContent += `[${timestamp}]`; + + if (logMessage.operation) { + logContent += `[${logMessage.operation}]`; + } + + if (logMessage.source && logMessage.source !== 'synapse-backend') { + logContent += `[${logMessage.source}]`; + } + + logContent += ` ${icon} ${this.escapeHtml(logMessage.message)}`; + + logEntry.innerHTML = logContent; + outputLog.appendChild(logEntry); + + this.updateLogCount(); + + // Always attempt auto-scroll for real-time updates + this.autoScrollIfEnabled(); + } + + escapeHtml(text) { + const div = document.createElement('div'); + div.textContent = text; + return div.innerHTML; + } + + updateLogCount() { + const outputLog = document.getElementById('output-log'); + const count = outputLog.children.length; + const logCountElement = document.getElementById('log-count'); + if (logCountElement) { + logCountElement.textContent = `${count} message${count !== 1 ? 's' : ''}`; + } + } + + autoScrollIfEnabled() { + if (!this.isAutoScrollEnabled()) { + return; + } + + const now = Date.now(); + + // Throttle scroll operations to prevent excessive scrolling + if (now - this.lastScrollTime < this.scrollThrottleDelay) { + if (!this.pendingScroll) { + this.pendingScroll = true; + setTimeout(() => { + this.pendingScroll = false; + if (this.isAutoScrollEnabled()) { + this.performScroll(); + } + }, this.scrollThrottleDelay); + } + return; + } + + this.performScroll(); + } + + performScroll() { + this.lastScrollTime = Date.now(); + + // Use requestAnimationFrame to ensure DOM has updated before scrolling + requestAnimationFrame(() => { + this.scrollToBottom(); + }); + } + + isAutoScrollEnabled() { + return this.autoScrollEnabled !== false; // Default to true + } + + scrollToBottom() { + const outputLog = document.getElementById('output-log'); + if (!outputLog) return; + + // For real-time scrolling, we want immediate results, so use instant scroll + // but also ensure it gets to the very bottom + const targetScrollTop = outputLog.scrollHeight - outputLog.clientHeight; + + // Set scroll position immediately + outputLog.scrollTop = targetScrollTop; + + // Double-check after a short delay to handle any DOM updates + setTimeout(() => { + const newTargetScrollTop = outputLog.scrollHeight - outputLog.clientHeight; + if (outputLog.scrollTop < newTargetScrollTop - 5) { // 5px tolerance + outputLog.scrollTop = newTargetScrollTop; + } + }, 10); + } + + toggleAutoScroll() { + this.autoScrollEnabled = !this.isAutoScrollEnabled(); + this.updateAutoScrollUI(); + } + + updateAutoScrollUI() { + const toggleBtn = document.getElementById('auto-scroll-toggle'); + const statusSpan = document.getElementById('auto-scroll-status'); + + if (this.isAutoScrollEnabled()) { + toggleBtn.classList.add('auto-scroll-enabled'); + toggleBtn.classList.remove('auto-scroll-disabled'); + statusSpan.textContent = 'Auto-scroll: ON'; + statusSpan.className = 'auto-scroll-enabled'; + } else { + toggleBtn.classList.remove('auto-scroll-enabled'); + toggleBtn.classList.add('auto-scroll-disabled'); + statusSpan.textContent = 'Auto-scroll: OFF'; + statusSpan.className = 'auto-scroll-disabled'; + } + } + + handleScrollCommand(message) { + switch (message.action) { + case 'scroll_to_bottom': + this.scrollToBottom(); + break; + default: + console.log('Unknown scroll command:', message.action); + } + } + + clearOutput() { + document.getElementById('output-log').innerHTML = ''; + this.updateLogCount(); + + // Reset scroll state + this.pendingScroll = false; + this.lastScrollTime = 0; + } + + handleManualScroll(event) { + // Manual scrolling no longer affects auto-scroll state + // Auto-scroll will continue to work regardless of manual scrolling + // Only the explicit toggle button can disable auto-scroll + } + + setStatus(message) { + document.getElementById('status-message').textContent = message; + } + + showStatus(elementId, message, type) { + const element = document.getElementById(elementId); + element.textContent = message; + element.className = `status-message ${type}`; + element.style.display = 'block'; + + // Auto-hide after 5 seconds + setTimeout(() => { + element.style.display = 'none'; + }, 5000); + } +} + +// Initialize the application when the DOM is loaded +document.addEventListener('DOMContentLoaded', () => { + window.synapseApp = new SynapseDesktopClient(); +}); diff --git a/synapse-electron/src/index.html b/synapse-electron/src/index.html new file mode 100644 index 000000000..eb4652b44 --- /dev/null +++ b/synapse-electron/src/index.html @@ -0,0 +1,404 @@ + + + + + + Synapse Desktop Client + + + + + + + + + + + + +
+
+
+ +

Synapse Desktop Client

+
+
+
+ +
+ + + + + +
+
+ + + + diff --git a/synapse-electron/src/styles.css b/synapse-electron/src/styles.css new file mode 100644 index 000000000..da601b7aa --- /dev/null +++ b/synapse-electron/src/styles.css @@ -0,0 +1,1309 @@ +/* Modern Synapse Desktop Client Styles */ +:root { + --primary-color: #1f4e79; + --primary-hover: #164066; + --secondary-color: #6c757d; + --success-color: #28a745; + --danger-color: #dc3545; + --warning-color: #ffc107; + --info-color: #17a2b8; + --light-color: #f8f9fa; + --dark-color: #343a40; + --border-color: #dee2e6; + --background-color: #ffffff; + --text-color: #212529; + --text-muted: #6c757d; + --shadow: 0 2px 4px rgba(0,0,0,0.1); + --shadow-lg: 0 4px 6px rgba(0,0,0,0.1); + --border-radius: 8px; + --border-radius-sm: 4px; + --transition: all 0.3s ease; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: var(--text-color); + background-color: var(--light-color); + overflow: hidden; +} + +#app { + width: 100%; + height: 100vh; + display: block; +} + +.app-header { + background: linear-gradient(135deg, var(--primary-color), var(--primary-hover)); + color: white; + padding: 1rem; + box-shadow: var(--shadow); + position: relative; + z-index: 1000; +} + +.header-content { + display: flex; + align-items: center; + justify-content: center; + position: relative; +} + +.header-icon { + font-size: 2rem; + margin-right: 1rem; +} + +.app-header h1 { + font-size: 1.5rem; + font-weight: 600; +} + +.app-version { + position: absolute; + right: 0; + font-size: 0.875rem; + opacity: 0.8; +} + +.main-container { + height: calc(100vh - 80px); + display: flex; + flex-direction: column; +} + +/* Login Styles */ +.login-container { + display: flex; + align-items: center; + justify-content: center; + height: 100%; + padding: 2rem; + background: linear-gradient(135deg, #f8f9fa, #e9ecef); +} + +.login-card { + background: var(--background-color); + padding: 2rem; + border-radius: var(--border-radius); + box-shadow: var(--shadow-lg); + min-width: 400px; + max-width: 500px; +} + +.login-card h2 { + color: var(--primary-color); + margin-bottom: 1.5rem; + text-align: center; + font-weight: 600; +} + +.login-card h2 i { + margin-right: 0.5rem; +} + +.login-modes { + margin-bottom: 1.5rem; +} + +.radio-option { + display: flex; + align-items: center; + margin-bottom: 0.75rem; + cursor: pointer; + user-select: none; +} + +.radio-option input[type="radio"] { + display: none; +} + +.radio-custom { + width: 20px; + height: 20px; + border: 2px solid var(--border-color); + border-radius: 50%; + margin-right: 0.75rem; + position: relative; + transition: var(--transition); +} + +.radio-option input[type="radio"]:checked + .radio-custom { + border-color: var(--primary-color); +} + +.radio-option input[type="radio"]:checked + .radio-custom::after { + content: ''; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 10px; + height: 10px; + background-color: var(--primary-color); + border-radius: 50%; +} + +.login-form { + display: none; +} + +.login-form.active { + display: block; +} + +.form-group { + margin-bottom: 1rem; +} + +.form-group label { + display: block; + margin-bottom: 0.5rem; + font-weight: 500; + color: var(--dark-color); +} + +.form-group label.checkbox-label { + display: flex; + align-items: center; + margin-bottom: 0.75rem; + margin-top: 0.25rem; + font-weight: 400; + cursor: pointer; +} + +.form-group label i { + margin-right: 0.5rem; + color: var(--primary-color); +} + +.form-group input, +.form-group select { + width: 100%; + padding: 0.75rem; + border: 1px solid var(--border-color); + border-radius: var(--border-radius-sm); + font-size: 14px; + transition: var(--transition); +} + +.form-group input:focus, +.form-group select:focus { + outline: none; + border-color: var(--primary-color); + box-shadow: 0 0 0 2px rgba(31, 78, 121, 0.1); +} + +.profile-info { + font-size: 0.875rem; + color: var(--info-color); + margin-top: 0.5rem; +} + +/* Button Styles */ +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0.75rem 1.5rem; + border: none; + border-radius: var(--border-radius-sm); + font-size: 14px; + font-weight: 500; + text-decoration: none; + cursor: pointer; + transition: var(--transition); + min-height: 44px; +} + +.btn i { + margin-right: 0.5rem; +} + +.btn-primary { + background-color: var(--primary-color); + color: white; +} + +.btn-primary:hover:not(:disabled) { + background-color: var(--primary-hover); +} + +.btn-secondary { + background-color: var(--secondary-color); + color: white; +} + +.btn-secondary:hover:not(:disabled) { + background-color: #5a6268; +} + +.btn-small { + padding: 0.5rem 1rem; + font-size: 0.875rem; + min-height: 36px; +} + +.btn:disabled { + opacity: 0.6; + cursor: not-allowed; +} + +#login-btn { + width: 100%; + margin-top: 1rem; +} + +/* Status Messages */ +.status-message { + text-align: center; + margin-top: 1rem; + padding: 0.75rem; + border-radius: var(--border-radius-sm); + display: none; +} + +.status-message.success { + background-color: #d4edda; + color: #155724; + border: 1px solid #c3e6cb; + display: block; +} + +.status-message.error { + background-color: #f8d7da; + color: #721c24; + border: 1px solid #f5c6cb; + display: block; +} + +.status-message.info { + background-color: #d1ecf1; + color: #0c5460; + border: 1px solid #bee5eb; + display: block; +} + +/* Main Application */ +.main-app { + height: 100%; + display: flex; + flex-direction: column; +} + +.user-info-bar { + background-color: var(--background-color); + border-bottom: 1px solid var(--border-color); + padding: 1rem; + display: flex; + justify-content: space-between; + align-items: center; +} + +.user-details { + display: flex; + align-items: center; + color: var(--dark-color); + font-weight: 500; +} + +.user-details i { + margin-right: 0.5rem; + color: var(--primary-color); + font-size: 1.2rem; +} + +/* Tab Navigation */ +.tab-container { + flex: 1; + display: flex; + flex-direction: column; + height: calc(100% - 60px); +} + +.tab-navigation { + background-color: var(--background-color); + border-bottom: 1px solid var(--border-color); + display: flex; + padding: 0 1rem; +} + +.tab-btn { + padding: 1rem 1.5rem; + border: none; + background: none; + cursor: pointer; + font-size: 14px; + font-weight: 500; + color: var(--text-muted); + border-bottom: 3px solid transparent; + transition: var(--transition); +} + +.tab-btn:hover { + color: var(--primary-color); + background-color: var(--light-color); +} + +.tab-btn.active { + color: var(--primary-color); + border-bottom-color: var(--primary-color); +} + +.tab-btn i { + margin-right: 0.5rem; +} + +.tab-content { + flex: 1; + overflow-y: auto; +} + +.tab-panel { + display: none; + height: 100%; + padding: 1.5rem; +} + +.tab-panel.active { + display: block; +} + +/* Form Sections */ +.form-section { + background-color: var(--background-color); + border-radius: var(--border-radius); + padding: 1.5rem; + box-shadow: var(--shadow); + margin-bottom: 1rem; +} + +.form-section h3 { + color: var(--primary-color); + margin-bottom: 1.5rem; + font-size: 1.25rem; + font-weight: 600; +} + +.form-section h3 i { + margin-right: 0.5rem; +} + +.form-row { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 1rem; + margin-bottom: 1rem; +} + +.form-group { + margin-bottom: 1rem; +} + +.file-input-group { + display: flex; + gap: 0.5rem; +} + +.file-input-group input { + flex: 1; +} + +/* Upload Mode Section */ +.upload-mode-section { + margin: 1.5rem 0; + padding: 1rem; + background-color: var(--light-color); + border-radius: var(--border-radius-sm); +} + +.upload-mode-section h4 { + margin-bottom: 1rem; + color: var(--dark-color); +} + +.radio-group { + display: flex; + gap: 1.5rem; +} + +/* Checkbox Styles */ +.checkbox-label { + display: flex; + align-items: center; + cursor: pointer; + user-select: none; + margin-top: 0.5rem; + margin-bottom: 0.5rem; + line-height: 1.4; + min-height: 24px; +} + +.checkbox-label input[type="checkbox"] { + display: none; +} + +.checkbox-custom { + width: 18px; + height: 18px; + border: 2px solid var(--border-color); + border-radius: var(--border-radius-sm); + margin-right: 0.6rem; + position: relative; + transition: var(--transition); + flex-shrink: 0; + background-color: var(--background-color); +} + +.checkbox-custom:hover { + border-color: var(--primary-color); +} + +.checkbox-label:focus-within .checkbox-custom { + border-color: var(--primary-color); + box-shadow: 0 0 0 2px rgba(31, 78, 121, 0.1); +} + +.checkbox-label input[type="checkbox"]:checked + .checkbox-custom { + border-color: var(--primary-color); + background-color: var(--primary-color); +} + +.checkbox-label input[type="checkbox"]:checked + .checkbox-custom::after { + content: '\f00c'; + font-family: 'Font Awesome 6 Free'; + font-weight: 900; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: white; + font-size: 10px; + line-height: 1; +} + +/* Standard HTML checkboxes for tree items */ +input[type="checkbox"] { + width: 16px; + height: 16px; + cursor: pointer; + margin: 0; + padding: 0; +} + +input[type="checkbox"]:focus { + outline: 2px solid var(--primary-color); + outline-offset: 2px; +} + +/* Progress Styles */ +.progress-section { + margin-top: 1.5rem; +} + +.progress-text { + margin-bottom: 0.5rem; + font-size: 0.875rem; + color: var(--text-muted); + min-height: 1.25rem; +} + +.progress-bar { + height: 8px; + background-color: var(--border-color); + border-radius: 4px; + overflow: hidden; +} + +.progress-fill { + height: 100%; + background-color: var(--primary-color); + width: 0%; + transition: width 0.3s ease; +} + +/* Container Contents */ +.container-contents { + margin-top: 1.5rem; + padding: 1rem; + background-color: var(--light-color); + border-radius: var(--border-radius-sm); +} + +.container-contents h4 { + margin-bottom: 1rem; + color: var(--dark-color); +} + +.selection-controls { + margin-bottom: 1rem; + display: flex; + gap: 0.5rem; +} + +.items-tree { + max-height: 300px; + overflow-y: auto; + border: 1px solid var(--border-color); + border-radius: var(--border-radius-sm); + background-color: var(--background-color); + padding: 0.5rem; + margin-bottom: 1rem; +} + +/* Tree View Styles */ +.items-tree { + max-height: 400px; + overflow-y: auto; + border: 1px solid var(--border-color); + border-radius: var(--border-radius-sm); + background-color: var(--background-color); + margin-bottom: 1rem; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; +} + +/* JSTree customizations */ +.items-tree .jstree-default .jstree-node { + min-height: 28px; + line-height: 28px; + margin-left: 0; +} + +.items-tree .jstree-default .jstree-anchor { + padding: 2px 6px; + font-size: 14px; + color: var(--text-color); +} + +.items-tree .jstree-default .jstree-anchor:hover { + background-color: var(--light-color); + color: var(--text-color); +} + +.items-tree .jstree-default .jstree-clicked { + background-color: rgba(31, 78, 121, 0.1); + color: var(--text-color); +} + +.items-tree .jstree-default .jstree-checkbox { + margin-right: 8px; + width: 16px !important; + height: 16px !important; + background-size: 16px 16px !important; +} + +/* Folder and file icons */ +.items-tree .jstree-default .jstree-folder .jstree-icon { + color: #4a90e2; +} + +.items-tree .jstree-default .jstree-file .jstree-icon { + color: #666; +} + +/* Override default JSTree theme colors */ +.items-tree .jstree-default .jstree-node { + background: transparent; +} + +.items-tree .jstree-default .jstree-anchor.jstree-hovered { + background-color: var(--light-color); + box-shadow: none; +} + +/* Fallback styles for custom tree implementation */ +.items-tree .tree-item { + padding: 0.5rem; + border-bottom: 1px solid var(--border-color); + cursor: pointer; + display: flex; + align-items: center; + transition: var(--transition); + user-select: none; + position: relative; + min-height: 40px; /* Ensure adequate height */ + height: auto; + width: 100%; + overflow: visible; /* Allow content to be visible */ + box-sizing: border-box; + flex-wrap: nowrap; /* Prevent wrapping to next line */ +} + +.items-tree .tree-item:hover { + background-color: var(--light-color); +} + +.items-tree .tree-item.selected { + background-color: rgba(31, 78, 121, 0.1); +} + +/* Hierarchical indentation */ +.items-tree .tree-item.level-0 { padding-left: 0.5rem; } +.items-tree .tree-item.level-1 { padding-left: 1.5rem; } +.items-tree .tree-item.level-2 { padding-left: 2.5rem; } +.items-tree .tree-item.level-3 { padding-left: 3.5rem; } +.items-tree .tree-item.level-4 { padding-left: 4.5rem; } +.items-tree .tree-item.level-5 { padding-left: 5.5rem; } +.items-tree .tree-item.level-6 { padding-left: 6.5rem; } + +/* Tree expand/collapse toggle */ +.items-tree .tree-toggle { + width: 16px; + height: 16px; + margin-right: 0.25rem; + cursor: pointer; + border: none; + background: none; + font-size: 12px; + display: flex; + align-items: center; + justify-content: center; + color: var(--text-muted); + transition: var(--transition); + position: relative; +} + +/* Override JSTree styles that might interfere */ +.items-tree .tree-toggle::after { + display: none !important; +} + +.items-tree .tree-toggle:hover { + background-color: rgba(0, 0, 0, 0.1); + border-radius: 2px; +} + +.items-tree .tree-toggle.expanded::before { + content: '▼'; +} + +.items-tree .tree-toggle.collapsed::before { + content: '▶'; +} + +.items-tree .tree-toggle.leaf { + visibility: hidden; +} + +.items-tree .tree-toggle.leaf::before { + display: none; +} + +.items-tree .tree-item input[type="checkbox"] { + margin-right: 0.6rem; + margin-left: 0.25rem; + width: 16px; + height: 16px; + flex-shrink: 0; + cursor: pointer; +} + +.items-tree .tree-item-icon { + margin-right: 0.5rem; + color: var(--text-muted); + width: 16px; + text-align: center; +} + +.items-tree .tree-item-icon.folder { + color: #4a90e2; +} + +.items-tree .tree-item-icon.file { + color: #666; +} + +.items-tree .tree-item-content { + display: table; + width: 100%; + table-layout: fixed; + min-width: 0; +} + +.items-tree .tree-item-content > * { + display: table-cell; + vertical-align: middle; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + padding: 0 0.25rem; +} + +.items-tree .tree-item input[type="checkbox"] { + width: 16px; + height: 16px; + margin-right: 0.6rem; + cursor: pointer; + flex-shrink: 0; +} + +.items-tree .tree-item-icon { + width: 30px; + color: var(--text-muted); + text-align: center; +} + +.items-tree .tree-item-icon.folder { + color: #4a90e2; +} + +.items-tree .tree-item-icon.file { + color: #666; +} + +.items-tree .tree-item-name { + width: 40%; +} + +.items-tree .tree-item-type { + width: 15%; + text-align: left; +} + +.items-tree .tree-item-size { + width: 15%; + text-align: right; +} + +.items-tree .tree-item-path { + width: 30%; + font-style: italic; + text-align: left; + font-size: 0.875rem; + color: var(--text-muted); +} + +/* Upload Tree Compact Styling */ +.items-tree .upload-tree-item { + padding: 0.25rem 0.5rem; +} + +.items-tree .upload-tree-item .tree-item-content.upload-compact { + display: flex; + align-items: center; + width: 100%; + table-layout: auto; + gap: 0.5rem; + margin: 0; + padding: 0; +} + +.items-tree .upload-tree-item .tree-item-content.upload-compact > * { + display: initial; + vertical-align: middle; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + padding: 0; + margin: 0; +} + +.items-tree .upload-tree-item .tree-item-content.upload-compact .item-checkbox { + flex-shrink: 0; + width: 16px; + height: 16px; + margin-right: 0.5rem; + cursor: pointer; +} + +.items-tree .upload-tree-item .tree-item-content.upload-compact .tree-item-icon { + flex-shrink: 0; + width: auto; + margin-right: 0.25rem; + font-size: 0.875rem; +} + +.items-tree .upload-tree-item .tree-item-content.upload-compact .upload-item-info { + flex-grow: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-size: 0.875rem; +} + +.items-tree .upload-tree-item .tree-item-content.upload-compact .item-meta { + color: var(--text-muted); + font-style: italic; + font-size: 0.8rem; + font-weight: normal; +} + +/* Override level padding for upload tree to be more compact */ +.items-tree .upload-tree-item.level-0 { padding-left: 0.5rem; } +.items-tree .upload-tree-item.level-1 { padding-left: 1.25rem; } +.items-tree .upload-tree-item.level-2 { padding-left: 2rem; } +.items-tree .upload-tree-item.level-3 { padding-left: 2.75rem; } +.items-tree .upload-tree-item.level-4 { padding-left: 3.5rem; } +.items-tree .upload-tree-item.level-5 { padding-left: 4.25rem; } +.items-tree .upload-tree-item.level-6 { padding-left: 5rem; } + +/* Additional JSTree interference prevention */ +.items-tree .tree-item::before, +.items-tree .tree-item::after { + display: none !important; +} + +.items-tree .tree-item:not(.tree-toggle)::before, +.items-tree .tree-item:not(.tree-toggle)::after { + display: none !important; +} + +/* Ensure only our toggle arrows show */ +.items-tree .tree-item > *:not(.tree-toggle)::before, +.items-tree .tree-item > *:not(.tree-toggle)::after { + display: none !important; +} + +/* Hidden children */ +.tree-item.collapsed + .tree-children { + display: none; +} + +.tree-children { + display: block; +} + +/* Selection Controls */ +.selection-controls { + margin-bottom: 1rem; + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + padding: 0.75rem; + background-color: var(--light-color); + border-radius: var(--border-radius-sm); + border: 1px solid var(--border-color); +} + +.selection-controls .btn { + font-size: 0.875rem; + padding: 0.375rem 0.75rem; +} + +.selection-info { + margin: 0.5rem 0; + font-size: 0.875rem; + color: var(--text-muted); + font-weight: 500; +} + +.help-text { + background-color: rgba(31, 78, 121, 0.1); + border: 1px solid rgba(31, 78, 121, 0.2); + border-radius: var(--border-radius-sm); + padding: 0.75rem; + margin-bottom: 1rem; + font-size: 0.875rem; + color: var(--text-color); +} + +.help-text i { + color: var(--primary-color); + margin-right: 0.5rem; +} + +/* Context Menu */ +.tree-context-menu { + background: white; + border: 1px solid var(--border-color); + border-radius: var(--border-radius-sm); + box-shadow: 0 2px 10px rgba(0,0,0,0.1); + font-size: 0.875rem; + overflow: hidden; +} + +.context-menu-item { + padding: 0.5rem 0.75rem; + cursor: pointer; + transition: var(--transition); +} + +.context-menu-item:hover { + background-color: var(--light-color); +} + +.context-menu-separator { + height: 1px; + background-color: var(--border-color); + margin: 0.25rem 0; +} + +.files-list { + max-height: 200px; + overflow-y: auto; + border: 1px solid var(--border-color); + border-radius: var(--border-radius-sm); + background-color: var(--background-color); + margin-bottom: 1rem; +} + +.file-item { + padding: 0.75rem; + border-bottom: 1px solid var(--border-color); + display: flex; + align-items: center; +} + +.file-item:last-child { + border-bottom: none; +} + +.file-item-icon { + margin-right: 0.75rem; + color: var(--text-muted); +} + +.file-item-info { + flex: 1; +} + +.file-item-name { + font-weight: 500; + margin-bottom: 0.25rem; +} + +.file-item-path { + font-size: 0.875rem; + color: var(--text-muted); +} + +/* Output Section */ +.output-section { + background-color: var(--background-color); + border-top: 1px solid var(--border-color); + height: 300px; /* Increased height */ + display: flex; + flex-direction: column; + min-height: 250px; /* Ensure minimum height */ + position: sticky; /* Keep in view when possible */ + bottom: 0; + z-index: 10; /* Ensure it stays on top */ +} + +/* Ensure the main container can scroll to accommodate the output section */ +.main-container { + height: calc(100vh - 80px); /* Account for header */ + overflow-y: auto; + display: flex; + flex-direction: column; +} + +/* Make sure the content area is flexible */ +.app-content { + flex: 1; + overflow-y: auto; +} + +.output-header { + padding: 1rem; + border-bottom: 1px solid var(--border-color); + display: flex; + justify-content: space-between; + align-items: center; + flex-shrink: 0; /* Don't shrink */ + background-color: var(--background-color); +} + +.output-header h3 { + color: var(--dark-color); + font-size: 1rem; + font-weight: 600; + margin: 0; +} + +.output-header h3 i { + margin-right: 0.5rem; +} + +.output-controls { + display: flex; + gap: 0.5rem; + align-items: center; + flex-wrap: wrap; /* Allow wrapping on small screens */ +} + +.output-controls .btn { + padding: 0.25rem 0.5rem; + font-size: 0.75rem; + white-space: nowrap; +} + +.auto-scroll-enabled { + background-color: var(--success-color); + color: white; +} + +.auto-scroll-disabled { + background-color: var(--secondary-color); + color: var(--text-color); +} + +.output-log { + flex: 1; + padding: 1rem; + background-color: #1e1e1e; + color: #d4d4d4; + font-family: 'Consolas', 'Monaco', 'Courier New', monospace; + font-size: 0.875rem; + line-height: 1.4; + overflow-y: auto; + white-space: pre-wrap; + scroll-behavior: smooth; /* Smooth scrolling */ + word-wrap: break-word; /* Prevent long lines from causing horizontal scroll */ +} + +.output-log .log-entry { + margin-bottom: 0.25rem; + padding: 0.125rem 0; + border-left: 3px solid transparent; + padding-left: 0.5rem; + word-wrap: break-word; +} + +.output-log .log-error { + color: #f14c4c; + border-left-color: #f14c4c; + background-color: rgba(241, 76, 76, 0.1); +} + +.output-log .log-success { + color: #4fc3f7; + border-left-color: #4fc3f7; +} + +.output-log .log-warning { + color: #ffb74d; + border-left-color: #ffb74d; + background-color: rgba(255, 183, 77, 0.1); +} + +.output-log .log-info { + color: #d4d4d4; + border-left-color: #4fc3f7; +} + +.output-log .log-debug { + color: #9e9e9e; + border-left-color: #9e9e9e; + font-size: 0.8rem; +} + +.output-log .log-critical { + color: #ff5252; + border-left-color: #ff5252; + background-color: rgba(255, 82, 82, 0.2); + font-weight: bold; +} + +.output-log .log-timestamp { + color: #666; + font-size: 0.75rem; + margin-right: 0.5rem; +} + +.output-log .log-source { + color: #888; + font-size: 0.75rem; + margin-right: 0.5rem; + font-style: italic; +} + +.output-log .log-operation { + color: #4fc3f7; + font-size: 0.75rem; + margin-right: 0.5rem; + font-weight: bold; +} + +.output-status { + padding: 0.5rem 1rem; + border-top: 1px solid var(--border-color); + background-color: rgba(0, 0, 0, 0.1); + display: flex; + justify-content: space-between; + align-items: center; + font-size: 0.75rem; + color: var(--text-muted); + flex-shrink: 0; /* Don't shrink */ +} + +.output-status .auto-scroll-enabled { + color: var(--success-color); +} + +.output-status .auto-scroll-disabled { + color: var(--secondary-color); +} + +/* Responsive adjustments */ +@media (max-height: 600px) { + .output-section { + height: 200px; + min-height: 150px; + } +} + +@media (max-width: 768px) { + .output-controls { + gap: 0.25rem; + } + + .output-controls .btn { + padding: 0.2rem 0.4rem; + font-size: 0.7rem; + } + + .output-header { + padding: 0.75rem; + } +} + +/* Status Bar */ +.status-bar { + background-color: var(--background-color); + border-top: 1px solid var(--border-color); + padding: 0.5rem 1rem; + display: flex; + justify-content: space-between; + align-items: center; + font-size: 0.875rem; +} + +.status-right { + display: flex; + align-items: center; + gap: 1rem; +} + +.connection-status { + display: flex; + align-items: center; + gap: 0.5rem; +} + +.status-connected { + color: var(--success-color); +} + +.status-disconnected { + color: var(--danger-color); +} + +/* Responsive Design */ +@media (max-width: 768px) { + .form-row { + grid-template-columns: 1fr; + } + + .radio-group { + flex-direction: column; + gap: 0.75rem; + } + + .tab-navigation { + flex-wrap: wrap; + } + + .tab-btn { + padding: 0.75rem 1rem; + font-size: 0.875rem; + } +} + +/* Loading States */ +.loading { + position: relative; + overflow: hidden; +} + +.loading::after { + content: ''; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient( + 90deg, + transparent, + rgba(31, 78, 121, 0.1), + transparent + ); + animation: loading 1.5s infinite; +} + +@keyframes loading { + 0% { + left: -100%; + } + 100% { + left: 100%; + } +} + +/* Utility Classes */ +.hidden { + display: none !important; +} + +.text-center { + text-align: center; +} + +.text-muted { + color: var(--text-muted); +} + +.text-error { + color: var(--danger-color); +} + +.text-success { + color: var(--success-color); +} + +.mb-0 { margin-bottom: 0; } +.mb-1 { margin-bottom: 0.5rem; } +.mb-2 { margin-bottom: 1rem; } +.mb-3 { margin-bottom: 1.5rem; } + +.mt-0 { margin-top: 0; } +.mt-1 { margin-top: 0.5rem; } +.mt-2 { margin-top: 1rem; } +.mt-3 { margin-top: 1.5rem; } + +/* Responsive Improvements */ +@media (max-width: 768px) { + .checkbox-label { + margin-top: 0.75rem; + margin-bottom: 0.75rem; + min-height: 28px; + } + + .checkbox-custom { + width: 20px; + height: 20px; + margin-right: 0.75rem; + } + + .checkbox-label input[type="checkbox"]:checked + .checkbox-custom::after { + font-size: 11px; + } + + .items-tree .tree-item input[type="checkbox"] { + width: 18px; + height: 18px; + } + + .form-group label.checkbox-label { + margin-bottom: 1rem; + } +} diff --git a/synapse-electron/start.bat b/synapse-electron/start.bat new file mode 100644 index 000000000..194386205 --- /dev/null +++ b/synapse-electron/start.bat @@ -0,0 +1,65 @@ +@echo off +REM Synapse Desktop Client - Windows Startup Script + +echo Starting Synapse Desktop Client... +echo. + +REM Check if Node.js is installed +where node >nul 2>nul +if %ERRORLEVEL% NEQ 0 ( + echo ERROR: Node.js is not installed or not in PATH + echo Please install Node.js from https://nodejs.org/ + pause + exit /b 1 +) + +REM Check if Python is installed +where python >nul 2>nul +if %ERRORLEVEL% NEQ 0 ( + echo ERROR: Python is not installed or not in PATH + echo Please install Python from https://python.org/ + pause + exit /b 1 +) + +REM Change to the synapse-electron directory +cd /d %~dp0 + +REM Check if node_modules exists +if not exist "node_modules" ( + echo Installing Node.js dependencies... + npm install + if %ERRORLEVEL% NEQ 0 ( + echo ERROR: Failed to install Node.js dependencies + pause + exit /b 1 + ) +) + +REM Check if Python backend dependencies are installed +cd backend +if not exist "venv" ( + echo Creating Python virtual environment... + python -m venv venv + call venv\Scripts\activate + echo Installing Python dependencies... + pip install -r requirements.txt + cd .. + pip install -e . + cd backend +) else ( + call venv\Scripts\activate +) + +cd .. + +REM Start the application +echo. +echo Starting Synapse Desktop Client... +echo Backend will start on http://localhost:8000 +echo WebSocket will start on ws://localhost:8001 +echo. + +npm run dev + +pause diff --git a/synapse-electron/start.sh b/synapse-electron/start.sh new file mode 100644 index 000000000..fa25c316e --- /dev/null +++ b/synapse-electron/start.sh @@ -0,0 +1,101 @@ +#!/bin/bash +# Synapse Desktop Client - Unix Startup Script + +echo "Starting Synapse Desktop Client..." +echo + +# Check if Node.js is installed +if ! command -v node &> /dev/null; then + echo "ERROR: Node.js is not installed or not in PATH" + echo "Please install Node.js from https://nodejs.org/" + exit 1 +fi + +# Check if Python is installed +if ! command -v python3 &> /dev/null; then + if ! command -v python &> /dev/null; then + echo "ERROR: Python is not installed or not in PATH" + echo "Please install Python from https://python.org/" + exit 1 + fi + PYTHON_CMD="python" +else + PYTHON_CMD="python3" +fi + +# Change to the synapse-electron directory +cd "$(dirname "$0")" + +# Check if node_modules exists +if [ ! -d "node_modules" ]; then + echo "Installing Node.js dependencies..." + npm install + if [ $? -ne 0 ]; then + echo "ERROR: Failed to install Node.js dependencies" + exit 1 + fi +fi + +# Check if Python backend dependencies are installed +cd backend + +# uv pip install -r requirements.txt +cd .. +cd .. + +# Activate uv virtual environment and install electron dependencies +echo "Installing Python dependencies with uv..." +source .venv/bin/activate +uv pip install -e .[electron] + +cd synapse-electron +cd backend + +# if [ ! -d "venv" ]; then +# echo "Creating Python virtual environment..." +# $PYTHON_CMD -m venv venv +# source venv/bin/activate +# echo "Installing Python dependencies..." +# pip install -r requirements.txt +# cd .. +# pip install -e . +# cd backend +# else +# source venv/bin/activate +# fi + +cd .. + +# Start the application +echo +echo "Starting Synapse Desktop Client..." +echo "Backend will start on http://localhost:8000" +echo "WebSocket will start on ws://localhost:8001" +echo + +# Check if we're running in a headless environment (no DISPLAY set) +if [ -z "$DISPLAY" ]; then + echo "No display detected - starting virtual display for headless operation..." + + # Start Xvfb (X Virtual Framebuffer) in the background + export DISPLAY=:99 + Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & + XVFB_PID=$! + + # Give Xvfb a moment to start + sleep 2 + + echo "Virtual display started on DISPLAY=$DISPLAY" + + # Function to cleanup Xvfb on exit + cleanup() { + echo "Cleaning up virtual display..." + kill $XVFB_PID 2>/dev/null + exit + } + + # Set trap to cleanup on script exit + trap cleanup EXIT INT TERM +fi + +npm run dev diff --git a/synapsegui/models/synapse_client.py b/synapsegui/models/synapse_client.py index 49ac9bbe6..5bfc1c1d4 100644 --- a/synapsegui/models/synapse_client.py +++ b/synapsegui/models/synapse_client.py @@ -5,6 +5,7 @@ for handling all Synapse client operations, including authentication, file uploads/downloads, and bulk operations, separated from UI logic. """ +import asyncio import io import logging import os @@ -19,6 +20,9 @@ DESKTOP_CLIENT_VERSION = "0.1.0" +# Set up logger for this module +logger = logging.getLogger(__name__) + def _safe_stderr_redirect(new_stderr: Any) -> tuple[Any, Any]: """ @@ -63,15 +67,15 @@ class TQDMProgressCapture: def __init__( self, - progress_callback: Callable[[int, str], None], - detail_callback: Callable[[str], None], + progress_callback: Optional[Callable[[int, str], None]], + detail_callback: Optional[Callable[[str], None]], ) -> None: """ Initialize the TQDM progress capture. Args: - progress_callback: Function to call with progress updates (progress%, message) - detail_callback: Function to call with detailed progress messages + progress_callback: Function to call with progress updates (progress%, message) or None + detail_callback: Function to call with detailed progress messages or None """ self.progress_callback = progress_callback self.detail_callback = detail_callback @@ -97,8 +101,10 @@ def write(self, s: str) -> None: progress = int(match.group(1)) if progress != self.last_progress: self.last_progress = progress - self.progress_callback(progress, f"Progress: {progress}%") - self.detail_callback(progress_line) + if self.progress_callback: + self.progress_callback(progress, f"Progress: {progress}%") + if self.detail_callback: + self.detail_callback(progress_line) except Exception: pass @@ -136,7 +142,7 @@ async def login_manual(self, username: str, token: str) -> Dict[str, Any]: try: self.client = synapseclient.Synapse( skip_checks=True, - debug=False, + debug=True, user_agent=[f"synapsedesktopclient/{DESKTOP_CLIENT_VERSION}"], ) @@ -172,7 +178,7 @@ async def login_with_profile(self, profile_name: str) -> Dict[str, Any]: try: self.client = synapseclient.Synapse( skip_checks=True, - debug=False, + debug=True, user_agent=[f"synapsedesktopclient/{DESKTOP_CLIENT_VERSION}"], ) @@ -212,8 +218,8 @@ async def download_file( synapse_id: str, version: Optional[int], download_path: str, - progress_callback: Callable[[int, str], None], - detail_callback: Callable[[str], None], + progress_callback: Optional[Callable[[int, str], None]], + detail_callback: Optional[Callable[[str], None]], ) -> Dict[str, Any]: """ Download a file from Synapse. @@ -276,8 +282,8 @@ async def upload_file( parent_id: Optional[str], entity_id: Optional[str], name: Optional[str], - progress_callback: Callable[[int, str], None], - detail_callback: Callable[[str], None], + progress_callback: Optional[Callable[[int, str], None]], + detail_callback: Optional[Callable[[str], None]], ) -> Dict[str, Any]: """ Upload a file to Synapse. @@ -287,8 +293,8 @@ async def upload_file( parent_id: Parent entity ID for new files (required for new files) entity_id: Entity ID to update (for updating existing files) name: Name for the entity (optional, uses filename if not provided) - progress_callback: Function for progress updates (progress%, message) - detail_callback: Function for detailed progress messages + progress_callback: Function for progress updates (progress%, message) or None + detail_callback: Function for detailed progress messages or None Returns: Dictionary with 'success' boolean and either entity info or 'error' key @@ -397,6 +403,16 @@ async def enumerate_container( container=container, recursive=recursive ) + # Build hierarchical paths for all items + logger.info("DEBUG: Building hierarchical paths for downloaded items") + path_mapping = self._build_hierarchical_paths(items, container_id) + + # Update items with correct hierarchical paths + for item in items: + if item.synapse_id in path_mapping: + item.path = path_mapping[item.synapse_id] + logger.info(f"DEBUG: Set path for {item.name}: '{item.path}'") + logger.info( f"Successfully enumerated {len(items)} items from container {container_id}" ) @@ -408,6 +424,65 @@ async def enumerate_container( logger.error(f"Enumeration failed for container {container_id}: {str(e)}") return {"success": False, "error": str(e)} + def _build_hierarchical_paths(self, items: list, root_container_id: str) -> dict: + """ + Build hierarchical paths for items based on parent-child relationships. + + Args: + items: List of BulkItem objects + root_container_id: ID of the root container being enumerated + + Returns: + Dictionary mapping synapse_id to hierarchical path + """ + # Create a mapping of ID to item for quick lookups + id_to_item = {item.synapse_id: item for item in items} + + # Add the root container to avoid issues + id_to_item[root_container_id] = None + + # Function to recursively build path for an item + def get_item_path(item_id: str, visited: set = None) -> str: + if visited is None: + visited = set() + + if item_id in visited: + # Circular reference protection + return "" + + if item_id == root_container_id or item_id not in id_to_item: + return "" + + visited.add(item_id) + item = id_to_item[item_id] + + if item is None or item.parent_id is None or item.parent_id == root_container_id: + visited.remove(item_id) + return item.name if item else "" + + parent_path = get_item_path(item.parent_id, visited) + visited.remove(item_id) + + if parent_path: + return f"{parent_path}/{item.name}" + else: + return item.name + + # Build paths for all items + path_mapping = {} + for item in items: + if item.item_type.lower() == "file": + # For files, we want the directory path (excluding the filename) + parent_path = "" + if item.parent_id and item.parent_id != root_container_id: + parent_path = get_item_path(item.parent_id) + path_mapping[item.synapse_id] = parent_path + else: + # For folders, include the folder name in the path + path_mapping[item.synapse_id] = get_item_path(item.synapse_id) + + return path_mapping + def _convert_to_bulk_items(self, container: Any, recursive: bool) -> list: """ Convert container contents to BulkItem objects. @@ -425,6 +500,11 @@ def _convert_to_bulk_items(self, container: Any, recursive: bool) -> list: if hasattr(container, "files"): for file in container.files: + file_path = file.path if hasattr(file, "path") else None + # Log file path information for debugging + logger = logging.getLogger("synapseclient") + logger.info(f"DEBUG: Converting file {file.name} (ID: {file.id}) - path attribute: '{file_path}'") + items.append( BulkItem( synapse_id=file.id, @@ -432,12 +512,20 @@ def _convert_to_bulk_items(self, container: Any, recursive: bool) -> list: item_type="File", size=file.file_handle.content_size if file.file_handle else 0, parent_id=file.parent_id, - path=file.path if hasattr(file, "path") else None, + path=file_path, ) ) if hasattr(container, "folders"): for folder in container.folders: + folder_path = folder.path if hasattr(folder, "path") else None + # Log folder path information for debugging + logger = logging.getLogger("synapseclient") + logger.info( + f"DEBUG: Converting folder {folder.name} (ID: {folder.id}) - " + f"path attribute: '{folder_path}'" + ) + items.append( BulkItem( synapse_id=folder.id, @@ -445,7 +533,7 @@ def _convert_to_bulk_items(self, container: Any, recursive: bool) -> list: item_type="Folder", size=None, parent_id=folder.parent_id, - path=folder.path if hasattr(folder, "path") else None, + path=folder_path, ) ) @@ -454,6 +542,20 @@ def _convert_to_bulk_items(self, container: Any, recursive: bool) -> list: return items + async def _safe_callback(self, callback, *args): + """Safely call a callback function, handling both sync and async callbacks.""" + if callback is None: + return + try: + # Check if the callback is a coroutine function (async) + if asyncio.iscoroutinefunction(callback): + await callback(*args) + else: + # Call synchronous callback + callback(*args) + except Exception as e: + logger.warning(f"Callback error: {e}") + async def bulk_download( self, items: list, @@ -484,22 +586,52 @@ async def bulk_download( for i, item in enumerate(items): overall_progress = int((i / total_items) * 100) - progress_callback( - overall_progress, f"Processing item {i + 1} of {total_items}" + await self._safe_callback( + progress_callback, + overall_progress, + f"Processing item {i + 1} of {total_items}" + ) + await self._safe_callback( + detail_callback, + f"Downloading {item.name} ({item.synapse_id})" ) - detail_callback(f"Downloading {item.name} ({item.synapse_id})") try: - if item.item_type == "File": + if item.item_type.lower() == "file": + # Log the item details for debugging + await self._safe_callback( + detail_callback, + f"DEBUG: Processing file {item.name} with path: '{item.path}', parent_id: {item.parent_id}" + ) + + # Determine the download path, considering the item's path within the container + item_download_path = download_path + if recursive and item.path and item.path.strip(): + # Create subdirectory structure based on the item's hierarchical path + await self._safe_callback( + detail_callback, + f"DEBUG: Creating directory structure for path: '{item.path}'" + ) + item_download_path = os.path.join(download_path, item.path) + # Ensure the directory exists + os.makedirs(item_download_path, exist_ok=True) + + await self._safe_callback( + detail_callback, + f"DEBUG: Final download path for {item.name}: {item_download_path}" + ) + result = await self.download_file( synapse_id=item.synapse_id, version=None, - download_path=download_path, + download_path=item_download_path, progress_callback=progress_callback, detail_callback=detail_callback, ) results.append({"item": item, "result": result}) - elif item.item_type == "Folder": + elif item.item_type.lower() == "folder": + if True: + raise NotImplementedError("Folder download not implemented yet") from synapseclient.models import Folder folder = Folder(id=item.synapse_id) @@ -526,7 +658,7 @@ async def bulk_download( {"item": item, "result": {"success": False, "error": str(e)}} ) - progress_callback(100, "Bulk download complete") + await self._safe_callback(progress_callback, 100, "Bulk download complete") successes = sum(1 for r in results if r["result"].get("success", False)) failures = total_items - successes @@ -571,17 +703,25 @@ async def bulk_upload( folder_mapping = {} if preserve_structure: folder_mapping = await self._create_folder_structure( - items, parent_id, progress_callback, detail_callback + items=items, + base_parent_id=parent_id, + progress_callback=progress_callback, + detail_callback=detail_callback ) file_items = [item for item in items if item.item_type == "File"] for i, item in enumerate(file_items): overall_progress = int((i / len(file_items)) * 100) - progress_callback( - overall_progress, f"Uploading file {i + 1} of {len(file_items)}" + await self._safe_callback( + progress_callback, + overall_progress, + f"Uploading file {i + 1} of {len(file_items)}" + ) + await self._safe_callback( + detail_callback, + f"Uploading {item.name}" ) - detail_callback(f"Uploading {item.name}") try: target_parent = parent_id @@ -619,7 +759,7 @@ async def bulk_upload( {"item": item, "result": {"success": False, "error": str(e)}} ) - progress_callback(100, "Bulk upload complete") + await self._safe_callback(progress_callback, 100, "Bulk upload complete") successes = sum(1 for r in results if r["result"].get("success", False)) failures = len(file_items) - successes @@ -700,12 +840,12 @@ async def _create_folder_structure( sorted_dirs = sorted(dir_paths, key=lambda x: len(Path(x).parts)) - detail_callback("Creating folder structure...") + await detail_callback("Creating folder structure...") for i, dir_path in enumerate(sorted_dirs): if i % 5 == 0: progress = int((i / len(sorted_dirs)) * 50) - progress_callback( + await progress_callback( progress, f"Creating folders ({i}/{len(sorted_dirs)})" ) @@ -737,11 +877,11 @@ async def _create_folder_structure( folder = folder.store(synapse_client=self.client) normalized_dir_path = dir_path.replace("\\", "/") folder_mapping[normalized_dir_path] = folder.id - detail_callback( + await detail_callback( f"Created folder: {folder_name} ({folder.id}) from path {dir_path}" ) except Exception as e: - detail_callback(f"Error creating folder {folder_name}: {str(e)}") + await detail_callback(f"Error creating folder {folder_name}: {str(e)}") return folder_mapping From 8e0faa4736c197a1a9330548b0b23bf89c65bae6 Mon Sep 17 00:00:00 2001 From: BryanFauble <17128019+BryanFauble@users.noreply.github.com> Date: Thu, 21 Aug 2025 22:33:55 +0000 Subject: [PATCH 26/46] pre-commit all files --- .github/workflows/build.yml | 4 +- .gitignore | 2 +- build_electron_app.sh | 4 +- synapse-electron/backend/hook-uvicorn.py | 50 +-- synapse-electron/backend/requirements.txt | 4 +- synapse-electron/backend/server.py | 292 ++++++++------- synapse-electron/main.js | 114 +++--- synapse-electron/src/app.js | 430 +++++++++++----------- synapse-electron/src/index.html | 12 +- synapse-electron/src/styles.css | 18 +- synapse-electron/start.sh | 10 +- synapsegui/models/synapse_client.py | 38 +- 12 files changed, 509 insertions(+), 469 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4c18b8143..a3c50f13a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -426,7 +426,7 @@ jobs: run: | # Set environment variable to skip dependency installation in build script export SKIP_DEPENDENCY_INSTALL=1 - + # Use cmd to run the batch file with proper Windows syntax cmd //c "build_electron_app.bat ${TAG_CLEAN}" @@ -436,7 +436,7 @@ jobs: run: | # Set environment variable to skip dependency installation in build script export SKIP_DEPENDENCY_INSTALL=1 - + chmod +x build_electron_app.sh ./build_electron_app.sh macos "${TAG_CLEAN}" diff --git a/.gitignore b/.gitignore index 4d0c8a0c2..8d34e5daa 100644 --- a/.gitignore +++ b/.gitignore @@ -35,4 +35,4 @@ coverage.xml .env *.spec -synapse-electron/node_modules \ No newline at end of file +synapse-electron/node_modules diff --git a/build_electron_app.sh b/build_electron_app.sh index 6014b1aab..f784253ce 100644 --- a/build_electron_app.sh +++ b/build_electron_app.sh @@ -71,7 +71,7 @@ build_python_backend() { if [ -n "$SUFFIX" ]; then suffix_part="-$SUFFIX" fi - + echo "Building Python backend for $platform..." cd synapse-electron/backend @@ -107,7 +107,7 @@ build_python_backend() { # Function to build Electron app for a specific platform build_electron_app() { local platform=$1 - + echo "Building Electron application for $platform..." cd synapse-electron diff --git a/synapse-electron/backend/hook-uvicorn.py b/synapse-electron/backend/hook-uvicorn.py index 1546d0529..fb7a78843 100644 --- a/synapse-electron/backend/hook-uvicorn.py +++ b/synapse-electron/backend/hook-uvicorn.py @@ -4,34 +4,34 @@ from PyInstaller.utils.hooks import collect_all, collect_submodules # Collect all uvicorn modules -datas, binaries, hiddenimports = collect_all('uvicorn') +datas, binaries, hiddenimports = collect_all("uvicorn") # Add specific hidden imports that are often missed hiddenimports += [ - 'uvicorn.main', - 'uvicorn.server', - 'uvicorn.config', - 'uvicorn.lifespan', - 'uvicorn.lifespan.on', - 'uvicorn.loops', - 'uvicorn.loops.auto', - 'uvicorn.loops.asyncio', - 'uvicorn.loops.uvloop', - 'uvicorn.protocols', - 'uvicorn.protocols.http', - 'uvicorn.protocols.http.auto', - 'uvicorn.protocols.http.h11_impl', - 'uvicorn.protocols.http.httptools_impl', - 'uvicorn.protocols.websockets', - 'uvicorn.protocols.websockets.auto', - 'uvicorn.protocols.websockets.websockets_impl', - 'uvicorn.protocols.websockets.wsproto_impl', - 'uvicorn.supervisors', - 'uvicorn.supervisors.basereload', - 'uvicorn.supervisors.statreload', - 'uvicorn.supervisors.watchgodreload', - 'uvicorn.supervisors.watchfilesreload', + "uvicorn.main", + "uvicorn.server", + "uvicorn.config", + "uvicorn.lifespan", + "uvicorn.lifespan.on", + "uvicorn.loops", + "uvicorn.loops.auto", + "uvicorn.loops.asyncio", + "uvicorn.loops.uvloop", + "uvicorn.protocols", + "uvicorn.protocols.http", + "uvicorn.protocols.http.auto", + "uvicorn.protocols.http.h11_impl", + "uvicorn.protocols.http.httptools_impl", + "uvicorn.protocols.websockets", + "uvicorn.protocols.websockets.auto", + "uvicorn.protocols.websockets.websockets_impl", + "uvicorn.protocols.websockets.wsproto_impl", + "uvicorn.supervisors", + "uvicorn.supervisors.basereload", + "uvicorn.supervisors.statreload", + "uvicorn.supervisors.watchgodreload", + "uvicorn.supervisors.watchfilesreload", ] # Add all submodules -hiddenimports += collect_submodules('uvicorn') +hiddenimports += collect_submodules("uvicorn") diff --git a/synapse-electron/backend/requirements.txt b/synapse-electron/backend/requirements.txt index 1ecea8f63..7ee666efa 100644 --- a/synapse-electron/backend/requirements.txt +++ b/synapse-electron/backend/requirements.txt @@ -1,5 +1,5 @@ fastapi==0.104.1 -uvicorn==0.24.0 -websockets==12.0 pydantic==2.5.0 python-multipart==0.0.6 +uvicorn==0.24.0 +websockets==12.0 diff --git a/synapse-electron/backend/server.py b/synapse-electron/backend/server.py index 706d0b1c0..defb0fb57 100644 --- a/synapse-electron/backend/server.py +++ b/synapse-electron/backend/server.py @@ -16,10 +16,10 @@ from typing import Any, Dict, List, Optional import uvicorn +import websockets from fastapi import FastAPI, HTTPException from fastapi.middleware.cors import CORSMiddleware from pydantic import BaseModel -import websockets # Add the parent directory to the path to import synapsegui modules current_dir = Path(__file__).parent @@ -28,12 +28,14 @@ try: # Import existing Synapse functionality + from synapsegui.models.bulk_item import BulkItem from synapsegui.models.config import ConfigManager from synapsegui.models.synapse_client import SynapseClientManager - from synapsegui.models.bulk_item import BulkItem except ImportError as e: print(f"Error importing synapsegui modules: {e}") - print("Make sure you're running this from the correct directory and synapsegui is accessible") + print( + "Make sure you're running this from the correct directory and synapsegui is accessible" + ) sys.exit(1) # Configure logging @@ -52,7 +54,7 @@ def emit(self, record): """Send log record to Electron frontend""" try: # Skip WebSocket-related logs to prevent feedback loops - if record.name.startswith('websockets'): + if record.name.startswith("websockets"): return # Format the log message @@ -64,7 +66,7 @@ def emit(self, record): logging.INFO: "info", logging.WARNING: "warning", logging.ERROR: "error", - logging.CRITICAL: "critical" + logging.CRITICAL: "critical", } level = level_mapping.get(record.levelno, "info") @@ -78,8 +80,8 @@ def emit(self, record): "source": "python-logger", "auto_scroll": True, "raw_message": record.getMessage(), # Original message without formatting - "filename": getattr(record, 'filename', ''), - "line_number": getattr(record, 'lineno', 0) + "filename": getattr(record, "filename", ""), + "line_number": getattr(record, "lineno", 0), } # Send to Electron via REST polling instead of WebSocket @@ -105,7 +107,7 @@ def emit(self, record): # Set up the custom handler for the root logger to catch all logs electron_handler = ElectronLogHandler() electron_handler.setLevel(logging.DEBUG) -formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') +formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") electron_handler.setFormatter(formatter) # Add handler only to root logger to catch all log messages @@ -114,7 +116,7 @@ def emit(self, record): root_logger.setLevel(logging.INFO) # Explicitly set WebSocket logger to WARNING to prevent debug spam -websockets_logger = logging.getLogger('websockets') +websockets_logger = logging.getLogger("websockets") websockets_logger.setLevel(logging.WARNING) # Pydantic models for API requests @@ -188,7 +190,7 @@ def create_app() -> FastAPI: title="Synapse Desktop Client API", description="Backend API for Synapse Desktop Client", version="0.1.0", - lifespan=lifespan + lifespan=lifespan, ) # Configure CORS for Electron app @@ -211,14 +213,15 @@ def create_app() -> FastAPI: async def handle_websocket_client(websocket, path=None): """Handle WebSocket connections from Electron frontend""" connected_clients.add(websocket) - logger.info(f"WebSocket client connected from path: {path}. Total clients: {len(connected_clients)}") + logger.info( + f"WebSocket client connected from path: {path}. Total clients: {len(connected_clients)}" + ) # Send connection status try: - await websocket.send(json.dumps({ - "type": "connection_status", - "connected": True - })) + await websocket.send( + json.dumps({"type": "connection_status", "connected": True}) + ) async for message in websocket: # Handle incoming WebSocket messages if needed @@ -229,16 +232,23 @@ async def handle_websocket_client(websocket, path=None): logger.error(f"WebSocket error: {e}") finally: connected_clients.discard(websocket) - logger.info(f"WebSocket client removed. Total clients: {len(connected_clients)}") + logger.info( + f"WebSocket client removed. Total clients: {len(connected_clients)}" + ) async def broadcast_message(message: dict): """Broadcast message to all connected WebSocket clients""" if not connected_clients: # Only log once per message type to avoid spam - message_type = message.get('type', 'unknown') - if message_type not in ['log', 'progress']: # Don't spam for frequent message types - logger.debug(f"No WebSocket clients connected to send message: {message_type}") + message_type = message.get("type", "unknown") + if message_type not in [ + "log", + "progress", + ]: # Don't spam for frequent message types + logger.debug( + f"No WebSocket clients connected to send message: {message_type}" + ) return # Add debug logging for completion messages @@ -252,6 +262,7 @@ async def broadcast_message(message: dict): # Add timestamp if not present if "timestamp" not in message: import time + message["timestamp"] = time.time() # Create a copy of the set to avoid "set changed size during iteration" error @@ -273,6 +284,7 @@ async def broadcast_message(message: dict): # API Routes + async def initialize_logging(): """Initialize logging and send startup message""" try: @@ -291,19 +303,10 @@ async def poll_log_messages(): messages = log_message_queue.copy() log_message_queue.clear() - return { - "success": True, - "messages": messages, - "count": len(messages) - } + return {"success": True, "messages": messages, "count": len(messages)} except Exception as e: logger.error(f"Error polling log messages: {e}") - return { - "success": False, - "messages": [], - "count": 0, - "error": str(e) - } + return {"success": False, "messages": [], "count": 0, "error": str(e)} @app.get("/health") @@ -343,10 +346,7 @@ async def get_home_directory(): # Fall back to home directory if Downloads can't be created downloads_dir = home_dir - return { - "home_directory": home_dir, - "downloads_directory": downloads_dir - } + return {"home_directory": home_dir, "downloads_directory": downloads_dir} except Exception as e: logger.error(f"Error getting home directory: {e}") raise HTTPException(status_code=500, detail=str(e)) @@ -368,10 +368,9 @@ async def get_profiles(): profile_data = [] for profile in profiles: - profile_data.append({ - "name": profile, - "display_name": profile.replace("_", " ").title() - }) + profile_data.append( + {"name": profile, "display_name": profile.replace("_", " ").title()} + ) return {"profiles": profile_data} except Exception as e: @@ -391,7 +390,9 @@ async def login(request: LoginRequest): if request.mode == "manual": if not request.username or not request.token: - raise HTTPException(status_code=400, detail="Username and token are required") + raise HTTPException( + status_code=400, detail="Username and token are required" + ) # Handle manual login result = await synapse_client.login_manual(request.username, request.token) @@ -407,7 +408,7 @@ async def login(request: LoginRequest): "username": result.get("username", request.username), "name": result.get("username", request.username), "user_id": "", - "token": "authenticated" + "token": "authenticated", } else: raise HTTPException(status_code=401, detail=result["error"]) @@ -431,6 +432,7 @@ async def logout(): logger.error(f"Logout error: {e}") raise HTTPException(status_code=500, detail=str(e)) + # File operation endpoints @@ -453,13 +455,15 @@ async def download_task(): version=int(request.version) if request.version else None, download_path=request.download_path, progress_callback=None, # Disable progress callbacks - detail_callback=None # Disable detail callbacks + detail_callback=None, # Disable detail callbacks ) # Manually log completion instead of broadcast_message (since we're in a thread) if result["success"]: logger.info(f"✅ Successfully downloaded {request.synapse_id}") - logger.info(f"Downloaded to {result.get('path', 'download location')}") + logger.info( + f"Downloaded to {result.get('path', 'download location')}" + ) else: logger.error(f"❌ Download failed: {result['error']}") except Exception as e: @@ -486,6 +490,7 @@ def run_download_in_background(): # Start in a thread to avoid blocking import threading + thread = threading.Thread(target=run_download_in_background) thread.daemon = True thread.start() @@ -518,7 +523,7 @@ async def upload_task(): entity_id=request.entity_id if request.mode == "update" else None, name=request.name, progress_callback=None, # Disable progress callbacks - detail_callback=None # Disable detail callbacks + detail_callback=None, # Disable detail callbacks ) # Manually log completion instead of broadcast_message (since we're in a thread) @@ -548,6 +553,7 @@ def run_upload_in_background(): # Start in a thread to avoid blocking import threading + thread = threading.Thread(target=run_upload_in_background) thread.daemon = True thread.start() @@ -560,6 +566,7 @@ def run_upload_in_background(): logger.error(f"Upload endpoint error: {e}") raise HTTPException(status_code=500, detail=str(e)) + # Bulk operation endpoints @@ -603,7 +610,7 @@ def scan_directory_recursive(current_path: str, base_path: str): "path": item_path, "relative_path": relative_path, "parent_path": current_path, - "mime_type": mime_type or "application/octet-stream" + "mime_type": mime_type or "application/octet-stream", } items.append(file_info) total_size += file_size @@ -621,7 +628,7 @@ def scan_directory_recursive(current_path: str, base_path: str): "size": 0, "path": item_path, "relative_path": relative_path, - "parent_path": current_path + "parent_path": current_path, } items.append(folder_info) @@ -649,8 +656,8 @@ def scan_directory_recursive(current_path: str, base_path: str): "total_items": len(files), "file_count": file_count, "folder_count": folder_count, - "total_size": total_size - } + "total_size": total_size, + }, } except HTTPException: @@ -671,23 +678,24 @@ async def enumerate_container(request: EnumerateRequest): logger.info(f"Enumerating container {request.container_id}") result = await synapse_client.enumerate_container( - request.container_id, - request.recursive + request.container_id, request.recursive ) if result["success"]: # Convert items to JSON-serializable format items = [] for item in result["items"]: - if hasattr(item, 'synapse_id'): # BulkItem object - items.append({ - "id": item.synapse_id, - "name": item.name, - "type": item.item_type.lower(), # Use item_type and convert to lowercase - "size": item.size, - "parent_id": item.parent_id, - "path": item.path if item.path else "" - }) + if hasattr(item, "synapse_id"): # BulkItem object + items.append( + { + "id": item.synapse_id, + "name": item.name, + "type": item.item_type.lower(), # Use item_type and convert to lowercase + "size": item.size, + "parent_id": item.parent_id, + "path": item.path if item.path else "", + } + ) else: # Already a dict items.append(item) @@ -715,12 +723,16 @@ async def bulk_download(request: BulkDownloadRequest): # Execute the download task and wait for completion try: # Filter to only include files for bulk download - file_items_data = [item for item in request.items if item.get("type", "file").lower() == "file"] + file_items_data = [ + item + for item in request.items + if item.get("type", "file").lower() == "file" + ] if not file_items_data: raise HTTPException( status_code=400, - detail="No files selected for download. Only files can be bulk downloaded." + detail="No files selected for download. Only files can be bulk downloaded.", ) logger.info( @@ -736,7 +748,7 @@ async def bulk_download(request: BulkDownloadRequest): item_type=item_data.get("type", "file"), size=item_data.get("size"), parent_id=item_data.get("parent_id"), - path=item_data.get("path", "") + path=item_data.get("path", ""), ) bulk_items.append(bulk_item) @@ -752,42 +764,50 @@ async def async_detail_callback(m): download_path=request.download_path, recursive=request.create_subfolders, progress_callback=async_progress_callback, - detail_callback=async_detail_callback + detail_callback=async_detail_callback, ) if result["success"]: logger.info(f"Successfully downloaded {len(file_items_data)} files") - await broadcast_message({ - "type": "complete", - "operation": "bulk-download", - "success": True, - "data": {"message": f"Downloaded {len(file_items_data)} files"} - }) + await broadcast_message( + { + "type": "complete", + "operation": "bulk-download", + "success": True, + "data": {"message": f"Downloaded {len(file_items_data)} files"}, + } + ) return { "success": True, "message": "Bulk download completed successfully", "item_count": len(file_items_data), - "summary": result.get("summary", f"Downloaded {len(file_items_data)} files") + "summary": result.get( + "summary", f"Downloaded {len(file_items_data)} files" + ), } else: logger.error(f"Bulk download failed: {result['error']}") - await broadcast_message({ - "type": "complete", - "operation": "bulk-download", - "success": False, - "data": {"error": result['error']} - }) - raise HTTPException(status_code=500, detail=result['error']) + await broadcast_message( + { + "type": "complete", + "operation": "bulk-download", + "success": False, + "data": {"error": result["error"]}, + } + ) + raise HTTPException(status_code=500, detail=result["error"]) except Exception as e: logger.error(f"Bulk download task error: {e}") logger.info(f"Bulk download error: {str(e)}", True) - await broadcast_message({ - "type": "complete", - "operation": "bulk-download", - "success": False, - "data": {"error": str(e)} - }) + await broadcast_message( + { + "type": "complete", + "operation": "bulk-download", + "success": False, + "data": {"error": str(e)}, + } + ) raise HTTPException(status_code=500, detail=str(e)) except HTTPException: @@ -806,12 +826,14 @@ async def bulk_upload(request: BulkUploadRequest): raise HTTPException(status_code=401, detail="Not authenticated") # Filter to only include files for bulk upload - file_items_data = [file for file in request.files if file.get("type", "file").lower() == "file"] + file_items_data = [ + file for file in request.files if file.get("type", "file").lower() == "file" + ] if not file_items_data: raise HTTPException( status_code=400, - detail="No files selected for upload. Only files can be bulk uploaded." + detail="No files selected for upload. Only files can be bulk uploaded.", ) logger.info( @@ -831,20 +853,23 @@ async def bulk_upload(request: BulkUploadRequest): relative_path = file_data.get("relative_path", "") if not file_path or not os.path.exists(file_path): - logger.info(f"Skipping file with invalid path: {file_data.get('name', 'Unknown')}", True) + logger.info( + f"Skipping file with invalid path: {file_data.get('name', 'Unknown')}", + True, + ) continue # Create File object file_obj = File( path=file_path, name=file_data.get("name"), - description=file_data.get("description", None) + description=file_data.get("description", None), ) if request.preserve_folder_structure and relative_path: # Normalize path separators and split into folder parts - relative_path = relative_path.replace('\\', '/').strip('/') - path_parts = relative_path.split('/') + relative_path = relative_path.replace("\\", "/").strip("/") + path_parts = relative_path.split("/") if len(path_parts) > 1: # File is in a subfolder - build folder hierarchy @@ -864,7 +889,7 @@ async def bulk_upload(request: BulkUploadRequest): name=folder_name, parent_id=current_parent_id, files=[], - folders=[] + folders=[], ) folder_map[current_path] = folder_obj @@ -893,21 +918,27 @@ async def bulk_upload(request: BulkUploadRequest): # Get all unique folders (top-level folders only for initial upload) top_level_folders = [] for path, folder_obj in folder_map.items(): - if '/' not in path: # Top-level folder + if "/" not in path: # Top-level folder top_level_folders.append(folder_obj) total_items = len(root_files) + len(top_level_folders) if total_items == 0: logger.error("No valid files found to upload") - await broadcast_message({ - "type": "complete", - "operation": "bulk-upload", - "success": False, - "data": {"error": "No valid files found to upload"} - }) - raise HTTPException(status_code=400, detail="No valid files found to upload") + await broadcast_message( + { + "type": "complete", + "operation": "bulk-upload", + "success": False, + "data": {"error": "No valid files found to upload"}, + } + ) + raise HTTPException( + status_code=400, detail="No valid files found to upload" + ) - logger.info(f"Created folder hierarchy: {len(top_level_folders)} folders, {len(root_files)} root files") + logger.info( + f"Created folder hierarchy: {len(top_level_folders)} folders, {len(root_files)} root files" + ) # Track progress completed_items = 0 @@ -928,7 +959,7 @@ async def upload_item(item, item_type: str, item_name: str) -> dict: "item_name": item_name, "item_type": item_type, "entity_id": stored_item.id, - "path": getattr(item, 'path', None) + "path": getattr(item, "path", None), } except Exception as e: completed_items += 1 @@ -939,7 +970,7 @@ async def upload_item(item, item_type: str, item_name: str) -> dict: "item_name": item_name, "item_type": item_type, "error": str(e), - "path": getattr(item, 'path', None) + "path": getattr(item, "path", None), } # Create upload tasks for all items @@ -966,31 +997,35 @@ async def upload_item(item, item_type: str, item_name: str) -> dict: elif i - len(root_files) < len(top_level_folders): item_name = top_level_folders[i - len(root_files)].name - processed_results.append({ - "success": False, - "item_name": item_name, - "error": str(result) - }) + processed_results.append( + {"success": False, "item_name": item_name, "error": str(result)} + ) else: processed_results.append(result) # Calculate final statistics - successful_uploads = sum(1 for r in processed_results if r.get("success", False)) + successful_uploads = sum( + 1 for r in processed_results if r.get("success", False) + ) failed_uploads = total_items - successful_uploads - logger.info(f"Bulk upload completed: {successful_uploads} successful, {failed_uploads} failed") + logger.info( + f"Bulk upload completed: {successful_uploads} successful, {failed_uploads} failed" + ) - await broadcast_message({ - "type": "complete", - "operation": "bulk-upload", - "success": True, - "data": { - "message": f"Uploaded {successful_uploads} items, {failed_uploads} failed", - "successful_uploads": successful_uploads, - "failed_uploads": failed_uploads, - "results": processed_results + await broadcast_message( + { + "type": "complete", + "operation": "bulk-upload", + "success": True, + "data": { + "message": f"Uploaded {successful_uploads} items, {failed_uploads} failed", + "successful_uploads": successful_uploads, + "failed_uploads": failed_uploads, + "results": processed_results, + }, } - }) + ) return { "success": True, @@ -998,7 +1033,7 @@ async def upload_item(item, item_type: str, item_name: str) -> dict: "successful_uploads": successful_uploads, "failed_uploads": failed_uploads, "total_items": total_items, - "summary": f"Uploaded {successful_uploads} items, {failed_uploads} failed" + "summary": f"Uploaded {successful_uploads} items, {failed_uploads} failed", } except HTTPException: @@ -1006,17 +1041,20 @@ async def upload_item(item, item_type: str, item_name: str) -> dict: except Exception as e: logger.exception("Bulk upload endpoint error") logger.info(f"Bulk upload error: {str(e)}", True) - await broadcast_message({ - "type": "complete", - "operation": "bulk-upload", - "success": False, - "data": {"error": str(e)} - }) + await broadcast_message( + { + "type": "complete", + "operation": "bulk-upload", + "success": False, + "data": {"error": str(e)}, + } + ) raise HTTPException(status_code=500, detail=str(e)) def start_websocket_server(port: int): """Start the WebSocket server in a separate thread""" + def run_websocket_server(): async def websocket_server(): # Create a wrapper that handles both old and new websockets library signatures @@ -1057,11 +1095,7 @@ def main(): logger.info("WebSocket server on ws://%s:%s", args.host, args.ws_port) uvicorn.run( - app, - host=args.host, - port=args.port, - reload=args.reload, - log_level="info" + app, host=args.host, port=args.port, reload=args.reload, log_level="info" ) diff --git a/synapse-electron/main.js b/synapse-electron/main.js index d63dcac77..143d27443 100644 --- a/synapse-electron/main.js +++ b/synapse-electron/main.js @@ -17,23 +17,23 @@ class SynapseElectronApp { async startPythonBackend() { log.info('Starting Python backend...'); - + // Determine Python executable path let pythonExe; let backendPath; - + if (app.isPackaged) { // In packaged app, use the compiled backend backendPath = path.join(process.resourcesPath, 'backend'); - + if (process.platform === 'win32') { pythonExe = path.join(backendPath, 'synapse-backend.exe'); } else { pythonExe = path.join(backendPath, 'synapse-backend'); } - + log.info(`Using packaged backend: ${pythonExe}`); - + this.pythonProcess = spawn(pythonExe, [ '--port', this.backendPort.toString(), '--ws-port', this.wsPort.toString() @@ -44,7 +44,7 @@ class SynapseElectronApp { } else { // In development, use the Python script backendPath = path.join(__dirname, 'backend'); - + if (process.platform === 'win32') { // On Windows, try to use the venv first, fallback to system python const venvPython = path.join(backendPath, 'venv', 'Scripts', 'python.exe'); @@ -58,7 +58,7 @@ class SynapseElectronApp { } else { pythonExe = 'python3'; } - + this.pythonProcess = spawn(pythonExe, [ path.join(backendPath, 'server.py'), '--port', this.backendPort.toString(), @@ -87,22 +87,22 @@ class SynapseElectronApp { // Wait for backend to be ready await this.waitForBackend(); - + // Start WebSocket server connection this.setupWebSocketConnection(); } setupWebSocketConnection() { const wsUrl = `ws://127.0.0.1:${this.wsPort}`; - + const connectWebSocket = () => { try { this.ws = new WebSocket(wsUrl); - + this.ws.on('open', () => { log.info('WebSocket connected to Python backend'); }); - + this.ws.on('message', (data) => { try { const message = JSON.parse(data.toString()); @@ -111,12 +111,12 @@ class SynapseElectronApp { log.error('Error parsing WebSocket message:', error); } }); - + this.ws.on('close', () => { log.warn('WebSocket connection closed, attempting to reconnect...'); setTimeout(connectWebSocket, 2000); }); - + this.ws.on('error', (error) => { log.error('WebSocket error:', error); }); @@ -125,7 +125,7 @@ class SynapseElectronApp { setTimeout(connectWebSocket, 2000); } }; - + connectWebSocket(); } @@ -156,7 +156,7 @@ class SynapseElectronApp { createWindow() { // Check if we're running in a headless environment const isHeadless = process.env.DISPLAY === ':99' || process.env.CI || process.env.HEADLESS; - + const webPrefs = { nodeIntegration: false, contextIsolation: true, @@ -165,12 +165,12 @@ class SynapseElectronApp { // Force software rendering to avoid GPU issues hardwareAcceleration: false }; - + // Add offscreen rendering for headless mode if (isHeadless) { webPrefs.offscreen = true; } - + this.mainWindow = new BrowserWindow({ width: 1200, height: 800, @@ -193,7 +193,7 @@ class SynapseElectronApp { if (!isHeadless) { this.mainWindow.once('ready-to-show', () => { this.mainWindow.show(); - + // Center window on screen this.mainWindow.center(); }); @@ -228,9 +228,9 @@ class SynapseElectronApp { const response = await axios.post(`http://127.0.0.1:${this.backendPort}/auth/login`, credentials); return { success: true, data: response.data }; } catch (error) { - return { - success: false, - error: error.response?.data?.detail || error.message + return { + success: false, + error: error.response?.data?.detail || error.message }; } }); @@ -240,9 +240,9 @@ class SynapseElectronApp { const response = await axios.post(`http://127.0.0.1:${this.backendPort}/auth/logout`); return { success: true, data: response.data }; } catch (error) { - return { - success: false, - error: error.response?.data?.detail || error.message + return { + success: false, + error: error.response?.data?.detail || error.message }; } }); @@ -252,9 +252,9 @@ class SynapseElectronApp { const response = await axios.get(`http://127.0.0.1:${this.backendPort}/auth/profiles`); return { success: true, data: response.data }; } catch (error) { - return { - success: false, - error: error.response?.data?.detail || error.message + return { + success: false, + error: error.response?.data?.detail || error.message }; } }); @@ -265,9 +265,9 @@ class SynapseElectronApp { const response = await axios.post(`http://127.0.0.1:${this.backendPort}/files/upload`, uploadData); return { success: true, data: response.data }; } catch (error) { - return { - success: false, - error: error.response?.data?.detail || error.message + return { + success: false, + error: error.response?.data?.detail || error.message }; } }); @@ -277,9 +277,9 @@ class SynapseElectronApp { const response = await axios.post(`http://127.0.0.1:${this.backendPort}/files/download`, downloadData); return { success: true, data: response.data }; } catch (error) { - return { - success: false, - error: error.response?.data?.detail || error.message + return { + success: false, + error: error.response?.data?.detail || error.message }; } }); @@ -290,9 +290,9 @@ class SynapseElectronApp { const response = await axios.post(`http://127.0.0.1:${this.backendPort}/files/scan-directory`, scanData); return { success: true, data: response.data }; } catch (error) { - return { - success: false, - error: error.response?.data?.detail || error.message + return { + success: false, + error: error.response?.data?.detail || error.message }; } }); @@ -302,9 +302,9 @@ class SynapseElectronApp { const response = await axios.post(`http://127.0.0.1:${this.backendPort}/bulk/enumerate`, containerData); return { success: true, data: response.data }; } catch (error) { - return { - success: false, - error: error.response?.data?.detail || error.message + return { + success: false, + error: error.response?.data?.detail || error.message }; } }); @@ -314,9 +314,9 @@ class SynapseElectronApp { const response = await axios.post(`http://127.0.0.1:${this.backendPort}/bulk/download`, bulkData); return { success: true, data: response.data }; } catch (error) { - return { - success: false, - error: error.response?.data?.detail || error.message + return { + success: false, + error: error.response?.data?.detail || error.message }; } }); @@ -326,9 +326,9 @@ class SynapseElectronApp { const response = await axios.post(`http://127.0.0.1:${this.backendPort}/bulk/upload`, bulkData); return { success: true, data: response.data }; } catch (error) { - return { - success: false, - error: error.response?.data?.detail || error.message + return { + success: false, + error: error.response?.data?.detail || error.message }; } }); @@ -360,9 +360,9 @@ class SynapseElectronApp { const response = await axios.get(`http://127.0.0.1:${this.backendPort}/system/home-directory`); return { success: true, data: response.data }; } catch (error) { - return { - success: false, - error: error.response?.data?.detail || error.message + return { + success: false, + error: error.response?.data?.detail || error.message }; } }); @@ -370,16 +370,16 @@ class SynapseElectronApp { async initialize() { await app.whenReady(); - + try { await this.startPythonBackend(); this.createWindow(); this.setupIPC(); - + log.info('Synapse Electron app initialized successfully'); } catch (error) { log.error('Failed to initialize app:', error); - + // Show error dialog and exit dialog.showErrorBox( 'Startup Error', @@ -391,14 +391,14 @@ class SynapseElectronApp { cleanup() { log.info('Cleaning up application...'); - + if (this.ws) { this.ws.close(); } - + if (this.pythonProcess) { this.pythonProcess.kill('SIGTERM'); - + // Force kill after 5 seconds if still running setTimeout(() => { if (this.pythonProcess && !this.pythonProcess.killed) { @@ -420,7 +420,7 @@ if (process.platform === 'linux') { app.commandLine.appendSwitch('disable-background-timer-throttling'); app.commandLine.appendSwitch('disable-renderer-backgrounding'); app.commandLine.appendSwitch('disable-features', 'VizDisplayCompositor'); - + // Check if we're in a headless environment if (process.env.DISPLAY === ':99' || process.env.CI || process.env.HEADLESS) { app.commandLine.appendSwitch('headless'); @@ -441,10 +441,10 @@ if (process.platform === 'win32') { app.commandLine.appendSwitch('disable-gpu-memory-buffer-video-frames'); app.commandLine.appendSwitch('enable-logging'); app.commandLine.appendSwitch('log-level', '0'); - + // Use software rendering app.commandLine.appendSwitch('disable-features', 'VizDisplayCompositor'); - + log.info('Applied Windows GPU compatibility flags'); } diff --git a/synapse-electron/src/app.js b/synapse-electron/src/app.js index da0407ba5..81f6215cd 100644 --- a/synapse-electron/src/app.js +++ b/synapse-electron/src/app.js @@ -7,17 +7,17 @@ class SynapseDesktopClient { this.websocketConnected = false; this.containerItems = []; this.selectedItems = new Set(); - + // Upload-specific properties this.uploadFileItems = []; this.selectedUploadFiles = new Set(); - + // Auto-scroll related properties this.autoScrollEnabled = true; this.lastScrollTime = 0; this.scrollThrottleDelay = 50; // Minimum ms between scroll operations this.pendingScroll = false; - + this.initializeApp(); } @@ -27,40 +27,40 @@ class SynapseDesktopClient { await this.loadAppVersion(); await this.loadProfiles(); await this.setupWebSocketListener(); - + // Initialize auto-scroll UI this.updateAutoScrollUI(); this.updateLogCount(); - + // Start polling for log messages this.startLogPolling(); - + // Set default download location const homeResult = await window.electronAPI.getHomeDirectory(); let defaultDownloadPath = 'Downloads'; // fallback - + if (homeResult.success && homeResult.data.downloads_directory) { defaultDownloadPath = homeResult.data.downloads_directory; } else { console.error('Error getting home directory:', homeResult.error); } - + const downloadLocationEl = document.getElementById('download-location'); const bulkDownloadLocationEl = document.getElementById('bulk-download-location'); - + if (downloadLocationEl) { downloadLocationEl.value = defaultDownloadPath; } if (bulkDownloadLocationEl) { bulkDownloadLocationEl.value = defaultDownloadPath; } - + // Initialize button states based on current form values this.updateUploadButtonState(); this.updateDownloadButtonState(); this.updateBulkUploadButtonState(); this.updateBulkDownloadButtonState(); - + console.log('Synapse Desktop Client initialized'); } catch (error) { console.error('Error in initializeApp:', error); @@ -324,18 +324,18 @@ class SynapseDesktopClient { handleLogMessage(logMessage) { // Display in the UI log with enhanced formatting this.logMessageAdvanced(logMessage); - + // Auto-scroll if enabled and requested if (logMessage.auto_scroll) { this.autoScrollIfEnabled(); } - + // Also log to browser console with more details - const timestamp = logMessage.timestamp ? - new Date(logMessage.timestamp * 1000).toISOString() : + const timestamp = logMessage.timestamp ? + new Date(logMessage.timestamp * 1000).toISOString() : new Date().toISOString(); const consoleMessage = `[${timestamp}] [${logMessage.logger_name || 'backend'}] ${logMessage.message}`; - + switch (logMessage.level) { case 'error': case 'critical': @@ -353,7 +353,7 @@ class SynapseDesktopClient { console.info(consoleMessage); break; } - + // For synapse client logs, add special formatting if (logMessage.logger_name && logMessage.logger_name.includes('synapse')) { console.group(`🔬 Synapse Client Log [${logMessage.level.toUpperCase()}]`); @@ -371,7 +371,7 @@ class SynapseDesktopClient { this.websocketConnected = connected; const statusElement = document.getElementById('connection-status'); const icon = statusElement.querySelector('i'); - + if (connected) { icon.className = 'fas fa-circle status-connected'; statusElement.lastChild.textContent = 'Connected'; @@ -397,7 +397,7 @@ class SynapseDesktopClient { populateProfiles(profiles) { const profileSelect = document.getElementById('profile'); profileSelect.innerHTML = ''; - + profiles.forEach(profile => { const option = document.createElement('option'); option.value = profile.name; @@ -409,7 +409,7 @@ class SynapseDesktopClient { updateLoginModeAvailability(hasProfiles) { const configMode = document.getElementById('config-mode'); const manualMode = document.getElementById('manual-mode'); - + if (!hasProfiles) { configMode.disabled = true; manualMode.checked = true; @@ -431,7 +431,7 @@ class SynapseDesktopClient { toggleLoginMode(mode) { const manualForm = document.getElementById('manual-login'); const configForm = document.getElementById('config-login'); - + if (mode === 'manual') { manualForm.classList.add('active'); configForm.classList.remove('active'); @@ -444,7 +444,7 @@ class SynapseDesktopClient { toggleUploadMode(mode) { const parentIdGroup = document.getElementById('parent-id-group'); const entityIdGroup = document.getElementById('entity-id-group'); - + if (mode === 'new') { parentIdGroup.style.display = 'block'; entityIdGroup.style.display = 'none'; @@ -461,62 +461,62 @@ class SynapseDesktopClient { console.error('switchTab called with invalid tabName:', tabName); return; } - + // Update tab buttons document.querySelectorAll('.tab-btn').forEach(btn => { btn.classList.remove('active'); }); - + const activeTabBtn = document.querySelector(`[data-tab="${tabName}"]`); if (activeTabBtn) { activeTabBtn.classList.add('active'); } else { console.error(`No tab button found with data-tab="${tabName}"`); } - + // Update tab panels document.querySelectorAll('.tab-panel').forEach(panel => { panel.classList.remove('active'); }); - + const activeTabPanel = document.getElementById(`${tabName}-tab`); if (activeTabPanel) { activeTabPanel.classList.add('active'); } else { console.error(`No tab panel found with id="${tabName}-tab"`); } - + this.activeTab = tabName; } async handleLogin() { const loginBtn = document.getElementById('login-btn'); const statusDiv = document.getElementById('login-status'); - + loginBtn.disabled = true; loginBtn.innerHTML = ' Logging in...'; - + try { const mode = document.querySelector('input[name="loginMode"]:checked').value; let credentials = { mode }; - + if (mode === 'manual') { credentials.username = document.getElementById('username').value.trim(); credentials.token = document.getElementById('token').value.trim(); - + if (!credentials.username || !credentials.token) { throw new Error('Username and token are required'); } } else { credentials.profile = document.getElementById('profile').value; - + if (!credentials.profile) { throw new Error('Please select a profile'); } } - + const result = await window.electronAPI.login(credentials); - + if (result.success) { this.handleLoginSuccess(result.data); } else { @@ -533,14 +533,14 @@ class SynapseDesktopClient { handleLoginSuccess(userData) { this.isLoggedIn = true; this.currentUser = userData; - + // Hide login section and show main app document.getElementById('login-section').style.display = 'none'; document.getElementById('main-section').style.display = 'flex'; - + // Update user info document.getElementById('user-name').textContent = userData.username || userData.name || 'User'; - + this.logMessage(`Successfully logged in as ${userData.username || userData.name}`, false); this.setStatus('Logged in successfully'); } @@ -548,23 +548,23 @@ class SynapseDesktopClient { async handleLogout() { try { await window.electronAPI.logout(); - + this.isLoggedIn = false; this.currentUser = null; - + // Show login section and hide main app document.getElementById('login-section').style.display = 'flex'; document.getElementById('main-section').style.display = 'none'; - + // Clear form data document.getElementById('username').value = ''; document.getElementById('token').value = ''; document.getElementById('profile').value = ''; - + // Clear status document.getElementById('login-status').classList.remove('success', 'error', 'info'); document.getElementById('login-status').style.display = 'none'; - + this.logMessage('Logged out successfully', false); this.setStatus('Ready'); } catch (error) { @@ -579,10 +579,10 @@ class SynapseDesktopClient { properties: ['openDirectory'], defaultPath: document.getElementById(inputId).value || '' }); - + if (!result.canceled && result.filePaths.length > 0) { document.getElementById(inputId).value = result.filePaths[0]; - + // Trigger scan for bulk upload if it's the upload location if (inputId === 'bulk-upload-location') { this.handleScanUploadDirectory(); @@ -600,10 +600,10 @@ class SynapseDesktopClient { properties: ['openFile'], defaultPath: document.getElementById(inputId).value || '' }); - + if (!result.canceled && result.filePaths.length > 0) { document.getElementById(inputId).value = result.filePaths[0]; - + // Auto-populate upload name if empty if (inputId === 'upload-file' && !document.getElementById('upload-name').value) { const fileName = result.filePaths[0].split('\\').pop().split('/').pop(); @@ -620,24 +620,24 @@ class SynapseDesktopClient { const synapseId = document.getElementById('download-id').value.trim(); const version = document.getElementById('download-version').value.trim(); const downloadPath = document.getElementById('download-location').value.trim(); - + if (!synapseId) { this.logMessage('Synapse ID is required for download', true); return; } - + if (!downloadPath) { this.logMessage('Download location is required', true); return; } - + try { const result = await window.electronAPI.downloadFile({ synapse_id: synapseId, version: version || null, download_path: downloadPath }); - + if (result.success) { this.logMessage(`Download initiated for ${synapseId}`, false); } else { @@ -653,22 +653,22 @@ class SynapseDesktopClient { const parentId = document.getElementById('parent-id').value.trim(); const entityId = document.getElementById('entity-id').value.trim(); const name = document.getElementById('upload-name').value.trim(); - + if (!filePath) { this.logMessage('File path is required for upload', true); return; } - + if (mode === 'new' && !parentId) { this.logMessage('Parent ID is required for new file upload', true); return; } - + if (mode === 'update' && !entityId) { this.logMessage('Entity ID is required for file update', true); return; } - + try { const result = await window.electronAPI.uploadFile({ file_path: filePath, @@ -677,7 +677,7 @@ class SynapseDesktopClient { entity_id: entityId || null, name: name || null }); - + if (result.success) { this.logMessage(`Upload initiated for ${filePath}`, false); } else { @@ -690,18 +690,18 @@ class SynapseDesktopClient { async handleEnumerate() { const containerId = document.getElementById('container-id').value.trim(); const recursive = document.getElementById('recursive').checked; - + if (!containerId) { this.logMessage('Container ID is required for enumeration', true); return; } - + try { const result = await window.electronAPI.enumerate({ container_id: containerId, recursive: recursive }); - + if (result.success) { this.displayContainerContents(result.data.items); this.logMessage(`Found ${result.data.items.length} items in container`, false); @@ -716,20 +716,20 @@ class SynapseDesktopClient { displayContainerContents(items) { this.containerItems = items; this.selectedItems.clear(); - + const contentsDiv = document.getElementById('container-contents'); const treeDiv = document.getElementById('items-tree'); - + treeDiv.innerHTML = ''; - + // Build hierarchical structure const { rootItems, parentMap } = this.buildHierarchy(items); - + // Use JSTree for better tree functionality this.initializeJSTree(treeDiv, rootItems, parentMap); - + contentsDiv.style.display = 'block'; - + // Update status const folderCount = items.filter(item => { const itemType = item.type || item.item_type || 'file'; @@ -744,10 +744,10 @@ class SynapseDesktopClient { if ($.fn.jstree && $(container).jstree) { $(container).jstree('destroy'); } - + // Build JSTree data structure const treeData = this.buildJSTreeData(rootItems, parentMap); - + // Initialize JSTree with enhanced features $(container).jstree({ 'core': { @@ -789,13 +789,13 @@ class SynapseDesktopClient { buildJSTreeData(items, parentMap, parentPath = '') { const treeData = []; - + items.forEach(item => { const hasChildren = parentMap[item.id] && parentMap[item.id].length > 0; const currentPath = parentPath ? `${parentPath}/${item.name}` : item.name; const sizeStr = this.formatFileSize(item.size); const itemType = item.type || item.item_type || 'file'; - + const nodeData = { 'id': item.id, 'text': `${item.name} (${itemType}${sizeStr ? ', ' + sizeStr : ''})`, @@ -809,35 +809,35 @@ class SynapseDesktopClient { 'opened': false } }; - + if (hasChildren) { nodeData.children = this.buildJSTreeData(parentMap[item.id], parentMap, currentPath); } - + treeData.push(nodeData); }); - + return treeData; } handleJSTreeSelection(data) { console.log('handleJSTreeSelection called'); const treeDiv = document.getElementById('items-tree'); - + // Get all checked nodes to rebuild the selection set if ($.fn.jstree && $(treeDiv).jstree) { const checkedNodes = $(treeDiv).jstree('get_checked', true); this.selectedItems.clear(); - + checkedNodes.forEach(node => { if (node.data && node.data.item) { this.selectedItems.add(node.data.item.id); } }); - + console.log(`handleJSTreeSelection: ${this.selectedItems.size} items selected`); } - + this.updateSelectionCount(); } @@ -845,7 +845,7 @@ class SynapseDesktopClient { const parentMap = {}; const rootItems = []; const allItemIds = new Set(items.map(item => item.id)); - + // Build parent-child relationships items.forEach(item => { if (item.parent_id) { @@ -857,7 +857,7 @@ class SynapseDesktopClient { rootItems.push(item); } }); - + // Handle orphaned items (parent not in current item set) if (rootItems.length === 0 && items.length > 0) { items.forEach(item => { @@ -866,7 +866,7 @@ class SynapseDesktopClient { } }); } - + // Sort items: folders first, then alphabetically rootItems.sort((a, b) => { const aType = a.type || a.item_type || 'file'; @@ -876,7 +876,7 @@ class SynapseDesktopClient { } return a.name.localeCompare(b.name); }); - + Object.values(parentMap).forEach(children => { children.sort((a, b) => { const aType = a.type || a.item_type || 'file'; @@ -887,7 +887,7 @@ class SynapseDesktopClient { return a.name.localeCompare(b.name); }); }); - + return { rootItems, parentMap }; } @@ -895,25 +895,25 @@ class SynapseDesktopClient { items.forEach(item => { const hasChildren = parentMap[item.id] && parentMap[item.id].length > 0; const currentPath = parentPath ? `${parentPath}/${item.name}` : item.name; - + // Create tree item element const itemDiv = this.createTreeItem(item, level, hasChildren, currentPath); container.appendChild(itemDiv); - + // Create children container if (hasChildren) { const childrenDiv = document.createElement('div'); childrenDiv.className = 'tree-children'; childrenDiv.id = `children-${item.id}`; - + this.populateTreeLevel( - childrenDiv, - parentMap[item.id], - parentMap, - level + 1, + childrenDiv, + parentMap[item.id], + parentMap, + level + 1, currentPath ); - + container.appendChild(childrenDiv); } }); @@ -925,13 +925,13 @@ class SynapseDesktopClient { itemDiv.dataset.itemId = item.id; itemDiv.dataset.level = level; itemDiv.style.setProperty('--indent-level', level); - + // Format size for display const sizeStr = this.formatFileSize(item.size); const itemType = item.type || item.item_type || 'file'; - + itemDiv.innerHTML = ` -
@@ -943,29 +943,29 @@ class SynapseDesktopClient { ${currentPath}
`; - + // Add checkbox event listener const checkbox = itemDiv.querySelector('input[type="checkbox"]'); checkbox.addEventListener('change', (e) => { this.handleItemSelection(e, item, itemDiv); }); - + // Add context menu support itemDiv.addEventListener('contextmenu', (e) => { e.preventDefault(); this.showTreeItemContextMenu(e, item, itemDiv); }); - + return itemDiv; } toggleTreeNode(itemId) { const toggleButton = document.querySelector(`.tree-item[data-item-id="${itemId}"] .tree-toggle`); const childrenDiv = document.getElementById(`children-${itemId}`); - + if (toggleButton && childrenDiv) { const isExpanded = toggleButton.classList.contains('expanded'); - + if (isExpanded) { toggleButton.classList.remove('expanded'); toggleButton.classList.add('collapsed'); @@ -986,7 +986,7 @@ class SynapseDesktopClient { this.selectedItems.delete(item.id); itemDiv.classList.remove('selected'); } - + // Update selection count display this.updateSelectionCount(); } @@ -994,26 +994,26 @@ class SynapseDesktopClient { updateSelectionCount() { const count = this.selectedItems.size; console.log(`updateSelectionCount called: ${count} items selected`); - + // Calculate stats for selected items - const selectedItemsData = this.containerItems.filter(item => + const selectedItemsData = this.containerItems.filter(item => this.selectedItems.has(item.id) ); - + const fileCount = selectedItemsData.filter(item => { const itemType = item.type || item.item_type || 'file'; return itemType === 'file'; }).length; - + const folderCount = selectedItemsData.filter(item => { const itemType = item.type || item.item_type || 'file'; return itemType === 'folder'; }).length; - + const totalSize = selectedItemsData.reduce((sum, item) => { return sum + (item.size || 0); }, 0); - + // Update selection info let selectionInfo = document.querySelector('.selection-info'); if (!selectionInfo) { @@ -1021,27 +1021,27 @@ class SynapseDesktopClient { selectionInfo = document.createElement('div'); selectionInfo.className = 'selection-info'; selectionInfo.style.cssText = 'margin: 0.5rem 0; font-size: 0.875rem; color: var(--text-muted);'; - + const controlsDiv = document.querySelector('.selection-controls'); if (controlsDiv) { controlsDiv.parentNode.insertBefore(selectionInfo, controlsDiv.nextSibling); } } - + // Format the selection information if (count === 0) { selectionInfo.textContent = 'No items selected'; } else { const sizeStr = this.formatFileSize(totalSize); const parts = []; - + if (fileCount > 0) { parts.push(`${fileCount} file${fileCount !== 1 ? 's' : ''}`); } if (folderCount > 0) { parts.push(`${folderCount} folder${folderCount !== 1 ? 's' : ''}`); } - + let infoText = `${count} item${count !== 1 ? 's' : ''} selected`; if (parts.length > 0) { infoText += ` (${parts.join(', ')})`; @@ -1049,10 +1049,10 @@ class SynapseDesktopClient { if (sizeStr) { infoText += ` - Total size: ${sizeStr}`; } - + selectionInfo.textContent = infoText; } - + // Update download button text and state const downloadBtn = document.getElementById('bulk-download-btn'); if (downloadBtn) { @@ -1061,7 +1061,7 @@ class SynapseDesktopClient { downloadBtn.innerHTML = ' Download Selected Items'; } else { const sizeStr = this.formatFileSize(totalSize); - const btnText = sizeStr + const btnText = sizeStr ? `Download ${count} item${count !== 1 ? 's' : ''} (${sizeStr})` : `Download ${count} item${count !== 1 ? 's' : ''}`; downloadBtn.innerHTML = ` ${btnText}`; @@ -1075,16 +1075,16 @@ class SynapseDesktopClient { formatFileSize(bytes) { if (!bytes || bytes === 0) return ''; - + const units = ['B', 'KB', 'MB', 'GB', 'TB']; let size = bytes; let unitIndex = 0; - + while (size >= 1024 && unitIndex < units.length - 1) { size /= 1024; unitIndex++; } - + return `${size.toFixed(1)} ${units[unitIndex]}`; } @@ -1117,7 +1117,7 @@ class SynapseDesktopClient { if (existingMenu) { existingMenu.remove(); } - + // Create context menu const contextMenu = document.createElement('div'); contextMenu.className = 'tree-context-menu'; @@ -1132,10 +1132,10 @@ class SynapseDesktopClient { z-index: 1000; min-width: 150px; `; - + const checkbox = itemDiv.querySelector('input[type="checkbox"]'); const isSelected = checkbox.checked; - + const menuItems = [ { label: isSelected ? 'Deselect Item' : 'Select Item', @@ -1145,13 +1145,13 @@ class SynapseDesktopClient { } } ]; - + // Add folder-specific options const itemType = item.type || item.item_type || 'file'; if (itemType === 'folder') { const toggleButton = itemDiv.querySelector('.tree-toggle'); const isExpanded = toggleButton && toggleButton.classList.contains('expanded'); - + menuItems.push({ label: isExpanded ? 'Collapse Folder' : 'Expand Folder', action: () => { @@ -1161,7 +1161,7 @@ class SynapseDesktopClient { } }); } - + menuItems.push( { separator: true }, { @@ -1171,7 +1171,7 @@ class SynapseDesktopClient { } } ); - + // Build menu HTML const menuHTML = menuItems.map(menuItem => { if (menuItem.separator) { @@ -1179,9 +1179,9 @@ class SynapseDesktopClient { } return `
${menuItem.label}
`; }).join(''); - + contextMenu.innerHTML = menuHTML; - + // Add event listeners contextMenu.addEventListener('click', (e) => { const actionIndex = e.target.dataset.action; @@ -1190,7 +1190,7 @@ class SynapseDesktopClient { } contextMenu.remove(); }); - + // Close menu when clicking outside const closeMenu = (e) => { if (!contextMenu.contains(e.target)) { @@ -1198,7 +1198,7 @@ class SynapseDesktopClient { document.removeEventListener('click', closeMenu); } }; - + document.addEventListener('click', closeMenu); document.body.appendChild(contextMenu); } @@ -1214,32 +1214,32 @@ Synapse ID: ${item.id} Size: ${item.size ? this.formatFileSize(item.size) : 'N/A'} Parent ID: ${item.parent_id || 'N/A'} `.trim(); - + alert(infoText); } selectAllItems(select) { const treeDiv = document.getElementById('items-tree'); - + if ($.fn.jstree && $(treeDiv).jstree) { if (select) { $(treeDiv).jstree('check_all'); } else { $(treeDiv).jstree('uncheck_all'); } - + // Manually update the selection after JSTree operations // Use a short timeout to ensure JSTree has completed its operations setTimeout(() => { const checkedNodes = $(treeDiv).jstree('get_checked', true); this.selectedItems.clear(); - + checkedNodes.forEach(node => { if (node.data && node.data.item) { this.selectedItems.add(node.data.item.id); } }); - + console.log(`Select all ${select ? 'enabled' : 'disabled'}: ${this.selectedItems.size} items selected`); this.updateSelectionCount(); }, 10); // Slightly longer timeout to ensure completion @@ -1247,11 +1247,11 @@ Parent ID: ${item.parent_id || 'N/A'} // Fallback to original method if JSTree is not available const checkboxes = document.querySelectorAll('#items-tree input[type="checkbox"]'); this.selectedItems.clear(); - + checkboxes.forEach(checkbox => { checkbox.checked = select; const itemDiv = checkbox.closest('.tree-item'); - + if (select) { this.selectedItems.add(checkbox.dataset.itemId); itemDiv.classList.add('selected'); @@ -1259,7 +1259,7 @@ Parent ID: ${item.parent_id || 'N/A'} itemDiv.classList.remove('selected'); } }); - + console.log(`Select all ${select ? 'enabled' : 'disabled'} (fallback): ${this.selectedItems.size} items selected`); this.updateSelectionCount(); } @@ -1268,7 +1268,7 @@ Parent ID: ${item.parent_id || 'N/A'} // Add convenience methods for expand/collapse all expandAllFolders() { const treeDiv = document.getElementById('items-tree'); - + if ($.fn.jstree && $(treeDiv).jstree) { $(treeDiv).jstree('open_all'); } else { @@ -1282,7 +1282,7 @@ Parent ID: ${item.parent_id || 'N/A'} collapseAllFolders() { const treeDiv = document.getElementById('items-tree'); - + if ($.fn.jstree && $(treeDiv).jstree) { $(treeDiv).jstree('close_all'); } else { @@ -1296,28 +1296,28 @@ Parent ID: ${item.parent_id || 'N/A'} async handleBulkDownload() { const downloadPath = document.getElementById('bulk-download-location').value.trim(); - + if (this.selectedItems.size === 0) { this.logMessage('Please select items to download', true); return; } - + if (!downloadPath) { this.logMessage('Download location is required', true); return; } - + try { - const selectedItemsData = this.containerItems.filter(item => + const selectedItemsData = this.containerItems.filter(item => this.selectedItems.has(item.id) ); - + const result = await window.electronAPI.bulkDownload({ items: selectedItemsData, download_path: downloadPath, create_subfolders: document.getElementById('recursive').checked }); - + if (result.success) { this.logMessage(`Bulk download initiated for ${selectedItemsData.length} items`, false); } else { @@ -1329,23 +1329,23 @@ Parent ID: ${item.parent_id || 'N/A'} async handleScanUploadDirectory() { const uploadPath = document.getElementById('bulk-upload-location').value.trim(); - + if (!uploadPath) { this.logMessage('Please select a directory to scan', true); return; } - + try { this.logMessage('Scanning directory for files...', false); - + const recursive = document.getElementById('bulk-preserve-structure').checked; - + // Call backend API to scan directory const result = await window.electronAPI.scanDirectory({ directory_path: uploadPath, recursive: recursive }); - + if (result.success) { this.displayUploadFileContents(result.data.files); const summary = result.data.summary; @@ -1364,18 +1364,18 @@ Parent ID: ${item.parent_id || 'N/A'} displayUploadFileContents(files) { this.uploadFileItems = files; this.selectedUploadFiles.clear(); - + const contentsDiv = document.getElementById('bulk-upload-files'); const treeDiv = document.getElementById('upload-files-tree'); - + treeDiv.innerHTML = ''; - + // Build hierarchical structure for files const { rootItems, parentMap } = this.buildUploadHierarchy(files); - + // Create tree elements this.createUploadTreeElements(rootItems, treeDiv, parentMap); - + contentsDiv.style.display = 'block'; this.updateUploadSelectionDisplay(); } @@ -1389,14 +1389,14 @@ Parent ID: ${item.parent_id || 'N/A'} files.forEach(file => { // Handle both Windows (\) and Unix (/) path separators const pathParts = file.relative_path.replace(/\\/g, '/').split('/').filter(part => part.length > 0); - + // Create all parent directories as virtual folders let currentPath = ''; for (let i = 0; i < pathParts.length - 1; i++) { const part = pathParts[i]; const parentPath = currentPath; currentPath = currentPath ? `${currentPath}/${part}` : part; - + if (!itemsMap.has(currentPath)) { const virtualFolder = { id: `folder_${currentPath}`, @@ -1406,7 +1406,7 @@ Parent ID: ${item.parent_id || 'N/A'} isVirtual: true }; itemsMap.set(currentPath, virtualFolder); - + if (parentPath) { if (!parentMap.has(parentPath)) { parentMap.set(parentPath, []); @@ -1417,7 +1417,7 @@ Parent ID: ${item.parent_id || 'N/A'} } } } - + // Add the file itself const fileName = pathParts[pathParts.length - 1]; const fileObj = { @@ -1426,9 +1426,9 @@ Parent ID: ${item.parent_id || 'N/A'} name: fileName, type: 'file' }; - + const parentPath = pathParts.length > 1 ? pathParts.slice(0, -1).join('/') : ''; - + if (parentPath) { if (!parentMap.has(parentPath)) { parentMap.set(parentPath, []); @@ -1446,21 +1446,21 @@ Parent ID: ${item.parent_id || 'N/A'} items.forEach(item => { const itemElement = this.createUploadTreeItem(item, level); container.appendChild(itemElement); - + // Add children if this is a folder if (item.type === 'folder' && parentMap.has(item.path)) { const childrenContainer = document.createElement('div'); childrenContainer.className = 'tree-children'; childrenContainer.id = `upload-children-${item.id}`; childrenContainer.style.display = 'block'; // Start expanded like download tree - + this.createUploadTreeElements( - parentMap.get(item.path), - childrenContainer, - parentMap, + parentMap.get(item.path), + childrenContainer, + parentMap, level + 1 ); - + container.appendChild(childrenContainer); } }); @@ -1472,9 +1472,9 @@ Parent ID: ${item.parent_id || 'N/A'} itemDiv.dataset.id = item.id; itemDiv.dataset.type = item.type; itemDiv.dataset.level = level; - + let content = ''; - + if (item.type === 'folder') { // For folders: "Folder Name (folder)" - we'll add count later if needed content = ` @@ -1497,14 +1497,14 @@ Parent ID: ${item.parent_id || 'N/A'} ${this.escapeHtml(item.name)} (${sizeStr}) `; - + itemDiv.addEventListener('change', (e) => { if (e.target.classList.contains('item-checkbox')) { this.handleUploadFileSelection(item.id, e.target.checked); } }); } - + itemDiv.innerHTML = content; return itemDiv; } @@ -1521,7 +1521,7 @@ Parent ID: ${item.parent_id || 'N/A'} updateUploadSelectionDisplay() { const selectedCount = this.selectedUploadFiles.size; const totalFiles = this.uploadFileItems.filter(item => item.type === 'file').length; - + const button = document.getElementById('bulk-upload-btn'); if (button) { button.textContent = `Upload Selected Files (${selectedCount})`; @@ -1547,10 +1547,10 @@ Parent ID: ${item.parent_id || 'N/A'} toggleUploadFolder(itemId) { const toggleButton = document.querySelector(`#upload-files-tree .tree-item[data-id="${itemId}"] .tree-toggle`); const childrenDiv = document.getElementById(`upload-children-${itemId}`); - + if (toggleButton && childrenDiv) { const isExpanded = toggleButton.classList.contains('expanded'); - + if (isExpanded) { toggleButton.classList.remove('expanded'); toggleButton.classList.add('collapsed'); @@ -1617,29 +1617,29 @@ Parent ID: ${item.parent_id || 'N/A'} async handleBulkUpload() { const parentId = document.getElementById('bulk-parent-id').value.trim(); const preserveStructure = document.getElementById('bulk-preserve-structure').checked; - + if (!parentId) { this.logMessage('Parent ID is required for bulk upload', true); return; } - + if (this.selectedUploadFiles.size === 0) { this.logMessage('Please select files to upload', true); return; } - + try { // Get selected file data - const selectedFileData = this.uploadFileItems.filter(file => + const selectedFileData = this.uploadFileItems.filter(file => this.selectedUploadFiles.has(`file_${file.path}`) ); - + const result = await window.electronAPI.bulkUpload({ parent_id: parentId, files: selectedFileData, preserve_folder_structure: preserveStructure }); - + if (result.success) { this.logMessage(`Bulk upload initiated for ${selectedFileData.length} files`, false); } else { @@ -1653,7 +1653,7 @@ Parent ID: ${item.parent_id || 'N/A'} const progressText = document.getElementById(`${operation}-progress-text`); const progressBar = document.getElementById(`${operation}-progress`); const button = document.getElementById(`${operation}-btn`); - + if (progressText) progressText.textContent = message; if (progressBar) { progressBar.style.width = '0%'; @@ -1668,17 +1668,17 @@ Parent ID: ${item.parent_id || 'N/A'} button.innerHTML = ' Processing...'; } } - + this.setStatus(message); } updateProgress(operation, progress, message) { const progressText = document.getElementById(`${operation}-progress-text`); const progressBar = document.getElementById(`${operation}-progress`); - + if (progressText) progressText.textContent = message; if (progressBar) progressBar.style.width = `${progress}%`; - + this.setStatus(`${operation}: ${progress}%`); } @@ -1686,7 +1686,7 @@ Parent ID: ${item.parent_id || 'N/A'} const progressText = document.getElementById(`${operation}-progress-text`); const progressBar = document.getElementById(`${operation}-progress`); const button = document.getElementById(`${operation}-btn`); - + if (progressText) { progressText.textContent = success ? 'Operation completed' : 'Operation failed'; } @@ -1706,7 +1706,7 @@ Parent ID: ${item.parent_id || 'N/A'} } // Don't just enable the button - check if it should be enabled based on current form state } - + this.setStatus(success ? 'Operation completed' : 'Operation failed'); } @@ -1739,30 +1739,30 @@ Parent ID: ${item.parent_id || 'N/A'} const modeEl = document.querySelector('input[name="uploadMode"]:checked'); const parentIdEl = document.getElementById('parent-id'); const entityIdEl = document.getElementById('entity-id'); - + if (!filePathEl || !parentIdEl || !entityIdEl) return false; - + const filePath = filePathEl.value.trim(); const mode = modeEl?.value; const parentId = parentIdEl.value.trim(); const entityId = entityIdEl.value.trim(); - + if (!filePath) return false; if (mode === 'new' && !parentId) return false; if (mode === 'update' && !entityId) return false; - + return true; } validateDownloadForm() { const synapseIdEl = document.getElementById('download-id'); const downloadPathEl = document.getElementById('download-location'); - + if (!synapseIdEl || !downloadPathEl) return false; - + const synapseId = synapseIdEl.value.trim(); const downloadPath = downloadPathEl.value.trim(); - + return synapseId && downloadPath; } @@ -1791,7 +1791,7 @@ Parent ID: ${item.parent_id || 'N/A'} updateBulkUploadButtonState() { const button = document.getElementById('bulk-upload-btn'); const parentIdEl = document.getElementById('bulk-parent-id'); - + if (button && parentIdEl) { // Only update state if not currently processing const isProcessing = button.innerHTML.includes('fa-spinner') || button.disabled && button.innerHTML.includes('Processing'); @@ -1806,7 +1806,7 @@ Parent ID: ${item.parent_id || 'N/A'} updateBulkDownloadButtonState() { const button = document.getElementById('bulk-download-btn'); const downloadPathEl = document.getElementById('bulk-download-location'); - + if (button && downloadPathEl) { // Only update state if not currently processing const isProcessing = button.innerHTML.includes('fa-spinner') || button.disabled && button.innerHTML.includes('Processing'); @@ -1820,7 +1820,7 @@ Parent ID: ${item.parent_id || 'N/A'} handleOperationComplete(operation, success, data) { console.log(`Operation complete: ${operation}, success: ${success}`, data); - + if (success) { this.logMessage(`${operation} completed successfully`, false); if (data && data.message) { @@ -1839,11 +1839,11 @@ Parent ID: ${item.parent_id || 'N/A'} const timestamp = new Date().toLocaleTimeString(); const logClass = isError ? 'log-error' : 'log-success'; const icon = isError ? '❌' : '✅'; - + const logEntry = document.createElement('div'); logEntry.className = `log-entry ${logClass}`; logEntry.textContent = `[${timestamp}] ${icon} ${message}`; - + outputLog.appendChild(logEntry); this.updateLogCount(); this.autoScrollIfEnabled(); @@ -1851,10 +1851,10 @@ Parent ID: ${item.parent_id || 'N/A'} logMessageAdvanced(logMessage) { const outputLog = document.getElementById('output-log'); - const timestamp = logMessage.timestamp ? - new Date(logMessage.timestamp * 1000).toLocaleTimeString() : + const timestamp = logMessage.timestamp ? + new Date(logMessage.timestamp * 1000).toLocaleTimeString() : new Date().toLocaleTimeString(); - + // Determine icon based on level const icons = { 'error': '❌', @@ -1865,32 +1865,32 @@ Parent ID: ${item.parent_id || 'N/A'} 'debug': '🔍', 'success': '✅' }; - + const icon = icons[logMessage.level] || 'ℹ️'; const logClass = `log-${logMessage.level || 'info'}`; - + const logEntry = document.createElement('div'); logEntry.className = `log-entry ${logClass}`; - + // Create structured log entry let logContent = ''; logContent += `[${timestamp}]`; - + if (logMessage.operation) { logContent += `[${logMessage.operation}]`; } - + if (logMessage.source && logMessage.source !== 'synapse-backend') { logContent += `[${logMessage.source}]`; } - + logContent += ` ${icon} ${this.escapeHtml(logMessage.message)}`; - + logEntry.innerHTML = logContent; outputLog.appendChild(logEntry); - + this.updateLogCount(); - + // Always attempt auto-scroll for real-time updates this.autoScrollIfEnabled(); } @@ -1914,9 +1914,9 @@ Parent ID: ${item.parent_id || 'N/A'} if (!this.isAutoScrollEnabled()) { return; } - + const now = Date.now(); - + // Throttle scroll operations to prevent excessive scrolling if (now - this.lastScrollTime < this.scrollThrottleDelay) { if (!this.pendingScroll) { @@ -1930,13 +1930,13 @@ Parent ID: ${item.parent_id || 'N/A'} } return; } - + this.performScroll(); } performScroll() { this.lastScrollTime = Date.now(); - + // Use requestAnimationFrame to ensure DOM has updated before scrolling requestAnimationFrame(() => { this.scrollToBottom(); @@ -1950,14 +1950,14 @@ Parent ID: ${item.parent_id || 'N/A'} scrollToBottom() { const outputLog = document.getElementById('output-log'); if (!outputLog) return; - + // For real-time scrolling, we want immediate results, so use instant scroll // but also ensure it gets to the very bottom const targetScrollTop = outputLog.scrollHeight - outputLog.clientHeight; - + // Set scroll position immediately outputLog.scrollTop = targetScrollTop; - + // Double-check after a short delay to handle any DOM updates setTimeout(() => { const newTargetScrollTop = outputLog.scrollHeight - outputLog.clientHeight; @@ -1975,7 +1975,7 @@ Parent ID: ${item.parent_id || 'N/A'} updateAutoScrollUI() { const toggleBtn = document.getElementById('auto-scroll-toggle'); const statusSpan = document.getElementById('auto-scroll-status'); - + if (this.isAutoScrollEnabled()) { toggleBtn.classList.add('auto-scroll-enabled'); toggleBtn.classList.remove('auto-scroll-disabled'); @@ -2002,7 +2002,7 @@ Parent ID: ${item.parent_id || 'N/A'} clearOutput() { document.getElementById('output-log').innerHTML = ''; this.updateLogCount(); - + // Reset scroll state this.pendingScroll = false; this.lastScrollTime = 0; @@ -2023,7 +2023,7 @@ Parent ID: ${item.parent_id || 'N/A'} element.textContent = message; element.className = `status-message ${type}`; element.style.display = 'block'; - + // Auto-hide after 5 seconds setTimeout(() => { element.style.display = 'none'; diff --git a/synapse-electron/src/index.html b/synapse-electron/src/index.html index eb4652b44..8e1aa9599 100644 --- a/synapse-electron/src/index.html +++ b/synapse-electron/src/index.html @@ -33,7 +33,7 @@

Login to Synapse

- + - +

Upload Mode

@@ -262,7 +262,7 @@

Enumerate Contents - +