#!/bin/bash
# Production WASM Build Script
# Modern pipeline: cargo build + wasm-bindgen + wasm-opt (aggressive)

set -e

echo "Building Production WASM Module..."
echo ""

# Check for Rust
if ! command -v rustc &> /dev/null; then
    echo "Rust not found!"
    echo "Install: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh"
    exit 1
fi
echo "Rust: $(rustc --version)"

# Check for wasm-bindgen-cli
if ! command -v wasm-bindgen &> /dev/null; then
    echo "Installing wasm-bindgen-cli..."
    cargo install wasm-bindgen-cli
fi
echo "wasm-bindgen: $(wasm-bindgen --version)"

# Add WASM target
rustup target add wasm32-unknown-unknown 2>/dev/null || true

# Step 1: Cargo build (release)
echo ""
echo "Step 1/3: cargo build (release)..."
cargo build --target wasm32-unknown-unknown --release

# Step 2: wasm-bindgen
echo ""
echo "Step 2/3: wasm-bindgen (JS bindings)..."
mkdir -p pkg
wasm-bindgen \
  target/wasm32-unknown-unknown/release/fikoyt_wasm.wasm \
  --out-dir pkg \
  --target web \
  --typescript

# Step 3: wasm-opt (aggressive for production)
echo ""
echo "Step 3/3: wasm-opt (production optimization)..."
if command -v wasm-opt &> /dev/null; then
    BEFORE=$(stat -f%z pkg/fikoyt_wasm_bg.wasm 2>/dev/null || stat --printf="%s" pkg/fikoyt_wasm_bg.wasm 2>/dev/null || echo "?")
    wasm-opt pkg/fikoyt_wasm_bg.wasm \
      -o pkg/fikoyt_wasm_bg.wasm \
      -Oz \
      --enable-simd \
      --enable-bulk-memory \
      --converge
    AFTER=$(stat -f%z pkg/fikoyt_wasm_bg.wasm 2>/dev/null || stat --printf="%s" pkg/fikoyt_wasm_bg.wasm 2>/dev/null || echo "?")
    echo "wasm-opt: ${BEFORE} -> ${AFTER} bytes"
else
    echo "WARNING: wasm-opt not found! Install binaryen for production builds."
    echo "  cargo install wasm-opt"
fi

# Copy to public/assets
echo ""
echo "Copying to public/assets/fikoyt-wasm..."
mkdir -p ../public/assets/fikoyt-wasm
cp -v pkg/fikoyt_wasm* ../public/assets/fikoyt-wasm/
cp -v pkg/package.json ../public/assets/fikoyt-wasm/ 2>/dev/null || true

echo ""
echo "Production WASM ready!"
echo "Build artifacts:"
ls -lh ../public/assets/fikoyt-wasm/ | grep -E "fikoyt_wasm"
echo ""
echo "Next step: npm run build"
