@dismissible/nestjs-api 2.0.3 → 3.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.
- package/README.md +45 -0
- package/config/.env.development.yaml +11 -2
- package/config/.env.yaml +14 -0
- package/package.json +9 -9
- package/src/app.module.d.ts +2 -0
- package/src/app.module.js +4 -0
- package/src/app.module.js.map +1 -1
- package/src/cache/cache.config.d.ts +11 -0
- package/src/cache/cache.config.js +37 -0
- package/src/cache/cache.config.js.map +1 -0
- package/src/cache/dynamic-cache.module.d.ts +8 -0
- package/src/cache/dynamic-cache.module.js +36 -0
- package/src/cache/dynamic-cache.module.js.map +1 -0
- package/src/config/default-app.config.d.ts +2 -0
- package/src/config/default-app.config.js +7 -0
- package/src/config/default-app.config.js.map +1 -1
package/README.md
CHANGED
|
@@ -161,6 +161,38 @@ Depending how your IAMs is configured will depend what config you need to pass.
|
|
|
161
161
|
|
|
162
162
|
No configuration required. This storage backend is intended for testing and development purposes only.
|
|
163
163
|
|
|
164
|
+
### Cache Settings
|
|
165
|
+
|
|
166
|
+
Caching improves performance by storing frequently accessed dismissible items in memory or Redis, reducing database queries. By default, caching is disabled (null cache adapter). To enable caching, set `DISMISSIBLE_CACHE_TYPE` to either `redis` or `memory`.
|
|
167
|
+
|
|
168
|
+
#### Redis Cache
|
|
169
|
+
|
|
170
|
+
Redis is a high-performance in-memory data store that's perfect for distributed caching. It's ideal for production environments where you need shared caching across multiple instances. To enable Redis cache, set `DISMISSIBLE_CACHE_TYPE=redis` and provide a Redis connection URL.
|
|
171
|
+
|
|
172
|
+
| Variable | Description | Default |
|
|
173
|
+
| -------------------------------------------- | --------------------------------------------- | ------- |
|
|
174
|
+
| `DISMISSIBLE_CACHE_REDIS_URL` | Redis connection URL (required if type=redis) | - |
|
|
175
|
+
| `DISMISSIBLE_CACHE_REDIS_KEY_PREFIX` | Optional prefix for cache keys | - |
|
|
176
|
+
| `DISMISSIBLE_CACHE_REDIS_TTL_MS` | Time-to-live for cached items (milliseconds) | - |
|
|
177
|
+
| `DISMISSIBLE_CACHE_REDIS_ENABLE_READY_CHECK` | Enable Redis ready check | - |
|
|
178
|
+
| `DISMISSIBLE_CACHE_REDIS_MAX_RETRIES` | Maximum retries per request | - |
|
|
179
|
+
|
|
180
|
+
> [!TIP]
|
|
181
|
+
> An example Redis URL is: `redis://localhost:6379` or `redis://user:password@host:6379` for authenticated connections.
|
|
182
|
+
|
|
183
|
+
#### Memory Cache
|
|
184
|
+
|
|
185
|
+
Memory cache stores items in the application's memory. It's fast but limited to a single instance and doesn't persist across restarts. Ideal for development or single-instance deployments. To enable memory cache, set `DISMISSIBLE_CACHE_TYPE=memory`.
|
|
186
|
+
|
|
187
|
+
| Variable | Description | Default |
|
|
188
|
+
| ------------------------------------ | -------------------------------------------- | ------- |
|
|
189
|
+
| `DISMISSIBLE_CACHE_MEMORY_MAX_ITEMS` | Maximum number of items to cache | - |
|
|
190
|
+
| `DISMISSIBLE_CACHE_MEMORY_TTL_MS` | Time-to-live for cached items (milliseconds) | - |
|
|
191
|
+
|
|
192
|
+
#### Cache Disabled (Default)
|
|
193
|
+
|
|
194
|
+
When `DISMISSIBLE_CACHE_TYPE` is not set or empty, caching is disabled. The system uses a null cache adapter that performs no operations. This is the default behavior and requires no configuration.
|
|
195
|
+
|
|
164
196
|
### Swagger
|
|
165
197
|
|
|
166
198
|
When enabled, Swagger documentation is published to the path specified by `DISMISSIBLE_SWAGGER_PATH` (defaults to `/docs`). The OpenAPI schema is available at `${PATH}-json` (JSON format) and `${PATH}-yaml` (YAML format). For example:
|
|
@@ -278,6 +310,19 @@ storage:
|
|
|
278
310
|
secretAccessKey: ${DISMISSIBLE_STORAGE_DYNAMODB_AWS_SECRET_ACCESS_KEY:-}
|
|
279
311
|
sessionToken: ${DISMISSIBLE_STORAGE_DYNAMODB_AWS_SESSION_TOKEN:-}
|
|
280
312
|
|
|
313
|
+
cache:
|
|
314
|
+
# redis | memory | null (or omit for null)
|
|
315
|
+
type: ${DISMISSIBLE_CACHE_TYPE:-}
|
|
316
|
+
memory:
|
|
317
|
+
maxItems: ${DISMISSIBLE_CACHE_MEMORY_MAX_ITEMS:-}
|
|
318
|
+
ttlMs: ${DISMISSIBLE_CACHE_MEMORY_TTL_MS:-}
|
|
319
|
+
redis:
|
|
320
|
+
url: ${DISMISSIBLE_CACHE_REDIS_URL:-}
|
|
321
|
+
keyPrefix: ${DISMISSIBLE_CACHE_REDIS_KEY_PREFIX:-}
|
|
322
|
+
ttlMs: ${DISMISSIBLE_CACHE_REDIS_TTL_MS:-}
|
|
323
|
+
enableReadyCheck: ${DISMISSIBLE_CACHE_REDIS_ENABLE_READY_CHECK:-}
|
|
324
|
+
maxRetriesPerRequest: ${DISMISSIBLE_CACHE_REDIS_MAX_RETRIES:-}
|
|
325
|
+
|
|
281
326
|
jwtAuth:
|
|
282
327
|
enabled: ${DISMISSIBLE_JWT_AUTH_ENABLED:-false}
|
|
283
328
|
wellKnownUrl: ${DISMISSIBLE_JWT_AUTH_WELL_KNOWN_URL:-}
|
|
@@ -20,8 +20,8 @@ storage:
|
|
|
20
20
|
# postgres | dynamodb | memory
|
|
21
21
|
type: ${DISMISSIBLE_STORAGE_TYPE:-memory}
|
|
22
22
|
memory:
|
|
23
|
-
maxItems:
|
|
24
|
-
ttlMs:
|
|
23
|
+
maxItems: 5000
|
|
24
|
+
ttlMs: 21600000
|
|
25
25
|
postgres:
|
|
26
26
|
connectionString: postgresql://postgres:postgres@localhost:5432/dismissible
|
|
27
27
|
dynamodb:
|
|
@@ -31,6 +31,15 @@ storage:
|
|
|
31
31
|
accessKeyId: test
|
|
32
32
|
secretAccessKey: test
|
|
33
33
|
|
|
34
|
+
cache:
|
|
35
|
+
# redis | memory | null (or omit for null)
|
|
36
|
+
type: ${DISMISSIBLE_CACHE_TYPE:-}
|
|
37
|
+
memory:
|
|
38
|
+
maxItems: 5000
|
|
39
|
+
ttlMs: 21600000
|
|
40
|
+
redis:
|
|
41
|
+
url: redis://localhost:6379
|
|
42
|
+
|
|
34
43
|
jwtAuth:
|
|
35
44
|
enabled: false
|
|
36
45
|
|
package/config/.env.yaml
CHANGED
|
@@ -37,6 +37,20 @@ storage:
|
|
|
37
37
|
secretAccessKey: ${DISMISSIBLE_STORAGE_DYNAMODB_AWS_SECRET_ACCESS_KEY:-}
|
|
38
38
|
sessionToken: ${DISMISSIBLE_STORAGE_DYNAMODB_AWS_SESSION_TOKEN:-}
|
|
39
39
|
|
|
40
|
+
cache:
|
|
41
|
+
# redis | memory | null (or omit for null)
|
|
42
|
+
type: ${DISMISSIBLE_CACHE_TYPE:-}
|
|
43
|
+
memory:
|
|
44
|
+
maxItems: ${DISMISSIBLE_CACHE_MEMORY_MAX_ITEMS:-5000}
|
|
45
|
+
ttlMs: ${DISMISSIBLE_CACHE_MEMORY_TTL_MS:-21600000}
|
|
46
|
+
redis:
|
|
47
|
+
url: ${DISMISSIBLE_CACHE_REDIS_URL:-}
|
|
48
|
+
keyPrefix: ${DISMISSIBLE_CACHE_REDIS_KEY_PREFIX:-"dismissible:cache:"}
|
|
49
|
+
ttlMs: ${DISMISSIBLE_CACHE_REDIS_TTL_MS:-}
|
|
50
|
+
enableReadyCheck: ${DISMISSIBLE_CACHE_REDIS_ENABLE_READY_CHECK:-}
|
|
51
|
+
maxRetriesPerRequest: ${DISMISSIBLE_CACHE_REDIS_MAX_RETRIES:-}
|
|
52
|
+
connectionTimeoutMs: ${DISMISSIBLE_CACHE_REDIS_CONNECTION_TIMEOUT_MS:-}
|
|
53
|
+
|
|
40
54
|
jwtAuth:
|
|
41
55
|
enabled: ${DISMISSIBLE_JWT_AUTH_ENABLED:-false}
|
|
42
56
|
wellKnownUrl: ${DISMISSIBLE_JWT_AUTH_WELL_KNOWN_URL:-}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dismissible/nestjs-api",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "Dismissible API application",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"types": "./src/index.d.ts",
|
|
@@ -30,14 +30,14 @@
|
|
|
30
30
|
"storage:setup:dynamodb": "npx dismissible-dynamodb-setup"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@dismissible/nestjs-core": "^
|
|
34
|
-
"@dismissible/nestjs-item": "^
|
|
35
|
-
"@dismissible/nestjs-jwt-auth-hook": "^
|
|
36
|
-
"@dismissible/nestjs-storage": "^
|
|
37
|
-
"@dismissible/nestjs-postgres-storage": "^
|
|
38
|
-
"@dismissible/nestjs-dynamodb-storage": "^
|
|
39
|
-
"@dismissible/nestjs-logger": "^
|
|
40
|
-
"@dismissible/nestjs-rate-limiter-hook": "^
|
|
33
|
+
"@dismissible/nestjs-core": "^3.1.0",
|
|
34
|
+
"@dismissible/nestjs-item": "^3.1.0",
|
|
35
|
+
"@dismissible/nestjs-jwt-auth-hook": "^3.1.0",
|
|
36
|
+
"@dismissible/nestjs-storage": "^3.1.0",
|
|
37
|
+
"@dismissible/nestjs-postgres-storage": "^3.1.0",
|
|
38
|
+
"@dismissible/nestjs-dynamodb-storage": "^3.1.0",
|
|
39
|
+
"@dismissible/nestjs-logger": "^3.1.0",
|
|
40
|
+
"@dismissible/nestjs-rate-limiter-hook": "^3.1.0",
|
|
41
41
|
"@nestjs/common": "^11.1.11",
|
|
42
42
|
"@nestjs/core": "^11.1.11",
|
|
43
43
|
"@nestjs/platform-fastify": "^11.1.11",
|
package/src/app.module.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { IDismissibleLifecycleHook } from '@dismissible/nestjs-core';
|
|
|
3
3
|
import { IDismissibleLogger } from '@dismissible/nestjs-logger';
|
|
4
4
|
import { DefaultAppConfig } from './config/default-app.config';
|
|
5
5
|
import { StorageType } from './storage/storage.config';
|
|
6
|
+
import { CacheType } from './cache/cache.config';
|
|
6
7
|
export type AppModuleOptions = {
|
|
7
8
|
configPath?: string;
|
|
8
9
|
schema?: new () => DefaultAppConfig;
|
|
@@ -10,6 +11,7 @@ export type AppModuleOptions = {
|
|
|
10
11
|
imports?: DynamicModule[];
|
|
11
12
|
hooks?: Type<IDismissibleLifecycleHook>[];
|
|
12
13
|
storage?: StorageType;
|
|
14
|
+
cache?: CacheType;
|
|
13
15
|
};
|
|
14
16
|
export declare class AppModule {
|
|
15
17
|
static forRoot(options?: AppModuleOptions): {
|
package/src/app.module.js
CHANGED
|
@@ -11,6 +11,7 @@ const path_1 = require("path");
|
|
|
11
11
|
const nestjs_core_1 = require("@dismissible/nestjs-core");
|
|
12
12
|
const dynamic_storage_module_1 = require("./storage/dynamic-storage.module");
|
|
13
13
|
const nestjs_jwt_auth_hook_1 = require("@dismissible/nestjs-jwt-auth-hook");
|
|
14
|
+
const dynamic_cache_module_1 = require("./cache/dynamic-cache.module");
|
|
14
15
|
const nestjs_rate_limiter_hook_1 = require("@dismissible/nestjs-rate-limiter-hook");
|
|
15
16
|
const class_transformer_1 = require("class-transformer");
|
|
16
17
|
let AppModule = AppModule_1 = class AppModule {
|
|
@@ -49,6 +50,9 @@ let AppModule = AppModule_1 = class AppModule {
|
|
|
49
50
|
// if we can raise an issue similar to this: https://github.com/nestjs/nest/issues/9868
|
|
50
51
|
storage: options?.storage ?? process.env.DISMISSIBLE_STORAGE_TYPE,
|
|
51
52
|
}),
|
|
53
|
+
cache: dynamic_cache_module_1.DynamicCacheModule.forRootAsync({
|
|
54
|
+
cache: options?.cache ?? process.env.DISMISSIBLE_CACHE_TYPE,
|
|
55
|
+
}),
|
|
52
56
|
}),
|
|
53
57
|
],
|
|
54
58
|
};
|
package/src/app.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../../api/src/app.module.ts"],"names":[],"mappings":";;;;;AAAA,2CAA6E;AAC7E,qCAAwC;AACxC,qCAAwC;AACxC,oDAAgD;AAChD,+BAA4B;AAC5B,0DAAwF;AAGxF,6EAAwE;AACxE,4EAI2C;AAE3C,oFAI+C;AAC/C,yDAAiD;
|
|
1
|
+
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../../api/src/app.module.ts"],"names":[],"mappings":";;;;;AAAA,2CAA6E;AAC7E,qCAAwC;AACxC,qCAAwC;AACxC,oDAAgD;AAChD,+BAA4B;AAC5B,0DAAwF;AAGxF,6EAAwE;AACxE,4EAI2C;AAE3C,uEAAkE;AAElE,oFAI+C;AAC/C,yDAAiD;AAa1C,IAAM,SAAS,iBAAf,MAAM,SAAS;IACpB,MAAM,CAAC,OAAO,CAAC,OAA0B;QACvC,OAAO;YACL,MAAM,EAAE,WAAS;YACjB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;SACnC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,OAA0B;QACjD,OAAO;YACL,OAAO,EAAE;gBACP,qBAAY,CAAC,OAAO,CAAC;oBACnB,IAAI,EAAE,OAAO,EAAE,UAAU,IAAI,IAAA,WAAI,EAAC,SAAS,EAAE,WAAW,CAAC;oBACzD,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,sBAAS;iBACrC,CAAC;gBACF,qBAAY;gBACZ,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;gBAC3B,gDAAqB,CAAC,YAAY,CAAC;oBACjC,UAAU,EAAE,CAAC,MAAwB,EAAE,EAAE;wBACvC,OAAO,MAAM,CAAC,WAAW,IAAI,IAAA,gCAAY,EAAC,gDAAqB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;oBACvF,CAAC;oBACD,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,sBAAS,CAAC;iBACvC,CAAC;gBACF,wCAAiB,CAAC,YAAY,CAAC;oBAC7B,UAAU,EAAE,CAAC,MAAyB,EAAE,EAAE,CAAC,MAAM;oBACjD,MAAM,EAAE,CAAC,wCAAiB,CAAC;iBAC5B,CAAC;gBACF,+BAAiB,CAAC,OAAO,CAAC;oBACxB,MAAM,EAAE,OAAO,EAAE,MAAM;oBACvB,KAAK,EAAE,CAAC,kCAAW,EAAE,0CAAe,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;oBAChE,OAAO,EAAE,6CAAoB,CAAC,YAAY,CAAC;wBACzC,yDAAyD;wBACzD,0EAA0E;wBAC1E,yEAAyE;wBACzE,yFAAyF;wBACzF,OAAO,EAAE,OAAO,EAAE,OAAO,IAAK,OAAO,CAAC,GAAG,CAAC,wBAAwC;qBACnF,CAAC;oBACF,KAAK,EAAE,yCAAkB,CAAC,YAAY,CAAC;wBACrC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAK,OAAO,CAAC,GAAG,CAAC,sBAAoC;qBAC3E,CAAC;iBACH,CAAC;aACH;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AA5CY,8BAAS;oBAAT,SAAS;IADrB,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,SAAS,CA4CrB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { RedisCacheConfig } from '@dismissible/nestjs-redis-cache';
|
|
2
|
+
import { MemoryCacheConfig } from '@dismissible/nestjs-memory-cache';
|
|
3
|
+
export declare enum CacheType {
|
|
4
|
+
REDIS = "redis",
|
|
5
|
+
MEMORY = "memory"
|
|
6
|
+
}
|
|
7
|
+
export declare class CacheConfig {
|
|
8
|
+
readonly type?: CacheType;
|
|
9
|
+
readonly redis: RedisCacheConfig;
|
|
10
|
+
readonly memory: MemoryCacheConfig;
|
|
11
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CacheConfig = exports.CacheType = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const class_validator_1 = require("class-validator");
|
|
6
|
+
const class_transformer_1 = require("class-transformer");
|
|
7
|
+
const nestjs_redis_cache_1 = require("@dismissible/nestjs-redis-cache");
|
|
8
|
+
const nestjs_memory_cache_1 = require("@dismissible/nestjs-memory-cache");
|
|
9
|
+
var CacheType;
|
|
10
|
+
(function (CacheType) {
|
|
11
|
+
CacheType["REDIS"] = "redis";
|
|
12
|
+
CacheType["MEMORY"] = "memory";
|
|
13
|
+
})(CacheType || (exports.CacheType = CacheType = {}));
|
|
14
|
+
class CacheConfig {
|
|
15
|
+
}
|
|
16
|
+
exports.CacheConfig = CacheConfig;
|
|
17
|
+
tslib_1.__decorate([
|
|
18
|
+
(0, class_validator_1.IsOptional)(),
|
|
19
|
+
(0, class_validator_1.IsEnum)(CacheType),
|
|
20
|
+
(0, class_transformer_1.Transform)(({ value }) => (value === '' ? undefined : value)),
|
|
21
|
+
tslib_1.__metadata("design:type", String)
|
|
22
|
+
], CacheConfig.prototype, "type", void 0);
|
|
23
|
+
tslib_1.__decorate([
|
|
24
|
+
(0, class_validator_1.ValidateIf)((o) => o.type === CacheType.REDIS),
|
|
25
|
+
(0, class_validator_1.IsOptional)(),
|
|
26
|
+
(0, class_validator_1.ValidateNested)(),
|
|
27
|
+
(0, class_transformer_1.Type)(() => nestjs_redis_cache_1.RedisCacheConfig),
|
|
28
|
+
tslib_1.__metadata("design:type", nestjs_redis_cache_1.RedisCacheConfig)
|
|
29
|
+
], CacheConfig.prototype, "redis", void 0);
|
|
30
|
+
tslib_1.__decorate([
|
|
31
|
+
(0, class_validator_1.ValidateIf)((o) => o.type === CacheType.MEMORY),
|
|
32
|
+
(0, class_validator_1.IsOptional)(),
|
|
33
|
+
(0, class_validator_1.ValidateNested)(),
|
|
34
|
+
(0, class_transformer_1.Type)(() => nestjs_memory_cache_1.MemoryCacheConfig),
|
|
35
|
+
tslib_1.__metadata("design:type", nestjs_memory_cache_1.MemoryCacheConfig)
|
|
36
|
+
], CacheConfig.prototype, "memory", void 0);
|
|
37
|
+
//# sourceMappingURL=cache.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.config.js","sourceRoot":"","sources":["../../../../api/src/cache/cache.config.ts"],"names":[],"mappings":";;;;AAAA,qDAAiF;AACjF,yDAAoD;AACpD,wEAAmE;AACnE,0EAAqE;AAErE,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,4BAAe,CAAA;IACf,8BAAiB,CAAA;AACnB,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAED,MAAa,WAAW;CAiBvB;AAjBD,kCAiBC;AAbiB;IAHf,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,EAAC,SAAS,CAAC;IACjB,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;;yCAC5B;AAMjB;IAJf,IAAA,4BAAU,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC;IAC7C,IAAA,4BAAU,GAAE;IACZ,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,qCAAgB,CAAC;sCACL,qCAAgB;0CAAC;AAMzB;IAJf,IAAA,4BAAU,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC;IAC9C,IAAA,4BAAU,GAAE;IACZ,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,uCAAiB,CAAC;sCACL,uCAAiB;2CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DynamicModule } from '@nestjs/common';
|
|
2
|
+
import { CacheType } from './cache.config';
|
|
3
|
+
export type DynamicCacheModuleOptions = {
|
|
4
|
+
cache?: CacheType;
|
|
5
|
+
};
|
|
6
|
+
export declare class DynamicCacheModule {
|
|
7
|
+
static forRootAsync({ cache }: DynamicCacheModuleOptions): DynamicModule;
|
|
8
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DynamicCacheModule = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const nestjs_redis_cache_1 = require("@dismissible/nestjs-redis-cache");
|
|
7
|
+
const cache_config_1 = require("./cache.config");
|
|
8
|
+
const nestjs_memory_cache_1 = require("@dismissible/nestjs-memory-cache");
|
|
9
|
+
const nestjs_cache_1 = require("@dismissible/nestjs-cache");
|
|
10
|
+
let DynamicCacheModule = class DynamicCacheModule {
|
|
11
|
+
static forRootAsync({ cache }) {
|
|
12
|
+
switch (cache) {
|
|
13
|
+
case cache_config_1.CacheType.REDIS:
|
|
14
|
+
return nestjs_redis_cache_1.RedisCacheModule.forRootAsync({
|
|
15
|
+
useFactory: (config) => {
|
|
16
|
+
return config.redis;
|
|
17
|
+
},
|
|
18
|
+
inject: [cache_config_1.CacheConfig],
|
|
19
|
+
});
|
|
20
|
+
case cache_config_1.CacheType.MEMORY:
|
|
21
|
+
return nestjs_memory_cache_1.MemoryCacheModule.forRootAsync({
|
|
22
|
+
useFactory: (config) => config.memory,
|
|
23
|
+
inject: [cache_config_1.CacheConfig],
|
|
24
|
+
});
|
|
25
|
+
default:
|
|
26
|
+
return {
|
|
27
|
+
module: nestjs_cache_1.CacheModule,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
exports.DynamicCacheModule = DynamicCacheModule;
|
|
33
|
+
exports.DynamicCacheModule = DynamicCacheModule = tslib_1.__decorate([
|
|
34
|
+
(0, common_1.Module)({})
|
|
35
|
+
], DynamicCacheModule);
|
|
36
|
+
//# sourceMappingURL=dynamic-cache.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-cache.module.js","sourceRoot":"","sources":["../../../../api/src/cache/dynamic-cache.module.ts"],"names":[],"mappings":";;;;AAAA,2CAAuD;AACvD,wEAAmE;AACnE,iDAAwD;AACxD,0EAAqE;AACrE,4DAAwD;AAOjD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,MAAM,CAAC,YAAY,CAAC,EAAE,KAAK,EAA6B;QACtD,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,wBAAS,CAAC,KAAK;gBAClB,OAAO,qCAAgB,CAAC,YAAY,CAAC;oBACnC,UAAU,EAAE,CAAC,MAAmB,EAAE,EAAE;wBAClC,OAAO,MAAM,CAAC,KAAK,CAAC;oBACtB,CAAC;oBACD,MAAM,EAAE,CAAC,0BAAW,CAAC;iBACtB,CAAC,CAAC;YACL,KAAK,wBAAS,CAAC,MAAM;gBACnB,OAAO,uCAAiB,CAAC,YAAY,CAAC;oBACpC,UAAU,EAAE,CAAC,MAAmB,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM;oBAClD,MAAM,EAAE,CAAC,0BAAW,CAAC;iBACtB,CAAC,CAAC;YACL;gBACE,OAAO;oBACL,MAAM,EAAE,0BAAW;iBACpB,CAAC;QACN,CAAC;IACH,CAAC;CACF,CAAA;AArBY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,kBAAkB,CAqB9B"}
|
|
@@ -4,6 +4,7 @@ import { HelmetConfig } from '../helmet';
|
|
|
4
4
|
import { ValidationConfig } from '../validation';
|
|
5
5
|
import { RateLimiterHookConfig } from '@dismissible/nestjs-rate-limiter-hook';
|
|
6
6
|
import { StorageConfig } from '../storage/storage.config';
|
|
7
|
+
import { CacheConfig } from '../cache/cache.config';
|
|
7
8
|
export declare class DefaultAppConfig {
|
|
8
9
|
readonly server: ServerConfig;
|
|
9
10
|
readonly rateLimiter?: RateLimiterHookConfig;
|
|
@@ -11,4 +12,5 @@ export declare class DefaultAppConfig {
|
|
|
11
12
|
readonly helmet: HelmetConfig;
|
|
12
13
|
readonly storage: StorageConfig;
|
|
13
14
|
readonly validation: ValidationConfig;
|
|
15
|
+
readonly cache?: CacheConfig;
|
|
14
16
|
}
|
|
@@ -10,6 +10,7 @@ const helmet_1 = require("../helmet");
|
|
|
10
10
|
const validation_1 = require("../validation");
|
|
11
11
|
const nestjs_rate_limiter_hook_1 = require("@dismissible/nestjs-rate-limiter-hook");
|
|
12
12
|
const storage_config_1 = require("../storage/storage.config");
|
|
13
|
+
const cache_config_1 = require("../cache/cache.config");
|
|
13
14
|
class DefaultAppConfig {
|
|
14
15
|
}
|
|
15
16
|
exports.DefaultAppConfig = DefaultAppConfig;
|
|
@@ -49,4 +50,10 @@ tslib_1.__decorate([
|
|
|
49
50
|
(0, class_transformer_1.Type)(() => validation_1.ValidationConfig),
|
|
50
51
|
tslib_1.__metadata("design:type", validation_1.ValidationConfig)
|
|
51
52
|
], DefaultAppConfig.prototype, "validation", void 0);
|
|
53
|
+
tslib_1.__decorate([
|
|
54
|
+
(0, class_validator_1.IsOptional)(),
|
|
55
|
+
(0, class_validator_1.ValidateNested)(),
|
|
56
|
+
(0, class_transformer_1.Type)(() => cache_config_1.CacheConfig),
|
|
57
|
+
tslib_1.__metadata("design:type", cache_config_1.CacheConfig)
|
|
58
|
+
], DefaultAppConfig.prototype, "cache", void 0);
|
|
52
59
|
//# sourceMappingURL=default-app.config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-app.config.js","sourceRoot":"","sources":["../../../../api/src/config/default-app.config.ts"],"names":[],"mappings":";;;;AAAA,qDAAwE;AACxE,yDAAyC;AACzC,2DAAuD;AACvD,kCAAqC;AACrC,sCAAyC;AACzC,8CAAiD;AACjD,oFAA8E;AAC9E,8DAA0D;
|
|
1
|
+
{"version":3,"file":"default-app.config.js","sourceRoot":"","sources":["../../../../api/src/config/default-app.config.ts"],"names":[],"mappings":";;;;AAAA,qDAAwE;AACxE,yDAAyC;AACzC,2DAAuD;AACvD,kCAAqC;AACrC,sCAAyC;AACzC,8CAAiD;AACjD,oFAA8E;AAC9E,8DAA0D;AAC1D,wDAAoD;AAEpD,MAAa,gBAAgB;CAmC5B;AAnCD,4CAmCC;AA/BiB;IAHf,IAAA,gCAAc,GAAE;IAChB,IAAA,2BAAS,GAAE;IACX,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,4BAAY,CAAC;sCACA,4BAAY;gDAAC;AAKtB;IAHf,IAAA,4BAAU,GAAE;IACZ,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,gDAAqB,CAAC;sCACJ,gDAAqB;qDAAC;AAKpC;IAHf,IAAA,gCAAc,GAAE;IAChB,IAAA,2BAAS,GAAE;IACX,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,iBAAU,CAAC;sCACA,iBAAU;8CAAC;AAKlB;IAHf,IAAA,gCAAc,GAAE;IAChB,IAAA,2BAAS,GAAE;IACX,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,qBAAY,CAAC;sCACA,qBAAY;gDAAC;AAKtB;IAHf,IAAA,gCAAc,GAAE;IAChB,IAAA,2BAAS,GAAE;IACX,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,8BAAa,CAAC;sCACA,8BAAa;iDAAC;AAKxB;IAHf,IAAA,gCAAc,GAAE;IAChB,IAAA,2BAAS,GAAE;IACX,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,6BAAgB,CAAC;sCACA,6BAAgB;oDAAC;AAK9B;IAHf,IAAA,4BAAU,GAAE;IACZ,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,0BAAW,CAAC;sCACA,0BAAW;+CAAC"}
|