{
  "$schema": "https://json.schemastore.org/package.json",
  "name": "@gentleduck/iam",
  "version": "5.1.0",
  "publishConfig": {
    "access": "public"
  },
  "description": "Modern ABAC/RBAC access control engine. Framework-agnostic core with integrations for Express, NestJS, Hono, Next.js, React, and Vue.",
  "type": "module",
  "sideEffects": false,
  "main": "dist/index.js",
  "module": "dist/index.js",
  "types": "dist/index.d.ts",
  "exports": {
    ".": {
      "import": {
        "types": "./dist/index.d.ts",
        "default": "./dist/index.js"
      },
      "require": {
        "types": "./dist/index.d.cts",
        "default": "./dist/index.cjs"
      }
    },
    "./core": {
      "import": {
        "types": "./dist/core/index.d.ts",
        "default": "./dist/core/index.js"
      },
      "require": {
        "types": "./dist/core/index.d.cts",
        "default": "./dist/core/index.cjs"
      }
    },
    "./core/validate": {
      "import": {
        "types": "./dist/core/validate/index.d.ts",
        "default": "./dist/core/validate/index.js"
      },
      "require": {
        "types": "./dist/core/validate/index.d.cts",
        "default": "./dist/core/validate/index.cjs"
      }
    },
    "./core/builder": {
      "import": {
        "types": "./dist/core/builder/index.d.ts",
        "default": "./dist/core/builder/index.js"
      },
      "require": {
        "types": "./dist/core/builder/index.d.cts",
        "default": "./dist/core/builder/index.cjs"
      }
    },
    "./core/explain": {
      "import": {
        "types": "./dist/core/explain/index.d.ts",
        "default": "./dist/core/explain/index.js"
      },
      "require": {
        "types": "./dist/core/explain/index.d.cts",
        "default": "./dist/core/explain/index.cjs"
      }
    },
    "./core/schema": {
      "import": {
        "types": "./dist/core/schema/index.d.ts",
        "default": "./dist/core/schema/index.js"
      },
      "require": {
        "types": "./dist/core/schema/index.d.cts",
        "default": "./dist/core/schema/index.cjs"
      }
    },
    "./adapters/memory": {
      "import": {
        "types": "./dist/adapters/memory/index.d.ts",
        "default": "./dist/adapters/memory/index.js"
      },
      "require": {
        "types": "./dist/adapters/memory/index.d.cts",
        "default": "./dist/adapters/memory/index.cjs"
      }
    },
    "./adapters/file": {
      "import": {
        "types": "./dist/adapters/file/index.d.ts",
        "default": "./dist/adapters/file/index.js"
      },
      "require": {
        "types": "./dist/adapters/file/index.d.cts",
        "default": "./dist/adapters/file/index.cjs"
      }
    },
    "./adapters/prisma": {
      "import": {
        "types": "./dist/adapters/prisma/index.d.ts",
        "default": "./dist/adapters/prisma/index.js"
      },
      "require": {
        "types": "./dist/adapters/prisma/index.d.cts",
        "default": "./dist/adapters/prisma/index.cjs"
      }
    },
    "./adapters/drizzle": {
      "import": {
        "types": "./dist/adapters/drizzle/index.d.ts",
        "default": "./dist/adapters/drizzle/index.js"
      },
      "require": {
        "types": "./dist/adapters/drizzle/index.d.cts",
        "default": "./dist/adapters/drizzle/index.cjs"
      }
    },
    "./adapters/drizzle/schema/pg": {
      "import": {
        "types": "./dist/adapters/drizzle/schema/pg.d.ts",
        "default": "./dist/adapters/drizzle/schema/pg.js"
      },
      "require": {
        "types": "./dist/adapters/drizzle/schema/pg.d.cts",
        "default": "./dist/adapters/drizzle/schema/pg.cjs"
      }
    },
    "./adapters/drizzle/schema/mysql": {
      "import": {
        "types": "./dist/adapters/drizzle/schema/mysql.d.ts",
        "default": "./dist/adapters/drizzle/schema/mysql.js"
      },
      "require": {
        "types": "./dist/adapters/drizzle/schema/mysql.d.cts",
        "default": "./dist/adapters/drizzle/schema/mysql.cjs"
      }
    },
    "./adapters/drizzle/schema/sqlite": {
      "import": {
        "types": "./dist/adapters/drizzle/schema/sqlite.d.ts",
        "default": "./dist/adapters/drizzle/schema/sqlite.js"
      },
      "require": {
        "types": "./dist/adapters/drizzle/schema/sqlite.d.cts",
        "default": "./dist/adapters/drizzle/schema/sqlite.cjs"
      }
    },
    "./adapters/redis": {
      "import": {
        "types": "./dist/adapters/redis/index.d.ts",
        "default": "./dist/adapters/redis/index.js"
      },
      "require": {
        "types": "./dist/adapters/redis/index.d.cts",
        "default": "./dist/adapters/redis/index.cjs"
      }
    },
    "./adapters/http": {
      "import": {
        "types": "./dist/adapters/http/index.d.ts",
        "default": "./dist/adapters/http/index.js"
      },
      "require": {
        "types": "./dist/adapters/http/index.d.cts",
        "default": "./dist/adapters/http/index.cjs"
      }
    },
    "./invalidators/redis": {
      "import": {
        "types": "./dist/invalidators/redis/index.d.ts",
        "default": "./dist/invalidators/redis/index.js"
      },
      "require": {
        "types": "./dist/invalidators/redis/index.d.cts",
        "default": "./dist/invalidators/redis/index.cjs"
      }
    },
    "./observability/metrics": {
      "import": {
        "types": "./dist/observability/metrics/index.d.ts",
        "default": "./dist/observability/metrics/index.js"
      },
      "require": {
        "types": "./dist/observability/metrics/index.d.cts",
        "default": "./dist/observability/metrics/index.cjs"
      }
    },
    "./server/express": {
      "import": {
        "types": "./dist/server/express/index.d.ts",
        "default": "./dist/server/express/index.js"
      },
      "require": {
        "types": "./dist/server/express/index.d.cts",
        "default": "./dist/server/express/index.cjs"
      }
    },
    "./server/nest": {
      "import": {
        "types": "./dist/server/nest/index.d.ts",
        "default": "./dist/server/nest/index.js"
      },
      "require": {
        "types": "./dist/server/nest/index.d.cts",
        "default": "./dist/server/nest/index.cjs"
      }
    },
    "./server/hono": {
      "import": {
        "types": "./dist/server/hono/index.d.ts",
        "default": "./dist/server/hono/index.js"
      },
      "require": {
        "types": "./dist/server/hono/index.d.cts",
        "default": "./dist/server/hono/index.cjs"
      }
    },
    "./server/next": {
      "import": {
        "types": "./dist/server/next/index.d.ts",
        "default": "./dist/server/next/index.js"
      },
      "require": {
        "types": "./dist/server/next/index.d.cts",
        "default": "./dist/server/next/index.cjs"
      }
    },
    "./server/generic": {
      "import": {
        "types": "./dist/server/generic/index.d.ts",
        "default": "./dist/server/generic/index.js"
      },
      "require": {
        "types": "./dist/server/generic/index.d.cts",
        "default": "./dist/server/generic/index.cjs"
      }
    },
    "./client/react": {
      "import": {
        "types": "./dist/client/react/index.d.ts",
        "default": "./dist/client/react/index.js"
      },
      "require": {
        "types": "./dist/client/react/index.d.cts",
        "default": "./dist/client/react/index.cjs"
      }
    },
    "./client/vue": {
      "import": {
        "types": "./dist/client/vue/index.d.ts",
        "default": "./dist/client/vue/index.js"
      },
      "require": {
        "types": "./dist/client/vue/index.d.cts",
        "default": "./dist/client/vue/index.cjs"
      }
    },
    "./client/vanilla": {
      "import": {
        "types": "./dist/client/vanilla/index.d.ts",
        "default": "./dist/client/vanilla/index.js"
      },
      "require": {
        "types": "./dist/client/vanilla/index.d.cts",
        "default": "./dist/client/vanilla/index.cjs"
      }
    },
    "./dt": {
      "import": {
        "types": "./dist/dt/index.d.ts",
        "default": "./dist/dt/index.js"
      },
      "require": {
        "types": "./dist/dt/index.d.cts",
        "default": "./dist/dt/index.cjs"
      }
    }
  },
  "files": [
    "dist",
    "src",
    "public",
    "README.md",
    "LICENSE",
    "SECURITY.md"
  ],
  "scripts": {
    "bench": "vitest bench",
    "benchmark": "bun run scripts/benchmark.ts",
    "build": "tsdown",
    "dev": "tsdown --watch",
    "test": "vitest run",
    "mutation": "stryker run",
    "check-types": "tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck",
    "lint": "biome lint --write ./",
    "format": "biome format --write ./",
    "clean": "rimraf dist .cache .turbo node_modules"
  },
  "peerDependencies": {
    "@gentleduck/libs": "^1.0.0",
    "@gentleduck/registry-ui": "^0.4.3",
    "@gentleduck/variants": "^1.0.0",
    "drizzle-orm": ">=0.30.0",
    "react": "^19.2.6"
  },
  "peerDependenciesMeta": {
    "@gentleduck/libs": {
      "optional": true
    },
    "@gentleduck/registry-ui": {
      "optional": true
    },
    "@gentleduck/variants": {
      "optional": true
    },
    "drizzle-orm": {
      "optional": true
    },
    "react": {
      "optional": true
    }
  },
  "devDependencies": {
    "@casl/ability": "^7.0.0",
    "@gentleduck/libs": "^1.0.0",
    "@gentleduck/registry-ui": "^0.5.0",
    "@gentleduck/tsdown-config": "workspace:*",
    "@gentleduck/typescript-config": "workspace:*",
    "@gentleduck/variants": "^1.0.0",
    "@gentleduck/vitest-config": "workspace:*",
    "@rbac/rbac": "^2.1.3",
    "@stryker-mutator/core": "^9.6.1",
    "@stryker-mutator/vitest-runner": "^9.6.1",
    "@types/node": "^26.0.0",
    "@types/react": "^19.2.17",
    "accesscontrol": "^2.2.1",
    "casbin": "^5.50.0",
    "drizzle-orm": "^0.45.2",
    "easy-rbac": "^4.0.0",
    "motion": "^12.40.0",
    "pg": "^8.22.0",
    "react": "^19.2.7",
    "react-dom": "^19.2.7",
    "role-acl": "^4.5.4",
    "tsdown": "^0.22.3",
    "typescript": "^6.0.3",
    "unrun": "^0.3.1",
    "vitest": "^4.1.9"
  },
  "engines": {
    "node": ">=18.0.0"
  },
  "author": "GentleDuck (https://www.gentleduck.org)",
  "license": "MIT",
  "homepage": "https://gentleduck.org/duck-iam",
  "bugs": {
    "url": "https://github.com/gentleeduck/duck-iam/issues"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/gentleeduck/duck-iam.git"
  },
  "keywords": [
    "rbac",
    "abac",
    "access-control",
    "authorization",
    "permissions",
    "policy-engine",
    "middleware",
    "express",
    "nestjs",
    "hono",
    "nextjs",
    "react",
    "vue",
    "drizzle",
    "prisma",
    "redis"
  ]
}
