{"_id":"@authzkit/prisma-tenant-guard","_rev":"4-1ae8613b86dbf4cd2ceded1aea79e3da","name":"@authzkit/prisma-tenant-guard","dist-tags":{"latest":"2.0.0"},"versions":{"1.0.0-rc.31":{"name":"@authzkit/prisma-tenant-guard","version":"1.0.0-rc.31","keywords":["prisma","tenant","multi-tenant","rls","authzkit"],"author":{"name":"AuthzKit Contributors"},"license":"Apache-2.0","_id":"@authzkit/prisma-tenant-guard@1.0.0-rc.31","maintainers":[{"name":"omar-dulaimi","email":"o.m.dulaimi@gmail.com"}],"homepage":"https://authzkit.dev","bugs":{"url":"https://github.com/authzkit/authzkit/issues"},"bin":{"authzkit-tenant-guard":"dist/cli.js"},"dist":{"shasum":"5106e3a74bf2530465af509b34e7b277b4a91af0","tarball":"https://registry.npmjs.org/@authzkit/prisma-tenant-guard/-/prisma-tenant-guard-1.0.0-rc.31.tgz","fileCount":20,"integrity":"sha512-FCc7PHxctYjeHKf8CFL64yPcLci6TeQHWwfBNjAkt2wLPU/QYoeikJaQlV+tfaqG5HqmNXdgAA0iBiu71o7z0A==","signatures":[{"sig":"MEYCIQC0ek2ltinacsp+N05lzHL874YQECtgA8VoLfyxJ4xz6gIhANUR3RaHPdkJmFm9TBwwp3ijYUa/mIqHOrezfa8CmDTT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172515},"main":"./dist/index.cjs","type":"module","_from":"file:authzkit-prisma-tenant-guard-1.0.0-rc.31.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.17"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/cli.d.ts","import":"./dist/cli.js","require":"./dist/cli.cjs"},"./zod":{"types":"./dist/zod.d.ts","import":"./dist/zod.js","require":"./dist/zod.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"tsup src/index.ts src/cli.ts src/zod.ts --dts --format esm,cjs --watch","test":"vitest run","build":"tsup src/index.ts src/cli.ts src/zod.ts --dts --format esm,cjs","clean":"rimraf dist","typecheck":"tsc -p tsconfig.build.json --noEmit"},"_npmUser":{"name":"omar-dulaimi","email":"o.m.dulaimi@gmail.com"},"_resolved":"/tmp/d8bb7a6ce797a7fc144f926ec1157304/authzkit-prisma-tenant-guard-1.0.0-rc.31.tgz","_integrity":"sha512-FCc7PHxctYjeHKf8CFL64yPcLci6TeQHWwfBNjAkt2wLPU/QYoeikJaQlV+tfaqG5HqmNXdgAA0iBiu71o7z0A==","repository":{"url":"git+https://github.com/authzkit/authzkit.git","type":"git","directory":"packages/prisma-tenant-guard"},"_npmVersion":"10.9.2","description":"Tenant guardrails for Prisma clients with assist/assert/strict enforcement and CLI tooling","directories":{},"_nodeVersion":"22.17.1","_hasShrinkwrap":false,"devDependencies":{"zod":"^3.25.0","prisma":"^6.16.2","@prisma/client":"^6.16.2"},"peerDependencies":{"zod":"^3.25.0","@prisma/client":"^5.20.0 || ^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/prisma-tenant-guard_1.0.0-rc.31_1758759023217_0.3526823382250033","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@authzkit/prisma-tenant-guard","version":"1.0.0","keywords":["prisma","tenant","multi-tenant","rls","authzkit"],"author":{"name":"AuthzKit Contributors"},"license":"Apache-2.0","_id":"@authzkit/prisma-tenant-guard@1.0.0","maintainers":[{"name":"omar-dulaimi","email":"o.m.dulaimi@gmail.com"}],"homepage":"https://authzkit.dev","bugs":{"url":"https://github.com/authzkit/authzkit/issues"},"bin":{"authzkit-tenant-guard":"dist/cli.js"},"dist":{"shasum":"9ecc1560b51c92d491566fa9c2572b08f7b1ea60","tarball":"https://registry.npmjs.org/@authzkit/prisma-tenant-guard/-/prisma-tenant-guard-1.0.0.tgz","fileCount":20,"integrity":"sha512-kjqGaE1lFHPkFF9pJeqL/wWs0iqwOSyDnjomTAmt455u0A4TuAieEXw8iEM6noV5l+vfdPcUHsRfQ0+FAkmb1g==","signatures":[{"sig":"MEYCIQDLpZR0QeyfjWVrxWLlHQpeOsE6J3vhymQgtCIAcqbn8QIhAMubKlgVsK7jRETLrk+1RjZdHrTAWBsRFldahFsuiqEv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172509},"main":"./dist/index.cjs","type":"module","_from":"file:authzkit-prisma-tenant-guard-1.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.17"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/cli.d.ts","import":"./dist/cli.js","require":"./dist/cli.cjs"},"./zod":{"types":"./dist/zod.d.ts","import":"./dist/zod.js","require":"./dist/zod.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"tsup src/index.ts src/cli.ts src/zod.ts --dts --format esm,cjs --watch","test":"vitest run","build":"tsup src/index.ts src/cli.ts src/zod.ts --dts --format esm,cjs","clean":"rimraf dist","typecheck":"tsc -p tsconfig.build.json --noEmit"},"_npmUser":{"name":"omar-dulaimi","email":"o.m.dulaimi@gmail.com"},"_resolved":"/tmp/032422ba9d698d0ba04f84f5735ed5a0/authzkit-prisma-tenant-guard-1.0.0.tgz","_integrity":"sha512-kjqGaE1lFHPkFF9pJeqL/wWs0iqwOSyDnjomTAmt455u0A4TuAieEXw8iEM6noV5l+vfdPcUHsRfQ0+FAkmb1g==","repository":{"url":"git+https://github.com/authzkit/authzkit.git","type":"git","directory":"packages/prisma-tenant-guard"},"_npmVersion":"10.9.2","description":"Tenant guardrails for Prisma clients with assist/assert/strict enforcement and CLI tooling","directories":{},"_nodeVersion":"22.17.1","_hasShrinkwrap":false,"devDependencies":{"zod":"^3.25.0","prisma":"^6.16.2","@prisma/client":"^6.16.2"},"peerDependencies":{"zod":"^3.25.0","@prisma/client":"^5.20.0 || ^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/prisma-tenant-guard_1.0.0_1758759127703_0.7383537809566874","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@authzkit/prisma-tenant-guard","version":"1.0.1","keywords":["prisma","tenant","multi-tenant","rls","authzkit"],"author":{"name":"AuthzKit Contributors"},"license":"Apache-2.0","_id":"@authzkit/prisma-tenant-guard@1.0.1","maintainers":[{"name":"omar-dulaimi","email":"o.m.dulaimi@gmail.com"}],"homepage":"https://authzkit.github.io/authzkit","bugs":{"url":"https://github.com/authzkit/authzkit/issues"},"bin":{"authzkit-tenant-guard":"dist/cli.js"},"dist":{"shasum":"d0bbd2ed14ab8293cc477e04714c8697e3e1e4ba","tarball":"https://registry.npmjs.org/@authzkit/prisma-tenant-guard/-/prisma-tenant-guard-1.0.1.tgz","fileCount":20,"integrity":"sha512-s/5LyEWAEWueYkrrCcHjA5Ewq452LNJoMC5+MQfPTI/i1lRJNCymd7BOHVmZRew1BCiNx3lancgaXeRNrVQinA==","signatures":[{"sig":"MEYCIQCOoF9A0lPIZ74ZvccxUXilHS3SiaFudYU29GdlFVsWjQIhAJdqzcqyOyanUDdIHx230Ib4ETYKRvKGspWEW0wOKmwW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172524},"main":"./dist/index.cjs","type":"module","_from":"file:authzkit-prisma-tenant-guard-1.0.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.17"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/cli.d.ts","import":"./dist/cli.js","require":"./dist/cli.cjs"},"./zod":{"types":"./dist/zod.d.ts","import":"./dist/zod.js","require":"./dist/zod.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"tsup src/index.ts src/cli.ts src/zod.ts --dts --format esm,cjs --watch","test":"vitest run","build":"tsup src/index.ts src/cli.ts src/zod.ts --dts --format esm,cjs","clean":"rimraf dist","typecheck":"tsc -p tsconfig.build.json --noEmit"},"_npmUser":{"name":"omar-dulaimi","email":"o.m.dulaimi@gmail.com"},"_resolved":"/tmp/f31d3a90c04a62723a000f79d392dfa3/authzkit-prisma-tenant-guard-1.0.1.tgz","_integrity":"sha512-s/5LyEWAEWueYkrrCcHjA5Ewq452LNJoMC5+MQfPTI/i1lRJNCymd7BOHVmZRew1BCiNx3lancgaXeRNrVQinA==","repository":{"url":"git+https://github.com/authzkit/authzkit.git","type":"git","directory":"packages/prisma-tenant-guard"},"_npmVersion":"10.9.2","description":"Tenant guardrails for Prisma clients with assist/assert/strict enforcement and CLI tooling","directories":{},"_nodeVersion":"22.17.1","_hasShrinkwrap":false,"devDependencies":{"zod":"^3.25.0","prisma":"^6.16.2","@prisma/client":"^6.16.2"},"peerDependencies":{"zod":"^3.25.0","@prisma/client":"^5.20.0 || ^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/prisma-tenant-guard_1.0.1_1758759276014_0.4015225406156868","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@authzkit/prisma-tenant-guard","version":"2.0.0","description":"Tenant guardrails for Prisma clients with assist/assert/strict enforcement and CLI tooling","keywords":["prisma","tenant","multi-tenant","rls","authzkit"],"license":"Apache-2.0","author":{"name":"AuthzKit Contributors"},"homepage":"https://authzkit.github.io/authzkit","repository":{"type":"git","url":"git+https://github.com/authzkit/authzkit.git","directory":"packages/prisma-tenant-guard"},"bugs":{"url":"https://github.com/authzkit/authzkit/issues"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","publishConfig":{"access":"public"},"bin":{"authzkit-tenant-guard":"dist/cli.js"},"exports":{"./package.json":"./package.json",".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/cli.d.ts","import":"./dist/cli.js","require":"./dist/cli.cjs"},"./zod":{"types":"./dist/zod.d.ts","import":"./dist/zod.js","require":"./dist/zod.cjs"}},"engines":{"node":">=18.17"},"peerDependencies":{"@prisma/client":"^5.20.0 || ^6.0.0","zod":"^3.25.0"},"devDependencies":{"zod":"^3.25.0","@prisma/client":"^6.16.2","prisma":"^6.16.2"},"scripts":{"build":"tsup src/index.ts src/cli.ts src/zod.ts --dts --format esm,cjs","clean":"rimraf dist","typecheck":"tsc -p tsconfig.build.json --noEmit","test":"vitest run","dev":"tsup src/index.ts src/cli.ts src/zod.ts --dts --format esm,cjs --watch"},"_id":"@authzkit/prisma-tenant-guard@2.0.0","_integrity":"sha512-+Xiqj/oIgb++LGA5o2JLrx89H3m1GRorq4YGF2HvXR+Of18MLKR9re3xudGfZei4hxMqYqShtJaYpWrVpZpsrQ==","_resolved":"/tmp/8a59855d2ac9a4c14966149388b2417c/authzkit-prisma-tenant-guard-2.0.0.tgz","_from":"file:authzkit-prisma-tenant-guard-2.0.0.tgz","_nodeVersion":"22.19.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-+Xiqj/oIgb++LGA5o2JLrx89H3m1GRorq4YGF2HvXR+Of18MLKR9re3xudGfZei4hxMqYqShtJaYpWrVpZpsrQ==","shasum":"604fa0514656e83717aecfde8e9c3165541fcfb4","tarball":"https://registry.npmjs.org/@authzkit/prisma-tenant-guard/-/prisma-tenant-guard-2.0.0.tgz","fileCount":19,"unpackedSize":152478,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@authzkit%2fprisma-tenant-guard@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCAaXU/P+msrq3edKo/6u0Kud5ukhpx8RkfF3V+2b+gvQIhAPR8aN6UEZI0eRz7jMAPESBTV8CBs2/zQvKoEwaV4uwN"}]},"_npmUser":{"name":"omar-dulaimi","email":"o.m.dulaimi@gmail.com"},"directories":{},"maintainers":[{"name":"omar-dulaimi","email":"o.m.dulaimi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/prisma-tenant-guard_2.0.0_1758780502187_0.5076753423081328"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-25T00:10:23.143Z","modified":"2025-09-25T06:08:22.795Z","1.0.0-rc.31":"2025-09-25T00:10:23.453Z","1.0.0":"2025-09-25T00:12:07.894Z","1.0.1":"2025-09-25T00:14:36.215Z","2.0.0":"2025-09-25T06:08:22.375Z"},"bugs":{"url":"https://github.com/authzkit/authzkit/issues"},"author":{"name":"AuthzKit Contributors"},"license":"Apache-2.0","homepage":"https://authzkit.github.io/authzkit","keywords":["prisma","tenant","multi-tenant","rls","authzkit"],"repository":{"type":"git","url":"git+https://github.com/authzkit/authzkit.git","directory":"packages/prisma-tenant-guard"},"description":"Tenant guardrails for Prisma clients with assist/assert/strict enforcement and CLI tooling","maintainers":[{"name":"omar-dulaimi","email":"o.m.dulaimi@gmail.com"}],"readme":"# @authzkit/prisma-tenant-guard\n\nTenant guardrails for Prisma with assist/assert/strict enforcement, a metadata generator, and a zero‑dep CLI. Pair decisions from `@authzkit/core` with safe `where/select` fragments and hard tenant isolation.\n\n## Install\n\n```bash\npnpm add @authzkit/prisma-tenant-guard\npnpm add -D @authzkit/prisma-tenant-guard-generator\n```\n\n<details>\n<summary>Other package managers</summary>\n\nRuntime package:\n- npm: `npm install @authzkit/prisma-tenant-guard`\n- yarn: `yarn add @authzkit/prisma-tenant-guard`\n- bun: `bun add @authzkit/prisma-tenant-guard`\n\nGenerator (dev dependency):\n- npm: `npm install --save-dev @authzkit/prisma-tenant-guard-generator`\n- yarn: `yarn add --dev @authzkit/prisma-tenant-guard-generator`\n- bun: `bun add -d @authzkit/prisma-tenant-guard-generator`\n\n</details>\n\n## Usage\n\nAttach the guard to your Prisma client and compile decisions to filters and masks.\n\n```ts\n// prisma/client.ts\nimport { PrismaClient } from '@prisma/client'\nimport { createTenantClient } from '@authzkit/prisma-tenant-guard'\n\nexport const prisma = createTenantClient(new PrismaClient(), {\n  tenantId: 'your-tenant-id',\n  meta: {\n    // Your tenant meta configuration\n  }\n})\n```\n\n```ts\n// route or service\nimport { definePolicy } from '@authzkit/core'\nimport { prisma } from './prisma/client'\n\n// You need to define your policy first\nconst d = policy.checkDetailed('post.read', { subject, resource: { tenantId } })\nconst posts = await prisma.post.findMany({\n  where: d.attrs || {},\n})\n// Apply field masking in your response layer using d.readMask (no ORM helper is provided)\n```\n\n## CLI + generator\n\nGenerate metadata after each Prisma schema change:\n\n- pnpm: `pnpm exec authzkit-tenant-guard-gen --schema prisma/schema.prisma --out .prisma/tenant-guard/meta.ts --emitJson`\n- npm: `npm exec authzkit-tenant-guard-gen --schema prisma/schema.prisma --out .prisma/tenant-guard/meta.ts --emitJson`\n- yarn: `yarn authzkit-tenant-guard-gen --schema prisma/schema.prisma --out .prisma/tenant-guard/meta.ts --emitJson`\n- bun: `bunx authzkit-tenant-guard-gen --schema prisma/schema.prisma --out .prisma/tenant-guard/meta.ts --emitJson`\n\nValidate in CI:\n\n- pnpm: `pnpm exec authzkit-tenant-guard check`\n- npm: `npm exec authzkit-tenant-guard check`\n- yarn: `yarn authzkit-tenant-guard check`\n- bun: `bunx authzkit-tenant-guard check`\n\n## Docs\n\n- [Guide](https://authzkit.github.io/authzkit/docs/guides/tenant-guard)\n- [RLS recipe](https://authzkit.github.io/authzkit/docs/recipes/prisma-rls)\n- [CLI reference](https://authzkit.github.io/authzkit/docs/reference/cli)\n","readmeFilename":"README.md"}