@naman_deep_singh/cache 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/README.md +637 -0
  2. package/dist/cjs/adapters/memcache/MemcacheCache.d.ts +71 -0
  3. package/dist/cjs/adapters/memcache/MemcacheCache.js +347 -0
  4. package/dist/cjs/adapters/memcache/index.d.ts +1 -0
  5. package/dist/cjs/adapters/memcache/index.js +5 -0
  6. package/dist/cjs/adapters/memory/MemoryCache.d.ts +63 -0
  7. package/dist/cjs/adapters/memory/MemoryCache.js +273 -0
  8. package/dist/cjs/adapters/memory/index.d.ts +1 -0
  9. package/dist/cjs/adapters/memory/index.js +5 -0
  10. package/dist/cjs/adapters/redis/RedisCache.d.ts +67 -0
  11. package/dist/cjs/adapters/redis/RedisCache.js +288 -0
  12. package/dist/cjs/adapters/redis/index.d.ts +1 -0
  13. package/dist/cjs/adapters/redis/index.js +5 -0
  14. package/dist/cjs/core/BaseCache.d.ts +78 -0
  15. package/dist/cjs/core/BaseCache.js +138 -0
  16. package/dist/cjs/core/factory.d.ts +16 -0
  17. package/dist/cjs/core/factory.js +51 -0
  18. package/dist/cjs/core/interfaces/ICache.d.ts +58 -0
  19. package/dist/cjs/core/interfaces/ICache.js +2 -0
  20. package/dist/cjs/core/interfaces/ISession.d.ts +30 -0
  21. package/dist/cjs/core/interfaces/ISession.js +2 -0
  22. package/dist/cjs/core/interfaces/index.d.ts +2 -0
  23. package/dist/cjs/core/interfaces/index.js +2 -0
  24. package/dist/cjs/errors/CacheError.d.ts +9 -0
  25. package/dist/cjs/errors/CacheError.js +17 -0
  26. package/dist/cjs/errors/index.d.ts +1 -0
  27. package/dist/cjs/errors/index.js +5 -0
  28. package/dist/cjs/index.d.ts +10 -0
  29. package/dist/cjs/index.js +27 -0
  30. package/dist/cjs/middleware/express/cacheMiddleware.d.ts +22 -0
  31. package/dist/cjs/middleware/express/cacheMiddleware.js +100 -0
  32. package/dist/cjs/middleware/express/index.d.ts +1 -0
  33. package/dist/cjs/middleware/express/index.js +7 -0
  34. package/dist/cjs/session/SessionStore.d.ts +51 -0
  35. package/dist/cjs/session/SessionStore.js +153 -0
  36. package/dist/cjs/session/index.d.ts +2 -0
  37. package/dist/cjs/session/index.js +5 -0
  38. package/dist/cjs/types.d.ts +83 -0
  39. package/dist/cjs/types.js +2 -0
  40. package/dist/esm/adapters/memcache/MemcacheCache.d.ts +71 -0
  41. package/dist/esm/adapters/memcache/MemcacheCache.js +340 -0
  42. package/dist/esm/adapters/memcache/index.d.ts +1 -0
  43. package/dist/esm/adapters/memcache/index.js +1 -0
  44. package/dist/esm/adapters/memory/MemoryCache.d.ts +63 -0
  45. package/dist/esm/adapters/memory/MemoryCache.js +269 -0
  46. package/dist/esm/adapters/memory/index.d.ts +1 -0
  47. package/dist/esm/adapters/memory/index.js +1 -0
  48. package/dist/esm/adapters/redis/RedisCache.d.ts +67 -0
  49. package/dist/esm/adapters/redis/RedisCache.js +284 -0
  50. package/dist/esm/adapters/redis/index.d.ts +1 -0
  51. package/dist/esm/adapters/redis/index.js +1 -0
  52. package/dist/esm/core/BaseCache.d.ts +78 -0
  53. package/dist/esm/core/BaseCache.js +134 -0
  54. package/dist/esm/core/factory.d.ts +16 -0
  55. package/dist/esm/core/factory.js +47 -0
  56. package/dist/esm/core/interfaces/ICache.d.ts +58 -0
  57. package/dist/esm/core/interfaces/ICache.js +1 -0
  58. package/dist/esm/core/interfaces/ISession.d.ts +30 -0
  59. package/dist/esm/core/interfaces/ISession.js +1 -0
  60. package/dist/esm/core/interfaces/index.d.ts +2 -0
  61. package/dist/esm/core/interfaces/index.js +1 -0
  62. package/dist/esm/errors/CacheError.d.ts +9 -0
  63. package/dist/esm/errors/CacheError.js +13 -0
  64. package/dist/esm/errors/index.d.ts +1 -0
  65. package/dist/esm/errors/index.js +1 -0
  66. package/dist/esm/index.d.ts +10 -0
  67. package/dist/esm/index.js +14 -0
  68. package/dist/esm/middleware/express/cacheMiddleware.d.ts +22 -0
  69. package/dist/esm/middleware/express/cacheMiddleware.js +95 -0
  70. package/dist/esm/middleware/express/index.d.ts +1 -0
  71. package/dist/esm/middleware/express/index.js +1 -0
  72. package/dist/esm/session/SessionStore.d.ts +51 -0
  73. package/dist/esm/session/SessionStore.js +149 -0
  74. package/dist/esm/session/index.d.ts +2 -0
  75. package/dist/esm/session/index.js +1 -0
  76. package/dist/esm/types.d.ts +83 -0
  77. package/dist/esm/types.js +1 -0
  78. package/dist/types/adapters/memcache/MemcacheCache.d.ts +71 -0
  79. package/dist/types/adapters/memcache/index.d.ts +1 -0
  80. package/dist/types/adapters/memory/MemoryCache.d.ts +63 -0
  81. package/dist/types/adapters/memory/index.d.ts +1 -0
  82. package/dist/types/adapters/redis/RedisCache.d.ts +67 -0
  83. package/dist/types/adapters/redis/index.d.ts +1 -0
  84. package/dist/types/core/BaseCache.d.ts +78 -0
  85. package/dist/types/core/factory.d.ts +16 -0
  86. package/dist/types/core/interfaces/ICache.d.ts +58 -0
  87. package/dist/types/core/interfaces/ISession.d.ts +30 -0
  88. package/dist/types/core/interfaces/index.d.ts +2 -0
  89. package/dist/types/errors/CacheError.d.ts +9 -0
  90. package/dist/types/errors/index.d.ts +1 -0
  91. package/dist/types/index.d.ts +10 -0
  92. package/dist/types/middleware/express/cacheMiddleware.d.ts +22 -0
  93. package/dist/types/middleware/express/index.d.ts +1 -0
  94. package/dist/types/session/SessionStore.d.ts +51 -0
  95. package/dist/types/session/index.d.ts +2 -0
  96. package/dist/types/types.d.ts +83 -0
  97. package/package.json +48 -0
