{"_id":"@bernierllc/workflow-service","_rev":"9-4df22a7909b86ed9b34a8aff728f6ad3","name":"@bernierllc/workflow-service","dist-tags":{"latest":"1.4.0"},"versions":{"1.0.1":{"name":"@bernierllc/workflow-service","version":"1.0.1","keywords":["workflow","content","approval","orchestration","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/workflow-service@1.0.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"55adf59f5395a0c6a6e6ca2935624170e19b534f","tarball":"https://registry.npmjs.org/@bernierllc/workflow-service/-/workflow-service-1.0.1.tgz","fileCount":43,"integrity":"sha512-tzxrCzstxYqUF4JZxIK8Nu3Rt+ZofJQui+bQ6sjEKv9wCVZnOYTGEmrBqmaAmoToMcmrichfc32JWmsbrm8Gzw==","signatures":[{"sig":"MEUCIGgsvPN9r3Et1fE4NEvcX02gVfMeWGCWPXRXFqgNv8WVAiEArPc3Pa37KNMddAUhYHRPFhMPCKOpz0OhTxxORNwkf+M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":158968},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"db84544498735ea1c8d83a1abb79eb78a87a294b","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts --fix","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git","directory":"packages/service/workflow-service"},"_npmVersion":"11.4.2","description":"Orchestrates content workflow management with approval and notification systems","directories":{},"_nodeVersion":"24.4.1","dependencies":{"uuid":"^10.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","eslint":"^8.50.0","rimraf":"^5.0.0","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","@types/uuid":"^9.0.4"},"peerDependencies":{"@bernierllc/logger":"^1.0.1"},"peerDependenciesMeta":{"@bernierllc/logger":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/workflow-service_1.0.1_1756836571904_0.8771372436278067","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bernierllc/workflow-service","version":"1.0.3","keywords":["workflow","content","approval","orchestration","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/workflow-service@1.0.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"7c774bee68f5c66b6c440f3854877b45708369c8","tarball":"https://registry.npmjs.org/@bernierllc/workflow-service/-/workflow-service-1.0.3.tgz","fileCount":43,"integrity":"sha512-cbw7+J9PB3zdXo+VCkTIpEEcjgAxTphXvDQc5AqZuvb5SWDdqHa6uHJN+0On05r2EFJvFUJ/Pb/gs+hq1HIuGA==","signatures":[{"sig":"MEQCICfeeDvrZ5AXm5sda2cus6HF5lIwjIIZO8/l76eUMxr9AiALTFdkXuu2SWM5mjsmVrnNZmLOtuRH17Ft15YQvCRUTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":159988},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"64279a61d59289f73b0ff68faa28ef731c32541e","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts --fix","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git","directory":"packages/service/workflow-service"},"_npmVersion":"11.6.2","description":"Orchestrates content workflow management with approval and notification systems","directories":{},"_nodeVersion":"25.1.0","dependencies":{"uuid":"^10.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","eslint":"^8.50.0","rimraf":"^5.0.0","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","@types/uuid":"^9.0.4"},"peerDependencies":{"@bernierllc/logger":"^1.0.1"},"peerDependenciesMeta":{"@bernierllc/logger":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/workflow-service_1.0.3_1763159880878_0.6811675583114518","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@bernierllc/workflow-service","version":"1.0.5","keywords":["workflow","content","approval","orchestration","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/workflow-service@1.0.5","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"f81f57a447eca188a34414b98605d62655ed50cc","tarball":"https://registry.npmjs.org/@bernierllc/workflow-service/-/workflow-service-1.0.5.tgz","fileCount":15,"integrity":"sha512-RUKeHbAZ+ofIiZtQsxh+WLFzcPfAJ/bNscDy//UPFfGQZaHnc5iu7cK040OU/0e7cKeeL3h3gQhoyQPACyEopA==","signatures":[{"sig":"MEYCIQCoFHMGg698aHWakFdha1rt0cgaAIy02nWAtMW/Z0lJTAIhANz+yGF7to1eLfrqkV12TYG2TFJRZ96akarvzoc6OENg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47907},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts --fix","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5e7c1385-a11f-43da-95ef-d61f6cdc0dd7"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git","directory":"packages/service/workflow-service"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Orchestrates content workflow management with approval and notification systems","directories":{},"_nodeVersion":"20.19.6","dependencies":{"uuid":"^10.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","eslint":"^8.50.0","rimraf":"^5.0.0","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","@types/uuid":"^9.0.4"},"peerDependencies":{"@bernierllc/logger":"^1.0.1"},"peerDependenciesMeta":{"@bernierllc/logger":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/workflow-service_1.0.5_1767642347916_0.4959977839030667","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@bernierllc/workflow-service","version":"1.0.7","keywords":["workflow","content","approval","orchestration","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/workflow-service@1.0.7","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"205c0b3fe8c1bfbf9c13d42c825002d39f4fb04f","tarball":"https://registry.npmjs.org/@bernierllc/workflow-service/-/workflow-service-1.0.7.tgz","fileCount":15,"integrity":"sha512-CYdgDf8Xd1EKb0OWl5bGs8ufnJUMPN/P1hMPYk0UUlpDOBiTRsq1aSwUwcwZxkQyTaNv21qsf5YDugDXbP6LGA==","signatures":[{"sig":"MEUCIQDuNjLboqCZ1h4Mcfh5ZxdYugYrnSeU1xvt7jo7SpRSHwIgZZBrhOIsgsf7blmua4mQ05vx6sgPgzwtDm3wKTpB8ko=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47849},"main":"dist/index.js","_from":"file:bernierllc-workflow-service-1.0.7.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts --fix","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5e7c1385-a11f-43da-95ef-d61f6cdc0dd7"}},"_resolved":"/home/runner/work/tools/tools/packages/service/workflow-service/bernierllc-workflow-service-1.0.7.tgz","_integrity":"sha512-CYdgDf8Xd1EKb0OWl5bGs8ufnJUMPN/P1hMPYk0UUlpDOBiTRsq1aSwUwcwZxkQyTaNv21qsf5YDugDXbP6LGA==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git","directory":"packages/service/workflow-service"},"_npmVersion":"11.11.0","description":"Orchestrates content workflow management with approval and notification systems","directories":{},"_nodeVersion":"20.20.0","dependencies":{"uuid":"^10.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","eslint":"^8.50.0","rimraf":"^5.0.0","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","@types/uuid":"^9.0.4"},"peerDependencies":{"@bernierllc/logger":"^1.0.1"},"peerDependenciesMeta":{"@bernierllc/logger":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/workflow-service_1.0.7_1773163705550_0.4677138972862396","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@bernierllc/workflow-service","version":"1.1.0","keywords":["workflow","content","approval","orchestration","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/workflow-service@1.1.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"0f768d88e4de6c48182d51dc622e88ba27e65288","tarball":"https://registry.npmjs.org/@bernierllc/workflow-service/-/workflow-service-1.1.0.tgz","fileCount":15,"integrity":"sha512-My31jDswoBcYP0gYOFG6PIl6TrvEuEhEDHH4yJ/qhzdy/Y+5hqaxO0zFXn1BfIAUJd5MsW1AiGc1GWm3a2s+LQ==","signatures":[{"sig":"MEQCIGFIgrspPvcPyKvSfN2S1QWQYHtvCyJC3H8FLftw7lYkAiAJw616AQ/K+9J3WHzEelBU/fsITwvayfWh+CoS5s5UMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47849},"main":"dist/index.js","_from":"file:bernierllc-workflow-service-1.1.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts --fix","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5e7c1385-a11f-43da-95ef-d61f6cdc0dd7"}},"_resolved":"/home/runner/work/tools/tools/packages/service/workflow-service/bernierllc-workflow-service-1.1.0.tgz","_integrity":"sha512-My31jDswoBcYP0gYOFG6PIl6TrvEuEhEDHH4yJ/qhzdy/Y+5hqaxO0zFXn1BfIAUJd5MsW1AiGc1GWm3a2s+LQ==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git","directory":"packages/service/workflow-service"},"_npmVersion":"11.14.1","description":"Orchestrates content workflow management with approval and notification systems","directories":{},"_nodeVersion":"20.20.2","dependencies":{"uuid":"^10.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","eslint":"^8.50.0","rimraf":"^5.0.0","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","@types/uuid":"^9.0.4"},"peerDependencies":{"@bernierllc/logger":"^1.0.1"},"peerDependenciesMeta":{"@bernierllc/logger":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/workflow-service_1.1.0_1779241886923_0.65760577364667","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/workflow-service","version":"1.2.0","keywords":["workflow","content","approval","orchestration","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/workflow-service@1.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"c076bf4990cfb70309062bd233b2f034c24f4473","tarball":"https://registry.npmjs.org/@bernierllc/workflow-service/-/workflow-service-1.2.0.tgz","fileCount":19,"integrity":"sha512-hM5pl32tyT9KRyQ4pXPMtVX0nBR2DoqnZogNS3p1qq/hfI+NDC+LSHF/YYfEJ1N47ctfcH2C2mMrW+IXFzf27g==","signatures":[{"sig":"MEYCIQCvK2Xg9+eCEfEQXUaL/r8OUY7D6TqOOCe0R8Im9bPHOwIhAPhIYAriXDtNe7MPOXDZwYbe5W3JzEIcq4y3wb/zljFI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50966},"main":"dist/index.js","_from":"file:bernierllc-workflow-service-1.2.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts --fix","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5e7c1385-a11f-43da-95ef-d61f6cdc0dd7"}},"_resolved":"/home/runner/work/tools/tools/packages/service/workflow-service/bernierllc-workflow-service-1.2.0.tgz","_integrity":"sha512-hM5pl32tyT9KRyQ4pXPMtVX0nBR2DoqnZogNS3p1qq/hfI+NDC+LSHF/YYfEJ1N47ctfcH2C2mMrW+IXFzf27g==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git","directory":"packages/service/workflow-service"},"_npmVersion":"11.14.1","description":"Orchestrates content workflow management with approval and notification systems","directories":{},"_nodeVersion":"20.20.2","dependencies":{"uuid":"^10.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","eslint":"^8.50.0","rimraf":"^5.0.0","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","@types/uuid":"^9.0.4"},"peerDependencies":{"@bernierllc/logger":"^1.0.1"},"peerDependenciesMeta":{"@bernierllc/logger":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/workflow-service_1.2.0_1779248493074_0.5153073814701459","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bernierllc/workflow-service","version":"1.3.0","keywords":["workflow","content","approval","orchestration","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/workflow-service@1.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"5364200329d7851674390be246a1888a485c5051","tarball":"https://registry.npmjs.org/@bernierllc/workflow-service/-/workflow-service-1.3.0.tgz","fileCount":19,"integrity":"sha512-Fiy/LnTLsikmrU5ma+zxzRxq/BEN/g1gJiiFgekgtMN4ql8k60rRm+q9pFzSSBlObOfNMs+0RytGjco/h0pRow==","signatures":[{"sig":"MEQCIDkLhWuO/DYR2e0Vpi8SxYmTeN9zs7KDEA+jmjfc+kLQAiBDnnU7KAVI0sV+MvFwqyK4mRf7mBELlZ1CCbOvFQlRvg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50966},"main":"dist/index.js","_from":"file:bernierllc-workflow-service-1.3.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts --fix","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5e7c1385-a11f-43da-95ef-d61f6cdc0dd7"}},"_resolved":"/home/runner/work/tools/tools/packages/service/workflow-service/bernierllc-workflow-service-1.3.0.tgz","_integrity":"sha512-Fiy/LnTLsikmrU5ma+zxzRxq/BEN/g1gJiiFgekgtMN4ql8k60rRm+q9pFzSSBlObOfNMs+0RytGjco/h0pRow==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git","directory":"packages/service/workflow-service"},"_npmVersion":"11.14.1","description":"Orchestrates content workflow management with approval and notification systems","directories":{},"_nodeVersion":"20.20.2","dependencies":{"uuid":"^10.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","eslint":"^8.50.0","rimraf":"^5.0.0","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","@types/uuid":"^9.0.4"},"peerDependencies":{"@bernierllc/logger":"^1.0.1"},"peerDependenciesMeta":{"@bernierllc/logger":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/workflow-service_1.3.0_1779250639713_0.46636441108619087","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@bernierllc/workflow-service","version":"1.4.0","description":"Orchestrates content workflow management with approval and notification systems","main":"dist/index.js","types":"dist/index.d.ts","keywords":["workflow","content","approval","orchestration","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bernier-llc/tools.git","directory":"packages/service/workflow-service"},"dependencies":{"uuid":"^11.1.1"},"peerDependencies":{"@bernierllc/logger":"^1.0.1"},"peerDependenciesMeta":{"@bernierllc/logger":{"optional":false}},"devDependencies":{"@types/jest":"^29.5.5","@types/node":"^20.6.0","eslint":"^8.50.0","jest":"^29.6.4","rimraf":"^5.0.0","ts-jest":"^29.1.1","typescript":"^5.2.2"},"engines":{"node":">=18.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsc","dev":"tsc --watch","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","test:run":"jest --passWithNoTests","lint":"eslint src/**/*.ts --fix","clean":"rimraf dist"},"_id":"@bernierllc/workflow-service@1.4.0","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"homepage":"https://github.com/bernier-llc/tools#readme","_integrity":"sha512-auyuuMbJNoZJOJN3gemesrNF0/IlVm0l0EUFo9sPo5T9cHhJx4Qz56RIz2ZXgs3tHd3imaKJOc93vq6DfoV4Tg==","_resolved":"/home/runner/work/tools/tools/packages/service/workflow-service/bernierllc-workflow-service-1.4.0.tgz","_from":"file:bernierllc-workflow-service-1.4.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"11.15.0","dist":{"integrity":"sha512-auyuuMbJNoZJOJN3gemesrNF0/IlVm0l0EUFo9sPo5T9cHhJx4Qz56RIz2ZXgs3tHd3imaKJOc93vq6DfoV4Tg==","shasum":"d68059f27a597e3016d17a4106198d07404d743a","tarball":"https://registry.npmjs.org/@bernierllc/workflow-service/-/workflow-service-1.4.0.tgz","fileCount":19,"unpackedSize":50937,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBND9E95wU0IMQwYEf7ed9APAVLqK4Fn31zM+aEDhBdLAiEAv+FsFQEsh1wHfE2u6FN1PqQc3WAYsk5hQ+hsDjGbZLc="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5e7c1385-a11f-43da-95ef-d61f6cdc0dd7"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/workflow-service_1.4.0_1779840876284_0.6449598802646883"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-02T18:09:31.466Z","modified":"2026-05-27T00:14:36.572Z","1.0.1":"2025-09-02T18:09:32.086Z","1.0.3":"2025-11-14T22:38:01.071Z","1.0.5":"2026-01-05T19:45:48.084Z","1.0.7":"2026-03-10T17:28:25.696Z","1.1.0":"2026-05-20T01:51:27.073Z","1.2.0":"2026-05-20T03:41:33.226Z","1.3.0":"2026-05-20T04:17:19.856Z","1.4.0":"2026-05-27T00:14:36.438Z"},"bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"author":{"name":"Bernier LLC"},"license":"MIT","homepage":"https://github.com/bernier-llc/tools#readme","keywords":["workflow","content","approval","orchestration","bernierllc"],"repository":{"type":"git","url":"git+https://github.com/bernier-llc/tools.git","directory":"packages/service/workflow-service"},"description":"Orchestrates content workflow management with approval and notification systems","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/workflow-service\n\n**Orchestrates content workflow management with approval and notification systems**\n\n## Features\n\n- **🔄 Complete Workflow Orchestration** - Manage content lifecycle from creation to publication\n- **✅ Multi-Approver Support** - Configure workflows with multiple approval requirements\n- **🔔 Notification Management** - Automated notifications via email, webhooks, and more\n- **🎯 Role-Based Permissions** - Integration with auth-service for access control\n- **📊 State Machine Integration** - Uses content-state-machine for reliable state transitions\n- **🚀 Batch Operations** - Approve or reject multiple workflows at once\n- **📈 Workflow Analytics** - Track workflow performance and bottlenecks\n- **🔌 NeverHub Integration** - Event-driven architecture with other services\n\n## Installation\n\n```bash\nnpm install @bernierllc/workflow-service\n```\n\n## Usage\n\n### Quick Start\n\n```typescript\nimport { WorkflowService } from '@bernierllc/workflow-service';\nimport { WorkflowPriority, NotificationChannel } from '@bernierllc/workflow-service';\n\n// Initialize the workflow service\nconst workflowService = new WorkflowService({\n  storage: {\n    type: 'memory' // or 'database' with connection string\n  },\n  notifications: {\n    enabled: true,\n    defaultChannels: [NotificationChannel.EMAIL],\n    webhookTimeout: 30000,\n    retryAttempts: 3,\n    templates: {}\n  },\n  permissions: {\n    requireAuth: true, // Enable permission checking\n    adminRoles: ['admin'],\n    approverRoles: ['approver', 'editor', 'admin']\n  },\n  defaults: {\n    approvalRequired: true,\n    approverCount: 2, // Require 2 approvals\n    autoSchedule: false,\n    priority: WorkflowPriority.MEDIUM,\n    notificationEnabled: true\n  }\n});\n\n// Create a workflow\nconst workflow = await workflowService.createWorkflow(\n  'article-123', // contentId\n  {\n    name: 'Blog Post Approval',\n    description: 'Two-stage approval for blog posts',\n    approvalRequired: true,\n    approverCount: 2,\n    notificationConfig: {\n      enabled: true,\n      channels: [NotificationChannel.EMAIL],\n      recipients: {\n        onSubmit: ['editor@company.com'],\n        onApproval: ['author@company.com'],\n        onPublish: ['marketing@company.com']\n      }\n    }\n  },\n  'author-456' // creator\n);\n\n// Submit for review\nconst submitResult = await workflowService.submitForReview(workflow.id, 'author-456');\nconsole.log(`Submitted: ${submitResult.newState}`); // PENDING_REVIEW\n\n// Assign approvers and request approval\nawait workflowService.assignApprover(workflow.id, 'editor-789');\nawait workflowService.assignApprover(workflow.id, 'manager-101');\n\nconst approvalRequest = await workflowService.requestApproval(\n  workflow.id,\n  ['editor-789', 'manager-101']\n);\n\n// Handle approvals\nconst approval1 = await workflowService.approveContent(\n  workflow.id,\n  'editor-789',\n  'Content is well-written and factually accurate'\n);\n\nconst approval2 = await workflowService.approveContent(\n  workflow.id,\n  'manager-101',\n  'Approved for publication'\n);\n\nconsole.log(`Final state: ${approval2.newState}`); // APPROVED\n\n// Schedule for publication\nawait workflowService.scheduleContent(workflow.id, {\n  scheduledAt: new Date('2025-01-15T10:00:00Z'),\n  timezone: 'UTC',\n  autoPublish: true,\n  notifyBefore: 30 // minutes\n});\n```\n\n## Workflow Configuration\n\n### Basic Workflow Config\n\n```typescript\ninterface WorkflowConfig {\n  name: string;\n  description?: string;\n  approvalRequired: boolean;\n  approverCount: number; // Required number of approvals\n  autoSchedule: boolean;\n  notificationConfig: NotificationConfig;\n  customRules?: WorkflowRule[];\n}\n```\n\n### Notification Configuration\n\n```typescript\nconst notificationConfig = {\n  enabled: true,\n  channels: [\n    NotificationChannel.EMAIL,\n    NotificationChannel.WEBHOOK,\n    NotificationChannel.SLACK\n  ],\n  recipients: {\n    onSubmit: ['editors@company.com'],\n    onApproval: ['author@company.com', 'manager@company.com'],\n    onRejection: ['author@company.com'],\n    onSchedule: ['marketing@company.com'],\n    onPublish: ['marketing@company.com', 'analytics@company.com'],\n    onDeadline: ['manager@company.com']\n  },\n  escalation: {\n    enabled: true,\n    timeoutHours: 24,\n    escalateTo: ['director@company.com'],\n    maxEscalations: 2\n  }\n};\n```\n\n## API Reference\n\n### Core Workflow Methods\n\n#### `createWorkflow(contentId, config?, creator?)`\nCreates a new workflow for content management.\n\n```typescript\nconst workflow = await workflowService.createWorkflow('article-123', {\n  name: 'Article Review Workflow',\n  approverCount: 2,\n  approvalRequired: true\n}, 'author-456');\n```\n\n#### `updateWorkflow(workflowId, updates, updater?)`\nUpdates an existing workflow configuration.\n\n```typescript\nconst updatedWorkflow = await workflowService.updateWorkflow('workflow-789', {\n  approverCount: 3,\n  autoSchedule: true\n}, 'manager-101');\n```\n\n#### `deleteWorkflow(workflowId, deleter?)`\nDeletes a workflow and cleans up associated state.\n\n```typescript\nconst deleted = await workflowService.deleteWorkflow('workflow-789', 'admin-555');\n```\n\n### State Transition Methods\n\n#### `submitForReview(workflowId, submitter)`\nSubmits content for review, transitioning from DRAFT to PENDING_REVIEW.\n\n```typescript\nconst result = await workflowService.submitForReview('workflow-789', 'author-456');\nif (result.success) {\n  console.log(`New state: ${result.newState}`);\n}\n```\n\n#### `approveContent(workflowId, approver, notes?)`\nApproves content. May require multiple approvals based on workflow configuration.\n\n```typescript\nconst result = await workflowService.approveContent(\n  'workflow-789',\n  'editor-123',\n  'Content meets our quality standards'\n);\n```\n\n#### `rejectContent(workflowId, rejector, reason)`\nRejects content and provides feedback for revision.\n\n```typescript\nconst result = await workflowService.rejectContent(\n  'workflow-789',\n  'editor-123',\n  'Please add more sources and fact-check the statistics'\n);\n```\n\n#### `scheduleContent(workflowId, schedule)`\nSchedules approved content for publication.\n\n```typescript\nconst result = await workflowService.scheduleContent('workflow-789', {\n  scheduledAt: new Date('2025-01-15T14:00:00Z'),\n  timezone: 'America/New_York',\n  autoPublish: true,\n  notifyBefore: 15,\n  recurring: {\n    pattern: 'weekly',\n    interval: 1,\n    daysOfWeek: [1, 3, 5], // Mon, Wed, Fri\n    endDate: new Date('2025-12-31T23:59:59Z')\n  }\n});\n```\n\n#### `publishContent(workflowId)`\nPublishes scheduled content.\n\n```typescript\nconst result = await workflowService.publishContent('workflow-789');\n```\n\n### Approval Management\n\n#### `assignApprover(workflowId, approver)`\nAssigns an approver to a workflow.\n\n```typescript\nawait workflowService.assignApprover('workflow-789', 'senior-editor-456');\n```\n\n#### `requestApproval(workflowId, approvers)`\nCreates an approval request for multiple approvers.\n\n```typescript\nconst request = await workflowService.requestApproval('workflow-789', [\n  'editor-123',\n  'legal-456',\n  'marketing-789'\n]);\n```\n\n#### `getPendingApprovals(approver)`\nGets all pending approval requests for a user.\n\n```typescript\nconst pending = await workflowService.getPendingApprovals('editor-123');\nconsole.log(`${pending.length} approvals pending`);\n```\n\n### Workflow Queries\n\n#### `getWorkflow(workflowId)`\nRetrieves a workflow by ID.\n\n```typescript\nconst workflow = await workflowService.getWorkflow('workflow-789');\nif (workflow) {\n  console.log(`Current state: ${workflow.currentState}`);\n}\n```\n\n#### `getWorkflowByContent(contentId)`\nFinds a workflow by its associated content ID.\n\n```typescript\nconst workflow = await workflowService.getWorkflowByContent('article-123');\n```\n\n#### `listWorkflows(filters?)`\nLists workflows with optional filtering.\n\n```typescript\n// Get all workflows assigned to a specific approver\nconst workflows = await workflowService.listWorkflows({\n  assignedTo: ['editor-123'],\n  state: [ContentState.PENDING_REVIEW],\n  priority: [WorkflowPriority.HIGH, WorkflowPriority.URGENT],\n  dateRange: {\n    start: new Date('2025-01-01'),\n    end: new Date('2025-01-31')\n  },\n  limit: 20,\n  offset: 0\n});\n```\n\n#### `getWorkflowHistory(workflowId)`\nGets the complete history of events for a workflow.\n\n```typescript\nconst history = await workflowService.getWorkflowHistory('workflow-789');\nhistory.forEach(event => {\n  console.log(`${event.type} by ${event.actor} at ${event.timestamp}`);\n  if (event.reason) console.log(`  Reason: ${event.reason}`);\n});\n```\n\n### Batch Operations\n\n#### `bulkApprove(workflowIds, approver)`\nApproves multiple workflows at once.\n\n```typescript\nconst result = await workflowService.bulkApprove([\n  'workflow-1',\n  'workflow-2',\n  'workflow-3'\n], 'manager-456');\n\nconsole.log(`Approved ${result.summary.successful} out of ${result.summary.total}`);\n```\n\n#### `bulkReject(workflowIds, rejector, reason)`\nRejects multiple workflows with the same reason.\n\n```typescript\nconst result = await workflowService.bulkReject([\n  'workflow-1',\n  'workflow-2'\n], 'editor-123', 'Content needs major revision');\n```\n\n### Notification Management\n\n#### `sendWorkflowNotification(workflowId, type, recipients)`\nSends custom notifications for a workflow.\n\n```typescript\nawait workflowService.sendWorkflowNotification(\n  'workflow-789',\n  NotificationType.EMAIL,\n  ['stakeholder@company.com']\n);\n```\n\n## Integration with Content State Machine\n\nThe workflow service uses `@bernierllc/content-state-machine` for reliable state transitions:\n\n```typescript\nimport { ContentState } from '@bernierllc/content-state-machine';\n\n// Valid state transitions are enforced by the state machine\nconst states = [\n  ContentState.DRAFT,           // Initial state\n  ContentState.PENDING_REVIEW,  // After submission\n  ContentState.APPROVED,        // After approval\n  ContentState.SCHEDULED,       // After scheduling\n  ContentState.PUBLISHED,       // After publication\n  ContentState.REJECTED         // If rejected at any point\n];\n```\n\n## Integration with Auth Service\n\nEnable permission-based access control:\n\n```typescript\nconst workflowService = new WorkflowService({\n  // ... other config\n  permissions: {\n    requireAuth: true,\n    defaultPermissions: ['workflow:view'],\n    adminRoles: ['admin', 'workflow-admin'],\n    approverRoles: ['approver', 'editor', 'manager', 'admin']\n  },\n  integrations: {\n    auth: {\n      enabled: true,\n      provider: 'auth-service'\n    }\n  }\n});\n\n// Permissions are automatically checked for all operations\nconst result = await workflowService.approveContent(\n  'workflow-789',\n  'user-without-permission', // Will fail if user lacks 'workflow:approve' permission\n  'Approval notes'\n);\n```\n\n## Notification Channels\n\n### Email Notifications\n\n```typescript\nconst config = {\n  notifications: {\n    enabled: true,\n    defaultChannels: [NotificationChannel.EMAIL],\n    templates: {\n      [WorkflowEventType.SUBMITTED]: 'Content \"{{workflowName}}\" submitted for review',\n      [WorkflowEventType.APPROVED]: 'Content \"{{workflowName}}\" has been approved',\n      [WorkflowEventType.REJECTED]: 'Content \"{{workflowName}}\" needs revision: {{reason}}'\n    }\n  }\n};\n```\n\n### Webhook Notifications\n\n```typescript\nconst config = {\n  notifications: {\n    enabled: true,\n    defaultChannels: [NotificationChannel.WEBHOOK],\n    webhookTimeout: 30000,\n    retryAttempts: 3\n  },\n  integrations: {\n    webhook: {\n      enabled: true,\n      endpoints: [\n        'https://your-app.com/webhooks/workflow-events',\n        'https://analytics.company.com/workflow-webhook'\n      ],\n      signatures: true // Include HMAC signatures\n    }\n  }\n};\n```\n\n### Slack Integration\n\n```typescript\n// Custom notification via Slack\nawait workflowService.sendWorkflowNotification(\n  'workflow-789',\n  NotificationType.SLACK,\n  ['#editorial-team', '#marketing-updates']\n);\n```\n\n## NeverHub Event Integration\n\nThe service publishes events to NeverHub for real-time coordination:\n\n```typescript\n// Events published automatically\nconst events = [\n  'workflow.created',\n  'workflow.state.changed',\n  'workflow.approval.requested',\n  'workflow.approval.completed',\n  'workflow.notification.sent',\n  'workflow.escalated',\n  'workflow.deadline.missed'\n];\n\n// Subscribe to events from other services\nconst workflowService = new WorkflowService({\n  // ... config\n  integrations: {\n    neverhub: {\n      enabled: true,\n      events: [\n        WorkflowEventType.CREATED,\n        WorkflowEventType.APPROVED,\n        WorkflowEventType.PUBLISHED\n      ]\n    }\n  }\n});\n```\n\n## Advanced Configuration\n\n### Custom Workflow Rules\n\n```typescript\nconst customRules = [\n  {\n    id: 'urgent-priority-rule',\n    name: 'Urgent Priority Fast Track',\n    condition: {\n      type: 'content',\n      field: 'priority',\n      operator: 'equals',\n      value: WorkflowPriority.URGENT\n    },\n    action: {\n      type: 'assign',\n      parameters: {\n        approvers: ['director@company.com'],\n        skipNormalApproval: true\n      }\n    },\n    enabled: true\n  }\n];\n\nconst workflow = await workflowService.createWorkflow('urgent-content', {\n  name: 'Urgent Content Workflow',\n  customRules\n});\n```\n\n### Escalation Configuration\n\n```typescript\nconst escalationConfig = {\n  enabled: true,\n  timeoutHours: 48, // Escalate after 48 hours\n  escalateTo: ['director@company.com', 'ceo@company.com'],\n  maxEscalations: 3 // Maximum escalation levels\n};\n\nconst workflow = await workflowService.createWorkflow('important-content', {\n  name: 'Important Content Workflow',\n  notificationConfig: {\n    enabled: true,\n    channels: [NotificationChannel.EMAIL, NotificationChannel.SLACK],\n    recipients: { /* ... */ },\n    escalation: escalationConfig\n  }\n});\n```\n\n## Error Handling\n\n```typescript\ntry {\n  const result = await workflowService.approveContent(workflowId, approver);\n  \n  if (!result.success) {\n    console.error(`Approval failed: ${result.error}`);\n    // Handle specific error cases\n    switch (result.error) {\n      case 'Workflow not found':\n        // Handle missing workflow\n        break;\n      case 'Invalid state transition':\n        // Handle invalid transition\n        break;\n      case 'Insufficient permissions':\n        // Handle permission error\n        break;\n    }\n  }\n} catch (error) {\n  console.error('Unexpected error:', error);\n}\n```\n\n## Performance Considerations\n\n### Batch Operations\n\n```typescript\n// Instead of individual operations\nfor (const workflowId of workflowIds) {\n  await workflowService.approveContent(workflowId, approver);\n}\n\n// Use batch operations for better performance\nconst result = await workflowService.bulkApprove(workflowIds, approver);\n```\n\n### Filtering and Pagination\n\n```typescript\n// Use filters to reduce data transfer\nconst recentWorkflows = await workflowService.listWorkflows({\n  dateRange: {\n    start: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000), // Last week\n    end: new Date()\n  },\n  state: [ContentState.PENDING_REVIEW],\n  limit: 50,\n  offset: 0\n});\n```\n\n## Integration Status\n\n- **Logger**: integrated - Uses @bernierllc/logger for structured logging of workflow events and state transitions\n- **NeverHub**: integrated - Publishes workflow lifecycle events (created, state.changed, approval.requested, approval.completed, notification.sent, escalated, deadline.missed) via @bernierllc/neverhub-adapter\n- **Docs-Suite**: ready - Complete API documentation with TypeScript interfaces, markdown format\n\n## Dependencies\n\n- `@bernierllc/content-state-machine` - State transition management\n- `@bernierllc/auth-service` - Authentication and authorization\n- `@bernierllc/webhook-sender` - Webhook delivery\n- `@bernierllc/permission-checker` - Permission validation\n- `@bernierllc/neverhub-adapter` - Event bus integration\n- `@bernierllc/logger` - Structured logging\n- `uuid` - Unique identifier generation\n\n## See Also\n\n- [@bernierllc/content-state-machine](../../../core/content-state-machine) - State transition engine\n- [@bernierllc/auth-service](../auth-service) - Authentication and authorization\n- [@bernierllc/webhook-sender](../../../core/webhook-sender) - Webhook delivery system\n- [@bernierllc/content-scheduler-suite](../../../suite/content-scheduler-suite) - Complete content scheduling solution\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.","readmeFilename":"README.md"}