{
  "name": "kerfjs",
  "version": "4.4.1",
  "description": "Tiny reactive UI framework — fine-grained signals + DOM morphing + JSX. Apply the smallest possible cut to update your DOM.",
  "type": "module",
  "sideEffects": [
    "./dist/dev.js",
    "./src/dev.ts"
  ],
  "license": "MIT",
  "author": "Brian Westphal <brian.westphal@bleugris.com>",
  "homepage": "https://brianwestphal.github.io/kerf/",
  "repository": {
    "type": "git",
    "url": "https://github.com/brianwestphal/kerf"
  },
  "bugs": {
    "url": "https://github.com/brianwestphal/kerf/issues"
  },
  "funding": {
    "type": "github",
    "url": "https://github.com/sponsors/brianwestphal"
  },
  "keywords": [
    "reactive",
    "signals",
    "jsx",
    "dom",
    "ui-framework",
    "tiny",
    "fine-grained-reactivity"
  ],
  "engines": {
    "node": ">=18.0.0"
  },
  "main": "./dist/index.js",
  "types": "./dist/index.d.ts",
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "import": "./dist/index.js"
    },
    "./jsx-runtime": {
      "types": "./dist/jsx-runtime.d.ts",
      "import": "./dist/jsx-runtime.js"
    },
    "./jsx-dev-runtime": {
      "types": "./dist/jsx-runtime.d.ts",
      "import": "./dist/jsx-runtime.js"
    },
    "./testing": {
      "types": "./dist/testing.d.ts",
      "import": "./dist/testing.js"
    },
    "./array-signal": {
      "types": "./dist/array-signal.d.ts",
      "import": "./dist/array-signal.js"
    },
    "./dev": {
      "types": "./dist/dev.d.ts",
      "import": "./dist/dev.js"
    },
    "./html": {
      "types": "./dist/html.d.ts",
      "import": "./dist/html.js"
    },
    "./actions": {
      "types": "./dist/actions.d.ts",
      "import": "./dist/actions.js"
    },
    "./overlay": {
      "types": "./dist/overlay.d.ts",
      "import": "./dist/overlay.js"
    },
    "./scope": {
      "types": "./dist/scope.d.ts",
      "import": "./dist/scope.js"
    },
    "./async": {
      "types": "./dist/async.d.ts",
      "import": "./dist/async.js"
    },
    "./list": {
      "types": "./dist/list.d.ts",
      "import": "./dist/list.js"
    },
    "./router": {
      "types": "./dist/router.d.ts",
      "import": "./dist/router.js"
    },
    "./timing": {
      "types": "./dist/timing.d.ts",
      "import": "./dist/timing.js"
    },
    "./remount": {
      "types": "./dist/remount.d.ts",
      "import": "./dist/remount.js"
    },
    "./attach": {
      "types": "./dist/attach.d.ts",
      "import": "./dist/attach.js"
    },
    "./ai/*": "./ai/*"
  },
  "files": [
    "dist",
    "ai",
    "llms.txt",
    "README.md",
    "CHANGELOG.md",
    "LICENSE"
  ],
  "scripts": {
    "build": "tsup",
    "dev": "tsup --watch",
    "test": "vitest run --coverage",
    "test:watch": "vitest",
    "test:unit": "vitest run tests/unit --coverage",
    "test:integration": "vitest run tests/integration --coverage",
    "test:dist": "npm run build && vitest run --config vitest.config.dist.ts",
    "test:dist:full": "npm run build && vitest run --config vitest.config.dist-full.ts",
    "test:dist:jsx-typing": "npm run build && node node_modules/typescript7/bin/tsc -p tests/dist/jsx-typing/tsconfig.json",
    "test:dist:examples": "npm run build && node node_modules/typescript7/bin/tsc -p site/src/examples/complete/tsconfig.json",
    "test:dist:scaffold-typing": "npm run build && node node_modules/typescript7/bin/tsc -p tests/dist/scaffold-typing/tsconfig.json",
    "test:browser": "npm run build && playwright test",
    "bench:micro": "vitest bench --run --config vitest.config.bench.ts",
    "bench:serve": "bash bench/site.sh",
    "lint": "eslint src tests",
    "typecheck": "node node_modules/typescript7/bin/tsc --noEmit",
    "check": "npm run lint && npm run typecheck && node scripts/check-doc-test-inventory.mjs && node scripts/check-doc-api-coverage.mjs && node scripts/check-doc-site-tickets.mjs && node scripts/check-cdn-versions.mjs && node scripts/check-dev-warn-docs.mjs && node scripts/check-skill-freshness.mjs && node scripts/check-design-rule-5.mjs && node scripts/check-feature-coverage.mjs && node scripts/check-ai-bundle.mjs && npm test && npm run build && node scripts/check-bundle-size.mjs && node scripts/check-doc-api-signatures.mjs && vitest run --config vitest.config.dist.ts && vitest run --config vitest.config.dist-full.ts && node node_modules/typescript7/bin/tsc -p tests/dist/jsx-typing/tsconfig.json && node node_modules/typescript7/bin/tsc -p site/src/examples/complete/tsconfig.json && node node_modules/typescript7/bin/tsc -p tests/dist/scaffold-typing/tsconfig.json && node scripts/check-docs-examples.mjs",
    "check:docs:examples": "node scripts/check-docs-examples.mjs",
    "check:full": "npm run check && npm run --silent check:audit && playwright test",
    "check:docs:test-inventory": "node scripts/check-doc-test-inventory.mjs",
    "check:docs:api-coverage": "node scripts/check-doc-api-coverage.mjs",
    "check:docs:site-tickets": "node scripts/check-doc-site-tickets.mjs",
    "check:cdn-versions": "node scripts/check-cdn-versions.mjs",
    "check:docs:api-signatures": "npm run build && node scripts/check-doc-api-signatures.mjs",
    "fuzz:soak": "node scripts/fuzz-soak.mjs",
    "check:features": "node scripts/check-feature-coverage.mjs",
    "check:ai-bundle-in-sync": "node scripts/check-ai-bundle.mjs",
    "ai-bundle:sync": "node scripts/sync-ai-bundle.mjs",
    "clean": "rm -rf dist coverage node_modules/.cache",
    "prepare": "husky",
    "release": "bash scripts/release.sh",
    "release:beta": "bash scripts/release.sh --beta",
    "release:beta:auto": "bash scripts/release-beta-auto.sh",
    "commit:msg": "gitgist --staged --commit-message",
    "prepublishOnly": "npm run build",
    "example:reactivity-demo": "cd examples/reactivity-demo && npm install && npm run dev",
    "example:reactivity-demo:build": "cd examples/reactivity-demo && npm install && npm run build",
    "site:dev": "cd site && npm install && npm run dev",
    "site:dev:hmr": "cd site && npm install && npm run dev:hmr",
    "site:build": "cd site && npm install && npm run build",
    "check:bundle-size": "npm run build && node scripts/check-bundle-size.mjs",
    "check:skills": "node scripts/check-skill-freshness.mjs",
    "check:design-rule-5": "node scripts/check-design-rule-5.mjs",
    "check:docs:dev-warns": "node scripts/check-dev-warn-docs.mjs",
    "check:audit": "npm audit --omit=dev --audit-level=high"
  },
  "dependencies": {
    "@preact/signals-core": "^1.14.1"
  },
  "devDependencies": {
    "@eslint/js": "^10.0.1",
    "@playwright/test": "^1.59.1",
    "@types/jsdom": "^28.0.1",
    "@types/node": "^22.10.0",
    "@typescript-eslint/eslint-plugin": "^8.65.0",
    "@typescript-eslint/parser": "^8.65.0",
    "@vitest/coverage-v8": "^4.1.10",
    "domotion-svg": "^0.24.0",
    "eslint": "^10.8.0",
    "eslint-plugin-simple-import-sort": "^12.1.1",
    "gitgist": "^1.1.0",
    "happy-dom": "^20.9.0",
    "http-server": "^14.1.1",
    "husky": "^9.1.7",
    "jsdom": "^29.1.1",
    "tsup": "^8.3.0",
    "typescript": "^6.0.3",
    "typescript7": "npm:typescript@^7.0.2",
    "vitest": "^4.1.10"
  },
  "gitgist": {
    "exclude": [
      "site/public/demos/*.svg",
      "ai/*",
      "site/public/llms.txt",
      "bench/results.json",
      "bench/results.md"
    ]
  }
}
