Merge commit 'd803bfe2b1fe7f5e219e50ac20d6801a0a58ac75' as 'vendor/ruvector'
This commit is contained in:
103
vendor/ruvector/.claude/hooks/wasm-size-check.sh
vendored
Executable file
103
vendor/ruvector/.claude/hooks/wasm-size-check.sh
vendored
Executable file
@@ -0,0 +1,103 @@
|
||||
#!/bin/bash
|
||||
# WASM size checker for rvlite and other WASM crates
|
||||
# Ensures bundles stay within target size (<3MB gzipped)
|
||||
|
||||
set -e
|
||||
|
||||
CRATE="${1:-rvlite}"
|
||||
MAX_SIZE_KB="${2:-3072}" # 3MB default
|
||||
|
||||
cd /workspaces/ruvector
|
||||
|
||||
echo "📏 WASM Size Checker"
|
||||
echo "==================="
|
||||
echo ""
|
||||
|
||||
check_wasm_size() {
|
||||
local crate_dir=$1
|
||||
local pkg_dir="$crate_dir/pkg"
|
||||
|
||||
if [ ! -d "$pkg_dir" ]; then
|
||||
echo "⚠️ No pkg/ directory found for $crate_dir"
|
||||
echo " Run: cd $crate_dir && wasm-pack build --release"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "📦 Checking: $crate_dir"
|
||||
|
||||
# Find .wasm files
|
||||
for wasm_file in "$pkg_dir"/*.wasm; do
|
||||
if [ -f "$wasm_file" ]; then
|
||||
# Raw size
|
||||
RAW_SIZE=$(stat -c%s "$wasm_file" 2>/dev/null || stat -f%z "$wasm_file")
|
||||
RAW_SIZE_KB=$((RAW_SIZE / 1024))
|
||||
|
||||
# Gzipped size
|
||||
GZIP_SIZE=$(gzip -c "$wasm_file" | wc -c)
|
||||
GZIP_SIZE_KB=$((GZIP_SIZE / 1024))
|
||||
|
||||
echo " 📄 $(basename "$wasm_file")"
|
||||
echo " Raw: ${RAW_SIZE_KB} KB"
|
||||
echo " Gzipped: ${GZIP_SIZE_KB} KB"
|
||||
|
||||
if [ "$GZIP_SIZE_KB" -gt "$MAX_SIZE_KB" ]; then
|
||||
echo " ❌ EXCEEDS target of ${MAX_SIZE_KB} KB!"
|
||||
return 1
|
||||
else
|
||||
PERCENT=$((GZIP_SIZE_KB * 100 / MAX_SIZE_KB))
|
||||
echo " ✅ ${PERCENT}% of budget"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
case "$CRATE" in
|
||||
"all")
|
||||
echo "Checking all WASM crates..."
|
||||
echo ""
|
||||
for dir in crates/*-wasm crates/rvlite; do
|
||||
if [ -d "$dir" ]; then
|
||||
check_wasm_size "$dir" || true
|
||||
echo ""
|
||||
fi
|
||||
done
|
||||
;;
|
||||
|
||||
"rvlite")
|
||||
check_wasm_size "crates/rvlite"
|
||||
;;
|
||||
|
||||
"ruvector-wasm"|"core")
|
||||
check_wasm_size "crates/ruvector-wasm"
|
||||
;;
|
||||
|
||||
"graph"|"ruvector-graph-wasm")
|
||||
check_wasm_size "crates/ruvector-graph-wasm"
|
||||
;;
|
||||
|
||||
"gnn"|"ruvector-gnn-wasm")
|
||||
check_wasm_size "crates/ruvector-gnn-wasm"
|
||||
;;
|
||||
|
||||
"attention"|"ruvector-attention-wasm")
|
||||
check_wasm_size "crates/ruvector-attention-wasm"
|
||||
;;
|
||||
|
||||
"mincut"|"ruvector-mincut-wasm")
|
||||
check_wasm_size "crates/ruvector-mincut-wasm"
|
||||
;;
|
||||
|
||||
*)
|
||||
if [ -d "crates/$CRATE" ]; then
|
||||
check_wasm_size "crates/$CRATE"
|
||||
else
|
||||
echo "Usage: $0 [all|rvlite|core|graph|gnn|attention|mincut|<crate-name>]"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
echo ""
|
||||
echo "✅ Size check complete"
|
||||
Reference in New Issue
Block a user