{"_id":"@absolutejs/sync-pack-digest","_rev":"9-8a880646f66255188c5eb8927776842a","name":"@absolutejs/sync-pack-digest","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@absolutejs/sync-pack-digest","version":"0.1.0","keywords":["absolutejs","sync","sync-pack","digest","scheduled","email"],"author":"Alex Kahn","license":"CC BY-NC 4.0","_id":"@absolutejs/sync-pack-digest@0.1.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"80fa7d64ffea51494df624771e86b9fbc78774d7","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-digest/-/sync-pack-digest-0.1.0.tgz","fileCount":5,"integrity":"sha512-BxeRoRG8TKONCJRXqdffJAc/ykM2EjNePl5fZydL3iXC3M2jS6eUYWJ/27wjP+uOsogEV2ISZLZX0PBkPld2/Q==","signatures":[{"sig":"MEYCIQCwR4f418R74OcuwK6e0txMcS+an+YWeWnNK674tEwB3gIhANT2F9gW7kvnF8tF7AqOy81w68AgnQzHPNB40Vyvuv6+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34427},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"80fa7d64ffea51494df624771e86b9fbc78774d7","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-BxeRoRG8TKONCJRXqdffJAc/ykM2EjNePl5fZydL3iXC3M2jS6eUYWJ/27wjP+uOsogEV2ISZLZX0PBkPld2/Q==","repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"digest"},"_npmVersion":"10.8.3","description":"Scheduled per-actor digest pack for @absolutejs/sync — cron-fired, cursor-managed, transport-agnostic","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^1.9.1"},"peerDependencies":{"@absolutejs/sync":">= 1.9.1"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-digest_0.1.0_1780002370472_0.8014366722699979","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@absolutejs/sync-pack-digest","version":"0.2.0","keywords":["absolutejs","sync","sync-pack","digest","scheduled","email"],"author":"Alex Kahn","license":"CC BY-NC 4.0","_id":"@absolutejs/sync-pack-digest@0.2.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"082353702a11b05c77e6c04baf04bf97f952d200","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-digest/-/sync-pack-digest-0.2.0.tgz","fileCount":5,"integrity":"sha512-F6/1QvgMsrN7OBR4n5/RyktxKs3B1gsS48bHoKy3lT3+ULilsLLX7DW7ybyIACJxcF3TZaBdTKJPUXTc8DsQ4Q==","signatures":[{"sig":"MEQCIC9ejKXUhz6j39pCftlK1bhY6dPY6v+BgMKJY4NLKflPAiADq0XZTSW0SrqB9EcOWRjl/7PWWdUfJgm/Nmd6dNR4dg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36536},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"082353702a11b05c77e6c04baf04bf97f952d200","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-F6/1QvgMsrN7OBR4n5/RyktxKs3B1gsS48bHoKy3lT3+ULilsLLX7DW7ybyIACJxcF3TZaBdTKJPUXTc8DsQ4Q==","repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"digest"},"_npmVersion":"10.8.3","description":"Scheduled per-actor digest pack for @absolutejs/sync — cron-fired, cursor-managed, transport-agnostic","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^1.9.2"},"peerDependencies":{"@absolutejs/sync":">= 1.9.1"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-digest_0.2.0_1780008627139_0.681258303331693","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@absolutejs/sync-pack-digest","version":"0.2.1","keywords":["absolutejs","sync","sync-pack","digest","scheduled","email"],"author":"Alex Kahn","license":"Apache-2.0","_id":"@absolutejs/sync-pack-digest@0.2.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"9ee6b15e0665685c02a07078e649402bc34c9ac5","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-digest/-/sync-pack-digest-0.2.1.tgz","fileCount":6,"integrity":"sha512-o67TT4cx4yNt8Hgx+ih4lzuvkJWgD7zilvX8oZ639twZMvszhuTYhUIvUZJW3sFKkXnhp6kMTqBScryhvfOkaQ==","signatures":[{"sig":"MEUCIQC+eJIZ5euXBjIwonY59jn73j/4g/uaXr3f5HTk7N31/AIgK+bw0Fd/YMsDf37luSnSsD4luSJ4oNuzjvIgz98sslA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47892},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"9ee6b15e0665685c02a07078e649402bc34c9ac5","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-o67TT4cx4yNt8Hgx+ih4lzuvkJWgD7zilvX8oZ639twZMvszhuTYhUIvUZJW3sFKkXnhp6kMTqBScryhvfOkaQ==","repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"digest"},"_npmVersion":"10.8.3","description":"Scheduled per-actor digest pack for @absolutejs/sync — cron-fired, cursor-managed, transport-agnostic","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^1.9.2"},"peerDependencies":{"@absolutejs/sync":">= 1.9.1"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-digest_0.2.1_1780071442479_0.15143210225452086","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@absolutejs/sync-pack-digest","version":"0.2.2","keywords":["absolutejs","sync","sync-pack","digest","scheduled","email"],"author":"Alex Kahn","license":"Apache-2.0","_id":"@absolutejs/sync-pack-digest@0.2.2","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"db52db36cf481c04afbabc2d7e3e0adc3f4c0826","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-digest/-/sync-pack-digest-0.2.2.tgz","fileCount":6,"integrity":"sha512-e1O/60GElrD+qcnUKIfC4vRB3hhJecaZTwBZI3GODfzNg/ROiHzEmtiU0/MbRJDRbJ847qpE1MmDweEpOWXOSw==","signatures":[{"sig":"MEYCIQD+BlFuY8AntnB5X4YDExGH0XMjfboPErB0/d40LoQdlwIhAL8lUtYKo4cY+mav991FU1lptyJnUD8BRhvhZeV6H/yn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47892},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"db52db36cf481c04afbabc2d7e3e0adc3f4c0826","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-e1O/60GElrD+qcnUKIfC4vRB3hhJecaZTwBZI3GODfzNg/ROiHzEmtiU0/MbRJDRbJ847qpE1MmDweEpOWXOSw==","repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"digest"},"_npmVersion":"10.8.3","description":"Scheduled per-actor digest pack for @absolutejs/sync — cron-fired, cursor-managed, transport-agnostic","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^1.9.2"},"peerDependencies":{"@absolutejs/sync":">= 1.9.1"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-digest_0.2.2_1780071572366_0.6004175968498218","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@absolutejs/sync-pack-digest","version":"0.2.3","keywords":["absolutejs","sync","sync-pack","digest","scheduled","email"],"author":"Alex Kahn","license":"Apache-2.0","_id":"@absolutejs/sync-pack-digest@0.2.3","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/sync-packs/tree/main/digest","bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"dist":{"shasum":"7233720d24fbddc8ee8415d6d50bf33b97ee78a3","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-digest/-/sync-pack-digest-0.2.3.tgz","fileCount":10,"integrity":"sha512-yXLLAE0zf/8fC3KewQv5sBh2IF2WFi8UKG52CDWJWOdqCinDMATnh36x18tF50bokkfwSZI8rPSzxepoGAVdog==","signatures":[{"sig":"MEUCIBWwXZ3Py7Ged47XJ2uOmLEwkJaR4Aq3tbPU0HdtXOAuAiEA8budvCUitBIablGCTZ1mpaPgqhR0/xlDLVZVZKqYlU4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1148155},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"7233720d24fbddc8ee8415d6d50bf33b97ee78a3","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-yXLLAE0zf/8fC3KewQv5sBh2IF2WFi8UKG52CDWJWOdqCinDMATnh36x18tF50bokkfwSZI8rPSzxepoGAVdog==","absolutejs":{"manifestContract":1},"repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"digest"},"_npmVersion":"10.8.3","description":"Scheduled per-actor digest pack for @absolutejs/sync — cron-fired, cursor-managed, transport-agnostic","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^1.9.2"},"peerDependencies":{"@absolutejs/sync":">= 1.9.1"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-digest_0.2.3_1783965471225_0.8065241611390381","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@absolutejs/sync-pack-digest","version":"0.2.4","keywords":["absolutejs","sync","sync-pack","digest","scheduled","email"],"author":"Alex Kahn","license":"Apache-2.0","_id":"@absolutejs/sync-pack-digest@0.2.4","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/sync-packs/tree/main/digest","bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"dist":{"shasum":"60b74b4c5e817deb120cef756304a4538724c2a9","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-digest/-/sync-pack-digest-0.2.4.tgz","fileCount":10,"integrity":"sha512-koA2W03hfUI2+AQtsJ1Cd7Xw7MHM5ZtLJBwKLfDH5UkFhAp7h5z6I4lESfA3/llLpx/mY9n5JRPKb7ePJOj7QQ==","signatures":[{"sig":"MEUCIQD6cBLA72lXxPhSdoJkoHq/BT7N7rPMF5oEpVP7TtYQOgIgTzE8uDi5lwXh1mjJP7UzhMmNa58pcH29bkqrQwMOETQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1169780},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"60b74b4c5e817deb120cef756304a4538724c2a9","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-koA2W03hfUI2+AQtsJ1Cd7Xw7MHM5ZtLJBwKLfDH5UkFhAp7h5z6I4lESfA3/llLpx/mY9n5JRPKb7ePJOj7QQ==","absolutejs":{"manifestContract":2},"repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"digest"},"_npmVersion":"10.8.3","description":"Scheduled per-actor digest pack for @absolutejs/sync — cron-fired, cursor-managed, transport-agnostic","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"^1.9.2"},"peerDependencies":{"@absolutejs/sync":">= 1.9.1"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-digest_0.2.4_1784846211775_0.39282791067347445","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@absolutejs/sync-pack-digest","version":"0.2.5","keywords":["absolutejs","sync","sync-pack","digest","scheduled","email"],"author":"Alex Kahn","license":"Apache-2.0","_id":"@absolutejs/sync-pack-digest@0.2.5","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/sync-packs/tree/main/digest","bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"dist":{"shasum":"d0ea8f518f5ab15a3f26dafbf206e261f2baf7fe","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-digest/-/sync-pack-digest-0.2.5.tgz","fileCount":10,"integrity":"sha512-sFeWEwUsnlicJUwFHuJOiH80A8Ts5uYlyBY7cPzJ6++LRm+zXLG2FIReV/B03LUPXYEWdFI/DXxL/wQtIMMwFQ==","signatures":[{"sig":"MEUCIQD6jWzYFSbd+mjwrKG9ifdGe0qzrBdKv3l69kt9MbEArQIgKwfcFhijfe1J8now/w2R1khu9fTY3ny/bLFO+qOyBk0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":512422},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"d0ea8f518f5ab15a3f26dafbf206e261f2baf7fe","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-sFeWEwUsnlicJUwFHuJOiH80A8Ts5uYlyBY7cPzJ6++LRm+zXLG2FIReV/B03LUPXYEWdFI/DXxL/wQtIMMwFQ==","absolutejs":{"runtimePeers":{"@absolutejs/sync":{"range":">=2.11.0 <3","tested":"2.11.0","buildExternals":["@absolutejs/sync"],"artifactImports":["@absolutejs/sync/engine"]}},"manifestContract":2},"repository":{"url":"https://github.com/absolutejs/sync-packs.git","type":"git","directory":"digest"},"_npmVersion":"10.8.3","description":"Scheduled per-actor digest pack for @absolutejs/sync — cron-fired, cursor-managed, transport-agnostic","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"2.11.0"},"peerDependencies":{"@absolutejs/sync":">=2.11.0 <3"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-digest_0.2.5_1784913347631_0.4352627674780154","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@absolutejs/sync-pack-digest","version":"0.2.6","keywords":["absolutejs","sync","sync-pack","digest","scheduled","email"],"author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/sync-pack-digest@0.2.6","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/sync-packs/tree/main/digest","bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"dist":{"shasum":"c90f3e47a428cc4325a1b0c52cf0334bf55cd391","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-digest/-/sync-pack-digest-0.2.6.tgz","fileCount":10,"integrity":"sha512-9kezZw02WfJ6O+XA2IZFI0AgS3nXk01RQaUQIofQGnhK8dEChF/H7qM1ZHS9cA2wNnMdqzrtd4Op56hX8fkgig==","signatures":[{"sig":"MEQCIC1di5oWxn6NaSL1cV0Xb9GnRi4wIOfVryjw44OKKcIDAiANUQWipfTSIA3BnDEH9ExRwPcMJpcdTgkgYQuD7xZeTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":520327},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"ba7c2594b58ad9e1cd434195d96823ba678f2260","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/sync-packs.git","type":"git","directory":"digest"},"_npmVersion":"10.9.2","description":"Scheduled per-actor digest pack for @absolutejs/sync — cron-fired, cursor-managed, transport-agnostic","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/sync":"2.11.0"},"peerDependencies":{"@absolutejs/sync":">=2.11.0 <3"},"_npmOperationalInternal":{"tmp":"tmp/sync-pack-digest_0.2.6_1787720835211_0.31516219989955263","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@absolutejs/sync-pack-digest","version":"0.3.0","description":"Scheduled per-actor digest pack for @absolutejs/sync — cron-fired, cursor-managed, transport-agnostic","repository":{"type":"git","url":"git+https://github.com/absolutejs/sync-packs.git","directory":"digest"},"homepage":"https://github.com/absolutejs/sync-packs/tree/main/digest","bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","type":"module","license":"Apache-2.0","author":{"name":"Alex Kahn"},"publishConfig":{"access":"public"},"keywords":["absolutejs","sync","sync-pack","digest","scheduled","email"],"scripts":{"build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/sync && tsc --project tsconfig.build.json && absolute-manifest emit","test":"bun test","typecheck":"tsc --noEmit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run typecheck && bun run test && bun run build && bun publish"},"peerDependencies":{"@absolutejs/sync":">=2.11.0 <3"},"devDependencies":{"@absolutejs/sync":"2.28.0","@types/bun":"1.3.14","prettier":"3.5.3","typescript":"5.8.3"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"absolutejs":{"manifestContract":2,"sync":{"localSchema":{"version":1,"localData":{"collections":[{"match":"*digest_cursors","sensitivity":"private","protection":"required","onProtectionUnavailable":"memory-only","evictionPriority":"disposable"}]}}}},"dependencies":{"@absolutejs/manifest":"^0.9.0","@sinclair/typebox":"^0.34.0"},"_id":"@absolutejs/sync-pack-digest@0.3.0","gitHead":"f6a9d1a741b1b3f39977cea64ba6931b3f2f61db","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-G/hbzA6HrOagNfnSMpe7FXJvuEaUb9igxgFVHkuIopnLjZSrKls/0fMvQeI+iJn1qrYon3+Y+PHLCg2KnHm1Dw==","shasum":"06912bb3f2970765d89d4192a399c3b954431a41","tarball":"https://registry.npmjs.org/@absolutejs/sync-pack-digest/-/sync-pack-digest-0.3.0.tgz","fileCount":10,"unpackedSize":520726,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDbZ+QfT7Qp0FbDljVgy2spy1a8ypvtHNiH4A3xjkvqzQIgOtOtCzrKSG+EpnyBXtqNFd5U0hGLFInMcxnx4q4gwJ4="}]},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"directories":{},"maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sync-pack-digest_0.3.0_1787723201088_0.03809184442090996"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-28T21:06:10.257Z","modified":"2026-08-26T05:46:41.407Z","0.1.0":"2026-05-28T21:06:10.630Z","0.2.0":"2026-05-28T22:50:27.354Z","0.2.1":"2026-05-29T16:17:22.622Z","0.2.2":"2026-05-29T16:19:32.513Z","0.2.3":"2026-07-13T17:57:51.409Z","0.2.4":"2026-07-23T22:36:51.941Z","0.2.5":"2026-07-24T17:15:47.810Z","0.2.6":"2026-08-26T05:07:15.384Z","0.3.0":"2026-08-26T05:46:41.216Z"},"bugs":{"url":"https://github.com/absolutejs/sync-packs/issues"},"author":{"name":"Alex Kahn"},"license":"Apache-2.0","homepage":"https://github.com/absolutejs/sync-packs/tree/main/digest","keywords":["absolutejs","sync","sync-pack","digest","scheduled","email"],"repository":{"type":"git","url":"git+https://github.com/absolutejs/sync-packs.git","directory":"digest"},"description":"Scheduled per-actor digest pack for @absolutejs/sync — cron-fired, cursor-managed, transport-agnostic","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"readme":"# @absolutejs/sync-pack-digest\n\nScheduled per-actor digest emails as a sync pack for\n[`@absolutejs/sync`](https://github.com/absolutejs/sync). Cron-fires a\nschedule that iterates the host's actor list, asks the host to build a\ndigest payload, and dispatches it through a host-provided `send` adapter.\nThe pack does NOT ship an SMTP client — you bring your own (Resend, SES,\nPostmark, or a CLI for tests).\n\n```bash\nbun add @absolutejs/sync-pack-digest\n```\n\n## Usage\n\n```ts\nimport { createSyncEngine } from '@absolutejs/sync/engine';\nimport { createDigestPack } from '@absolutejs/sync-pack-digest';\n\nconst engine = createSyncEngine();\nengine.registerPack(\n\tcreateDigestPack({\n\t\t// Cron pattern for the digest fire. Default '0 8 * * 1' (Mon 8am).\n\t\tcron: '0 8 * * 1',\n\n\t\t// REQUIRED: yield the actor ids to iterate per fire. The host's\n\t\t// data layer is the source of truth for \"who exists\" — the pack\n\t\t// just maintains per-actor cursors.\n\t\tlistActors: () => db.users.allActiveIds(),\n\n\t\t// REQUIRED: build the payload for one actor. `since` is the actor's\n\t\t// last successful send (or null on first-ever). Return null to skip\n\t\t// this actor silently (no content this week).\n\t\tbuildDigest: async (actorId, since) => {\n\t\t\tconst items = await db.feed.since(actorId, since ?? new Date(0));\n\t\t\tif (items.length === 0) return null;\n\t\t\treturn {\n\t\t\t\tto: await db.users.email(actorId),\n\t\t\t\tsubject: `Your weekly digest`,\n\t\t\t\tbody: render(items),\n\t\t\t};\n\t\t},\n\n\t\t// REQUIRED: host's transport adapter. Pack catches throws per\n\t\t// actor so one bad send doesn't block the rest.\n\t\tsend: async (msg) => await resend.send(msg),\n\n\t\t// OPTIONAL: back-pressure. Default 1000.\n\t\tmaxActorsPerFire: 1000,\n\n\t\t// OPTIONAL: per-actor cool-down. Default 168 hours = 1 week. Match\n\t\t// to your cron — weekly cron + 168h = each actor gets one digest\n\t\t// per fire; daily cron + 168h = each actor gets at most one per week.\n\t\tminHoursBetweenDigests: 168,\n\n\t\t// OPTIONAL: surface failures (default logs to console.error).\n\t\tonActorFailure: ({ actorId, phase, error }) => {\n\t\t\tlogger.warn({ actorId, phase, error }, 'digest failure');\n\t\t},\n\n\t\t// OPTIONAL: outer schedule retry (sync 1.9.0+). Defaults to no\n\t\t// retry — per-actor failures are handled internally; this is for\n\t\t// transient infra failures (DB, etc) of the whole fire. The next\n\t\t// cron fire catches up anyway.\n\t\t// retry: { maxAttempts: 3, backoff: exponentialBackoff() },\n\t})\n);\n```\n\n## The pack exposes\n\n| Surface     | Name              | What it does                                                               |\n| ----------- | ----------------- | -------------------------------------------------------------------------- |\n| Collection  | `digest_cursors`  | Subscribe (no params) — each actor sees their own `lastSentAt` cursor      |\n| Schedule    | `digest:fire`     | Cron handler. Call `engine.runSchedule('digest:fire')` directly for tests  |\n\n## Failure semantics\n\nThree failure phases, each independent per actor:\n\n| Phase         | Cause                          | Effect                                            |\n| ------------- | ------------------------------ | ------------------------------------------------- |\n| `buildDigest` | Host's content builder threw   | `onActorFailure` fires; cursor unchanged; skip    |\n| `send`        | Host's transport adapter threw | `onActorFailure` fires; cursor unchanged; skip    |\n| `cursor`      | Cursor update failed post-send | `onActorFailure` fires (email already went out)   |\n\nA failure on actor N doesn't affect actor N+1; the schedule keeps going.\n\nThe `cursor` phase is the one to watch: the email already went out but the\ncursor didn't update, so the actor may double-receive next fire. The pack\nlogs through `onActorFailure` so the operator notices.\n\n## Cursor row\n\n```ts\ntype DigestCursor = {\n\tid: string; // = actorId\n\tactorId: string;\n\tlastSentAt: number; // epoch ms\n\tlastSubject: string;\n};\n```\n\nThe collection is scoped per actor by default (each actor sees only their\nown cursor — useful for a \"last digest: 5 days ago\" UI). Hosts who want\nan admin view can register their own permissions on top — host wins-last.\n\n## Storage\n\nDefault: per-instance in-memory cursor store. For a persistent backend,\npass a custom `store`:\n\n```ts\nimport {\n\tcreateDigestPack,\n\ttype DigestStore,\n} from '@absolutejs/sync-pack-digest';\n\nconst store: DigestStore = {\n\tgetById: (id) => /* SELECT * FROM digest_cursors WHERE id = $1 */,\n\treader: { all: () => /* SELECT * FROM digest_cursors */ },\n\twriter: { insert, update, delete },\n};\n```\n\n## Multiple instances\n\nPass a `prefix` to coexist with other digest pack instances (e.g. one per\nproduct surface, with different crons / templates):\n\n```ts\nengine.registerPack(createDigestPack({ prefix: 'team_', /* ... */ }));\nengine.registerPack(createDigestPack({ prefix: 'cust_', /* ... */ }));\n\n// Tables:       team_digest_cursors,  cust_digest_cursors\n// Schedules:    team_digest:fire,     cust_digest:fire\n// Collections:  team_digest_cursors,  cust_digest_cursors\n```\n","readmeFilename":"README.md"}