{"_id":"@ambiten/adapter-express","_rev":"3-077e286e1b07a74b074dcf39d9b0d3e8","name":"@ambiten/adapter-express","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@ambiten/adapter-express","version":"1.0.0","keywords":[],"author":"","license":"ISC","_id":"@ambiten/adapter-express@1.0.0","maintainers":[{"name":"abimongo","email":"padave805@gmail.com"}],"homepage":"https://ambiten.dev","bugs":{"url":"https://github.com/AmbitenHQ/ambiten/issues"},"dist":{"shasum":"ecbefe63df028c56fd9f077393c4f713131ba39c","tarball":"https://registry.npmjs.org/@ambiten/adapter-express/-/adapter-express-1.0.0.tgz","fileCount":11,"integrity":"sha512-9bEZJt1VkwRONfjGBA9HEUCm6n+YJr6b1GYKxySTKqprruXjIem4ki8oiogJWtgelPmLYdFpJ7WCQ4TxcUyUag==","signatures":[{"sig":"MEUCICFvtqGQDsvZHeHE1ceStka9k/I5nAJL4bXM8gNkouqBAiEA4z/GOkvLT05wYCApT5SjU0YyPWkFwOgn89z5AWES6IM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13371},"main":"./dist/index.js","_from":"file:ambiten-adapter-express-1.0.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.11.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"jest --detectOpenHandles --coverage","build":"pnpm -r run build:script","clean":"rimraf dist","release":"pnpm changeset version","changeset":"pnpm run changeset","build:script":"tsc -p tsconfig.json"},"_npmUser":{"name":"abimongo","email":"padave805@gmail.com"},"_resolved":"/tmp/0f84c5047da94cb1a7cb77121944311f/ambiten-adapter-express-1.0.0.tgz","_integrity":"sha512-9bEZJt1VkwRONfjGBA9HEUCm6n+YJr6b1GYKxySTKqprruXjIem4ki8oiogJWtgelPmLYdFpJ7WCQ4TxcUyUag==","repository":{"url":"git+https://github.com/AmbitenHQ/ambiten.git","type":"git","directory":"packages/adapter-express"},"_npmVersion":"11.17.0","description":"Ambiten multi-tenancy adapter for Express.js","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@ambiten/adapter-types":"1.0.0","@ambiten/adapter-runtime":"1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","express":"5.1.0","ts-jest":"^29.4.9","typescript":"^5.9.3","@types/jest":"^29.5.14","@types/express":"^5.0.6","@testing-library/jest-dom":"^6.9.1","@types/express-serve-static-core":"^5.1.1"},"peerDependencies":{"express":"^4.18.0 || ^5.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-express_1.0.0_1781347265306_0.6490799794450548","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@ambiten/adapter-express","version":"1.0.1","keywords":[],"author":"","license":"ISC","_id":"@ambiten/adapter-express@1.0.1","maintainers":[{"name":"abimongo","email":"padave805@gmail.com"}],"homepage":"https://docs.ambiten.dev","bugs":{"url":"https://github.com/AmbitenHQ/ambiten/issues"},"dist":{"shasum":"7b49d8bf0190251227860e7aee1982a1dce65abd","tarball":"https://registry.npmjs.org/@ambiten/adapter-express/-/adapter-express-1.0.1.tgz","fileCount":11,"integrity":"sha512-+uCsN8ZAAYvh573MDaDDGmFuFFqdInYAZEV4/T0ub3LvCyM3HxyJI+Gd1l5Pd7U+b5IDxyDRlLuMeID+Se7nFw==","signatures":[{"sig":"MEUCIQDLjtoprw8zJj3TYFur4a/YCvCCu2mEXJ3d4GcoWapiewIgUfsyAsVA+FvGmglna0xk1VwLdrD62u4PUB9VnZc7CPQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13383},"main":"./dist/index.js","_from":"file:ambiten-adapter-express-1.0.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.11.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"jest --detectOpenHandles --coverage","build":"pnpm -r run build:script","clean":"rimraf dist","release":"pnpm changeset version","changeset":"pnpm run changeset","build:script":"tsc -p tsconfig.json"},"_npmUser":{"name":"abimongo","email":"padave805@gmail.com"},"_resolved":"/tmp/23aa917443a36e8e0a1cf08f6d3a0e2f/ambiten-adapter-express-1.0.1.tgz","_integrity":"sha512-+uCsN8ZAAYvh573MDaDDGmFuFFqdInYAZEV4/T0ub3LvCyM3HxyJI+Gd1l5Pd7U+b5IDxyDRlLuMeID+Se7nFw==","repository":{"url":"git+https://github.com/AmbitenHQ/ambiten.git","type":"git","directory":"packages/adapter-express"},"_npmVersion":"12.0.2","description":"Ambiten multi-tenancy adapter for Express.js","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@ambiten/adapter-types":"^1.0.0","@ambiten/adapter-runtime":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","express":"5.1.0","ts-jest":"^29.4.9","typescript":"^5.9.3","@types/jest":"^29.5.14","@types/express":"^5.0.6","@testing-library/jest-dom":"^6.9.1","@types/express-serve-static-core":"^5.1.1"},"peerDependencies":{"express":"^4.18.0 || ^5.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adapter-express_1.0.1_1789148273736_0.4532344489437494","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@ambiten/adapter-express","version":"1.0.2","description":"Ambiten multi-tenancy adapter for Express.js","main":"./dist/cjs/index.js","module":"./dist/esm/index.js","types":"./dist/esm/index.d.ts","publishConfig":{"access":"public"},"sideEffects":false,"exports":{".":{"import":{"types":"./dist/esm/index.d.ts","default":"./dist/esm/index.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}}},"keywords":[],"author":"","license":"ISC","repository":{"type":"git","url":"git+https://github.com/AmbitenHQ/ambiten.git","directory":"packages/adapter-express"},"bugs":{"url":"https://github.com/AmbitenHQ/ambiten/issues"},"homepage":"https://docs.ambiten.dev","peerDependencies":{"express":"^4.18.0 || ^5.1.0"},"devDependencies":{"@testing-library/jest-dom":"^6.9.1","@types/express":"^5.0.6","@types/express-serve-static-core":"^5.1.1","@types/jest":"^29.5.14","express":"5.1.0","jest":"^29.7.0","ts-jest":"^29.4.9","typescript":"^5.9.3"},"dependencies":{"@ambiten/adapter-runtime":"^1.0.2","@ambiten/adapter-types":"^1.0.1"},"engines":{"node":">=20.11.0"},"scripts":{"build:esm":"tsc -b tsconfig.esm.json -force","build:cjs":"tsc -b tsconfig.json -force && node scripts/fix-esm-extensions.mjs","build":"pnpm run build:esm && pnpm run build:cjs","test":"jest --detectOpenHandles --coverage","changeset":"pnpm run changeset","clean":"rimraf dist && rimraf ../../.cache/tsbuildinfo/adapter-express","release":"pnpm changeset version","postbuild:esm":"node scripts/add-esm-type.js"},"_id":"@ambiten/adapter-express@1.0.2","_integrity":"sha512-GKDamhcVEDicOd4g5sFuj4haeUz2mlcoVr/s/nd4HAZbmlCXe6BcO6dhtY1aGGDInn18GHBc2SudE4zojLmwTA==","_resolved":"/tmp/18a9905896e70c5efe84e9e6ea02c517/ambiten-adapter-express-1.0.2.tgz","_from":"file:ambiten-adapter-express-1.0.2.tgz","_nodeVersion":"22.23.2","_npmVersion":"12.0.2","dist":{"integrity":"sha512-GKDamhcVEDicOd4g5sFuj4haeUz2mlcoVr/s/nd4HAZbmlCXe6BcO6dhtY1aGGDInn18GHBc2SudE4zojLmwTA==","shasum":"d491f1deb89d08a5f5298bd1508834c99583b910","tarball":"https://registry.npmjs.org/@ambiten/adapter-express/-/adapter-express-1.0.2.tgz","fileCount":20,"unpackedSize":21234,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCS3TmEmElVBy7XVq4E9rY5qn27meEp4EBAV02gl2M+eAIhAJ1xAax0mjiOq0gktyAlz2na3FcsNs3U+AvEKdJgdNxF"}]},"_npmUser":{"name":"abimongo","email":"padave805@gmail.com"},"directories":{},"maintainers":[{"name":"abimongo","email":"padave805@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/adapter-express_1.0.2_1789381800629_0.0214052153295603"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-13T10:41:04.987Z","modified":"2026-09-14T10:30:01.015Z","1.0.0":"2026-06-13T10:41:05.449Z","1.0.1":"2026-09-11T17:37:53.872Z","1.0.2":"2026-09-14T10:30:00.768Z"},"bugs":{"url":"https://github.com/AmbitenHQ/ambiten/issues"},"license":"ISC","homepage":"https://docs.ambiten.dev","keywords":[],"repository":{"type":"git","url":"git+https://github.com/AmbitenHQ/ambiten.git","directory":"packages/adapter-express"},"description":"Ambiten multi-tenancy adapter for Express.js","maintainers":[{"name":"abimongo","email":"padave805@gmail.com"}],"readme":"<div style=\"display: flex; align-items: center;\">\n<p >\n  <img\n    src=\"https://raw.githubusercontent.com/AmbitenHQ/ambiten/main/assets/ambiten-mark-192x192.png\"\n    width=\"56\"\n    alt=\"Ambiten\"\n  />  \n</p> <h2> @ambiten/adapter-express</h2>\n</div>  \n\n<p align=\"center\">\n  <strong>Express integration for the Ambiten runtime.</strong>\n</p>\n\n<p align=\"center\">\n  Establish request-scoped execution boundaries, context propagation, multi-tenancy, and transaction-aware runtime behavior inside Express applications.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@ambiten/adapter-express\">\n    <img src=\"https://img.shields.io/npm/v/@ambiten/adapter-express?style=flat-square\" alt=\"npm version\" />\n  </a>\n  <!-- <a href=\"https://ambiten.dev\">\n    <img src=\"https://img.shields.io/badge/docs-ambiten.dev-22c55e?style=flat-square\" alt=\"documentation\" />\n  </a> -->\n    <a href=\"https://github.com/AmbitenHQ/ambiten/stargazers\">\n    <img src=\"https://img.shields.io/github/stars/AmbitenHQ/ambiten?style=flat-square&color=1E88E5\" alt=\"GitHub stars\" />\n  </a>\n</p>\n\n---\n\n## Overview\n\n`@ambiten/adapter-express` connects Express applications to the Ambiten runtime.\n\nThe adapter establishes request execution boundaries so runtime context remains available throughout the lifecycle of an incoming request. Tenant information, request metadata, transactions, logging, instrumentation, and runtime services can then participate consistently across controllers, services, middleware, and model operations.\n\nThe adapter does not replace Express. It allows Express to operate as an execution entry point for the Ambiten runtime.\n\n## Installation\n\n```bash\nnpm install @ambiten/adapter-express\n```\n\nIf you are starting a new application, installing the core runtime is also recommended:\n\n```bash\nnpm install @ambiten/core @ambiten/adapter-express\n```\n\n## Quick Start\n\n```ts\nimport express from \"express\";\nimport { AmbitenBootstrapFactory } from \"@ambiten/core\";\nimport { createExpressAdapter } from \"@ambiten/adapter-express\";\n\nconst app = express();\n\nconst adapter = createExpressAdapter();\n\nconst bootstrap =\n  await AmbitenBootstrapFactory.create({\n    adapter\n  });\n\nawait bootstrap.registerMultiTenancy(app);\n\napp.listen(3000);\n```\n\nOnce installed, incoming requests automatically participate in the Ambiten execution model.\n\n## What the Adapter Provides\n\nThe adapter acts as the bridge between Express and the runtime.\n\nIt can establish request-scoped context, initialize tenant boundaries, propagate request metadata, participate in transaction-aware execution flows, and expose runtime state to downstream services and models.\n\nThis allows application code to remain focused on business logic while execution concerns remain coordinated by the runtime.\n\n## Runtime Flow\n\n```text\nIncoming Request\n        ↓\nExpress\n        ↓\nAmbiten Adapter\n        ↓\nAmbitenContext\n        ↓\nModels & Services\n        ↓\nMongoDB\n```\n\nThe adapter creates the execution boundary. The runtime then carries execution state throughout the remainder of the request lifecycle.\n\n## Multi-Tenancy\n\nWhen multi-tenancy is enabled, tenant information can be resolved from incoming requests and made available throughout the active runtime context.\n\n```text\nRequest\n   ↓\nTenant Resolution\n   ↓\nAmbitenContext\n   ↓\nTenant-Aware Execution\n```\n\nThis allows models and services to operate against the correct tenant boundary without manually passing tenant identifiers through application layers.\n\n## Documentation\n\nComplete documentation is available at:\n\nhttps://docs.ambiten.dev\n\n## Related Packages\n\n* `@ambiten/core`\n* `@ambiten/logger`\n* `@ambiten/create`\n\n## License\n\nMIT\n","readmeFilename":"README.md"}