@tsed/platform-cache 7.4.0 → 7.4.2

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.
@@ -116,19 +116,14 @@ let PlatformCache = class PlatformCache {
116
116
  const { multiCaching, caching } = await Promise.resolve().then(() => tslib_1.__importStar(require("cache-manager")));
117
117
  return caches?.length
118
118
  ? multiCaching(caches)
119
- : caching(await this.mapStore(store), {
119
+ : caching(this.mapStore(store), {
120
120
  ...props,
121
121
  ttl
122
122
  });
123
123
  }
124
- async mapStore(store) {
125
- if (!(0, core_1.isString)(store)) {
126
- if ("create" in store) {
127
- store = store.create;
128
- }
129
- if ((0, core_1.isFunction)(store)) {
130
- return await store();
131
- }
124
+ mapStore(store) {
125
+ if (!(0, core_1.isString)(store) && "create" in store) {
126
+ return store.create;
132
127
  }
133
128
  return store;
134
129
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformCache.js","sourceRoot":"","sources":["../../../src/services/PlatformCache.ts"],"names":[],"mappings":"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","sourcesContent":["import {isClass, isFunction, isString} from \"@tsed/core\";\nimport {Configuration, Inject, InjectorService, Module} from \"@tsed/di\";\nimport {deserialize, JsonDeserializerOptions, serialize} from \"@tsed/json-mapper\";\nimport {Logger} from \"@tsed/logger\";\nimport type {Cache, CachingConfig, MultiCache} from \"cache-manager\";\nimport {PlatformCacheSettings} from \"../interfaces/interfaces\";\nimport {PlatformCachedObject} from \"../interfaces/PlatformCachedObject\";\n\nconst defaultKeyResolver = (args: any[]) => {\n return args.map((arg: any) => (isClass(arg) ? JSON.stringify(serialize(arg)) : arg)).join(\":\");\n};\n\nexport type CacheManager = Cache | MultiCache;\nexport type Ttl = number | ((result: any) => number);\n\n/**\n * @platform\n */\n@Module()\nexport class PlatformCache {\n @Configuration()\n protected settings: Configuration;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject()\n protected logger: Logger;\n\n #cache: CacheManager | undefined;\n\n get cache() {\n return this.#cache;\n }\n\n async $onInit() {\n const settings = this.settings.get<PlatformCacheSettings>(\"cache\");\n\n if (settings) {\n this.#cache = await this.createCacheManager(settings);\n\n await this.injector.emit(\"$onCreateCacheManager\", this.#cache);\n }\n }\n\n disabled(): boolean {\n return !this.settings.get<PlatformCacheSettings>(\"cache\");\n }\n\n defaultKeyResolver() {\n return this.settings.get<(args: any[], ctx?: any) => string>(\"cache.keyResolver\", defaultKeyResolver);\n }\n\n defaultTtl() {\n return this.settings.get<Ttl>(\"cache.ttl\");\n }\n\n calculateTTL(result?: any, currentTtl?: Ttl): number {\n const ttl = currentTtl === undefined ? this.defaultTtl() : currentTtl;\n\n return isFunction(ttl) ? ttl(result) : ttl;\n }\n\n async ttl(key: string) {\n if (this.cache && \"store\" in this.cache && this.cache.store.ttl) {\n return this.cache.store.ttl(key);\n }\n }\n\n wrap<T>(key: string, fetch: () => Promise<T>, ttl?: number): Promise<T> {\n if (!this.cache) {\n return fetch();\n }\n\n return this.cache?.wrap<T>(key, fetch, ttl);\n }\n\n async get<T>(key: string, options: JsonDeserializerOptions = {}): Promise<T | undefined> {\n return deserialize(this.cache?.get<T>(key), options);\n }\n\n async set<T>(key: string, value: any, options?: CachingConfig<T>): Promise<T | undefined> {\n await this.cache?.set(key, value, options?.ttl);\n return;\n }\n\n async getCachedObject(key: string) {\n try {\n return await this.get<PlatformCachedObject>(key);\n } catch (er) {\n this.logger.error({\n event: \"CACHE_ERROR\",\n method: \"getCachedObject\",\n error: er\n });\n }\n }\n\n async setCachedObject(key: string, data: any, opts: {ttl: number} & Record<string, any>) {\n try {\n await this.set<PlatformCachedObject>(\n key,\n {\n ...opts,\n data: JSON.stringify(data)\n },\n {\n ttl: opts.ttl\n }\n );\n } catch (er) {\n this.logger.error({\n event: \"CACHE_ERROR\",\n method: \"setCachedObject\",\n error: er\n });\n }\n }\n\n async del(key: string): Promise<void> {\n await this.cache?.del(key);\n }\n\n async reset(): Promise<void> {\n // @ts-ignore\n await this.cache?.reset();\n }\n\n async keys(...args: any[]): Promise<string[]> {\n if (this.cache && \"store\" in this.cache && this.cache.store.keys) {\n return this.cache.store.keys(...args);\n }\n\n // istanbul ignore next\n return [];\n }\n\n async getMatchingKeys(patterns: string): Promise<string[]> {\n const [keys, {default: micromatch}] = await Promise.all([this.keys(), import(\"micromatch\")]);\n\n return micromatch(keys, patterns);\n }\n\n async deleteMatchingKeys(patterns: string): Promise<string[]> {\n const keys = await this.getMatchingKeys(patterns);\n\n await Promise.all(keys.map((key: string) => this.del(key)));\n\n return keys;\n }\n\n protected async createCacheManager(settings: PlatformCacheSettings) {\n const {caches, store = \"memory\", ttl, ...props} = settings;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {multiCaching, caching} = await import(\"cache-manager\");\n\n return caches?.length\n ? multiCaching(caches)\n : caching(await this.mapStore(store), {\n ...props,\n ttl\n });\n }\n\n private async mapStore(store: string | Function | {create: Function}) {\n if (!isString(store)) {\n if (\"create\" in store) {\n store = store.create;\n }\n\n if (isFunction(store)) {\n return await store();\n }\n }\n\n return store;\n }\n}\n"]}
1
+ {"version":3,"file":"PlatformCache.js","sourceRoot":"","sources":["../../../src/services/PlatformCache.ts"],"names":[],"mappings":"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","sourcesContent":["import {isClass, isFunction, isString} from \"@tsed/core\";\nimport {Configuration, Inject, InjectorService, Module} from \"@tsed/di\";\nimport {deserialize, JsonDeserializerOptions, serialize} from \"@tsed/json-mapper\";\nimport {Logger} from \"@tsed/logger\";\nimport type {Cache, CachingConfig, MultiCache} from \"cache-manager\";\nimport {PlatformCacheSettings} from \"../interfaces/interfaces\";\nimport {PlatformCachedObject} from \"../interfaces/PlatformCachedObject\";\n\nconst defaultKeyResolver = (args: any[]) => {\n return args.map((arg: any) => (isClass(arg) ? JSON.stringify(serialize(arg)) : arg)).join(\":\");\n};\n\nexport type CacheManager = Cache | MultiCache;\nexport type Ttl = number | ((result: any) => number);\n\n/**\n * @platform\n */\n@Module()\nexport class PlatformCache {\n @Configuration()\n protected settings: Configuration;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject()\n protected logger: Logger;\n\n #cache: CacheManager | undefined;\n\n get cache() {\n return this.#cache;\n }\n\n async $onInit() {\n const settings = this.settings.get<PlatformCacheSettings>(\"cache\");\n\n if (settings) {\n this.#cache = await this.createCacheManager(settings);\n\n await this.injector.emit(\"$onCreateCacheManager\", this.#cache);\n }\n }\n\n disabled(): boolean {\n return !this.settings.get<PlatformCacheSettings>(\"cache\");\n }\n\n defaultKeyResolver() {\n return this.settings.get<(args: any[], ctx?: any) => string>(\"cache.keyResolver\", defaultKeyResolver);\n }\n\n defaultTtl() {\n return this.settings.get<Ttl>(\"cache.ttl\");\n }\n\n calculateTTL(result?: any, currentTtl?: Ttl): number {\n const ttl = currentTtl === undefined ? this.defaultTtl() : currentTtl;\n\n return isFunction(ttl) ? ttl(result) : ttl;\n }\n\n async ttl(key: string) {\n if (this.cache && \"store\" in this.cache && this.cache.store.ttl) {\n return this.cache.store.ttl(key);\n }\n }\n\n wrap<T>(key: string, fetch: () => Promise<T>, ttl?: number): Promise<T> {\n if (!this.cache) {\n return fetch();\n }\n\n return this.cache?.wrap<T>(key, fetch, ttl);\n }\n\n async get<T>(key: string, options: JsonDeserializerOptions = {}): Promise<T | undefined> {\n return deserialize(this.cache?.get<T>(key), options);\n }\n\n async set<T>(key: string, value: any, options?: CachingConfig<T>): Promise<T | undefined> {\n await this.cache?.set(key, value, options?.ttl);\n return;\n }\n\n async getCachedObject(key: string) {\n try {\n return await this.get<PlatformCachedObject>(key);\n } catch (er) {\n this.logger.error({\n event: \"CACHE_ERROR\",\n method: \"getCachedObject\",\n error: er\n });\n }\n }\n\n async setCachedObject(key: string, data: any, opts: {ttl: number} & Record<string, any>) {\n try {\n await this.set<PlatformCachedObject>(\n key,\n {\n ...opts,\n data: JSON.stringify(data)\n },\n {\n ttl: opts.ttl\n }\n );\n } catch (er) {\n this.logger.error({\n event: \"CACHE_ERROR\",\n method: \"setCachedObject\",\n error: er\n });\n }\n }\n\n async del(key: string): Promise<void> {\n await this.cache?.del(key);\n }\n\n async reset(): Promise<void> {\n // @ts-ignore\n await this.cache?.reset();\n }\n\n async keys(...args: any[]): Promise<string[]> {\n if (this.cache && \"store\" in this.cache && this.cache.store.keys) {\n return this.cache.store.keys(...args);\n }\n\n // istanbul ignore next\n return [];\n }\n\n async getMatchingKeys(patterns: string): Promise<string[]> {\n const [keys, {default: micromatch}] = await Promise.all([this.keys(), import(\"micromatch\")]);\n\n return micromatch(keys, patterns);\n }\n\n async deleteMatchingKeys(patterns: string): Promise<string[]> {\n const keys = await this.getMatchingKeys(patterns);\n\n await Promise.all(keys.map((key: string) => this.del(key)));\n\n return keys;\n }\n\n protected async createCacheManager(settings: PlatformCacheSettings) {\n const {caches, store = \"memory\", ttl, ...props} = settings;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {multiCaching, caching} = await import(\"cache-manager\");\n\n return caches?.length\n ? multiCaching(caches)\n : caching(this.mapStore(store), {\n ...props,\n ttl\n });\n }\n\n private mapStore(store: \"memory\" | Function | {create: Function}): any {\n if (!isString(store) && \"create\" in store) {\n return store.create;\n }\n\n return store;\n }\n}\n"]}
@@ -113,19 +113,14 @@ let PlatformCache = class PlatformCache {
113
113
  const { multiCaching, caching } = await import("cache-manager");
114
114
  return caches?.length
115
115
  ? multiCaching(caches)
116
- : caching(await this.mapStore(store), {
116
+ : caching(this.mapStore(store), {
117
117
  ...props,
118
118
  ttl
119
119
  });
120
120
  }
121
- async mapStore(store) {
122
- if (!isString(store)) {
123
- if ("create" in store) {
124
- store = store.create;
125
- }
126
- if (isFunction(store)) {
127
- return await store();
128
- }
121
+ mapStore(store) {
122
+ if (!isString(store) && "create" in store) {
123
+ return store.create;
129
124
  }
130
125
  return store;
131
126
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformCache.js","sourceRoot":"","sources":["../../../src/services/PlatformCache.ts"],"names":[],"mappings":"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","sourcesContent":["import {isClass, isFunction, isString} from \"@tsed/core\";\nimport {Configuration, Inject, InjectorService, Module} from \"@tsed/di\";\nimport {deserialize, JsonDeserializerOptions, serialize} from \"@tsed/json-mapper\";\nimport {Logger} from \"@tsed/logger\";\nimport type {Cache, CachingConfig, MultiCache} from \"cache-manager\";\nimport {PlatformCacheSettings} from \"../interfaces/interfaces\";\nimport {PlatformCachedObject} from \"../interfaces/PlatformCachedObject\";\n\nconst defaultKeyResolver = (args: any[]) => {\n return args.map((arg: any) => (isClass(arg) ? JSON.stringify(serialize(arg)) : arg)).join(\":\");\n};\n\nexport type CacheManager = Cache | MultiCache;\nexport type Ttl = number | ((result: any) => number);\n\n/**\n * @platform\n */\n@Module()\nexport class PlatformCache {\n @Configuration()\n protected settings: Configuration;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject()\n protected logger: Logger;\n\n #cache: CacheManager | undefined;\n\n get cache() {\n return this.#cache;\n }\n\n async $onInit() {\n const settings = this.settings.get<PlatformCacheSettings>(\"cache\");\n\n if (settings) {\n this.#cache = await this.createCacheManager(settings);\n\n await this.injector.emit(\"$onCreateCacheManager\", this.#cache);\n }\n }\n\n disabled(): boolean {\n return !this.settings.get<PlatformCacheSettings>(\"cache\");\n }\n\n defaultKeyResolver() {\n return this.settings.get<(args: any[], ctx?: any) => string>(\"cache.keyResolver\", defaultKeyResolver);\n }\n\n defaultTtl() {\n return this.settings.get<Ttl>(\"cache.ttl\");\n }\n\n calculateTTL(result?: any, currentTtl?: Ttl): number {\n const ttl = currentTtl === undefined ? this.defaultTtl() : currentTtl;\n\n return isFunction(ttl) ? ttl(result) : ttl;\n }\n\n async ttl(key: string) {\n if (this.cache && \"store\" in this.cache && this.cache.store.ttl) {\n return this.cache.store.ttl(key);\n }\n }\n\n wrap<T>(key: string, fetch: () => Promise<T>, ttl?: number): Promise<T> {\n if (!this.cache) {\n return fetch();\n }\n\n return this.cache?.wrap<T>(key, fetch, ttl);\n }\n\n async get<T>(key: string, options: JsonDeserializerOptions = {}): Promise<T | undefined> {\n return deserialize(this.cache?.get<T>(key), options);\n }\n\n async set<T>(key: string, value: any, options?: CachingConfig<T>): Promise<T | undefined> {\n await this.cache?.set(key, value, options?.ttl);\n return;\n }\n\n async getCachedObject(key: string) {\n try {\n return await this.get<PlatformCachedObject>(key);\n } catch (er) {\n this.logger.error({\n event: \"CACHE_ERROR\",\n method: \"getCachedObject\",\n error: er\n });\n }\n }\n\n async setCachedObject(key: string, data: any, opts: {ttl: number} & Record<string, any>) {\n try {\n await this.set<PlatformCachedObject>(\n key,\n {\n ...opts,\n data: JSON.stringify(data)\n },\n {\n ttl: opts.ttl\n }\n );\n } catch (er) {\n this.logger.error({\n event: \"CACHE_ERROR\",\n method: \"setCachedObject\",\n error: er\n });\n }\n }\n\n async del(key: string): Promise<void> {\n await this.cache?.del(key);\n }\n\n async reset(): Promise<void> {\n // @ts-ignore\n await this.cache?.reset();\n }\n\n async keys(...args: any[]): Promise<string[]> {\n if (this.cache && \"store\" in this.cache && this.cache.store.keys) {\n return this.cache.store.keys(...args);\n }\n\n // istanbul ignore next\n return [];\n }\n\n async getMatchingKeys(patterns: string): Promise<string[]> {\n const [keys, {default: micromatch}] = await Promise.all([this.keys(), import(\"micromatch\")]);\n\n return micromatch(keys, patterns);\n }\n\n async deleteMatchingKeys(patterns: string): Promise<string[]> {\n const keys = await this.getMatchingKeys(patterns);\n\n await Promise.all(keys.map((key: string) => this.del(key)));\n\n return keys;\n }\n\n protected async createCacheManager(settings: PlatformCacheSettings) {\n const {caches, store = \"memory\", ttl, ...props} = settings;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {multiCaching, caching} = await import(\"cache-manager\");\n\n return caches?.length\n ? multiCaching(caches)\n : caching(await this.mapStore(store), {\n ...props,\n ttl\n });\n }\n\n private async mapStore(store: string | Function | {create: Function}) {\n if (!isString(store)) {\n if (\"create\" in store) {\n store = store.create;\n }\n\n if (isFunction(store)) {\n return await store();\n }\n }\n\n return store;\n }\n}\n"]}
1
+ {"version":3,"file":"PlatformCache.js","sourceRoot":"","sources":["../../../src/services/PlatformCache.ts"],"names":[],"mappings":"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","sourcesContent":["import {isClass, isFunction, isString} from \"@tsed/core\";\nimport {Configuration, Inject, InjectorService, Module} from \"@tsed/di\";\nimport {deserialize, JsonDeserializerOptions, serialize} from \"@tsed/json-mapper\";\nimport {Logger} from \"@tsed/logger\";\nimport type {Cache, CachingConfig, MultiCache} from \"cache-manager\";\nimport {PlatformCacheSettings} from \"../interfaces/interfaces\";\nimport {PlatformCachedObject} from \"../interfaces/PlatformCachedObject\";\n\nconst defaultKeyResolver = (args: any[]) => {\n return args.map((arg: any) => (isClass(arg) ? JSON.stringify(serialize(arg)) : arg)).join(\":\");\n};\n\nexport type CacheManager = Cache | MultiCache;\nexport type Ttl = number | ((result: any) => number);\n\n/**\n * @platform\n */\n@Module()\nexport class PlatformCache {\n @Configuration()\n protected settings: Configuration;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject()\n protected logger: Logger;\n\n #cache: CacheManager | undefined;\n\n get cache() {\n return this.#cache;\n }\n\n async $onInit() {\n const settings = this.settings.get<PlatformCacheSettings>(\"cache\");\n\n if (settings) {\n this.#cache = await this.createCacheManager(settings);\n\n await this.injector.emit(\"$onCreateCacheManager\", this.#cache);\n }\n }\n\n disabled(): boolean {\n return !this.settings.get<PlatformCacheSettings>(\"cache\");\n }\n\n defaultKeyResolver() {\n return this.settings.get<(args: any[], ctx?: any) => string>(\"cache.keyResolver\", defaultKeyResolver);\n }\n\n defaultTtl() {\n return this.settings.get<Ttl>(\"cache.ttl\");\n }\n\n calculateTTL(result?: any, currentTtl?: Ttl): number {\n const ttl = currentTtl === undefined ? this.defaultTtl() : currentTtl;\n\n return isFunction(ttl) ? ttl(result) : ttl;\n }\n\n async ttl(key: string) {\n if (this.cache && \"store\" in this.cache && this.cache.store.ttl) {\n return this.cache.store.ttl(key);\n }\n }\n\n wrap<T>(key: string, fetch: () => Promise<T>, ttl?: number): Promise<T> {\n if (!this.cache) {\n return fetch();\n }\n\n return this.cache?.wrap<T>(key, fetch, ttl);\n }\n\n async get<T>(key: string, options: JsonDeserializerOptions = {}): Promise<T | undefined> {\n return deserialize(this.cache?.get<T>(key), options);\n }\n\n async set<T>(key: string, value: any, options?: CachingConfig<T>): Promise<T | undefined> {\n await this.cache?.set(key, value, options?.ttl);\n return;\n }\n\n async getCachedObject(key: string) {\n try {\n return await this.get<PlatformCachedObject>(key);\n } catch (er) {\n this.logger.error({\n event: \"CACHE_ERROR\",\n method: \"getCachedObject\",\n error: er\n });\n }\n }\n\n async setCachedObject(key: string, data: any, opts: {ttl: number} & Record<string, any>) {\n try {\n await this.set<PlatformCachedObject>(\n key,\n {\n ...opts,\n data: JSON.stringify(data)\n },\n {\n ttl: opts.ttl\n }\n );\n } catch (er) {\n this.logger.error({\n event: \"CACHE_ERROR\",\n method: \"setCachedObject\",\n error: er\n });\n }\n }\n\n async del(key: string): Promise<void> {\n await this.cache?.del(key);\n }\n\n async reset(): Promise<void> {\n // @ts-ignore\n await this.cache?.reset();\n }\n\n async keys(...args: any[]): Promise<string[]> {\n if (this.cache && \"store\" in this.cache && this.cache.store.keys) {\n return this.cache.store.keys(...args);\n }\n\n // istanbul ignore next\n return [];\n }\n\n async getMatchingKeys(patterns: string): Promise<string[]> {\n const [keys, {default: micromatch}] = await Promise.all([this.keys(), import(\"micromatch\")]);\n\n return micromatch(keys, patterns);\n }\n\n async deleteMatchingKeys(patterns: string): Promise<string[]> {\n const keys = await this.getMatchingKeys(patterns);\n\n await Promise.all(keys.map((key: string) => this.del(key)));\n\n return keys;\n }\n\n protected async createCacheManager(settings: PlatformCacheSettings) {\n const {caches, store = \"memory\", ttl, ...props} = settings;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {multiCaching, caching} = await import(\"cache-manager\");\n\n return caches?.length\n ? multiCaching(caches)\n : caching(this.mapStore(store), {\n ...props,\n ttl\n });\n }\n\n private mapStore(store: \"memory\" | Function | {create: Function}): any {\n if (!isString(store) && \"create\" in store) {\n return store.create;\n }\n\n return store;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsed/platform-cache",
3
- "version": "7.4.0",
3
+ "version": "7.4.2",
4
4
  "description": "Platform cache module for Ts.ED Framework",
5
5
  "private": false,
6
6
  "source": "./src/index.ts",
@@ -26,17 +26,17 @@
26
26
  "tslib": "2.4.0"
27
27
  },
28
28
  "devDependencies": {
29
- "@tsed/core": "7.4.0",
30
- "@tsed/di": "7.4.0",
31
- "@tsed/json-mapper": "7.4.0",
32
- "@tsed/schema": "7.4.0",
29
+ "@tsed/core": "7.4.2",
30
+ "@tsed/di": "7.4.2",
31
+ "@tsed/json-mapper": "7.4.2",
32
+ "@tsed/schema": "7.4.2",
33
33
  "@types/micromatch": "^4.0.1"
34
34
  },
35
35
  "peerDependencies": {
36
- "@tsed/core": "^7.4.0",
37
- "@tsed/di": "^7.4.0",
38
- "@tsed/json-mapper": "^7.4.0",
39
- "@tsed/schema": "^7.4.0"
36
+ "@tsed/core": "^7.4.2",
37
+ "@tsed/di": "^7.4.2",
38
+ "@tsed/json-mapper": "^7.4.2",
39
+ "@tsed/schema": "^7.4.2"
40
40
  },
41
41
  "peerDependenciesMeta": {
42
42
  "@tsed/core": {