{"id":19124439,"url":"https://github.com/panates/redisess","last_synced_at":"2025-05-05T19:22:16.585Z","repository":{"id":33778655,"uuid":"161334833","full_name":"panates/redisess","owner":"panates","description":"Powerful redis session manager for NodeJS","archived":false,"fork":false,"pushed_at":"2025-02-28T11:29:42.000Z","size":411,"stargazers_count":8,"open_issues_count":2,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-19T11:10:33.481Z","etag":null,"topics":["javascript","nodejs","redis","session","session-manager","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/panates.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"support/package.cjs.json","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-12-11T13:03:53.000Z","updated_at":"2025-02-28T11:29:45.000Z","dependencies_parsed_at":"2024-07-30T18:17:14.705Z","dependency_job_id":"ef8c1de2-12e1-4d16-8ba8-85dd6f865dda","html_url":"https://github.com/panates/redisess","commit_stats":{"total_commits":84,"total_committers":4,"mean_commits":21.0,"dds":0.3928571428571429,"last_synced_commit":"88fb7364877fa1a531116cd3692903f0a2a3c634"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panates%2Fredisess","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panates%2Fredisess/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panates%2Fredisess/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panates%2Fredisess/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/panates","download_url":"https://codeload.github.com/panates/redisess/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251837015,"owners_count":21651754,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["javascript","nodejs","redis","session","session-manager","typescript"],"created_at":"2024-11-09T05:29:11.359Z","updated_at":"2025-05-05T19:22:16.544Z","avatar_url":"https://github.com/panates.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"  \n[![NPM Version][npm-image]][npm-url]\n[![NPM Downloads][downloads-image]][downloads-url]\n[![Build Status][travis-image]][travis-url]\n[![Test Coverage][coveralls-image]][coveralls-url]\n\n[![Dependencies][dependencies-image]][dependencies-url]\n[![DevDependencies][devdependencies-image]][devdependencies-url]\n[![Package Quality][quality-image]][quality-url]\n\n\n## Redisess\n\nHigh performant advanced Redis session manager for NodeJS.\n\n## Installation\n\nRedisess requires \"ioredis\" library to work. \nIt has been tested for [redis](https://www.npmjs.com/package/redis), \n[node-redis](https://www.npmjs.com/package/node-redis) and\n[ioredis](https://www.npmjs.com/package/ioredis) client libraries.\n\n```bash\n$ npm install ioredis redisess --save\n```\n\n## Basic Usage\n\nThe example blow show how can you use Redisess in a simple express applicaiton.\n\n```ts\nimport express from 'express';\nimport Redis from 'ioredis';\nimport {SessionManager} from 'redisess';\n\nconst client = new Redis(); \n\nconst manager = new SessionManager(client, {\n    namespace: 'myapp',\n    additionalFields: ['groupId'],\n    ttl: 120 // Default Time-To-Live value in seconds: 120 seconds\n  });\n\nconst app = express();\n \napp.get('/login', async function (req, res) {\n  const userName = req.query.userName;\n  const pass = req.query.password;\n  //...Login application logic here\n  \n  const session = await sm.create(userName, {\n      ttl: 240, // You can overwrite ttl value per session\n      groupId: 111 // You can store additional values\n  }); \n  res.send('Your session id is '+session.sessionId);\n});\n\napp.get('/killSession/:sessionid', async function (req, res) {\n  await sm.kill(req.params.sessionid); \n  res.send('Session ' + req.params.sessionid + ' is closed');\n});\n\napp.get('/killUser/:userId', async function (req, res) {\n  await sm.killUser(req.params.userId); \n  res.send('All sessions for user \"' + req.params.userId +'\" are closed.');\n})\n \napp.listen(3000);\n\n```\n\n\n---\n## SessionManager\n\n\n\n### prototype.count()\n\nReturns the number of sessions within the last n seconds. Get all session count if n is not defined or zero\n\n`count(secs: number = 0): Promise\u003cnumber\u003e`\n\n##### Parameters\n\n- secs: The elapsed time since the last activity of the session. Returns total count of sessions If not defined or zero\n- *Return value :* Returns the number of sessions.\n\n\n---\n### prototype.countForUser()\n\nRetrieves session count of single user which were active within the last n seconds.\n\n`countForUser(userId: string, secs: number = 0): Promise\u003cnumber\u003e`\n\n##### Parameters\n\n- userId: Id of the user\n- secs: The elapsed time since the last activity of the session. Returns total count of sessions If not defined or zero\n- *Return value :* Returns the number of sessions.\n\n\n---\n### prototype.create()\n\nCreates a new session for the user\n\n`create(userId: string, props?: { ttl?: number, [index: string]: any }): Promise\u003cSession\u003e`\n\n##### Parameters\n\n- userId: Id of the user\n- props: Additional properties \n    - ttl: Time-To-Live value in seconds\n    - *...: Additional fields\n- *Return value :* Returns new created session.\n\n\n---\n#### prototype.get()\n\nRetrieves session by sessionId\n\n`get(sessionId: string, noUpdate: boolean = false): Promise\u003cSession\u003e`\n\n##### Parameters\n\n- sessionId: Id of the session\n- noUpdate: Update state of the session\n- *Return value :* Returns new created session.\n\n---\n#### prototype.getAllSessions()\n\nRetrieves all session ids which were active within the last n seconds.\n\n`getAllSessions(secs: number): Promise\u003cstring[]\u003e`\n\n##### Parameters\n\n- secs: The elapsed time since the last activity of the session. Returns total count of sessions If not defined or zero\n- *Return value :* Returns the string array of all sessions.\n\n---\n#### prototype.getAllUsers()\n\nRetrieves all user ids which were active within the last n seconds.\n\n`getAllUsers(secs: number): Promise\u003cstring[]\u003e`\n\n##### Parameters\n\n- secs: The elapsed time since the last activity of the session. Returns total count of sessions If not defined or zero\n- *Return value :* Returns the string array of all users.\n\n---\n#### prototype.getUserSessions()\n\nRetrieves session ids of single user which were active within the last n seconds.\n\n`getUserSessions(userId: string, n: number = 0): Promise\u003cstring[]\u003e`\n\n##### Parameters\n\n- userId: Id of the user\n- n: The elapsed time since the last activity of the session.\n- *Return value :* Returns the string array of all sessions for an user.\n\n---\n#### prototype.getOldestUserSession()\n\nRetrieves oldest session of user\n\n`getOldestUserSession(userId: string, noUpdate: boolean = false): Promise\u003cSession\u003e`\n\n##### Parameters\n\n- userId: Id of the user\n- noUpdate: Update state of the session\n- *Return value :* Returns new created session.\n\n---\n#### prototype.exists()\n\nReturns true if sessionId exists, false otherwise\n\n`exists(sessionId: string): Promise\u003cBoolean\u003e`\n\n##### Parameters\n\n- sessionId: Id of the session\n- *Return value :* Returns Boolean.\n\n---\n#### prototype.kill()\n\nKills single session\n\n`kill(sessionId: string): Promise\u003cvoid\u003e`\n\n##### Parameters\n\n- sessionId: Id of the session\n- *Return value :* No return value.\n\n---\n#### prototype.killUser()\n\n Kills all sessions of user\n\n `killUser(userId: string): Promise\u003cvoid\u003e`\n\n ##### Parameters\n\n- userId: Id of the user\n- *Return value :* No return value.\n\n---\n#### prototype.killAll()\n\n Kills all sessions for application\n\n `killAll(): Promise\u003cvoid\u003e`\n\n ##### Parameters\n\n- No parameter value\n- *Return value :* No return value.\n\n---\n#### prototype.now()\n\nRetrieves present time.\n\n`now(): Promise\u003cnumber\u003e`\n\n ##### Parameters\n\n- No parameter value\n- *Return value :* Returns number.\n\n---\n#### prototype.quit()\n\nStops wipe timer\n\n`quit(): void`\n\n##### Parameters\n\n- No parameter value\n- *Return value :* No return value.\n\n---\n## Session\n\n---\n#### prototype.sessionId\n\nReturns session id value\n\n`sessionId(): string`\n\n---\n#### prototype.userId\n\nReturns user id value\n\n`userId(): string`\n\n---\n#### prototype.ttl\n\nReturns Time-To-Live value\n\n`ttl(): number`\n\n---\n#### prototype.lastAccess\n\nReturns the time (unix) of last access\n\n`lastAccess(): number`\n\n---\n#### prototype.expires\n\nReturns the time (unix) that session be expired.\n\n`expires(): number`\n\n---\n#### prototype.expiresIn\n\nReturns duration that session be expired.\n\n`expiresIn(): number`\n\n---\n#### prototype.valid\n\nReturns validation of session and user with last access control.\n\n`valid(): boolean`\n\n---\n#### prototype.idle\n\nReturns idle duration in seconds.\n\n`idle(): number`\n\n---\n#### prototype.[additionalField]\n\nReturns any additional field value\n\n---\n#### prototype.read()\n\nReads session info from redis server\n\n`read(): Promise\u003cvoid\u003e`\n\n---\n#### prototype.get()\n\nRetrieves user data from session.\n\n`get(key): Promise\u003cany\u003e`\n\n ##### Parameters\n\n- key: string | Array\u003cString\u003e | Object\u003cString,*\u003e\n- *Return value :* No return value.\n\n---\n#### prototype.set()\n\nStores user data to session\n\n`set(key, value): Promise\u003cnumber\u003e`\n\n##### Parameters\n\n- key: string | Object\n- value: *\n- *Return value :* Length of values.\n\n---\n#### prototype.kill()\n\nKills the session\n\n`kill(): Promise\u003cvoid\u003e`\n\n---\n#### prototype.write()\n\nWrite session to redis server.\n\n`write(): Promise\u003cvoid\u003e`\n\n---\n\n## Node Compatibility\n\n  - node \u003e= 8.x\n  \n## Change log\n\nTo see changelog click [here](https://github.com/panates/redisess/commits/master)\n\n  \n### License\nAvailable under [MIT](LICENSE) license.\n\n[npm-image]: https://img.shields.io/npm/v/redisess.svg\n[npm-url]: https://npmjs.org/package/redisess\n[travis-image]: https://img.shields.io/travis/panates/redisess/master.svg\n[travis-url]: https://travis-ci.org/panates/redisess\n[coveralls-image]: https://img.shields.io/coveralls/panates/redisess/master.svg\n[coveralls-url]: https://coveralls.io/r/panates/redisess\n[downloads-image]: https://img.shields.io/npm/dm/redisess.svg\n[downloads-url]: https://npmjs.org/package/redisess\n[dependencies-image]: https://david-dm.org/panates/redisess/status.svg\n[dependencies-url]:https://david-dm.org/panates/redisess\n[devdependencies-image]: https://david-dm.org/panates/redisess/dev-status.svg\n[devdependencies-url]:https://david-dm.org/panates/redisess?type=dev\n[quality-image]: http://npm.packagequality.com/shield/redisess.png\n[quality-url]: http://packagequality.com/#?package=redisess\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanates%2Fredisess","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpanates%2Fredisess","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanates%2Fredisess/lists"}