{"_id":"@synkro/core","_rev":"26-029e0439808102cd5a1ac58f390a1ce3","name":"@synkro/core","dist-tags":{"latest":"0.19.0"},"versions":{"0.1.0":{"name":"@synkro/core","version":"0.1.0","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.1.0","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"cf00c7e04703d2e3758e33036a545db45c172a1e","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.1.0.tgz","fileCount":26,"integrity":"sha512-wiG8pyEfao67qmT7aPGt/tgyoO+Yymbt4/8+twxCIidnnSLS5ReIcNnVXQesnjB+KhbPYyfeg6HaD32P0ZLQOA==","signatures":[{"sig":"MEUCIQDhOW0szPYut1FSKYEjGRTpWz+OEwiuTsaHDZXMa4pOSgIgAqcUQTBFkDMj3KB1s2aazs36wiU+5RIQU1r1+DdcgDU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28743},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"9453ebdd2db87a007d9ab6e0bc9e48a31378cc69","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.1.0_1772669973335_0.4599838536100316","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@synkro/core","version":"0.2.0","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.2.0","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"33df31c8b54bd696ec3ca20bf89af2d5029645ca","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.2.0.tgz","fileCount":26,"integrity":"sha512-EsjkLYesi7xCndRjV63YcJfXGij6BJe61coArhGXSqKHvNQeXZA272n/lL6suxpzptvzLHD/H6LaqGFUjhE2jg==","signatures":[{"sig":"MEUCIHnKqFwIYtf1zqSC4CtWU426ob2EP4Jdkz4JrfttgJ5CAiEAtIXFfB1asZ5zOBuf0RW5I3/5el+Uu/S/eVFC02FFrmw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30707},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"fd565511edacc258e1b9c48d50f700bdc3fdac7e","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.2.0_1772671266438_0.4766459971363244","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@synkro/core","version":"0.3.0","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.3.0","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"e3c8befb4c7b761249714b82e66cb6797054ec7d","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.3.0.tgz","fileCount":26,"integrity":"sha512-7gm6SnJ1e8mlQPGp5WoPQyhMKuOvE2tLCZtpgjZvFzwtFIvhqn5Ba1YFgpgPBLJRBgvnHL2V5Eb2y3SXN8CbaQ==","signatures":[{"sig":"MEUCIEzLs1f8eh0KnaOAkEhIm/QYR+I3ZUPRBrdTRpS9JDI2AiEAx6p7ybiQvAy/zCKj+JaxfqlTLBU85Wa24j9qH/hzmqY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42544},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"d9e871a7cdf6a357240384df54ca21e56adcab47","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.3.0_1772681897250_0.4909911516136243","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@synkro/core","version":"0.4.0","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.4.0","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"c7927a233359abfd0d1a75dffea2401a96dd6ea7","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.4.0.tgz","fileCount":26,"integrity":"sha512-/bje7ue4ODwDR6oBR0qER/B0JmA+0rxtGEXgQEzw7Pv2Qc0oQwqLpQLkJKnmdleZu6NZDY6Q4iSlC2SjgutFmA==","signatures":[{"sig":"MEYCIQDweskSvc1hHzJ/KkiEehrxVqNENnugTuq9Y5gQ4jWQ9wIhAOtahEMApWI8dpBwLeiYuQfiW/JNdUjd9Ib4A+M8+RHt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44917},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"6199aad6b3bdffe2206dee0554b244e9f83d527a","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.4.0_1772683545730_0.9593925770918466","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@synkro/core","version":"0.5.0","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.5.0","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"952a0ce92f5a20a61d2fcbec990c48eaea8e5721","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.5.0.tgz","fileCount":34,"integrity":"sha512-SSxX8xINoZuAAgfDgcnetPAhcnWJ4WbvFn6oeaaWy1oSnhVlQ8RNMguX74qXEVp4bwo/ONTZJXlIMOuIc0O2/w==","signatures":[{"sig":"MEYCIQCnZQn1Wgjk0W1Fd/+8Gg/VkxQeaFX/oIg252Y2Hex+NgIhAOFNhUET4GL9EsCCqEvibF7iKQiofH1+Soh4CoG9Kccf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51498},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"64be2e7d57cc14e43f3fcadda1ffd3092be0fd0a","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.5.0_1772684360268_0.4239452621733062","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@synkro/core","version":"0.5.1","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.5.1","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro/packages/core#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"a654cc12fb250f45d3bce123a317b51808069c18","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.5.1.tgz","fileCount":33,"integrity":"sha512-EHQ/oJnOzzWonBAJ2ZG0ccMAaH3iRaFqTaN35gX7fSF5K19VSMk9+chw/VBdAUgF3Au43xOpLPGloLW77dBYsA==","signatures":[{"sig":"MEQCIHP+Hc9+hKqcrgv9TNmXVfra0e2Xo/TsYHgowX9w7PUNAiBrMFFOEiKjyj8K2XkGmTM9jKgS1cPTVmC1ECh3kKRyxA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43420},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"64be2e7d57cc14e43f3fcadda1ffd3092be0fd0a","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.5.1_1772686135146_0.9327862697432452","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@synkro/core","version":"0.5.2","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.5.2","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro/packages/core#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"f2d6da8109e2453ef09196af8f7e602be233d346","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.5.2.tgz","fileCount":34,"integrity":"sha512-fGVwUPiD9zcRuT+5VxGq4a2ZdxgQDlgwhAIrzULnvhjDEKr5rng9UV2Is83uOxFNkd4+MvXXqDUR/8XXnH1jIA==","signatures":[{"sig":"MEUCICFfr0bAlO+VbyYw0Ki4eb17ecEqosTlEBm7SZlhbzuZAiEArMelMXvMyF8vcdGSueM9tUif4UeLAKiH4KP7ruNHBqA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51448},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"3170c57d4cdd66784b3890a5956e137d5016768f","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.5.2_1772686237125_0.8248803927260415","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@synkro/core","version":"0.6.0","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.6.0","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro/packages/core#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"0167c94050f6b093f4b0c61c04df29e0704c304b","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.6.0.tgz","fileCount":35,"integrity":"sha512-tM8fXI4qttMn23gNnZXpk00hhubRSI6mJoMR4IaRn9XRALq61H8NSRZSmtf9eLZKflJPSsYl86NaLXAw6nkpNw==","signatures":[{"sig":"MEQCIB0rEYKzEvTO0k2Fx9n/2onQHr+jB0LwzFGCmQqMfOEmAiAQmf7IOwZ/qJur4WlkgkQBRuew/+7tHGwmEfPzp33UHg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52192},"main":"dist/index.js","type":"module","_from":"file:synkro-core-0.6.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"_resolved":"/private/var/folders/jp/yd9v7zfd639by4x2b7hgm_5h0000gn/T/57f4819433c0357a84d3e2e8d0030ede/synkro-core-0.6.0.tgz","_integrity":"sha512-tM8fXI4qttMn23gNnZXpk00hhubRSI6mJoMR4IaRn9XRALq61H8NSRZSmtf9eLZKflJPSsYl86NaLXAw6nkpNw==","repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.6.0_1772725552019_0.1861652699334262","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@synkro/core","version":"0.7.0","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.7.0","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro/packages/core#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"147a1d4cd5bc5cef510ea06d0d790a75f209b96d","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.7.0.tgz","fileCount":35,"integrity":"sha512-i54VWqOjFqBthKos5d55kEK/J33Fp3W62CZOmoNd1CqEL3xIBrKmiNSgbhnp33CFZlNgmSxgmHVHi9qcxDfxPA==","signatures":[{"sig":"MEUCIQDE68nzCubKS3sr1Ti1vR4UYgIvj9ba2WnhAtflBfftswIgF67p2m3nZ5/+OX5RPkgq1UDIGaPJ3yRySs45Ny9gDmI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59513},"main":"dist/index.js","type":"module","_from":"file:synkro-core-0.7.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"_resolved":"/private/var/folders/jp/yd9v7zfd639by4x2b7hgm_5h0000gn/T/36b26135c2e585cdd08652893e798375/synkro-core-0.7.0.tgz","_integrity":"sha512-i54VWqOjFqBthKos5d55kEK/J33Fp3W62CZOmoNd1CqEL3xIBrKmiNSgbhnp33CFZlNgmSxgmHVHi9qcxDfxPA==","repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.7.0_1772737672040_0.16143036363762953","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@synkro/core","version":"0.7.1","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.7.1","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro/packages/core#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"5fcfd7b2cbead49f992974e1525967843a20ff6c","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.7.1.tgz","fileCount":35,"integrity":"sha512-d+I5H3LBDiZFz+DIydbfF5wT26qXzcgbDOBoRGvY6lUHAZUwqjdH2xkwmaB/ABGZy1BUwByTOqgttRKyJ4+YDw==","signatures":[{"sig":"MEYCIQDEXS3Mj5K7Tu6tiUpJCrVsJsUoK6cab1e9OjuHXmg0EQIhAJ9KKuDc4Vhhlq919RjPkjwBSGMytjEKR7vWo8DHwEcV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62317},"main":"dist/index.js","type":"module","_from":"file:synkro-core-0.7.1.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"_resolved":"/private/var/folders/jp/yd9v7zfd639by4x2b7hgm_5h0000gn/T/367cf5a632e02a9d013e6493e9473559/synkro-core-0.7.1.tgz","_integrity":"sha512-d+I5H3LBDiZFz+DIydbfF5wT26qXzcgbDOBoRGvY6lUHAZUwqjdH2xkwmaB/ABGZy1BUwByTOqgttRKyJ4+YDw==","repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.7.1_1772750370124_0.2851252788458043","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@synkro/core","version":"0.8.0","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.8.0","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro/packages/core#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"7030eb4cd6dc751fbee62c368462c99855a15519","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.8.0.tgz","fileCount":43,"integrity":"sha512-2nRmdmvo6RHbScu2NnBj7KNYd0tj2BxPrmg9JOHUgBnO/2jdFZP0/HZDE5Y0mwr+HPBgfjuDFsMWl34+E55yxQ==","signatures":[{"sig":"MEUCIBZIAPkSZ6I4RaOu1xd/gdmbYSXrSQ4mIiS4h8hFbP9yAiEAkIyOZ3JGKsFv9qROr56yzyQ2BIuL+q6ueub+6JXX8D4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76528},"main":"dist/index.js","type":"module","_from":"file:synkro-core-0.8.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"_resolved":"/private/var/folders/jp/yd9v7zfd639by4x2b7hgm_5h0000gn/T/0027b2b3a9f12526577922158202ac2f/synkro-core-0.8.0.tgz","_integrity":"sha512-2nRmdmvo6RHbScu2NnBj7KNYd0tj2BxPrmg9JOHUgBnO/2jdFZP0/HZDE5Y0mwr+HPBgfjuDFsMWl34+E55yxQ==","repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.8.0_1772753265958_0.42014014622780116","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@synkro/core","version":"0.9.0","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.9.0","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro/packages/core#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"0722b06bcbdba3ffb6491b325bd0bf8e2d35f306","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.9.0.tgz","fileCount":59,"integrity":"sha512-SMKVM3ZjIp33cf6cWxhyXo6A5B3jjDG6DtUclqKE03vpNFv5tgrCGIqEpH3iKsx/jkVJvoz0FOo03aAgEgFkIQ==","signatures":[{"sig":"MEUCIHAilDbTCK6DMInc9YUmodotZmG202DVo3CCA4BniZixAiEA9ysrA8WJuqkhpi3u2BxZvXcsJJVbu9tASxEuKId+2UI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93572},"main":"dist/index.js","type":"module","_from":"file:synkro-core-0.9.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"_resolved":"/private/var/folders/jp/yd9v7zfd639by4x2b7hgm_5h0000gn/T/4eb726f60cc492369d79a6c8b66ea798/synkro-core-0.9.0.tgz","_integrity":"sha512-SMKVM3ZjIp33cf6cWxhyXo6A5B3jjDG6DtUclqKE03vpNFv5tgrCGIqEpH3iKsx/jkVJvoz0FOo03aAgEgFkIQ==","repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.9.0_1772850986630_0.8215655205571955","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@synkro/core","version":"0.9.1","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.9.1","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro/packages/core#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"53b2d681c0383c1b13c4d6e6366999e20b5404c7","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.9.1.tgz","fileCount":59,"integrity":"sha512-DGIIjmILthJFCybKta7Pcz52sfDKhHyH5z0z0h0+ut27+xfItqgNeNrhCxUWzp2rKqD50gbLMAM0gv+/2BClTA==","signatures":[{"sig":"MEQCIFo3lzizrZk61bMKNTevE0mk1VaipdsjsdVjjacnSnAyAiAJU2awZ/uoCW7II3x0cwowE4LwpqyXY+4ol+xZnYaxXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96003},"main":"dist/index.js","type":"module","_from":"file:synkro-core-0.9.1.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"_resolved":"/private/var/folders/jp/yd9v7zfd639by4x2b7hgm_5h0000gn/T/4a83c73d3ed7dccc43cd5c46ba488cb4/synkro-core-0.9.1.tgz","_integrity":"sha512-DGIIjmILthJFCybKta7Pcz52sfDKhHyH5z0z0h0+ut27+xfItqgNeNrhCxUWzp2rKqD50gbLMAM0gv+/2BClTA==","repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.9.1_1772860848644_0.11256696533046706","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"@synkro/core","version":"0.9.2","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.9.2","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro/packages/core#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"1a0aa8083f3634b2a5bd9f6a381577de243515b1","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.9.2.tgz","fileCount":59,"integrity":"sha512-dI8T13uB8NoBYyrfNE3YfRRusayZqdCGmqbmPlvXGa7M6PW8EI7bBOUZypCl/j5ywKuDngmHWFVHOmUja/07wQ==","signatures":[{"sig":"MEQCICDj/cpQcyQamM7ctRNLRL1K6RJyTJEtljapA9T30ZzCAiAD5UucI9En0HXz6TcUWHjjAeNxxADluf3NzcohM1D6Mw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99123},"main":"dist/index.js","type":"module","_from":"file:synkro-core-0.9.2.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"_resolved":"/tmp/b6fcab751ef96e4aa0ab2b4a24984606/synkro-core-0.9.2.tgz","_integrity":"sha512-dI8T13uB8NoBYyrfNE3YfRRusayZqdCGmqbmPlvXGa7M6PW8EI7bBOUZypCl/j5ywKuDngmHWFVHOmUja/07wQ==","repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"10.9.4","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.9.2_1772861233621_0.18392010606682585","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@synkro/core","version":"0.10.0","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.10.0","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro/packages/core#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"6bebbd59a032094106488ad02737f7371be0490a","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.10.0.tgz","fileCount":59,"integrity":"sha512-Q6HDBe4JSccZor2LE+ph96HAmglHAf/RPvMZPC/UEsNSDp/cgHcxnH2fGtu7FEBFFE6eqQQDpWqHkKMOt8Tm3Q==","signatures":[{"sig":"MEUCIBy2mt07OborWmlKDHNSPBfCO8RR91SaHWTb1wAvJDTSAiEA/JXrNOTp4WOkg/RcbnsdN0kz6cznfAeIqNtO9Xj0sso=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101155},"main":"dist/index.js","type":"module","_from":"file:synkro-core-0.10.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"_resolved":"/tmp/f4950f57169b3a8ec89e7a4a377fe669/synkro-core-0.10.0.tgz","_integrity":"sha512-Q6HDBe4JSccZor2LE+ph96HAmglHAf/RPvMZPC/UEsNSDp/cgHcxnH2fGtu7FEBFFE6eqQQDpWqHkKMOt8Tm3Q==","repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"10.9.4","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.10.0_1772862518624_0.5068020818130006","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@synkro/core","version":"0.11.0","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.11.0","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro/packages/core#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"0e37370b3ee198f86cf4508f578026de26f1c119","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.11.0.tgz","fileCount":59,"integrity":"sha512-Lu3IzolKJKHQEKqvVBkV9IdVrGAMB+KaPq6QYlSZl55NaRHwndqQM3KUSlRBaSjCY1/9wvqIeXOIQeP+eklJqg==","signatures":[{"sig":"MEUCIQDuP0+9AxYwN5oGTASbtgqKzlhiPin/N/qhl/r5E/9d9wIgGPpgOdO/jRpapDim5CL5e2TtA3bf/Y4Oy5bFmjHd/us=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102584},"main":"dist/index.js","type":"module","_from":"file:synkro-core-0.11.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"_resolved":"/tmp/b22781ccff54b49c9d4a32b08c905b9b/synkro-core-0.11.0.tgz","_integrity":"sha512-Lu3IzolKJKHQEKqvVBkV9IdVrGAMB+KaPq6QYlSZl55NaRHwndqQM3KUSlRBaSjCY1/9wvqIeXOIQeP+eklJqg==","repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"10.9.4","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.11.0_1772864057056_0.6945086523550834","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@synkro/core","version":"0.12.0","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.12.0","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro/packages/core#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"51d32dc17c14ebb020aa986adc33269692016a03","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.12.0.tgz","fileCount":59,"integrity":"sha512-pJKciJTa+KjrDG8ZwvstE2hzuyNuq2bwvQdLpoDziIEHZcAicSPKA1KGxztjYZnHybx9Y8Uqbpr1fE5LzaSsRQ==","signatures":[{"sig":"MEUCIQColqg9agqISC/g0Bf72wbSwIUDMPX+NQTcCypjBmzgiAIgfPDOxsGu14E+bUZLwPqiMwiGihv2MMd61cb9XWuk9jY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103540},"main":"dist/index.js","type":"module","_from":"file:synkro-core-0.12.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"_resolved":"/tmp/ae82968d7eae2935ab305e852836604a/synkro-core-0.12.0.tgz","_integrity":"sha512-pJKciJTa+KjrDG8ZwvstE2hzuyNuq2bwvQdLpoDziIEHZcAicSPKA1KGxztjYZnHybx9Y8Uqbpr1fE5LzaSsRQ==","repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"10.9.4","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.12.0_1772895926861_0.38967877260243045","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@synkro/core","version":"0.13.0","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.13.0","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro/packages/core#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"c62dd867e1aaf0d6c7f4e09a2e884e4b2e04126e","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.13.0.tgz","fileCount":59,"integrity":"sha512-9hu944M0cigCAngrSmBVlnPa6mR6n9zVwhorS9/lal/hC79sVKEvyYiqwXnU2YRyc57rN1Q5q2j+kkDRw+jKpA==","signatures":[{"sig":"MEQCIA9wTT/czx7rfpmofl4MViRlEdO9sKyu95wWTnD3+t9LAiAe2PMeNlDjJHU7BkhD5qynhxyr8rSLiD2EZM4CFSAjHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106358},"main":"dist/index.js","type":"module","_from":"file:synkro-core-0.13.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"_resolved":"/tmp/9b8096075a71b5aab3d788914e0180e0/synkro-core-0.13.0.tgz","_integrity":"sha512-9hu944M0cigCAngrSmBVlnPa6mR6n9zVwhorS9/lal/hC79sVKEvyYiqwXnU2YRyc57rN1Q5q2j+kkDRw+jKpA==","repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"10.9.4","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.13.0_1772896972125_0.8710843508245332","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@synkro/core","version":"0.14.0","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.14.0","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro/packages/core#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"7755ff8aae8593e2e30efe36c9156c6a2c2c6ea0","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.14.0.tgz","fileCount":59,"integrity":"sha512-juNRLEh0FU1zkKkp5K9xUlB1T7vIrHRaZYnno3gNAwNB60VX2vuFVJ7zNT3EX0j7aCn0m+cjKkWVNbY1pu0J8Q==","signatures":[{"sig":"MEQCIEq97LitwDhgedWYm/Wge3WyldmFVjfu/Yvjq/lFmyP3AiA2aI8WI8/DajUeOCPD4pmpq5wV2u2fBAjtheZrkoQfvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119815},"main":"dist/index.js","type":"module","_from":"file:synkro-core-0.14.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"_resolved":"/tmp/c575e8ea79bc8c61a0a809d9bb8bcbf5/synkro-core-0.14.0.tgz","_integrity":"sha512-juNRLEh0FU1zkKkp5K9xUlB1T7vIrHRaZYnno3gNAwNB60VX2vuFVJ7zNT3EX0j7aCn0m+cjKkWVNbY1pu0J8Q==","repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"10.9.4","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.14.0_1772908732705_0.2959014342168713","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@synkro/core","version":"0.15.0","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.15.0","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro/packages/core#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"87b11dbe58e0f928afca2532656a7039f5d29df2","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.15.0.tgz","fileCount":59,"integrity":"sha512-ZeeEJ3YwraM39H5qFlNsUBIUPHKh8foN2scc6OBl7BbQYwsfzbUR19AyaK/tMlpYdu8sH4OGqr5mtmcUGgIGLA==","signatures":[{"sig":"MEUCIAp/wEhzObmlDPPTpwaPSPhE5dPOfTbpNgioO5kFZyQUAiEA1Bw/7Z0TPPIDRTonGVjaEfxBT8DjwtwTa6Z8LxQxeIE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":129021},"main":"dist/index.js","type":"module","_from":"file:synkro-core-0.15.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"_resolved":"/tmp/f91031ffb2f82f5281c9439faaf612c6/synkro-core-0.15.0.tgz","_integrity":"sha512-ZeeEJ3YwraM39H5qFlNsUBIUPHKh8foN2scc6OBl7BbQYwsfzbUR19AyaK/tMlpYdu8sH4OGqr5mtmcUGgIGLA==","repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"10.9.4","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.15.0_1773030767423_0.5731673586139778","host":"s3://npm-registry-packages-npm-production"}},"0.15.1":{"name":"@synkro/core","version":"0.15.1","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.15.1","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro/packages/core#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"78bf06b6ef9f8c5b432ba44f39113e3c2af5a5f3","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.15.1.tgz","fileCount":63,"integrity":"sha512-eRJcbryJZKjXctthK4asM6/z/SVAxToDN9sfvi53nMCZjwmz7K/kp0am/KU8xHxuRoFmAx/MZ1s7t3jzqyUTNQ==","signatures":[{"sig":"MEUCIBNLReC1/FgfulXaydEsOeW77BfE8ss2gjyGXdxdeEthAiEA9lSL9J/bztBNEDXmEffm8qZ/bQQD78cSkjx/KSXNREQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141384},"main":"dist/index.js","type":"module","_from":"file:synkro-core-0.15.1.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"_resolved":"/tmp/6669d4262f06006be196dd1ac9925890/synkro-core-0.15.1.tgz","_integrity":"sha512-eRJcbryJZKjXctthK4asM6/z/SVAxToDN9sfvi53nMCZjwmz7K/kp0am/KU8xHxuRoFmAx/MZ1s7t3jzqyUTNQ==","repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"10.9.4","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.15.1_1773078139085_0.47132480428769563","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@synkro/core","version":"0.16.0","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.16.0","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro/packages/core#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"31e4060c466b16d84f6bd2616bb4de11b3494b79","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.16.0.tgz","fileCount":63,"integrity":"sha512-4gLWVseNx8YdQMV+Xzv/MDZfombB8MDqkdJbaGD8aXdlrK7M4l9f8728PSZ+deLp2poKXZ0ptJmHJV6AhqxRww==","signatures":[{"sig":"MEUCIGEtsirEtvxjYZTHGJzPuEcm/Gp8Fr8PstQj3qGFt+2TAiEAkEbw25Lnj+/SeWd9bVBcEotHl9thAFiQuzV6RioKOyw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":158722},"main":"dist/index.js","type":"module","_from":"file:synkro-core-0.16.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"_resolved":"/tmp/ca861b04a354fb501a79d532422877d0/synkro-core-0.16.0.tgz","_integrity":"sha512-4gLWVseNx8YdQMV+Xzv/MDZfombB8MDqkdJbaGD8aXdlrK7M4l9f8728PSZ+deLp2poKXZ0ptJmHJV6AhqxRww==","repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"10.9.4","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.16.0_1773107472962_0.6817002728463755","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@synkro/core","version":"0.17.0","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.17.0","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro/packages/core#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"ddb70d98c1ca57e841e96a4b822f4c8a548fb3a3","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.17.0.tgz","fileCount":71,"integrity":"sha512-1RFmbyTKYs64un0Pp6jlEfWpRu61RQgmbCt9171hh0mwh54Ur0pVKkyIwYb/WC1eg0pBXDruKkDs7769ZlZpvg==","signatures":[{"sig":"MEQCIGirEuJn/B2TwYn46rz9Xb6zQ6m0s/LP7NEDUm+EKc4tAiA5KhMMGPeaREWuSH5J5ZsK15l+vMePM+JLN3imOXcPdQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183600},"main":"dist/index.js","type":"module","_from":"file:synkro-core-0.17.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"_resolved":"/tmp/90f5389dd37271c26db119ce62e7725f/synkro-core-0.17.0.tgz","_integrity":"sha512-1RFmbyTKYs64un0Pp6jlEfWpRu61RQgmbCt9171hh0mwh54Ur0pVKkyIwYb/WC1eg0pBXDruKkDs7769ZlZpvg==","repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"10.9.4","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.17.0_1773185590949_0.8293047486477014","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@synkro/core","version":"0.18.0","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.18.0","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro/packages/core#readme","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"de696b6acbdd85735e9c793baf93806e73163060","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.18.0.tgz","fileCount":79,"integrity":"sha512-h/+PggqehFndGk5b2xVMHbH95i05iAb+ts3cHd4+ItjSvuXCgeMHKdjSl5Eo8/QJZPR2kTLI895qK6Zjlzd/yw==","signatures":[{"sig":"MEYCIQDY3wdq++WEHF12+qT94CWyLZ2jNkJ6i59UCiTJbAUgnAIhANTkSqiQdxZywJxYDfVRzA8yufLP+0j8PcWXOuevBl+4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":203107},"main":"dist/index.js","type":"module","_from":"file:synkro-core-0.18.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"_resolved":"/tmp/56c80334f2a335e3e106bde466619374/synkro-core-0.18.0.tgz","_integrity":"sha512-h/+PggqehFndGk5b2xVMHbH95i05iAb+ts3cHd4+ItjSvuXCgeMHKdjSl5Eo8/QJZPR2kTLI895qK6Zjlzd/yw==","repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git"},"_npmVersion":"10.9.4","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.18.0_1773189879249_0.9430927908249651","host":"s3://npm-registry-packages-npm-production"}},"0.18.1":{"name":"@synkro/core","version":"0.18.1","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"ISC","_id":"@synkro/core@0.18.1","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"homepage":"https://github.com/buemura/synkro","bugs":{"url":"https://github.com/buemura/synkro/issues"},"dist":{"shasum":"ac8628417af06becef77d9b3dddb5f8395bb050b","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.18.1.tgz","fileCount":79,"integrity":"sha512-DhTp6op03hOL0OeWGOhmgmDyAVzc68sTlVIPoX7v7C5oEGsijoT//7w4yO99YQ1NABVoYFtwKkBkxoZmmEU2RQ==","signatures":[{"sig":"MEUCIEkVpqSuDUK+4qcn5GXpPeCFxvzW4KLr44yEIN59U8SPAiEA6MmXrpJT6QR3qwLpSvAusaBtZSmYj+rchkwNFJEAWHc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":203917},"main":"dist/index.js","type":"module","_from":"file:synkro-core-0.18.1.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"_resolved":"/tmp/a2e11ead02d856b88198ad15cbbf0777/synkro-core-0.18.1.tgz","_integrity":"sha512-DhTp6op03hOL0OeWGOhmgmDyAVzc68sTlVIPoX7v7C5oEGsijoT//7w4yO99YQ1NABVoYFtwKkBkxoZmmEU2RQ==","repository":{"url":"git+https://github.com/buemura/synkro.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.4","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ioredis":"^5.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/core_0.18.1_1773206475823_0.5454427240668034","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@synkro/core","version":"0.19.0","description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js","default":"./dist/index.js"}},"keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"author":{"name":"buemura"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/buemura/synkro.git","directory":"packages/core"},"homepage":"https://github.com/buemura/synkro","type":"module","dependencies":{"ioredis":"^5.10.0"},"devDependencies":{"@types/node":"^25.3.3","tsx":"^4.21.0","typescript":"^5.9.3","vitest":"^4.0.18"},"scripts":{"build":"tsc","type-check":"tsc --noEmit","test":"vitest run","test:watch":"vitest"},"_id":"@synkro/core@0.19.0","bugs":{"url":"https://github.com/buemura/synkro/issues"},"_integrity":"sha512-YHvzGq1iVHEVxTxyC2l78CdpI6ezhDBWMgyaGmM8n6TCxecLgIqb/9ROahiJwF8zQPzBfRA63qmf/yG2XtBrMw==","_resolved":"/tmp/e9a4ec672db1f7955cf330040b7a3344/synkro-core-0.19.0.tgz","_from":"file:synkro-core-0.19.0.tgz","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-YHvzGq1iVHEVxTxyC2l78CdpI6ezhDBWMgyaGmM8n6TCxecLgIqb/9ROahiJwF8zQPzBfRA63qmf/yG2XtBrMw==","shasum":"3549404b2a64496d898eb928a8cd04ded1a3a0be","tarball":"https://registry.npmjs.org/@synkro/core/-/core-0.19.0.tgz","fileCount":79,"unpackedSize":222526,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDpk7vHzwaoh63Oa0zJzU53DxxniPhGB6TV6brrdXNM7wIhAIM4cKltIn9Cxfw43AJXrUk1nr7BSmHgPBIJQUzNLWrR"}]},"_npmUser":{"name":"buemura","email":"bruno.uemura1@gmail.com"},"directories":{},"maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_0.19.0_1773440600599_0.3339835564781084"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-05T00:19:33.209Z","modified":"2026-03-13T22:23:20.865Z","0.1.0":"2026-03-05T00:19:33.476Z","0.2.0":"2026-03-05T00:41:06.575Z","0.3.0":"2026-03-05T03:38:17.437Z","0.4.0":"2026-03-05T04:05:45.877Z","0.5.0":"2026-03-05T04:19:20.424Z","0.5.1":"2026-03-05T04:48:55.292Z","0.5.2":"2026-03-05T04:50:37.284Z","0.6.0":"2026-03-05T15:45:52.167Z","0.7.0":"2026-03-05T19:07:52.183Z","0.7.1":"2026-03-05T22:39:30.346Z","0.8.0":"2026-03-05T23:27:46.116Z","0.9.0":"2026-03-07T02:36:26.794Z","0.9.1":"2026-03-07T05:20:48.795Z","0.9.2":"2026-03-07T05:27:13.789Z","0.10.0":"2026-03-07T05:48:38.771Z","0.11.0":"2026-03-07T06:14:17.227Z","0.12.0":"2026-03-07T15:05:27.008Z","0.13.0":"2026-03-07T15:22:52.279Z","0.14.0":"2026-03-07T18:38:52.850Z","0.15.0":"2026-03-09T04:32:47.579Z","0.15.1":"2026-03-09T17:42:19.219Z","0.16.0":"2026-03-10T01:51:13.118Z","0.17.0":"2026-03-10T23:33:11.106Z","0.18.0":"2026-03-11T00:44:39.399Z","0.18.1":"2026-03-11T05:21:16.004Z","0.19.0":"2026-03-13T22:23:20.752Z"},"bugs":{"url":"https://github.com/buemura/synkro/issues"},"author":{"name":"buemura"},"license":"MIT","homepage":"https://github.com/buemura/synkro","keywords":["workflow","state-machine","orchestrator","event-driven","redis"],"repository":{"type":"git","url":"git+https://github.com/buemura/synkro.git","directory":"packages/core"},"description":"Lightweight workflow and state machine orchestrator powered by Redis. Define event-driven workflows via configuration or code.","maintainers":[{"name":"buemura","email":"bruno.uemura1@gmail.com"}],"readme":"# @synkro/core\n\nLightweight workflow and state machine orchestrator. Define event-driven workflows via configuration or code. Supports Redis and in-memory transports.\n\n## Features\n\n- **Standalone Events** — Simple pub/sub event handlers\n- **Sequential Workflows** — Multi-step workflows that execute in order, with state persistence\n- **Parallel Workflows** — Run independent steps concurrently with `dependsOn` dependency tracking\n- **Conditional Routing** — Branch to different steps based on handler success or failure\n- **Workflow Chaining** — Trigger follow-up workflows on completion, success, or failure\n- **Retry Support** — Configurable retry logic per step\n- **Transport Options** — Redis for production or in-memory for simple projects and local development\n- **Schema Validation** — Optional payload validation at publish and handler dispatch time\n- **Workflow Timeout** — Configurable timeouts per step or per workflow\n- **Graceful Shutdown** — Drains active handlers before disconnecting\n- **Workflow State Query** — Inspect running workflow state at any time\n- **Workflow Cancellation** — Cancel running workflows programmatically\n- **Handler Unsubscribe** — Remove event handlers at runtime with `off()`\n- **Typed Payloads** — Generic `HandlerCtx<T>` for compile-time payload safety\n- **Event Versioning** — Versioned event types with automatic base-event fanout\n- **Simple API** — Single `Synkro` class with minimal configuration\n- **TypeScript** — Full type support out of the box\n\n## Installation\n\n```bash\nnpm install @synkro/core\n```\n\n## Quick Start\n\n### In-Memory (no external dependencies)\n\n```ts\nimport { Synkro } from \"@synkro/core\";\n\nconst synkro = await Synkro.start({\n  transport: \"in-memory\",\n  events: [\n    {\n      type: \"UserSignedUp\",\n      handler: async (ctx) => {\n        console.log(\"New user:\", ctx.payload);\n      },\n    },\n  ],\n});\n\nawait synkro.publish(\"UserSignedUp\", { email: \"user@example.com\" });\n```\n\n### Redis (scalable, multi-instance)\n\n> Requires a running Redis instance.\n\n```ts\nimport { Synkro } from \"@synkro/core\";\n\nconst synkro = await Synkro.start({\n  transport: \"redis\",\n  connectionUrl: \"redis://localhost:6379\",\n  events: [\n    {\n      type: \"UserSignedUp\",\n      handler: async (ctx) => {\n        console.log(\"New user:\", ctx.payload);\n      },\n    },\n  ],\n});\n\nawait synkro.publish(\"UserSignedUp\", { email: \"user@example.com\" });\n```\n\n> The in-memory transport is ideal for simple projects, local development, and testing. For production workloads that require scaling across multiple instances, use Redis.\n\n## Workflows\n\nDefine multi-step sequential workflows. Each step runs after the previous one completes, with state automatically persisted.\n\n```ts\nconst synkro = await Synkro.start({\n  transport: \"redis\",\n  connectionUrl: \"redis://localhost:6379\",\n  workflows: [\n    {\n      name: \"ProcessOrder\",\n      steps: [\n        {\n          type: \"ValidateStock\",\n          handler: async (ctx) => {\n            console.log(\"Checking stock for order:\", ctx.requestId);\n          },\n        },\n        {\n          type: \"ProcessPayment\",\n          handler: async (ctx) => {\n            console.log(\"Processing payment...\");\n          },\n        },\n        {\n          type: \"SendConfirmation\",\n          handler: async (ctx) => {\n            console.log(\"Order confirmed!\");\n          },\n        },\n      ],\n    },\n  ],\n});\n\n// Triggers all 3 steps in sequence\nawait synkro.publish(\"ProcessOrder\", { orderId: \"abc-123\", amount: 49.99 });\n```\n\n### Conditional Routing\n\nUse `onSuccess` and `onFailure` on a step to branch to different steps based on the handler outcome. If a handler throws (after all retries), the workflow routes to the `onFailure` step. On success, it routes to the `onSuccess` step.\n\n```ts\n{\n  name: \"ProcessDocument\",\n  steps: [\n    {\n      type: \"RunOCR\",\n      handler: ocrHandler,\n      retry: { maxRetries: 2 },\n      onSuccess: \"ProcessingSucceeded\",\n      onFailure: \"ProcessingFailed\",\n    },\n    {\n      type: \"ProcessingSucceeded\",\n      handler: async (ctx) => {\n        console.log(\"OCR completed successfully\");\n      },\n    },\n    {\n      type: \"ProcessingFailed\",\n      handler: async (ctx) => {\n        console.log(\"OCR failed, notifying support\");\n      },\n    },\n  ],\n}\n```\n\nSteps referenced by `onSuccess`/`onFailure` are treated as branch targets. When a branch target completes, the workflow skips over sibling branch targets and advances to the next regular step (if any), or completes.\n\n```ts\n{\n  name: \"ProcessOrder\",\n  steps: [\n    {\n      type: \"Payment\",\n      handler: paymentHandler,\n      onSuccess: \"PaymentCompleted\",\n      onFailure: \"PaymentFailed\",\n    },\n    { type: \"PaymentCompleted\", handler: completedHandler },\n    { type: \"PaymentFailed\", handler: failedHandler },\n    { type: \"SendNotification\", handler: notifyHandler }, // runs after either branch\n  ],\n}\n```\n\nSteps without `onSuccess`/`onFailure` advance sequentially as before.\n\n### Parallel Execution\n\nUse `dependsOn` to run steps concurrently. Steps without `dependsOn` start immediately in parallel; dependent steps wait for all their dependencies to complete.\n\n```ts\n{\n  name: \"BuildAndDeploy\",\n  steps: [\n    { type: \"LintCode\", handler: lintHandler },\n    { type: \"RunTests\", handler: testHandler },\n    {\n      type: \"Deploy\",\n      handler: deployHandler,\n      dependsOn: [\"LintCode\", \"RunTests\"], // waits for both to finish\n    },\n  ],\n}\n```\n\nWorkflows without any `dependsOn` fields continue to execute sequentially as before. When a parallel step fails (and has no `onFailure`), the workflow fails immediately. Dependency cycles and invalid references are detected at registration time.\n\n### Workflow Chaining\n\nTrigger follow-up workflows when a workflow finishes:\n\n- **`onSuccess`** — starts a workflow when the current one completes successfully\n- **`onFailure`** — starts a workflow when the current one fails\n- **`onComplete`** — starts a workflow regardless of outcome (runs after `onSuccess`/`onFailure`)\n\n```ts\nconst workflows = [\n  {\n    name: \"ProcessOrder\",\n    onSuccess: \"StartShipment\",\n    onFailure: \"HandleError\",\n    onComplete: \"NotifyCustomer\",\n    steps: [\n      { type: \"ValidateStock\", handler: stockHandler },\n      { type: \"ProcessPayment\", handler: paymentHandler },\n    ],\n  },\n  {\n    name: \"StartShipment\",\n    steps: [\n      { type: \"ShipOrder\", handler: shipHandler },\n    ],\n  },\n  {\n    name: \"HandleError\",\n    steps: [\n      { type: \"LogError\", handler: errorHandler },\n    ],\n  },\n  {\n    name: \"NotifyCustomer\",\n    steps: [\n      { type: \"SendEmail\", handler: emailHandler },\n    ],\n  },\n];\n```\n\nChained workflows inherit the same `requestId` and `payload` from the completed workflow.\n\n### Retry\n\nConfigure retries per step. The handler will be retried up to `maxRetries` times before being considered failed.\n\n```ts\n{\n  type: \"ProcessPayment\",\n  handler: paymentHandler,\n  retry: {\n    maxRetries: 3,\n    delayMs: 500,\n    backoff: \"exponential\",\n    jitter: true,\n    retryable: (err) => !(err instanceof ValidationError),\n  },\n}\n```\n\n### Schema Validation\n\nValidate event payloads at publish time and handler dispatch. The `SchemaValidator` type is `(payload: unknown) => void` — just throw on invalid input. This works with **any validation library** (Zod, Joi, Valibot, etc.) or plain manual checks.\n\n**Global schemas** — validated at publish time (rejects before the message is sent):\n\n```ts\nimport { z } from \"zod\";\n\nconst synkro = await Synkro.start({\n  transport: \"redis\",\n  connectionUrl: \"redis://localhost:6379\",\n  schemas: {\n    \"UserSignedUp\": (payload) => z.object({ email: z.string().email() }).parse(payload),\n    \"OrderPlaced\": (payload) => z.object({ orderId: z.string(), amount: z.number() }).parse(payload),\n  },\n  // ...\n});\n\nawait synkro.publish(\"UserSignedUp\", { email: \"invalid\" }); // throws ZodError\n```\n\n**Per-event schemas** — validated at both publish time and handler dispatch:\n\n```ts\nconst synkro = await Synkro.start({\n  events: [\n    {\n      type: \"AuditLog\",\n      schema: (payload) => z.object({ action: z.string(), userId: z.string() }).parse(payload),\n      handler: async (ctx) => {\n        // payload is guaranteed valid here\n      },\n    },\n  ],\n});\n```\n\n**Manual validation** (no dependencies):\n\n```ts\nschemas: {\n  \"UserSignedUp\": (payload) => {\n    if (!payload || typeof payload !== \"object\" || !(\"email\" in payload))\n      throw new Error(\"email is required\");\n  },\n}\n```\n\n### Event Versioning\n\nVersioned event types follow the `base:event:vN` convention. When a versioned event is published, it is automatically delivered to both the versioned channel and the base channel:\n\n```ts\n// Handler on the base event receives ALL versions (catch-all)\nsynkro.on(\"user:created\", async (ctx) => {\n  console.log(\"Any version:\", ctx.payload);\n});\n\n// Handler on a specific version receives only that version\nsynkro.on(\"user:created:v2\", async (ctx) => {\n  console.log(\"V2 only:\", ctx.payload);\n});\n\n// Publishing a versioned event delivers to both handlers above\nawait synkro.publish(\"user:created:v2\", { name: \"Alice\", role: \"admin\" });\n\n// Publishing an unversioned event delivers only to the base handler\nawait synkro.publish(\"user:created\", { name: \"Bob\" });\n```\n\nUtility exports for working with versioned event types:\n\n```ts\nimport { parseEventType, isVersionedEvent } from \"@synkro/core\";\n\nparseEventType(\"user:created:v2\");\n// { base: \"user:created\", version: 2, raw: \"user:created:v2\" }\n\nisVersionedEvent(\"user:created:v2\"); // true\nisVersionedEvent(\"user:created\");    // false\n```\n\n## API\n\n### `Synkro.start(options): Promise<Synkro>`\n\nCreates and returns a running instance.\n\n```ts\ntype SynkroOptions = {\n  transport?: \"redis\" | \"in-memory\"; // defaults to \"redis\"\n  connectionUrl?: string; // required for Redis transport\n  debug?: boolean;\n  events?: SynkroEvent[];\n  workflows?: SynkroWorkflow[];\n  handlers?: object[];\n  retention?: RetentionConfig;\n  schemas?: Record<string, SchemaValidator>; // global payload validators per event type\n  drainTimeout?: number; // ms to wait for in-flight handlers on stop() (default: 5000)\n  middlewares?: MiddlewareFunction[]; // middleware chain applied to all handlers\n};\n```\n\n### `synkro.on(eventType, handler, retry?): void`\n\nRegisters an event handler at runtime.\n\n```ts\nsynkro.on(\"StockUpdate\", async (ctx) => {\n  console.log(ctx.requestId, ctx.payload);\n});\n```\n\n### `synkro.publish(event, payload?, requestId?): Promise<string>`\n\nPublishes an event or starts a workflow. Returns a `requestId` for correlation. A UUID is generated by default, but you can provide your own ID. When the event type is versioned (e.g., `user:created:v2`), the event is also delivered to the base channel (`user:created`).\n\n```ts\n// Auto-generated UUID\nconst id = await synkro.publish(\"UserSignedUp\", { email: \"user@example.com\" });\n\n// Custom request ID\nconst id = await synkro.publish(\"UserSignedUp\", { email: \"user@example.com\" }, \"my-custom-id\");\n\n// Versioned event — delivers to both \"user:created:v2\" and \"user:created\" channels\nconst id = await synkro.publish(\"user:created:v2\", { name: \"Alice\" });\n```\n\n### `ctx.publish(event, payload?, requestId?): Promise<string>`\n\nPublishes an event or starts a workflow from inside a handler. Same signature as `synkro.publish`.\n\n```ts\nsynkro.on(\"OrderCompleted\", async (ctx) => {\n  const { orderId } = ctx.payload as { orderId: string };\n  await ctx.publish(\"SendInvoice\", { orderId });\n});\n```\n\n### `ctx.setPayload(data): void`\n\nMerges the given object into `ctx.payload`. The updated payload propagates to subsequent workflow steps and completion/failure events.\n\n```ts\nsynkro.on(\"ValidateStock\", async (ctx) => {\n  const available = true;\n  ctx.setPayload({ stockAvailable: available });\n  // ctx.payload is now { ...originalPayload, stockAvailable: true }\n});\n```\n\n### `synkro.off(eventType, handler?): void`\n\nRemoves an event handler at runtime. If `handler` is provided, only that specific handler is removed (by reference). If omitted, all handlers for the event type are removed.\n\n```ts\nconst handler = (ctx) => console.log(ctx.payload);\nsynkro.on(\"StockUpdate\", handler);\n\n// Later: remove this specific handler\nsynkro.off(\"StockUpdate\", handler);\n\n// Or remove all handlers for the event type\nsynkro.off(\"StockUpdate\");\n```\n\n### `synkro.getWorkflowState(requestId, workflowName): Promise<WorkflowState | null>`\n\nReturns the current state of a workflow instance, or `null` if no state exists.\n\n```ts\nconst state = await synkro.getWorkflowState(requestId, \"ProcessOrder\");\n// { workflowName: \"ProcessOrder\", currentStep: 2, status: \"running\" }\n```\n\n### `synkro.cancelWorkflow(requestId, workflowName): Promise<boolean>`\n\nCancels a running workflow. Returns `true` if the workflow was cancelled, `false` if it was not in a cancellable state. Cancelled workflows will not advance to subsequent steps.\n\n```ts\nconst cancelled = await synkro.cancelWorkflow(requestId, \"ProcessOrder\");\n```\n\n### `synkro.use(middleware): void`\n\nRegisters a middleware function that wraps every handler execution. Middlewares execute in registration order using the Koa-style onion model.\n\n```ts\nsynkro.use(async (ctx, next) => {\n  console.log(`[${ctx.eventType}] started`, ctx.requestId);\n  const start = Date.now();\n  await next();\n  console.log(`[${ctx.eventType}] finished in ${Date.now() - start}ms`);\n});\n```\n\n### `synkro.publishDelayed(event, payload, delayMs): string`\n\nPublishes an event after a one-shot delay. Returns the `requestId` immediately.\n\n```ts\nconst requestId = synkro.publishDelayed(\"reminder:send\", { userId: \"u1\" }, 60_000);\n```\n\n### `synkro.schedule(eventType, intervalMs, payload?): string`\n\nCreates a recurring event publish on a fixed interval. Returns a `scheduleId`.\n\n```ts\nconst scheduleId = synkro.schedule(\"cleanup:run\", 6 * 60 * 60 * 1000, { scope: \"all\" });\n```\n\n### `synkro.unschedule(scheduleId): boolean`\n\nCancels a scheduled recurring publish. Returns `true` if the schedule was found and cancelled.\n\n```ts\nsynkro.unschedule(scheduleId);\n```\n\n### `synkro.getWorkflowGraph(workflowName): WorkflowGraph | null`\n\nReturns the workflow definition as a directed graph with nodes and edges, or `null` if the workflow is not registered.\n\n```ts\nconst graph = synkro.getWorkflowGraph(\"ProcessOrder\");\n// { workflowName: \"ProcessOrder\", nodes: [...], edges: [...] }\n```\n\n### `synkro.stop(): Promise<void>`\n\nGracefully shuts down. Clears all scheduled timers, waits for in-flight handlers to complete (up to `drainTimeout`), then disconnects the transport.\n\n## Types\n\n```ts\ntype RetryConfig = {\n  maxRetries: number;\n  delayMs?: number; // base delay in ms (default: 1000)\n  backoff?: \"fixed\" | \"exponential\"; // delay strategy (default: \"fixed\")\n  jitter?: boolean; // randomize delay ±50% (default: false)\n  retryable?: (error: unknown) => boolean; // skip retries for non-retryable errors\n};\n\ntype SchemaValidator = (payload: unknown) => void; // throws on invalid\n\ntype SynkroEvent<T = unknown> = {\n  type: string;\n  handler: HandlerFunction<T>;\n  retry?: RetryConfig;\n  schema?: SchemaValidator;\n};\n\ntype SynkroWorkflow = {\n  name: string;\n  steps: SynkroWorkflowStep[];\n  onComplete?: string;\n  onSuccess?: string;\n  onFailure?: string;\n  timeoutMs?: number; // default timeout for all steps\n};\n\ntype SynkroWorkflowStep = {\n  type: string;\n  handler: HandlerFunction;\n  retry?: RetryConfig;\n  onSuccess?: string;\n  onFailure?: string;\n  timeoutMs?: number; // overrides workflow-level timeout\n  dependsOn?: string[]; // run after all listed steps complete\n};\n\ntype HandlerCtx<T = unknown> = {\n  requestId: string;\n  payload: T;\n  publish: PublishFunction;\n  setPayload: (data: Record<string, unknown>) => void;\n};\n\ntype PublishFunction = (\n  event: string,\n  payload?: unknown,\n  requestId?: string,\n) => Promise<string>;\n\ntype HandlerFunction<T = unknown> = (ctx: HandlerCtx<T>) => void | Promise<void>;\n\ntype WorkflowState = {\n  workflowName: string;\n  currentStep: number;\n  status: \"running\" | \"completed\" | \"failed\" | \"cancelled\";\n  completedSteps?: string[];  // parallel workflows only\n  activeSteps?: string[];     // parallel workflows only\n  parallel?: boolean;         // true for parallel workflows\n};\n\ntype MiddlewareCtx<T = unknown> = HandlerCtx<T> & {\n  eventType: string;\n};\n\ntype MiddlewareFunction = (\n  ctx: MiddlewareCtx,\n  next: () => Promise<void>,\n) => Promise<void>;\n\ntype ScheduleInfo = {\n  scheduleId: string;\n  eventType: string;\n  intervalMs: number;\n  payload?: unknown;\n  createdAt: string;\n};\n\ntype WorkflowGraph = {\n  workflowName: string;\n  nodes: WorkflowGraphNode[];\n  edges: WorkflowGraphEdge[];\n};\n\ntype WorkflowGraphNode = {\n  id: string;\n  type: \"step\";\n  label: string;\n  meta?: { retry?: RetryConfig; timeoutMs?: number };\n};\n\ntype WorkflowGraphEdge = {\n  from: string;\n  to: string;\n  label: \"next\" | \"onSuccess\" | \"onFailure\";\n};\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}