@common-stack/cache-api-server 3.0.2-alpha.1 → 3.0.2-alpha.4

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.0.2-alpha.4](https://github.com/cdmbase/common-stack/compare/v3.0.2-alpha.3...v3.0.2-alpha.4) (2024-02-16)
7
+
8
+ **Note:** Version bump only for package @common-stack/cache-api-server
9
+
10
+ ## [3.0.2-alpha.2](https://github.com/cdmbase/common-stack/compare/v3.0.2-alpha.1...v3.0.2-alpha.2) (2024-02-15)
11
+
12
+ **Note:** Version bump only for package @common-stack/cache-api-server
13
+
6
14
  ## [3.0.2-alpha.1](https://github.com/cdmbase/common-stack/compare/v3.0.2-alpha.0...v3.0.2-alpha.1) (2024-02-15)
7
15
 
8
16
  **Note:** Version bump only for package @common-stack/cache-api-server
@@ -0,0 +1,11 @@
1
+ import { str, cleanEnv, json, num, bool } from 'envalid';
2
+ export const config = cleanEnv(process.env, {
3
+ REDIS_URL: str(),
4
+ REDIS_SENTINEL_ENABLED: bool({ devDefault: false }),
5
+ REDIS_SENTINEL_NAME: str({ default: 'mymaster' }),
6
+ REDIS_CLUSTER_ENABLED: bool({ default: false }),
7
+ REDIS_CLUSTER_URL: json({ desc: "Send cluster nodes as array of host and port object. ex: [{ host: 'node1', port: 6678}]" }),
8
+ REDIS_CACHE_MAX_AGE_in_sec: num({ default: 2592000, desc: 'Max. age in seconds. Default is 30 days' }),
9
+ NODE_ENV: str({ choices: ['production', 'test', 'staging', 'development'], default: 'production' }),
10
+ });
11
+ //# sourceMappingURL=env-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-config.js","sourceRoot":"","sources":["../../src/config/env-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAYzD,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAU,OAAO,CAAC,GAAG,EAAE;IACjD,SAAS,EAAE,GAAG,EAAE;IAChB,sBAAsB,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACnD,mBAAmB,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACjD,qBAAqB,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC/C,iBAAiB,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,yFAAyF,EAAE,CAAC;IAC5H,0BAA0B,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,yCAAyC,EAAE,CAAC;IACtG,QAAQ,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;CACtG,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './env-config';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ export var Types;
2
+ (function (Types) {
3
+ Types["CacheEngine"] = "CacheEngine";
4
+ Types["CacheService"] = "CacheService";
5
+ })(Types || (Types = {}));
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,KAGX;AAHD,WAAY,KAAK;IACb,oCAA2B,CAAA;IAC3B,sCAA6B,CAAA;AACjC,CAAC,EAHW,KAAK,KAAL,KAAK,QAGhB"}
@@ -0,0 +1,2 @@
1
+ export * from './module';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/containers/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { ContainerModule } from 'inversify';
2
+ import { Cache } from '../services';
3
+ import { Types } from '../constants';
4
+ import { Redis } from '../engines/ioredis-engine';
5
+ export const moduleFunc = (settings) => new ContainerModule((bind) => {
6
+ /**
7
+ *
8
+ * @returns: () => cache;
9
+ */
10
+ bind(Types.CacheService).toFactory((context) => {
11
+ return () => {
12
+ // TODO: to make it singleton we need to check if Cache already exist then return same.
13
+ const cacheEngine = context.container.get(Types.CacheEngine);
14
+ const logger = context.container.get('Logger');
15
+ const cache = new Cache(cacheEngine, logger);
16
+ return cache;
17
+ };
18
+ }).whenTargetIsDefault();
19
+ bind(Types.CacheEngine)
20
+ .toConstantValue(new Redis(settings.redisConnection))
21
+ // .inSingletonScope()
22
+ .whenTargetIsDefault();
23
+ });
24
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/containers/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAc,MAAM,WAAW,CAAC;AAExD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAGlD,MAAM,CAAC,MAAM,UAAU,GACnB,CAAC,QAAa,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,CAAC,IAAqB,EAAE,EAAE;IAE7D;;;OAGG;IACH,IAAI,CAA4B,KAAK,CAAC,YAAY,CAAC,CAAC,SAAS,CAAQ,CAAC,OAA2B,EAAE,EAAE;QACjG,OAAO,GAAG,EAAE;YACR,wFAAwF;YACxF,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAe,KAAK,CAAC,WAAW,CAAC,CAAC;YAC3E,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAoB,QAAQ,CAAC,CAAC;YAClE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;IACN,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC;IAEzB,IAAI,CAAe,KAAK,CAAC,WAAW,CAAC;SAChC,eAAe,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACrD,sBAAsB;SACrB,mBAAmB,EAAE,CAAC;AAC/B,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { ICacheEngine } from '../interfaces';
2
+ export declare class InMemory implements ICacheEngine {
3
+ private cache;
4
+ set(key: string, data: any): Promise<any>;
5
+ get(key: string): Promise<any>;
6
+ drop(key: string): Promise<boolean>;
7
+ invalidate(keys?: string[]): Promise<boolean>;
8
+ }
@@ -0,0 +1,21 @@
1
+ export class InMemory {
2
+ constructor() {
3
+ this.cache = new Map();
4
+ }
5
+ async set(key, data) {
6
+ this.cache.set(key, data);
7
+ return data;
8
+ }
9
+ async get(key) {
10
+ return this.cache.get(key);
11
+ }
12
+ async drop(key) {
13
+ this.cache.delete(key);
14
+ return true;
15
+ }
16
+ async invalidate(keys) {
17
+ (keys || []).forEach(key => this.cache.delete(key));
18
+ return true;
19
+ }
20
+ }
21
+ //# sourceMappingURL=in-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory.js","sourceRoot":"","sources":["../../src/engines/in-memory.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,QAAQ;IAArB;QACY,UAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IAoB9B,CAAC;IAlBU,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,IAAS;QACnC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,GAAW;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,GAAW;QACzB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,IAAe;QACnC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
@@ -0,0 +1,33 @@
1
+ import * as IORedis from 'ioredis';
2
+ import { Cluster } from 'ioredis';
3
+ export class Redis {
4
+ constructor(options, isCluster, clusterNodes) {
5
+ if (isCluster) {
6
+ this.client = new Cluster(clusterNodes, options);
7
+ }
8
+ else {
9
+ this.client = new IORedis(options);
10
+ }
11
+ }
12
+ async set(key, data) {
13
+ if (data.maxAge) {
14
+ await this.client.set(key, JSON.stringify(data), 'EX', data.maxAge);
15
+ return data;
16
+ }
17
+ await this.client.set(key, JSON.stringify(data));
18
+ return data;
19
+ }
20
+ async get(key) {
21
+ const cacheString = await this.client.get(key);
22
+ return JSON.parse(cacheString);
23
+ }
24
+ async drop(key) {
25
+ await this.client.del(key);
26
+ return true;
27
+ }
28
+ async invalidate(keys) {
29
+ (keys || []).forEach(key => this.client.del(key));
30
+ return true;
31
+ }
32
+ }
33
+ //# sourceMappingURL=ioredis-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ioredis-engine.js","sourceRoot":"","sources":["../../src/engines/ioredis-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,OAAO,EAAsE,MAAM,SAAS,CAAC;AAGtG,MAAM,OAAO,KAAK;IAId,YAAY,OAAsC,EAAE,SAAmB,EAAE,YAA4B;QACjG,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;SACpD;aAAM;YACH,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;SACtC;IACL,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,IAAS;QACnC,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACpE,OAAO,IAAI,CAAC;SACf;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,GAAW;QACxB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,GAAW;QACzB,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,IAAe;QACnC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
package/lib/index.js CHANGED
@@ -1,474 +1,6 @@
1
- /******/ (() => { // webpackBootstrap
2
- /******/ "use strict";
3
- /******/ var __webpack_modules__ = ({
4
-
5
- /***/ "./src/config/index.ts":
6
- /*!*****************************!*\
7
- !*** ./src/config/index.ts ***!
8
- \*****************************/
9
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
10
-
11
-
12
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- var desc = Object.getOwnPropertyDescriptor(m, k);
15
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
- desc = { enumerable: true, get: function() { return m[k]; } };
17
- }
18
- Object.defineProperty(o, k2, desc);
19
- }) : (function(o, m, k, k2) {
20
- if (k2 === undefined) k2 = k;
21
- o[k2] = m[k];
22
- }));
23
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
24
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
25
- };
26
- Object.defineProperty(exports, "__esModule", ({ value: true }));
27
- __exportStar(__webpack_require__(/*! ./env-config */ "./src/config/env-config.ts"), exports);
28
-
29
-
30
- /***/ }),
31
-
32
- /***/ "./src/constants.ts":
33
- /*!**************************!*\
34
- !*** ./src/constants.ts ***!
35
- \**************************/
36
- /***/ ((__unused_webpack_module, exports) => {
37
-
38
-
39
- Object.defineProperty(exports, "__esModule", ({ value: true }));
40
- exports.Types = void 0;
41
- var Types;
42
- (function (Types) {
43
- Types["CacheEngine"] = "CacheEngine";
44
- Types["CacheService"] = "CacheService";
45
- })(Types = exports.Types || (exports.Types = {}));
46
-
47
-
48
- /***/ }),
49
-
50
- /***/ "./src/containers/index.ts":
51
- /*!*********************************!*\
52
- !*** ./src/containers/index.ts ***!
53
- \*********************************/
54
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
55
-
56
-
57
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
58
- if (k2 === undefined) k2 = k;
59
- var desc = Object.getOwnPropertyDescriptor(m, k);
60
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
61
- desc = { enumerable: true, get: function() { return m[k]; } };
62
- }
63
- Object.defineProperty(o, k2, desc);
64
- }) : (function(o, m, k, k2) {
65
- if (k2 === undefined) k2 = k;
66
- o[k2] = m[k];
67
- }));
68
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
69
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
70
- };
71
- Object.defineProperty(exports, "__esModule", ({ value: true }));
72
- __exportStar(__webpack_require__(/*! ./module */ "./src/containers/module.ts"), exports);
73
-
74
-
75
- /***/ }),
76
-
77
- /***/ "./src/containers/module.ts":
78
- /*!**********************************!*\
79
- !*** ./src/containers/module.ts ***!
80
- \**********************************/
81
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
82
-
83
-
84
- Object.defineProperty(exports, "__esModule", ({ value: true }));
85
- exports.moduleFunc = void 0;
86
- const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
87
- const services_1 = __webpack_require__(/*! ../services */ "./src/services/index.ts");
88
- const constants_1 = __webpack_require__(/*! ../constants */ "./src/constants.ts");
89
- const ioredis_engine_1 = __webpack_require__(/*! ../engines/ioredis-engine */ "./src/engines/ioredis-engine.ts");
90
- const moduleFunc = (settings) => new inversify_1.ContainerModule((bind) => {
91
- /**
92
- *
93
- * @returns: () => cache;
94
- */
95
- bind(constants_1.Types.CacheService).toFactory((context) => {
96
- return () => {
97
- // TODO: to make it singleton we need to check if Cache already exist then return same.
98
- const cacheEngine = context.container.get(constants_1.Types.CacheEngine);
99
- const logger = context.container.get('Logger');
100
- const cache = new services_1.Cache(cacheEngine, logger);
101
- return cache;
102
- };
103
- }).whenTargetIsDefault();
104
- bind(constants_1.Types.CacheEngine)
105
- .toConstantValue(new ioredis_engine_1.Redis(settings.redisConnection))
106
- // .inSingletonScope()
107
- .whenTargetIsDefault();
108
- });
109
- exports.moduleFunc = moduleFunc;
110
-
111
-
112
- /***/ }),
113
-
114
- /***/ "./src/engines/ioredis-engine.ts":
115
- /*!***************************************!*\
116
- !*** ./src/engines/ioredis-engine.ts ***!
117
- \***************************************/
118
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
119
-
120
-
121
- Object.defineProperty(exports, "__esModule", ({ value: true }));
122
- exports.Redis = void 0;
123
- const IORedis = __webpack_require__(/*! ioredis */ "ioredis");
124
- const ioredis_1 = __webpack_require__(/*! ioredis */ "ioredis");
125
- class Redis {
126
- constructor(options, isCluster, clusterNodes) {
127
- if (isCluster) {
128
- this.client = new ioredis_1.Cluster(clusterNodes, options);
129
- }
130
- else {
131
- this.client = new IORedis(options);
132
- }
133
- }
134
- async set(key, data) {
135
- if (data.maxAge) {
136
- await this.client.set(key, JSON.stringify(data), 'EX', data.maxAge);
137
- return data;
138
- }
139
- await this.client.set(key, JSON.stringify(data));
140
- return data;
141
- }
142
- async get(key) {
143
- const cacheString = await this.client.get(key);
144
- return JSON.parse(cacheString);
145
- }
146
- async drop(key) {
147
- await this.client.del(key);
148
- return true;
149
- }
150
- async invalidate(keys) {
151
- (keys || []).forEach(key => this.client.del(key));
152
- return true;
153
- }
154
- }
155
- exports.Redis = Redis;
156
-
157
-
158
- /***/ }),
159
-
160
- /***/ "./src/index.ts":
161
- /*!**********************!*\
162
- !*** ./src/index.ts ***!
163
- \**********************/
164
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
165
-
166
-
167
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
168
- if (k2 === undefined) k2 = k;
169
- var desc = Object.getOwnPropertyDescriptor(m, k);
170
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
171
- desc = { enumerable: true, get: function() { return m[k]; } };
172
- }
173
- Object.defineProperty(o, k2, desc);
174
- }) : (function(o, m, k, k2) {
175
- if (k2 === undefined) k2 = k;
176
- o[k2] = m[k];
177
- }));
178
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
179
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
180
- };
181
- Object.defineProperty(exports, "__esModule", ({ value: true }));
182
- exports.Cache = void 0;
183
- const server_core_1 = __webpack_require__(/*! @common-stack/server-core */ "@common-stack/server-core");
184
- const module_1 = __webpack_require__(/*! ./module */ "./src/module.ts");
185
- __exportStar(__webpack_require__(/*! ./constants */ "./src/constants.ts"), exports);
186
- var services_1 = __webpack_require__(/*! ./services */ "./src/services/index.ts");
187
- Object.defineProperty(exports, "Cache", ({ enumerable: true, get: function () { return services_1.Cache; } }));
188
- exports["default"] = new server_core_1.Feature(module_1.default);
189
-
190
-
191
- /***/ }),
192
-
193
- /***/ "./src/module.ts":
194
- /*!***********************!*\
195
- !*** ./src/module.ts ***!
196
- \***********************/
197
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
198
-
199
-
200
- Object.defineProperty(exports, "__esModule", ({ value: true }));
201
- const server_core_1 = __webpack_require__(/*! @common-stack/server-core */ "@common-stack/server-core");
202
- const constants_1 = __webpack_require__(/*! ./constants */ "./src/constants.ts");
203
- const containers_1 = __webpack_require__(/*! ./containers */ "./src/containers/index.ts");
204
- const createServiceFunc = (container) => ({
205
- cache: container.get(constants_1.Types.CacheService),
206
- });
207
- exports["default"] = new server_core_1.Feature({
208
- schema: [],
209
- createServiceFunc,
210
- createContainerFunc: [containers_1.moduleFunc],
211
- });
212
-
213
-
214
- /***/ }),
215
-
216
- /***/ "./src/services/cache-service.ts":
217
- /*!***************************************!*\
218
- !*** ./src/services/cache-service.ts ***!
219
- \***************************************/
220
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
221
-
222
-
223
- Object.defineProperty(exports, "__esModule", ({ value: true }));
224
- exports.Cache = void 0;
225
- const url = __webpack_require__(/*! url */ "url");
226
- const server_1 = __webpack_require__(/*! @cdm-logger/server */ "@cdm-logger/server");
227
- const ioredis_engine_1 = __webpack_require__(/*! ../engines/ioredis-engine */ "./src/engines/ioredis-engine.ts");
228
- const config_1 = __webpack_require__(/*! ../config */ "./src/config/index.ts");
229
- class Cache {
230
- constructor(engine, logger) {
231
- this.engine = engine;
232
- if (logger) {
233
- this.logger = logger.child(this.constructor.name);
234
- }
235
- else {
236
- this.logger = server_1.logger.child(this.constructor.name);
237
- }
238
- }
239
- static get Instance() {
240
- if (this.instance) {
241
- return this.instance;
242
- }
243
- const { port, hostname } = url.parse(config_1.config.REDIS_URL);
244
- let options;
245
- let client;
246
- if (config_1.config.REDIS_SENTINEL_ENABLED) {
247
- options = {
248
- sentinels: [{ host: hostname, port }],
249
- name: config_1.config.REDIS_SENTINEL_NAME,
250
- };
251
- client = new ioredis_engine_1.Redis(options);
252
- }
253
- else if (config_1.config.REDIS_CLUSTER_ENABLED) {
254
- options = {};
255
- client = new ioredis_engine_1.Redis(options, true, config_1.config.REDIS_CLUSTER_URL);
256
- }
257
- else {
258
- options = { host: hostname, port };
259
- client = new ioredis_engine_1.Redis(options);
260
- }
261
- this.instance = new this(client);
262
- return this.instance;
263
- }
264
- key(key, scope) {
265
- return `${scope || Cache.DEFAULT_SCOPE}.${key}`;
266
- }
267
- isExpired(createdAt, maxAge) {
268
- const now = parseInt(`${Date.now() / 1000}`, null);
269
- return now - createdAt > maxAge;
270
- }
271
- getOptions(opts) {
272
- return Object.assign(this.defaults, opts || {});
273
- }
274
- get defaults() {
275
- return {
276
- scope: Cache.DEFAULT_SCOPE,
277
- maxAge: config_1.config.REDIS_CACHE_MAX_AGE_in_sec,
278
- createdAt: parseInt(`${Date.now() / 1000}`, null),
279
- };
280
- }
281
- async set(key, payload, options) {
282
- const opts = this.getOptions(options);
283
- const cache = Object.assign({}, { payload }, opts);
284
- const path = this.key(key, opts.scope);
285
- const result = this.engine.set(path, cache);
286
- return payload;
287
- }
288
- async get(key, options) {
289
- const opts = this.getOptions(options);
290
- const path = this.key(key, opts.scope);
291
- const cache = await this.engine.get(path);
292
- if (cache == null) {
293
- return null;
294
- }
295
- if (this.isExpired(cache.createdAt, cache.maxAge)) {
296
- this.engine.drop(path);
297
- return null;
298
- }
299
- else {
300
- return opts.parse
301
- ? cache.payload
302
- : cache.payload; // not really doing anything here
303
- }
304
- }
305
- async drop(key, options) {
306
- const opts = this.getOptions(options);
307
- const path = this.key(key, opts.scope);
308
- const ok = this.engine.drop(path);
309
- return true;
310
- }
311
- async invalidate(keys, options) {
312
- if (keys.length <= 0) {
313
- return this.engine.invalidate();
314
- }
315
- else {
316
- const opts = this.getOptions(options);
317
- const paths = keys.map(key => this.key(key, opts.scope));
318
- return this.engine.invalidate(paths);
319
- }
320
- }
321
- }
322
- exports.Cache = Cache;
323
- Cache.DEFAULT_SCOPE = 'cde_cache';
324
-
325
-
326
- /***/ }),
327
-
328
- /***/ "./src/services/index.ts":
329
- /*!*******************************!*\
330
- !*** ./src/services/index.ts ***!
331
- \*******************************/
332
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
333
-
334
-
335
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
336
- if (k2 === undefined) k2 = k;
337
- var desc = Object.getOwnPropertyDescriptor(m, k);
338
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
339
- desc = { enumerable: true, get: function() { return m[k]; } };
340
- }
341
- Object.defineProperty(o, k2, desc);
342
- }) : (function(o, m, k, k2) {
343
- if (k2 === undefined) k2 = k;
344
- o[k2] = m[k];
345
- }));
346
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
347
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
348
- };
349
- Object.defineProperty(exports, "__esModule", ({ value: true }));
350
- __exportStar(__webpack_require__(/*! ./cache-service */ "./src/services/cache-service.ts"), exports);
351
-
352
-
353
- /***/ }),
354
-
355
- /***/ "./src/config/env-config.ts":
356
- /*!**********************************!*\
357
- !*** ./src/config/env-config.ts ***!
358
- \**********************************/
359
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
360
-
361
-
362
- Object.defineProperty(exports, "__esModule", ({ value: true }));
363
- exports.config = void 0;
364
- const envalid_1 = __webpack_require__(/*! envalid */ "envalid");
365
- exports.config = (0, envalid_1.cleanEnv)(process.env, {
366
- REDIS_URL: (0, envalid_1.str)(),
367
- REDIS_SENTINEL_ENABLED: (0, envalid_1.bool)({ devDefault: false }),
368
- REDIS_SENTINEL_NAME: (0, envalid_1.str)({ default: 'mymaster' }),
369
- REDIS_CLUSTER_ENABLED: (0, envalid_1.bool)({ default: false }),
370
- REDIS_CLUSTER_URL: (0, envalid_1.json)({ desc: "Send cluster nodes as array of host and port object. ex: [{ host: 'node1', port: 6678}]" }),
371
- REDIS_CACHE_MAX_AGE_in_sec: (0, envalid_1.num)({ default: 2592000, desc: 'Max. age in seconds. Default is 30 days' }),
372
- NODE_ENV: (0, envalid_1.str)({ choices: ['production', 'test', 'staging', 'development'], default: 'production' }),
373
- });
374
-
375
-
376
- /***/ }),
377
-
378
- /***/ "@cdm-logger/server":
379
- /*!*************************************!*\
380
- !*** external "@cdm-logger/server" ***!
381
- \*************************************/
382
- /***/ ((module) => {
383
-
384
- module.exports = require("@cdm-logger/server");
385
-
386
- /***/ }),
387
-
388
- /***/ "@common-stack/server-core":
389
- /*!********************************************!*\
390
- !*** external "@common-stack/server-core" ***!
391
- \********************************************/
392
- /***/ ((module) => {
393
-
394
- module.exports = require("@common-stack/server-core");
395
-
396
- /***/ }),
397
-
398
- /***/ "envalid":
399
- /*!**************************!*\
400
- !*** external "envalid" ***!
401
- \**************************/
402
- /***/ ((module) => {
403
-
404
- module.exports = require("envalid");
405
-
406
- /***/ }),
407
-
408
- /***/ "inversify":
409
- /*!****************************!*\
410
- !*** external "inversify" ***!
411
- \****************************/
412
- /***/ ((module) => {
413
-
414
- module.exports = require("inversify");
415
-
416
- /***/ }),
417
-
418
- /***/ "ioredis":
419
- /*!**************************!*\
420
- !*** external "ioredis" ***!
421
- \**************************/
422
- /***/ ((module) => {
423
-
424
- module.exports = require("ioredis");
425
-
426
- /***/ }),
427
-
428
- /***/ "url":
429
- /*!**********************!*\
430
- !*** external "url" ***!
431
- \**********************/
432
- /***/ ((module) => {
433
-
434
- module.exports = require("url");
435
-
436
- /***/ })
437
-
438
- /******/ });
439
- /************************************************************************/
440
- /******/ // The module cache
441
- /******/ var __webpack_module_cache__ = {};
442
- /******/
443
- /******/ // The require function
444
- /******/ function __webpack_require__(moduleId) {
445
- /******/ // Check if module is in cache
446
- /******/ var cachedModule = __webpack_module_cache__[moduleId];
447
- /******/ if (cachedModule !== undefined) {
448
- /******/ return cachedModule.exports;
449
- /******/ }
450
- /******/ // Create a new module (and put it into the cache)
451
- /******/ var module = __webpack_module_cache__[moduleId] = {
452
- /******/ // no module.id needed
453
- /******/ // no module.loaded needed
454
- /******/ exports: {}
455
- /******/ };
456
- /******/
457
- /******/ // Execute the module function
458
- /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
459
- /******/
460
- /******/ // Return the exports of the module
461
- /******/ return module.exports;
462
- /******/ }
463
- /******/
464
- /************************************************************************/
465
- /******/
466
- /******/ // startup
467
- /******/ // Load entry module and return exports
468
- /******/ // This entry module is referenced by other modules so it can't be inlined
469
- /******/ var __webpack_exports__ = __webpack_require__("./src/index.ts");
470
- /******/ module.exports = __webpack_exports__;
471
- /******/
472
- /******/ })()
473
- ;
1
+ import { Feature } from '@common-stack/server-core';
2
+ import module from './module';
3
+ export * from './constants';
4
+ export { Cache } from './services';
5
+ export default new Feature(module);
474
6
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","mappings":"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","sources":["webpack://@common-stack/cache-api-server/./src/config/index.ts","webpack://@common-stack/cache-api-server/./src/constants.ts","webpack://@common-stack/cache-api-server/./src/containers/index.ts","webpack://@common-stack/cache-api-server/./src/containers/module.ts","webpack://@common-stack/cache-api-server/./src/engines/ioredis-engine.ts","webpack://@common-stack/cache-api-server/./src/index.ts","webpack://@common-stack/cache-api-server/./src/module.ts","webpack://@common-stack/cache-api-server/./src/services/cache-service.ts","webpack://@common-stack/cache-api-server/./src/services/index.ts","webpack://@common-stack/cache-api-server/./src/config/env-config.ts","webpack://@common-stack/cache-api-server/external commonjs \"@cdm-logger/server\"","webpack://@common-stack/cache-api-server/external commonjs \"@common-stack/server-core\"","webpack://@common-stack/cache-api-server/external commonjs \"envalid\"","webpack://@common-stack/cache-api-server/external commonjs \"inversify\"","webpack://@common-stack/cache-api-server/external commonjs \"ioredis\"","webpack://@common-stack/cache-api-server/external commonjs \"url\"","webpack://@common-stack/cache-api-server/webpack/bootstrap","webpack://@common-stack/cache-api-server/webpack/before-startup","webpack://@common-stack/cache-api-server/webpack/startup","webpack://@common-stack/cache-api-server/webpack/after-startup"],"sourcesContent":["export * from './env-config';\n","export enum Types {\n CacheEngine = 'CacheEngine',\n CacheService = 'CacheService',\n}\n","export * from './module';\n","import { ContainerModule, interfaces } from 'inversify';\nimport { CdmLogger } from '@cdm-logger/core';\nimport { Cache } from '../services';\nimport { Types } from '../constants';\nimport { Redis } from '../engines/ioredis-engine';\nimport { ICacheEngine } from '../interfaces';\n\nexport const moduleFunc: (settings: any, pubsub) => interfaces.ContainerModule =\n (settings: any) => new ContainerModule((bind: interfaces.Bind) => {\n\n /**\n *\n * @returns: () => cache;\n */\n bind<interfaces.Factory<Cache>>(Types.CacheService).toFactory<Cache>((context: interfaces.Context) => {\n return () => {\n // TODO: to make it singleton we need to check if Cache already exist then return same.\n const cacheEngine = context.container.get<ICacheEngine>(Types.CacheEngine);\n const logger = context.container.get<CdmLogger.ILogger>('Logger');\n const cache = new Cache(cacheEngine, logger);\n return cache;\n };\n }).whenTargetIsDefault();\n\n bind<ICacheEngine>(Types.CacheEngine)\n .toConstantValue(new Redis(settings.redisConnection))\n // .inSingletonScope()\n .whenTargetIsDefault();\n });\n\n","import * as IORedis from 'ioredis';\nimport { Cluster, ClusterNode, ClusterOptions, Redis as RedisInterface, RedisOptions } from 'ioredis';\nimport { ICacheEngine } from '../interfaces';\n\nexport class Redis implements ICacheEngine {\n private client: RedisInterface | Cluster;\n private getAsync;\n\n constructor(options: RedisOptions | ClusterOptions, isCluster?: boolean, clusterNodes?: ClusterNode[]) {\n if (isCluster) {\n this.client = new Cluster(clusterNodes, options);\n } else {\n this.client = new IORedis(options);\n }\n }\n\n public async set(key: string, data: any) {\n if (data.maxAge) {\n await this.client.set(key, JSON.stringify(data), 'EX', data.maxAge);\n return data;\n }\n await this.client.set(key, JSON.stringify(data));\n return data;\n }\n\n public async get(key: string) {\n const cacheString = await this.client.get(key);\n return JSON.parse(cacheString);\n }\n\n public async drop(key: string) {\n await this.client.del(key);\n return true;\n }\n\n public async invalidate(keys?: string[]) {\n (keys || []).forEach(key => this.client.del(key));\n return true;\n }\n}\n","import { Feature } from '@common-stack/server-core';\nimport module from './module';\n\nexport * from './constants';\nexport { Cache } from './services';\nexport default new Feature(module);\n\n","import * as _ from 'lodash';\nimport { interfaces } from 'inversify';\nimport { Feature } from '@common-stack/server-core';\n\nimport { Types } from './constants';\nimport { moduleFunc } from './containers';\n\nconst createServiceFunc = (container: interfaces.Container) => ({\n cache: container.get(Types.CacheService),\n});\n\nexport default new Feature({\n schema: [],\n createServiceFunc,\n createContainerFunc: [moduleFunc],\n});\n","import * as _ from 'lodash';\nimport * as url from 'url';\nimport { CdmLogger } from '@cdm-logger/core';\nimport { logger as cdmLogger } from '@cdm-logger/server';\nimport { ICacheService, ICacheEngine, ICacheOptions, ICacheSetOptions } from '../interfaces';\nimport { Redis } from '../engines/ioredis-engine';\nimport { config } from '../config';\n\nexport class Cache implements ICacheService {\n private static DEFAULT_SCOPE = 'cde_cache';\n private static instance: Cache;\n\n private logger: CdmLogger.ILogger;\n private engine: ICacheEngine;\n\n constructor(\n engine: ICacheEngine,\n logger?: CdmLogger.ILogger,\n ) {\n this.engine = engine;\n if (logger) {\n this.logger = logger.child(this.constructor.name);\n } else {\n this.logger = cdmLogger.child(this.constructor.name);\n }\n }\n\n public static get Instance() {\n if (this.instance) {\n return this.instance;\n }\n const { port, hostname } = url.parse(config.REDIS_URL) as { port: any, hostname: string };\n let options;\n let client;\n if (config.REDIS_SENTINEL_ENABLED) {\n options = {\n sentinels: [{ host: hostname, port }],\n name: config.REDIS_SENTINEL_NAME,\n };\n client = new Redis(options);\n } else if (config.REDIS_CLUSTER_ENABLED) {\n options = {};\n client = new Redis(options, true, config.REDIS_CLUSTER_URL);\n } else {\n options = { host: hostname, port };\n client = new Redis(options);\n }\n this.instance = new this(client);\n return this.instance;\n }\n\n private key(key: string, scope?: string) {\n return `${scope || Cache.DEFAULT_SCOPE}.${key}`;\n }\n\n private isExpired(createdAt: number, maxAge: number) {\n const now = parseInt(`${Date.now() / 1000}`, null);\n return now - createdAt > maxAge;\n }\n\n private getOptions(opts: ICacheOptions) {\n return Object.assign(this.defaults, opts || {});\n }\n\n get defaults() {\n return {\n scope: Cache.DEFAULT_SCOPE,\n maxAge: config.REDIS_CACHE_MAX_AGE_in_sec,\n createdAt: parseInt(`${Date.now() / 1000}`, null),\n };\n }\n\n public async set(key: string, payload: any, options?: ICacheSetOptions) {\n const opts = this.getOptions(options);\n const cache = Object.assign({}, { payload }, opts);\n\n const path = this.key(key, opts.scope);\n const result = this.engine.set(path, cache);\n\n return payload;\n }\n\n public async get(key: string, options?: ICacheOptions) {\n const opts = this.getOptions(options);\n const path = this.key(key, opts.scope);\n const cache = await this.engine.get(path);\n\n if (cache == null) {\n return null;\n }\n\n if (this.isExpired(cache.createdAt, cache.maxAge)) {\n this.engine.drop(path);\n return null;\n } else {\n return opts.parse\n ? cache.payload\n : cache.payload; // not really doing anything here\n }\n }\n\n public async drop(key, options?: ICacheOptions) {\n const opts = this.getOptions(options);\n const path = this.key(key, opts.scope);\n\n const ok = this.engine.drop(path);\n return true;\n }\n\n public async invalidate(keys, options?: ICacheOptions) {\n if (keys.length <= 0) {\n return this.engine.invalidate();\n } else {\n const opts = this.getOptions(options);\n const paths = keys.map(key => this.key(key, opts.scope));\n\n return this.engine.invalidate(paths);\n }\n }\n}\n","export * from './cache-service';\n","import { str, cleanEnv, json, num, bool } from 'envalid';\n\nexport interface IConfig {\n NODE_ENV: string;\n REDIS_URL: string;\n REDIS_CACHE_MAX_AGE_in_sec: number;\n REDIS_SENTINEL_ENABLED: boolean;\n REDIS_SENTINEL_NAME?: string;\n REDIS_CLUSTER_ENABLED?: boolean;\n REDIS_CLUSTER_URL?: any;\n}\n\nexport const config = cleanEnv<IConfig>(process.env, {\n REDIS_URL: str(),\n REDIS_SENTINEL_ENABLED: bool({ devDefault: false }),\n REDIS_SENTINEL_NAME: str({ default: 'mymaster' }),\n REDIS_CLUSTER_ENABLED: bool({ default: false }),\n REDIS_CLUSTER_URL: json({ desc: \"Send cluster nodes as array of host and port object. ex: [{ host: 'node1', port: 6678}]\" }),\n REDIS_CACHE_MAX_AGE_in_sec: num({ default: 2592000, desc: 'Max. age in seconds. Default is 30 days' }),\n NODE_ENV: str({ choices: ['production', 'test', 'staging', 'development'], default: 'production' }),\n});\n\n","module.exports = require(\"@cdm-logger/server\");","module.exports = require(\"@common-stack/server-core\");","module.exports = require(\"envalid\");","module.exports = require(\"inversify\");","module.exports = require(\"ioredis\");","module.exports = require(\"url\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/index.ts\");\n",""],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cache-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-engine.js","sourceRoot":"","sources":["../../src/interfaces/cache-engine.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cache-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-service.js","sourceRoot":"","sources":["../../src/interfaces/cache-service.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ICache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ICache.js","sourceRoot":"","sources":["../../../src/interfaces/common/ICache.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from './ICache';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './cache-engine';
2
+ export * from './cache-service';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
package/lib/module.js ADDED
@@ -0,0 +1,12 @@
1
+ import { Feature } from '@common-stack/server-core';
2
+ import { Types } from './constants';
3
+ import { moduleFunc } from './containers';
4
+ const createServiceFunc = (container) => ({
5
+ cache: container.get(Types.CacheService),
6
+ });
7
+ export default new Feature({
8
+ schema: [],
9
+ createServiceFunc,
10
+ createContainerFunc: [moduleFunc],
11
+ });
12
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEpD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,iBAAiB,GAAG,CAAC,SAA+B,EAAE,EAAE,CAAC,CAAC;IAC5D,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC;CAC3C,CAAC,CAAC;AAEH,eAAe,IAAI,OAAO,CAAC;IACvB,MAAM,EAAE,EAAE;IACV,iBAAiB;IACjB,mBAAmB,EAAE,CAAC,UAAU,CAAC;CACpC,CAAC,CAAC"}
@@ -0,0 +1,99 @@
1
+ import * as url from 'url';
2
+ import { logger as cdmLogger } from '@cdm-logger/server';
3
+ import { Redis } from '../engines/ioredis-engine';
4
+ import { config } from '../config';
5
+ export class Cache {
6
+ constructor(engine, logger) {
7
+ this.engine = engine;
8
+ if (logger) {
9
+ this.logger = logger.child(this.constructor.name);
10
+ }
11
+ else {
12
+ this.logger = cdmLogger.child(this.constructor.name);
13
+ }
14
+ }
15
+ static get Instance() {
16
+ if (this.instance) {
17
+ return this.instance;
18
+ }
19
+ const { port, hostname } = url.parse(config.REDIS_URL);
20
+ let options;
21
+ let client;
22
+ if (config.REDIS_SENTINEL_ENABLED) {
23
+ options = {
24
+ sentinels: [{ host: hostname, port }],
25
+ name: config.REDIS_SENTINEL_NAME,
26
+ };
27
+ client = new Redis(options);
28
+ }
29
+ else if (config.REDIS_CLUSTER_ENABLED) {
30
+ options = {};
31
+ client = new Redis(options, true, config.REDIS_CLUSTER_URL);
32
+ }
33
+ else {
34
+ options = { host: hostname, port };
35
+ client = new Redis(options);
36
+ }
37
+ this.instance = new this(client);
38
+ return this.instance;
39
+ }
40
+ key(key, scope) {
41
+ return `${scope || Cache.DEFAULT_SCOPE}.${key}`;
42
+ }
43
+ isExpired(createdAt, maxAge) {
44
+ const now = parseInt(`${Date.now() / 1000}`, null);
45
+ return now - createdAt > maxAge;
46
+ }
47
+ getOptions(opts) {
48
+ return Object.assign(this.defaults, opts || {});
49
+ }
50
+ get defaults() {
51
+ return {
52
+ scope: Cache.DEFAULT_SCOPE,
53
+ maxAge: config.REDIS_CACHE_MAX_AGE_in_sec,
54
+ createdAt: parseInt(`${Date.now() / 1000}`, null),
55
+ };
56
+ }
57
+ async set(key, payload, options) {
58
+ const opts = this.getOptions(options);
59
+ const cache = Object.assign({}, { payload }, opts);
60
+ const path = this.key(key, opts.scope);
61
+ const result = this.engine.set(path, cache);
62
+ return payload;
63
+ }
64
+ async get(key, options) {
65
+ const opts = this.getOptions(options);
66
+ const path = this.key(key, opts.scope);
67
+ const cache = await this.engine.get(path);
68
+ if (cache == null) {
69
+ return null;
70
+ }
71
+ if (this.isExpired(cache.createdAt, cache.maxAge)) {
72
+ this.engine.drop(path);
73
+ return null;
74
+ }
75
+ else {
76
+ return opts.parse
77
+ ? cache.payload
78
+ : cache.payload; // not really doing anything here
79
+ }
80
+ }
81
+ async drop(key, options) {
82
+ const opts = this.getOptions(options);
83
+ const path = this.key(key, opts.scope);
84
+ const ok = this.engine.drop(path);
85
+ return true;
86
+ }
87
+ async invalidate(keys, options) {
88
+ if (keys.length <= 0) {
89
+ return this.engine.invalidate();
90
+ }
91
+ else {
92
+ const opts = this.getOptions(options);
93
+ const paths = keys.map(key => this.key(key, opts.scope));
94
+ return this.engine.invalidate(paths);
95
+ }
96
+ }
97
+ }
98
+ Cache.DEFAULT_SCOPE = 'cde_cache';
99
+ //# sourceMappingURL=cache-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-service.js","sourceRoot":"","sources":["../../src/services/cache-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './cache-service';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,15 +1,16 @@
1
1
  {
2
2
  "name": "@common-stack/cache-api-server",
3
- "version": "3.0.2-alpha.1",
3
+ "version": "3.0.2-alpha.4",
4
4
  "description": "Sample core for higher packages to depend on",
5
5
  "license": "ISC",
6
6
  "author": "CDMBase LLC",
7
7
  "main": "lib/index.js",
8
+ "module": "lib/index.js",
8
9
  "typings": "lib/index.d.ts",
9
10
  "scripts": {
10
11
  "build": "npm run build:clean && npm run build:lib",
11
12
  "build:clean": "rimraf lib",
12
- "build:lib": "webpack",
13
+ "build:lib": "tsc",
13
14
  "build:lib:watch": "npm run build:lib -- --watch",
14
15
  "jest": "./node_modules/.bin/jest",
15
16
  "prepublish": "npm run build",
@@ -21,7 +22,7 @@
21
22
  "watch": "npm run build:lib:watch"
22
23
  },
23
24
  "dependencies": {
24
- "@common-stack/server-core": "3.0.2-alpha.1"
25
+ "@common-stack/server-core": "3.0.2-alpha.4"
25
26
  },
26
27
  "peerDependencies": {
27
28
  "ioredis": ">=5.0.0"
@@ -29,7 +30,7 @@
29
30
  "publishConfig": {
30
31
  "access": "public"
31
32
  },
32
- "gitHead": "0304005c45dc61ac15df54ba07ef76e475213c01",
33
+ "gitHead": "7deb1a3481f99ae891bcd92f4ca426f9526c1cf7",
33
34
  "typescript": {
34
35
  "definition": "lib/index.d.ts"
35
36
  }
package/tsconfig.json CHANGED
@@ -1,20 +1,18 @@
1
1
  {
2
2
  "extends": "../../../tsconfig.json",
3
3
  "compilerOptions": {
4
- "allowSyntheticDefaultImports": true,
5
- "experimentalDecorators": true,
6
- "rootDirs": ["./src", "../common"],
7
- "outDir": "../lib",
4
+ "resolveJsonModule": true,
5
+ "rootDir": "src",
6
+ "outDir": "lib",
8
7
  "declarationDir": "lib",
9
- "typeRoots": [
10
- "../../../node_modules/@types"
11
- ],
12
- "skipLibCheck": true
8
+ "declaration": true,
9
+ "skipLibCheck": true,
13
10
  },
11
+ "include": ["src"],
14
12
  "exclude": [
15
13
  "node_modules",
16
14
  "lib",
17
15
  "dist",
18
16
  "webpack.config.js"
19
17
  ]
20
- }
18
+ }