{"version":3,"file":"spryker-cache.static.mjs","sources":["../../../../libs/cache.static/src/lib/static-cache-strategy.module.ts","../../../../libs/cache.static/src/lib/static-cache-strategy.ts","../../../../libs/cache.static/src/spryker-cache.static.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n    imports: [CommonModule],\n})\nexport class StaticCacheStrategyModule {}\n","import { Injectable } from '@angular/core';\nimport { CacheId, CacheOperation, CacheStrategy, CacheStorageFactoryService, CacheEntry } from '@spryker/cache';\nimport { of, Observable } from 'rxjs';\nimport { TimeDurationService } from '@spryker/utils/date';\n\nimport { StaticCacheStrategyConfig } from './types';\nimport { switchMap, mapTo } from 'rxjs/operators';\n\n/**\n * Puts cache entries to the {@link CacheStorage} forever, unless the {@link CacheStorage} is cleared or CacheEntry is expired.\n */\n@Injectable({\n    providedIn: 'root',\n})\nexport class StaticCacheStrategy implements CacheStrategy {\n    constructor(\n        private timeDurationService: TimeDurationService,\n        private cacheStorageFactoryService: CacheStorageFactoryService,\n    ) {}\n\n    getCached<T>(id: CacheId, config: StaticCacheStrategyConfig, operation: CacheOperation<T>): Observable<T> {\n        const cacheDuration = this.timeDurationService.parse(config.expiresIn);\n        const cacheStorage = this.cacheStorageFactoryService.create(config);\n\n        return cacheStorage.has(id, config.namespace).pipe(\n            switchMap((isCacheEntryExist) => {\n                if (isCacheEntryExist) {\n                    return cacheStorage.get<T>(id, config.namespace).pipe(\n                        switchMap((cacheEntry) => {\n                            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n                            const { value, updatedAt } = cacheEntry!;\n                            const expiryDate = cacheDuration.addTo(updatedAt);\n                            const currentDate = new Date();\n\n                            if (currentDate.getTime() > expiryDate.getTime()) {\n                                return cacheStorage.remove(id, config.namespace).pipe(\n                                    switchMap(() =>\n                                        operation().pipe(\n                                            switchMap((operationValue) => {\n                                                const newEntry: CacheEntry = {\n                                                    updatedAt: new Date(),\n                                                    value: operationValue,\n                                                };\n\n                                                return cacheStorage\n                                                    .set(id, newEntry, config.namespace)\n                                                    .pipe(mapTo(operationValue));\n                                            }),\n                                        ),\n                                    ),\n                                );\n                            }\n\n                            return of(value);\n                        }),\n                    );\n                }\n\n                return operation().pipe(\n                    switchMap((value) => {\n                        const entry: CacheEntry = {\n                            updatedAt: new Date(),\n                            value,\n                        };\n\n                        return cacheStorage.set(id, entry, config.namespace).pipe(mapTo(value));\n                    }),\n                );\n            }),\n        );\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;MAMa,yBAAyB,CAAA;iIAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAFxB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;AAEb,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAFxB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEb,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;AAC1B,iBAAA,CAAA;;;ACGD;;AAEG;MAIU,mBAAmB,CAAA;IAC5B,WACY,CAAA,mBAAwC,EACxC,0BAAsD,EAAA;QADtD,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B,CAA4B;KAC9D;AAEJ,IAAA,SAAS,CAAI,EAAW,EAAE,MAAiC,EAAE,SAA4B,EAAA;AACrF,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACvE,MAAM,YAAY,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAEpE,QAAA,OAAO,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAC9C,SAAS,CAAC,CAAC,iBAAiB,KAAI;YAC5B,IAAI,iBAAiB,EAAE;AACnB,gBAAA,OAAO,YAAY,CAAC,GAAG,CAAI,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CACjD,SAAS,CAAC,CAAC,UAAU,KAAI;;AAErB,oBAAA,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,UAAW,CAAC;oBACzC,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAClD,oBAAA,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;oBAE/B,IAAI,WAAW,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE;AAC9C,wBAAA,OAAO,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CACjD,SAAS,CAAC,MACN,SAAS,EAAE,CAAC,IAAI,CACZ,SAAS,CAAC,CAAC,cAAc,KAAI;AACzB,4BAAA,MAAM,QAAQ,GAAe;gCACzB,SAAS,EAAE,IAAI,IAAI,EAAE;AACrB,gCAAA,KAAK,EAAE,cAAc;6BACxB,CAAC;AAEF,4BAAA,OAAO,YAAY;iCACd,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC;AACnC,iCAAA,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AACrC,yBAAC,CAAC,CACL,CACJ,CACJ,CAAC;qBACL;AAED,oBAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;iBACpB,CAAC,CACL,CAAC;aACL;YAED,OAAO,SAAS,EAAE,CAAC,IAAI,CACnB,SAAS,CAAC,CAAC,KAAK,KAAI;AAChB,gBAAA,MAAM,KAAK,GAAe;oBACtB,SAAS,EAAE,IAAI,IAAI,EAAE;oBACrB,KAAK;iBACR,CAAC;gBAEF,OAAO,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;aAC3E,CAAC,CACL,CAAC;SACL,CAAC,CACL,CAAC;KACL;iIAxDQ,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFhB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAET,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;ACbD;;AAEG;;;;"}