# converge component justfile

moon_component := env("MOON_COMPONENT", "moon-component")
wasm := "_build/wasm/release/build/impl/impl.wasm"
out := "converge-component.wasm"

# Build wasm core module
build-wasm:
  moon build --target wasm --release

# Create component from core wasm
build: build-wasm
  {{moon_component}} componentize {{wasm}} --wit wit --world converge-world -o {{out}}

# Regenerate bindings from WIT (requires moon-component CLI)
generate:
  {{moon_component}} wit/world.wit --out-dir . --impl-dir impl --pkg-format dsl
  node scripts/migrate-generated.mjs

# Transpile component to JS for testing
transpile: build
  npx jco transpile {{out}} -o test/gen

# Run Node.js test
test: transpile
  node test/test.mjs

# Inspect component WIT
wit: build
  wasm-tools component wit {{out}}

# Full rebuild: generate + build + test
all: generate test
