{"_id":"workit-camunda","_rev":"26-ed4b825708cdeda2bb8788ef42c61a08","name":"workit-camunda","dist-tags":{"latest":"4.2.5","alpha":"3.0.0-alpha.4"},"versions":{"0.0.4-beta.0":{"name":"workit-camunda","version":"0.0.4-beta.0","description":"Worker for Node.js system with pluggable Camunda clients that work with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Olivier Albertini","email":"olivier.albertini@ville.montreal.qc.ca"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"axios":"~0.18.0","camunda-external-task-client-js":"~1.1.1","debug":"~4.1.1","fast-safe-stringify":"~2.0.6","form-data":"~2.3.3","inversify":"~5.0.1","opentracing":"0.14.3","reflect-metadata":"~0.1.13","zeebe-node":"~1.2.0"},"devDependencies":{"@commitlint/cli":"^7.6.1","@commitlint/config-conventional":"^7.6.0","@types/axios":"0.14.0","@types/debug":"^4.1.4","@types/events":"^3.0.0","@types/form-data":"2.2.1","@types/jest":"^24.0.13","@types/nock":"^10.0.3","@types/node":"^11.13.0","husky":"^2.3.0","jaeger-client":"^3.15.0","jest":"^24.8.0","nock":"^10.0.6","prettier":"^1.17.1","prettier-tslint":"^0.4.2","source-map-support":"^0.5.12","ts-jest":"^24.0.2","tslint":"^5.16.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","typedoc":"^0.14.2","typescript":"^3.4.5"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ./docs --tsconfig ./tsconfig.json --excludePrivate --mode file","camunda:deploy":"node ./lib/sample/deploy.js","camunda:create-instance":"node ./lib/sample/create-process-instances.js","camunda:worker":"node ./lib/sample/worker.js"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","Opentracing","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"c1e7d4000fa5ab117cd3b6c8960371d3f08292e3","_id":"workit-camunda@0.0.4-beta.0","_nodeVersion":"10.15.3","_npmVersion":"lerna/3.15.0/node@v10.15.3+x64 (darwin)","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-qFXtlqF+flYxfBcRvETSljeq922q7/oOKn1+oZi4qx800e5uMfWz24izmjKUY0Jn1rD39h8hRycFAbmPBREevA==","shasum":"592b2efc85dd5d1022cd76872b514e0d34312f27","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-0.0.4-beta.0.tgz","fileCount":312,"unpackedSize":284567,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCC7qCRA9TVsSAnZWagAA5iMQAIResMWVbZD5Dm2zh2GX\nKI+74t72j0M6IAQbwEBWnoaKrkmMMx2TDYTFlBK3lh0TRxV7F2ASKc0IgbF3\n3qLkcFDpJ+WzrNkf1KClFZJwYXA0wBygQ9h7dXshZQ8uwRrTRj0FwgrKiH8H\nXBoTQIVtCKT1OthpkBGYrVX4OwKO8SVMywNJhtA67Kg94u0Hh7lPHhwsHVUX\nZIptj/I3YwsiH3gqIWUGME2KQkpaMltv3hug2Yb4am7jZI+QB4/Dt6MyPQdF\nkm8mEGmXFt0OZOm1mgHtY49SJoTk5fpyQ205PxjJPL9aliEhb2Bdf6LT6+bQ\nY2FtLVZtUdtcEfuL9DHkFZmZDAI02r2s5t2AWR2mb+6Py2VWUQYuVdba11NI\nSrkyqveJ8movUR3tN7q4+7T/1oGX+P2hph16tqyVKOHGa8ZC/kFsUst5phMB\nwOIuTD6uQm+dB8842n/5kxtdYTxXYDrk9c/qOgOJjuzWeMwLHHfMkvf7aLuS\nEk1lFriyrHY2afZZBdyzNyPBS0qkXoaj2mihWUCOlZ3z6m7gubhSnFQE/V0/\nHe2e3HY0EIjbZWo5eNNMzeHZKyxSNrihaop987BbqrE/HdV1RKqcAuvZm+cx\nFslapCx7rpnQ1dbMvVuNX2lenF97ibvvF/oD34zOwKj/+455WOoiq46S9qx4\nbLd2\r\n=acE/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICdXfXOnwgOxyXxn7psv47c9AmJ0yfDwDH+pOwiYxi/PAiAi79YxAFCVq1qTMC/e2nS9l0SeLJGsZBjr0HEdwSijQw=="}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_0.0.4-beta.0_1560817385695_0.35888812485068433"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.0":{"name":"workit-camunda","version":"1.0.0","description":"Worker for Node.js system with pluggable Camunda clients that work with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Olivier Albertini","email":"olivier.albertini@ville.montreal.qc.ca"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"axios":"~0.19.0","camunda-external-task-client-js":"~1.1.1","debug":"~4.1.1","fast-safe-stringify":"~2.0.6","form-data":"~2.4.0","inversify":"~5.0.1","opentracing":"0.14.3","reflect-metadata":"~0.1.13","zeebe-elasticsearch-client":"^0.0.4-beta.0","zeebe-node":"~2.3.0"},"devDependencies":{"@commitlint/cli":"^8.0.0","@commitlint/config-conventional":"^8.0.0","@types/axios":"0.14.0","@types/debug":"^4.1.4","@types/events":"^3.0.0","@types/form-data":"2.2.1","@types/jest":"^24.0.15","@types/nock":"^10.0.3","@types/node":"^12.0.10","husky":"^2.4.1","jaeger-client":"^3.15.0","jest":"^24.8.0","nock":"^10.0.6","prettier":"^1.18.2","prettier-tslint":"^0.4.2","source-map-support":"^0.5.12","ts-jest":"^24.0.2","tslint":"^5.18.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","typedoc":"^0.14.2","typescript":"^3.5.2"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ../../docs --tsconfig ./tsconfig.json --excludePrivate --mode file","camunda:deploy":"node ./lib/sample/deploy.js","camunda:create-instance":"node ./lib/sample/create-process-instances.js","camunda:worker":"node ./lib/sample/worker.js"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","Opentracing","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"407fbfd6043267abe7b79e1838be6d38ea6091f9","_id":"workit-camunda@1.0.0","_nodeVersion":"10.9.0","_npmVersion":"lerna/3.15.0/node@v10.9.0+x64 (darwin)","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-LVJwAicB2b/w+NzeL8/KdmFHLAiXaWbJLwRW1yyRL8voOGSC6wmSUvEBccPElvTDnAdlxeisCT+Ea2dwvs/p6g==","shasum":"6cb5b8c084883f6f28d369cf101c516e7595e18a","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-1.0.0.tgz","fileCount":321,"unpackedSize":305350,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdEBkNCRA9TVsSAnZWagAArN8P/iQKJyER44xYZ8C2Czl7\n5LH3fRK24aUY3GkyRkjbLoWszi4I+sGqVH3tqvi05JqwStxq0aeItsoE3Hh0\n+viYKjNiRarDdPrtOMjB6d2gAI9AiJJuiC6NoIzWeMPitIOPxSMRXmvs3HeL\nQF7eb4Crip8ftP8F6dasUz2wxEPcP8S8Eg/BxOd/D5HRwwAPB/1PgaYZh9Iq\nP1YtEgfYX1/kbe3E7fcKYjF8cHnDHdot1Za9r+NT33shNqRrJvV62tpbfgEn\no73TjrZn49EEiSAxe17iIX+tVic8w/w5dyb/fGuKPFi5w0EABUJAumUzBYl6\n6b7FmLD4MmF8uYkViRluVl7OzX3z5lIq7mfmknbv9txuECCu14BQZHbwTiS9\n6RhH4imRdga2+xuiodX96mN2gjNd1wPo6CXgJSkPnD7k151QGQpeCAlO8sL5\nBwP5LI+fDPzjB/PLG9jjCZ2TLl8b7EUWQSscy2yNa157A+bghKcNxQzs+92k\nRqDUeZkcKnKCbjmQdCqhbDOuXbTA6oiq3KIKVe/2P5iLRGzNm+E8oAOKC68k\n385Wu5oqv/ybrDGNs566G4N322bwuji6ElQNSYzO7KggT6JoZjoFV7A4HMcL\nHIkAFFZoL/F5wpgbgJuKxOYBAsVtIKkWwSoDsv0xVD6G0aG9raHk/u0zrmyw\nHneS\r\n=7Pio\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5PqWrK/wNThU3prmocztT0UHUbJcv+wzi/mW1AXQ96QIhAPbVnwBnKwXmdVUsqo9mfLvcRBA4aIcbdWegGK0znK4K"}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_1.0.0_1561336077287_0.6762522788605858"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.1":{"name":"workit-camunda","version":"1.0.1","description":"Worker for Node.js system with pluggable Camunda clients that work with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Olivier Albertini","email":"olivier.albertini@ville.montreal.qc.ca"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"axios":"~0.19.0","camunda-external-task-client-js":"~1.1.1","debug":"~4.1.1","fast-safe-stringify":"~2.0.6","form-data":"~2.4.0","inversify":"~5.0.1","opentracing":"0.14.3","reflect-metadata":"~0.1.13","zeebe-elasticsearch-client":"^0.0.4","zeebe-node":"~2.3.0"},"devDependencies":{"@commitlint/cli":"^8.0.0","@commitlint/config-conventional":"^8.0.0","@types/axios":"0.14.0","@types/debug":"^4.1.4","@types/events":"^3.0.0","@types/form-data":"2.2.1","@types/jest":"^24.0.15","@types/nock":"^10.0.3","@types/node":"^12.0.10","husky":"^2.4.1","jaeger-client":"^3.15.0","jest":"^24.8.0","nock":"^10.0.6","prettier":"^1.18.2","prettier-tslint":"^0.4.2","source-map-support":"^0.5.12","ts-jest":"^24.0.2","tslint":"^5.18.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","typedoc":"^0.14.2","typescript":"^3.5.2"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ../../docs --tsconfig ./tsconfig.json --excludePrivate --mode file","camunda:deploy":"node ./lib/sample/deploy.js","camunda:create-instance":"node ./lib/sample/create-process-instances.js","camunda:worker":"node ./lib/sample/worker.js"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","Opentracing","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"b3744e7a6adbb22813dd4249b6cae7eb7e03634a","_id":"workit-camunda@1.0.1","_nodeVersion":"10.9.0","_npmVersion":"lerna/3.15.0/node@v10.9.0+x64 (darwin)","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-CQgTidWWyrUXhmDdyJHExurhaL1xx4zuh8mIkBpaoZn2qheKGrwrDr1A49V70P+rkAZMbbCEMbFgNYUcJTHOrg==","shasum":"eb6bfbe80a27449f02d08f9d1f4b1182f8d152e7","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-1.0.1.tgz","fileCount":321,"unpackedSize":305394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdE+ScCRA9TVsSAnZWagAAyeoQAJoVXlRx2K6zv795x0hQ\nSEGxm3FsVJmCuaJPr1lpVPWAlyRX3DW+1dpgefqRJqreRYqCNpTYbKp5mR/q\nAiT9S4BOIikEA/IcBc3pNGwK656RfHXtPdGDVjhYOf1mDmD4nWP7JFf+Txjc\nXpwOzvOLTudFT5Hvy5Xdd7FlAJynJz0oTiDkdzw56rSnfuC0qAiNGABBfC1f\nI0yETxdLU+hyDA9Xp2tkppszaAjvlzm8OlHM43XSVe6Mhz8baDXxmwcLNMiP\nNXFn279xm3OG1JPMAr5o2NQ61GMx8Mx0wuE+2Ex2iANloCT0CEVs4BFjGTgE\naS/nK3aOBIy8EtsrigosJzmlkxIs5NSwGoW+EV/V1C+lrN043rwQzRFiH0wF\n6RThLswb23HbfVrXoxRhc6EaRQV2/jkCZQgQoUHzcu+bKemDuUBlAGWamuhS\njlbBzimrWX8N2k/cMyqRanCiL7++oq2zB99XAocLtV4UtHJkcoKOLhStrcsy\naSE4HN/VBEuSZe1l7yNfes3LWlBI4Hc0LKQvg5NqYgS/z54E5i/JymxGjXgP\nooRpK0B0i/SbP6oRPOXZYDGi6GeLK1RtkeSywgA655C8u/PBehN3wRs1WYGT\n6fLmH4QTOOIItqhgwvf97SqqaPdqagvZaOnyEQIaKsGIm6V3zWhN/6FXWPPM\nqBzD\r\n=sGe4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGB7IlsmaL3zMLL7LrltQSeOPGoAukn/gfGfLPELEI2eAiEAsVHOoI5mp7CQOxLWW6y2r+Q0oftSJgLFY3E6AYC8Fgk="}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_1.0.1_1561584795484_0.240579332973464"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.2":{"name":"workit-camunda","version":"1.0.2","description":"Worker for Node.js system with pluggable Camunda clients that work with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Olivier Albertini","email":"olivier.albertini@ville.montreal.qc.ca"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"axios":"~0.19.0","camunda-external-task-client-js":"~1.1.1","debug":"~4.1.1","fast-safe-stringify":"~2.0.6","form-data":"~2.4.0","inversify":"~5.0.1","opentracing":"0.14.3","reflect-metadata":"~0.1.13","zeebe-elasticsearch-client":"^0.0.4","zeebe-node":"~2.3.0"},"devDependencies":{"@commitlint/cli":"^8.0.0","@commitlint/config-conventional":"^8.0.0","@types/axios":"0.14.0","@types/debug":"^4.1.4","@types/events":"^3.0.0","@types/form-data":"2.2.1","@types/jest":"^24.0.15","@types/nock":"^10.0.3","@types/node":"^12.0.10","husky":"^2.4.1","jaeger-client":"^3.15.0","jest":"^24.8.0","nock":"^10.0.6","prettier":"^1.18.2","prettier-tslint":"^0.4.2","source-map-support":"^0.5.12","ts-jest":"^24.0.2","tslint":"^5.18.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","typedoc":"^0.14.2","typescript":"^3.5.2"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ../../docs --tsconfig ./tsconfig.json --excludePrivate --mode file","camunda:deploy":"node ./lib/sample/deploy.js","camunda:create-instance":"node ./lib/sample/create-process-instances.js","camunda:worker":"node ./lib/sample/worker.js"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","Opentracing","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"f019dbf63e39dd78955624a6c3b560c0e3426de9","_id":"workit-camunda@1.0.2","_nodeVersion":"10.9.0","_npmVersion":"lerna/3.15.0/node@v10.9.0+x64 (darwin)","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-NP54MRthug+ooJFSTgjnu0S/bClxkwxz0gmBUi/fJbIeuvJLkeuggo7lMIDVYhjcplPPDIs8l1ILUKBUjaedxw==","shasum":"2ecffe6ee0fd0a42bf63025bafd2dfd25d05b125","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-1.0.2.tgz","fileCount":322,"unpackedSize":306506,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFApWCRA9TVsSAnZWagAAZ08P/jo0LcsBhM3ICv6mHoP0\nfnd5Ct1lznCDNZ2Imbj5jFWHnJK7PtxWOfQkE9YNKrJV2th4xzph4yfSXyBt\nwRkD9MBcZ6893lHV3Dn24OhrR+i/3wYwi5Qs1xTNDo84OM2Rs0JkgArZimLT\nn2xtIlP+qqgqezWVEs504enr7CJblfiXCZ7nHlvIEshSC8roXXYiL9jdV3tQ\n/pF5GUz6SQTS5MPKTSEq0kGsa7Lz9JFW1sdMyTNdOrHq5SFgwWChrrhbQeBp\nVASCVnvbuFxjl/JvAJWrNo57DOOcYYQI2It5KDgCUEJ8mJQTk1IbsPfDyXZO\nuYgugeknk4+oCfLBY1EO3p0dwUBiAhD4KBx+uqI/eGqw81MH+fxfSXwLgCMN\n8+8BBwQosyZ1XiZpPo+S2mBIWAHq1k1GsUnXALR4NH4f79ydp8wFZFY+Ff4D\nZEAs+bnIdianw2TFMNXXA0YUPXzPZQFMPcKLUo31Yg6EQ2gB2tuZ5H7zC1Fv\ni6yVGG6bHG8bTqZrg3IR0wBdkhEeehqxBLR5FM489msW7HA29iZAv/pyj+fZ\n4b1By7aLM0Cn9m8niVyJhwrO5IJwzBN9nhMAzxsVklHgOBJxK6amMoYDdxEz\nBP/JBqt1b5AB1Qj0dhl6QIsYNkNvmkRZjhcV1i9AXIkjRHeWsHxvBq6tJ+gQ\nN6MH\r\n=hAyB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIASAlCqVDzmZrFwcghgmDviK2Kd8FsRaJShK1aofWVeOAiBF/mxi5y7Q2OqxL8W4XCWBQJZmjMsHJJwlrbcJuaEfTw=="}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_1.0.2_1561594453177_0.7416193219272911"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.0.0":{"name":"workit-camunda","version":"2.0.0","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Olivier Albertini","email":"olivier.albertini@montreal.ca"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"axios":"~0.19.0","camunda-external-task-client-js":"~1.1.1","debug":"~4.1.1","fast-safe-stringify":"~2.0.6","form-data":"~2.4.0","inversify":"~5.0.1","opentracing":"0.14.3","reflect-metadata":"~0.1.13","zeebe-elasticsearch-client":"^0.0.5","zeebe-node":"~2.3.0"},"devDependencies":{"@commitlint/cli":"^8.0.0","@commitlint/config-conventional":"^8.0.0","@types/axios":"0.14.0","@types/debug":"^4.1.4","@types/events":"^3.0.0","@types/form-data":"2.2.1","@types/jest":"^24.0.15","@types/nock":"^10.0.3","@types/node":"^12.0.10","husky":"^2.4.1","jaeger-client":"^3.15.0","jest":"^24.8.0","nock":"^10.0.6","prettier":"^1.18.2","prettier-tslint":"^0.4.2","source-map-support":"^0.5.12","ts-jest":"^24.0.2","tslint":"^5.18.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","typedoc":"^0.14.2","typescript":"^3.5.2"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ../../docs --tsconfig ./tsconfig.json --excludePrivate --mode file","camunda:deploy":"node ./lib/sample/deploy.js","camunda:create-instance":"node ./lib/sample/create-process-instances.js","camunda:worker":"node ./lib/sample/worker.js"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","Opentracing","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"c94a879e34775a751ecff9936a79ecb1402de2f1","_id":"workit-camunda@2.0.0","_nodeVersion":"10.9.0","_npmVersion":"lerna/3.15.0/node@v10.9.0+x64 (darwin)","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-HoMAPNR7uv4RI77YUQAqhJzEsmeDNbRW3O2PG72DEGTgTZ9I+ysTVtUS2Nr9CvbgA6SfZkdEHsERWFplqaaABA==","shasum":"3a9371373b87320afc7af400fd7ef7adfcf0d62a","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-2.0.0.tgz","fileCount":337,"unpackedSize":317118,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdGTknCRA9TVsSAnZWagAAGIIP/01vZKQ9/37Dz0erTVMi\nhcu4tCfdgSk1d7zkcOF2dVNACsXHpKCxFCcG8TfP8GpevcndD2oWHcczONd+\n65RAcYL68DwKPTstXQkR3cSDiotpv2Pkc40jA6pypfYNjRIZ68E0f3IQN6tr\nRO9vsOjEt4RmqbnSQDrYmwaiR1rCxg6NryCmLQQqLQgxldxKaSPchM2G9sMI\nVMwiEE3jSI0gQ1sdfkrWT0mvwxSoWJqZxwdGqqX4gWyHFhoBb0UG5rlF1Lf/\n8viJylGFCxjfhbH6OPUHusqBHxU35CDW+TEq/fcNHg5BZl4sDD55/tWif7MK\nPBX1IR4uv6H7WlEaeKCsVpBINt6EBDe8Z2+g7up5dLWswJOv2k+G2VUYuTK6\nrtz1qpRWM3/tJQUdPcrQ3OYy4YvnHeEfqR9Ma5fgWwAQrfNZpWewKadgbnDG\n1LNDhrurO2/7EBpVTWEl21RwaG+Pt1F0uabNHDsq7M6zR2+4NptLxYgCk+e7\nfdJZybLOEZuP6W/gQuIkdddspT0mUwJu38xsLvyjTGdP62/Q/PzSIQIviDcT\n7JNMtIxre1gXQQabZeELCH6a+oXEcWL+19pbdVPbF9UelAVOaxCWHcy1lwdn\nfqX9qSVc/VH4f2+NQxGrAk0oYeEp5Ih7ermGbhAhGKoELmVDUwwHiXSZxPjw\nces1\r\n=6QHz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCihLDjO1wavGSl/fBqfe57ow9xioEIt5UTmX7klTBeOgIhAI9SO9aMcur8jZ9ET+GwjruHSf+SRu6marO0MF2JGjdY"}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_2.0.0_1561934118535_0.6929064809099508"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.0.1":{"name":"workit-camunda","version":"2.0.1","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Olivier Albertini","email":"olivier.albertini@montreal.ca"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"axios":"~0.19.0","camunda-external-task-client-js":"~1.1.1","debug":"~4.1.1","fast-safe-stringify":"~2.0.6","form-data":"~2.5.0","inversify":"~5.0.1","opentracing":"0.14.3","reflect-metadata":"~0.1.13","zeebe-elasticsearch-client":"^0.0.5","zeebe-node":"~2.3.0"},"devDependencies":{"@commitlint/cli":"^8.0.0","@commitlint/config-conventional":"^8.0.0","@types/axios":"0.14.0","@types/debug":"^4.1.4","@types/events":"^3.0.0","@types/form-data":"2.2.1","@types/jest":"^24.0.15","@types/nock":"^10.0.3","@types/node":"^12.0.10","husky":"^3.0.0","jaeger-client":"^3.15.0","jest":"^24.8.0","nock":"^10.0.6","prettier":"^1.18.2","prettier-tslint":"^0.4.2","source-map-support":"^0.5.12","ts-jest":"^24.0.2","tslint":"^5.18.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","typedoc":"^0.14.2","typescript":"^3.5.2"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ../../docs --tsconfig ./tsconfig.json --excludePrivate --mode file","camunda:deploy":"node ./lib/sample/deploy.js","camunda:create-instance":"node ./lib/sample/create-process-instances.js","camunda:worker":"node ./lib/sample/worker.js"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","Opentracing","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"27e9cb14aae8fa266c2a5d5950a20f34ff8a6a9b","_id":"workit-camunda@2.0.1","_nodeVersion":"10.9.0","_npmVersion":"lerna/3.15.0/node@v10.9.0+x64 (darwin)","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-lBp+WUy/0N8hauWQ/uvUMQ/xn44rcObwAURFpL71nVOMjpwGRrNp9MtRmBqo9bVsqfQlIhz4sl5ZFDiWeDUzzQ==","shasum":"053b89af3c6e8c473ae727828ef6ea159323a1a3","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-2.0.1.tgz","fileCount":331,"unpackedSize":310135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHoMvCRA9TVsSAnZWagAANO0P/RfesFbuxWiF23D5OwBW\n+1V/NjFxr2kct73aP1lNbpJbVBJbgD+db/sqOP4GEXD1O+nTd4phkhpHg/TS\nxNbwpQPFDr0maUFJ9OU6Rbv+x5jxWBIMPr67XhTVhMylCYfxbLnYO9/XPEbi\n9n1ccwwYrIAs1/4NndmYSAhTxCHRzacOp7F5zH+Lm4eOU4YAyP8vDMqE7ts4\nKkdWbrdl9RGL+9ucaCnYm2MxWgYgSZ+SgqtHtIsdt317vceKaP7znOhH98wg\ntyCy3B4GBLvHfWD/oeH+UWIiH4d13j0oo70NaJVRjVzksZepKcl8KV4zEUbI\nVsXGfJviqMPDcOv/lefTyKre9BqDSmQTYYW1IacwPdMFHCKD7qid/yW0Sk5z\nqi2WOAtYjUjfLumXKq7QAmq54G+GrvhrGMHhmL2ET0kilBEKMTXj4vZq4o+V\nNmp+ZJUwV5sd/l0CIvDjV4WjlLesoJZq9hldbDodZZdpYw5nvMbOgJoR2Ttf\n/r/xpDO4ILuvCFejvHawWIVJgamyVNL83+b98C4V7OG+5AQew87KOVZVhzEl\nupiO7nBWwUHZWCprEQVlb+pe17Sdc9qglB7Kvc8z9KOPqnuCvCfZ8j0P0zyT\nvflsx/VHBZ7G8nZvqZk1BmsGQkCwJ2zFFlB4B6dreIj1dZfTfFpcdup1TqRP\nJ3AJ\r\n=WPSo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAKLS/VwKlmXvNJEpM0dYadlrv8rCzcqPwCKVtvPjU0CAiEA8DL29TPTUQP9aoo1/RRMa3xRbsUpMYm4pQVeXkpVvOo="}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_2.0.1_1562280750683_0.9043840243826666"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.1.0":{"name":"workit-camunda","version":"2.1.0","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Olivier Albertini","email":"olivier.albertini@montreal.ca"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"axios":"~0.19.0","camunda-external-task-client-js":"~1.1.1","debug":"~4.1.1","fast-safe-stringify":"~2.0.6","form-data":"~2.5.0","inversify":"~5.0.1","opentracing":"~0.14.4","reflect-metadata":"~0.1.13","zeebe-elasticsearch-client":"^0.1.0","zeebe-node":"~0.19.3"},"devDependencies":{"@commitlint/cli":"^8.1.0","@commitlint/config-conventional":"^8.1.0","@types/axios":"0.14.0","@types/debug":"^4.1.4","@types/events":"^3.0.0","@types/form-data":"2.5.0","@types/jest":"^24.0.15","@types/nock":"^10.0.3","@types/node":"^12.0.10","husky":"^3.0.0","jaeger-client":"^3.15.0","jest":"^24.8.0","nock":"^10.0.6","prettier":"^1.18.2","prettier-tslint":"^0.4.2","source-map-support":"^0.5.12","ts-jest":"^24.0.2","tslint":"^5.18.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","typedoc":"^0.14.2","typescript":"^3.5.3"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ../../docs --tsconfig ./tsconfig.json --excludePrivate --mode file","camunda:deploy":"node ./lib/sample/deploy.js","camunda:create-instance":"node ./lib/sample/create-process-instances.js","camunda:worker":"node ./lib/sample/worker.js"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","Opentracing","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"69fcc5f22c06539ef532bf1dc686ccbb35bc45d4","_id":"workit-camunda@2.1.0","_nodeVersion":"10.9.0","_npmVersion":"lerna/3.15.0/node@v10.9.0+x64 (darwin)","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-RB8j3cyzSFWOJ7BVir3PURk6MilRh7j2oJh7hFK+WBMd8LODo80+3JOmkLfLSow6MvZmnIfRzLQGQGcP5B2snA==","shasum":"6172b2412605be5050d34622eff8fdcf5f664822","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-2.1.0.tgz","fileCount":331,"unpackedSize":309964,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLmLgCRA9TVsSAnZWagAAJn0P/A+1Wz+sL7xl1PLoXZKt\nYJs6h2JFUPsqPFwlA+6k5bE7zNkSV49QmHRL1+5XWjdGTo2Y0CAQFNtefLuY\nADJSy0HIF0NZk+GVkG46OaBdmwU9hkLmXxXCy0BtPK+wqy5d16YbCkALXH/2\n4NiIdNKuZSAj4knaXUU7w3EWdq3pBbwlLLvqvnDyP80d4QNrB6xqk2yJIY6t\numrhnQpKhSYIlOy6Ywb9cl3HBTJBQd4gPCvDTEaro634LmrX5eyiRh+K9hwZ\n/YwOKMQ9cytclDoLsIQnm8X4UWk/JCCr/RH5yRD1+lg9yqJODEtGTmckvE65\nxdwz8Eragm6AuFpDSEPJtGvTYHH7ejGLsr7IK4lgf1h+vg/jVMJgJfN9G9Wv\n2mGeRtsEcC/s4/DqVkwKUhsGCGGUS6PXEs1fIeK5+NhnAbmp9IG4Q1TCLYq2\nHu2AkOxZVp7oiqoY8u6Q8B7g0Qt+PEsNf9uyQOxjSr5RyLIj1j7IodJcoQdK\niZOOyTiy1EudS9q/tejE5I/SBab/xRaVbcVgP8s/zHAGAC4vp0bRVMtXZWC+\nXoLIN96paeyusDhh4OS6ibL8iFZzo/J4Gmc6jFjZL2TCrEonlnUZ9bKAZodR\noFtjW51/RKOCPMFKLDoXfjjMj3ymvGia0PEp60LnUtWgRR6pXWxWHcER5ds6\nt2p3\r\n=qed2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFpLsNN4bZhUAKnXHjFCsNyNgQhNBqW0Wevdotc6bKxeAiEA4c9SHlSzWt02OHwUh3xZl1327LTY7xQZ6p5B1L/BUjI="}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_2.1.0_1563321055367_0.9274696534602866"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.2.0":{"name":"workit-camunda","version":"2.2.0","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Olivier Albertini","email":"olivier.albertini@montreal.ca"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"axios":"~0.19.0","camunda-external-task-client-js":"~1.1.1","debug":"~4.1.1","fast-safe-stringify":"~2.0.6","form-data":"~2.5.0","inversify":"~5.0.1","opentracing":"~0.14.4","reflect-metadata":"~0.1.13","zeebe-elasticsearch-client":"^0.2.0","zeebe-node":"~0.20.0"},"devDependencies":{"@commitlint/cli":"^8.1.0","@commitlint/config-conventional":"^8.1.0","@types/axios":"0.14.0","@types/debug":"^4.1.4","@types/events":"^3.0.0","@types/form-data":"2.5.0","@types/jest":"^24.0.15","@types/nock":"^10.0.3","@types/node":"^12.0.10","husky":"^3.0.0","jaeger-client":"^3.15.0","jest":"^24.8.0","nock":"^10.0.6","prettier":"^1.18.2","prettier-tslint":"^0.4.2","source-map-support":"^0.5.12","ts-jest":"^24.0.2","tslint":"^5.18.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","typedoc":"^0.14.2","typescript":"^3.5.3"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ../../docs --tsconfig ./tsconfig.json --excludePrivate --mode file","camunda:deploy":"node ./lib/sample/deploy.js","camunda:create-instance":"node ./lib/sample/create-process-instances.js","camunda:worker":"node ./lib/sample/worker.js"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","Opentracing","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"52e1ba4fc8401e911eeb6fb5f8c79fd6618b498a","_id":"workit-camunda@2.2.0","_nodeVersion":"10.9.0","_npmVersion":"lerna/3.15.0/node@v10.9.0+x64 (darwin)","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-wFDirOOLKdFrJ1JISywSHGBnpOPM2F//4dplRS/jVweNO45KW21nqZlU+3SbPYCRCiSio/6TnjV7WoU5M5F2bg==","shasum":"d8e323f05a4455110493639b8843852eeac4edf7","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-2.2.0.tgz","fileCount":331,"unpackedSize":310699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLzsHCRA9TVsSAnZWagAADAEP/24L2m2DQrC5FWYbFGpQ\n8G9rR/JuELQTQQdn3CtAjtlFAAhrCZjQ02La7vt+4FkIpFk+nrbStdcRrd2H\nSSbGjf0oCHSG5Bn2hu4B+0jiBhQ/8qm8zT+OzzIYgFhngCN/Djip2paDoS4Z\nFpaeJMjJgiWcBuj6bWWQj4vq3plP6xm25n/8R0PLpZ1y7FZPjpEKjMh0RcxY\n6OkY96h6EAd4jM5WfMqzn50sFScH16+rE4OoCny5QAmO7na/KeFUZ4GRl6Qv\n7uEAi8DW5M56iqEKFe4+QUn1xto0KRUzsuErrJM/lSNq/I63vDGK7zeuLCYw\n02GCYNu+FeNQYNBPGJcc5h8IiE/+Wi0U27jNB21JmLeizU9dD0Ri3t/666yl\nwHcbe6Zt7A8C/y1tx14+kQfFJKuK+inZdcSu1SFvlJu7AbXU3py9tPkyBfXp\n350L38bi0hCDz6YdY2FPCIdPec2p6Vrx/p19ZNTp//7AigLSMR+T9yzTCzkH\n814JaACvxHXWzYqpBVjF7ne4RaDxbJ5lBP1+ZLX0P/c9599gBeOf7DI9mD59\n3bxywXnf1CHbt1l7pcprlEy1FA2p7mrc714yzlPToY5IqZX2aRYoyTJBiRYT\nrugvJW1Ob66kQUpx9nXBmdV0sDJVXUXy+rC3fS9VtRz/H/Ia82/DMx5BgDcS\nZftI\r\n=zY64\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbuNdnyGkPkmI1P+E2MwaFKVlFw6GcPEkkWQBRfb9aigIhAJ/kLiR205AYV1bP+uWl7DjSpu05CiglywKPHmM358Cc"}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_2.2.0_1563376390825_0.40797963055345576"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.0.0-alpha":{"name":"workit-camunda","version":"3.0.0-alpha","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Olivier Albertini","email":"olivier.albertini@montreal.ca"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"axios":"~0.19.0","camunda-external-task-client-js":"~1.1.1","debug":"~4.1.1","fast-safe-stringify":"~2.0.6","form-data":"~2.5.0","inversify":"~5.0.1","@opencensus/core":"~0.0.16","@opencensus/nodejs":"~0.0.16","reflect-metadata":"~0.1.13","zeebe-elasticsearch-client":"^0.2.0","zeebe-node":"~0.20.1","uuid":"^3.3.2"},"devDependencies":{"@opencensus/exporter-jaeger":"~0.0.16","@types/uuid":"^3.4.5","@commitlint/cli":"^8.1.0","@commitlint/config-conventional":"^8.1.0","@types/axios":"~0.14.0","@types/debug":"~4.1.4","@types/events":"~3.0.0","@types/form-data":"~2.5.0","@types/jest":"^24.0.16","@types/nock":"^10.0.3","@types/node":"^12.6.8","husky":"^3.0.2","jest":"^24.8.0","nock":"^10.0.6","prettier":"^1.18.2","prettier-tslint":"^0.4.2","source-map-support":"^0.5.13","ts-jest":"^24.0.2","tslint":"^5.18.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","typedoc":"^0.15.0","typescript":"^3.5.3"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ../../docs --tsconfig ./tsconfig.json --excludePrivate --mode file","camunda:deploy":"node ./lib/sample/deploy.js","camunda:create-instance":"node ./lib/sample/create-process-instances.js","camunda:worker":"node ./lib/sample/worker.js","camunda:trace":"node ./lib/sample/parallel.js"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","Opentracing","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"b3744e7a6adbb22813dd4249b6cae7eb7e03634a","readme":"# WorkIt\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\n✨Extensible worker for Node.js that works with both Zeebe and Camunda BPM platforms powered by TypeScript ✨\n\n## Motivation\n\nWe needed a framework to help us quickly build workers used to execute tasks. [Zeebe](https://zeebe.io/) provides a good fit with our stack. Until this is production ready, we are keeping the [Camunda Bpm](https://camunda.com/products/bpmn-engine/). Indeed, Zeebe is in developper preview. In order to make the transition smoother, we use this package. We can experiment and choose the Camunda platform we want without rewritting our business logic.\n\nThis package can be useful because:\n\n-   At this moment, Zeebe doesn't provide all BPMN components. Zeebe is new and some unexpected bugs can appear during development so we can easily revert back to the the former platform if an issue was to rise.\n-   Instead of depending directly from a Camunda client, this project provides an abstraction layer. This way it’s easier to change the client or to make your own.\n-   You want to have a worker standardization.\n-   Uniformisation. Indeed, you can use both platforms depending project needs.\n-   Added features like automated tracing.\n-   This package enforce feature parity between Zeebe and Camunda BPM through the client libraries. Some features exposed to the Camunda BPM platform are not presents in this package because we couldn't provide them if we switch to Zeebe. This limitation is to guide developers to prepare migration.\n\n## Quickstart\n\n[Get started in 2 minutes](.docs/WORKER.md).\n\n## Documentation\n\n-   [.docs](.docs/) contains written documentation\n-   Comprehensive API documentation is available [online](https://villedemontreal.github.io/workit/) and in the `docs` subdirectory\n\n## Installing\n\n```bash\nnpm i workit-camunda\n```\nor using the generator below\n### Yo!\n\nThis generator will help you during your development with this library. It provides handy tools.\n\n```bash\nnpm i -g workit-cli\n```\n\n#### Install a fresh new project\n\n```bash\nworkit init\n```\n#### Generate tasks from your existing BPMN\n\n```bash\nworkit create task --file /your/path.bpmn\n```\n\n#### Generate new task\n\n```bash\nworkit create task\n```\n\n## How to use\n\nSwitching between Zeebe and the bpmn platform is easy as specifying a `TAG` to the IoC.\n\n### Run worker\n\n```javascript\nconst worker = IoC.get<Worker>(CORE_IDENTIFIER.worker, TAG.camundaBpm); // or TAG.zeebe\n\nworker.start();\nworker.run();\n```\n\n### Deploy a workflow\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nconst fullpath = `${process.cwd()}/sample/BPMN_DEMO.bpmn`;\nawait manager.deployWorkflow(fullpath);\n```\n\n### Get workflows\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.getWorkflows()\n```\n\n### Get a workflow\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.getWorkflow({ bpmnProcessId: \"DEMO\" });\n```\n\n### Update variables\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.updateVariables({ \n    processInstanceId: \"5c50c48e-4691-11e9-8b8f-0242ac110002\",\n    variables: { amount: 1000 }\n});\n```\n\n### Publish message\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.publishMessage({\n    correlation: {},\n    name: \"catching\",\n    variables: { amount: 100 },\n    timeToLive: undefined, // only supported for Zeebe\n    messageId: \"5c50c48e-4691-11e9-8b8f-0242ac110002\"\n});\n```\n\n### Create workflow instance\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.createWorkflowInstance({\n    bpmnProcessId: \"MY_BPMN_KEY\",\n    variables: {\n        hello: \"world\"\n    }\n});\n```\n\n### Cancel workflow instance\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.cancelWorkflowInstance(\"4651614f-4b3c-11e9-b5b3-ee5801424400\");\n```\n\n### Resolve incident\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.resolveIncident(\"c84fce6c-518e-11e9-bd78-0242ac110003\");\n```\n\n### Define tasks (your bpmn activities)\n\nYou can define many tasks to one worker. It will handle all messages and will route to the right tasks.\n\n```javascript\nexport class HelloWorldTask extends TaskBase<IMessage> {\n  // You can type message like IMessage<TBody, TProps> default any\n  public execute(message: IMessage): Promise<IMessage> {\n      const { properties } = message;\n      console.log(`Executing task: ${properties.activityId}`);\n      console.log(`${properties.bpmnProcessId}::${properties.processInstanceId} Servus!`);\n      // put your business logic here\n      return Promise.resolve(message);\n  }\n}\n\n\nenum LOCAL_IDENTIFIER {\n    // sample_activity must match the activityId in your bpmn\n    sample_activity= 'sample_activity'\n}\n\n// Register your task\nIoC.bindTo(HelloWorldTask, LOCAL_IDENTIFIER.sample_activity);\n\n```\nYou can even make complex binding like\n```javascript\nIoC.bindTask(HelloWorldTaskV2, LOCAL_IDENTIFIER.activity1, { bpmnProcessId: BPMN_PROCESS_ID, version: 2 });\n```\n\n[See documentation](.docs/WORKER.md)\n\nIf you have installed `workit-cli`, you can do `workit create task` \nand everything will be done for you.\n\n### Worker life cycle and events\n\n```javascript\nconst worker = IoC.get<Worker>(CORE_IDENTIFIER.worker, TAG.zeebe); // or TAG.camundaBpm\n\nworker.once('starting', () => {\n    // slack notification \n});\n\nworker.once('stopping', () => {\n    // close connections\n});\n\nworker.once('stopped', () => {\n    // slack notification\n});\n\nconst handler = worker.getProcessHandler();\n\nhandler.on('message', (msg: IMessage) => {\n    // log/audit\n});\n\nhandler.on('message-handled', (err: Error, msg: IMessage) => {\n    if (err) {\n        // something wrong\n    } else {\n        // everything is fine\n    }\n});\n\nworker.start();\nworker.run(); // Promise\nworker.stop(); // Promise\n```\n\n### Interceptors\n\n```javascript\nconst workerConfig = {\n  interceptors: [\n    async (message: IMessage): Promise<IMessage> => {\n      // do something before we execute task.\n      return message;\n    }\n  ]\n};\n\nIoC.bindToObject(workerConfig, CORE_IDENTIFIER.worker_config);\n```\n\n### Open-telemetry\nWorkIt will integrate Open-telemetry in order to provide instrumentations to developers. In the meantime, we use [Opencensus](https://github.com/census-instrumentation/opencensus-node). By default, we bound a `NoopTracer` but you can provide your own and it must extend [CoreTracer class](https://github.com/census-instrumentation/opencensus-node/blob/master/packages/opencensus-core/src/trace/model/tracer.ts).We strongly recommand to use this kind of pattern in your task: [Domain Probe pattern](https://martinfowler.com/articles/domain-oriented-observability.html#DomainProbesEnableCleanerMore-focusedTests). But here an example:\n\n```javascript\n// Simply bind your custom tracer object like this\nIoC.bindToObject(tracer, CORE_IDENTIFIER.tracer);\n```\n\n```javascript\nexport class HelloWorldTask extends TaskBase<IMessage> {\n  private readonly _tracer: TracerBase;\n    \n  constructor(tracer: TracerBase) {\n        this._tracer = tracer\n  }\n\n  public async execute(message: IMessage): Promise<IMessage> {\n      const { properties } = message;\n      \n      console.log(`Executing task: ${properties.activityId}`);\n      console.log(`${properties.bpmnProcessId}::${properties.processInstanceId} Servus!`);\n      message.body.test = true;\n      // This call will be traced automatically\n      const response = await axios.get('https://jsonplaceholder.typicode.com/todos/1');\n      \n      // you can also create a custom trace like this :\n      const span = this._tracer.startChildSpan({ name: 'customSpan', kind: SpanKind.CLIENT });\n      \n      console.log();\n      console.log('data:');\n      console.log(response.data);\n      // put your business logic here\n\n      // finish the span scope\n      span.end();\n      \n      return Promise.resolve(message);\n  }\n}\n```\nYou can look to `sample` folder where we provide an example (parallel.ts) using [Jaeger](https://www.jaegertracing.io/docs/latest/).\n\n[See get started section with Opencensus](.docs/WORKER.md#add-traces-to-your-worker-with-opencensus)\n\n### Define your config for each platform\n\n```javascript\nconst configBase: ICamundaConfig = {\n    workerId: 'demo',\n    baseUrl: `__undefined__`,\n    topicName: 'topic_demo'\n};\n\n// For Camunda BPM platform\nconst bpmnPlatformClientConfig = { ...configBase, baseUrl: 'http://localhost:8080/engine-rest',  maxTasks: 32, autoPoll: false, use: [] };\n\nIoC.bindToObject(bpmnPlatformClientConfig, CORE_IDENTIFIER.camunda_external_config);\n\n// For Zeebe platform\nconst zeebeClientConfig = { ...configBase, { baseUrl: 'localhost:2650', timeout: 2000 };\n\n// Zeebe exporter (Elasticsearch instance)\nconst zeebeElasticExporterConfig = {\n    url: `http://localhost:9200`,\n};\n\nIoC.bindToObject(zeebeClientConfig, CORE_IDENTIFIER.zeebe_external_config);\nIoC.bindToObject(zeebeElasticExporterConfig, CORE_IDENTIFIER.zeebe_elastic_exporter_config)\n```\n[See documentation](.docs/CONFIG.md)\n\n### Define your strategies in case of failure or success\n\nBy default, we define simple strategy for sucess or failure. \nWe strongly recommend you to provide yours as your app trigger specific exceptions.\nStrategies are automatically handled.\nIf an exeption is bubble up from the task, failure strategy  is raised, otherwise it's success.\n\n```javascript\nTODO: PROVIDE SAMPLE\n```\n\n## Running the tests\n\n```bash\nnpm test\n```\n\n## Built With\n\n*   [zeebe-node](https://github.com/CreditSenseAU/zeebe-client-node-js) - nodejs client for Zeebe\n*   [camunda-external-task-client-js](https://github.com/camunda/camunda-external-task-client-js) - nodejs client for Camunda BPM\n*   [inversify](https://github.com/inversify/InversifyJS) - Dependency injection\n*   [openCensus](https://opencensus.io/) - add instrumentation to the operations to be tracked (coming soon [open-telemetry](https://github.com/open-telemetry/opentelemetry-js))\n\n## Philosophy\n\n1.  Allow Javascript developers to write code that adheres to the SOLID principles.\n2.  Facilitate and encourage the adherence to the best OOP and IoC practices.\n3.  Add as little runtime overhead as possible.\n\n## Kubernetes\n\n### Zeebe\n\n```bash\nkubernetes/run\n```\n\n## Docker\n\n### Zeebe\n\nIn your terminal\n```bash\ndocker/run\n```\n### Bpmn platform\n```bash\ndocker run -d --name camunda -p 8080:8080 camunda/camunda-bpm-platform:latest\n// Go: http://localhost:8080/camunda - user/password : `demo/demo`\n```\n[More details](https://github.com/camunda/docker-camunda-bpm-platform)\n\n## TODO\n<details>\n<summary>Click to expand</summary>\n\n-   Add tests\n-   Improve docs\n-   Make sample and confirm compatibility with DMN\n-   Adding a common exception error codes between Manager clients\n-   Add metrics by using prometheus lib\n-   Questionning about spliting this project in 4 parts (core-camunda-message, core-camunda-engine-client-lib, core-zeebe-engine-client-lib, core-camunda-client-lib)\n    - Dependencies would be \n        - core-camunda-message -> core-camunda-engine-client-lib\n        - core-camunda-message -> core-zeebe-engine-client-lib\n        - core-camunda-client-lib, core-zeebe-engine-client-lib or core-camunda-engine-client-lib  -> app\n</details>\n\n## Versionning\n\nWe use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/VilledeMontreal/workit/tags).\n\nworkit-camunda | Zeebe | Camunda BPM\n-- | -- | -- \n2.2.0 | 0.20.x | 7.6 to latest\n2.1.0 | 0.19.x | 7.6 to latest\n2.0.1 | 0.18.x | 7.6 to latest\n< 1.0.0 | <= 0.17.0 | 7.6 to latest\n\n## Maintainers\n\n*   **Olivier Albertini** - *Initial work* - [Ville de Montréal](https://github.com/VilledeMontreal)\n\nSee also the list of [contributors](CONTRIBUTORS.md) who participated in this project.\n\n## Contributing\n\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details\n\n## Acknowledgments\n\n*   [Josh Wulf](https://github.com/jwulf) - zeebe-node inspired me during `workit-cli` development\n","readmeFilename":"README.md","_id":"workit-camunda@3.0.0-alpha","_nodeVersion":"10.9.0","_npmVersion":"6.10.2","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-Fc18kcghg5Rdt5s7EKMgzSEtla8j5tjE8m5rAbGGGlRnV36lTOz5I3t8vbo+BMR8VLPXVsam/YtZgD9VLYIGfA==","shasum":"97d55a2c0cc44833bb28d617f17ce9f96bbf5977","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-3.0.0-alpha.tgz","fileCount":352,"unpackedSize":333915,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQziDCRA9TVsSAnZWagAACqkP/3Zik6/fAIDDeIw9tcIA\ngwGU6wl3VEC02MT88EHeuLmIn8ERoDXUYIqFtK4s5Egu+80uhedlwIsmgBTX\nM5lOMthwaqz1TrGWqEFGlGIqUR+9+Iuf+/pT+VVb4TcUXgRha5WHd5gp8+79\nc0VWbYHIBgD4xHoS6IIBVrav4RX5I87iaYgXT/JtmIaFwi3MyjS3i8gIB2tu\n+ZMwidTfv/IQBcK+ylKrzwfWvnrGXiJ2GMOE6Ca+4bCyVJQTTBozRsOMa9jc\nFgJ6+/XaNwIC2hqlkF+8GoSgDN2ihdA91JDNs2M85QQTv5/L74OHnQC2Wk1D\nKpBEKYAyRe3UQKz8EtNX/K9SncvkNc2YeX8PWmU4jklawe8VMy8gZRrN0P7Z\nkAeuSk3HSlJrkE76mg1SvT1Pm9TS+FSXd7EFVe3AhG7Vd+o20pRXJy0oZrVJ\nASzo6aS6IeYvJTAus2TMQkuzTLZQH9M1rmCopLGbxkcw9KXatm0VGArupNg6\nwU4fOm+AjBPgEqGtcP+TVszQR7gLqROuK016lTxhqDUWeGsw1BouzqlAHYzD\npyvJlU6dLWo9YK26I8dGCDdesR84lb70Uc157DIecwSu8nUJe0BfzA0NWYA+\nZ/IbAbeDzC8Xiu4sH6ZqezQE2ep/Aw83sJP4YHWtaXYfArGl0RnW9NufJEY+\npwCV\r\n=Colv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDTQMSW9Dto3hkzmYoTZ2TA2USG9LhaCZTC5Ja9U7KobAiALur/ENgGcSgZxv9js3yJ5ELnUnL/oJwaTHsmEg5ZRPg=="}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_3.0.0-alpha_1564686467170_0.2780848752017131"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.0.0-alpha.1":{"name":"workit-camunda","version":"3.0.0-alpha.1","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Olivier Albertini","email":"olivier.albertini@montreal.ca"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"axios":"~0.19.0","camunda-external-task-client-js":"~1.1.1","debug":"~4.1.1","fast-safe-stringify":"~2.0.6","form-data":"~2.5.0","inversify":"~5.0.1","@opencensus/core":"~0.0.16","@opencensus/nodejs":"~0.0.16","reflect-metadata":"~0.1.13","zeebe-elasticsearch-client":"^0.2.0","zeebe-node":"~0.20.1","uuid":"^3.3.2"},"devDependencies":{"@opencensus/exporter-jaeger":"~0.0.16","@types/uuid":"^3.4.5","@commitlint/cli":"^8.1.0","@commitlint/config-conventional":"^8.1.0","@types/axios":"~0.14.0","@types/debug":"~4.1.4","@types/events":"~3.0.0","@types/form-data":"~2.5.0","@types/jest":"^24.0.16","@types/nock":"^10.0.3","@types/node":"^12.6.8","husky":"^3.0.2","jest":"^24.8.0","nock":"^10.0.6","prettier":"^1.18.2","prettier-tslint":"^0.4.2","source-map-support":"^0.5.13","ts-jest":"^24.0.2","tslint":"^5.18.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","typedoc":"^0.15.0","typescript":"^3.5.3"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ../../docs --tsconfig ./tsconfig.json --excludePrivate --mode file","camunda:deploy":"node ./lib/sample/deploy.js","camunda:create-instance":"node ./lib/sample/create-process-instances.js","camunda:worker":"node ./lib/sample/worker.js","camunda:trace":"node ./lib/sample/parallel.js"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","Opentracing","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"b3744e7a6adbb22813dd4249b6cae7eb7e03634a","readme":"# WorkIt\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\n✨Extensible worker for Node.js that works with both Zeebe and Camunda BPM platforms powered by TypeScript ✨\n\n## Motivation\n\nWe needed a framework to help us quickly build workers used to execute tasks. [Zeebe](https://zeebe.io/) provides a good fit with our stack. Until this is production ready, we are keeping the [Camunda Bpm](https://camunda.com/products/bpmn-engine/). Indeed, Zeebe is in developper preview. In order to make the transition smoother, we use this package. We can experiment and choose the Camunda platform we want without rewritting our business logic.\n\nThis package can be useful because:\n\n-   At this moment, Zeebe doesn't provide all BPMN components. Zeebe is new and some unexpected bugs can appear during development so we can easily revert back to the the former platform if an issue was to rise.\n-   Instead of depending directly from a Camunda client, this project provides an abstraction layer. This way it’s easier to change the client or to make your own.\n-   You want to have a worker standardization.\n-   Uniformisation. Indeed, you can use both platforms depending project needs.\n-   Added features like automated tracing.\n-   This package enforce feature parity between Zeebe and Camunda BPM through the client libraries. Some features exposed to the Camunda BPM platform are not presents in this package because we couldn't provide them if we switch to Zeebe. This limitation is to guide developers to prepare migration.\n\n## Quickstart\n\n[Get started in 2 minutes](.docs/WORKER.md).\n\n## Documentation\n\n-   [.docs](.docs/) contains written documentation\n-   Comprehensive API documentation is available [online](https://villedemontreal.github.io/workit/) and in the `docs` subdirectory\n\n## Installing\n\n```bash\nnpm i workit-camunda\n```\nor using the generator below\n### Yo!\n\nThis generator will help you during your development with this library. It provides handy tools.\n\n```bash\nnpm i -g workit-cli\n```\n\n#### Install a fresh new project\n\n```bash\nworkit init\n```\n#### Generate tasks from your existing BPMN\n\n```bash\nworkit create task --file /your/path.bpmn\n```\n\n#### Generate new task\n\n```bash\nworkit create task\n```\n\n## How to use\n\nSwitching between Zeebe and the bpmn platform is easy as specifying a `TAG` to the IoC.\n\n### Run worker\n\n```javascript\nconst worker = IoC.get<Worker>(CORE_IDENTIFIER.worker, TAG.camundaBpm); // or TAG.zeebe\n\nworker.start();\nworker.run();\n```\n\n### Deploy a workflow\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nconst fullpath = `${process.cwd()}/sample/BPMN_DEMO.bpmn`;\nawait manager.deployWorkflow(fullpath);\n```\n\n### Get workflows\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.getWorkflows()\n```\n\n### Get a workflow\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.getWorkflow({ bpmnProcessId: \"DEMO\" });\n```\n\n### Update variables\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.updateVariables({ \n    processInstanceId: \"5c50c48e-4691-11e9-8b8f-0242ac110002\",\n    variables: { amount: 1000 }\n});\n```\n\n### Publish message\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.publishMessage({\n    correlation: {},\n    name: \"catching\",\n    variables: { amount: 100 },\n    timeToLive: undefined, // only supported for Zeebe\n    messageId: \"5c50c48e-4691-11e9-8b8f-0242ac110002\"\n});\n```\n\n### Create workflow instance\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.createWorkflowInstance({\n    bpmnProcessId: \"MY_BPMN_KEY\",\n    variables: {\n        hello: \"world\"\n    }\n});\n```\n\n### Cancel workflow instance\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.cancelWorkflowInstance(\"4651614f-4b3c-11e9-b5b3-ee5801424400\");\n```\n\n### Resolve incident\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.resolveIncident(\"c84fce6c-518e-11e9-bd78-0242ac110003\");\n```\n\n### Define tasks (your bpmn activities)\n\nYou can define many tasks to one worker. It will handle all messages and will route to the right tasks.\n\n```javascript\nexport class HelloWorldTask extends TaskBase<IMessage> {\n  // You can type message like IMessage<TBody, TProps> default any\n  public execute(message: IMessage): Promise<IMessage> {\n      const { properties } = message;\n      console.log(`Executing task: ${properties.activityId}`);\n      console.log(`${properties.bpmnProcessId}::${properties.processInstanceId} Servus!`);\n      // put your business logic here\n      return Promise.resolve(message);\n  }\n}\n\n\nenum LOCAL_IDENTIFIER {\n    // sample_activity must match the activityId in your bpmn\n    sample_activity= 'sample_activity'\n}\n\n// Register your task\nIoC.bindTo(HelloWorldTask, LOCAL_IDENTIFIER.sample_activity);\n\n```\nYou can even make complex binding like\n```javascript\nIoC.bindTask(HelloWorldTaskV2, LOCAL_IDENTIFIER.activity1, { bpmnProcessId: BPMN_PROCESS_ID, version: 2 });\n```\n\n[See documentation](.docs/WORKER.md)\n\nIf you have installed `workit-cli`, you can do `workit create task` \nand everything will be done for you.\n\n### Worker life cycle and events\n\n```javascript\nconst worker = IoC.get<Worker>(CORE_IDENTIFIER.worker, TAG.zeebe); // or TAG.camundaBpm\n\nworker.once('starting', () => {\n    // slack notification \n});\n\nworker.once('stopping', () => {\n    // close connections\n});\n\nworker.once('stopped', () => {\n    // slack notification\n});\n\nconst handler = worker.getProcessHandler();\n\nhandler.on('message', (msg: IMessage) => {\n    // log/audit\n});\n\nhandler.on('message-handled', (err: Error, msg: IMessage) => {\n    if (err) {\n        // something wrong\n    } else {\n        // everything is fine\n    }\n});\n\nworker.start();\nworker.run(); // Promise\nworker.stop(); // Promise\n```\n\n### Interceptors\n\n```javascript\nconst workerConfig = {\n  interceptors: [\n    async (message: IMessage): Promise<IMessage> => {\n      // do something before we execute task.\n      return message;\n    }\n  ]\n};\n\nIoC.bindToObject(workerConfig, CORE_IDENTIFIER.worker_config);\n```\n\n### Open-telemetry\nWorkIt will integrate Open-telemetry in order to provide instrumentations to developers. In the meantime, we use [Opencensus](https://github.com/census-instrumentation/opencensus-node). By default, we bound a `NoopTracer` but you can provide your own and it must extend [CoreTracer class](https://github.com/census-instrumentation/opencensus-node/blob/master/packages/opencensus-core/src/trace/model/tracer.ts).We strongly recommand to use this kind of pattern in your task: [Domain Probe pattern](https://martinfowler.com/articles/domain-oriented-observability.html#DomainProbesEnableCleanerMore-focusedTests). But here an example:\n\n```javascript\n// Simply bind your custom tracer object like this\nIoC.bindToObject(tracer, CORE_IDENTIFIER.tracer);\n```\n\n```javascript\nexport class HelloWorldTask extends TaskBase<IMessage> {\n  private readonly _tracer: TracerBase;\n    \n  constructor(tracer: TracerBase) {\n        this._tracer = tracer\n  }\n\n  public async execute(message: IMessage): Promise<IMessage> {\n      const { properties } = message;\n      \n      console.log(`Executing task: ${properties.activityId}`);\n      console.log(`${properties.bpmnProcessId}::${properties.processInstanceId} Servus!`);\n      message.body.test = true;\n      // This call will be traced automatically\n      const response = await axios.get('https://jsonplaceholder.typicode.com/todos/1');\n      \n      // you can also create a custom trace like this :\n      const span = this._tracer.startChildSpan({ name: 'customSpan', kind: SpanKind.CLIENT });\n      \n      console.log();\n      console.log('data:');\n      console.log(response.data);\n      // put your business logic here\n\n      // finish the span scope\n      span.end();\n      \n      return Promise.resolve(message);\n  }\n}\n```\nYou can look to `sample` folder where we provide an example (parallel.ts) using [Jaeger](https://www.jaegertracing.io/docs/latest/).\n\n[See get started section with Opencensus](.docs/WORKER.md#add-traces-to-your-worker-with-opencensus)\n\n### Define your config for each platform\n\n```javascript\nconst configBase: ICamundaConfig = {\n    workerId: 'demo',\n    baseUrl: `__undefined__`,\n    topicName: 'topic_demo'\n};\n\n// For Camunda BPM platform\nconst bpmnPlatformClientConfig = { ...configBase, baseUrl: 'http://localhost:8080/engine-rest',  maxTasks: 32, autoPoll: false, use: [] };\n\nIoC.bindToObject(bpmnPlatformClientConfig, CORE_IDENTIFIER.camunda_external_config);\n\n// For Zeebe platform\nconst zeebeClientConfig = { ...configBase, { baseUrl: 'localhost:2650', timeout: 2000 };\n\n// Zeebe exporter (Elasticsearch instance)\nconst zeebeElasticExporterConfig = {\n    url: `http://localhost:9200`,\n};\n\nIoC.bindToObject(zeebeClientConfig, CORE_IDENTIFIER.zeebe_external_config);\nIoC.bindToObject(zeebeElasticExporterConfig, CORE_IDENTIFIER.zeebe_elastic_exporter_config)\n```\n[See documentation](.docs/CONFIG.md)\n\n### Define your strategies in case of failure or success\n\nBy default, we define simple strategy for sucess or failure. \nWe strongly recommend you to provide yours as your app trigger specific exceptions.\nStrategies are automatically handled.\nIf an exeption is bubble up from the task, failure strategy  is raised, otherwise it's success.\n\n```javascript\nTODO: PROVIDE SAMPLE\n```\n\n## Running the tests\n\n```bash\nnpm test\n```\n\n## Built With\n\n*   [zeebe-node](https://github.com/CreditSenseAU/zeebe-client-node-js) - nodejs client for Zeebe\n*   [camunda-external-task-client-js](https://github.com/camunda/camunda-external-task-client-js) - nodejs client for Camunda BPM\n*   [inversify](https://github.com/inversify/InversifyJS) - Dependency injection\n*   [openCensus](https://opencensus.io/) - add instrumentation to the operations to be tracked (coming soon [open-telemetry](https://github.com/open-telemetry/opentelemetry-js))\n\n## Philosophy\n\n1.  Allow Javascript developers to write code that adheres to the SOLID principles.\n2.  Facilitate and encourage the adherence to the best OOP and IoC practices.\n3.  Add as little runtime overhead as possible.\n\n## Kubernetes\n\n### Zeebe\n\n```bash\nkubernetes/run\n```\n\n## Docker\n\n### Zeebe\n\nIn your terminal\n```bash\ndocker/run\n```\n### Bpmn platform\n```bash\ndocker run -d --name camunda -p 8080:8080 camunda/camunda-bpm-platform:latest\n// Go: http://localhost:8080/camunda - user/password : `demo/demo`\n```\n[More details](https://github.com/camunda/docker-camunda-bpm-platform)\n\n## TODO\n<details>\n<summary>Click to expand</summary>\n\n-   Add tests\n-   Improve docs\n-   Make sample and confirm compatibility with DMN\n-   Adding a common exception error codes between Manager clients\n-   Add metrics by using prometheus lib\n-   Questionning about spliting this project in 4 parts (core-camunda-message, core-camunda-engine-client-lib, core-zeebe-engine-client-lib, core-camunda-client-lib)\n    - Dependencies would be \n        - core-camunda-message -> core-camunda-engine-client-lib\n        - core-camunda-message -> core-zeebe-engine-client-lib\n        - core-camunda-client-lib, core-zeebe-engine-client-lib or core-camunda-engine-client-lib  -> app\n</details>\n\n## Versionning\n\nWe use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/VilledeMontreal/workit/tags).\n\nworkit-camunda | Zeebe | Camunda BPM\n-- | -- | -- \n2.2.0 | 0.20.x | 7.6 to latest\n2.1.0 | 0.19.x | 7.6 to latest\n2.0.1 | 0.18.x | 7.6 to latest\n< 1.0.0 | <= 0.17.0 | 7.6 to latest\n\n## Maintainers\n\n*   **Olivier Albertini** - *Initial work* - [Ville de Montréal](https://github.com/VilledeMontreal)\n\nSee also the list of [contributors](CONTRIBUTORS.md) who participated in this project.\n\n## Contributing\n\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details\n\n## Acknowledgments\n\n*   [Josh Wulf](https://github.com/jwulf) - zeebe-node inspired me during `workit-cli` development\n","readmeFilename":"README.md","_id":"workit-camunda@3.0.0-alpha.1","_nodeVersion":"10.9.0","_npmVersion":"6.10.2","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-NfuNsHyCQy7npE154PJJiFdsGvdbf6qBxLYTIy9tE0EWik0puObfjiJPjc3tBBU7vJJHTvThKqv97ZdV7Vrw6Q==","shasum":"f5747753ddc267608e07499c5209cd7b88195f67","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-3.0.0-alpha.1.tgz","fileCount":352,"unpackedSize":333917,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQz5fCRA9TVsSAnZWagAAGmYP/Rf593zSmVVy7I36uLbx\nJ0HIkAIVAO1iGwOplJ3vEBJyXFyEjGjgmEJrMUCe8VhAMUZNpEhoFhnC69dP\n9yX+dlJnP9cYQTqcQkkCDKEOP/rwEpJwg+FVO2D+CF3cCPluOFcxZV9nDBoT\nsgzxPojeQ5bHz1tCLXkgXjgP7jl7lDtCM+Ycb541m3c+s0BkTbCd8Ri6g8Ad\nrYy0N3uBGn6/iH52BLKT4uQX52rZBKq6fJKtu7xuHAHuHawYU1kY9VV5iaLA\ni5FX+BozN6rhkEab8KFm3d2Q4qq6MLGkLBo56B7aDm5+2Pu0TTWS8wiSED06\n+UFbplxbpmO7CpgeWi88RcMrdMP5p9K7kJHtrsGQ7rodI0ZzrTlGCPQfOTRE\nQG6IMmUm5X3rYwDfcxqZDcV9MHZPp4x02Dry3phPd6dcbA8rAR/tJPQ9Jlfh\n2VlXCOOhqk2yms1UdWqWMYg68cF2h9A65YR6h6OFU8gOwQGu9t+50maVB5bl\nS3aIPKpForV9l/m0++5DvqEqCPqTj+3ug1MFyGm9DLWX0vvNOGchVtTraoT4\n56uq1yD3rU9uOA8fc7/7O7HupVTIwvc1WTkiCBGUhq/kdXtjSHA5XHYzEDBe\n/ePcvNRLhNVPw09BuObR++aUN5qBzHkNZiK7xiMdDB9VBkFDlICJfsdyGuuE\nmbdR\r\n=K09C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgpbZ/Padm8Ecx6Mofl531scOre7yOAwtUMobj2hv9xgIgM8gFVH9IsBAvcCtgE9KJSAZpyBevPgBOLER7ZPfsV6U="}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_3.0.0-alpha.1_1564687967284_0.9795551733145313"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.0.0-alpha.2":{"name":"workit-camunda","version":"3.0.0-alpha.2","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Olivier Albertini","email":"olivier.albertini@montreal.ca"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"axios":"~0.19.0","camunda-external-task-client-js":"~1.1.1","debug":"~4.1.1","fast-safe-stringify":"~2.0.6","form-data":"~2.5.0","inversify":"~5.0.1","@opencensus/core":"~0.0.16","@opencensus/nodejs":"~0.0.16","reflect-metadata":"~0.1.13","zeebe-elasticsearch-client":"^0.2.0","zeebe-node":"~0.20.1","uuid":"^3.3.2"},"devDependencies":{"@opencensus/exporter-jaeger":"~0.0.16","@types/uuid":"^3.4.5","@commitlint/cli":"^8.1.0","@commitlint/config-conventional":"^8.1.0","@types/axios":"~0.14.0","@types/debug":"~4.1.4","@types/events":"~3.0.0","@types/form-data":"~2.5.0","@types/jest":"^24.0.16","@types/nock":"^10.0.3","@types/node":"^12.6.8","husky":"^3.0.2","jest":"^24.8.0","nock":"^10.0.6","prettier":"^1.18.2","prettier-tslint":"^0.4.2","source-map-support":"^0.5.13","ts-jest":"^24.0.2","tslint":"^5.18.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","typedoc":"^0.15.0","typescript":"^3.5.3"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ../../docs --tsconfig ./tsconfig.json --excludePrivate --mode file","camunda:deploy":"node ./lib/sample/deploy.js","camunda:create-instance":"node ./lib/sample/create-process-instances.js","camunda:worker":"node ./lib/sample/worker.js","camunda:trace":"node ./lib/sample/parallel.js"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","Opentracing","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"b3744e7a6adbb22813dd4249b6cae7eb7e03634a","readme":"# WorkIt\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\n✨Extensible worker for Node.js that works with both Zeebe and Camunda BPM platforms powered by TypeScript ✨\n\n## Motivation\n\nWe needed a framework to help us quickly build workers used to execute tasks. [Zeebe](https://zeebe.io/) provides a good fit with our stack. Until this is production ready, we are keeping the [Camunda Bpm](https://camunda.com/products/bpmn-engine/). Indeed, Zeebe is in developper preview. In order to make the transition smoother, we use this package. We can experiment and choose the Camunda platform we want without rewritting our business logic.\n\nThis package can be useful because:\n\n-   At this moment, Zeebe doesn't provide all BPMN components. Zeebe is new and some unexpected bugs can appear during development so we can easily revert back to the the former platform if an issue was to rise.\n-   Instead of depending directly from a Camunda client, this project provides an abstraction layer. This way it’s easier to change the client or to make your own.\n-   You want to have a worker standardization.\n-   Uniformisation. Indeed, you can use both platforms depending project needs.\n-   Added features like automated tracing.\n-   This package enforce feature parity between Zeebe and Camunda BPM through the client libraries. Some features exposed to the Camunda BPM platform are not presents in this package because we couldn't provide them if we switch to Zeebe. This limitation is to guide developers to prepare migration.\n\n## Quickstart\n\n[Get started in 2 minutes](.docs/WORKER.md).\n\n## Documentation\n\n-   [.docs](.docs/) contains written documentation\n-   Comprehensive API documentation is available [online](https://villedemontreal.github.io/workit/) and in the `docs` subdirectory\n\n## Installing\n\n```bash\nnpm i workit-camunda\n```\nor using the generator below\n### Yo!\n\nThis generator will help you during your development with this library. It provides handy tools.\n\n```bash\nnpm i -g workit-cli\n```\n\n#### Install a fresh new project\n\n```bash\nworkit init\n```\n#### Generate tasks from your existing BPMN\n\n```bash\nworkit create task --file /your/path.bpmn\n```\n\n#### Generate new task\n\n```bash\nworkit create task\n```\n\n## How to use\n\nSwitching between Zeebe and the bpmn platform is easy as specifying a `TAG` to the IoC.\n\n### Run worker\n\n```javascript\nconst worker = IoC.get<Worker>(CORE_IDENTIFIER.worker, TAG.camundaBpm); // or TAG.zeebe\n\nworker.start();\nworker.run();\n```\n\n### Deploy a workflow\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nconst fullpath = `${process.cwd()}/sample/BPMN_DEMO.bpmn`;\nawait manager.deployWorkflow(fullpath);\n```\n\n### Get workflows\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.getWorkflows()\n```\n\n### Get a workflow\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.getWorkflow({ bpmnProcessId: \"DEMO\" });\n```\n\n### Update variables\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.updateVariables({ \n    processInstanceId: \"5c50c48e-4691-11e9-8b8f-0242ac110002\",\n    variables: { amount: 1000 }\n});\n```\n\n### Publish message\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.publishMessage({\n    correlation: {},\n    name: \"catching\",\n    variables: { amount: 100 },\n    timeToLive: undefined, // only supported for Zeebe\n    messageId: \"5c50c48e-4691-11e9-8b8f-0242ac110002\"\n});\n```\n\n### Create workflow instance\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.createWorkflowInstance({\n    bpmnProcessId: \"MY_BPMN_KEY\",\n    variables: {\n        hello: \"world\"\n    }\n});\n```\n\n### Cancel workflow instance\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.cancelWorkflowInstance(\"4651614f-4b3c-11e9-b5b3-ee5801424400\");\n```\n\n### Resolve incident\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.resolveIncident(\"c84fce6c-518e-11e9-bd78-0242ac110003\");\n```\n\n### Define tasks (your bpmn activities)\n\nYou can define many tasks to one worker. It will handle all messages and will route to the right tasks.\n\n```javascript\nexport class HelloWorldTask extends TaskBase<IMessage> {\n  // You can type message like IMessage<TBody, TProps> default any\n  public execute(message: IMessage): Promise<IMessage> {\n      const { properties } = message;\n      console.log(`Executing task: ${properties.activityId}`);\n      console.log(`${properties.bpmnProcessId}::${properties.processInstanceId} Servus!`);\n      // put your business logic here\n      return Promise.resolve(message);\n  }\n}\n\n\nenum LOCAL_IDENTIFIER {\n    // sample_activity must match the activityId in your bpmn\n    sample_activity= 'sample_activity'\n}\n\n// Register your task\nIoC.bindTo(HelloWorldTask, LOCAL_IDENTIFIER.sample_activity);\n\n```\nYou can even make complex binding like\n```javascript\nIoC.bindTask(HelloWorldTaskV2, LOCAL_IDENTIFIER.activity1, { bpmnProcessId: BPMN_PROCESS_ID, version: 2 });\n```\n\n[See documentation](.docs/WORKER.md)\n\nIf you have installed `workit-cli`, you can do `workit create task` \nand everything will be done for you.\n\n### Worker life cycle and events\n\n```javascript\nconst worker = IoC.get<Worker>(CORE_IDENTIFIER.worker, TAG.zeebe); // or TAG.camundaBpm\n\nworker.once('starting', () => {\n    // slack notification \n});\n\nworker.once('stopping', () => {\n    // close connections\n});\n\nworker.once('stopped', () => {\n    // slack notification\n});\n\nconst handler = worker.getProcessHandler();\n\nhandler.on('message', (msg: IMessage) => {\n    // log/audit\n});\n\nhandler.on('message-handled', (err: Error, msg: IMessage) => {\n    if (err) {\n        // something wrong\n    } else {\n        // everything is fine\n    }\n});\n\nworker.start();\nworker.run(); // Promise\nworker.stop(); // Promise\n```\n\n### Interceptors\n\n```javascript\nconst workerConfig = {\n  interceptors: [\n    async (message: IMessage): Promise<IMessage> => {\n      // do something before we execute task.\n      return message;\n    }\n  ]\n};\n\nIoC.bindToObject(workerConfig, CORE_IDENTIFIER.worker_config);\n```\n\n### Open-telemetry\nWorkIt will integrate Open-telemetry in order to provide instrumentations to developers. In the meantime, we use [Opencensus](https://github.com/census-instrumentation/opencensus-node). By default, we bound a `NoopTracer` but you can provide your own and it must extend [CoreTracer class](https://github.com/census-instrumentation/opencensus-node/blob/master/packages/opencensus-core/src/trace/model/tracer.ts).We strongly recommand to use this kind of pattern in your task: [Domain Probe pattern](https://martinfowler.com/articles/domain-oriented-observability.html#DomainProbesEnableCleanerMore-focusedTests). But here an example:\n\n```javascript\n// Simply bind your custom tracer object like this\nIoC.bindToObject(tracer, CORE_IDENTIFIER.tracer);\n```\n\n```javascript\nexport class HelloWorldTask extends TaskBase<IMessage> {\n  private readonly _tracer: TracerBase;\n    \n  constructor(tracer: TracerBase) {\n        this._tracer = tracer\n  }\n\n  public async execute(message: IMessage): Promise<IMessage> {\n      const { properties } = message;\n      \n      console.log(`Executing task: ${properties.activityId}`);\n      console.log(`${properties.bpmnProcessId}::${properties.processInstanceId} Servus!`);\n      message.body.test = true;\n      // This call will be traced automatically\n      const response = await axios.get('https://jsonplaceholder.typicode.com/todos/1');\n      \n      // you can also create a custom trace like this :\n      const span = this._tracer.startChildSpan({ name: 'customSpan', kind: SpanKind.CLIENT });\n      \n      console.log();\n      console.log('data:');\n      console.log(response.data);\n      // put your business logic here\n\n      // finish the span scope\n      span.end();\n      \n      return Promise.resolve(message);\n  }\n}\n```\nYou can look to `sample` folder where we provide an example (parallel.ts) using [Jaeger](https://www.jaegertracing.io/docs/latest/).\n\n[See get started section with Opencensus](.docs/WORKER.md#add-traces-to-your-worker-with-opencensus)\n\n### Define your config for each platform\n\n```javascript\nconst configBase: ICamundaConfig = {\n    workerId: 'demo',\n    baseUrl: `__undefined__`,\n    topicName: 'topic_demo'\n};\n\n// For Camunda BPM platform\nconst bpmnPlatformClientConfig = { ...configBase, baseUrl: 'http://localhost:8080/engine-rest',  maxTasks: 32, autoPoll: false, use: [] };\n\nIoC.bindToObject(bpmnPlatformClientConfig, CORE_IDENTIFIER.camunda_external_config);\n\n// For Zeebe platform\nconst zeebeClientConfig = { ...configBase, { baseUrl: 'localhost:2650', timeout: 2000 };\n\n// Zeebe exporter (Elasticsearch instance)\nconst zeebeElasticExporterConfig = {\n    url: `http://localhost:9200`,\n};\n\nIoC.bindToObject(zeebeClientConfig, CORE_IDENTIFIER.zeebe_external_config);\nIoC.bindToObject(zeebeElasticExporterConfig, CORE_IDENTIFIER.zeebe_elastic_exporter_config)\n```\n[See documentation](.docs/CONFIG.md)\n\n### Define your strategies in case of failure or success\n\nBy default, we define simple strategy for sucess or failure. \nWe strongly recommend you to provide yours as your app trigger specific exceptions.\nStrategies are automatically handled.\nIf an exeption is bubble up from the task, failure strategy  is raised, otherwise it's success.\n\n```javascript\nTODO: PROVIDE SAMPLE\n```\n\n## Running the tests\n\n```bash\nnpm test\n```\n\n## Built With\n\n*   [zeebe-node](https://github.com/CreditSenseAU/zeebe-client-node-js) - nodejs client for Zeebe\n*   [camunda-external-task-client-js](https://github.com/camunda/camunda-external-task-client-js) - nodejs client for Camunda BPM\n*   [inversify](https://github.com/inversify/InversifyJS) - Dependency injection\n*   [openCensus](https://opencensus.io/) - add instrumentation to the operations to be tracked (coming soon [open-telemetry](https://github.com/open-telemetry/opentelemetry-js))\n\n## Philosophy\n\n1.  Allow Javascript developers to write code that adheres to the SOLID principles.\n2.  Facilitate and encourage the adherence to the best OOP and IoC practices.\n3.  Add as little runtime overhead as possible.\n\n## Kubernetes\n\n### Zeebe\n\n```bash\nkubernetes/run\n```\n\n## Docker\n\n### Zeebe\n\nIn your terminal\n```bash\ndocker/run\n```\n### Bpmn platform\n```bash\ndocker run -d --name camunda -p 8080:8080 camunda/camunda-bpm-platform:latest\n// Go: http://localhost:8080/camunda - user/password : `demo/demo`\n```\n[More details](https://github.com/camunda/docker-camunda-bpm-platform)\n\n## TODO\n<details>\n<summary>Click to expand</summary>\n\n-   Add tests\n-   Improve docs\n-   Make sample and confirm compatibility with DMN\n-   Adding a common exception error codes between Manager clients\n-   Add metrics by using prometheus lib\n-   Questionning about spliting this project in 4 parts (core-camunda-message, core-camunda-engine-client-lib, core-zeebe-engine-client-lib, core-camunda-client-lib)\n    - Dependencies would be \n        - core-camunda-message -> core-camunda-engine-client-lib\n        - core-camunda-message -> core-zeebe-engine-client-lib\n        - core-camunda-client-lib, core-zeebe-engine-client-lib or core-camunda-engine-client-lib  -> app\n</details>\n\n## Versionning\n\nWe use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/VilledeMontreal/workit/tags).\n\nworkit-camunda | Zeebe | Camunda BPM\n-- | -- | -- \n2.2.0 | 0.20.x | 7.6 to latest\n2.1.0 | 0.19.x | 7.6 to latest\n2.0.1 | 0.18.x | 7.6 to latest\n< 1.0.0 | <= 0.17.0 | 7.6 to latest\n\n## Maintainers\n\n*   **Olivier Albertini** - *Initial work* - [Ville de Montréal](https://github.com/VilledeMontreal)\n\nSee also the list of [contributors](CONTRIBUTORS.md) who participated in this project.\n\n## Contributing\n\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details\n\n## Acknowledgments\n\n*   [Josh Wulf](https://github.com/jwulf) - zeebe-node inspired me during `workit-cli` development\n","readmeFilename":"README.md","_id":"workit-camunda@3.0.0-alpha.2","_nodeVersion":"10.9.0","_npmVersion":"6.10.2","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-B1v7AcO6dIH7bU3YEE3N4TE0L1BXlrAeMw7rKSanPWQfe3FYogKcg5pBROo9wVFe7PrZFLTY9R9J1FYXo9/nxA==","shasum":"2ae54726cb3df8dcd0693253e4e8540b3af21bdc","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-3.0.0-alpha.2.tgz","fileCount":355,"unpackedSize":334161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdS0BwCRA9TVsSAnZWagAA45wQAJ4YWaAl2MF2CWPjUcyc\nz49lzh3YgcVHsyLEHR6Rg3rJJpT/eQwrClHzfh+hoPyvNSqwXI3xGeW1EBWa\nFH1dSTfIZOgoDkL/Ye4FIY5k4RJ6ZatKtIB2uclqqi2+2Ar+T5s0WoXDWXSd\n7YeyMAMto3RjFPStXZgeaHf8H2X8n3Wh5X8rSVgVubPy2+oY0FXEELhZJuk9\njmHqDjDGcS17ck5JIZwP6l3yACQHVi+s4bSfEdiW/DxrZibULWYhNn80dkb9\n9iyR/DUqSFVqJ16JPXrqwL6D3bFpPWhbp++6QRfGNrR64liFN9Oc5H2ozTzy\nz+4gyDOE9x8e9SpKoKVt8876hZsZKPn2nvfX4XFJiF5cncTHvIfk0LBdPJTy\nzx+D0FroawcZL359e6u4AZqpA3BlkJViDU2jQV9ZwQMnMt06WQwwhLmx5V74\nNDQkz5hbQgUbJhDweWXyXAPywxmrBaiXQbxqg5AQC1pD3Sq18JFyt/LHWz9u\n0fvhcwpEtF/JxxaKl7VayvjwiQ3lwSgGG1VROg1pbrwsPobl0srwm5HcOoe8\nifDgloZ1AgIZ04mflCN/IifjjmmbyRnWlq5ZHr0V2sMJA9Zzen57cnzitYhG\no92u9NVnu8dDRrmk60FMI5oeCpMNcu6WX+Kez0egj7uhGV8ovVXA7IJKpZVa\nM1/J\r\n=rKmS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCH27g0RQuBz7nZ3yd06dKw5CIGuxOyHV2vJSFgJdp5rgIhAL9dLK8NYLlXM6I3T7geGxb49P8tHdFZ8Toysv8B6EuP"}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_3.0.0-alpha.2_1565212784156_0.9660546806816186"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.0.0-alpha.3":{"name":"workit-camunda","version":"3.0.0-alpha.3","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Olivier Albertini","email":"olivier.albertini@montreal.ca"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"axios":"~0.19.0","camunda-external-task-client-js":"~1.2.0","debug":"~4.1.1","fast-safe-stringify":"~2.0.6","form-data":"~2.5.0","inversify":"~5.0.1","@opencensus/core":"~0.0.16","@opencensus/nodejs":"~0.0.16","reflect-metadata":"~0.1.13","zeebe-elasticsearch-client":"^0.2.0","zeebe-node":"~0.20.1","uuid":"^3.3.2"},"devDependencies":{"@opencensus/exporter-jaeger":"~0.0.16","@types/uuid":"^3.4.5","@commitlint/cli":"^8.1.0","@commitlint/config-conventional":"^8.1.0","@types/axios":"~0.14.0","@types/debug":"~4.1.4","@types/events":"~3.0.0","@types/form-data":"~2.5.0","@types/jest":"^24.0.16","@types/nock":"^10.0.3","@types/node":"^12.6.8","husky":"^3.0.2","jest":"^24.8.0","nock":"^10.0.6","prettier":"^1.18.2","prettier-tslint":"^0.4.2","source-map-support":"^0.5.13","ts-jest":"^24.0.2","tslint":"^5.18.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","typedoc":"^0.15.0","typescript":"^3.5.3"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ../../docs --tsconfig ./tsconfig.json --excludePrivate --mode file","camunda:deploy":"node ./lib/sample/deploy.js","camunda:create-instance":"node ./lib/sample/create-process-instances.js","camunda:worker":"node ./lib/sample/worker.js","camunda:trace":"node ./lib/sample/parallel.js"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","Opentracing","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"b3744e7a6adbb22813dd4249b6cae7eb7e03634a","readme":"# WorkIt\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\n✨Extensible worker for Node.js that works with both Zeebe and Camunda BPM platforms powered by TypeScript ✨\n\n## Motivation\n\nWe needed a framework to help us quickly build workers used to execute tasks. [Zeebe](https://zeebe.io/) provides a good fit with our stack. Until this is production ready, we are keeping the [Camunda Bpm](https://camunda.com/products/bpmn-engine/). Indeed, Zeebe is in developper preview. In order to make the transition smoother, we use this package. We can experiment and choose the Camunda platform we want without rewritting our business logic.\n\nThis package can be useful because:\n\n-   At this moment, Zeebe doesn't provide all BPMN components. Zeebe is new and some unexpected bugs can appear during development so we can easily revert back to the the former platform if an issue was to rise.\n-   Instead of depending directly from a Camunda client, this project provides an abstraction layer. This way it’s easier to change the client or to make your own.\n-   You want to have a worker standardization.\n-   Uniformisation. Indeed, you can use both platforms depending project needs.\n-   Added features like automated tracing.\n-   This package enforce feature parity between Zeebe and Camunda BPM through the client libraries. Some features exposed to the Camunda BPM platform are not presents in this package because we couldn't provide them if we switch to Zeebe. This limitation is to guide developers to prepare migration.\n\n## Quickstart\n\n[Get started in 2 minutes](.docs/WORKER.md).\n\n## Documentation\n\n-   [.docs](.docs/) contains written documentation\n-   Comprehensive API documentation is available [online](https://villedemontreal.github.io/workit/) and in the `docs` subdirectory\n\n## Installing\n\n```bash\nnpm i workit-camunda\n```\nor using the generator below\n### Yo!\n\nThis generator will help you during your development with this library. It provides handy tools.\n\n```bash\nnpm i -g workit-cli\n```\n\n#### Install a fresh new project\n\n```bash\nworkit init\n```\n#### Generate tasks from your existing BPMN\n\n```bash\nworkit create task --file /your/path.bpmn\n```\n\n#### Generate new task\n\n```bash\nworkit create task\n```\n\n## How to use\n\nSwitching between Zeebe and the bpmn platform is easy as specifying a `TAG` to the IoC.\n\n### Run worker\n\n```javascript\nconst worker = IoC.get<Worker>(CORE_IDENTIFIER.worker, TAG.camundaBpm); // or TAG.zeebe\n\nworker.start();\nworker.run();\n```\n\n### Deploy a workflow\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nconst fullpath = `${process.cwd()}/sample/BPMN_DEMO.bpmn`;\nawait manager.deployWorkflow(fullpath);\n```\n\n### Get workflows\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.getWorkflows()\n```\n\n### Get a workflow\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.getWorkflow({ bpmnProcessId: \"DEMO\" });\n```\n\n### Update variables\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.updateVariables({ \n    processInstanceId: \"5c50c48e-4691-11e9-8b8f-0242ac110002\",\n    variables: { amount: 1000 }\n});\n```\n\n### Publish message\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.publishMessage({\n    correlation: {},\n    name: \"catching\",\n    variables: { amount: 100 },\n    timeToLive: undefined, // only supported for Zeebe\n    messageId: \"5c50c48e-4691-11e9-8b8f-0242ac110002\"\n});\n```\n\n### Create workflow instance\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.createWorkflowInstance({\n    bpmnProcessId: \"MY_BPMN_KEY\",\n    variables: {\n        hello: \"world\"\n    }\n});\n```\n\n### Cancel workflow instance\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.cancelWorkflowInstance(\"4651614f-4b3c-11e9-b5b3-ee5801424400\");\n```\n\n### Resolve incident\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.resolveIncident(\"c84fce6c-518e-11e9-bd78-0242ac110003\");\n```\n\n### Define tasks (your bpmn activities)\n\nYou can define many tasks to one worker. It will handle all messages and will route to the right tasks.\n\n```javascript\nexport class HelloWorldTask extends TaskBase<IMessage> {\n  // You can type message like IMessage<TBody, TProps> default any\n  public execute(message: IMessage): Promise<IMessage> {\n      const { properties } = message;\n      console.log(`Executing task: ${properties.activityId}`);\n      console.log(`${properties.bpmnProcessId}::${properties.processInstanceId} Servus!`);\n      // put your business logic here\n      return Promise.resolve(message);\n  }\n}\n\n\nenum LOCAL_IDENTIFIER {\n    // sample_activity must match the activityId in your bpmn\n    sample_activity= 'sample_activity'\n}\n\n// Register your task\nIoC.bindTo(HelloWorldTask, LOCAL_IDENTIFIER.sample_activity);\n\n```\nYou can even make complex binding like\n```javascript\nIoC.bindTask(HelloWorldTaskV2, LOCAL_IDENTIFIER.activity1, { bpmnProcessId: BPMN_PROCESS_ID, version: 2 });\n```\n\n[See documentation](.docs/WORKER.md)\n\nIf you have installed `workit-cli`, you can do `workit create task` \nand everything will be done for you.\n\n### Worker life cycle and events\n\n```javascript\nconst worker = IoC.get<Worker>(CORE_IDENTIFIER.worker, TAG.zeebe); // or TAG.camundaBpm\n\nworker.once('starting', () => {\n    // slack notification \n});\n\nworker.once('stopping', () => {\n    // close connections\n});\n\nworker.once('stopped', () => {\n    // slack notification\n});\n\nconst handler = worker.getProcessHandler();\n\nhandler.on('message', (msg: IMessage) => {\n    // log/audit\n});\n\nhandler.on('message-handled', (err: Error, msg: IMessage) => {\n    if (err) {\n        // something wrong\n    } else {\n        // everything is fine\n    }\n});\n\nworker.start();\nworker.run(); // Promise\nworker.stop(); // Promise\n```\n\n### Interceptors\n\n```javascript\nconst workerConfig = {\n  interceptors: [\n    async (message: IMessage): Promise<IMessage> => {\n      // do something before we execute task.\n      return message;\n    }\n  ]\n};\n\nIoC.bindToObject(workerConfig, CORE_IDENTIFIER.worker_config);\n```\n\n### Open-telemetry\nWorkIt will integrate Open-telemetry in order to provide instrumentations to developers. In the meantime, we use [Opencensus](https://github.com/census-instrumentation/opencensus-node). By default, we bound a `NoopTracer` but you can provide your own and it must extend [CoreTracer class](https://github.com/census-instrumentation/opencensus-node/blob/master/packages/opencensus-core/src/trace/model/tracer.ts).We strongly recommand to use this kind of pattern in your task: [Domain Probe pattern](https://martinfowler.com/articles/domain-oriented-observability.html#DomainProbesEnableCleanerMore-focusedTests). But here an example:\n\n```javascript\n// Simply bind your custom tracer object like this\nIoC.bindToObject(tracer, CORE_IDENTIFIER.tracer);\n```\n\n```javascript\nexport class HelloWorldTask extends TaskBase<IMessage> {\n  private readonly _tracer: TracerBase;\n    \n  constructor(tracer: TracerBase) {\n        this._tracer = tracer\n  }\n\n  public async execute(message: IMessage): Promise<IMessage> {\n      const { properties } = message;\n      \n      console.log(`Executing task: ${properties.activityId}`);\n      console.log(`${properties.bpmnProcessId}::${properties.processInstanceId} Servus!`);\n      message.body.test = true;\n      // This call will be traced automatically\n      const response = await axios.get('https://jsonplaceholder.typicode.com/todos/1');\n      \n      // you can also create a custom trace like this :\n      const span = this._tracer.startChildSpan({ name: 'customSpan', kind: SpanKind.CLIENT });\n      \n      console.log();\n      console.log('data:');\n      console.log(response.data);\n      // put your business logic here\n\n      // finish the span scope\n      span.end();\n      \n      return Promise.resolve(message);\n  }\n}\n```\nYou can look to `sample` folder where we provide an example (parallel.ts) using [Jaeger](https://www.jaegertracing.io/docs/latest/).\n\n[See get started section with Opencensus](.docs/WORKER.md#add-traces-to-your-worker-with-opencensus)\n\n### Define your config for each platform\n\n```javascript\nconst configBase: ICamundaConfig = {\n    workerId: 'demo',\n    baseUrl: `__undefined__`,\n    topicName: 'topic_demo'\n};\n\n// For Camunda BPM platform\nconst bpmnPlatformClientConfig = { ...configBase, baseUrl: 'http://localhost:8080/engine-rest',  maxTasks: 32, autoPoll: false, use: [] };\n\nIoC.bindToObject(bpmnPlatformClientConfig, CORE_IDENTIFIER.camunda_external_config);\n\n// For Zeebe platform\nconst zeebeClientConfig = { ...configBase, { baseUrl: 'localhost:2650', timeout: 2000 };\n\n// Zeebe exporter (Elasticsearch instance)\nconst zeebeElasticExporterConfig = {\n    url: `http://localhost:9200`,\n};\n\nIoC.bindToObject(zeebeClientConfig, CORE_IDENTIFIER.zeebe_external_config);\nIoC.bindToObject(zeebeElasticExporterConfig, CORE_IDENTIFIER.zeebe_elastic_exporter_config)\n```\n[See documentation](.docs/CONFIG.md)\n\n### Define your strategies in case of failure or success\n\nBy default, we define simple strategy for sucess or failure. \nWe strongly recommend you to provide yours as your app trigger specific exceptions.\nStrategies are automatically handled.\nIf an exeption is bubble up from the task, failure strategy  is raised, otherwise it's success.\n\n```javascript\nTODO: PROVIDE SAMPLE\n```\n\n## Running the tests\n\n```bash\nnpm test\n```\n\n## Built With\n\n*   [zeebe-node](https://github.com/CreditSenseAU/zeebe-client-node-js) - nodejs client for Zeebe\n*   [camunda-external-task-client-js](https://github.com/camunda/camunda-external-task-client-js) - nodejs client for Camunda BPM\n*   [inversify](https://github.com/inversify/InversifyJS) - Dependency injection\n*   [openCensus](https://opencensus.io/) - add instrumentation to the operations to be tracked (coming soon [open-telemetry](https://github.com/open-telemetry/opentelemetry-js))\n\n## Philosophy\n\n1.  Allow Javascript developers to write code that adheres to the SOLID principles.\n2.  Facilitate and encourage the adherence to the best OOP and IoC practices.\n3.  Add as little runtime overhead as possible.\n\n## Kubernetes\n\n### Zeebe\n\n```bash\nkubernetes/run\n```\n\n## Docker\n\n### Zeebe\n\nIn your terminal\n```bash\ndocker/run\n```\n### Bpmn platform\n```bash\ndocker run -d --name camunda -p 8080:8080 camunda/camunda-bpm-platform:latest\n// Go: http://localhost:8080/camunda - user/password : `demo/demo`\n```\n[More details](https://github.com/camunda/docker-camunda-bpm-platform)\n\n## TODO\n<details>\n<summary>Click to expand</summary>\n\n-   Add tests\n-   Improve docs\n-   Make sample and confirm compatibility with DMN\n-   Adding a common exception error codes between Manager clients\n-   Add metrics by using prometheus lib\n-   Questionning about spliting this project in 4 parts (core-camunda-message, core-camunda-engine-client-lib, core-zeebe-engine-client-lib, core-camunda-client-lib)\n    - Dependencies would be \n        - core-camunda-message -> core-camunda-engine-client-lib\n        - core-camunda-message -> core-zeebe-engine-client-lib\n        - core-camunda-client-lib, core-zeebe-engine-client-lib or core-camunda-engine-client-lib  -> app\n</details>\n\n## Versionning\n\nWe use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/VilledeMontreal/workit/tags).\n\nworkit-camunda | Zeebe | Camunda BPM\n-- | -- | -- \n2.2.0 | 0.20.x | 7.6 to latest\n2.1.0 | 0.19.x | 7.6 to latest\n2.0.1 | 0.18.x | 7.6 to latest\n< 1.0.0 | <= 0.17.0 | 7.6 to latest\n\n## Maintainers\n\n*   **Olivier Albertini** - *Initial work* - [Ville de Montréal](https://github.com/VilledeMontreal)\n\nSee also the list of [contributors](CONTRIBUTORS.md) who participated in this project.\n\n## Contributing\n\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details\n\n## Acknowledgments\n\n*   [Josh Wulf](https://github.com/jwulf) - zeebe-node inspired me during `workit-cli` development\n","readmeFilename":"README.md","_id":"workit-camunda@3.0.0-alpha.3","_nodeVersion":"10.9.0","_npmVersion":"6.10.2","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-JyKRGV9bEUGyARSPXUZ+r+ShRbLlv5bSq2cNffSwLJf5bTyF0ThfD2YwHs963ncC4tW1BQJCIZ2N9tyCjzqtRA==","shasum":"e82835c2da13d24cb5413ee715d833dcac8c89e7","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-3.0.0-alpha.3.tgz","fileCount":355,"unpackedSize":333988,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTdLJCRA9TVsSAnZWagAAbisP/3oh0hZia5sg5I/tG5T7\nSJyRtpvscFOe5aPhH4d9nIX4SUs9xKVxCKTu9bxv/tPz0K361rWJqPxBCpTy\n6ck3Mg8e1ZFk7PaLt4ZmTywk2C4uDGAQXWPkwrjTLKbmYATSHt0h4Dg4/lKb\n9YkO1rKF/4C+9Ta0HgaeLb+HBF7Cknttp7hjVmo2oZUxZnrSjP1yoliX/9Z2\nxmvzg0wwzzRYbEILbYxO5n9O9ASjc9D3aWpfBqOjLc5fHMSQ3r+b1/0BX1l1\nodumnQAsgYmX1+ccM4Qts99bCMXIbydFjEVLCmouexffjMtQy0MANM0eZGJ1\n948XfqBnc7g/IMFpuo8yCIdV/KjeROKxlMPBdmXK3RJ1eM8S7od4t7LEOtyy\n45ben7iqifVMYacpXRbx0LozKZkm4439oi6izsWHpPU7DfnUPyUz404DbeMk\n/TqdZCmYilrOV6HXz2NRuR+njzvfhitoq27DA5qb0dCBFR1pW1zuqU6Lalni\nJVbjsyJb3/Iu09WNUMyUmL91+pULXVsHdLNxW1EX04eHV8bA28I54FvTGfqX\nN2QCbnuvWMZcVceehG6gTQxrBr9ZMOjyXiJQRE+dM5NYS7WEI3Y1scsWRoHK\n/jjviCdSLMr/fxPyvHpp2PDjnc4O8TvKMhIbbYLWYG95lnmATfEXjtSOhDI6\nWsBU\r\n=PXO4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFIQWauT6V2vcx9JKbCA8NktxOMSBXmTQrjs4zJA7NSYAiEA03h8xNaqByYvkTU8TJQDLE4efr9Az6w//vzwq45ds8M="}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_3.0.0-alpha.3_1565381320550_0.23508553666017296"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.0.0-alpha.4":{"name":"workit-camunda","version":"3.0.0-alpha.4","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Olivier Albertini","email":"olivier.albertini@montreal.ca"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"axios":"~0.19.0","camunda-external-task-client-js":"~1.2.0","debug":"~4.1.1","fast-safe-stringify":"~2.0.6","form-data":"~2.5.0","inversify":"~5.0.1","@opencensus/core":"~0.0.16","@opencensus/exporter-jaeger":"~0.0.16","@opencensus/nodejs":"~0.0.16","reflect-metadata":"~0.1.13","zeebe-elasticsearch-client":"^0.2.0","zeebe-node":"~0.20.1","uuid":"^3.3.2"},"devDependencies":{"@types/uuid":"^3.4.5","@types/axios":"~0.14.0","@types/debug":"~4.1.4","@types/events":"~3.0.0","@types/form-data":"~2.5.0","@types/jest":"^24.0.16","@types/nock":"^10.0.3","@types/node":"^12.6.8","@commitlint/cli":"^8.1.0","@commitlint/config-conventional":"^8.1.0","husky":"^3.0.2","jest":"^24.8.0","nock":"^10.0.6","prettier":"^1.18.2","prettier-tslint":"^0.4.2","source-map-support":"^0.5.13","ts-jest":"^24.0.2","tslint":"^5.18.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","typedoc":"^0.15.0","typescript":"^3.5.3"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ../../docs --tsconfig ./tsconfig.json --excludePrivate --mode file","camunda:deploy":"node ./lib/sample/deploy.js","camunda:create-instance":"node ./lib/sample/create-process-instances.js","camunda:worker":"node ./lib/sample/worker.js","camunda:trace":"node ./lib/sample/parallel.js"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","Opentracing","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"b3744e7a6adbb22813dd4249b6cae7eb7e03634a","readme":"# WorkIt\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\n✨Extensible worker for Node.js that works with both Zeebe and Camunda BPM platforms powered by TypeScript ✨\n\n## Motivation\n\nWe needed a framework to help us quickly build workers used to execute tasks. [Zeebe](https://zeebe.io/) provides a good fit with our stack. Until this is production ready, we are keeping the [Camunda Bpm](https://camunda.com/products/bpmn-engine/). Indeed, Zeebe is in developper preview. In order to make the transition smoother, we use this package. We can experiment and choose the Camunda platform we want without rewritting our business logic.\n\nThis package can be useful because:\n\n-   At this moment, Zeebe doesn't provide all BPMN components. Zeebe is new and some unexpected bugs can appear during development so we can easily revert back to the the former platform if an issue was to rise.\n-   Instead of depending directly from a Camunda client, this project provides an abstraction layer. This way it’s easier to change the client or to make your own.\n-   You want to have a worker standardization.\n-   Uniformisation. Indeed, you can use both platforms depending project needs.\n-   Added features like automated tracing.\n-   This package enforce feature parity between Zeebe and Camunda BPM through the client libraries. Some features exposed to the Camunda BPM platform are not presents in this package because we couldn't provide them if we switch to Zeebe. This limitation is to guide developers to prepare migration.\n\n## Quickstart\n\n[Get started in 2 minutes](.docs/WORKER.md).\n\n## Documentation\n\n-   [.docs](.docs/) contains written documentation\n-   Comprehensive API documentation is available [online](https://villedemontreal.github.io/workit/) and in the `docs` subdirectory\n\n## Installing\n\n```bash\nnpm i workit-camunda\n```\nor using the generator below\n### Yo!\n\nThis generator will help you during your development with this library. It provides handy tools.\n\n```bash\nnpm i -g workit-cli\n```\n\n#### Install a fresh new project\n\n```bash\nworkit init\n```\n#### Generate tasks from your existing BPMN\n\n```bash\nworkit create task --file /your/path.bpmn\n```\n\n#### Generate new task\n\n```bash\nworkit create task\n```\n\n## How to use\n\nSwitching between Zeebe and the bpmn platform is easy as specifying a `TAG` to the IoC.\n\n### Run worker\n\n```javascript\nconst worker = IoC.get<Worker>(CORE_IDENTIFIER.worker, TAG.camundaBpm); // or TAG.zeebe\n\nworker.start();\nworker.run();\n```\n\n### Deploy a workflow\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nconst fullpath = `${process.cwd()}/sample/BPMN_DEMO.bpmn`;\nawait manager.deployWorkflow(fullpath);\n```\n\n### Get workflows\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.getWorkflows()\n```\n\n### Get a workflow\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.getWorkflow({ bpmnProcessId: \"DEMO\" });\n```\n\n### Update variables\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.updateVariables({ \n    processInstanceId: \"5c50c48e-4691-11e9-8b8f-0242ac110002\",\n    variables: { amount: 1000 }\n});\n```\n\n### Publish message\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.publishMessage({\n    correlation: {},\n    name: \"catching\",\n    variables: { amount: 100 },\n    timeToLive: undefined, // only supported for Zeebe\n    messageId: \"5c50c48e-4691-11e9-8b8f-0242ac110002\"\n});\n```\n\n### Create workflow instance\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.createWorkflowInstance({\n    bpmnProcessId: \"MY_BPMN_KEY\",\n    variables: {\n        hello: \"world\"\n    }\n});\n```\n\n### Cancel workflow instance\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.cancelWorkflowInstance(\"4651614f-4b3c-11e9-b5b3-ee5801424400\");\n```\n\n### Resolve incident\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.resolveIncident(\"c84fce6c-518e-11e9-bd78-0242ac110003\");\n```\n\n### Define tasks (your bpmn activities)\n\nYou can define many tasks to one worker. It will handle all messages and will route to the right tasks.\n\n```javascript\nexport class HelloWorldTask extends TaskBase<IMessage> {\n  // You can type message like IMessage<TBody, TProps> default any\n  public execute(message: IMessage): Promise<IMessage> {\n      const { properties } = message;\n      console.log(`Executing task: ${properties.activityId}`);\n      console.log(`${properties.bpmnProcessId}::${properties.processInstanceId} Servus!`);\n      // put your business logic here\n      return Promise.resolve(message);\n  }\n}\n\n\nenum LOCAL_IDENTIFIER {\n    // sample_activity must match the activityId in your bpmn\n    sample_activity= 'sample_activity'\n}\n\n// Register your task\nIoC.bindTo(HelloWorldTask, LOCAL_IDENTIFIER.sample_activity);\n\n```\nYou can even make complex binding like\n```javascript\nIoC.bindTask(HelloWorldTaskV2, LOCAL_IDENTIFIER.activity1, { bpmnProcessId: BPMN_PROCESS_ID, version: 2 });\n```\n\n[See documentation](.docs/WORKER.md)\n\nIf you have installed `workit-cli`, you can do `workit create task` \nand everything will be done for you.\n\n### Worker life cycle and events\n\n```javascript\nconst worker = IoC.get<Worker>(CORE_IDENTIFIER.worker, TAG.zeebe); // or TAG.camundaBpm\n\nworker.once('starting', () => {\n    // slack notification \n});\n\nworker.once('stopping', () => {\n    // close connections\n});\n\nworker.once('stopped', () => {\n    // slack notification\n});\n\nconst handler = worker.getProcessHandler();\n\nhandler.on('message', (msg: IMessage) => {\n    // log/audit\n});\n\nhandler.on('message-handled', (err: Error, msg: IMessage) => {\n    if (err) {\n        // something wrong\n    } else {\n        // everything is fine\n    }\n});\n\nworker.start();\nworker.run(); // Promise\nworker.stop(); // Promise\n```\n\n### Interceptors\n\n```javascript\nconst workerConfig = {\n  interceptors: [\n    async (message: IMessage): Promise<IMessage> => {\n      // do something before we execute task.\n      return message;\n    }\n  ]\n};\n\nIoC.bindToObject(workerConfig, CORE_IDENTIFIER.worker_config);\n```\n\n### Open-telemetry\nWorkIt will integrate Open-telemetry in order to provide instrumentations to developers. In the meantime, we use [Opencensus](https://github.com/census-instrumentation/opencensus-node). By default, we bound a `NoopTracer` but you can provide your own and it must extend [CoreTracer class](https://github.com/census-instrumentation/opencensus-node/blob/master/packages/opencensus-core/src/trace/model/tracer.ts).We strongly recommand to use this kind of pattern in your task: [Domain Probe pattern](https://martinfowler.com/articles/domain-oriented-observability.html#DomainProbesEnableCleanerMore-focusedTests). But here an example:\n\n```javascript\n// Simply bind your custom tracer object like this\nIoC.bindToObject(tracer, CORE_IDENTIFIER.tracer);\n```\n\n```javascript\nexport class HelloWorldTask extends TaskBase<IMessage> {\n  private readonly _tracer: TracerBase;\n    \n  constructor(tracer: TracerBase) {\n        this._tracer = tracer\n  }\n\n  public async execute(message: IMessage): Promise<IMessage> {\n      const { properties } = message;\n      \n      console.log(`Executing task: ${properties.activityId}`);\n      console.log(`${properties.bpmnProcessId}::${properties.processInstanceId} Servus!`);\n      message.body.test = true;\n      // This call will be traced automatically\n      const response = await axios.get('https://jsonplaceholder.typicode.com/todos/1');\n      \n      // you can also create a custom trace like this :\n      const span = this._tracer.startChildSpan({ name: 'customSpan', kind: SpanKind.CLIENT });\n      \n      console.log();\n      console.log('data:');\n      console.log(response.data);\n      // put your business logic here\n\n      // finish the span scope\n      span.end();\n      \n      return Promise.resolve(message);\n  }\n}\n```\nYou can look to `sample` folder where we provide an example (parallel.ts) using [Jaeger](https://www.jaegertracing.io/docs/latest/).\n\n[See get started section with Opencensus](.docs/WORKER.md#add-traces-to-your-worker-with-opencensus)\n\n### Define your config for each platform\n\n```javascript\nconst configBase: ICamundaConfig = {\n    workerId: 'demo',\n    baseUrl: `__undefined__`,\n    topicName: 'topic_demo'\n};\n\n// For Camunda BPM platform\nconst bpmnPlatformClientConfig = { ...configBase, baseUrl: 'http://localhost:8080/engine-rest',  maxTasks: 32, autoPoll: false, use: [] };\n\nIoC.bindToObject(bpmnPlatformClientConfig, CORE_IDENTIFIER.camunda_external_config);\n\n// For Zeebe platform\nconst zeebeClientConfig = { ...configBase, { baseUrl: 'localhost:2650', timeout: 2000 };\n\n// Zeebe exporter (Elasticsearch instance)\nconst zeebeElasticExporterConfig = {\n    url: `http://localhost:9200`,\n};\n\nIoC.bindToObject(zeebeClientConfig, CORE_IDENTIFIER.zeebe_external_config);\nIoC.bindToObject(zeebeElasticExporterConfig, CORE_IDENTIFIER.zeebe_elastic_exporter_config)\n```\n[See documentation](.docs/CONFIG.md)\n\n### Define your strategies in case of failure or success\n\nBy default, we define simple strategy for sucess or failure. \nWe strongly recommend you to provide yours as your app trigger specific exceptions.\nStrategies are automatically handled.\nIf an exeption is bubble up from the task, failure strategy  is raised, otherwise it's success.\n\n```javascript\nTODO: PROVIDE SAMPLE\n```\n\n## Running the tests\n\n```bash\nnpm test\n```\n\n## Built With\n\n*   [zeebe-node](https://github.com/CreditSenseAU/zeebe-client-node-js) - nodejs client for Zeebe\n*   [camunda-external-task-client-js](https://github.com/camunda/camunda-external-task-client-js) - nodejs client for Camunda BPM\n*   [inversify](https://github.com/inversify/InversifyJS) - Dependency injection\n*   [openCensus](https://opencensus.io/) - add instrumentation to the operations to be tracked (coming soon [open-telemetry](https://github.com/open-telemetry/opentelemetry-js))\n\n## Philosophy\n\n1.  Allow Javascript developers to write code that adheres to the SOLID principles.\n2.  Facilitate and encourage the adherence to the best OOP and IoC practices.\n3.  Add as little runtime overhead as possible.\n\n## Kubernetes\n\n### Zeebe\n\n```bash\nkubernetes/run\n```\n\n## Docker\n\n### Zeebe\n\nIn your terminal\n```bash\ndocker/run\n```\n### Bpmn platform\n```bash\ndocker run -d --name camunda -p 8080:8080 camunda/camunda-bpm-platform:latest\n// Go: http://localhost:8080/camunda - user/password : `demo/demo`\n```\n[More details](https://github.com/camunda/docker-camunda-bpm-platform)\n\n## TODO\n<details>\n<summary>Click to expand</summary>\n\n-   Add tests\n-   Improve docs\n-   Make sample and confirm compatibility with DMN\n-   Adding a common exception error codes between Manager clients\n-   Add metrics by using prometheus lib\n-   Questionning about spliting this project in 4 parts (core-camunda-message, core-camunda-engine-client-lib, core-zeebe-engine-client-lib, core-camunda-client-lib)\n    - Dependencies would be \n        - core-camunda-message -> core-camunda-engine-client-lib\n        - core-camunda-message -> core-zeebe-engine-client-lib\n        - core-camunda-client-lib, core-zeebe-engine-client-lib or core-camunda-engine-client-lib  -> app\n</details>\n\n## Versionning\n\nWe use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/VilledeMontreal/workit/tags).\n\nworkit-camunda | Zeebe | Camunda BPM\n-- | -- | -- \n2.2.0 | 0.20.x | 7.6 to latest\n2.1.0 | 0.19.x | 7.6 to latest\n2.0.1 | 0.18.x | 7.6 to latest\n< 1.0.0 | <= 0.17.0 | 7.6 to latest\n\n## Maintainers\n\n*   **Olivier Albertini** - *Initial work* - [Ville de Montréal](https://github.com/VilledeMontreal)\n\nSee also the list of [contributors](CONTRIBUTORS.md) who participated in this project.\n\n## Contributing\n\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details\n\n## Acknowledgments\n\n*   [Josh Wulf](https://github.com/jwulf) - zeebe-node inspired me during `workit-cli` development\n","readmeFilename":"README.md","_id":"workit-camunda@3.0.0-alpha.4","_nodeVersion":"10.9.0","_npmVersion":"6.10.2","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-On9oBleooSQdwPzClT0lj11TRU58OWqtPCpCJgBFG9avEjnP+YjG29OfJyN+wFWMYxClgfy+zYQHpHXDFGVkNg==","shasum":"029f11a92ecde16c7c8c85d4f696ab2bad93335b","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-3.0.0-alpha.4.tgz","fileCount":355,"unpackedSize":335106,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXCesCRA9TVsSAnZWagAAf30P/izhb0VIcyEC4uEcHM3d\n6WsBWXv5aJNUVIL4jBheiEVwSUVKBU0Lam8M97bX5EzClRNJ9AvzBG+H1K1Y\nPQtAJpvAYcRAL8pZu9RXY8FqIjim4/Gre7suMBJxjbg3+W3Qf38eBtHThAlF\n7xCFx7qTodwa1OpU+tGQmyI+Hc0dvCIGV9GU54RRM/D0sLlhDGHxCDLUmN/X\nI96Evay1cPxJVdyJ453jeUE1P0RnuxHSPtI2qVlW4thdxd2dcvTqnqA9K9O4\nTuY7YQRJAJ1m55fEG2d0qXdv57jebC5fma02eU6DBTb24qqQbikTBz68bG8I\nG0KvInxf30cTsgNAUcNneXMgiAFyMKI6y8PpPsChko0ryuCTsbhXYWfkKVhL\ntgOXR1n1oI3AHOzt4jyuPn3nN9Nnunw5Pb09dy9wZHrfZHDINnhL8ntDlhLu\na8p9Tn4IlolLHU1hi4eFRoEbg/UE8wkNELXcwBCLhcV+pdQI7xHRsCSqEn9T\nsjBFbDvTECYDeByvC3R+S04CTiX975eX67SHjcF/0sZ5ybjQPMs1psyc79w8\nXm6K/Sy4IWKMyhoV+N5BeuFRspfYVen3pF4a323zFeJH8IBKlio3uNrV/TTa\n5hwIdCrDfA1+VhhBRK7phhbudo2QDkTLgrH0KqrPLboyK/UkCnfSC+mNSkNk\n3ou4\r\n=iu46\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCztPXvevwXUsNlAzsgAd98cT/0q7wuI8TNqb50pUBvygIhAKFdx43uJqKmtcvcHCMuolQGadpIoK59RMBuzL54puJ6"}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_3.0.0-alpha.4_1566320556390_0.9575854157014689"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.1.0":{"name":"workit-camunda","version":"3.1.0","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Olivier Albertini","email":"olivier.albertini@montreal.ca"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"@opencensus/core":"~0.0.16","@opencensus/exporter-jaeger":"~0.0.16","@opencensus/nodejs":"~0.0.16","axios":"~0.19.0","camunda-external-task-client-js":"~1.2.0","debug":"~4.1.1","fast-safe-stringify":"~2.0.6","form-data":"~2.5.0","inversify":"~5.0.1","reflect-metadata":"~0.1.13","uuid":"^3.3.2","zeebe-elasticsearch-client":"^0.2.1","zeebe-node":"~0.20.1"},"devDependencies":{"@commitlint/cli":"^8.1.0","@commitlint/config-conventional":"^8.1.0","@types/axios":"~0.14.0","@types/debug":"~4.1.4","@types/events":"~3.0.0","@types/form-data":"~2.5.0","@types/jest":"^24.0.16","@types/nock":"^10.0.3","@types/node":"^12.6.8","@types/uuid":"^3.4.5","husky":"^3.0.2","jest":"^24.8.0","nock":"^10.0.6","prettier":"^1.18.2","prettier-tslint":"^0.4.2","source-map-support":"^0.5.13","ts-jest":"^24.0.2","tslint":"^5.18.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","typedoc":"^0.15.0","typescript":"^3.5.3"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --testPathIgnorePatterns integration --coverage","test:integration":"jest **/tests/**/*.spec.ts --runInBand --detectOpenHandles --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ../../docs --tsconfig ./tsconfig.json --excludePrivate --mode file","camunda:deploy":"node ./lib/sample/deploy.js","camunda:create-instance":"node ./lib/sample/create-process-instances.js","camunda:worker":"node ./lib/sample/worker.js","camunda:trace":"node ./lib/sample/parallel.js"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","Opentracing","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"bc4e3b7a717404f670fcdc6ffa421d36e9ed5a7e","_id":"workit-camunda@3.1.0","_nodeVersion":"10.9.0","_npmVersion":"lerna/3.16.4/node@v10.9.0+x64 (darwin)","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-2eUPEvMQhKVXRVE+6Ti0SITrNwjkGlcHR/kzCZpKebj8mwy0doHhu1ZFeB3bUWS1hczlzF2AXZ+Qy5uMm0YFxA==","shasum":"654ea65dfa1b1de62bfe4e0c2845f6c1b5473650","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-3.1.0.tgz","fileCount":355,"unpackedSize":334913,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXb9JCRA9TVsSAnZWagAA4fgP/j068spMKJNs9HSBBHtx\nW0tIF8g6rgi0K6ZKfbLurw+LyY+Nuw7uhbzRpQtPYsCNTczAVgCAaWdW3O1I\n4wrm4n6dEQloRSLcTStIIxoCdTYYvEUO0Uz9iPu+PFKjoTB85mx+y4vL2SvJ\ngAwO3A5oTtkBjijxPEfAZosiShud1aeASE6kkKOEaaF9hLf5QDul6dXu6U11\nY+7i/4RDmWoeyckZxQO/VapD2BxBfmdR0GApo7+4iYtJx6CGP7xMOAdYe9Lp\nSn2qylm31FqyJzHT+CY6G8C1Hi3SIaWAtuT2pzy31XrVbemb7QxtHSiFMe6w\n9g6VcTPygONyu9oYfzqKfmxLiym8DGHtLJpXYpsgBMFV3I3nJXiOgbD0y9iL\nJD6DRB+oMgOJ4DKe3A/OoBgkArX/vVfHZS2DEnrVztfeMg2qDdLrfaBpCArQ\nJnFWeHCUd1nka2w35vTwym7pD73zTENGtvq3i6cSYdLK4PgOB0yJnqHATJKd\nOw/IlHx/i3fLArah3wktlFREDhb6d/dPHiqkRMutde38y62arPUnYFv4WwZZ\nOP/lEwjTBpjaogsA1cMLkOcjZl8MyO+RULP1RdCAixfG6xmQRNrntm0qgI/4\netjG4HArXxTd5oV1X6MNwHsOBMXOZ1e9i0CHbTa7Sm0okPjgF3aAndCCUrzD\nCFor\r\n=QiMI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDL1BOgY3xBMLjcTOuWwMFLYZStPSl3Jg3X4sJy/5vLgwIhANg/9MAFue1wx2oBpQAhyhN8OGvatutF1FKPdkLGm8iI"}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_3.1.0_1566424904122_0.4215179420319677"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.2.0":{"name":"workit-camunda","version":"3.2.0","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Olivier Albertini","email":"olivier.albertini@montreal.ca"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"@opencensus/core":"~0.0.17","@opencensus/exporter-jaeger":"~0.0.17","@opencensus/nodejs":"~0.0.17","axios":"~0.19.0","camunda-external-task-client-js":"~1.2.0","debug":"~4.1.1","fast-safe-stringify":"~2.0.7","form-data":"~2.5.1","inversify":"~5.0.1","reflect-metadata":"~0.1.13","uuid":"^3.3.3","zeebe-elasticsearch-client":"^0.3.0","zeebe-node":"0.20.1"},"devDependencies":{"@commitlint/cli":"^8.1.0","@commitlint/config-conventional":"^8.1.0","@types/axios":"~0.14.0","@types/debug":"~4.1.5","@types/events":"~3.0.0","@types/form-data":"~2.5.0","@types/jest":"^24.0.18","@types/nock":"^10.0.3","@types/node":"^12.7.5","@types/uuid":"^3.4.5","husky":"^3.0.5","jest":"^24.9.0","nock":"^10.0.6","prettier":"^1.18.2","prettier-tslint":"^0.4.2","source-map-support":"^0.5.13","ts-jest":"^24.1.0","tslint":"^5.20.0","tslint-config-airbnb":"^5.11.1","tslint-config-prettier":"^1.18.0","tslint-microsoft-contrib":"^6.2.0","typedoc":"^0.15.0","typescript":"^3.6.3"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --testPathIgnorePatterns integration --coverage","test:integration":"jest **/tests/**/*.spec.ts --runInBand --detectOpenHandles --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ../../docs --tsconfig ./tsconfig.json --excludePrivate --mode file","camunda:deploy":"node ./lib/sample/deploy.js","camunda:create-instance":"node ./lib/sample/create-process-instances.js","camunda:worker":"node ./lib/sample/worker.js","camunda:trace":"node ./lib/sample/parallel.js"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","open-telemetry","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"ac45a3548fd551575b9d3d41477e2d00ab96e48e","_id":"workit-camunda@3.2.0","_nodeVersion":"10.9.0","_npmVersion":"lerna/3.16.4/node@v10.9.0+x64 (darwin)","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-FU8lrK7UNkc0eVGGLAb93VT1AzNWxEv9/tPRAw898pVGOnEo/6o9aaCLO8j8dIkoCjxrDgKAT7apct2EPiCi2w==","shasum":"31c948a15c918605df03a11b911e85f15f5c2cf8","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-3.2.0.tgz","fileCount":349,"unpackedSize":327481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdfQ+lCRA9TVsSAnZWagAADX0P/j5EYP0/GZ+ytC9o29If\nGibkSBfQpJNQEFo+/r8F00hEHfMtqGu+XVhfgKYqYIE1Tdns6ZH36698t/jr\nGGe0ik9iZ/jSwczaE87muIlRXBBtAWD/RpRUnCAG3exfYEUXtvhac530CPYi\n88piuvE5h4miWmi4hrWReUMkUD3w83hXHvNzN5U0zVcaRisCJwpV4B+uZSMU\nZVh1IwjpB/5IUlVPAP/3DAZeDOOeKOIqOAIeXU/Ulu6gDfPqscsZoZHcxynj\nTVyoM6P4TzvV5GEdgqx4pzSMV8kmGD1DSeZ2JO9kxEl1CLEJduqQVCWqnHUA\n4zGGLsrno3uDeeu+w/bZpORlXjgjSSknL3P1muFciS9wSJsXWqjpxuhpinc9\nfaFZgeNF/H98eqND0q2t9sVVNxI4KizQFcAVOdTnQBODdeKZVmHmFiBFg9SP\ntnwXlGZYfKdVen57JDIJvt/+lbPv04VXOSOZ6ECypAGyaHI0Z10cgAbMlCe1\nzBWFUxsyPw3mb9MNqGYXi2WomNU7jYXiAmLgQxdWjO5R2ajpt7GhowjoWMwU\nGjsGMujiye3QSra2K5cTjqObT24BKE+/tatTYu4Pw3xsK+gbJEQtFBaUxq0a\ngR4CnRBucsQ2qS8py9ils5OBiSL0vjqumm+c1mutZ2bkyLGi7Z59PpAca+7B\nwnXh\r\n=1ubC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGsXIyMvOBK26469MRD2U7VkioGBFHZr3JfbE5+jjqyLAiBHnBHqOInB5/Wcvr6OcXZZv63WS1C7xAN3NFFFbX90Wg=="}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_3.2.0_1568477092526_0.5475114659237743"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.0":{"name":"workit-camunda","version":"4.0.0","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Olivier Albertini","email":"olivier.albertini@montreal.ca"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"camunda-external-task-client-js":"^1.3.0","debug":"~4.1.1","inversify":"~5.0.1","reflect-metadata":"~0.1.13","workit-bpm-client":"^4.0.0","workit-core":"^4.0.0","workit-types":"^4.0.0","workit-zeebe-client":"^4.0.0"},"devDependencies":{"@commitlint/cli":"^8.2.0","@commitlint/config-conventional":"^8.2.0","@opentelemetry/core":"~0.3.1","@types/chai":"^4.2.7","@types/debug":"~4.1.5","@types/events":"~3.0.0","@types/jest":"^24.0.25","@types/nock":"^10.0.3","@types/node":"^13.1.2","axios":"^0.19.0","chai":"^4.2.0","husky":"^3.1.0","jest":"^24.9.0","nock":"^10.0.6","prettier":"^1.19.1","prettier-tslint":"^0.4.2","source-map-support":"^0.5.16","ts-jest":"^24.2.0","tslint":"^5.20.1","tslint-config-airbnb":"^5.11.2","tslint-config-prettier":"^1.18.0","tslint-consistent-codestyle":"^1.16.0","tslint-microsoft-contrib":"^6.2.0","typedoc":"^0.15.6","typescript":"^3.7.4"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --testPathIgnorePatterns integration --coverage","test:integration":"jest **/tests/**/*.spec.ts --runInBand --detectOpenHandles --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ./docs --tsconfig ./tsconfig.json --excludePrivate --mode file"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","open-telemetry","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"a122cb022d456027da28874b789616ebd0cb2284","_id":"workit-camunda@4.0.0","_nodeVersion":"10.9.0","_npmVersion":"lerna/3.15.0/node@v10.9.0+x64 (darwin)","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-+cO0fm9CFVYoxNDPNAmPFIxWRWHSiBQgJcU/p38FwkBKvDiFwkP7jTXJaJpo1rYSpysyqM3ucncsW0aXDVLEXA==","shasum":"9c47cde79cd80b40d586c4a59eb3b3997b500fc3","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-4.0.0.tgz","fileCount":349,"unpackedSize":341974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeC6WsCRA9TVsSAnZWagAA168P/3aE3Di3CGQQ9SMMig1N\nI3cickBSlECUaCWLhj0Jw8wEHDmZNzgQfLnpQwG1q6dfwN1oa/Nk09l9+2ee\npQtPy3BqOCxtx4Gq7Sk3jo3a4/ZCwK0ZBeJVrH75P8G+dsbtNbGYRx94UOcz\np4XGBSBxUlY9IhVvE/4DHDqtXwj2weGhbpJ8C+re5ILgMHPaH5E8SDR0GGLJ\nYW6Ew4w/kdQ6RXZoK+r3psJGIZW26uFTm2BPbKfPeB9CFLsCuVKqHeLNz5tx\nTzwdvxSi1KnG+/3uT39h/3cmY46XVYG78gsv0t3ySacqHlkncCN8HQP+4rgs\n76h64jYzTapIj+gZCIui2T1q8JNNkMvdx+/xtYTU1um0cIZHZSnBWtKDyW7+\ndpy7e5QUpTO8U7Ak51oJglephjcaA2zErE+ETmpupUk4SR2xZf3EZUNMdzNk\nTNw77LpHKM4H+6sqce4DzNXn7cQUC0mymeErhVpB0QKzTxsmm5MqDigF2WwY\nN0B1r4DgzGKYke04ToiKyN0S+GICgoiDXjM8mxTmsAPWJvfWg/MqOTEyjoaM\nXm4M6ICEe+QwiSZZnlxPJB7SrrtkSCyxjtLvfdS5Oa9NJcbE/5YST4T/Pa9d\nMm7dBq1VvGHiQLPTUspKXQJi0xiYHZGOExdKZKpTuaGR7/LUBoMEx2JfZLzZ\njXQi\r\n=BJdx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDLKpXqycH5WQ5zHCh+tvdVGZjT2V/gRpD0LmmVqDKDEAiBGCt9T/g6ZhVqgXjYnHwz5bQAaR1anXFxiYqs10CbgtA=="}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_4.0.0_1577821611553_0.9403701066786292"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.2":{"name":"workit-camunda","version":"4.0.2","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Olivier Albertini","email":"olivier.albertini@montreal.ca"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"camunda-external-task-client-js":"^1.3.0","debug":"~4.1.1","inversify":"~5.0.1","reflect-metadata":"~0.1.13","workit-bpm-client":"^4.0.2","workit-core":"^4.0.2","workit-types":"^4.0.2","workit-zeebe-client":"^4.0.2"},"devDependencies":{"@commitlint/cli":"^8.2.0","@commitlint/config-conventional":"^8.2.0","@opentelemetry/core":"~0.3.1","@types/chai":"^4.2.7","@types/debug":"~4.1.5","@types/events":"~3.0.0","@types/jest":"^24.0.25","@types/nock":"^10.0.3","@types/node":"^13.1.2","axios":"^0.19.0","chai":"^4.2.0","husky":"^3.1.0","jest":"^24.9.0","nock":"^10.0.6","prettier":"^1.19.1","prettier-tslint":"^0.4.2","source-map-support":"^0.5.16","ts-jest":"^24.2.0","tslint":"^5.20.1","tslint-config-airbnb":"^5.11.2","tslint-config-prettier":"^1.18.0","tslint-consistent-codestyle":"^1.16.0","tslint-microsoft-contrib":"^6.2.0","typedoc":"^0.15.6","typescript":"^3.7.4"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --testPathIgnorePatterns integration --coverage","test:integration":"jest **/tests/**/*.spec.ts --runInBand --detectOpenHandles --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ./docs --tsconfig ./tsconfig.json --excludePrivate --mode file"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","open-telemetry","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"514e03140dd2f611959d3cc367563ea722831bd2","_id":"workit-camunda@4.0.2","_nodeVersion":"10.9.0","_npmVersion":"lerna/3.20.1/node@v10.9.0+x64 (darwin)","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-T4RuuQq3hZ48hWTywFSliUUmvxFUPq7Xx+bREPqiXrgc7l9HTybk8u4j0wSy7kTisEV5NGLXUGY9Q0zNN8B2wQ==","shasum":"21a567b1c4e2b97516c5623fbc207c42af9a569d","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-4.0.2.tgz","fileCount":41,"unpackedSize":359943,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeC6rTCRA9TVsSAnZWagAAHaQP/0aqY3tLc9GHCwN2Sdsp\nvRgLtov2hgSrQsJR7btamyk7BfBgAiOR7UFSmPoMzbmWWiYYeRpaD3P99J7p\nQOZ6BSGfYcy13jwr4x33uT6J8tSmhMMNeIZYt+48p0k6zlJnIWOyZ4hOXOS1\nvJpj0fO0S41UVYFOQFAjUTZOcjpZzBVn5CGsPrlmpcAhFKk+Y+sOvl5ed+Xr\nksAbDWJ+6R9V1F7CFWyg+1w047W1s0V+M1pJvgka3T7y5RFkFcZ/sjYrE6WU\nm0KCcqS7+oYAODT7idkK0X3bj03c2RSkZ+x8wa0pvu+0LNsgBH2M59KkGxUy\nTUpwgCepHOZ123Qi2gLCS3GXgljRX7nbrm9Z21m6Y9CyYKKPkRzAgyqm/bEp\nTUXczyH/irT8XDdCk+OMEiyReFNKDNebecJ9u4t/UKrRlSNA46uKAO9iIjvs\nQiTalhjWSnTT7+VXahdXt7NZ+685hzznOhqourDHm13TFmv7fbVu4Tividl/\nDVr0AYThqa5p6mS9EmPr7FE0SFUKjA7YzsPff0USPrRQM4vKokLH9peFlavr\nRHjmCIVYWYa8ZIClLXGz9oJpR9zqz80GNNoskYZssC+0uxZS07nqfzyrLODM\n/wR2bGnPcwCnP8dxh0OeByeJBmbmVtrKT0oLwjE5bCGwmvwAiXePNZ2Wg467\n/up9\r\n=dP8u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG6+bAqFhQATki4mFPnvg2ukQ9wvHqvJF6QkXYTIZscoAiEA17398IscHFJZWyPdRJVuLWLyiy1YTcmngLh242V5XNg="}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_4.0.2_1577822930975_0.7490692080059373"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.3":{"name":"workit-camunda","version":"4.0.3","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Olivier Albertini","email":"olivier.albertini@montreal.ca"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"debug":"~4.1.1","inversify":"~5.0.1","reflect-metadata":"~0.1.13","workit-bpm-client":"^4.0.3","workit-core":"^4.0.3","workit-types":"^4.0.3","workit-zeebe-client":"^4.0.3"},"devDependencies":{"@commitlint/cli":"^8.2.0","@commitlint/config-conventional":"^8.2.0","@opentelemetry/core":"0.3.3","@types/chai":"^4.2.7","@types/debug":"~4.1.5","@types/events":"~3.0.0","@types/jest":"^24.0.25","@types/nock":"^10.0.3","@types/node":"^13.1.6","axios":"^0.19.0","chai":"^4.2.0","husky":"^3.1.0","jest":"^24.9.0","nock":"^10.0.6","prettier":"^1.19.1","prettier-tslint":"^0.4.2","source-map-support":"^0.5.16","ts-jest":"^24.2.0","tslint":"^5.20.1","tslint-config-airbnb":"^5.11.2","tslint-config-prettier":"^1.18.0","tslint-consistent-codestyle":"^1.16.0","tslint-microsoft-contrib":"^6.2.0","typedoc":"^0.16.0","typescript":"^3.7.4"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --testPathIgnorePatterns integration --coverage","test:integration":"jest **/tests/**/*.spec.ts --runInBand --detectOpenHandles --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ./docs --tsconfig ./tsconfig.json --excludePrivate --mode file"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","open-telemetry","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"bf80f4b03cc4f2768e1d0ce48fbe37063c3178bd","_id":"workit-camunda@4.0.3","_nodeVersion":"10.9.0","_npmVersion":"lerna/3.20.1/node@v10.9.0+x64 (darwin)","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-hpaJN1AWVrU0fxhUsyZFPhtwOFyK6a4FnXcFhoRhVw3QVx5O/SA20w1Zu032Zz3o3NEqQrTu5WQ9GmnsY0Z21g==","shasum":"f44ba5225804b2d1563968c585edb39eeb58891f","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-4.0.3.tgz","fileCount":41,"unpackedSize":365491,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeK1bqCRA9TVsSAnZWagAA3hIQAII7T/76n9ijEIuAEz2X\nRopW71qpD8tzVKvD3GLg6rCqh2O/I+uEGlHQU8sil7KykQ4kXPUxnWgK0dhe\ne8X8wnWId0PlsEnFSaGM+Azqb+GzeMsODN+dKf9nsbq22uaxM14AB8KUmGJn\nglOUQN68998Wh4Bqm8u2XlhL5RZyyoyIsSZybqHm51mqaV1rsUVga1p92pMN\nK3OaXb8WOcOj/Sx186zK04qWHtYSdKbDnsvfdRALEF4KFvY7SIJExiuCg7SA\nLUC6RccN7zpPnfhcik96kag6mwDdi8NQqXmacEUXSLaTjBAfZCaEoPFhz+Jp\n8CqPD9PangylH7+jmzewXGJD8IdO6AO7fx8MVWaFRUgceMQailyox3Jh6w1u\nZA+P5OOWf2o5+XA6DpRjtcMYAeqrqPfR+9Z3gCiANU5mjG3jOWvYdZK7lxFs\nPf1w1yYBsGRCTLbXAWHUomKK37jwY53QPDwfNZK4ZgPtSYmASd1+2himtnAp\n08K8JjQX25RxRl2HNtZwviCUwiuh9FxIDr0VwZCsXcGnazpiDP9bKgMdu8Hl\n7oPtu9oTg6Fc9rKEZrpSpNAzFifSqYnRHHtS2rQdz0wQjd4a9/bgyl6fkB11\n3PLIVDTXMaSnnf9J2d4DZU+NaXAILwMmQTpArUJ9lRHsf0rjRihcyTmQtW/7\nIqJU\r\n=8nMb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF+HJdCMS5KMH3mK2C619L8z67arH6ojpa319qRVpgoQAiB+RdBZ2+cvT1dGR0JboteKplV/T34w4743ttsXwx+nKA=="}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_4.0.3_1579898602124_0.05625370145378872"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.4":{"name":"workit-camunda","version":"4.0.4","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Montreal City Authors"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"debug":"~4.1.1","inversify":"~5.0.1","reflect-metadata":"~0.1.13","workit-bpm-client":"^4.0.4","workit-core":"^4.0.4","workit-types":"^4.0.4","workit-zeebe-client":"^4.0.4"},"devDependencies":{"@commitlint/cli":"^8.2.0","@commitlint/config-conventional":"^8.2.0","@opentelemetry/core":"0.3.3","@types/chai":"^4.2.7","@types/debug":"~4.1.5","@types/events":"~3.0.0","@types/jest":"^25.1.1","@types/nock":"^10.0.3","@types/node":"^13.1.6","axios":"^0.19.0","chai":"^4.2.0","codecov":"^3.6.2","husky":"^3.1.0","jest":"^24.9.0","nock":"^10.0.6","prettier":"^1.19.1","prettier-tslint":"^0.4.2","source-map-support":"^0.5.16","ts-jest":"^25.1.0","tslint":"^5.20.1","tslint-config-airbnb":"^5.11.2","tslint-config-prettier":"^1.18.0","tslint-consistent-codestyle":"^1.16.0","tslint-microsoft-contrib":"^6.2.0","typedoc":"^0.16.9","typescript":"^3.7.4"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --testPathIgnorePatterns integration --coverage","test:all":"jest **/tests/**/*.spec.ts --runInBand --detectOpenHandles --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ./docs --tsconfig ./tsconfig.json --excludePrivate --mode file","codecov":"codecov -f coverage/*.json -p ../../"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","open-telemetry","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"7a025368a6abae730671d14ffe882e5062b9f169","_id":"workit-camunda@4.0.4","_nodeVersion":"10.9.0","_npmVersion":"lerna/3.20.1/node@v10.9.0+x64 (darwin)","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-X6MXcXBweqqghB+8BP1P2TeY5CAGS36gb4QaDUDQVm1NI4gaUMIYkW2CIg2xfZvBFBuPIi4af1mNt5iSIzHa2Q==","shasum":"d1b66cdfe32d9c7b54010d6ed6fdb22c9241c9e2","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-4.0.4.tgz","fileCount":28,"unpackedSize":47280,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOtpLCRA9TVsSAnZWagAACigP/3zl6cDpXUbpPE/evHil\nI1r4swmEmd6SaAb8plKLRTt8qJm32RI7pKcx3biDbiAxFpXPFKa1SqbyYbeu\n7e3aeE8ZvCy2qlMDkB7w9YYN7/Br04vqq+0ALS7+XafY7JdFmOzM0LAl7grv\nEni2srcLWyqyzEK9gGV2QFJsj3eUMdu7CHLStmyYZ/np6WV4tQaoC1w21tfR\nnvQbL3L0aQup29vymPc1oHQCVRhntsShdfDBrXGDpVV3pEuysx31xO3Q3lpT\nhK/4jxvw5IKCt8WwsR/4ga+BFX4DdQ+D+7QtoXH37L0sII+Afw4C9DeEwsER\nGZEk4k5VDesT/R8HkpiGCniBoNAYcZ55bBG0/o95UtKlmCctBTzqLHs2IQhb\n7ewlkONhKsXSbR1BwKSpYylFQBohi1BRjMWotJoj5B0yjmI86lM2HlN1etzf\n3RnAOd6JoAI6YAn9kldACSsDkvyiOLzAGLHZtHlraA+gHaKAnrkMx5P2TFtW\nJIFWcALapXp/ykQoydRurQ6ksozy2aWtmSg3RFyZHA0u4TIVmDhnVUX7TIko\nsgI6rfgDyaxcrHt+c2FOVJbfKx+M0G/xBqm2zh1QZoNldayvSCDr0epcCErL\n0QHNQr0NLwAqpm3TEnR3gXHaxYuYgEuKaDjU4sQ9PAsfeLL+NlgSj7J4qhyH\n16w2\r\n=8SEi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEcptrFdVxnoBo9OCArV9vLw0fn7LCkCRQHLgSw5pCHAAiAIwGFtxUVD6NA7PMfJbmhSnfgXB5ZXONK2tpylJvbNTg=="}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_4.0.4_1580915275344_0.9648932943728112"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.1.0":{"name":"workit-camunda","version":"4.1.0","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Montreal City Authors"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"debug":"~4.1.1","inversify":"~5.0.1","reflect-metadata":"~0.1.13","workit-bpm-client":"^4.1.0","workit-core":"^4.1.0","workit-types":"^4.1.0","workit-zeebe-client":"^4.1.0"},"devDependencies":{"@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4","@opentelemetry/core":"0.4.0","@types/chai":"^4.2.9","@types/debug":"~4.1.5","@types/events":"~3.0.0","@types/jest":"^25.1.2","@types/nock":"^10.0.3","@types/node":"^13.7.1","axios":"^0.19.2","chai":"^4.2.0","codecov":"^3.6.5","husky":"^4.2.3","jest":"^25.1.0","nock":"^10.0.6","prettier":"^1.19.1","prettier-tslint":"^0.4.2","source-map-support":"^0.5.16","ts-jest":"^25.2.0","tslint":"^5.20.1","tslint-config-airbnb":"^5.11.2","tslint-config-prettier":"^1.18.0","tslint-consistent-codestyle":"^1.16.0","tslint-microsoft-contrib":"^6.2.0","typedoc":"^0.16.9","typescript":"^3.7.4"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --testPathIgnorePatterns integration --coverage","test:all":"jest **/tests/**/*.spec.ts --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"tslint --project ./tsconfig.json && prettier -l \"src/**/*.ts\"","lint-fix":"tslint --project ./tsconfig.json --fix && prettier \"src/**/*.ts\" --write","docs":"typedoc --out ./docs --tsconfig ./tsconfig.json --excludePrivate --mode file","codecov":"codecov -f coverage/*.json -p ../../"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","open-telemetry","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"8d3fd8f8855f3c8ed7b6e028e09ba0459b9bebe7","_id":"workit-camunda@4.1.0","_nodeVersion":"12.14.1","_npmVersion":"lerna/3.20.2/node@v12.14.1+x64 (darwin)","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-ab6L/in/OlSzX+lenDyMK6fGeI5vE/jX5R78WeyhyxuAao/QKj/hjgb85R5Ex/Si1EagreM+yeNdgzFRDtmsig==","shasum":"38751d56f5cd12233a18c1e54acc6e6d8b2b65ef","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-4.1.0.tgz","fileCount":28,"unpackedSize":50962,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeanBgCRA9TVsSAnZWagAA24QP/RMjquEzdFxeGr+nR4Mi\nRNSxxz1N8JHB5DyuM0t03m9K5willh51Ny8Tu9+SU96PzhglZHldXMIA4F7o\nPDil5IqkJ3+6T4fnZ4ygTZyNhbaiMzF9yKgCrF62cmymLLHa5r9oIywkc+NB\noNR3vqFEn57hFWADr2pm8py2ZrkIVgg8wfHo5w00AbJavET3kAUZ+Ww0PEK1\nTb2z0xaNXR1OZnuhgw831memcj4408CFqZyV84D3ZUf24vidufQkY4Igsps+\n7VtSX1ogXzQfQYbPCg5iP30xdJXuSudYIR3mKTjPwSHigvoxb7LPXYn9H7Xa\n79MSmElPEbme8JMggeFtu4OdXxB1+WdiUrUekik3D6GOZgVsoGtCYBKlIDdE\nBNZ0pQU9IpS5vDh5LnTugRQrfGtWc1Wok1YbVCiXoLEAG4l0b7RelQSfzzcX\nnXj0MpkcpqIesLqSnzFGn98aYRHObjW5ashSBu10KAU+ruGBudJ1wEdADE+U\nbI40CgSrT3NPA61P+KoiV+/6eDUd9pUZ1VTyMRz6N5f0xSvcxaEQS1TAuVPw\nuJfyRipSXX1nrpsIzK3jzebDfsurnqwlcG3ksds1HSH1VgCDPzcvflM+KyPL\nHTgkS93C+aSh6dm3NPOesfAf9a2Ke8fv+rQ/k97G6k8RN7avuYG55J6JOO+9\n3Rsz\r\n=AXo1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCH954K4ME0XfjxHt563vCR9dnIs8pg+CnaywI1ttRjAIgCjeR0HbP65gD93JAuFU7qLB8NDqjbEAOcN2N7lmWWVE="}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_4.1.0_1584033888281_0.9514968055993922"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.2.0":{"name":"workit-camunda","version":"4.2.0","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Montreal City Authors"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"debug":"~4.1.1","inversify":"~5.0.1","reflect-metadata":"~0.1.13","workit-bpm-client":"^4.2.0","workit-core":"^4.2.0","workit-types":"^4.2.0","workit-zeebe-client":"^4.2.0"},"devDependencies":{"@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4","@opentelemetry/core":"0.4.0","@types/chai":"^4.2.11","@types/debug":"~4.1.5","@types/events":"~3.0.0","@types/jest":"^25.1.4","@types/nock":"^10.0.3","@types/node":"^14.0.0","@typescript-eslint/eslint-plugin":"^2.23.0","@typescript-eslint/parser":"^2.23.0","axios":"^0.19.2","chai":"^4.2.0","codecov":"^3.6.5","eslint":"^6.8.0","eslint-config-airbnb-typescript":"^7.0.0","eslint-config-prettier":"^6.10.0","eslint-plugin-header":"^3.0.0","eslint-plugin-import":"^2.20.1","eslint-plugin-prettier":"^3.1.2","husky":"^4.2.4","jest":"^25.1.0","nock":"^10.0.6","prettier":"^1.19.1","source-map-support":"^0.5.16","ts-jest":"^26.0.0","typedoc":"^0.16.11","typescript":"^3.8.3"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --testPathIgnorePatterns integration --coverage","test:all":"jest **/tests/**/*.spec.ts --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"eslint . --ext .ts && prettier -l \"src/**/*.ts\"","lint-fix":"prettier \"./**/*.ts\" --write && eslint . --ext .ts --fix","check-conflicts":"eslint --print-config tests/utils/func-test.ts | eslint-config-prettier-check","docs":"typedoc --out ./docs --tsconfig ./tsconfig.json --excludePrivate --mode file","codecov":"codecov -f coverage/*.json -p ../../"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","open-telemetry","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"bac5c08a63b4a979a434bb7ae446ced2923bae5a","_id":"workit-camunda@4.2.0","_nodeVersion":"12.18.3","_npmVersion":"lerna/3.20.2/node@v12.18.3+x64 (darwin)","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-iy6I64RzytTnjF1SJfeEWoPu1oUgexC/ojsQ3nc2NXYwhNoLZLCVA2n4s/L6b9zrAcJjnUjpNLAhCHalgO1usw==","shasum":"2fd2daa1beb85ca937e779ca1ecc33c190a44858","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-4.2.0.tgz","fileCount":28,"unpackedSize":49329,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYNFKCRA9TVsSAnZWagAANQkP+wXGksvqkcfe5XA91ECd\nAv3vgOW6TZHUp/+zotTduE81KIDjtGlea5muD25XjmpcOUwhAvQx37Jz13+z\nafXBaqm5+n2XDTKudy9YI6MnhgJWj/5qUkPuhBZgtdhC+6qSbPdLF39pCuVE\ndCib8f7JJBZ5C1uf5g7RFQjMpXS846bSkDTq4yOqN6339brm+dHEkTCsTuZC\ngkZVO7hUJspbqvkjRZiIvgIolSvIjue7iSX0rAz0/e7Y4l8I9lpo17a8YwMH\nEG4sjzei2n4X6CUtAG7Czf6OdU6tpY4TdScVPYH9S1nYGTwBJl2QxiNxEEzw\n2to5okGPQgD5uo9i8Jf/CMXzgjnWLgu5XAd9RbhvKTKVuf7O8Ahht1CBLK9F\n/3pCliU14bGgOlernzqFbu+ikOzO9WqbGHmE+V2z+tPuoqMEjNpYUtmXhX+g\nJWXnaoVDQ1vCuvPzq+PBo5W4dQs7YoQBkr+WR3qh2OUFjLF9MYIrl/+B9qaQ\nhLGtQa9TNPNVaBq2JxYHmegFL73CH3CFuRaCqaiNN57N8IVDsEWr8nD+wtWv\nKb4qVsm9XMfyXZc6F4xEWR03/qxuvhT7jqYsmn/NN84LuwEj0UJAKQX8C6Q2\noiUaXki4x1P8JBfwa85SLEv1p9wDpE8XjHHxCOvd1H0Wpe5bOyVJ/pkuWba5\nrPbc\r\n=ZKqg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDU5uHMx5HxIozoFN1DQB75ln1XDbevPI2f/jW31VhuAgIgRfbZ2W4KLlJTUzAwLFNd1P3bjUVtR1fiG/xdWG0iHRM="}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_4.2.0_1600180554411_0.676640686845343"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.2.1":{"name":"workit-camunda","version":"4.2.1","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Montreal City Authors"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"debug":"~4.1.1","inversify":"~5.0.1","reflect-metadata":"~0.1.13","workit-bpm-client":"^4.2.1","workit-core":"^4.2.0","workit-types":"^4.2.0","workit-zeebe-client":"^4.2.0"},"devDependencies":{"@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4","@opentelemetry/core":"0.4.0","@types/chai":"^4.2.11","@types/debug":"~4.1.5","@types/events":"~3.0.0","@types/jest":"^25.1.4","@types/nock":"^10.0.3","@types/node":"^14.0.0","@typescript-eslint/eslint-plugin":"^2.23.0","@typescript-eslint/parser":"^2.23.0","axios":"^0.19.2","chai":"^4.2.0","codecov":"^3.6.5","eslint":"^6.8.0","eslint-config-airbnb-typescript":"^7.0.0","eslint-config-prettier":"^6.10.0","eslint-plugin-header":"^3.0.0","eslint-plugin-import":"^2.20.1","eslint-plugin-prettier":"^3.1.2","husky":"^4.2.4","jest":"^25.1.0","nock":"^10.0.6","prettier":"^1.19.1","source-map-support":"^0.5.16","ts-jest":"^26.0.0","typedoc":"^0.16.11","typescript":"^3.8.3"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --testPathIgnorePatterns integration --coverage","test:all":"jest **/tests/**/*.spec.ts --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"eslint . --ext .ts && prettier -l \"src/**/*.ts\"","lint-fix":"prettier \"./**/*.ts\" --write && eslint . --ext .ts --fix","check-conflicts":"eslint --print-config tests/utils/func-test.ts | eslint-config-prettier-check","docs":"typedoc --out ./docs --tsconfig ./tsconfig.json --excludePrivate --mode file","codecov":"codecov -f coverage/*.json -p ../../"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","open-telemetry","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"08833643d0ad4490c1050418b35156e53512d08c","_id":"workit-camunda@4.2.1","_nodeVersion":"14.10.1","_npmVersion":"lerna/3.20.2/node@v14.10.1+x64 (darwin)","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-8+uPEi+Idx3xuPGk3Nx0BFyFuNlKQJmWEOXJ74gOrexHd+ii1Xfi+fytv9dzGq1FIq06ZjDWUdXmYsz0NInBRw==","shasum":"5e0c9719e8d239c3473fd141cc4e6d78bb21a175","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-4.2.1.tgz","fileCount":28,"unpackedSize":49481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa18HCRA9TVsSAnZWagAApwoP/3wGQgXoNWfoiN/1sJys\nrSpKWm7mWvsftm04uTh37MFxb5gjWKLoEniSYFPIle2erlpnB9nG1rzk671R\na1lokvoENRIHpCv3kNZb5tXerSFr2CLVk4N47C7kb2aC6m0mvnWdOlJImJJd\nyL3kbSSdaWgq3I43W9jFIRLb3TBLIROrR+SqXxA8iOQ9dddGLvXVqaVYZCw8\ndSjPViUuCMOvAax294CqQ1TplJgv+SJ2jJDKX4m/K64caBQbsViNrjNZBD0p\n1E5mVFVG08aPVXs9oNQX0rGWeH9iqQqhnvk4wzJeDVEo5o+Rd4jebweHxY6l\n4NQrWtmdP0A2hgm2PzKtIfiB1feqkY9bRlWnDsT4Sgak8sIaftZNyY7RSn9e\nNTTTLq71P/S4p/Zp6REyDn5+MHTivinQ5naFk585Qom/VUJbyM5a32HtIVdf\nqoacIpQp+GKMZr7SZmAQrs+HIEYCmUuqS4bF+HefimcaI/MuqutIsqgWJiZw\nS8bj+qD3SV8xqu7Lc+JDkRynmLSNpe0KxMhCRyUwYElW3NpWUmI6gWY6tMSB\nqOWriNinjrwPvHOEWFxCQmLzCSSJxyUBYxIm5hC3VPB9JgKTMZhdUyJxStl7\nNVeYsSNk/ub/trU44FKYiK2Au0EGMn3b9wVLM7LwhGBU0KKzM+kyGbIUEPhp\nuNjK\r\n=N4Ar\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDFmOA7YrZyCp5uhjAzEyEz6eiV4vb0f773+yy3LTD/0AiBXGDhsZRHJEHawrpCcmOsNf2FWxpVZlnmOZ3qAdHxybg=="}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_4.2.1_1600872198558_0.2171609005827515"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.2.2":{"name":"workit-camunda","version":"4.2.2","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Montreal City Authors"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"debug":"~4.1.1","inversify":"~5.0.1","reflect-metadata":"~0.1.13","workit-bpm-client":"^4.2.2","workit-core":"^4.2.2","workit-types":"^4.2.2","workit-zeebe-client":"^4.2.2"},"devDependencies":{"@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4","@opentelemetry/core":"0.4.0","@types/chai":"^4.2.11","@types/debug":"~4.1.5","@types/events":"~3.0.0","@types/jest":"^25.1.4","@types/nock":"^10.0.3","@types/node":"^14.0.0","@typescript-eslint/eslint-plugin":"^2.23.0","@typescript-eslint/parser":"^2.23.0","axios":"^0.19.2","chai":"^4.2.0","codecov":"^3.6.5","eslint":"^6.8.0","eslint-config-airbnb-typescript":"^7.0.0","eslint-config-prettier":"^6.10.0","eslint-plugin-header":"^3.0.0","eslint-plugin-import":"^2.20.1","eslint-plugin-prettier":"^3.1.2","husky":"^4.2.4","jest":"^25.1.0","nock":"^10.0.6","prettier":"^1.19.1","source-map-support":"^0.5.16","ts-jest":"^26.0.0","typedoc":"^0.16.11","typescript":"^3.8.3"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --testPathIgnorePatterns integration --coverage","test:all":"jest **/tests/**/*.spec.ts --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"eslint . --ext .ts && prettier -l \"src/**/*.ts\"","lint-fix":"prettier \"./**/*.ts\" --write && eslint . --ext .ts --fix","check-conflicts":"eslint --print-config tests/utils/func-test.ts | eslint-config-prettier-check","docs":"typedoc --out ./docs --tsconfig ./tsconfig.json --excludePrivate --mode file","codecov":"codecov -f coverage/*.json -p ../../"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","open-telemetry","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"cec6d756c3e3127647b9971ffbc1f9b59c02e261","_id":"workit-camunda@4.2.2","_nodeVersion":"14.10.1","_npmVersion":"lerna/3.20.2/node@v14.10.1+x64 (darwin)","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-/61etxg/sI7+/Mu+aUuEGyEeSV6I4SLRhxRvXPftykYBBOJ1I/n6adSzvSoHBbFx83TLrBp0lSAIuZ1iIl4+sA==","shasum":"17097dc4659f68e825d5ccdab4cece5f637795d4","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-4.2.2.tgz","fileCount":28,"unpackedSize":49633,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa2aCCRA9TVsSAnZWagAABAoP/i3oIwxTf3sRG+sMNFUf\nChiH/Wxwy06qS7/dt7T242w2LCkuHaPwauFTz1t0uAzz+gEFMLJTlhUvm5jc\nFw/0YVuJQ+1N3zzCCOiwERnP7uW5TMMkywZKE8heKxaqHxuQaPummakuv5P7\nNrh6uLhitHnvTAOboaqHv31f0MOiJuOf2qUw44xf5HHYOxCqXNGA+Uu7neQt\noJoJDI5XnVMpMwslMmIhMvS2Cbyh4kNNnMU162jFFamNiME8+46czhCLhCxf\nsyhIbQI7lRZl2ugtw2yHf3jcIboIEo+lXG/QY1yXUC0b3U/mnXo+ZNVaUII/\n7HjcIQmy/EbYcI96RDuo9wU+T34p5sfe0lxAO6crTPLXuSc2qX+0NmG5ot2p\nYFLiZpGX2hDivuMcpbfnYzdWRYOb/Xg/6h2Q3uYlOnClqi2lPZ96C7CL5eFq\n78tpCLr/EdSLKAzg4qGW4vo1LP2TP9UnnudFkf5jTSSGSV8fUi5SZAS+C/9T\nb3Wiiq32Yqdzteeqiw0bjeMMAqmhCPVjXgPuEHsaWkWY60s8yO+MwGHtflA8\nyz177VTLw3/DVrfWblp+kTbFl+mDro2Gj/v1OdwXg0hTQKCaK3GZmVqa1oXE\nIpFpAds1bMro3BhH/4MFtNaHxK5txj7S+dpBwvyihw2bwD3rVzSVsYKfVQ5y\nG/00\r\n=u7t7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDwJJrt0yuxsCEvy3C5ScwjEEW4u1jmjQS7LvXKEx0SjAIgQvD7F1h21ERQIKOiAuzDKybc0+Dx6BQB+oV3j/HLLDw="}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_4.2.2_1600874113961_0.25801102255156394"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.2.3-alpha.0":{"name":"workit-camunda","version":"4.2.3-alpha.0","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Montreal City Authors"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"debug":"~4.1.1","inversify":"~5.0.1","reflect-metadata":"~0.1.13","workit-bpm-client":"^4.2.3-alpha.0","workit-core":"^4.2.3-alpha.0","workit-types":"^4.2.3-alpha.0","workit-zeebe-client":"^4.2.3-alpha.0"},"devDependencies":{"@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4","@opentelemetry/core":"0.4.0","@types/chai":"^4.2.11","@types/debug":"~4.1.5","@types/events":"~3.0.0","@types/jest":"^25.1.4","@types/nock":"^10.0.3","@types/node":"^14.14.7","@typescript-eslint/eslint-plugin":"^4.7.0","@typescript-eslint/parser":"^4.7.0","axios":"^0.21.0","chai":"^4.2.0","codecov":"^3.6.5","eslint":"^7.13.0","eslint-config-airbnb-typescript":"^12.0.0","eslint-config-prettier":"^6.15.0","eslint-plugin-header":"^3.1.0","eslint-plugin-import":"^2.22.1","eslint-plugin-prettier":"^3.1.4","husky":"^4.2.4","jest":"^25.1.0","nock":"^10.0.6","prettier":"^2.1.2","source-map-support":"^0.5.19","ts-jest":"^26.0.0","typedoc":"^0.16.11","typescript":"^4.0.5"},"engines":{"node":">=8.11.4"},"scripts":{"test":"jest --testPathIgnorePatterns integration --coverage","test:all":"jest **/tests/**/*.spec.ts --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"eslint . --ext .ts && prettier -l \"src/**/*.ts\"","lint-fix":"prettier \"./**/*.ts\" --write && eslint . --ext .ts --fix","check-conflicts":"eslint --print-config tests/utils/func-test.ts | eslint-config-prettier-check","docs":"typedoc --out ./docs --tsconfig ./tsconfig.json --excludePrivate --mode file","codecov":"codecov -f coverage/*.json -p ../../"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","open-telemetry","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"f5eef8dbb4e924bfa1e7486eca51aa334367d2dd","_id":"workit-camunda@4.2.3-alpha.0","_nodeVersion":"14.10.1","_npmVersion":"lerna/3.20.2/node@v14.10.1+x64 (darwin)","_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"dist":{"integrity":"sha512-RX9Qw9L3S8b6ukWIx8x/JiBwoDQPHsJ8TjuIRrAYBwTpBsk134RkEQlkzMVEv0skQmgU+gV0Jr8F62KclDi2xg==","shasum":"c9b691c2efc46721578be7b8d0cb09a203c75afd","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-4.2.3-alpha.0.tgz","fileCount":28,"unpackedSize":49666,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfwRQaCRA9TVsSAnZWagAAixQP/3j13fFf7Byam+tCzl/f\nefv3qJvkX5zdsCzwPwiXf3TIXc83ioINUwuuZiAyNP+TxA76OnSGQA0SYB/p\n37dpQqOOTChYaGQUEFhDLdTDwpHGH56vUE+qkq+U63gArgGikRJkI3UEU3zA\ncD6TiSwO4TLCudBabO8XsGe52qLUggm/mUIydyLnZaJkdck3HzNNE/QK/6ie\nUVe2PW5UoKuaiw8pu2PS9Q/2CeA/nlXvuxg2pD50lK7ju/j080bHDJDQrXB3\nF8p++MSXcvzXCMcFj+jFyfOKXAT0fOZ1K2TjOvI975h0wCCJcKwqM1ODm8iR\nXXVqx7NvByQrgYS73XZqLNqZd3xtwyXuIv4bRhvzAoJJUpEpToKRyGiMq9bn\nk3Auy0ubEyYQMHhbOUKx7cKPXQ/LXa54xvo85mK7uyw2PQ1XP96HRuNH1U97\nf4ZLzaauMLUvrb07W8V3zAOs0FAd6AxbU3vPpv/Ak48RqCdaToS+nekFcyED\nJ2ykMxHQq2Q+RFVA+aoWbqYFJjaJ9VsWcxZ75CeCdwIsuZJdH81Fx+as3O9M\nAFDEHvUCH8VRLQWEKqxwNyVkEVavn0tArAqm+k6OQw+OpbwFqhuytohKSNlJ\n1zxqnCk9+OdgJCs/BmYJTLffcGHTASFbbzOu8fYs3oSVFDjUhiGBG3JRBAXu\nzNuf\r\n=Y8iR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqm8mw7fLOf6NOBsiFgA5J8E6vnwwHhn2k/OuS12KrZwIgJAiknTKu9epcMJEA4m4za0ufWrp5VJspMLrEZqQjnNo="}]},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_4.2.3-alpha.0_1606489114077_0.08387153858486407"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.2.5":{"name":"workit-camunda","version":"4.2.5","description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","author":{"name":"Montreal City Authors"},"homepage":"https://github.com/VilledeMontreal/workit#readme","license":"MIT","main":"lib/src/index.js","typings":"lib/src/index.d.ts","dependencies":{"debug":"~4.3.2","inversify":"~5.1.1","reflect-metadata":"~0.1.13","workit-bpm-client":"^4.2.5","workit-core":"^4.2.5","workit-types":"^4.2.5","workit-zeebe-client":"^4.2.5"},"devDependencies":{"@commitlint/cli":"^13.1.0","@commitlint/config-conventional":"^13.1.0","@opentelemetry/core":"0.4.0","@types/chai":"^4.2.21","@types/debug":"~4.1.7","@types/events":"~3.0.0","@types/jest":"^26.0.24","@types/nock":"^11.1.0","@types/node":"^16.4.3","@typescript-eslint/eslint-plugin":"^4.28.5","@typescript-eslint/parser":"^4.28.5","axios":"^0.21.0","chai":"^4.3.4","codecov":"^3.8.3","eslint":"^7.31.0","eslint-config-airbnb-typescript":"^12.3.1","eslint-config-prettier":"^8.3.0","eslint-plugin-header":"^3.1.1","eslint-plugin-import":"^2.23.4","eslint-plugin-prettier":"^3.4.0","husky":"^7.0.1","jest":"^27.0.6","nock":"^10.0.6","prettier":"^2.3.2","source-map-support":"^0.5.19","ts-jest":"^27.0.4","typedoc":"^0.21.4","typescript":"^4.3.5"},"engines":{"node":">=10.13.0"},"scripts":{"test":"jest --testPathIgnorePatterns integration --coverage","test:all":"jest **/tests/**/*.spec.ts --coverage","compile":"rm -rf ./lib/ && npm run build","build":"tsc -p ./tsconfig.json","watch":"tsc -p ./tsconfig.json --watch","lint":"eslint . --ext .ts && prettier -l \"src/**/*.ts\"","lint-fix":"prettier \"./**/*.ts\" --write && eslint . --ext .ts --fix","check-conflicts":"eslint --print-config tests/utils/func-test.ts | eslint-config-prettier-check","docs":"typedoc --out ./docs --tsconfig ./tsconfig.json --excludePrivate --mode file","codecov":"codecov -f coverage/*.json -p ../../"},"husky":{"hooks":{"pre-commit":"npm run lint-fix","commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-push":"npm test"}},"keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","open-telemetry","Worker"],"directories":{"lib":"lib","test":"__tests__"},"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"publishConfig":{"access":"public"},"gitHead":"dd450b6dbb784decbfa31bb634dd97aba8fb5c3a","_id":"workit-camunda@4.2.5","_nodeVersion":"14.16.1","_npmVersion":"lerna/4.0.0/node@v14.16.1+x64 (darwin)","dist":{"integrity":"sha512-GeStCM5c7voSUFToDF0wXsu1fikGYm52F4GVUbAITUb6A6jDEljunmGVYrs7GoKz8yjwjEGICqPcVZmLGR+9vQ==","shasum":"256079b7ba8a85778930ea05c2d9c03c371d9973","tarball":"https://registry.npmjs.org/workit-camunda/-/workit-camunda-4.2.5.tgz","fileCount":27,"unpackedSize":41513,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAEbcCRA9TVsSAnZWagAAHwQP/2oVp1S2hjGDHpqjr5Ne\n02SITH2H96C2hpbRovNMe0nyAHcr6nIaIb5sJaakNQxNh5oPKHtntUmZGE+h\nWRLN6v2rZEOlQ8jDx4BFivNaNtEIXHFuNOsq7GA+m2hNHPtrzwp2lrV4kDFN\nFj71J0mWf9b6FYzSZ8y2LCfxy0s+ilRwyftAHHv3fgSsbftvDphP7tfhdFg6\nZqGgaJhABVf2nNgjVt91ww2/QF1nP4nGkSfpMaMwuREQoueKaT2mOnQG8Nyz\nL++XiRcYmh2ISYnmNXecz1vWJvRzwIBGE4ybJ4FlbZXr5t9FZ8no9E6Hn1Aa\njxMUqUGFoJqp2R/eo7nUWTRaAhDzIdDAPjHkkoYlPLyrlTIq3T1TsJnEem9A\n695fHv154am+sb8fUjFaGBeEP8nEXOYgB0rvigVp991GSXuccEbuJ+TbvWF2\nw0+bvM1dprmdhsmhjZ9DMsQF5NyoK/0UmTEnCC7h5ruE2KlBmgNQBvySNg9W\nxoeBycKMRx5ktQVTNrCVY4TfJQGYZLd/RJsXUsShyafYNumlFZxiQZRy4c+I\nIpPUrTuwAJsSIoZVWmizDF2Iw85/YfspGu6p/doa+Kg2IT68x/LsFo61m1b6\ndndAxhdAdDN72IzEoo0mWHnLp/ukV4nvIcjf0XZxFmUHf1r1xxtp2lnK6JxY\n+TrS\r\n=CsqM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDt/F630OJOgHaSC4o06l8TO2puK1naNMG6JyhL2EUQfgIgJrid4hvdNaPFItYNcBgRbxRvRx0lCN4XenUNXamzFlI="}]},"_npmUser":{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/workit-camunda_4.2.5_1627408092215_0.0032173118965492797"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."}},"time":{"created":"2019-06-18T00:23:05.662Z","0.0.4-beta.0":"2019-06-18T00:23:05.866Z","modified":"2022-05-24T16:56:36.704Z","1.0.0":"2019-06-24T00:27:57.425Z","1.0.1":"2019-06-26T21:33:15.671Z","1.0.2":"2019-06-27T00:14:13.373Z","2.0.0":"2019-06-30T22:35:18.712Z","2.0.1":"2019-07-04T22:52:30.820Z","2.1.0":"2019-07-16T23:50:55.573Z","2.2.0":"2019-07-17T15:13:10.985Z","3.0.0-alpha":"2019-08-01T19:07:47.357Z","3.0.0-alpha.1":"2019-08-01T19:32:47.451Z","3.0.0-alpha.2":"2019-08-07T21:19:44.265Z","3.0.0-alpha.3":"2019-08-09T20:08:40.677Z","3.0.0-alpha.4":"2019-08-20T17:02:36.560Z","3.1.0":"2019-08-21T22:01:44.254Z","3.2.0":"2019-09-14T16:04:52.665Z","4.0.0":"2019-12-31T19:46:51.743Z","4.0.2":"2019-12-31T20:08:51.140Z","4.0.3":"2020-01-24T20:43:22.282Z","4.0.4":"2020-02-05T15:07:55.462Z","4.1.0":"2020-03-12T17:24:48.507Z","4.2.0":"2020-09-15T14:35:54.556Z","4.2.1":"2020-09-23T14:43:18.723Z","4.2.2":"2020-09-23T15:15:14.084Z","4.2.3-alpha.0":"2020-11-27T14:58:34.199Z","4.2.5":"2021-07-27T17:48:12.415Z"},"maintainers":[{"name":"olivieralbertini","email":"albertini.olivier@gmail.com"}],"description":"Worker for Node.js system with pluggable Camunda clients that works with both Zeebe and Camunda platform powered by TypeScript","homepage":"https://github.com/VilledeMontreal/workit#readme","keywords":["Ville de Montreal","Typescript","Camunda","Zeebe","open-telemetry","Worker"],"repository":{"type":"git","url":"git+https://github.com/VilledeMontreal/workit.git"},"author":{"name":"Montreal City Authors"},"bugs":{"url":"https://github.com/VilledeMontreal/workit/issues"},"license":"MIT","readme":"# WorkIt\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\n✨Extensible worker for Node.js that works with both Zeebe and Camunda BPM platforms powered by TypeScript ✨\n\n## Motivation\n\nWe needed a framework to help us quickly build workers used to execute tasks. [Zeebe](https://zeebe.io/) provides a good fit with our stack. Until this is production ready, we are keeping the [Camunda Bpm](https://camunda.com/products/bpmn-engine/). Indeed, Zeebe is in developper preview. In order to make the transition smoother, we use this package. We can experiment and choose the Camunda platform we want without rewritting our business logic.\n\nThis package can be useful because:\n\n-   At this moment, Zeebe doesn't provide all BPMN components. Zeebe is new and some unexpected bugs can appear during development so we can easily revert back to the the former platform if an issue was to rise.\n-   Instead of depending directly from a Camunda client, this project provides an abstraction layer. This way it’s easier to change the client or to make your own.\n-   You want to have a worker standardization.\n-   Uniformisation. Indeed, you can use both platforms depending project needs.\n-   Added features like automated tracing.\n-   This package enforce feature parity between Zeebe and Camunda BPM through the client libraries. Some features exposed to the Camunda BPM platform are not presents in this package because we couldn't provide them if we switch to Zeebe. This limitation is to guide developers to prepare migration.\n\n## Quickstart\n\n[Get started in 2 minutes](.docs/WORKER.md).\n\n## Documentation\n\n-   [.docs](.docs/) contains written documentation\n-   Comprehensive API documentation is available [online](https://villedemontreal.github.io/workit/) and in the `docs` subdirectory\n\n## Installing\n\n```bash\nnpm i workit-camunda\n```\nor using the generator below\n### Yo!\n\nThis generator will help you during your development with this library. It provides handy tools.\n\n```bash\nnpm i -g workit-cli\n```\n\n#### Install a fresh new project\n\n```bash\nworkit init\n```\n#### Generate tasks from your existing BPMN\n\n```bash\nworkit create task --file /your/path.bpmn\n```\n\n#### Generate new task\n\n```bash\nworkit create task\n```\n\n## How to use\n\nSwitching between Zeebe and the bpmn platform is easy as specifying a `TAG` to the IoC.\n\n### Run worker\n\n```javascript\nconst worker = IoC.get<Worker>(CORE_IDENTIFIER.worker, TAG.camundaBpm); // or TAG.zeebe\n\nworker.start();\nworker.run();\n```\n\n### Deploy a workflow\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nconst fullpath = `${process.cwd()}/sample/BPMN_DEMO.bpmn`;\nawait manager.deployWorkflow(fullpath);\n```\n\n### Get workflows\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.getWorkflows()\n```\n\n### Get a workflow\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.getWorkflow({ bpmnProcessId: \"DEMO\" });\n```\n\n### Update variables\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.updateVariables({ \n    processInstanceId: \"5c50c48e-4691-11e9-8b8f-0242ac110002\",\n    variables: { amount: 1000 }\n});\n```\n\n### Publish message\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.publishMessage({\n    correlation: {},\n    name: \"catching\",\n    variables: { amount: 100 },\n    timeToLive: undefined, // only supported for Zeebe\n    messageId: \"5c50c48e-4691-11e9-8b8f-0242ac110002\"\n});\n```\n\n### Create workflow instance\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.createWorkflowInstance({\n    bpmnProcessId: \"MY_BPMN_KEY\",\n    variables: {\n        hello: \"world\"\n    }\n});\n```\n\n### Cancel workflow instance\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.cancelWorkflowInstance(\"4651614f-4b3c-11e9-b5b3-ee5801424400\");\n```\n\n### Resolve incident\n\n```javascript\nconst manager = IoC.get<IWorkflowClient>(CORE_IDENTIFIER.client_manager, TAG.camundaBpm); // or TAG.zeebe\nawait manager.resolveIncident(\"c84fce6c-518e-11e9-bd78-0242ac110003\");\n```\n\n### Define tasks (your bpmn activities)\n\nYou can define many tasks to one worker. It will handle all messages and will route to the right tasks.\n\n```javascript\nexport class HelloWorldTask extends TaskBase<IMessage> {\n  // You can type message like IMessage<TBody, TProps> default any\n  public execute(message: IMessage): Promise<IMessage> {\n      const { properties } = message;\n      console.log(`Executing task: ${properties.activityId}`);\n      console.log(`${properties.bpmnProcessId}::${properties.processInstanceId} Servus!`);\n      // put your business logic here\n      return Promise.resolve(message);\n  }\n}\n\n\nenum LOCAL_IDENTIFIER {\n    // sample_activity must match the activityId in your bpmn\n    sample_activity= 'sample_activity'\n}\n\n// Register your task\nIoC.bindTo(HelloWorldTask, LOCAL_IDENTIFIER.sample_activity);\n\n```\nYou can even make complex binding like\n```javascript\nIoC.bindTask(HelloWorldTaskV2, LOCAL_IDENTIFIER.activity1, { bpmnProcessId: BPMN_PROCESS_ID, version: 2 });\n```\n\n[See documentation](.docs/WORKER.md)\n\nIf you have installed `workit-cli`, you can do `workit create task` \nand everything will be done for you.\n\n### Worker life cycle and events\n\n```javascript\nconst worker = IoC.get<Worker>(CORE_IDENTIFIER.worker, TAG.zeebe); // or TAG.camundaBpm\n\nworker.once('starting', () => {\n    // slack notification \n});\n\nworker.once('stopping', () => {\n    // close connections\n});\n\nworker.once('stopped', () => {\n    // slack notification\n});\n\nconst handler = worker.getProcessHandler();\n\nhandler.on('message', (msg: IMessage) => {\n    // log/audit\n});\n\nhandler.on('message-handled', (err: Error, msg: IMessage) => {\n    if (err) {\n        // something wrong\n    } else {\n        // everything is fine\n    }\n});\n\nworker.start();\nworker.run(); // Promise\nworker.stop(); // Promise\n```\n\n### Interceptors\n\n```javascript\nconst workerConfig = {\n  interceptors: [\n    async (message: IMessage): Promise<IMessage> => {\n      // do something before we execute task.\n      return message;\n    }\n  ]\n};\n\nIoC.bindToObject(workerConfig, CORE_IDENTIFIER.worker_config);\n```\n\n### Open-telemetry\nBy default, we bound a `NoopTracer` but you can provide your own and it must extend [Tracer class](https://github.com/open-telemetry/opentelemetry-js/blob/master/packages/opentelemetry-types/src/trace/tracer.ts#L29).We strongly recommand to use this kind of pattern in your task: [Domain Probe pattern](https://martinfowler.com/articles/domain-oriented-observability.html#DomainProbesEnableCleanerMore-focusedTests). But here an example:\n\n```javascript\n// Simply bind your custom tracer object like this\nIoC.bindToObject(tracer, CORE_IDENTIFIER.tracer);\n```\n\n```javascript\nexport class HelloWorldTask extends TaskBase<IMessage> {\n  private readonly _tracer: TracerBase;\n    \n  constructor(tracer: TracerBase) {\n        this._tracer = tracer\n  }\n\n  public async execute(message: IMessage): Promise<IMessage> {\n      const { properties } = message;\n      \n      console.log(`Executing task: ${properties.activityId}`);\n      console.log(`${properties.bpmnProcessId}::${properties.processInstanceId} Servus!`);\n      message.body.test = true;\n      // This call will be traced automatically\n      const response = await axios.get('https://jsonplaceholder.typicode.com/todos/1');\n      \n      // you can also create a custom trace like this :\n      const span = this._tracer.startChildSpan({ name: 'customSpan', kind: SpanKind.CLIENT });\n      \n      console.log();\n      console.log('data:');\n      console.log(response.data);\n      // put your business logic here\n\n      // finish the span scope\n      span.end();\n      \n      return Promise.resolve(message);\n  }\n}\n```\nYou can look to `sample` folder where we provide an example (parallel.ts) using [Jaeger](https://www.jaegertracing.io/docs/latest/).\n\n[See get started section with OpenTelemetry](.docs/WORKER.md#add-traces-to-your-worker-with-opentelemetry)\n\n### Define your config for each platform\n\n```javascript\nconst configBase: ICamundaConfig = {\n    workerId: 'demo',\n    baseUrl: `__undefined__`,\n    topicName: 'topic_demo'\n};\n\n// For Camunda BPM platform\nconst bpmnPlatformClientConfig = { ...configBase, baseUrl: 'http://localhost:8080/engine-rest',  maxTasks: 32, autoPoll: false, use: [] };\n\nIoC.bindToObject(bpmnPlatformClientConfig, CORE_IDENTIFIER.camunda_external_config);\n\n// For Zeebe platform\nconst zeebeClientConfig = { ...configBase, { baseUrl: 'localhost:2650', timeout: 2000 };\n\n// Zeebe exporter (Elasticsearch instance)\nconst zeebeElasticExporterConfig = {\n    url: `http://localhost:9200`,\n};\n\nIoC.bindToObject(zeebeClientConfig, CORE_IDENTIFIER.zeebe_external_config);\nIoC.bindToObject(zeebeElasticExporterConfig, CORE_IDENTIFIER.zeebe_elastic_exporter_config)\n```\n[See documentation](.docs/CONFIG.md)\n\n### Define your strategies in case of failure or success\n\nBy default, we define simple strategy for sucess or failure. \nWe strongly recommend you to provide yours as your app trigger specific exceptions.\nStrategies are automatically handled.\nIf an exeption is bubble up from the task, failure strategy  is raised, otherwise it's success.\n\n```javascript\nTODO: PROVIDE SAMPLE\n```\n\n## Running the tests\n\n```bash\nnpm test\n```\n\n## Built With\n\n*   [zeebe-node](https://github.com/CreditSenseAU/zeebe-client-node-js) - nodejs client for Zeebe\n*   [camunda-external-task-client-js](https://github.com/camunda/camunda-external-task-client-js) - nodejs client for Camunda BPM\n*   [inversify](https://github.com/inversify/InversifyJS) - Dependency injection\n*   [opentelemtry](https://opentelemetry.io/) - add instrumentation (provides a single set of APIs, libraries to capture distributed traces) \n## Philosophy\n\n1.  Allow Javascript developers to write code that adheres to the SOLID principles.\n2.  Facilitate and encourage the adherence to the best OOP and IoC practices.\n3.  Add as little runtime overhead as possible.\n\n## Kubernetes\n\n### Zeebe\n\n```bash\nkubernetes/run\n```\n\n## Docker\n\n### Zeebe\n\nIn your terminal\n```bash\ndocker/run\n```\n### Bpmn platform\n```bash\ndocker run -d --name camunda -p 8080:8080 camunda/camunda-bpm-platform:latest\n// Go: http://localhost:8080/camunda - user/password : `demo/demo`\n```\n[More details](https://github.com/camunda/docker-camunda-bpm-platform)\n\n## TODO\n<details>\n<summary>Click to expand</summary>\n\n-   Add tests\n-   Improve docs\n-   Make sample and confirm compatibility with DMN\n-   Adding a common exception error codes between Manager clients\n-   Add metrics by using prometheus lib\n</details>\n\n## Versionning\n\nWe use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/VilledeMontreal/workit/tags).\n\nworkit-camunda | Zeebe | Camunda BPM\n-- | -- | -- \n\\>=4.0.5 | 0.22.1 | 7.6 to latest\n3.2.x <=4.0.4 | 0.20.x < 0.20.1 | 7.6 to latest\n2.2.0 | 0.20.x | 7.6 to latest\n2.1.0 | 0.19.x | 7.6 to latest\n2.0.1 | 0.18.x | 7.6 to latest\n< 1.0.0 | <= 0.17.0 | 7.6 to latest\n\n## Maintainers\n\nSee the list of [contributors](CONTRIBUTORS.md) who participated in this project.\n\n## Contributing\n\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details\n\n## Acknowledgments\n\n*   [Josh Wulf](https://github.com/jwulf) - zeebe-node inspired me during `workit-cli` development\n","readmeFilename":"README.md"}