{"_id":"@dainamite/cpq-billing-connector","_rev":"3-5a9aa90d7abb52c79992373fd591bdb5","name":"@dainamite/cpq-billing-connector","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"@dainamite/cpq-billing-connector","version":"0.1.0","license":"MIT","_id":"@dainamite/cpq-billing-connector@0.1.0","maintainers":[{"name":"dainamite-acc","email":"hq@dainamite.com"},{"name":"kamyyylo","email":"kamyszek1@gmail.com"}],"homepage":"https://github.com/dainamite-technologies/dainamite-core#readme","bugs":{"url":"https://github.com/dainamite-technologies/dainamite-core/issues"},"dist":{"shasum":"da1d0e02196d9faa70f4acb3e7de455ddbd7aef2","tarball":"https://registry.npmjs.org/@dainamite/cpq-billing-connector/-/cpq-billing-connector-0.1.0.tgz","fileCount":49,"integrity":"sha512-TiYuT6dDQwCH8KUUb045chz7+buhGWL8BnGu4Ja7GKMNrMtx88mB2iBGsL/VyudnfkOc0+dCAK8pYKOkWl1OGA==","signatures":[{"sig":"MEUCIAOHnp10fhOp6OOKUSW8SmTzpqdnZIvEg7ICoX/1pM6XAiEA22pdUmhWfmxHVS9Nl84gstL8q5dxShQ3YUZXRmU9T+E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130620},"main":"./dist/modules/cpq_billing_connector/index.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./src/modules/cpq_billing_connector/index.ts","default":"./dist/modules/cpq_billing_connector/index.js"},"./*":{"types":["./src/*.ts","./src/*.tsx"],"default":"./dist/*.js"},"./*/*":{"types":["./src/*/*.ts","./src/*/*.tsx"],"default":"./dist/*/*.js"},"./*.ts":{"types":"./src/*.ts","default":"./dist/*.js"},"./*.tsx":{"types":"./src/*.tsx","default":"./dist/*.js"},"./*/*/*":{"types":["./src/*/*/*.ts","./src/*/*/*.tsx"],"default":"./dist/*/*/*.js"},"./*.json":"./src/*.json","./*/*/*/*":{"types":["./src/*/*/*/*.ts","./src/*/*/*/*.tsx"],"default":"./dist/*/*/*/*.js"},"./*/*.json":"./src/*/*.json","./*/*/*/*/*":{"types":["./src/*/*/*/*/*.ts","./src/*/*/*/*/*.tsx"],"default":"./dist/*/*/*/*/*.js"},"./*/*/*.json":"./src/*/*/*.json","./*/*/*/*/*/*":{"types":["./src/*/*/*/*/*/*.ts","./src/*/*/*/*/*/*.tsx"],"default":"./dist/*/*/*/*/*/*.js"},"./*/*/*/*.json":"./src/*/*/*/*.json","./*/*/*/*/*/*/*":{"types":["./src/*/*/*/*/*/*/*.ts","./src/*/*/*/*/*/*/*.tsx"],"default":"./dist/*/*/*/*/*/*/*.js"},"./*/*/*/*/*.json":"./src/*/*/*/*/*.json","./*/*/*/*/*/*.json":"./src/*/*/*/*/*/*.json","./*/*/*/*/*/*/*.json":"./src/*/*/*/*/*/*/*.json","./modules/cpq_billing_connector":{"types":"./src/modules/cpq_billing_connector/index.ts","default":"./dist/modules/cpq_billing_connector/index.js"}},"gitHead":"ad015655f0396201e5fe861eb2869c3c87f9a5b4","scripts":{"build":"node build.mjs","watch":"node watch.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dainamite-acc","email":"hq@dainamite.com"},"repository":{"url":"git+https://github.com/dainamite-technologies/dainamite-core.git","type":"git","directory":"packages/cpq-billing-connector"},"_npmVersion":"11.13.0","description":"Wires @dainamite/cpq subscription lifecycle events to @dainamite/billing API calls (activated / amended / renewed / cancelled / merged / superseded).","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chokidar":"^4.0.3"},"peerDependencies":{"zod":"^4.0.0","awilix":"^12.0.0","@dainamite/cpq":"^0.3.0","@mikro-orm/core":"^7.0.0","@dainamite/billing":"^0.17.0","@open-mercato/core":"^0.6.0","@open-mercato/events":"^0.6.0","@open-mercato/shared":"^0.6.0","@mikro-orm/decorators":"^7.0.0","@mikro-orm/postgresql":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cpq-billing-connector_0.1.0_1781005893548_0.9189500574348433","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@dainamite/cpq-billing-connector","version":"0.1.1","license":"MIT","_id":"@dainamite/cpq-billing-connector@0.1.1","maintainers":[{"name":"dainamite-acc","email":"hq@dainamite.com"},{"name":"kamyyylo","email":"kamyszek1@gmail.com"}],"homepage":"https://github.com/dainamite-technologies/dainamite-core#readme","bugs":{"url":"https://github.com/dainamite-technologies/dainamite-core/issues"},"dist":{"shasum":"326a9b3d256f5cd1dfd64521177b16a724925748","tarball":"https://registry.npmjs.org/@dainamite/cpq-billing-connector/-/cpq-billing-connector-0.1.1.tgz","fileCount":49,"integrity":"sha512-VIEDlRTbDBCRjQ+gbo39SRDf34+eiYngux/KAUTH0vf1/R47Hq5OPEXDc8BLMrNMKKhPVfc0SxuqYuW9nKyN1A==","signatures":[{"sig":"MEYCIQDOonG9kh7/q4AfL/0Tu4kpwX6cl+L8uoRvAtNJ4J8taAIhAL0rm2NARnx/y0+A5wFMTWwZvY4pRHgBZEGcGswLS0ua","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130950},"main":"./dist/modules/cpq_billing_connector/index.js","type":"module","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./src/modules/cpq_billing_connector/index.ts","default":"./dist/modules/cpq_billing_connector/index.js"},"./*":{"types":["./src/*.ts","./src/*.tsx"],"default":"./dist/*.js"},"./*/*":{"types":["./src/*/*.ts","./src/*/*.tsx"],"default":"./dist/*/*.js"},"./*.ts":{"types":"./src/*.ts","default":"./dist/*.js"},"./*.tsx":{"types":"./src/*.tsx","default":"./dist/*.js"},"./*/*/*":{"types":["./src/*/*/*.ts","./src/*/*/*.tsx"],"default":"./dist/*/*/*.js"},"./*.json":"./src/*.json","./*/*/*/*":{"types":["./src/*/*/*/*.ts","./src/*/*/*/*.tsx"],"default":"./dist/*/*/*/*.js"},"./*/*.json":"./src/*/*.json","./*/*/*/*/*":{"types":["./src/*/*/*/*/*.ts","./src/*/*/*/*/*.tsx"],"default":"./dist/*/*/*/*/*.js"},"./*/*/*.json":"./src/*/*/*.json","./*/*/*/*/*/*":{"types":["./src/*/*/*/*/*/*.ts","./src/*/*/*/*/*/*.tsx"],"default":"./dist/*/*/*/*/*/*.js"},"./*/*/*/*.json":"./src/*/*/*/*.json","./*/*/*/*/*/*/*":{"types":["./src/*/*/*/*/*/*/*.ts","./src/*/*/*/*/*/*/*.tsx"],"default":"./dist/*/*/*/*/*/*/*.js"},"./*/*/*/*/*.json":"./src/*/*/*/*/*.json","./*/*/*/*/*/*.json":"./src/*/*/*/*/*/*.json","./*/*/*/*/*/*/*.json":"./src/*/*/*/*/*/*/*.json","./modules/cpq_billing_connector":{"types":"./src/modules/cpq_billing_connector/index.ts","default":"./dist/modules/cpq_billing_connector/index.js"}},"gitHead":"1fd9281937f30e75c62df9acf45cf3a2dbdaabe4","scripts":{"build":"node build.mjs","watch":"node watch.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dainamite-acc","email":"hq@dainamite.com"},"repository":{"url":"git+https://github.com/dainamite-technologies/dainamite-core.git","type":"git","directory":"packages/cpq-billing-connector"},"_npmVersion":"11.13.0","description":"Wires @dainamite/cpq subscription lifecycle events to @dainamite/billing API calls (activated / amended / renewed / cancelled / merged / superseded).","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chokidar":"^4.0.3"},"peerDependencies":{"zod":"^4.0.0","awilix":"^12.0.0","@dainamite/cpq":"^0.3.0","@mikro-orm/core":"^7.0.0","@dainamite/billing":"^0.18.0","@open-mercato/core":"^0.6.0","@open-mercato/events":"^0.6.0","@open-mercato/shared":"^0.6.0","@mikro-orm/decorators":"^7.0.0","@mikro-orm/postgresql":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cpq-billing-connector_0.1.1_1782896776032_0.37733737988279925","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@dainamite/cpq-billing-connector","version":"1.0.0","description":"Wires @dainamite/cpq subscription lifecycle events to @dainamite/billing API calls (activated / amended / renewed / cancelled / merged / superseded).","type":"module","main":"./dist/modules/cpq_billing_connector/index.js","scripts":{"build":"node build.mjs","watch":"node watch.mjs","typecheck":"tsc --noEmit"},"devDependencies":{"chokidar":"^4.0.3"},"exports":{".":{"types":"./src/modules/cpq_billing_connector/index.ts","default":"./dist/modules/cpq_billing_connector/index.js"},"./modules/cpq_billing_connector":{"types":"./src/modules/cpq_billing_connector/index.ts","default":"./dist/modules/cpq_billing_connector/index.js"},"./*.ts":{"types":"./src/*.ts","default":"./dist/*.js"},"./*.tsx":{"types":"./src/*.tsx","default":"./dist/*.js"},"./*.json":"./src/*.json","./*":{"types":["./src/*.ts","./src/*.tsx"],"default":"./dist/*.js"},"./*/*.json":"./src/*/*.json","./*/*":{"types":["./src/*/*.ts","./src/*/*.tsx"],"default":"./dist/*/*.js"},"./*/*/*.json":"./src/*/*/*.json","./*/*/*":{"types":["./src/*/*/*.ts","./src/*/*/*.tsx"],"default":"./dist/*/*/*.js"},"./*/*/*/*.json":"./src/*/*/*/*.json","./*/*/*/*":{"types":["./src/*/*/*/*.ts","./src/*/*/*/*.tsx"],"default":"./dist/*/*/*/*.js"},"./*/*/*/*/*.json":"./src/*/*/*/*/*.json","./*/*/*/*/*":{"types":["./src/*/*/*/*/*.ts","./src/*/*/*/*/*.tsx"],"default":"./dist/*/*/*/*/*.js"},"./*/*/*/*/*/*.json":"./src/*/*/*/*/*/*.json","./*/*/*/*/*/*":{"types":["./src/*/*/*/*/*/*.ts","./src/*/*/*/*/*/*.tsx"],"default":"./dist/*/*/*/*/*/*.js"},"./*/*/*/*/*/*/*.json":"./src/*/*/*/*/*/*/*.json","./*/*/*/*/*/*/*":{"types":["./src/*/*/*/*/*/*/*.ts","./src/*/*/*/*/*/*/*.tsx"],"default":"./dist/*/*/*/*/*/*/*.js"}},"peerDependencies":{"@dainamite/billing":"^0.19.0","@dainamite/cpq":"^0.4.0","@mikro-orm/core":"^7.1.5","@mikro-orm/decorators":"^7.1.5","@mikro-orm/postgresql":"^7.1.5","@open-mercato/core":"^0.6.7","@open-mercato/events":"^0.6.7","@open-mercato/shared":"^0.6.7","awilix":"^12.0.0","zod":"^4.0.0"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/dainamite-technologies/dainamite-core.git","directory":"packages/cpq-billing-connector"},"license":"MIT","engines":{"node":">=24.0.0"},"gitHead":"bf641f89e1493ae88a88234140f0cf43daaa0849","_id":"@dainamite/cpq-billing-connector@1.0.0","bugs":{"url":"https://github.com/dainamite-technologies/dainamite-core/issues"},"homepage":"https://github.com/dainamite-technologies/dainamite-core#readme","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-NtrNXs4IfPrYYBThH6my8q1Tlz4AIsJGG39Pqj6lAjwrAZ2i68f0jbE6Kvyki3PaNcmRIKD8a0m/PwsWCZtMwA==","shasum":"9226155f00227f8056ab5a6b8ce773d7d6fd9c01","tarball":"https://registry.npmjs.org/@dainamite/cpq-billing-connector/-/cpq-billing-connector-1.0.0.tgz","fileCount":49,"unpackedSize":131869,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIF+8XXinPvhu7Bou98Z/Eep6p9evohuPauM6mSe0ydjXAiEA6/yMPrGA9ldRj+Eg4z40Dtk03uJzYb3GxCVikWFHYD0="}]},"_npmUser":{"name":"dainamite-acc","email":"hq@dainamite.com"},"directories":{},"maintainers":[{"name":"dainamite-acc","email":"hq@dainamite.com"},{"name":"kamyyylo","email":"kamyszek1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cpq-billing-connector_1.0.0_1787655230628_0.38872195346590344"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-09T11:51:33.397Z","modified":"2026-08-25T10:53:50.976Z","0.1.0":"2026-06-09T11:51:33.696Z","0.1.1":"2026-07-01T09:06:16.159Z","1.0.0":"2026-08-25T10:53:50.785Z"},"bugs":{"url":"https://github.com/dainamite-technologies/dainamite-core/issues"},"license":"MIT","homepage":"https://github.com/dainamite-technologies/dainamite-core#readme","repository":{"type":"git","url":"git+https://github.com/dainamite-technologies/dainamite-core.git","directory":"packages/cpq-billing-connector"},"description":"Wires @dainamite/cpq subscription lifecycle events to @dainamite/billing API calls (activated / amended / renewed / cancelled / merged / superseded).","maintainers":[{"name":"dainamite-acc","email":"hq@dainamite.com"},{"name":"kamyyylo","email":"kamyszek1@gmail.com"}],"readme":"# @dainamite/cpq-billing-connector\n\nPre-built integration that wires `@dainamite/cpq` subscription lifecycle\nevents to `@dainamite/billing` API calls.\n\nIt depends on both `@dainamite/cpq` and `@dainamite/billing` (as peers) and\n**must be registered after both** so their services are resolvable when its\nsubscribers fire:\n\n```typescript\n// src/modules.ts — order matters\n{ id: 'cpq', from: '@dainamite/cpq' }\n{ id: 'billing', from: '@dainamite/billing' }\n{ id: 'cpq_billing_connector', from: '@dainamite/cpq-billing-connector' }\n```\n\n```bash\nyarn generate\nyarn mercato db migrate\n```\n\nThere is no UI or schema of its own to configure — it is pure event glue.\nEngines: **Node ≥ 24**.\n\nThe connector subscribes to six CPQ lifecycle events and translates each\nto the billing API contract:\n\n| CPQ event | Connector action |\n|---|---|\n| `cpq.subscription.activated` | Create Billing Account if missing; create Billing Items per charge (one-time + recurring split) |\n| `cpq.subscription.amended` | Create new Billing Items for added subscription items; compute proration value for the partial cycle and post as `one_time` Billing Item; set `bill_end_date` on removed items |\n| `cpq.subscription.renewed` | Extend `bill_end_date` on existing Billing Items; create new Items for any added subscription items |\n| `cpq.subscription.cancelled` | Set `bill_end_date` on all Billing Items for the subscription |\n| `cpq.subscription.merged` | Move Billing Items from source subscriptions to the merged subscription (update `subscription_id`) |\n| `cpq.subscription.superseded` | Set `bill_end_date` on all Billing Items for the superseded subscription |\n\n## Status\n\n**Built — publishing soon** (alongside `@dainamite/billing`; not yet on npm).\nAll six subscribers are wired end-to-end — `@dainamite/cpq` emits the\nmatching events (`cpq.subscription.activated` on new-sale activation,\nthe ARC events on amend / renew / cancel / merge). Proration math lives\nin this package: the `amended` subscriber derives the bill cycle from\nthe billing account via billing's `cycleContaining` (CPQ stays neutral\non billing-calendar semantics).\n\nSee [`specs/implementation/xd-249-billing-spec.md`](../../specs/implementation/xd-249-billing-spec.md)\n§ CPQ Integration for the full design.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}