diff --git a/Makefile b/Makefile index d5d26c6..cc4ce61 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,10 @@ .PHONY: wasm test clean WASM_OUT := dist/go-html.wasm +# Raw size limit: 3MB (Go WASM has ~2MB runtime floor) +WASM_RAW_LIMIT := 3145728 +# Gzip transfer size limit: 1MB (what users actually download) +WASM_GZ_LIMIT := 1048576 test: go test ./... @@ -10,12 +14,16 @@ wasm: $(WASM_OUT) $(WASM_OUT): @mkdir -p dist GOOS=js GOARCH=wasm go build -ldflags="-s -w" -o $(WASM_OUT) ./cmd/wasm/ - @ls -lh $(WASM_OUT) - @SIZE=$$(stat -c%s "$(WASM_OUT)" 2>/dev/null || stat -f%z "$(WASM_OUT)"); \ - if [ "$$SIZE" -gt 2097152 ]; then \ - echo "WARNING: WASM binary exceeds 2MB target ($${SIZE} bytes)"; \ + @RAW=$$(stat -c%s "$(WASM_OUT)" 2>/dev/null || stat -f%z "$(WASM_OUT)"); \ + GZ=$$(gzip -c "$(WASM_OUT)" | wc -c); \ + echo "WASM size: $${RAW} bytes raw, $${GZ} bytes gzip"; \ + if [ "$$GZ" -gt $(WASM_GZ_LIMIT) ]; then \ + echo "FAIL: gzip transfer size exceeds 1MB limit ($${GZ} bytes)"; \ + exit 1; \ + elif [ "$$RAW" -gt $(WASM_RAW_LIMIT) ]; then \ + echo "WARNING: raw binary exceeds 3MB ($${RAW} bytes) — check imports"; \ else \ - echo "OK: WASM binary within 2MB target ($${SIZE} bytes)"; \ + echo "OK: gzip $${GZ} bytes (limit 1MB), raw $${RAW} bytes (limit 3MB)"; \ fi clean: