{"_id":"@bernierllc/nevar-circuit-breaker","_rev":"5-8eae957473adfd303413c0edc64d9fee","name":"@bernierllc/nevar-circuit-breaker","dist-tags":{"latest":"0.5.0"},"versions":{"0.0.1":{"name":"@bernierllc/nevar-circuit-breaker","version":"0.0.1","keywords":["oidc","trusted-publishing","setup"],"_id":"@bernierllc/nevar-circuit-breaker@0.0.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"d8b91d885a159a8dd9502d838d615a75a5a081f0","tarball":"https://registry.npmjs.org/@bernierllc/nevar-circuit-breaker/-/nevar-circuit-breaker-0.0.1.tgz","fileCount":2,"integrity":"sha512-YVEiqwxiEXysQmFl2VWSes7uFkWspjrUnl+OGwz8Nlug5tcpKdpOso/YI14ATy1DxtJBKXbgxczOACbNUskSjA==","signatures":[{"sig":"MEUCIDzMMSsW9pUzKeucjxF6+h91G1hwotbXNS26DK+ek9ThAiEA7+6JlPMw3ROoQCN7gv6jsz/2hkY9XVd5EZeJjCJOSZY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2095},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_npmVersion":"11.11.0","description":"OIDC trusted publishing setup package for @bernierllc/nevar-circuit-breaker","directories":{},"_nodeVersion":"25.8.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/nevar-circuit-breaker_0.0.1_1774655686765_0.5976641259597935","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@bernierllc/nevar-circuit-breaker","version":"0.1.0","keywords":["nevar","rules-engine","circuit-breaker","rate-limiting","concurrency"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/nevar-circuit-breaker@0.1.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"f0fe7ddc32032e370ca487065106fab071014012","tarball":"https://registry.npmjs.org/@bernierllc/nevar-circuit-breaker/-/nevar-circuit-breaker-0.1.0.tgz","fileCount":7,"integrity":"sha512-oJn41nLJxY3i+szPvYYMLkiVHmstNBLcLGIgA+NNJb7Bgi91oZlSeWFlORFzjba9Ya2yScoTrlPtJXzY6r58YQ==","signatures":[{"sig":"MEUCIHvNKB6F+wroKqdiwJ7mSvo81t69K+LMcEOzgIZlWI/YAiEA4AjY6ZbzBfgeGtj7+HxWbcF77XsxI1MJwIJP5eKReEA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9506},"main":"dist/index.js","_from":"file:bernierllc-nevar-circuit-breaker-0.1.0.tgz","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"scripts":{"lint":"eslint src __tests__ --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e39f560b-7cd0-42f3-bf9c-e731d5e98d0c"}},"_resolved":"/home/runner/work/tools/tools/packages/core/nevar-circuit-breaker/bernierllc-nevar-circuit-breaker-0.1.0.tgz","_integrity":"sha512-oJn41nLJxY3i+szPvYYMLkiVHmstNBLcLGIgA+NNJb7Bgi91oZlSeWFlORFzjba9Ya2yScoTrlPtJXzY6r58YQ==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/nevar-circuit-breaker"},"_npmVersion":"11.12.1","description":"Circuit breaker for the Nevar rules engine - configurable depth, action, time, and concurrency limits","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@bernierllc/nevar-types":"0.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nevar-circuit-breaker_0.1.0_1774898029183_0.5543742556915121","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@bernierllc/nevar-circuit-breaker","version":"0.2.0","keywords":["nevar","rules-engine","circuit-breaker","rate-limiting","concurrency"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/nevar-circuit-breaker@0.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"23074774ba49815b92ad5f7da812fe03596b2ee5","tarball":"https://registry.npmjs.org/@bernierllc/nevar-circuit-breaker/-/nevar-circuit-breaker-0.2.0.tgz","fileCount":7,"integrity":"sha512-DO/4vp5+GsZwPtVlitDvnB6JRgai5Lrj4thVxeFfhc/YdZMyj3GGig0Nqzb+6MT8weaguJ2ic40nIRE2wScArA==","signatures":[{"sig":"MEYCIQCwqjw8kXPHINfeLyviIaLEUOgSn/AS7XSObnxZSty6OwIhAN9VEBSd+g0j7G5KbxLmrEkN6GW9qgyXytdkR0kCsxvg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9506},"main":"dist/index.js","_from":"file:bernierllc-nevar-circuit-breaker-0.2.0.tgz","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"scripts":{"lint":"eslint src __tests__ --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e39f560b-7cd0-42f3-bf9c-e731d5e98d0c"}},"_resolved":"/home/runner/work/tools/tools/packages/core/nevar-circuit-breaker/bernierllc-nevar-circuit-breaker-0.2.0.tgz","_integrity":"sha512-DO/4vp5+GsZwPtVlitDvnB6JRgai5Lrj4thVxeFfhc/YdZMyj3GGig0Nqzb+6MT8weaguJ2ic40nIRE2wScArA==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/nevar-circuit-breaker"},"_npmVersion":"11.14.1","description":"Circuit breaker for the Nevar rules engine - configurable depth, action, time, and concurrency limits","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/nevar-types":"0.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nevar-circuit-breaker_0.2.0_1779133522987_0.9781195138831649","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@bernierllc/nevar-circuit-breaker","version":"0.4.0","keywords":["nevar","rules-engine","circuit-breaker","rate-limiting","concurrency"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/nevar-circuit-breaker@0.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"03612d21ec4e6f4310c02850255f8e6a8b3c6b5f","tarball":"https://registry.npmjs.org/@bernierllc/nevar-circuit-breaker/-/nevar-circuit-breaker-0.4.0.tgz","fileCount":9,"integrity":"sha512-7QOqC+cQPytxF19l918hjhCoXdCy9Lm9V4ehB8zCZe3Mg+9g6kwTKDrVfgxd26v7W02Q+9bL3Rc69UULMuZI0g==","signatures":[{"sig":"MEUCIQDN0Wsti+7cbH6UJpB2TQIiMB5fiz0m5iyzbGHkQ5NrlwIgJEx9OwBYf5gWqzmH+hJMCl92savyiF1c+1HOPTxZHJY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11348},"main":"dist/index.js","_from":"file:bernierllc-nevar-circuit-breaker-0.4.0.tgz","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"scripts":{"lint":"eslint src __tests__ --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e39f560b-7cd0-42f3-bf9c-e731d5e98d0c"}},"_resolved":"/home/runner/work/tools/tools/packages/core/nevar-circuit-breaker/bernierllc-nevar-circuit-breaker-0.4.0.tgz","_integrity":"sha512-7QOqC+cQPytxF19l918hjhCoXdCy9Lm9V4ehB8zCZe3Mg+9g6kwTKDrVfgxd26v7W02Q+9bL3Rc69UULMuZI0g==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/nevar-circuit-breaker"},"_npmVersion":"11.14.1","description":"Circuit breaker for the Nevar rules engine - configurable depth, action, time, and concurrency limits","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/nevar-types":"0.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nevar-circuit-breaker_0.4.0_1779241252938_0.19412650977282353","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@bernierllc/nevar-circuit-breaker","version":"0.5.0","description":"Circuit breaker for the Nevar rules engine - configurable depth, action, time, and concurrency limits","main":"dist/index.js","types":"dist/index.d.ts","keywords":["nevar","rules-engine","circuit-breaker","rate-limiting","concurrency"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"engines":{"node":">=16.0.0"},"repository":{"type":"git","url":"git+https://github.com/bernierllc/tools.git","directory":"packages/core/nevar-circuit-breaker"},"dependencies":{"@bernierllc/nevar-types":"0.4.0"},"devDependencies":{"@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.0.0","jest":"^29.5.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0"},"scripts":{"build":"tsc","prebuild":"npm run clean","clean":"rimraf dist","test":"jest","test:run":"jest","test:coverage":"jest --coverage","lint":"eslint src __tests__ --ext .ts"},"_id":"@bernierllc/nevar-circuit-breaker@0.5.0","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"homepage":"https://github.com/bernierllc/tools#readme","_integrity":"sha512-Qp5SHzHoxr3WDY/9n9kQWSlnXrWFOZ5PZIWguURVnVs7IFBeL2Vgp49AKE0b+3oTnmyQDld0oumDuyjAIHi/oA==","_resolved":"/home/runner/work/tools/tools/packages/core/nevar-circuit-breaker/bernierllc-nevar-circuit-breaker-0.5.0.tgz","_from":"file:bernierllc-nevar-circuit-breaker-0.5.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-Qp5SHzHoxr3WDY/9n9kQWSlnXrWFOZ5PZIWguURVnVs7IFBeL2Vgp49AKE0b+3oTnmyQDld0oumDuyjAIHi/oA==","shasum":"f2e8d573aa33c94460edba51f23093b02530e80d","tarball":"https://registry.npmjs.org/@bernierllc/nevar-circuit-breaker/-/nevar-circuit-breaker-0.5.0.tgz","fileCount":9,"unpackedSize":11348,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICU2w1dmA3KRbaGc5xElyOv/9dzti2LgDDGhvondVLPRAiAu5us0VTkOSHsLkKDnbCAXaJsZrFQFEHXkrcCgiih85g=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e39f560b-7cd0-42f3-bf9c-e731d5e98d0c"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nevar-circuit-breaker_0.5.0_1779250002592_0.5358913640334682"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-27T23:54:46.716Z","modified":"2026-05-20T04:06:42.914Z","0.0.1":"2026-03-27T23:54:46.892Z","0.1.0":"2026-03-30T19:13:49.321Z","0.2.0":"2026-05-18T19:45:23.164Z","0.4.0":"2026-05-20T01:40:53.095Z","0.5.0":"2026-05-20T04:06:42.754Z"},"bugs":{"url":"https://github.com/bernierllc/tools/issues"},"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","homepage":"https://github.com/bernierllc/tools#readme","keywords":["nevar","rules-engine","circuit-breaker","rate-limiting","concurrency"],"repository":{"type":"git","url":"git+https://github.com/bernierllc/tools.git","directory":"packages/core/nevar-circuit-breaker"},"description":"Circuit breaker for the Nevar rules engine - configurable depth, action, time, and concurrency limits","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/nevar-circuit-breaker\n\nCircuit breaker for the Nevar rules engine suite. Provides configurable hard limits for cascade depth, actions per chain, chain duration, and concurrent chain execution.\n\n## Installation\n\n```bash\nnpm install @bernierllc/nevar-circuit-breaker\n```\n\n## Usage\n\n```typescript\nimport { CircuitBreaker } from '@bernierllc/nevar-circuit-breaker';\n\nconst breaker = new CircuitBreaker({\n  maxCascadeDepth: 5,\n  maxActionsPerChain: 25,\n  maxChainDurationMs: 10_000,\n  maxConcurrentChains: 50,\n});\n\n// Check limits before proceeding\nbreaker.checkDepth(currentDepth);\nbreaker.checkActions(actionCount);\nbreaker.checkDuration(startTime);\n\n// Manage concurrency\nif (breaker.acquireChain()) {\n  try {\n    // ... execute chain\n  } finally {\n    breaker.releaseChain();\n  }\n}\n```\n\n## API\n\n### `CircuitBreaker`\n\nEnforces hard limits on rule chain execution to prevent runaway cascades.\n\n**Constructor:** `new CircuitBreaker(config?: Partial<CircuitBreakerConfig>)`\n\nDefault config: `maxCascadeDepth: 10`, `maxActionsPerChain: 50`, `maxChainDurationMs: 30000`, `maxConcurrentChains: 100`\n\n- `checkDepth(currentDepth)` - Throws `NevarCircuitBreakerError` if depth exceeds `maxCascadeDepth`\n- `checkActions(actionCount)` - Throws `NevarCircuitBreakerError` if count exceeds `maxActionsPerChain`\n- `checkDuration(startTime)` - Throws `NevarCircuitBreakerError` if elapsed time exceeds `maxChainDurationMs`\n- `acquireChain()` - Attempts to acquire a concurrency slot. Returns `true` if under limit, `false` if at capacity\n- `releaseChain()` - Releases a concurrency slot\n- `getConfig()` - Returns a copy of the current configuration\n- `getActiveChains()` - Returns the number of currently active chains\n\n## Integration Documentation\n\n### Logger Integration\nThis package does not integrate with `@bernierllc/logger`. As a core package, logger integration is optional and not included by default. Consumers should handle logging at the service layer.\n\n### NeverHub Integration\nThis package does not integrate with `@bernierllc/neverhub-adapter`. As a core package, NeverHub integration is not applicable. NeverHub registration should be handled by service-layer packages that compose this package.\n","readmeFilename":"README.md"}