{
  "name": "firefox-lldb",
  "version": "0.1.5",
  "description": "LLDB platform server and GDB remote stub for debugging WebAssembly running inside Firefox",
  "keywords": [
    "lldb",
    "wasm",
    "webassembly",
    "debugger",
    "firefox",
    "gdb"
  ],
  "homepage": "https://github.com/eqrion/firefox-lldb",
  "repository": {
    "type": "git",
    "url": "https://github.com/eqrion/firefox-lldb.git"
  },
  "type": "module",
  "license": "MPL-2.0",
  "engines": {
    "node": ">=20"
  },
  "files": [
    "dist"
  ],
  "bin": {
    "firefox-lldb": "./dist/cli/firefox-lldb.js",
    "firefox-lldb-server": "./dist/cli/firefox-lldb-server.js",
    "firefox-lldb-mcp": "./dist/mcp/server.js"
  },
  "scripts": {
    "postinstall": "chmod +x node_modules/node-pty/prebuilds/*/spawn-helper 2>/dev/null || true",
    "build": "tsc -p tsconfig.json && node scripts/copy-assets.mjs",
    "prepublishOnly": "npm run build",
    "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json",
    "format": "prettier --write .",
    "format:check": "prettier --check .",
    "check": "npm run typecheck && npm run format:check",
    "test": "node --import tsx --test test/unit/*.test.ts",
    "test:e2e": "node --import tsx --test --test-concurrency=${E2E_CONCURRENCY:-4} --test-timeout=120000 --test-reporter=./test/e2e/reporter.mjs test/e2e/*.test.mjs",
    "launch": "node --import tsx src/cli/firefox-lldb.ts --launch --rdp-port ${RDP_PORT:-6080} ${URL:+--url $URL}",
    "launch-server": "node --import tsx src/cli/firefox-lldb-server.ts --launch --port ${PORT:-1234} --rdp-port ${RDP_PORT:-6080} ${URL:+--url $URL}",
    "connect": "node --import tsx src/cli/firefox-lldb-server.ts --connect --port ${PORT:-1234} --rdp-port ${RDP_PORT:-6080} ${URL:+--url $URL}",
    "mcp": "node --import tsx src/mcp/server.ts",
    "component:build": "cd vendor/gdbstub-component && cargo build --release --target wasm32-wasip2",
    "component:transpile": "npx jco transpile vendor/gdbstub-component/target/wasm32-wasip2/release/firefox_lldb_gdbstub_component.wasm -o src/gdb/generated --name gdbstub --instantiation async && node scripts/patch-generated.mjs",
    "component": "npm run component:build && npm run component:transpile",
    "sourcemap:build": "cd vendor/source-map-dwarf-component && cargo build --release --target wasm32-wasip2",
    "sourcemap:transpile": "npx jco transpile vendor/source-map-dwarf-component/target/wasm32-wasip2/release/firefox_lldb_source_map_component.wasm -o src/sourcemap/generated --name sourcemap --instantiation async",
    "sourcemap": "npm run sourcemap:build && npm run sourcemap:transpile",
    "test:rust": "cargo test --manifest-path vendor/source-map-dwarf/Cargo.toml",
    "build:fixtures": "npm run build:fixture-simple && npm run build:fixture-oop && npm run build:fixture-parser && npm run build:fixture-ledger && npm run build:fixture-types && npm run build:fixture-heap && npm run build:fixture-trap && npm run build:fixture-sourcemap && npm run build:fixture-eh && npm run build:fixture-jspi && npm run build:fixture-large",
    "build:fixture-sourcemap": "cd test/fixtures/sourcemap && ${EMSDK:+$EMSDK/upstream/emscripten/}emcc math.cpp -o math.js -gsource-map -O0 -s EXPORTED_RUNTIME_METHODS='[\"cwrap\"]' -s MODULARIZE=1 -s EXPORT_NAME=MathModule",
    "build:fixture-simple": "cd test/fixtures/simple && ${EMSDK:+$EMSDK/upstream/emscripten/}emcc math.cpp -o math.js -gdwarf-5 -gembed-source -O0 -s EXPORTED_RUNTIME_METHODS='[\"cwrap\"]' -s MODULARIZE=1 -s EXPORT_NAME=MathModule",
    "build:fixture-oop": "cd test/fixtures/oop && ${EMSDK:+$EMSDK/upstream/emscripten/}emcc oop.cpp -o oop.js -gdwarf-5 -gembed-source -O0 -s EXPORTED_RUNTIME_METHODS='[\"cwrap\"]' -s MODULARIZE=1 -s EXPORT_NAME=OopModule",
    "build:fixture-parser": "cd test/fixtures/parser && ${EMSDK:+$EMSDK/upstream/emscripten/}emcc parser.cpp -o parser.js -gdwarf-5 -gembed-source -O0 -s EXPORTED_RUNTIME_METHODS='[\"cwrap\"]' -s MODULARIZE=1 -s EXPORT_NAME=ParserModule",
    "build:fixture-ledger": "cd test/fixtures/ledger && ${EMSDK:+$EMSDK/upstream/emscripten/}emcc ledger.cpp -o ledger.js -gdwarf-5 -gembed-source -O0 -s EXPORTED_RUNTIME_METHODS='[\"cwrap\"]' -s MODULARIZE=1 -s EXPORT_NAME=LedgerModule",
    "build:fixture-types": "cd test/fixtures/types && ${EMSDK:+$EMSDK/upstream/emscripten/}emcc types.cpp -o types.js -gdwarf-5 -gembed-source -O0 -s EXPORTED_RUNTIME_METHODS='[\"cwrap\"]' -s MODULARIZE=1 -s EXPORT_NAME=TypesModule",
    "build:fixture-heap": "cd test/fixtures/heap && ${EMSDK:+$EMSDK/upstream/emscripten/}emcc heap.cpp -o heap.js -gdwarf-5 -gembed-source -O0 -s EXPORTED_RUNTIME_METHODS='[\"cwrap\"]' -s MODULARIZE=1 -s EXPORT_NAME=HeapModule",
    "build:fixture-trap": "cd test/fixtures/trap && ${EMSDK:+$EMSDK/upstream/emscripten/}emcc trap.cpp -o trap.js -gdwarf-5 -gembed-source -O0 -s EXPORTED_RUNTIME_METHODS='[\"cwrap\"]' -s MODULARIZE=1 -s EXPORT_NAME=TrapModule",
    "build:fixture-eh": "cd test/fixtures/eh && ${EMSDK:+$EMSDK/upstream/emscripten/}emcc eh.cpp -o eh.js -fwasm-exceptions -gdwarf-5 -gembed-source -O0 -s EXPORTED_RUNTIME_METHODS='[\"cwrap\"]' -s MODULARIZE=1 -s EXPORT_NAME=EhModule",
    "build:fixture-jspi": "cd test/fixtures/jspi && ${EMSDK:+$EMSDK/upstream/emscripten/}emcc jspi.c -o jspi.js -sJSPI -gdwarf-5 -gembed-source -O0 -s EXPORTED_RUNTIME_METHODS='[\"cwrap\",\"ccall\"]' -s MODULARIZE=1 -s EXPORT_NAME=JspiModule",
    "build:fixture-large": "bash scripts/build-fixture-large.sh",
    "test:e2e-python": "LLDB=${LLDB:-$LLVM/build/bin/lldb} python3 test/e2e-python/run.py"
  },
  "dependencies": {
    "@bytecodealliance/preview2-shim": "^0.18.1",
    "@modelcontextprotocol/sdk": "^1.12.0",
    "lldb-wasm": "^0.1.2",
    "node-pty": "^1.1.0"
  },
  "devDependencies": {
    "@bytecodealliance/jco": "1.24.3",
    "@types/node": "^22.10.0",
    "prettier": "^3.0.0",
    "tsx": "^4.19.0",
    "typescript": "^5.7.0"
  }
}
