{"_id":"@anarchitects/auth-declarations","_rev":"5-8b36a23bd5985ecff6f399ace271ac0d","name":"@anarchitects/auth-declarations","dist-tags":{"latest":"0.10.0"},"versions":{"0.8.2":{"name":"@anarchitects/auth-declarations","version":"0.8.2","_id":"@anarchitects/auth-declarations@0.8.2","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"homepage":"https://github.com/anarchitects/anarchitecture-bricks-3tier/tree/main/libs/auth/declarations","bugs":{"url":"https://github.com/anarchitects/anarchitecture-bricks-3tier/issues"},"dist":{"shasum":"3d5a9f62289cec34b23ccc7f03caeb4e77dec6c2","tarball":"https://registry.npmjs.org/@anarchitects/auth-declarations/-/auth-declarations-0.8.2.tgz","fileCount":6,"integrity":"sha512-9S1oR93ijHKx+xG+tSOXprBf1Z4mt+BhqVyMyQbCd9Qedi3IaB/U+sUtn85pjlgWMtaA0qfYMdfl1xTK7JRNLQ==","signatures":[{"sig":"MEQCIHwIAqZcxUk9z0IaNAKFI1NzxukUiysjbFgw/U1HEpHSAiBNNn+2zUpDBUQvAq+FujrF+63zjS7hunNre3B4fO375g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anarchitects%2fauth-declarations@0.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6955},"main":"./index.cjs","type":"module","types":"./index.d.ts","module":"./index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"0cc7d6c9cb183da5c77be7fcb734aaea03471d63","_npmUser":{"name":"vrxj81","email":"johan@anarchitects.dev"},"repository":{"url":"git+https://github.com/anarchitects/anarchitecture-bricks-3tier.git","type":"git","directory":"libs/auth/declarations"},"_npmVersion":"10.9.7","description":"Declaration-only security metadata decorators for Anarchitecture auth-aware Nest controllers.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"@anarchitects/auth-ts":"^0.8.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@nestjs/common":"^11.0.0"},"_npmOperationalInternal":{"tmp":"tmp/auth-declarations_0.8.2_1778150225369_0.6594850487135755","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"@anarchitects/auth-declarations","version":"0.8.3","_id":"@anarchitects/auth-declarations@0.8.3","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"homepage":"https://github.com/anarchitects/anarchitecture-bricks-3tier/tree/main/libs/auth/declarations","bugs":{"url":"https://github.com/anarchitects/anarchitecture-bricks-3tier/issues"},"dist":{"shasum":"863251c85372dc91db9e219025e3b61bc33b13a0","tarball":"https://registry.npmjs.org/@anarchitects/auth-declarations/-/auth-declarations-0.8.3.tgz","fileCount":6,"integrity":"sha512-kpf8zRfgqTqao/ktwxFYaWEx214BEE5Sv8Y0P7JhJtiQjn+MDwj+269P8D4dyJ22QWn5vqkOAcb3LZg4EleXVw==","signatures":[{"sig":"MEQCIEcMQTFtvCYtZwYympGrwRzm4CDBrxiC7x+xns4vl6klAiAqGUzEV1UbEdHH98MHvMK1gF3gv2RcfTLNHVoLXxiUvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anarchitects%2fauth-declarations@0.8.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6955},"main":"./index.cjs","type":"module","types":"./index.d.ts","module":"./index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"a1c9fb8a340e9a547c08e71530f7097d02fa8488","_npmUser":{"name":"vrxj81","email":"johan@anarchitects.dev"},"repository":{"url":"git+https://github.com/anarchitects/anarchitecture-bricks-3tier.git","type":"git","directory":"libs/auth/declarations"},"_npmVersion":"10.9.7","description":"Declaration-only security metadata decorators for Anarchitecture auth-aware Nest controllers.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"@anarchitects/auth-ts":"^0.8.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@nestjs/common":"^11.0.0"},"_npmOperationalInternal":{"tmp":"tmp/auth-declarations_0.8.3_1778250647984_0.748953865286371","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@anarchitects/auth-declarations","version":"0.9.0","_id":"@anarchitects/auth-declarations@0.9.0","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"homepage":"https://github.com/anarchitects/anarchitecture-bricks-3tier/tree/main/libs/auth/declarations","bugs":{"url":"https://github.com/anarchitects/anarchitecture-bricks-3tier/issues"},"dist":{"shasum":"7755e2b1adb64276d5bb791cfcba2dde59322128","tarball":"https://registry.npmjs.org/@anarchitects/auth-declarations/-/auth-declarations-0.9.0.tgz","fileCount":6,"integrity":"sha512-6LsQVIibBRkXFppQ6XGyUKjD1gv6ctKOaAl3AWyhw/No04/43fxkHTvB7kOHUFNIVcn3ij0/aFFWa1f65aYnTw==","signatures":[{"sig":"MEUCIB16S29MC0e8jFKLuSaJUw+mFEo7Zu/cAOzuQyPlB0pcAiEA5XJb1/bGCr0xrXSq6F/U9saLQ8e8lZOlcmMkhbKogZk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC6FKgjF/jBNO5g7jkbQBAioIbPhK9PRloyFXYDPKJHwgIhAMP/SLCQgDlhvkQzCgAzsTnbTZLwbz260xjzNWmRL2Ip","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6997},"main":"./index.cjs","type":"module","types":"./index.d.ts","module":"./index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"01c1b71ebfa5a6e42599cd00af64bf3ce99cb0a5","_npmUser":{"name":"vrxj81","email":"johan@anarchitects.dev"},"repository":{"url":"git+https://github.com/anarchitects/anarchitecture-bricks-3tier.git","type":"git","directory":"libs/auth/declarations"},"_npmVersion":"11.19.0","description":"Declaration-only security metadata decorators for Anarchitecture auth-aware Nest controllers.","directories":{},"sideEffects":false,"_nodeVersion":"26.8.1","dependencies":{"@anarchitects/auth-ts":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@nestjs/common":"^11.0.0"},"_npmOperationalInternal":{"tmp":"tmp/auth-declarations_0.9.0_1788339623723_0.0906611950841616","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@anarchitects/auth-declarations","version":"0.9.1","_id":"@anarchitects/auth-declarations@0.9.1","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"homepage":"https://github.com/anarchitects/anarchitecture-bricks-3tier/tree/main/libs/auth/declarations","bugs":{"url":"https://github.com/anarchitects/anarchitecture-bricks-3tier/issues"},"dist":{"shasum":"50d5dd688a11998199905516637eb89d7e77a618","tarball":"https://registry.npmjs.org/@anarchitects/auth-declarations/-/auth-declarations-0.9.1.tgz","fileCount":6,"integrity":"sha512-65nZNjFeDY2WJURP56jaA89TIH6pgSdmr4YSljvDzoC/jPJ/X3t//BSa1hXuZNuh9x2iMVMdgoHWiIRK7WWiEQ==","signatures":[{"sig":"MEUCIQD1x8HUN/2Ku8i7N1JhWPloEYFeUtgzYNR614g5lLTsDQIgf0+9n2bjeRHiwCtgaRLH2N0a2Vfv5W2TXP+kseAU67g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCBUpJUU29uwP5ciX61ip72PmjH1Xz4VbvlMjNeQpXkfAIhAKW0+5E25LzXL71btN+11qQp1v1T7t+NX89Xa4BGYkoq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anarchitects%2fauth-declarations@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6997},"main":"./index.cjs","type":"module","types":"./index.d.ts","module":"./index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"2d6a4b3ada94f466ae25aa0f78c308f34f232b90","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0878ced0-4312-4a48-a4c8-7888d457f25f"}},"repository":{"url":"git+https://github.com/anarchitects/anarchitecture-bricks-3tier.git","type":"git","directory":"libs/auth/declarations"},"_npmVersion":"11.17.0","description":"Declaration-only security metadata decorators for Anarchitecture auth-aware Nest controllers.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@anarchitects/auth-ts":"^0.9.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@nestjs/common":"^11.0.0"},"_npmOperationalInternal":{"tmp":"tmp/auth-declarations_0.9.1_1788352960887_0.7196339581412248","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"_id":"@anarchitects/auth-declarations@0.10.0","bugs":{"url":"https://github.com/anarchitects/anarchitecture-bricks-3tier/issues"},"dist":{"shasum":"c0b9a2319c0717a9348453fd85a7b2003e8a7c3a","tarball":"https://registry.npmjs.org/@anarchitects/auth-declarations/-/auth-declarations-0.10.0.tgz","fileCount":6,"integrity":"sha512-CpqAULhqd72+nqmNCyMk5GfeZtAielEpwvfYNaUrz2t6cG/cEp7i9ySmpNnzNflCH9W7Z5HDQQeZqRjxgLgPqg==","signatures":[{"sig":"MEYCIQCFK2pkNq3nRYobqUsRHj08eTNXBW5BLJ/MwYqeC6oirAIhAJGpWgL5aqHugMaLYSqUhD0ioisY5kK3rTVTZMmbCh04","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICyyC+gUJ5bqjWdiyr9FpqCqLKII10reDJd0mbeETEqUAiBMPEHn3YeEGUg7/6IZ7XIMawWW5VwxL0iYD761P7w+6A=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anarchitects%2fauth-declarations@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6999},"main":"./index.cjs","name":"@anarchitects/auth-declarations","type":"module","types":"./index.d.ts","module":"./index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"b2588e6e2c21a9c8633ba20c489c78596576646b","version":"0.10.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0878ced0-4312-4a48-a4c8-7888d457f25f"}},"homepage":"https://github.com/anarchitects/anarchitecture-bricks-3tier/tree/main/libs/auth/declarations","repository":{"url":"git+https://github.com/anarchitects/anarchitecture-bricks-3tier.git","type":"git","directory":"libs/auth/declarations"},"_npmVersion":"11.19.0","description":"Declaration-only security metadata decorators for Anarchitecture auth-aware Nest controllers.","directories":{},"maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"@anarchitects/auth-ts":"^0.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@nestjs/common":"^11.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/auth-declarations_0.10.0_1788521624431_0.519624275626313"}}},"time":{"created":"2026-05-07T10:37:05.273Z","modified":"2026-09-04T11:33:44.915Z","0.8.2":"2026-05-07T10:37:05.511Z","0.8.3":"2026-05-08T14:30:48.132Z","0.9.0":"2026-09-02T09:00:23.873Z","0.9.1":"2026-09-02T12:42:40.972Z","0.10.0":"2026-09-04T11:33:44.567Z"},"bugs":{"url":"https://github.com/anarchitects/anarchitecture-bricks-3tier/issues"},"homepage":"https://github.com/anarchitects/anarchitecture-bricks-3tier/tree/main/libs/auth/declarations","repository":{"url":"git+https://github.com/anarchitects/anarchitecture-bricks-3tier.git","type":"git","directory":"libs/auth/declarations"},"description":"Declaration-only security metadata decorators for Anarchitecture auth-aware Nest controllers.","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"readme":"# @anarchitects/auth-declarations\n\nDeclaration-only security metadata for auth-aware Nest controllers.\n\nUse this package when a feature/controller brick needs to declare security\nintent without depending on the runtime-heavy `@anarchitects/auth-nest`\npackage.\n\n## Features\n\n- Declare route-level security intent without importing runtime guards or modules\n- `@Public()` marks a class or route handler as intentionally public\n- `@Policies(...rules)` declares coarse CASL-aligned route policies\n- `@AuthorizeResource(...resources)` declares resource-aware policies with an `idParam`\n- Convenience aliases `@RequirePermissions(...)` and `@RequireResourceAccess(...)`\n- Metadata constants exported for runtime packages that need to read these declarations\n\n## Installation\n\n```bash\nnpm install @anarchitects/auth-declarations\n# or\nyarn add @anarchitects/auth-declarations\n# or\npnpm add @anarchitects/auth-declarations\n```\n\nPeer dependency: `@nestjs/common ^11.0.0`\n\n## Usage\n\n```ts\nimport { AuthorizeResource, Policies, Public } from '@anarchitects/auth-declarations';\n\n@Public()\nexport class HealthController {}\n\nexport class PostsController {\n  @Policies({ action: 'update', subject: 'Post' })\n  @AuthorizeResource({ action: 'update', subject: 'Post', idParam: 'postId' })\n  updatePost() {\n    return true;\n  }\n}\n```\n\n`@Policies(...)` is the primary generic authorization declaration. It is a\ncoarse route pass check and does not prove ownership or other instance-sensitive\nrules. Concrete resource authorization belongs to the runtime flow once the\nsubject instance is available.\n\nTypical pairing:\n\n```ts\nimport { Module } from '@nestjs/common';\nimport { AuthModule, provideAuthRuntimeGuards } from '@anarchitects/auth-nest';\n\n@Module({\n  imports: [AuthModule.forRoot({})],\n  providers: [...provideAuthRuntimeGuards()],\n})\nexport class AppModule {}\n```\n\nControllers declare intent through `@anarchitects/auth-declarations`. Host apps\nactivate the runtime once, centrally, through `@anarchitects/auth-nest`.\n\n## Exports\n\n- `@Public()` — marks a class or route handler as intentionally public.\n- `@Policies(...rules)` — declares coarse CASL-aligned route policies using the existing `{ action, subject }` route policy shape.\n- `@AuthorizeResource(...resources)` — declares resource-aware policies with an `idParam`; it is metadata-only and does not bind guards.\n- `@RequirePermissions(...permissions)` — convenience alias for `@Policies(...)`.\n- `@RequireResourceAccess(...resources)` — convenience alias for `@AuthorizeResource(...)`.\n- `AUTH_PUBLIC_METADATA_KEY`, `POLICIES_KEY`, `AUTHORIZE_RESOURCE_KEY` — metadata key constants for runtime packages.\n- `RoutePolicy`, `ResourceAuthorizationRoute` — re-exported types.\n\n## Runtime Boundary\n\nThis package does not enforce authentication or authorization. It does not\nexport guards, providers, modules, principal resolution, request-resource\nextraction, or app-shell activation helpers.\n\nIt also does not export `@AuthorizedResource()`. That helper belongs to the\nruntime package because it reads the resource that `auth-nest` attached to the\nrequest after authorization.\n\nRuntime enforcement belongs to `@anarchitects/auth-nest`, which can read this\nmetadata from controllers and apply the appropriate security behavior.\n\n## Development notes\n\n- `nx build auth-declarations` - build the package.\n- `nx test auth-declarations` - run the Vitest unit tests.\n","readmeFilename":"README.md"}