{"_id":"@ackee/kesha","_rev":"4-afbfcb1d9c89494529beacec77546869","name":"@ackee/kesha","dist-tags":{"latest":"0.4.1"},"versions":{"0.2.3":{"name":"@ackee/kesha","version":"0.2.3","keywords":[],"author":{"name":"Pavel Švagr","email":"s.pavel66@gmail.com"},"license":"MIT","_id":"@ackee/kesha@0.2.3","maintainers":[{"name":"pivl","email":"s.pavel66@gmail.com"},{"name":"hofp37","email":"hoffmann.p37@gmail.com"},{"name":"grissius","email":"grissius@gmail.com"},{"name":"ackeecz","email":"ackeedevelopment@gmail.com"},{"name":"horaklukas","email":"horaklukas@centrum.cz"},{"name":"borecekbaji","email":"jakub.baierl@ackee.cz"},{"name":"davidbilik","email":"david.bilik@ackee.cz"}],"contributors":[{"name":"Pavel Švagr","email":"s.pavel66@gmail.com"},{"name":"Jaroslav Šmolík","email":"grissius@gmail.com"},{"name":"Michal Vlasák","email":"michal.vlasak@ackee.cz"}],"homepage":"https://github.com/AckeeCZ/kesha#readme","bugs":{"url":"https://github.com/AckeeCZ/kesha/issues"},"dist":{"shasum":"34edb39f62269b577270b4862250cc271eeba0e3","tarball":"https://registry.npmjs.org/@ackee/kesha/-/kesha-0.2.3.tgz","fileCount":48,"integrity":"sha512-yYAYOfT0/0eICBToSjWTjpiwGqtI2EdRhUPZz0gCCcmD3Wt32DObl/kWD0bhAXPRFcnYfinxFPNCrVsyauXSYQ==","signatures":[{"sig":"MEUCIQD9bpFQqZRODr9htRwyHvvWN2QJx+k9C++rFQnKfxdaxAIgEPpzIbVqfg22PMwPiteZ6xD+Y09RgBa45IbZ3HhxtzI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":59033,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJioFqyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmokBg//cJ/Huf/jnhlbYsq1fJa5URrisddPjN9szGz194vBpUGuH1+N\r\nR2bh0J3rSv/QHxEcjQvrbGycdWLQYOLC4meIybc3utadh62eGd2B/ycLHePC\r\n9KgwwhGO7paWyTDLpPJnh+1roaAXRJvLBU5pVGT3WKvRd3r06LvIY+w5bgEe\r\n/up/S5v/RLocWPdJ4Bsy2X81kJNhuzetLbbY+xAzV9Tl6blXYxI/aRy/Go/X\r\njnUn6UoVdB8WLn0+Xmqc2IEG5icnuHZpgtJVX6PlmtENIWhsE9HDXYJH6l/c\r\nC0xW6AQ0CyE26y56cUKvF9TbwtIwo5CQOAmZyn7SltBIz1NizI9Q7Bue22+6\r\ne33n+2VN1gI6fJkEcaXiImfYZhAliuBf2sm+A/lbhycQK+RrnI59JSC8SECa\r\n3pKcVT5ch/SAPaA/LBCwjxQQR8j7rXUHhswu6N1n5k98s054YuiAfK+Y1wf7\r\nRc1xJpJFwEAtKCnV0EV9+A9sdjhT2HB/X1x5CYM9XN/z5c7mYC78s7OO77mw\r\nxGXPDJAkhXW9R0mEOdd/SwT0fE2Zf1EcZ65jECGxRLDJQc8dx9UFsF2LxGjb\r\nBaebHq2LQwR2kXsaLax1oE99wK20LAmx2vRXXQf8Fj6E92iCbl2L7h166KMS\r\n9ZSH9NzH/MOH9Vk+KIIlKm446RQ4Px2TQJo=\r\n=Tz0/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=16.1.0"},"gitHead":"ea990b09ce8c20907f5d866205d39a65b54e8239","scripts":{"test":"jest --colors --forceExit --runInBand","build":"tsc"},"_npmUser":{"name":"ackeecz","email":"ackeedevelopment@gmail.com"},"repository":{"url":"git+https://github.com/AckeeCZ/kesha.git","type":"git"},"_npmVersion":"8.5.5","description":"Caching utils based on ioredis and dataloaders","directories":{},"_nodeVersion":"16.15.0","dependencies":{"ioredis":"^5.0.3","dataloader":"^2.1.0","redis-dataloader":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.2.0","husky":"^4.2.3","ts-jest":"^27.0.5","typescript":"^4.4.4","@types/jest":"^27.4.1","lint-staged":"^11.1.2","@ackee/styleguide-backend-config":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/kesha_0.2.3_1654676146336_0.6973146045135865","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@ackee/kesha","version":"0.3.0","keywords":[],"author":{"name":"Pavel Švagr","email":"s.pavel66@gmail.com"},"license":"MIT","_id":"@ackee/kesha@0.3.0","maintainers":[{"name":"pivl","email":"s.pavel66@gmail.com"},{"name":"hofp37","email":"hoffmann.p37@gmail.com"},{"name":"grissius","email":"grissius@gmail.com"},{"name":"ackeecz","email":"ackeedevelopment@gmail.com"},{"name":"horaklukas","email":"horaklukas@centrum.cz"},{"name":"borecekbaji","email":"jakub.baierl@ackee.cz"},{"name":"davidbilik","email":"david.bilik@ackee.cz"}],"contributors":[{"name":"Pavel Švagr","email":"s.pavel66@gmail.com"},{"name":"Jaroslav Šmolík","email":"grissius@gmail.com"},{"name":"Michal Vlasák","email":"michal.vlasak@ackee.cz"}],"homepage":"https://github.com/AckeeCZ/kesha#readme","bugs":{"url":"https://github.com/AckeeCZ/kesha/issues"},"dist":{"shasum":"a24d8638d4a676bd17e966f4c8377a17f6164ed5","tarball":"https://registry.npmjs.org/@ackee/kesha/-/kesha-0.3.0.tgz","fileCount":48,"integrity":"sha512-N8JsuzLUBYGV/Cq7IbigWL4RzjwvVEXJC3vBadq/L1/QHs912PLrkQohZqmLpHz21hKaoSh9cmofKrrXlF/iuw==","signatures":[{"sig":"MEUCIQC5l8+9APa8ULO46O+pSr3tKKBiADd5iw+v49FY4D71bQIgFuuThlnEkc3XKwPZs+pAQeWNBOSy6bdV4iQyKWsyiLw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":51703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3nzkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqADQ/+IClQVp9VbEZI+AJLfluyMMO7xi++DK/9JNjSH1JpW/VGGGiE\r\n7eWkhrvjyXz6NGhM7vfaPoso45Ahlpn6eePJbUySQ6VA+59E3v55JYpOWfCO\r\nYOPJczitM0lSXmdLuEQYDvKKN3Y5LaReeKoAnjxqAOccCWMyvYZliTpZXXnL\r\n2gbUEmOfNh785Je0mzTbvDfGtpeWYk75LsWHMyg6Ot6mIyRXD6lgTGZMGLAT\r\ntkhhRqouLyh4dDBG2f16WQd/33zxqphB+b2WIX7PUyhf/yTx4q09Y1dD4tXG\r\ng0BQ+L71TPrnNZk+2DiMCpj//D3xiTvERZUEXu/Kbgq+eitI5L6BQ5NMcPy0\r\nWg8xbjjOfJGOeGqoawQttfyvDAeYxDFgvA9nJQqRR5PayRd7mLkROQGcyEI2\r\nLSb80zxza5OsOdfVxP3PashHmcrlXNWEDkYJlx69jGiEExRNk19YPHKgDWXc\r\n6jKNiiIu4taI7FkpVWO/XLnym7DOrnQPhCvAwFpxATvH8fVHiEujbR4NLjVj\r\nVnX9kzgXQ2aKVJbMDSr/hqp4DZQjJfSzeFigAvzq/h/VGnU1fY6a4DlsT+X5\r\n2UgzyTPVhiDQy1/fL2txWROmMCMgDEMMd3HUQMdl3J8AH38MqpAMyOkFW147\r\nk6Gl9nhtZGatUtAW3NHvCZ+XwtPq8f3Y8So=\r\n=5Gyy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=16.1.0"},"gitHead":"1ebdd00ac6bfbd9fb5cbda9fff1bcf22e2a39411","scripts":{"test":"jest --colors --forceExit --runInBand","build":"tsc"},"_npmUser":{"name":"ackeecz","email":"ackeedevelopment@gmail.com"},"repository":{"url":"git+https://github.com/AckeeCZ/kesha.git","type":"git"},"_npmVersion":"8.11.0","description":"Caching utils based on ioredis and dataloaders","directories":{},"_nodeVersion":"16.16.0","dependencies":{"ioredis":"^5.0.3","dataloader":"^2.1.0","redis-dataloader":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.2.0","husky":"^4.2.3","ts-jest":"^27.0.5","typescript":"^4.4.4","@types/jest":"^27.4.1","lint-staged":"^11.1.2","@ackee/styleguide-backend-config":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/kesha_0.3.0_1658748132691_0.25669117403368613","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"@ackee/kesha","version":"0.4.0","keywords":["cache","redis","dataloader","utils"],"author":{"name":"Pavel Švagr","email":"s.pavel66@gmail.com"},"license":"MIT","_id":"@ackee/kesha@0.4.0","maintainers":[{"name":"pivl","email":"s.pavel66@gmail.com"},{"name":"hofp37","email":"hoffmann.p37@gmail.com"},{"name":"grissius","email":"grissius@gmail.com"},{"name":"ackeecz","email":"ackeedevelopment@gmail.com"},{"name":"horaklukas","email":"horaklukas@centrum.cz"},{"name":"borecekbaji","email":"jakub.baierl@ackee.cz"},{"name":"davidbilik","email":"david.bilik@ackee.cz"}],"contributors":[{"name":"Pavel Švagr","email":"s.pavel66@gmail.com"},{"name":"Jaroslav Šmolík","email":"grissius@gmail.com"},{"name":"Michal Vlasák","email":"michal.vlasak@ackee.cz"}],"homepage":"https://github.com/AckeeCZ/kesha#readme","bugs":{"url":"https://github.com/AckeeCZ/kesha/issues"},"dist":{"shasum":"d2e066e417b35d6e56b66d67a7bea18b2125a9a7","tarball":"https://registry.npmjs.org/@ackee/kesha/-/kesha-0.4.0.tgz","fileCount":48,"integrity":"sha512-o2bVfguTxdnAz+PlWhe7ayR/u1K7bhDUzflaeomnU8ZtKdh0ZMMmVl3+q/kF3vtcu3zDeMX+qxXzZO5rOhK50w==","signatures":[{"sig":"MEUCIQC4GAKI/si3OeRnHDyuRaEzwlBrMDTFei+H1EDpaE3s1gIgKt2e/CLX2aJDT6zEMioS8wvoDF19JxPNyzWG35SDj9A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":51124},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"9ebe18626a2f6d0cd00926429076a29386a99db5","scripts":{"lint":"eslint '**/*.ts' -f codeframe","test":"jest --colors --forceExit --runInBand","build":"tsc"},"_npmUser":{"name":"ackeecz","email":"ackeedevelopment@gmail.com"},"repository":{"url":"git+https://github.com/AckeeCZ/kesha.git","type":"git"},"_npmVersion":"8.19.4","description":"Caching utils based on ioredis and dataloaders","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ioredis":"^5.4.1","dataloader":"^2.2.2","redis-dataloader":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","husky":"^4.2.3","ts-jest":"^29.1.4","typescript":"^5.4.5","@types/jest":"^29.5.12","lint-staged":"^11.1.2","@ackee/styleguide-backend-config":"^0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/kesha_0.4.0_1721203956972_0.03881054965267561","host":"s3://npm-registry-packages"}},"0.4.1":{"name":"@ackee/kesha","description":"Caching utils based on ioredis and dataloaders","version":"0.4.1","author":{"name":"Pavel Švagr","email":"s.pavel66@gmail.com"},"contributors":[{"name":"Pavel Švagr","email":"s.pavel66@gmail.com"},{"name":"Jaroslav Šmolík","email":"grissius@gmail.com"},{"name":"Michal Vlasák","email":"michal.vlasak@ackee.cz"}],"repository":{"type":"git","url":"git+https://github.com/AckeeCZ/kesha.git"},"main":"./dist/index.js","engines":{"node":">=20"},"license":"MIT","keywords":["cache","redis","dataloader","utils"],"scripts":{"build":"tsc","test":"jest --colors --forceExit --runInBand","lint":"eslint '**/*.ts' -f codeframe"},"dependencies":{"dataloader":"^2.2.2","ioredis":"^5.4.1","redis-dataloader":"^1.0.2"},"devDependencies":{"@ackee/styleguide-backend-config":"^0.5.0","@types/jest":"^29.5.12","husky":"^4.2.3","jest":"^29.7.0","lint-staged":"^11.1.2","ts-jest":"^29.1.4","typescript":"^5.4.5"},"gitHead":"b24f49bd953f39dd468b081d4dba9992e6180aed","types":"./dist/index.d.ts","_id":"@ackee/kesha@0.4.1","bugs":{"url":"https://github.com/AckeeCZ/kesha/issues"},"homepage":"https://github.com/AckeeCZ/kesha#readme","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-iHekcry1zveIUn8x/LFrZBDMoZBz0PTZMRxTqpHzt795Y30Vk4AsVsMAx/M/y3MbuYCe1A4i4rwSUfyjzzQ7Gg==","shasum":"46fdbd99449b0af63029af0809872577e906f68f","tarball":"https://registry.npmjs.org/@ackee/kesha/-/kesha-0.4.1.tgz","fileCount":48,"unpackedSize":51109,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ackee%2fkesha@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDN/WmpgXtSXpY+e3Avyjhgl1b6lhBSHWVr+3uLz5pm6AiEAq5dqZ+erTTGSIWzlP1kzm4S0WXJjL0Fdn9vfO85iBC4="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dffee4c9-f39a-412d-acd8-e08a091b385c"}},"directories":{},"maintainers":[{"name":"ackeecz","email":"ackeedevelopment@gmail.com"},{"name":"horaklukas","email":"horaklukas@centrum.cz"},{"name":"borecekbaji","email":"jakub.baierl@ackee.cz"},{"name":"davidbilik","email":"david.bilik@ackee.cz"},{"name":"grissius","email":"grissius@gmail.com"},{"name":"hofp37","email":"hoffmann.p37@gmail.com"},{"name":"pivl","email":"s.pavel66@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/kesha_0.4.1_1767173404874_0.6005965960976587"},"_hasShrinkwrap":false}},"time":{"created":"2022-06-08T08:15:46.243Z","modified":"2025-12-31T09:30:05.802Z","0.2.3":"2022-06-08T08:15:46.512Z","0.3.0":"2022-07-25T11:22:12.865Z","0.4.0":"2024-07-17T08:12:37.144Z","0.4.1":"2025-12-31T09:30:05.017Z"},"bugs":{"url":"https://github.com/AckeeCZ/kesha/issues"},"author":{"name":"Pavel Švagr","email":"s.pavel66@gmail.com"},"license":"MIT","homepage":"https://github.com/AckeeCZ/kesha#readme","keywords":["cache","redis","dataloader","utils"],"repository":{"type":"git","url":"git+https://github.com/AckeeCZ/kesha.git"},"description":"Caching utils based on ioredis and dataloaders","contributors":[{"name":"Pavel Švagr","email":"s.pavel66@gmail.com"},{"name":"Jaroslav Šmolík","email":"grissius@gmail.com"},{"name":"Michal Vlasák","email":"michal.vlasak@ackee.cz"}],"maintainers":[{"name":"ackeecz","email":"ackeedevelopment@gmail.com"},{"name":"horaklukas","email":"horaklukas@centrum.cz"},{"name":"borecekbaji","email":"jakub.baierl@ackee.cz"},{"name":"davidbilik","email":"david.bilik@ackee.cz"},{"name":"grissius","email":"grissius@gmail.com"},{"name":"hofp37","email":"hoffmann.p37@gmail.com"},{"name":"pivl","email":"s.pavel66@gmail.com"}],"readme":"<div align=\"center\">\n\n![](logo.png)\n\n# Kesha\n\nCaching utils based on [ioredis](https://www.npmjs.com/package/ioredis)\nand [dataloaders](https://github.com/graphql/dataloader)\n</div>\n\n## Quick start 🚀\n\n- Initialize [ioredis](https://www.npmjs.com/package/ioredis) client\n\n```typescript\nimport Redis from 'ioredis';\n\nconst redisClient = new Redis({\n  // Host, DB,...\n})\n```\n\n- Use exported utils directly f.e. [rateLimiter](src/lib/rateLimiter.ts)\n\n```typescript\nimport { rateLimiter } from 'kesha';\n\nconst rateLimitedFn = rateLimiter(redisClient, (number: number) => {\n  console.log('Called')\n}, '', 1000)\n```\n\n- or create set of utils for client with [createRedisRepository](src/lib/redisRepository.ts)\n\n```typescript\nimport { createRedisRepository } from 'kesha';\n\nconst repo = createRedisRepository(client)\n\nconst rateLimitedFn = repo.rateLimiter((number: number) => {\n  console.log('Called')\n}, '', 1000)\n```\n\n- Provide typehints for `setJSON` and `getJSON` methods\n\n```typescript\n// Per key\nconst repoPerKey = createRedisRepository<{ 'test:key': string }>(client)\n\nrepoPerKey.setJSON('test:key', {}) // TS Error: {} is not assignable to string\n\n// Using template litarals to define key prefixes (From TS 4.4+)\nconst repo = createRedisRepository<{ [K: `test:key:${number}`]: string }>(client)\n\nrepo.setJSON('test:key:1', {}) // TS Error: {} is not assignable to string\nrepo.getJSON('test:key:1') // TS: Returns string\nrepo.getJSON('test:key:a') // TS: Returns any\n\n```\n\n## Tests 🧪\n\n- Prepare docker container with Redis 🐳\n\n```bash\nsudo docker-compose -f docker-compose/docker-compose.yml up\n```\n\n- Run the tests\n\n```bash\nnpm run test\n```\n\n","readmeFilename":"README.md"}