ngz-cache-platform-server
Version:
Server platform implementation of ngx-cache
78 lines • 7.45 kB
JavaScript
import { isPlatformServer } from '@angular/common';
import { Inject, Injectable, Injector, PLATFORM_ID } from '@angular/core';
import { STORAGE } from 'ngz-cache-core';
export class FsCacheService {
constructor(platformId, injector) {
this.platformId = platformId;
this.injector = injector;
if (!isPlatformServer(platformId)) {
throw new Error('FsCacheService is not supported outside `server` platform!');
}
this.fsStorage = injector.get(STORAGE);
}
get isEnabled() {
if (!isPlatformServer(this.platformId)) {
return false;
}
try {
this.fsStorage.setItem('test', 'test');
this.fsStorage.removeItem('test');
return true;
}
catch (e) {
return false;
}
}
get keys() {
if (!this.isEnabled) {
return undefined;
}
return this.fsStorage.keys;
}
setItem(key, value) {
if (!this.isEnabled) {
return false;
}
try {
this.fsStorage.setItem(key, JSON.stringify(value));
return true;
}
catch (e) {
return false;
}
}
getItem(key) {
if (!this.isEnabled) {
return undefined;
}
const value = this.fsStorage.getItem(key);
return value ? JSON.parse(value) : undefined;
}
removeItem(key, wild = false) {
if (!this.isEnabled) {
return;
}
this.fsStorage.removeItem(key);
if (wild) {
for (const item of this.keys) {
if (item.indexOf(key) === 0) {
this.fsStorage.removeItem(item);
}
}
}
}
clear() {
if (!this.isEnabled) {
return;
}
this.fsStorage.clear();
}
}
FsCacheService.decorators = [
{ type: Injectable }
];
FsCacheService.ctorParameters = () => [
{ type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },
{ type: Injector }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL25nei1jYWNoZS9wbGF0Zm9ybS1zZXJ2ZXIvc3JjL2ZzLWNhY2hlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQXFCLE9BQU8sRUFBVyxNQUFNLGdCQUFnQixDQUFDO0FBR3JFLE1BQU0sT0FBTyxjQUFjO0lBa0J6QixZQUFrRCxVQUFlLEVBQW1CLFFBQWtCO1FBQXBELGVBQVUsR0FBVixVQUFVLENBQUs7UUFBbUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO1NBQy9FO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFyQkQsSUFBWSxTQUFTO1FBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDdEMsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUk7WUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFbEMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFVRCxJQUFJLElBQUk7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFXLEVBQUUsS0FBaUI7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbkIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUk7WUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBRW5ELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVc7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbkIsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUxQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQy9DLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVyxFQUFFLElBQUksR0FBRyxLQUFLO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRS9CLElBQUksSUFBSSxFQUFFO1lBQ1IsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUM1QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDakM7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7OztZQWpGRixVQUFVOzs7NENBbUJJLE1BQU0sU0FBQyxXQUFXO1lBdEJKLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYWNoZSwgQ2FjaGVWYWx1ZSwgU1RPUkFHRSwgU3RvcmFnZSB9IGZyb20gJ25nei1jYWNoZS1jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZzQ2FjaGVTZXJ2aWNlIGltcGxlbWVudHMgQ2FjaGUge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZnNTdG9yYWdlOiBTdG9yYWdlO1xuXG4gIHByaXZhdGUgZ2V0IGlzRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1TZXJ2ZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzU3RvcmFnZS5zZXRJdGVtKCd0ZXN0JywgJ3Rlc3QnKTtcbiAgICAgIHRoaXMuZnNTdG9yYWdlLnJlbW92ZUl0ZW0oJ3Rlc3QnKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZDogYW55LCBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIGlmICghaXNQbGF0Zm9ybVNlcnZlcihwbGF0Zm9ybUlkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGc0NhY2hlU2VydmljZSBpcyBub3Qgc3VwcG9ydGVkIG91dHNpZGUgYHNlcnZlcmAgcGxhdGZvcm0hJyk7XG4gICAgfVxuXG4gICAgdGhpcy5mc1N0b3JhZ2UgPSBpbmplY3Rvci5nZXQoU1RPUkFHRSk7XG4gIH1cblxuICBnZXQga2V5cygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICBpZiAoIXRoaXMuaXNFbmFibGVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZzU3RvcmFnZS5rZXlzO1xuICB9XG5cbiAgc2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IENhY2hlVmFsdWUpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaXNFbmFibGVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZnNTdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0SXRlbShrZXk6IHN0cmluZyk6IENhY2hlVmFsdWUge1xuICAgIGlmICghdGhpcy5pc0VuYWJsZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmZzU3RvcmFnZS5nZXRJdGVtKGtleSk7XG5cbiAgICByZXR1cm4gdmFsdWUgPyBKU09OLnBhcnNlKHZhbHVlKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcsIHdpbGQgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0VuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmZzU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG5cbiAgICBpZiAod2lsZCkge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMua2V5cykge1xuICAgICAgICBpZiAoaXRlbS5pbmRleE9mKGtleSkgPT09IDApIHtcbiAgICAgICAgICB0aGlzLmZzU3RvcmFnZS5yZW1vdmVJdGVtKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzRW5hYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZnNTdG9yYWdlLmNsZWFyKCk7XG4gIH1cbn1cbiJdfQ==