{"_id":"@aethex.os/middleware","_rev":"3-4d6731d24da34b5128f6de64dd08438b","name":"@aethex.os/middleware","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@aethex.os/middleware","version":"1.0.0","keywords":["aethex","express","middleware","auth","cors","rbac","capability","metaverse"],"author":{"name":"AeThex Corporation"},"license":"MIT","_id":"@aethex.os/middleware@1.0.0","maintainers":[{"name":"mrpiglr","email":"mrpiglr@aethex.dev"}],"homepage":"https://aethex.dev","bugs":{"url":"https://github.com/AeThex-Corporation/AeThex-OS/issues"},"dist":{"shasum":"6327d20d374d1d3c344d74ff1beed8485e5210bf","tarball":"https://registry.npmjs.org/@aethex.os/middleware/-/middleware-1.0.0.tgz","fileCount":17,"integrity":"sha512-x3q1GvNDe/fBWkrEDOMBcS8yunCxzY0wcRkjs1aM4/Sb9uKSQaxzcKm1dFR9KRrdaipR/AXBLgcWjJe8MpRTTA==","signatures":[{"sig":"MEYCIQCVhAU9Q6Dcowp+GeBCp2ynHtIEXL/WjCRog0tfUqDc6wIhAPAm4fQU/K3cbNgHpFzS0ZX/1pflqzu8Sy65ZscGE9AP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17858},"main":"lib/index.js","types":"lib/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b094d5c032765a30612c2348ce0356d3a50d9feb","scripts":{"dev":"tsc --watch","build":"tsc"},"_npmUser":{"name":"mrpiglr","email":"mrpiglr@aethex.dev"},"repository":{"url":"git+https://github.com/AeThex-Corporation/AeThex-OS.git","type":"git","directory":"packages/aethex-middleware"},"_npmVersion":"11.12.1","description":"AeThex Express middleware — auth guards, CORS factory, and capability-based access control","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"express":"^4.18.0","typescript":"^5.3.0","@types/cors":"^2.8.0","@types/node":"^20.0.0","@types/express":"^4.17.0"},"peerDependencies":{"express":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/middleware_1.0.0_1777930943846_0.28319961683519423","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aethex.os/middleware","version":"1.0.1","keywords":["aethex","express","middleware","auth","cors","rbac","capability","metaverse"],"author":{"name":"AeThex Corporation"},"license":"MIT","_id":"@aethex.os/middleware@1.0.1","maintainers":[{"name":"mrpiglr","email":"mrpiglr@aethex.dev"}],"homepage":"https://aethex.dev","bugs":{"url":"https://github.com/AeThex-Corporation/AeThex-OS/issues"},"dist":{"shasum":"0824b43bd1af30b0ad5ec91d6a7bf12b4687ca65","tarball":"https://registry.npmjs.org/@aethex.os/middleware/-/middleware-1.0.1.tgz","fileCount":18,"integrity":"sha512-dWtJALNM/JiBJ5IvZhjbMAJRn1NIAJNd5mCqtH2nMro0qxloWBPO3Ww/KRsX//OdOGD3gZiK/duHL45WJiGfhw==","signatures":[{"sig":"MEQCIHlsUFIrPu+McjsO98fB2PMawG2H5K2at9l4Ko32dY82AiBPwe0FIR9Hrm/N2GNp8JPHjPrLqC4djsPGOn4J+0DNHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20193},"main":"lib/index.js","types":"lib/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b094d5c032765a30612c2348ce0356d3a50d9feb","scripts":{"dev":"tsc --watch","build":"tsc"},"_npmUser":{"name":"mrpiglr","email":"mrpiglr@aethex.dev"},"repository":{"url":"git+https://github.com/AeThex-Corporation/AeThex-OS.git","type":"git","directory":"packages/aethex-middleware"},"_npmVersion":"11.12.1","description":"AeThex Express middleware — auth guards, CORS factory, and capability-based access control","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"express":"^4.18.0","typescript":"^5.3.0","@types/cors":"^2.8.0","@types/node":"^20.0.0","@types/express":"^4.17.0"},"peerDependencies":{"express":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/middleware_1.0.1_1777932479174_0.10115468438366015","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@aethex.os/middleware","version":"1.0.2","description":"AeThex Express middleware — auth guards, CORS factory, and capability-based access control","main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build":"tsc","dev":"tsc --watch"},"keywords":["aethex","express","middleware","auth","cors","rbac","capability","metaverse"],"author":{"name":"AeThex Corporation"},"license":"MIT","homepage":"https://aethex.dev/docs","repository":{"type":"git","url":"git+https://git.aethex.tech/Labs/os.git","directory":"packages/aethex-middleware"},"peerDependencies":{"express":">=4.0.0"},"devDependencies":{"@types/cors":"^2.8.0","@types/express":"^4.17.0","@types/node":"^20.0.0","express":"^4.18.0","typescript":"^5.3.0"},"engines":{"node":">=18.0.0"},"bugs":{"url":"https://git.aethex.tech/Labs/os/issues"},"_id":"@aethex.os/middleware@1.0.2","gitHead":"6c77abd6440deb925777f64998d4c67a398236e0","_nodeVersion":"22.22.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-VJ/o2+5/zCDH5u2A0688uDe/g/4a94YZthwUUK4DyLpgeVW8ucQrs4Q0k8qFeWcCybDIa5Ji7qImZBvi9K+0Pg==","shasum":"4eac6bf2da4b36fe2cfaf7bebafc8dfed90bb5bf","tarball":"https://registry.npmjs.org/@aethex.os/middleware/-/middleware-1.0.2.tgz","fileCount":18,"unpackedSize":20255,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIE9YR053SA2yrYUJlbZXh+Vg+ZJddv13tuydgGYQ9XFmAiEA37VNx5UwO5tWU8q4jE6b4kJ/5CH0VPyjWAZCxN5NCd0="}]},"_npmUser":{"name":"mrpiglr","email":"mrpiglr@aethex.dev"},"directories":{},"maintainers":[{"name":"mrpiglr","email":"mrpiglr@aethex.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/middleware_1.0.2_1783400206835_0.08290420592071812"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-04T21:42:23.771Z","modified":"2026-07-07T04:56:47.096Z","1.0.0":"2026-05-04T21:42:23.984Z","1.0.1":"2026-05-04T22:07:59.322Z","1.0.2":"2026-07-07T04:56:46.960Z"},"bugs":{"url":"https://git.aethex.tech/Labs/os/issues"},"author":{"name":"AeThex Corporation"},"license":"MIT","homepage":"https://aethex.dev/docs","keywords":["aethex","express","middleware","auth","cors","rbac","capability","metaverse"],"repository":{"type":"git","url":"git+https://git.aethex.tech/Labs/os.git","directory":"packages/aethex-middleware"},"description":"AeThex Express middleware — auth guards, CORS factory, and capability-based access control","maintainers":[{"name":"mrpiglr","email":"mrpiglr@aethex.dev"}],"readme":"# @aethex.os/middleware\n\nExpress middleware for auth guards, CORS, and capability-based access control. Drop-in, fully typed.\n\n## Install\n\n```bash\nnpm install @aethex.os/middleware\n```\n\n## Auth\n\n```ts\nimport { requireAuth, requireRole, optionalAuth } from '@aethex.os/middleware';\n\n// Block unauthenticated requests\napp.use('/api/profile', requireAuth());\n\n// Block non-admins\napp.use('/api/admin', requireAuth(), requireRole('admin'));\n\n// Populate req.userId if logged in, but don't block\napp.use(optionalAuth());\n```\n\n### Custom token validation\n\n```ts\napp.use(requireAuth({\n  validateToken: async (token) => {\n    const user = await db.users.findByToken(token);\n    return user ? { id: user.id, role: user.role } : null;\n  },\n}));\n```\n\nAfter middleware runs, `req.userId` and `req.userRole` are set.\n\n## CORS\n\n```ts\nimport cors from 'cors';\nimport { createCorsOptions } from '@aethex.os/middleware';\n\napp.use(cors(createCorsOptions({\n  origins: [\n    'https://yourapp.com',\n    'https://app.yourapp.com',\n  ],\n  // localhost:3000/5000/5173 added automatically in dev\n})));\n```\n\n## Capability Guard\n\nGate endpoints by plan/role without hardcoding checks everywhere.\n\n```ts\nimport { createCapabilityGuard } from '@aethex.os/middleware';\n\nconst guard = createCapabilityGuard({\n  realmCapabilities: {\n    free:       ['analytics'],\n    pro:        ['analytics', 'exports', 'api_access'],\n    enterprise: ['analytics', 'exports', 'api_access', 'sso'],\n  },\n  policies: {\n    '/api/export':  { features: ['exports'] },\n    '/api/sso':     { features: ['sso'] },\n    '/api/v1':      { plans: ['pro', 'enterprise'] },\n  },\n  realmHeader: 'x-user-plan', // sent by your auth layer\n});\n\napp.use(guard);\n```\n\nReturns `403` with `{ error, reason, required, missing }` when access is denied.\n\n## Works with @aethex.os/registry\n\n```ts\nimport { createRegistry } from '@aethex.os/registry';\nimport { createCapabilityGuard } from '@aethex.os/middleware';\n\nconst registry = createRegistry({ plans: { free: [...], pro: [...] } });\n\n// Use registry.config directly\nconst guard = createCapabilityGuard({\n  realmCapabilities: registry.config.plans,\n  policies: { '/api/export': { features: ['exports'] } },\n});\n```\n\n## Part of the @aethex.os ecosystem\n\nSee [@aethex.os/core](https://npmjs.com/package/@aethex.os/core) for the full package list.\n","readmeFilename":"README.md"}