{
  "name": "numbl",
  "version": "0.4.11",
  "description": "Run .m source files in the browser and on the command line by compiling to JavaScript",
  "license": "Apache-2.0",
  "type": "module",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/flatironinstitute/numbl.git"
  },
  "keywords": [
    "compiler",
    "javascript",
    "browser",
    "cli",
    "numerical-computing"
  ],
  "engines": {
    "node": ">=18"
  },
  "main": "dist-lib/lib.js",
  "types": "dist-lib/lib.d.ts",
  "exports": {
    ".": {
      "types": "./dist-lib/lib.d.ts",
      "import": "./dist-lib/lib.js"
    },
    "./graphics": {
      "types": "./dist-graphics/graphics-lib.d.ts",
      "import": "./dist-graphics/index.js"
    },
    "./browser": {
      "types": "./dist-browser/browser/index.d.ts",
      "import": "./dist-browser/browser.js"
    }
  },
  "bin": {
    "numbl": "dist-cli/cli.js"
  },
  "files": [
    "dist-lib/",
    "dist-browser/",
    "dist-graphics/",
    "dist-cli/",
    "dist-plot-viewer/",
    "dist-site-viewer/",
    "native/",
    "binding.gyp"
  ],
  "scripts": {
    "dev": "npm run build:snippets && npm run bundle:stdlib && vite",
    "build": "npm run build:web && npm run build:test-runner && npm run copy:test-scripts && npm run build:cli && npm run build:plot-viewer && npm run build:site-viewer",
    "build:plot-viewer": "vite build --config vite.plot-viewer.config.ts",
    "build:site-viewer": "npm run build:snippets && npm run bundle:stdlib && vite build --config vite.site-viewer.config.ts",
    "dev:site-viewer": "npm run build:snippets && npm run bundle:stdlib && vite --config vite.site-viewer.config.ts",
    "build:test-runner": "npm run build:snippets && npm run bundle:stdlib && vite build --config vite.test-runner.config.ts",
    "dev:test-runner": "npm run build:snippets && npm run bundle:stdlib && vite --config vite.test-runner.config.ts",
    "copy:test-scripts": "tsx scripts/copy-test-scripts.ts",
    "bundle:stdlib": "tsx scripts/bundle-stdlib.ts",
    "build:snippets": "tsx scripts/build_runtime_snippets.ts",
    "build:snippets:check": "tsx scripts/build_runtime_snippets.ts --check",
    "build:web": "npm run build:snippets && npm run bundle:stdlib && tsc -b && vite build",
    "build:lib": "npm run build:snippets && npm run bundle:stdlib && esbuild src/lib.ts --bundle --platform=node --format=esm --outfile=dist-lib/lib.js --packages=external --loader:.wasm=file && tsc -p tsconfig.lib.json",
    "build:cli": "npm run build:snippets && npm run bundle:stdlib && esbuild src/cli.ts --bundle --platform=node --format=esm --outfile=dist-cli/cli.js --packages=external --loader:.wasm=file",
    "build:graphics": "esbuild src/graphics-lib.ts --bundle --platform=browser --format=esm --outfile=dist-graphics/index.js --external:react --external:react-dom --external:react/jsx-runtime --external:h5wasm --jsx=automatic && tsc -p tsconfig.graphics.json",
    "install": "true",
    "build:addon": "node-gyp rebuild",
    "format": "prettier --write .",
    "format:check": "prettier --check .",
    "lint": "eslint .",
    "typecheck": "tsc -b",
    "preview": "vite preview",
    "test": "vitest run",
    "test:coverage": "vitest run --coverage",
    "test:coverage:all": "bash scripts/coverage-all.sh",
    "test:scripts": "bash numbl_test_scripts/run_all.sh",
    "jit-parity": "node jit_parity/run.mjs",
    "test:browser": "playwright test",
    "build:wasm": "bash numbl_test_scripts/build_wasm.sh",
    "update-readme": "tsx scripts/update-readme-usage.ts",
    "check-readme": "tsx scripts/update-readme-usage.ts --check",
    "bump": "tsx scripts/bump-version.ts",
    "prepublishOnly": "npm run build:lib && npm run build:browser && npm run build:graphics && npm run build:cli && npm run build:plot-viewer && npm run build:site-viewer",
    "prepare": "husky",
    "build:browser": "npm run build:snippets && npm run bundle:stdlib && tsx scripts/build_browser.ts"
  },
  "dependencies": {
    "fflate": "^0.8.2",
    "h5wasm": "^0.10.3",
    "node-addon-api": "^8.3.0",
    "pako": "^2.1.0",
    "qhull-wasm": "^0.0.1",
    "react-markdown": "^10.1.0",
    "react-syntax-highlighter": "^16.1.1",
    "remark-gfm": "^4.0.1",
    "three": "^0.183.2"
  },
  "peerDependencies": {
    "react": ">=18",
    "react-dom": ">=18"
  },
  "peerDependenciesMeta": {
    "react": {
      "optional": true
    },
    "react-dom": {
      "optional": true
    }
  },
  "devDependencies": {
    "@emotion/react": "^11.14.0",
    "@emotion/styled": "^11.14.1",
    "@eslint/js": "^9.39.1",
    "@monaco-editor/react": "^4.7.0",
    "@mui/icons-material": "^7.3.7",
    "@mui/material": "^7.3.7",
    "@playwright/test": "^1.59.1",
    "@types/node": "^24.10.1",
    "@types/pako": "^2.0.4",
    "@types/react": "^19.2.5",
    "@types/react-dom": "^19.2.3",
    "@types/react-syntax-highlighter": "^15.5.13",
    "@types/three": "^0.183.1",
    "@vitejs/plugin-react": "^5.1.1",
    "@vitest/coverage-v8": "^4.0.18",
    "@xterm/addon-fit": "^0.11.0",
    "@xterm/xterm": "^6.0.0",
    "dexie": "^4.3.0",
    "esbuild": "^0.27.3",
    "eslint": "^9.39.1",
    "eslint-config-prettier": "^10.1.8",
    "eslint-plugin-react-hooks": "^7.0.1",
    "eslint-plugin-react-refresh": "^0.4.24",
    "globals": "^16.5.0",
    "husky": "^9.1.7",
    "lint-staged": "^16.2.7",
    "node-gyp": "^11.2.0",
    "prettier": "^3.8.1",
    "react": "^19.2.0",
    "react-dom": "^19.2.0",
    "react-router-dom": "^7.13.0",
    "tsx": "^4.21.0",
    "typescript": "~5.9.3",
    "typescript-eslint": "^8.46.4",
    "vite": "^7.2.4",
    "vite-plugin-wasm": "^3.5.0",
    "vitest": "^4.0.18"
  },
  "lint-staged": {
    "*.{ts,tsx}": [
      "prettier --write",
      "eslint"
    ],
    "*.{js,jsx}": "prettier --write",
    "*.{json,css,md,yml}": "prettier --write"
  },
  "optionalDependencies": {
    "koffi": "^2.15.2"
  }
}
