# Lists the available actions
default:
	@just --list

# Test coverage
coverage: bun-test deno-coverage

# Typescript checking
check: deno-check bun-check

docs:
	deno doc --html --unstable-ffi --name="Scroll" ./src/scroll.ts ./src/common/mod.ts ./src/deno/mod.ts ./src/bun/mod.ts

# Reformat the code
fmt:
	deno fmt

# Run tests with all the runtimes
test: deno-test bun-test

# Clean up any generated files
clean:
	rm -rf .deno-cover
	rm -rf cover
	rm -rf docs

########################################################################################################################
# Bun-specific commands
########################################################################################################################

# Check code with actual Typescript compiler
bun-check:
	bunx tsc

# Test with bun
bun-test:
	bun test --coverage

# Run with bun
bun-run file="":
	bun run ./src/scroll.ts {{file}}

########################################################################################################################
# Deno-specific commands
########################################################################################################################

# Lint code and check types
deno-check:
	deno lint
	deno check --unstable  --all -c deno.jsonc ./src/deno/*.ts ./src/common/*.ts

# Test with deno
deno-test:
	deno test --allow-all --unstable

# Create test coverage report with deno
deno-coverage:
	./coverage.sh

# Run with deno
deno-run file="":
	deno run --allow-all --allow-ffi --deny-net --deny-hrtime --unstable ./src/scroll.ts {{file}}