{"_id":"@alpha018/nestjs-redisom","_rev":"6-a0ad43c8b0ad9440b08c39f18ad9aad1","name":"@alpha018/nestjs-redisom","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"@alpha018/nestjs-redisom","version":"1.0.0","keywords":["nestjs","redis","redis-om","redis-stack","database","nosql"],"author":{"name":"Tomás Alegre","email":"tomas.sa467@gmail.com"},"license":"MIT","_id":"@alpha018/nestjs-redisom@1.0.0","maintainers":[{"name":"alpha018","email":"gentle.koala1662@alphacode.cl"}],"homepage":"https://github.com/Alpha018/nestjs-redisom#readme","bugs":{"url":"https://github.com/Alpha018/nestjs-redisom/issues"},"dist":{"shasum":"ee2d1fa87df79ed82a1d1e42d726566e88eb4584","tarball":"https://registry.npmjs.org/@alpha018/nestjs-redisom/-/nestjs-redisom-1.0.0.tgz","fileCount":38,"integrity":"sha512-+VL7owNH/koVMKaMGIwvGah2OdUG4bbyFJNa6S65lYEDS+PLt1WI5UOWa+FsCwcB4ca7kAfaYyRy2Og82S380Q==","signatures":[{"sig":"MEYCIQChmOgzh0VnmGBFtjKqk1TJWfJ5kENPuud6UGkqpym1AwIhAPchSHaYFjRl7m2yI1tjGYzsyccIt5rjAannAPqguGpZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":297644},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"a55f67627072b363c3e01dd30132dd650a13cecf","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","prepare":"husky || exit 0","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/index","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"alpha018","email":"gentle.koala1662@alphacode.cl"},"repository":{"url":"git+https://github.com/Alpha018/nestjs-redisom.git","type":"git"},"_npmVersion":"11.7.0","description":"A NestJS module for RedisOM, providing a structured way to use Redis Stack JSON/Search features.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"rxjs":"^7.8.1","redis":"^5.10.0","redis-om":"^0.4.7","@nestjs/core":"^11.0.1","@nestjs/common":"^11.0.1","reflect-metadata":"^0.2.2","@nestjs/platform-express":"^11.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","uuid":"^11.1.0","husky":"^9.1.7","dotenv":"^17.2.3","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/uuid":"^11.0.0","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@commitlint/cli":"^20.2.0","@faker-js/faker":"^10.1.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/supertest":"^6.0.2","semantic-release":"^25.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","jest-mock-extended":"^4.0.0","source-map-support":"^0.5.21","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","eslint-plugin-sonarjs":"^3.0.5","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2","eslint-plugin-security":"^3.0.1","@semantic-release/github":"^12.0.2","@stylistic/eslint-plugin":"^5.6.1","@semantic-release/changelog":"^6.0.3","eslint-plugin-perfectionist":"^5.1.0","@commitlint/config-conventional":"^20.2.0","@typescript-eslint/eslint-plugin":"^8.50.1","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-redisom_1.0.0_1767039570575_0.7141588525193099","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@alpha018/nestjs-redisom","version":"1.0.1","keywords":["nestjs","redis","redis-om","redis-stack","database","nosql"],"author":{"name":"Tomás Alegre","email":"tomas.sa467@gmail.com"},"license":"MIT","_id":"@alpha018/nestjs-redisom@1.0.1","maintainers":[{"name":"alpha018","email":"gentle.koala1662@alphacode.cl"}],"homepage":"https://github.com/Alpha018/nestjs-redisom#readme","bugs":{"url":"https://github.com/Alpha018/nestjs-redisom/issues"},"dist":{"shasum":"e667d843dcf491fbfdbbc380f2f03c8872cab888","tarball":"https://registry.npmjs.org/@alpha018/nestjs-redisom/-/nestjs-redisom-1.0.1.tgz","fileCount":38,"integrity":"sha512-X9CEqJY22gFjzkfxyLR52FzBJ3jcKpCfQ/ErybsVt8mzM8Du5NGd4ReyXrH2yUuD3lZmSOe1AiyKg/j514N/ZQ==","signatures":[{"sig":"MEUCIQDS7oTaEVkAPVJkYk51LpZ/I5EWr+7ksZcrtm9abD3s/AIgKl2xIxOa6Tk8Fm52DtlZebx/a81KFXuirrTzxOEkut8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":299254},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"f4cdde9e64b14c3c60c7f05d209eb4e35f9805f1","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","prepare":"husky || exit 0","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/index","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"alpha018","email":"gentle.koala1662@alphacode.cl"},"repository":{"url":"git+https://github.com/Alpha018/nestjs-redisom.git","type":"git"},"_npmVersion":"11.7.0","description":"A NestJS module for RedisOM, providing a structured way to use Redis Stack JSON/Search features.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"rxjs":"^7.8.1","redis":"^5.10.0","redis-om":"^0.4.7","@nestjs/core":"^11.0.1","@nestjs/common":"^11.0.1","reflect-metadata":"^0.2.2","@nestjs/platform-express":"^11.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","uuid":"^11.1.0","husky":"^9.1.7","dotenv":"^17.2.3","eslint":"^9.18.0","globals":"^16.0.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@swc/cli":"^0.6.0","prettier":"^3.4.2","@swc/core":"^1.10.7","supertest":"^7.0.0","ts-loader":"^9.5.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@nestjs/cli":"^11.0.0","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/uuid":"^11.0.0","@types/express":"^5.0.0","tsconfig-paths":"^4.2.0","@commitlint/cli":"^20.2.0","@faker-js/faker":"^10.1.0","@nestjs/testing":"^11.0.1","@eslint/eslintrc":"^3.2.0","@types/supertest":"^6.0.2","semantic-release":"^25.0.2","typescript-eslint":"^8.20.0","@nestjs/schematics":"^11.0.0","jest-mock-extended":"^4.0.0","source-map-support":"^0.5.21","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","eslint-plugin-sonarjs":"^3.0.5","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.2","eslint-plugin-security":"^3.0.1","@semantic-release/github":"^12.0.2","@stylistic/eslint-plugin":"^5.6.1","@semantic-release/changelog":"^6.0.3","eslint-plugin-perfectionist":"^5.1.0","@commitlint/config-conventional":"^20.2.0","@typescript-eslint/eslint-plugin":"^8.50.1","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-redisom_1.0.1_1767122860092_0.3925257599694607","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@alpha018/nestjs-redisom","version":"1.0.2","keywords":["nestjs","redis","redis-om","redis-stack","database","nosql"],"author":{"name":"Tomás Alegre","email":"tomas.sa467@gmail.com"},"license":"MIT","_id":"@alpha018/nestjs-redisom@1.0.2","maintainers":[{"name":"alpha018","email":"gentle.koala1662@alphacode.cl"}],"homepage":"https://github.com/Alpha018/nestjs-redisom#readme","bugs":{"url":"https://github.com/Alpha018/nestjs-redisom/issues"},"dist":{"shasum":"065122c7458269d020b31ca277d6e0f5281d4d1a","tarball":"https://registry.npmjs.org/@alpha018/nestjs-redisom/-/nestjs-redisom-1.0.2.tgz","fileCount":38,"integrity":"sha512-Au/ivJCTOebVqkRjmuIPiEcIjniBdpC82ORQ9nCvnVciF54q1AQfgm9vQK0ckW0Gf0I/x/6zFQk33TEHTFG8Ag==","signatures":[{"sig":"MEUCIE4tI2wFpxevH6EBaS45u134XQflVTx2FCu7/SpVhq8IAiEAx03BFoDiSFwttq3lOC8011XN4M1iJNgjQHBMWeflFGc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":356878},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"a5d6a30581693f860b548f2925cc99c4ebd52c10","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","prepare":"husky || exit 0","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","start:dev":"nest start --watch","start:prod":"node dist/index","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch"},"_npmUser":{"name":"alpha018","email":"gentle.koala1662@alphacode.cl"},"repository":{"url":"git+https://github.com/Alpha018/nestjs-redisom.git","type":"git"},"_npmVersion":"11.7.0","description":"A NestJS module for RedisOM, providing a structured way to use Redis Stack JSON/Search features.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"rxjs":"^7.8.2","redis":"^5.10.0","redis-om":"^0.4.7","@nestjs/core":"^11.1.11","@nestjs/common":"^11.1.11","reflect-metadata":"^0.2.2","@nestjs/platform-express":"^11.1.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","uuid":"^11.1.0","husky":"^9.1.7","dotenv":"^17.2.3","eslint":"^9.39.2","globals":"^17.0.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","@swc/cli":"^0.7.9","prettier":"^3.7.4","@swc/core":"^1.15.8","supertest":"^7.1.4","ts-loader":"^9.5.4","@eslint/js":"^9.39.2","typescript":"^5.9.3","@nestjs/cli":"^11.0.14","@types/jest":"^30.0.0","@types/node":"^25.0.3","@types/uuid":"^11.0.0","@types/express":"^5.0.6","tsconfig-paths":"^4.2.0","@commitlint/cli":"^20.3.0","@faker-js/faker":"^10.1.0","@nestjs/testing":"^11.1.11","@eslint/eslintrc":"^3.3.3","@types/supertest":"^6.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.51.0","@nestjs/schematics":"^11.0.9","jest-mock-extended":"^4.0.0","source-map-support":"^0.5.21","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","eslint-plugin-sonarjs":"^3.0.5","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","eslint-plugin-security":"^3.0.1","@semantic-release/github":"^12.0.2","@stylistic/eslint-plugin":"^5.6.1","@semantic-release/changelog":"^6.0.3","eslint-plugin-perfectionist":"^5.2.0","@commitlint/config-conventional":"^20.3.0","@typescript-eslint/eslint-plugin":"^8.51.0","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-redisom_1.0.2_1767312975818_0.8028724733758625","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@alpha018/nestjs-redisom","version":"1.1.0","keywords":["nestjs","redis","redis-om","redis-stack","database","nosql"],"author":{"name":"Tomás Alegre","email":"tomas.sa467@gmail.com"},"license":"MIT","_id":"@alpha018/nestjs-redisom@1.1.0","maintainers":[{"name":"alpha018","email":"gentle.koala1662@alphacode.cl"}],"homepage":"https://github.com/Alpha018/nestjs-redisom#readme","bugs":{"url":"https://github.com/Alpha018/nestjs-redisom/issues"},"dist":{"shasum":"e5773361ba2a1f4cc2671de6a3b939729b5afd37","tarball":"https://registry.npmjs.org/@alpha018/nestjs-redisom/-/nestjs-redisom-1.1.0.tgz","fileCount":50,"integrity":"sha512-9cbuB/56z3re3MSIkZbOGgQjDxNHl74044HdZA3DSwpCCb+AK0AhrIFepG8SvHamqTrfoO5+xa+Hb/wgDrzx1g==","signatures":[{"sig":"MEYCIQCdhZnNWJFVbDsnYIukkfW2hW0BEeCwjVUIAK9BHaYb1QIhAMqd6CyTurVk3EzNIb1EX3jybbkHSAE+6xGE0mLLM28m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":373793},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"dbbb4a4c2e17c8eed869a0aeb7d34a88a06b88ab","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","prepare":"husky || exit 0","test:all":"jest && REDIS_USE_CLUSTER=false jest --config ./test/jest-e2e.json --runInBand && REDIS_USE_CLUSTER=true jest --config ./test/jest-e2e.json --runInBand","test:cov":"jest --coverage","test:e2e":"REDIS_USE_CLUSTER=false jest --config ./test/jest-e2e.json --runInBand","start:dev":"nest start --watch","start:prod":"node dist/index","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch","test:e2e:cluster":"REDIS_USE_CLUSTER=true jest --config ./test/jest-e2e.json --runInBand"},"_npmUser":{"name":"alpha018","email":"gentle.koala1662@alphacode.cl"},"repository":{"url":"git+https://github.com/Alpha018/nestjs-redisom.git","type":"git"},"_npmVersion":"11.11.1","description":"A NestJS module for RedisOM, providing a structured way to use Redis Stack JSON/Search features.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"rxjs":"^7.8.2","redis":"^5.11.0","redis-om":"^0.4.7","@nestjs/core":"^11.1.16","@nestjs/common":"^11.1.16","reflect-metadata":"^0.2.2","@nestjs/platform-express":"^11.1.16"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","uuid":"^11.1.0","husky":"^9.1.7","dotenv":"^17.3.1","eslint":"^10.0.3","globals":"^17.4.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","@swc/cli":"^0.7.10","prettier":"^3.8.1","@swc/core":"^1.15.18","supertest":"^7.2.2","ts-loader":"^9.5.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@nestjs/cli":"^11.0.16","@types/jest":"^30.0.0","@types/node":"^25.4.0","@types/uuid":"^11.0.0","@types/express":"^5.0.6","tsconfig-paths":"^4.2.0","@commitlint/cli":"^20.4.3","@faker-js/faker":"^10.3.0","@nestjs/testing":"^11.1.16","@eslint/eslintrc":"^3.3.5","@types/supertest":"^7.2.0","semantic-release":"^25.0.3","typescript-eslint":"^8.57.0","@nestjs/schematics":"^11.0.9","jest-mock-extended":"^4.0.0","source-map-support":"^0.5.21","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","eslint-plugin-sonarjs":"^4.0.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","eslint-plugin-security":"^4.0.0","@semantic-release/github":"^12.0.6","@stylistic/eslint-plugin":"^5.10.0","@typescript-eslint/parser":"^8.57.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-perfectionist":"^5.6.0","@commitlint/config-conventional":"^20.4.3","@typescript-eslint/eslint-plugin":"^8.57.0","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-redisom_1.1.0_1773261536356_0.5937150901547334","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@alpha018/nestjs-redisom","version":"1.1.1","keywords":["nestjs","redis","redis-om","redis-stack","database","nosql"],"author":{"name":"Tomás Alegre","email":"tomas.sa467@gmail.com"},"license":"MIT","_id":"@alpha018/nestjs-redisom@1.1.1","maintainers":[{"name":"alpha018","email":"gentle.koala1662@alphacode.cl"}],"homepage":"https://github.com/Alpha018/nestjs-redisom#readme","bugs":{"url":"https://github.com/Alpha018/nestjs-redisom/issues"},"dist":{"shasum":"e449a1b5b921a50c31ea87d82d71361f5f643113","tarball":"https://registry.npmjs.org/@alpha018/nestjs-redisom/-/nestjs-redisom-1.1.1.tgz","fileCount":49,"integrity":"sha512-POmcwGfgtgbJ3SyJKGxc1xv8RBiO6JcrdePuHoi4eZrOit7jzfqN5StAVHXFar11eHXQXl4mPrOFyeTlH+ze/Q==","signatures":[{"sig":"MEUCIQCe2ylMg1zUWrBKhCXZWQEikuV9bHw3HgaUFKnYSkS1HAIgJrQkwGGk/CWGMAIVutRa3kUezsDtTrRKprX/2aalI1I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54649},"jest":{"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"testEnvironment":"node","coverageDirectory":"../coverage","collectCoverageFrom":["**/*.(t|j)s"],"moduleFileExtensions":["js","json","ts"]},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"55e03466b9d8fd9e06e75d57a5cbb4d3bf648f5e","private":false,"scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"nest build","start":"nest start","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","prepare":"husky || exit 0","test:all":"jest && REDIS_USE_CLUSTER=false jest --config ./test/jest-e2e.json --runInBand && REDIS_USE_CLUSTER=true jest --config ./test/jest-e2e.json --runInBand","test:cov":"jest --coverage","test:e2e":"REDIS_USE_CLUSTER=false jest --config ./test/jest-e2e.json --runInBand","start:dev":"nest start --watch","start:prod":"node dist/index","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","start:debug":"nest start --debug --watch","test:e2e:cluster":"REDIS_USE_CLUSTER=true jest --config ./test/jest-e2e.json --runInBand"},"_npmUser":{"name":"alpha018","email":"gentle.koala1662@alphacode.cl"},"repository":{"url":"git+https://github.com/Alpha018/nestjs-redisom.git","type":"git"},"_npmVersion":"11.18.0","description":"A NestJS module for RedisOM, providing a structured way to use Redis Stack JSON/Search features.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"rxjs":"^7.8.2","redis":"^6.1.0","redis-om":"^0.4.7","@nestjs/core":"^11.1.28","@nestjs/common":"^11.1.28","reflect-metadata":"^0.2.2","@nestjs/platform-express":"^11.1.28"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","uuid":"^11.1.0","husky":"^9.1.7","dotenv":"^17.4.2","eslint":"^10.7.0","globals":"^17.7.0","ts-jest":"^29.4.11","ts-node":"^10.9.2","@swc/cli":"^0.8.1","prettier":"^3.9.5","@swc/core":"^1.15.46","supertest":"^7.2.2","ts-loader":"^9.6.2","@eslint/js":"^10.0.1","typescript":"~6.0.3","@nestjs/cli":"^11.0.24","@types/jest":"^30.0.0","@types/node":"^26.1.1","@types/uuid":"^11.0.0","@types/express":"^5.0.6","tsconfig-paths":"^4.2.0","@commitlint/cli":"^21.2.1","@faker-js/faker":"^10.5.0","@nestjs/testing":"^11.1.28","@eslint/eslintrc":"^3.3.6","@types/supertest":"^7.2.1","semantic-release":"^25.0.8","typescript-eslint":"^8.65.0","@nestjs/schematics":"^11.1.0","jest-mock-extended":"^4.0.1","source-map-support":"^0.5.21","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","eslint-plugin-sonarjs":"^4.2.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","eslint-plugin-security":"^4.0.1","@semantic-release/github":"^12.0.9","@stylistic/eslint-plugin":"^5.10.0","@typescript-eslint/parser":"^8.65.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-perfectionist":"^5.10.0","@commitlint/config-conventional":"^21.2.0","@typescript-eslint/eslint-plugin":"^8.65.0","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.1"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-redisom_1.1.1_1784584727230_0.8979780498229726","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@alpha018/nestjs-redisom","version":"1.2.0","description":"A NestJS module for RedisOM, providing a structured way to use Redis Stack JSON/Search features.","author":{"name":"Tomás Alegre","email":"tomas.sa467@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/Alpha018/nestjs-redisom.git"},"keywords":["nestjs","redis","redis-om","redis-stack","database","nosql"],"main":"dist/index.js","private":false,"license":"MIT","engines":{"node":">=20.0.0"},"publishConfig":{"access":"public"},"bugs":{"url":"https://github.com/Alpha018/nestjs-redisom/issues"},"homepage":"https://github.com/Alpha018/nestjs-redisom#readme","scripts":{"build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","start:dev":"nest start --watch","start:debug":"nest start --debug --watch","start:prod":"node dist/index","lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","test:watch":"jest --watch","test:cov":"jest --coverage","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:e2e":"REDIS_USE_CLUSTER=false jest --config ./test/jest-e2e.json --runInBand","test:e2e:cluster":"REDIS_USE_CLUSTER=true jest --config ./test/jest-e2e.json --runInBand","test:all":"jest && REDIS_USE_CLUSTER=false jest --config ./test/jest-e2e.json --runInBand && REDIS_USE_CLUSTER=true jest --config ./test/jest-e2e.json --runInBand","prepare":"husky || exit 0"},"dependencies":{"@nestjs/common":"^11.2.1","@nestjs/core":"^11.2.1","@nestjs/platform-express":"^11.2.1","redis":"^6.2.1","redis-om":"^0.4.7","reflect-metadata":"^0.2.2","rxjs":"^7.8.2"},"devDependencies":{"@commitlint/cli":"^21.2.2","@commitlint/config-conventional":"^21.2.2","@eslint/eslintrc":"^3.3.6","@eslint/js":"^10.0.1","@faker-js/faker":"^10.6.0","@nestjs/cli":"^11.0.24","@nestjs/schematics":"^11.1.0","@nestjs/testing":"^11.2.1","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.9","@semantic-release/npm":"^13.1.5","@semantic-release/release-notes-generator":"^14.1.1","@stylistic/eslint-plugin":"^5.10.0","@swc/cli":"^0.8.1","@swc/core":"^1.16.1","@types/express":"^5.0.6","@types/jest":"^30.0.0","@types/node":"^26.2.0","@types/supertest":"^7.2.1","@types/uuid":"^11.0.0","@typescript-eslint/eslint-plugin":"^8.67.0","@typescript-eslint/parser":"^8.67.0","dotenv":"^17.4.2","eslint":"^10.8.1","eslint-config-prettier":"^10.1.8","eslint-plugin-perfectionist":"^5.10.1","eslint-plugin-prettier":"^5.5.6","eslint-plugin-security":"^4.0.1","eslint-plugin-sonarjs":"^4.2.0","globals":"^17.11.0","husky":"^9.1.7","jest":"^30.4.2","jest-mock-extended":"^4.0.1","prettier":"^3.9.6","semantic-release":"^25.0.9","source-map-support":"^0.5.21","supertest":"^7.2.2","ts-jest":"^29.4.12","ts-loader":"^9.6.2","ts-node":"^10.9.2","tsconfig-paths":"^4.2.0","typescript":"~6.0.3","typescript-eslint":"^8.67.0","uuid":"^11.1.1"},"jest":{"moduleFileExtensions":["js","json","ts"],"rootDir":"src","testRegex":".*\\.spec\\.ts$","transform":{"^.+\\.(t|j)s$":"ts-jest"},"collectCoverageFrom":["**/*.(t|j)s"],"coverageDirectory":"../coverage","testEnvironment":"node"},"gitHead":"a8d4805981b9b2581a921caf7494adb80a3e4870","types":"./dist/index.d.ts","_id":"@alpha018/nestjs-redisom@1.2.0","_nodeVersion":"24.19.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-NgsQHG6LgUmiTmw5Hzeh4py1ittds5mJayQqOITj7Gg00bedoRBC44wxd3WfNQdnzx07i2SawiLsr8pim3Qcnw==","shasum":"9159db66c666ac3fe9c6cb2072cc9cfcf66dd4b1","tarball":"https://registry.npmjs.org/@alpha018/nestjs-redisom/-/nestjs-redisom-1.2.0.tgz","fileCount":55,"unpackedSize":61412,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alpha018%2fnestjs-redisom@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCm0bt+5yXTlotTtQWMT5721AgrsTnG4WA9lsY1ag6zWwIgKYM1wEHS/NuWl0JjaPLrfVRPH+4MYiM21HAAz4y2mzE="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2545eb2-0595-4530-9aca-adc408234d59"}},"directories":{},"maintainers":[{"name":"alpha018","email":"gentle.koala1662@alphacode.cl"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nestjs-redisom_1.2.0_1787275712022_0.9604088465070257"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-29T20:19:30.478Z","modified":"2026-08-21T01:28:32.450Z","1.0.0":"2025-12-29T20:19:30.734Z","1.0.1":"2025-12-30T19:27:40.256Z","1.0.2":"2026-01-02T00:16:15.963Z","1.1.0":"2026-03-11T20:38:56.520Z","1.1.1":"2026-07-20T21:58:47.370Z","1.2.0":"2026-08-21T01:28:32.155Z"},"bugs":{"url":"https://github.com/Alpha018/nestjs-redisom/issues"},"author":{"name":"Tomás Alegre","email":"tomas.sa467@gmail.com"},"license":"MIT","homepage":"https://github.com/Alpha018/nestjs-redisom#readme","keywords":["nestjs","redis","redis-om","redis-stack","database","nosql"],"repository":{"type":"git","url":"git+https://github.com/Alpha018/nestjs-redisom.git"},"description":"A NestJS module for RedisOM, providing a structured way to use Redis Stack JSON/Search features.","maintainers":[{"name":"alpha018","email":"gentle.koala1662@alphacode.cl"}],"readme":"# NestJS RedisOM\n\n<div align=\"center\">\n  <a href=\"http://nestjs.com/\" target=\"_blank\">\n    <img src=\"https://docs.nestjs.com/assets/logo_text.svg\" width=\"150\" alt=\"Nest Logo\" />\n  </a>\n</div>\n\n<h3 align=\"center\">A NestJS module for RedisOM, providing a structured way to use Redis Stack JSON/Search features.</h3>\n\n<div align=\"center\">\n  <a href=\"https://nestjs.com\" target=\"_blank\">\n    <img src=\"https://img.shields.io/badge/built%20with-NestJs-red.svg\" alt=\"Built with NestJS\">\n  </a>\n    <a href=\"https://github.com/Alpha018/nestjs-redisom/actions\">\n    <img src=\"https://github.com/Alpha018/nestjs-redisom/actions/workflows/build.yml/badge.svg\" alt=\"Test Status\">\n  </a>\n  <a href=\"https://github.com/Alpha018/nestjs-redisom\">\n    <img src=\"https://img.shields.io/github/stars/Alpha018/nestjs-redisom?style=social\" alt=\"GitHub stars\">\n  </a>\n  <a href=\"https://www.buymeacoffee.com/alpha018\" target=\"_blank\">\n    <img src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy Me A Coffee\" height=\"20px\">\n  </a>\n</div>\n\n## Description\n\nThis library seamlessly integrates [RedisOM](https://redis.io/docs/latest/integrate/redisom-for-node-js/) into NestJS, offering:\n\n- **Decorator-based Schema Definition**: Define your entities using `@Schema` and `@Prop`.\n- **Repository Injection**: Inject repositories directly into your services using `@InjectRepository`.\n- **Seamless Connection**: Configure your Redis connection globally with `forRoot` or `forRootAsync`.\n\n## Installation\n\n```bash\nnpm install @alpha018/nestjs-redisom redis-om redis\n```\n\n## Quick Start\n\n### 1. Define an Entity\n\nUse the `@Schema()` decorator to define your entity and `@Prop()` for properties. Extends `BaseEntity` to easily access the auto-generated ID.\n\n```typescript\nimport { Schema } from 'nestjs-redisom';\nimport { Prop } from 'nestjs-redisom';\nimport { BaseEntity } from 'nestjs-redisom';\n\n@Schema()\nexport class CatEntity extends BaseEntity {\n  @Prop()\n  name: string;\n\n  @Prop()\n  age: number;\n}\n```\n\n> **Note**: For all available property decorators, indexing options, and schema definitions, see the [Wiki: Defining Structures](https://github.com/Alpha018/nestjs-redisom/wiki/Defining-Structures).\n\n### 2. Import the Module\n\nRegister `RedisOmModule` in your root `AppModule` and register your entities with `forFeature`.\n\n```typescript\nimport { Module } from '@nestjs/common';\nimport { RedisOmModule } from 'nestjs-redisom';\nimport { CatEntity } from './cat.entity';\n\n@Module({\n  imports: [\n    RedisOmModule.forRoot({\n        url: 'redis://localhost:6379'\n    }),\n    RedisOmModule.forFeature([CatEntity]),\n  ],\n})\nexport class AppModule {}\n```\n\n> **Note**: For advanced connection setups, environmental validation, and asynchronous options, see the [Wiki: Configuration](https://github.com/Alpha018/nestjs-redisom/wiki/Configuration).\n\n### 3. Usage in a Service\n\nInject the repository to save and search for entities.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { InjectRepository } from 'nestjs-redisom';\nimport { Repository } from 'redis-om';\nimport { CatEntity } from './cat.entity';\n\n@Injectable()\nexport class CatsService {\n  constructor(\n    @InjectRepository(CatEntity) private readonly catRepo: Repository<CatEntity>,\n  ) {}\n\n  async create(name: string, age: number) {\n    const entity = new CatEntity();\n    entity.name = name;\n    entity.age = age;\n    return await this.catRepo.save(entity);\n  }\n\n  async findAll() {\n    return await this.catRepo.search().return.all();\n  }\n}\n```\n\n> **Note**: To learn about all search capabilities and query building, see the [Wiki: Searching](https://github.com/Alpha018/nestjs-redisom/wiki/Searching).\n\n## Advanced Usage\n\n### 1. Nested Typed Objects\n\nYou can define nested objects using classes and the `@Prop({ type: () => Class })` syntax. This allows Redis OM to automatically generate the correct schema fields for your nested data.\n\n**How it works:**\nThe library flattens nested properties into the Redis schema using the format `parentProperty_childProperty` (underscore separator). This allows you to index and search deeply nested fields without complex JSON path syntax.\n\n**Define the Embedded Class:**\n\n```typescript\nexport class Address {\n  @Prop({ indexed: true })\n  street: string;\n\n  @Prop({ indexed: true })\n  city: string; // Will become 'address_city' in the schema\n}\n```\n\n**Use in Parent Entity:**\n\n```typescript\n@Schema({ dataStructure: 'JSON' })\nexport class Person extends BaseEntity {\n  @Prop()\n  name: string;\n\n  @Prop({ type: () => Address })\n  address: Address;\n}\n```\n\n**Search using flattened/nested fields:**\n\nSince the schema uses flattened keys, you query them using the underscore syntax:\n\n```typescript\n// Search for persons where address.city is 'New York'\nconst results = await this.personRepo.search()\n  .where('address_city' as any) // Use the flattened key\n  .eq('New York')\n  .return.all();\n```\n\n**A type-safe alternative: `fieldPath`**\n\nInstead of hardcoding the flattened key, `fieldPath(Entity, pathOrSelector)` builds it for you from the entity's own `@Prop` metadata, so you never have to know or guess the separator:\n\n```typescript\nimport { fieldPath } from 'nestjs-redisom';\n\nconst results = await this.personRepo.search()\n  .where(fieldPath(Person, (p) => p.address.city)) // or fieldPath(Person, 'address.city')\n  .eq('New York')\n  .return.all();\n```\n\nIt throws immediately if the path doesn't match a decorated property, catching typos before the query ever reaches Redis. You can also change the separator itself with `@Schema({ nestedSeparator: '.' })` if `_` doesn't fit your naming conventions; `fieldPath` picks it up automatically.\n\n> **Note**: Discover more about embedded objects, custom separators, and `fieldPath` in the [Wiki: Defining Structures](https://github.com/Alpha018/nestjs-redisom/wiki/Defining-Structures) and [Wiki: Advanced Searching](https://github.com/Alpha018/nestjs-redisom/wiki/Searching).\n\n### 2. Custom IDs\n\nYou can explicitly set the ID when saving an entity if you don't want to use the auto-generated ULID. This is useful for using existing IDs (like UUIDs, emails, or external system IDs).\n\n```typescript\n// Using a UUID\nimport { v4 as uuidv4 } from 'uuid';\nconst id = uuidv4();\nawait this.catRepo.save(id, entity);\n\n// Using a custom string\nawait this.catRepo.save('unique-custom-id', entity);\n```\n\n> **Note**: Read more about identifier strategies in the [Wiki: Defining Structures](https://github.com/Alpha018/nestjs-redisom/wiki/Defining-Structures).\n\n### 3. TTL (Time To Live)\n\nYou can set an expiration time (in seconds) for an entity. The key will automatically be deleted from Redis after the specified time.\n\n```typescript\nconst id = 'temp-session-123';\nawait this.catRepo.save(id, sessionEntity);\n\n// Expire after 60 seconds\nawait this.catRepo.expire(id, 60);\n```\n\n> **Note**: See entity expiration patterns in the [Wiki: Defining Structures](https://github.com/Alpha018/nestjs-redisom/wiki/Defining-Structures).\n\n### 4. TLS Connection (Production / Cloud)\n\nFor secure connections (e.g., AWS ElastiCache, Redis Cloud), use the `rediss://` protocol and provide TLS options in the `socket` configuration.\n\n**Static Configuration:**\n\n```typescript\nimport * as fs from 'fs';\n\nRedisOmModule.forRoot({\n  url: 'rediss://your-redis-instance:6380',\n  socket: {\n    tls: true,\n    rejectUnauthorized: false, // Set to true if using a public CA\n    // ca: fs.readFileSync('path/to/ca.pem'), // Optional: Load custom CA\n  },\n})\n```\n\n**Async Configuration (e.g., using ConfigService):**\n\n```typescript\nRedisOmModule.forRootAsync({\n  imports: [ConfigModule],\n  inject: [ConfigService],\n  useFactory: (config: ConfigService) => ({\n    url: config.get('REDIS_URL'), // e.g., 'rediss://...'\n    socket: {\n      tls: true,\n      rejectUnauthorized: config.get('REDIS_TLS_REJECT_UNAUTHORIZED') === 'true',\n    },\n  }),\n})\n```\n\n> **Note**: Find more cloud connection examples in the [Wiki: Configuration](https://github.com/Alpha018/nestjs-redisom/wiki/Configuration).\n\n### 5. Redis Cluster (Cluster Mode Enabled)\n\n`nestjs-redisom` natively supports connecting to a Redis Cluster using the underlying `createCluster` functionality of Node-Redis.\n\nInstead of providing a single `url`, you provide an array of `rootNodes`:\n\n```typescript\nRedisOmModule.forRoot({\n  rootNodes: [\n    { url: 'redis://redis-cluster-node-1:7000' },\n    { url: 'redis://redis-cluster-node-2:7000' }\n  ],\n  defaults: {\n    password: 'your-cluster-password'\n  }\n})\n```\n\n> **Note**: For full details on how the Node-Redis client uses these initial nodes for cluster auto-discovery (`CLUSTER SLOTS`), please refer to the [Configuration Wiki](https://github.com/Alpha018/nestjs-redisom/wiki/Configuration).\n\n## Features\n\n- **Schema Factory**: Automatically generates RedisOM schemas from your class metadata.\n- **Nested Objects**: Support for typed nested objects with automatic schema flattening, with a configurable separator (`nestedSeparator`) and a type-safe `fieldPath()` helper for building flattened search keys.\n- **Async Configuration**: Supports `useFactory`, `useClass`, and `useExisting` for configuration.\n- **Validation**: Compatible with `class-validator` (standard NestJS practice).\n\n## Performance & Search Mechanics\n\nThis library leverages **RediSearch** (module of Redis Stack), meaning searches are **efficient and non-blocking**.\n\n### 1. How Search Works\n\nWhen you use `@Prop({ indexed: true })`, Redis OM creates an **Inverted Index**.\n\n- **Search**: `repo.search()...` queries this index directly. It does **NOT** perform a linear scan (SCAN command) over the keyspace.\n- **Complexity**: Searches are typically **O(K)** (where K is the number of results) or **O(log N)** for range queries. Retrieving by ID is **O(1)**.\n\n#### Search Complexity by Type\n\n| Data Type | Operation | Complexity | Notes |\n| :--- | :--- | :--- | :--- |\n| **ID** | Retrieve (`fetch`) | **O(1)** | Direct key access (fastest). |\n| **Tag / String** | Exact Match (`eq`) | **O(K)** | `K` = number of results returned. |\n| **Numeric / Date** | Range (`gt`, `lt`, `between`) | **O(log N + K)** | Uses sorted sets/trees. efficient for ranges. |\n| **Text** | Full-Text (`matches`) | **O(M + K)** | `M` = number of terms/words being searched. |\n| **Geo** | Radius / Polygon | **O(K + log N)** | Geospacial indexing. |\n\n### 2. Resource Usage\n\n- **Memory (RAM)**: Indexes consume additional memory. **Best Practice:** Only index fields that you intend to filter by.\n- **CPU**: Search operations are highly optimized. Initial indexing of a large existing dataset may temporarily consume CPU, but incremental updates (`save`) are lightweight.\n\n## Resources\n\nCheck out a few resources that may come in handy when working with NestJS:\n\n- Visit the [NestJS Documentation](https://docs.nestjs.com) to learn more about the framework.\n- Visualize your application graph and interact with the NestJS application in real-time using [NestJS Devtools](https://devtools.nestjs.com).\n\n## Support\n\nNest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).\n\n## Stay in touch\n\n- Author - [Tomás Alegre](https://github.com/Alpha018)\n\n## License\n\nNestJS RedisOM is [MIT licensed](LICENSE).\n","readmeFilename":"README.md"}