@@ -0,0 +1 @@
1
+ export { cacheSessionMiddleware, cacheHealthCheckMiddleware, cacheResponseMiddleware } from './cacheMiddleware';
@@ -0,0 +1,51 @@
1
+ import type { ICache } from '../core/interfaces';
2
+ import type { SessionData, SessionOptions } from '../types';
3
+ /**
4
+ * Session store wrapper around cache adapters
5
+ * Provides session management functionality
6
+ */
7
+ export declare class SessionStore {
8
+ private cache;
9
+ private options;
10
+ constructor(cache: ICache<SessionData>, options?: SessionOptions);
11
+ /**
12
+ * Create a new session
13
+ */
14
+ create(sessionId: string, data: SessionData, ttl?: number): Promise<void>;
15
+ /**
16
+ * Get session data
17
+ */
18
+ get(sessionId: string): Promise<SessionData | null>;
19
+ /**
20
+ * Update/merge session data
21
+ */
22
+ update(sessionId: string, data: Partial<SessionData>): Promise<void>;
23
+ /**
24
+ * Delete session
25
+ */
26
+ delete(sessionId: string): Promise<boolean>;
27
+ /**
28
+ * Check if session exists
29
+ */
30
+ exists(sessionId: string): Promise<boolean>;
31
+ /**
32
+ * Clear all sessions
33
+ */
34
+ clear(): Promise<void>;
35
+ /**
36
+ * Get all session keys (limited use - may be slow with large datasets)
37
+ */
38
+ getMultiple(sessionIds: string[]): Promise<Record<string, SessionData | null>>;
39
+ /**
40
+ * Delete multiple sessions
41
+ */
42
+ deleteMultiple(sessionIds: string[]): Promise<number>;
43
+ /**
44
+ * Extend session expiry
45
+ */
46
+ extend(sessionId: string, ttl?: number): Promise<void>;
47
+ /**
48
+ * Get session data and extend expiry in one operation
49
+ */
50
+ getAndExtend(sessionId: string, ttl?: number): Promise<SessionData | null>;
51
+ }
@@ -0,0 +1,2 @@
1
+ export { SessionStore } from './SessionStore';
2
+ export type { SessionOptions } from '../types';
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Cache configuration options
3
+ */
4
+ export interface CacheConfig {
5
+ adapter: 'redis' | 'memcache' | 'memory';
6
+ namespace?: string;
7
+ ttl?: number;
8
+ fallback?: boolean;
9
+ }
10
+ /**
11
+ * Redis-specific configuration
12
+ */
13
+ export interface RedisCacheConfig extends CacheConfig {
14
+ adapter: 'redis';
15
+ host?: string;
16
+ port?: number;
17
+ username?: string;
18
+ password?: string;
19
+ db?: number;
20
+ tls?: boolean;
21
+ }
22
+ /**
23
+ * Memcache-specific configuration
24
+ */
25
+ export interface MemcacheCacheConfig extends CacheConfig {
26
+ adapter: 'memcache';
27
+ servers: string | string[];
28
+ username?: string;
29
+ password?: string;
30
+ }
31
+ /**
32
+ * Memory cache configuration
33
+ */
34
+ export interface MemoryCacheConfig extends CacheConfig {
35
+ adapter: 'memory';
36
+ maxSize?: number;
37
+ }
38
+ /**
39
+ * Session data structure
40
+ */
41
+ export interface SessionData {
42
+ [key: string]: unknown;
43
+ }
44
+ /**
45
+ * Session store options
46
+ */
47
+ export interface SessionOptions {
48
+ ttl?: number;
49
+ serialize?: (data: SessionData) => string;
50
+ deserialize?: (data: string) => SessionData;
51
+ }
52
+ /**
53
+ * Cache statistics
54
+ */
55
+ export interface CacheStats {
56
+ hits: number;
57
+ misses: number;
58
+ sets: number;
59
+ deletes: number;
60
+ }
61
+ /**
62
+ * Health check response
63
+ */
64
+ export interface HealthCheckResponse {
65
+ isAlive: boolean;
66
+ adapter: string;
67
+ timestamp: Date;
68
+ error?: string;
69
+ }
70
+ /**
71
+ * Batch operation result
72
+ */
73
+ export interface BatchResult<T> {
74
+ [key: string]: T | null;
75
+ }
76
+ /**
77
+ * Cache key with optional metadata
78
+ */
79
+ export interface CacheEntry<T = unknown> {
80
+ value: T;
81
+ expiresAt?: number;
82
+ createdAt: number;
83
+ }
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@naman_deep_singh/cache",
3
+ "version": "1.1.0",
4
+ "description": "Extensible caching layer supporting Redis, Memcache, and in-memory caches with automatic fallback, namespacing, session management, and Express middleware.",
5
+ "type": "module",
6
+ "main": "./dist/cjs/index.js",
7
+ "module": "./dist/esm/index.js",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/esm/index.js",
11
+ "require": "./dist/cjs/index.js",
12
+ "types": "./dist/types/index.d.ts"
13
+ }
14
+ },
15
+ "sideEffects": false,
16
+ "files": [
17
+ "dist",
18
+ "README.md"
19
+ ],
20
+ "keywords": [
21
+ "cache",
22
+ "redis",
23
+ "memcache",
24
+ "session",
25
+ "caching",
26
+ "typescript",
27
+ "microservices"
28
+ ],
29
+ "author": "Naman Deep Singh",
30
+ "license": "ISC",
31
+ "devDependencies": {
32
+ "@types/memcached": "^2.2.7",
33
+ "@types/express": "^5.0.5",
34
+ "@types/node": "^25.0.1",
35
+ "express": "^5.1.0",
36
+ "typescript": "^5.9.3",
37
+ "rimraf": "^5.0.5"
38
+ },
39
+ "dependencies": {
40
+ "redis": "^4.6.10",
41
+ "memcached": "^2.2.2"
42
+ },
43
+ "scripts": {
44
+ "build": "pnpm run build:types && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json",
45
+ "build:types": "tsc -p tsconfig.base.json --emitDeclarationOnly --outDir dist/types",
46
+ "clean": "rimraf dist"
47
+ }
48
+ }