@snabcentr/client-core 3.20.1 → 3.21.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.
Files changed (33) hide show
  1. package/esm2022/auth/services/sc-auth.service.mjs +3 -2
  2. package/esm2022/public-api.mjs +2 -1
  3. package/esm2022/ssr-cache/classes/index.mjs +2 -0
  4. package/esm2022/ssr-cache/classes/sc-ssr-response-cache.mjs +100 -0
  5. package/esm2022/ssr-cache/index.mjs +6 -0
  6. package/esm2022/ssr-cache/interfaces/index.mjs +3 -0
  7. package/esm2022/ssr-cache/interfaces/sc-i-ssr-response-cache-settings.mjs +2 -0
  8. package/esm2022/ssr-cache/interfaces/sc-i-ssr-response-cache-stats.mjs +2 -0
  9. package/esm2022/ssr-cache/internal/is-ssr-response-cacheable.mjs +25 -0
  10. package/esm2022/ssr-cache/internal/sc-i-ssr-cached-response.mjs +2 -0
  11. package/esm2022/ssr-cache/sc-ssr-response-cache.backend.mjs +71 -0
  12. package/esm2022/ssr-cache/sc-ssr-response-cache.providers.mjs +12 -0
  13. package/esm2022/ssr-cache/tokens/index.mjs +3 -0
  14. package/esm2022/ssr-cache/tokens/sc-ssr-response-cache-settings.mjs +8 -0
  15. package/esm2022/ssr-cache/tokens/sc-ssr-response-cache.mjs +13 -0
  16. package/fesm2022/snabcentr-client-core.mjs +220 -5
  17. package/fesm2022/snabcentr-client-core.mjs.map +1 -1
  18. package/package.json +1 -1
  19. package/public-api.d.ts +1 -0
  20. package/release_notes.tmp +3 -3
  21. package/ssr-cache/classes/index.d.ts +1 -0
  22. package/ssr-cache/classes/sc-ssr-response-cache.d.ts +59 -0
  23. package/ssr-cache/index.d.ts +5 -0
  24. package/ssr-cache/interfaces/index.d.ts +2 -0
  25. package/ssr-cache/interfaces/sc-i-ssr-response-cache-settings.d.ts +17 -0
  26. package/ssr-cache/interfaces/sc-i-ssr-response-cache-stats.d.ts +17 -0
  27. package/ssr-cache/internal/is-ssr-response-cacheable.d.ts +14 -0
  28. package/ssr-cache/internal/sc-i-ssr-cached-response.d.ts +16 -0
  29. package/ssr-cache/sc-ssr-response-cache.backend.d.ts +42 -0
  30. package/ssr-cache/sc-ssr-response-cache.providers.d.ts +6 -0
  31. package/ssr-cache/tokens/index.d.ts +2 -0
  32. package/ssr-cache/tokens/sc-ssr-response-cache-settings.d.ts +6 -0
  33. package/ssr-cache/tokens/sc-ssr-response-cache.d.ts +6 -0
@@ -60,7 +60,8 @@ export class ScAuthService {
60
60
  this.tokenService.removeGuestToken();
61
61
  return of(null);
62
62
  }
63
- return this.getGuestToken$();
63
+ // На сервере ключ Гостя некуда сохранить, поэтому запрос не выполняется.
64
+ return this.isServer ? of(null) : this.getGuestToken$();
64
65
  }), takeUntilDestroyed(this.destroyRef))
65
66
  .subscribe();
66
67
  if (this.isServer) {
@@ -159,4 +160,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
159
160
  type: Inject,
160
161
  args: [SC_API_KEYS]
161
162
  }] }, { type: i2.ScTokenService }, { type: i3.ScUserMetrikaService }] });
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9hdXRoL3NlcnZpY2VzL3NjLWF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwREFBMEQ7QUFFMUQsT0FBTyxFQUFjLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSWxILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQXdCLE1BQU0sb0JBQW9CLENBQUM7Ozs7O0FBSWxGOztHQUVHO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUFnQnRCOzs7Ozs7OztPQVFHO0lBQ0gsWUFDcUIsSUFBZ0IsRUFDQyxJQUFhLEVBQ1Qs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S1EsYUFBYSw0Q0EyQlYsT0FBTyxhQUNQLFdBQVc7bUhBNUJkLGFBQWEsY0FGVixNQUFNOzs0RkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBNEJRLE1BQU07MkJBQUMsT0FBTzs7MEJBQ2QsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L3VuaWZpZWQtc2lnbmF0dXJlcyAqL1xuXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwQ29udGV4dCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBEZXN0cm95UmVmLCBJbmplY3QsIGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZGVib3VuY2VUaW1lLCBtYXAsIE9ic2VydmFibGUsIG9mLCBwYXJ0aXRpb24sIFJlcGxheVN1YmplY3QsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjSUFwaUtleXMgfSBmcm9tICcuLi8uLi9jb25maWcvc2MtaS1hcGkta2V5cyc7XG5pbXBvcnQgeyBTY0lVcmxzIH0gZnJvbSAnLi4vLi4vY29uZmlnL3NjLWktdXJscyc7XG5pbXBvcnQgeyBTQ19BVVRIX0FERF9IRUFERVJfUkVRVUlSRUQgfSBmcm9tICcuLi8uLi9odHRwSW50ZXJjZXB0b3JzL3Rva2Vucy9zYy1hdXRoLWFkZC1oZWFkZXItcmVxdWlyZWQnO1xuaW1wb3J0IHsgU0NfSVNfTE9HT1VUX1JFUVVFU1QgfSBmcm9tICcuLi8uLi9odHRwSW50ZXJjZXB0b3JzL3Rva2Vucy9zYy1pcy1sb2dvdXQtcmVxdWVzdCc7XG5pbXBvcnQgeyBTQ19JU19SRUZSRVNIX1JFUVVJUkVEIH0gZnJvbSAnLi4vLi4vaHR0cEludGVyY2VwdG9ycy90b2tlbnMvc2MtaXMtcmVmcmVzaC10b2tlbi1yZXF1aXJlZCc7XG5pbXBvcnQgeyBJU19TRVJWRVIgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvc3NyLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBTQ19JU19ISURERU5fRVJST1JfQUxFUlQsIFNDX0lTX0hJRERFTl9FUlJPUl9BTEVSVF9IVFRQX0NPTlRFWFQgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xuaW1wb3J0IHsgU0NfQVBJX0tFWVMgfSBmcm9tICcuLi8uLi90b2tlbnMvc2MtYXBpLWtleXMnO1xuaW1wb3J0IHsgU0NfVVJMUyB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy11cmxzJztcbmltcG9ydCB7IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0sIFNjVXNlck1ldHJpa2FTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXNlci1tZXRyaWthJztcbmltcG9ydCB7IElBdXRoVG9rZW4sIElMb2dpbiwgSVBob25lTG9naW4sIElUb2tlbiB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgU2NUb2tlblNlcnZpY2UgfSBmcm9tICcuL3NjLXRva2VuLnNlcnZpY2UnO1xuXG4vKipcbiAqINCh0LXRgNCy0LjRgSDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY0F1dGhTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgUmVwbGF5U3ViamVjdH0g0LTQu9GPINGB0L7QsdGL0YLQuNC50L3QvtC5INC80L7QtNC10LvQuCDRgdC10YDQstC40YHQsCDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgYXV0aFN1YmplY3Q6IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0YHQutGA0LjQv9GCINCy0YvQv9C+0LvQvdGP0LXRgtGB0Y8g0L3QsCDRgdC10YDQstC10YDQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzU2VydmVyOiBib29sZWFuID0gaW5qZWN0KElTX1NFUlZFUik7XG5cbiAgICAvKipcbiAgICAgKiDQntCz0YDQsNC90LjRh9C40LLQsNC10YIg0LbQuNC30L3RjCDQv9C+0LTQv9C40YHQvtC6INC40Lcg0LrQvtC90YHRgtGA0YPQutGC0L7RgNCwINC40L3QttC10LrRgtC+0YDQvtC8ICjQsNC60YLRg9Cw0LvRjNC90L4g0LTQu9GPIHVuaXQt0YLQtdGB0YLQvtCyKS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjQXV0aFNlcnZpY2V9LlxuICAgICAqXG4gICAgICogQHBhcmFtIGh0dHAgSFRUUC3QutC70LjQtdC90YIuXG4gICAgICogQHBhcmFtIHVybHMg0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQvdCwINGA0LDQt9C00LXQu9GLIGJhY2tlbmQnYS5cbiAgICAgKiBAcGFyYW0gYXBpS2V5cyDQl9Cw0LPQvtC70L7QstC60Lgg0LrQu9GO0YfQtdC5INC00L7RgdGC0YPQv9CwINC6IEFQSS5cbiAgICAgKiBAcGFyYW0gdG9rZW5TZXJ2aWNlINCh0LXRgNCy0LjRgSDQutC70Y7Rh9C10Lkg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKiBAcGFyYW0gdXNlck1ldHJpa2FTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0YHQsdC+0YDQsCDQvNC10YLRgNC40Log0L4g0LTQtdC50YHRgtCy0LjRj9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBASW5qZWN0KFNDX1VSTFMpIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyxcbiAgICAgICAgQEluamVjdChTQ19BUElfS0VZUykgcHJpdmF0ZSByZWFkb25seSBhcGlLZXlzOiBTY0lBcGlLZXlzLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRva2VuU2VydmljZTogU2NUb2tlblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlck1ldHJpa2FTZXJ2aWNlOiBTY1VzZXJNZXRyaWthU2VydmljZVxuICAgICkge1xuICAgICAgICBjb25zdCBbYXV0aFN0YXRlJCwgYWN0aW9ucyRdID0gcGFydGl0aW9uKFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdCh7XG4gICAgICAgICAgICAgICAgYWNjZXNzOiB0aGlzLnRva2VuU2VydmljZS5hY2Nlc3NBdXRoVG9rZW4kLnBpcGUobWFwKCh0b2tlbikgPT4gdG9rZW4gIT09IG51bGwpKSxcbiAgICAgICAgICAgICAgICBndWVzdDogdGhpcy50b2tlblNlcnZpY2UuZ3Vlc3RUb2tlbiQucGlwZShtYXAoKHRva2VuKSA9PiB0b2tlbiAhPT0gbnVsbCkpLFxuICAgICAgICAgICAgfSkucGlwZShkZWJvdW5jZVRpbWUoMCkpLCAvLyDQmNGB0L/RgNCw0LLQu9GP0LXRgiDQvtGI0LjQsdC60YMg0L7QtNC90L7QstGA0LXQvNC10L3QvdC+0LPQviDRg9C00LDQu9C10L3QuNGPINC60LvRjtGH0LAg0LPQvtGB0YLRjyDQuCDQutC70Y7Rh9CwINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy4g0JLQvtC30L3QuNC60LDQtdGCINC/0YDQuCDQvtGH0LjRgdGC0LrQtSBTdG9yYWdlLlxuICAgICAgICAgICAgKHsgYWNjZXNzLCBndWVzdCB9KSA9PiAoYWNjZXNzICYmICFndWVzdCkgfHwgKCFhY2Nlc3MgJiYgZ3Vlc3QpXG4gICAgICAgICk7XG4gICAgICAgIGF1dGhTdGF0ZSQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCh7IGFjY2VzcyB9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmF1dGhTdWJqZWN0Lm5leHQoYWNjZXNzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGlvbnMkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHsgYWNjZXNzIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2tlblNlcnZpY2UucmVtb3ZlR3Vlc3RUb2tlbigpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRHdWVzdFRva2VuJCgpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNTZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0aFN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0YHQvtGB0YLQvtGP0L3QuNGPINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40LgsINGH0YLQvtCx0Ysg0YDQtdCw0LPQuNGA0L7QstCw0YLRjCDQvdCwINC40LfQvNC10L3QtdC90LjRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QXV0aENoYW5nZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXV0aFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INC30LDQv9GA0L7RgdCwINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICAgICAqXG4gICAgICogQHBhcmFtIHVzZXIg0JTQsNC90L3Ri9C1INC00LvRjyDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQv9C+IGVtYWlsLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTaWduSW4kKHVzZXI6IElMb2dpbik6IE9ic2VydmFibGU8SUF1dGhUb2tlbj47XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LfQsNC/0YDQvtGB0LAg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXNlciDQlNCw0L3QvdGL0LUg0LTQu9GPINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC/0L4g0L3QvtC80LXRgNGDINGC0LXQu9C10YTQvtC90LAuXG4gICAgICovXG4gICAgcHVibGljIGdldFNpZ25JbiQodXNlcjogSVBob25lTG9naW4pOiBPYnNlcnZhYmxlPElBdXRoVG9rZW4+O1xuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INC30LDQv9GA0L7RgdCwINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICAgICAqXG4gICAgICogQHBhcmFtIHVzZXIg0JTQsNC90L3Ri9C1INC+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtSDQtNC70Y8g0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U2lnbkluJCh1c2VyOiBJTG9naW4gfCBJUGhvbmVMb2dpbik6IE9ic2VydmFibGU8SUF1dGhUb2tlbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8SUF1dGhUb2tlbj4oYCR7dGhpcy51cmxzLmFwaVVybH0vYXV0aC9sb2dpbmAsIHVzZXIpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLnNpZ25lZEluLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgc2lnbl9pbl90eXBlOiAncGFzc3dvcmQnIGluIHVzZXIgPyAnbG9naW4vcGFzc3dvcmQnIDogJ3Bob25lL2NvZGUnIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcCgodG9rZW5zT2JqZWN0OiBJQXV0aFRva2VuKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2tlblNlcnZpY2Uuc2V0QXV0aFRva2VuKHRva2Vuc09iamVjdCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQt9Cw0LLQtdGA0YjQtdC90LjRjyDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZW1vdmVBdXRoVG9rZW4g0J/RgNC40LfQvdCw0LosINGH0YLQviDQvdC10L7QsdGF0L7QtNC40LzQviDRg9C00LDQu9C40YLRjCDQutC70Y7RhyDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTaWduT3V0JChyZW1vdmVBdXRoVG9rZW46IGJvb2xlYW4gPSB0cnVlKTogT2JzZXJ2YWJsZTx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLnBvc3Q8dW5kZWZpbmVkPihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLnVybHMuYXBpVXJsfS9hdXRoL2xvZ291dGAsXG4gICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBuZXcgSHR0cENvbnRleHQoKS5zZXQoU0NfSVNfTE9HT1VUX1JFUVVFU1QsIHRydWUpLnNldChTQ19JU19ISURERU5fRVJST1JfQUxFUlQsIHRydWUpLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5zaWduZWRPdXQsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZW1vdmVBdXRoVG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9rZW5TZXJ2aWNlLnJlbW92ZUF1dGhUb2tlbigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLRi9C/0L7Qu9C90Y/QtdGCINC30LDQv9GA0L7RgSDQt9Cw0LLQtdGA0YjQtdC90LjRjyDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2lnbk91dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nZXRTaWduT3V0JCgpLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQv9C+0LLRgtC+0YDQvdC+0Lkg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0Lgg0L7QsdC90L7QstC70LXQvdC40Y8g0LrQu9GO0YfQsCDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlZnJlc2hUb2tlbnMg0JrQu9GO0YfQuCDQtNC+0YHRgtGD0L/QsCDQuiBBUEksINC4INC+0LHQvdC+0LLQu9C10L3QuNGPINGB0LXRgdGB0LjQuCDQtNC+0YHRgtGD0L/QsCDQuiBBUEkuINCV0YHQu9C4INC60LvRjtGH0Lgg0L3QtSDQv9C10YDQtdC00LDQvdGLLCDQsdC10YDRkdGCINC40YUg0LjQtyB7QGxpbmsgU3RvcmFnZX0uXG4gICAgICovXG4gICAgcHVibGljIGdldFJlZnJlc2hUb2tlbiQocmVmcmVzaFRva2Vucz86IElBdXRoVG9rZW4pOiBPYnNlcnZhYmxlPElBdXRoVG9rZW4+IHtcbiAgICAgICAgY29uc3QgcmVmcmVzaFRva2VuID0gcmVmcmVzaFRva2Vucz8ucmVmcmVzaC50b2tlbiA/PyB0aGlzLnRva2VuU2VydmljZS5nZXRSZWZyZXNoVG9rZW4oKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSByZWZyZXNoVG9rZW5zXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCh0aGlzLmFwaUtleXMua2V5TmFtZSwgcmVmcmVzaFRva2Vucy5hY2Nlc3MudG9rZW4pLFxuICAgICAgICAgICAgICAgICAgY29udGV4dDogbmV3IEh0dHBDb250ZXh0KCkuc2V0KFNDX0lTX1JFRlJFU0hfUkVRVUlSRUQsIHRydWUpLnNldChTQ19JU19ISURERU5fRVJST1JfQUxFUlQsIHRydWUpLnNldChTQ19BVVRIX0FERF9IRUFERVJfUkVRVUlSRUQsIGZhbHNlKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiBuZXcgSHR0cENvbnRleHQoKS5zZXQoU0NfSVNfUkVGUkVTSF9SRVFVSVJFRCwgdHJ1ZSkuc2V0KFNDX0lTX0hJRERFTl9FUlJPUl9BTEVSVCwgdHJ1ZSksXG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDxJQXV0aFRva2VuPihgJHt0aGlzLnVybHMuYXBpVXJsfS9hdXRoL3Rva2VuYCwgeyByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4gfSwgcmVxdWVzdE9wdGlvbnMpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKHRva2VuczogSUF1dGhUb2tlbikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudG9rZW5TZXJ2aWNlLnNldEF1dGhUb2tlbih0b2tlbnMpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LfQsNC/0YDQvtGB0LAg0L/QvtC70YPRh9C10L3QuNGPINCz0L7RgdGC0LXQstC+0LPQviDQutC70Y7Rh9CwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRHdWVzdFRva2VuJCgpOiBPYnNlcnZhYmxlPElUb2tlbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PElUb2tlbj4oYCR7dGhpcy51cmxzLmFwaVVybH0vYXV0aC9ndWVzdC90b2tlbmAsIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiBTQ19JU19ISURERU5fRVJST1JfQUxFUlRfSFRUUF9DT05URVhULFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgodG9rZW46IElUb2tlbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRva2VuU2VydmljZS5zZXRHdWVzdFRva2VuKHRva2VuKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9hdXRoL3NlcnZpY2VzL3NjLWF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwREFBMEQ7QUFFMUQsT0FBTyxFQUFjLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSWxILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQXdCLE1BQU0sb0JBQW9CLENBQUM7Ozs7O0FBSWxGOztHQUVHO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUFnQnRCOzs7Ozs7OztPQVFHO0lBQ0gsWUFDcUIsSUFBZ0IsRUFDQyxJQUFhLEVBQ1Qs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QUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQzsrR0E3S1EsYUFBYSw0Q0EyQlYsT0FBTyxhQUNQLFdBQVc7bUhBNUJkLGFBQWEsY0FGVixNQUFNOzs0RkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBNEJRLE1BQU07MkJBQUMsT0FBTzs7MEJBQ2QsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L3VuaWZpZWQtc2lnbmF0dXJlcyAqL1xuXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwQ29udGV4dCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBEZXN0cm95UmVmLCBJbmplY3QsIGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZGVib3VuY2VUaW1lLCBtYXAsIE9ic2VydmFibGUsIG9mLCBwYXJ0aXRpb24sIFJlcGxheVN1YmplY3QsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjSUFwaUtleXMgfSBmcm9tICcuLi8uLi9jb25maWcvc2MtaS1hcGkta2V5cyc7XG5pbXBvcnQgeyBTY0lVcmxzIH0gZnJvbSAnLi4vLi4vY29uZmlnL3NjLWktdXJscyc7XG5pbXBvcnQgeyBTQ19BVVRIX0FERF9IRUFERVJfUkVRVUlSRUQgfSBmcm9tICcuLi8uLi9odHRwSW50ZXJjZXB0b3JzL3Rva2Vucy9zYy1hdXRoLWFkZC1oZWFkZXItcmVxdWlyZWQnO1xuaW1wb3J0IHsgU0NfSVNfTE9HT1VUX1JFUVVFU1QgfSBmcm9tICcuLi8uLi9odHRwSW50ZXJjZXB0b3JzL3Rva2Vucy9zYy1pcy1sb2dvdXQtcmVxdWVzdCc7XG5pbXBvcnQgeyBTQ19JU19SRUZSRVNIX1JFUVVJUkVEIH0gZnJvbSAnLi4vLi4vaHR0cEludGVyY2VwdG9ycy90b2tlbnMvc2MtaXMtcmVmcmVzaC10b2tlbi1yZXF1aXJlZCc7XG5pbXBvcnQgeyBJU19TRVJWRVIgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvc3NyLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBTQ19JU19ISURERU5fRVJST1JfQUxFUlQsIFNDX0lTX0hJRERFTl9FUlJPUl9BTEVSVF9IVFRQX0NPTlRFWFQgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xuaW1wb3J0IHsgU0NfQVBJX0tFWVMgfSBmcm9tICcuLi8uLi90b2tlbnMvc2MtYXBpLWtleXMnO1xuaW1wb3J0IHsgU0NfVVJMUyB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy11cmxzJztcbmltcG9ydCB7IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0sIFNjVXNlck1ldHJpa2FTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXNlci1tZXRyaWthJztcbmltcG9ydCB7IElBdXRoVG9rZW4sIElMb2dpbiwgSVBob25lTG9naW4sIElUb2tlbiB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgU2NUb2tlblNlcnZpY2UgfSBmcm9tICcuL3NjLXRva2VuLnNlcnZpY2UnO1xuXG4vKipcbiAqINCh0LXRgNCy0LjRgSDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY0F1dGhTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgUmVwbGF5U3ViamVjdH0g0LTQu9GPINGB0L7QsdGL0YLQuNC50L3QvtC5INC80L7QtNC10LvQuCDRgdC10YDQstC40YHQsCDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgYXV0aFN1YmplY3Q6IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0YHQutGA0LjQv9GCINCy0YvQv9C+0LvQvdGP0LXRgtGB0Y8g0L3QsCDRgdC10YDQstC10YDQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzU2VydmVyOiBib29sZWFuID0gaW5qZWN0KElTX1NFUlZFUik7XG5cbiAgICAvKipcbiAgICAgKiDQntCz0YDQsNC90LjRh9C40LLQsNC10YIg0LbQuNC30L3RjCDQv9C+0LTQv9C40YHQvtC6INC40Lcg0LrQvtC90YHRgtGA0YPQutGC0L7RgNCwINC40L3QttC10LrRgtC+0YDQvtC8ICjQsNC60YLRg9Cw0LvRjNC90L4g0LTQu9GPIHVuaXQt0YLQtdGB0YLQvtCyKS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjQXV0aFNlcnZpY2V9LlxuICAgICAqXG4gICAgICogQHBhcmFtIGh0dHAgSFRUUC3QutC70LjQtdC90YIuXG4gICAgICogQHBhcmFtIHVybHMg0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQvdCwINGA0LDQt9C00LXQu9GLIGJhY2tlbmQnYS5cbiAgICAgKiBAcGFyYW0gYXBpS2V5cyDQl9Cw0LPQvtC70L7QstC60Lgg0LrQu9GO0YfQtdC5INC00L7RgdGC0YPQv9CwINC6IEFQSS5cbiAgICAgKiBAcGFyYW0gdG9rZW5TZXJ2aWNlINCh0LXRgNCy0LjRgSDQutC70Y7Rh9C10Lkg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKiBAcGFyYW0gdXNlck1ldHJpa2FTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0YHQsdC+0YDQsCDQvNC10YLRgNC40Log0L4g0LTQtdC50YHRgtCy0LjRj9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBASW5qZWN0KFNDX1VSTFMpIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyxcbiAgICAgICAgQEluamVjdChTQ19BUElfS0VZUykgcHJpdmF0ZSByZWFkb25seSBhcGlLZXlzOiBTY0lBcGlLZXlzLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRva2VuU2VydmljZTogU2NUb2tlblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlck1ldHJpa2FTZXJ2aWNlOiBTY1VzZXJNZXRyaWthU2VydmljZVxuICAgICkge1xuICAgICAgICBjb25zdCBbYXV0aFN0YXRlJCwgYWN0aW9ucyRdID0gcGFydGl0aW9uKFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdCh7XG4gICAgICAgICAgICAgICAgYWNjZXNzOiB0aGlzLnRva2VuU2VydmljZS5hY2Nlc3NBdXRoVG9rZW4kLnBpcGUobWFwKCh0b2tlbikgPT4gdG9rZW4gIT09IG51bGwpKSxcbiAgICAgICAgICAgICAgICBndWVzdDogdGhpcy50b2tlblNlcnZpY2UuZ3Vlc3RUb2tlbiQucGlwZShtYXAoKHRva2VuKSA9PiB0b2tlbiAhPT0gbnVsbCkpLFxuICAgICAgICAgICAgfSkucGlwZShkZWJvdW5jZVRpbWUoMCkpLCAvLyDQmNGB0L/RgNCw0LLQu9GP0LXRgiDQvtGI0LjQsdC60YMg0L7QtNC90L7QstGA0LXQvNC10L3QvdC+0LPQviDRg9C00LDQu9C10L3QuNGPINC60LvRjtGH0LAg0LPQvtGB0YLRjyDQuCDQutC70Y7Rh9CwINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy4g0JLQvtC30L3QuNC60LDQtdGCINC/0YDQuCDQvtGH0LjRgdGC0LrQtSBTdG9yYWdlLlxuICAgICAgICAgICAgKHsgYWNjZXNzLCBndWVzdCB9KSA9PiAoYWNjZXNzICYmICFndWVzdCkgfHwgKCFhY2Nlc3MgJiYgZ3Vlc3QpXG4gICAgICAgICk7XG4gICAgICAgIGF1dGhTdGF0ZSQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCh7IGFjY2VzcyB9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmF1dGhTdWJqZWN0Lm5leHQoYWNjZXNzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGlvbnMkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHsgYWNjZXNzIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2tlblNlcnZpY2UucmVtb3ZlR3Vlc3RUb2tlbigpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyDQndCwINGB0LXRgNCy0LXRgNC1INC60LvRjtGHINCT0L7RgdGC0Y8g0L3QtdC60YPQtNCwINGB0L7RhdGA0LDQvdC40YLRjCwg0L/QvtGN0YLQvtC80YMg0LfQsNC/0YDQvtGBINC90LUg0LLRi9C/0L7Qu9C90Y/QtdGC0YHRjy5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNTZXJ2ZXIgPyBvZihudWxsKSA6IHRoaXMuZ2V0R3Vlc3RUb2tlbiQoKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzU2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLmF1dGhTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0L7RgdGC0L7Rj9C90LjRjyDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4LCDRh9GC0L7QsdGLINGA0LXQsNCz0LjRgNC+0LLQsNGC0Ywg0L3QsCDQuNC30LzQtdC90LXQvdC40Y8uXG4gICAgICovXG4gICAgcHVibGljIGdldEF1dGhDaGFuZ2UoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmF1dGhTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1c2VyINCU0LDQvdC90YvQtSDQtNC70Y8g0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0L/QviBlbWFpbC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U2lnbkluJCh1c2VyOiBJTG9naW4pOiBPYnNlcnZhYmxlPElBdXRoVG9rZW4+O1xuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INC30LDQv9GA0L7RgdCwINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICAgICAqXG4gICAgICogQHBhcmFtIHVzZXIg0JTQsNC90L3Ri9C1INC00LvRjyDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQv9C+INC90L7QvNC10YDRgyDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTaWduSW4kKHVzZXI6IElQaG9uZUxvZ2luKTogT2JzZXJ2YWJsZTxJQXV0aFRva2VuPjtcblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1c2VyINCU0LDQvdC90YvQtSDQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70LUg0LTQu9GPINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIGdldFNpZ25JbiQodXNlcjogSUxvZ2luIHwgSVBob25lTG9naW4pOiBPYnNlcnZhYmxlPElBdXRoVG9rZW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PElBdXRoVG9rZW4+KGAke3RoaXMudXJscy5hcGlVcmx9L2F1dGgvbG9naW5gLCB1c2VyKS5waXBlKFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5zaWduZWRJbixcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IHNpZ25faW5fdHlwZTogJ3Bhc3N3b3JkJyBpbiB1c2VyID8gJ2xvZ2luL3Bhc3N3b3JkJyA6ICdwaG9uZS9jb2RlJyB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAoKHRva2Vuc09iamVjdDogSUF1dGhUb2tlbikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudG9rZW5TZXJ2aWNlLnNldEF1dGhUb2tlbih0b2tlbnNPYmplY3QpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LfQsNC/0YDQvtGB0LAg0LfQsNCy0LXRgNGI0LXQvdC40Y8g0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVtb3ZlQXV0aFRva2VuINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0YPQtNCw0LvQuNGC0Ywg0LrQu9GO0Ycg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U2lnbk91dCQocmVtb3ZlQXV0aFRva2VuOiBib29sZWFuID0gdHJ1ZSk6IE9ic2VydmFibGU8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5wb3N0PHVuZGVmaW5lZD4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy51cmxzLmFwaVVybH0vYXV0aC9sb2dvdXRgLFxuICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogbmV3IEh0dHBDb250ZXh0KCkuc2V0KFNDX0lTX0xPR09VVF9SRVFVRVNULCB0cnVlKS5zZXQoU0NfSVNfSElEREVOX0VSUk9SX0FMRVJULCB0cnVlKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0uc2lnbmVkT3V0LFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocmVtb3ZlQXV0aFRva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRva2VuU2VydmljZS5yZW1vdmVBdXRoVG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0YvQv9C+0LvQvdGP0LXRgiDQt9Cw0L/RgNC+0YEg0LfQsNCy0LXRgNGI0LXQvdC40Y8g0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8uXG4gICAgICovXG4gICAgcHVibGljIHNpZ25PdXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ2V0U2lnbk91dCQoKS5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LfQsNC/0YDQvtGB0LAg0L/QvtCy0YLQvtGA0L3QvtC5INCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC4INC+0LHQvdC+0LLQu9C10L3QuNGPINC60LvRjtGH0LAg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWZyZXNoVG9rZW5zINCa0LvRjtGH0Lgg0LTQvtGB0YLRg9C/0LAg0LogQVBJLCDQuCDQvtCx0L3QvtCy0LvQtdC90LjRjyDRgdC10YHRgdC40Lgg0LTQvtGB0YLRg9C/0LAg0LogQVBJLiDQldGB0LvQuCDQutC70Y7Rh9C4INC90LUg0L/QtdGA0LXQtNCw0L3Riywg0LHQtdGA0ZHRgiDQuNGFINC40Lcge0BsaW5rIFN0b3JhZ2V9LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRSZWZyZXNoVG9rZW4kKHJlZnJlc2hUb2tlbnM/OiBJQXV0aFRva2VuKTogT2JzZXJ2YWJsZTxJQXV0aFRva2VuPiB7XG4gICAgICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IHJlZnJlc2hUb2tlbnM/LnJlZnJlc2gudG9rZW4gPz8gdGhpcy50b2tlblNlcnZpY2UuZ2V0UmVmcmVzaFRva2VuKCk7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zID0gcmVmcmVzaFRva2Vuc1xuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQodGhpcy5hcGlLZXlzLmtleU5hbWUsIHJlZnJlc2hUb2tlbnMuYWNjZXNzLnRva2VuKSxcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IG5ldyBIdHRwQ29udGV4dCgpLnNldChTQ19JU19SRUZSRVNIX1JFUVVJUkVELCB0cnVlKS5zZXQoU0NfSVNfSElEREVOX0VSUk9SX0FMRVJULCB0cnVlKS5zZXQoU0NfQVVUSF9BRERfSEVBREVSX1JFUVVJUkVELCBmYWxzZSksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgY29udGV4dDogbmV3IEh0dHBDb250ZXh0KCkuc2V0KFNDX0lTX1JFRlJFU0hfUkVRVUlSRUQsIHRydWUpLnNldChTQ19JU19ISURERU5fRVJST1JfQUxFUlQsIHRydWUpLFxuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2g8SUF1dGhUb2tlbj4oYCR7dGhpcy51cmxzLmFwaVVybH0vYXV0aC90b2tlbmAsIHsgcmVmcmVzaF90b2tlbjogcmVmcmVzaFRva2VuIH0sIHJlcXVlc3RPcHRpb25zKS5waXBlKFxuICAgICAgICAgICAgdGFwKCh0b2tlbnM6IElBdXRoVG9rZW4pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRva2VuU2VydmljZS5zZXRBdXRoVG9rZW4odG9rZW5zKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INC30LDQv9GA0L7RgdCwINC/0L7Qu9GD0YfQtdC90LjRjyDQs9C+0YHRgtC10LLQvtCz0L4g0LrQu9GO0YfQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0R3Vlc3RUb2tlbiQoKTogT2JzZXJ2YWJsZTxJVG9rZW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxJVG9rZW4+KGAke3RoaXMudXJscy5hcGlVcmx9L2F1dGgvZ3Vlc3QvdG9rZW5gLCB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogU0NfSVNfSElEREVOX0VSUk9SX0FMRVJUX0hUVFBfQ09OVEVYVCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKHRva2VuOiBJVG9rZW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2tlblNlcnZpY2Uuc2V0R3Vlc3RUb2tlbih0b2tlbik7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgfVxufVxuIl19
@@ -27,6 +27,7 @@ export * from './reclamation';
27
27
  export * from './references';
28
28
  export * from './search';
29
29
  export * from './seo';
30
+ export * from './ssr-cache';
30
31
  export * from './suggestion';
31
32
  export * from './tokens';
32
33
  export * from './ui';
@@ -37,4 +38,4 @@ export * from './vacancies';
37
38
  export * from './vCard';
38
39
  export * from './verification';
39
40
  export * from './warehouse';
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvcmUvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxPQUFPLENBQUM7QUFDdEIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLE1BQU0sQ0FBQztBQUNyQixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29tbW9uJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aCc7XG5leHBvcnQgKiBmcm9tICcuL2Jhbm5lcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJ0JztcbmV4cG9ydCAqIGZyb20gJy4vY2F0YWxvZyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZ3VyYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRhY3RzJztcbmV4cG9ydCAqIGZyb20gJy4vY29udHJhZ2VudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnZlcnRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWxpdmVyeS1hZGRyZXNzJztcbmV4cG9ydCAqIGZyb20gJy4vZnJlcXVlbnRseS1hc2tlZC1xdWVzdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlcyc7XG5leHBvcnQgKiBmcm9tICcuL2d1YXJkcyc7XG5leHBvcnQgKiBmcm9tICcuL2hlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9odHRwSW50ZXJjZXB0b3JzJztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbmV3cyc7XG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi91dG0nO1xuZXhwb3J0ICogZnJvbSAnLi9vcmRlcic7XG5leHBvcnQgKiBmcm9tICcuL3BhZ2luYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9wcm92aWRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3F1ZXN0aW9ubmFpcmUnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWNsYW1hdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3JlZmVyZW5jZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gnO1xuZXhwb3J0ICogZnJvbSAnLi9zZW8nO1xuZXhwb3J0ICogZnJvbSAnLi9zdWdnZXN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vdG9rZW5zJztcbmV4cG9ydCAqIGZyb20gJy4vdWknO1xuZXhwb3J0ICogZnJvbSAnLi91c2VyJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1tZXRyaWthJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvcGhvbmUtZm90bWF0dGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdmFjYW5jaWVzJztcbmV4cG9ydCAqIGZyb20gJy4vdkNhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi92ZXJpZmljYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi93YXJlaG91c2UnO1xuIl19
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvcmUvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxPQUFPLENBQUM7QUFDdEIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLE1BQU0sQ0FBQztBQUNyQixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29tbW9uJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aCc7XG5leHBvcnQgKiBmcm9tICcuL2Jhbm5lcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJ0JztcbmV4cG9ydCAqIGZyb20gJy4vY2F0YWxvZyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZ3VyYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRhY3RzJztcbmV4cG9ydCAqIGZyb20gJy4vY29udHJhZ2VudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnZlcnRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWxpdmVyeS1hZGRyZXNzJztcbmV4cG9ydCAqIGZyb20gJy4vZnJlcXVlbnRseS1hc2tlZC1xdWVzdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlcyc7XG5leHBvcnQgKiBmcm9tICcuL2d1YXJkcyc7XG5leHBvcnQgKiBmcm9tICcuL2hlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9odHRwSW50ZXJjZXB0b3JzJztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbmV3cyc7XG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi91dG0nO1xuZXhwb3J0ICogZnJvbSAnLi9vcmRlcic7XG5leHBvcnQgKiBmcm9tICcuL3BhZ2luYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9wcm92aWRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3F1ZXN0aW9ubmFpcmUnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWNsYW1hdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3JlZmVyZW5jZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gnO1xuZXhwb3J0ICogZnJvbSAnLi9zZW8nO1xuZXhwb3J0ICogZnJvbSAnLi9zc3ItY2FjaGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zdWdnZXN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vdG9rZW5zJztcbmV4cG9ydCAqIGZyb20gJy4vdWknO1xuZXhwb3J0ICogZnJvbSAnLi91c2VyJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1tZXRyaWthJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvcGhvbmUtZm90bWF0dGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdmFjYW5jaWVzJztcbmV4cG9ydCAqIGZyb20gJy4vdkNhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi92ZXJpZmljYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi93YXJlaG91c2UnO1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './sc-ssr-response-cache';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Nzci1jYWNoZS9jbGFzc2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NjLXNzci1yZXNwb25zZS1jYWNoZSc7XG4iXX0=
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Кэш ответов API, один на процесс: переживает пересоздание инжектора между SSR-рендерами.
3
+ * Одинаковые одновременные запросы склеиваются, при переполнении вытесняется самая давняя запись.
4
+ */
5
+ export class ScSsrResponseCache {
6
+ /**
7
+ * Инициализирует экземпляр класса {@link ScSsrResponseCache}.
8
+ *
9
+ * @param maxEntries Максимальное количество записей в кэше.
10
+ */
11
+ constructor(maxEntries = 100) {
12
+ /**
13
+ * Закэшированные ответы по ключу запроса.
14
+ */
15
+ this.entries = new Map();
16
+ /**
17
+ * Выполняемые запросы по ключу запроса.
18
+ */
19
+ this.pending = new Map();
20
+ /**
21
+ * Количество запросов, отданных без обращения к API.
22
+ */
23
+ this.hits = 0;
24
+ /**
25
+ * Количество запросов, выполненных к API.
26
+ */
27
+ this.misses = 0;
28
+ this.maxEntries = Number.isFinite(maxEntries) ? Math.max(1, maxEntries) : 100;
29
+ }
30
+ /**
31
+ * Возвращает ответ из кэша, при отсутствии или устаревании загружает и кэширует. Ошибка загрузки не кэшируется.
32
+ *
33
+ * @param key Ключ запроса.
34
+ * @param lifeTime Время жизни ответа (мс).
35
+ * @param loader Функция загрузки ответа.
36
+ */
37
+ getOrLoad(key, lifeTime, loader) {
38
+ const cached = this.get(key);
39
+ if (cached) {
40
+ this.hits += 1;
41
+ return Promise.resolve(cached.response);
42
+ }
43
+ const pending = this.pending.get(key);
44
+ if (pending) {
45
+ this.hits += 1;
46
+ return pending;
47
+ }
48
+ this.misses += 1;
49
+ const loading = loader()
50
+ .then((response) => {
51
+ this.set(key, { response, expiresAt: Date.now() + lifeTime });
52
+ return response;
53
+ })
54
+ .finally(() => {
55
+ this.pending.delete(key);
56
+ });
57
+ this.pending.set(key, loading);
58
+ return loading;
59
+ }
60
+ /**
61
+ * Возвращает статистику работы кэша.
62
+ */
63
+ getStats() {
64
+ return { size: this.entries.size, hits: this.hits, misses: this.misses };
65
+ }
66
+ /**
67
+ * Возвращает актуальную запись или `null`.
68
+ *
69
+ * @param key Ключ запроса.
70
+ */
71
+ get(key) {
72
+ const entry = this.entries.get(key);
73
+ if (!entry) {
74
+ return null;
75
+ }
76
+ if (entry.expiresAt <= Date.now()) {
77
+ this.entries.delete(key);
78
+ return null;
79
+ }
80
+ // Перестановка в конец помечает запись как недавно использованную.
81
+ this.entries.delete(key);
82
+ this.entries.set(key, entry);
83
+ return entry;
84
+ }
85
+ /**
86
+ * Сохраняет запись, при переполнении вытесняя самую давнюю.
87
+ *
88
+ * @param key Ключ запроса.
89
+ * @param entry Запись кэша.
90
+ */
91
+ set(key, entry) {
92
+ this.entries.delete(key);
93
+ if (this.entries.size >= this.maxEntries) {
94
+ const [oldestKey] = this.entries.keys();
95
+ this.entries.delete(oldestKey);
96
+ }
97
+ this.entries.set(key, entry);
98
+ }
99
+ }
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc3NyLXJlc3BvbnNlLWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zc3ItY2FjaGUvY2xhc3Nlcy9zYy1zc3ItcmVzcG9uc2UtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0E7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQTBCM0I7Ozs7T0FJRztJQUNILFlBQW1CLGFBQXFCLEdBQUc7UUF6QjNDOztXQUVHO1FBQ2MsWUFBTyxHQUFzQyxJQUFJLEdBQUcsRUFBZ0MsQ0FBQztRQUV0Rzs7V0FFRztRQUNjLFlBQU8sR0FBZ0QsSUFBSSxHQUFHLEVBQTBDLENBQUM7UUFFMUg7O1dBRUc7UUFDSyxTQUFJLEdBQVcsQ0FBQyxDQUFDO1FBRXpCOztXQUVHO1FBQ0ssV0FBTSxHQUFXLENBQUMsQ0FBQztRQVF2QixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDbEYsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFNBQVMsQ0FBQyxHQUFXLEVBQUUsUUFBZ0IsRUFBRSxNQUE0QztRQUN4RixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTdCLElBQUksTUFBTSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztZQUVmLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXRDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztZQUVmLE9BQU8sT0FBTyxDQUFDO1FBQ25CLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUVqQixNQUFNLE9BQU8sR0FBRyxNQUFNLEVBQUU7YUFDbkIsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFFOUQsT0FBTyxRQUFRLENBQUM7UUFDcEIsQ0FBQyxDQUFDO2FBQ0QsT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBRVAsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRS9CLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVE7UUFDWCxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDN0UsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxHQUFHLENBQUMsR0FBVztRQUNuQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVwQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDVCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXpCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxtRUFBbUU7UUFDbkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTdCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBMkI7UUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFekIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdkMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IFNjSVNzclJlc3BvbnNlQ2FjaGVTdGF0cyB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2MtaS1zc3ItcmVzcG9uc2UtY2FjaGUtc3RhdHMnO1xuaW1wb3J0IHsgU2NJU3NyQ2FjaGVkUmVzcG9uc2UgfSBmcm9tICcuLi9pbnRlcm5hbC9zYy1pLXNzci1jYWNoZWQtcmVzcG9uc2UnO1xuXG4vKipcbiAqINCa0Y3RiCDQvtGC0LLQtdGC0L7QsiBBUEksINC+0LTQuNC9INC90LAg0L/RgNC+0YbQtdGB0YE6INC/0LXRgNC10LbQuNCy0LDQtdGCINC/0LXRgNC10YHQvtC30LTQsNC90LjQtSDQuNC90LbQtdC60YLQvtGA0LAg0LzQtdC20LTRgyBTU1It0YDQtdC90LTQtdGA0LDQvNC4LlxuICog0J7QtNC40L3QsNC60L7QstGL0LUg0L7QtNC90L7QstGA0LXQvNC10L3QvdGL0LUg0LfQsNC/0YDQvtGB0Ysg0YHQutC70LXQuNCy0LDRjtGC0YHRjywg0L/RgNC4INC/0LXRgNC10L/QvtC70L3QtdC90LjQuCDQstGL0YLQtdGB0L3Rj9C10YLRgdGPINGB0LDQvNCw0Y8g0LTQsNCy0L3Rj9GPINC30LDQv9C40YHRjC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNjU3NyUmVzcG9uc2VDYWNoZSB7XG4gICAgLyoqXG4gICAgICog0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INC30LDQv9C40YHQtdC5INCyINC60Y3RiNC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWF4RW50cmllczogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICog0JfQsNC60Y3RiNC40YDQvtCy0LDQvdC90YvQtSDQvtGC0LLQtdGC0Ysg0L/QviDQutC70Y7Rh9GDINC30LDQv9GA0L7RgdCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZW50cmllczogTWFwPHN0cmluZywgU2NJU3NyQ2FjaGVkUmVzcG9uc2U+ID0gbmV3IE1hcDxzdHJpbmcsIFNjSVNzckNhY2hlZFJlc3BvbnNlPigpO1xuXG4gICAgLyoqXG4gICAgICog0JLRi9C/0L7Qu9C90Y/QtdC80YvQtSDQt9Cw0L/RgNC+0YHRiyDQv9C+INC60LvRjtGH0YMg0LfQsNC/0YDQvtGB0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBwZW5kaW5nOiBNYXA8c3RyaW5nLCBQcm9taXNlPEh0dHBSZXNwb25zZTx1bmtub3duPj4+ID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8SHR0cFJlc3BvbnNlPHVua25vd24+Pj4oKTtcblxuICAgIC8qKlxuICAgICAqINCa0L7Qu9C40YfQtdGB0YLQstC+INC30LDQv9GA0L7RgdC+0LIsINC+0YLQtNCw0L3QvdGL0YUg0LHQtdC3INC+0LHRgNCw0YnQtdC90LjRjyDQuiBBUEkuXG4gICAgICovXG4gICAgcHJpdmF0ZSBoaXRzOiBudW1iZXIgPSAwO1xuXG4gICAgLyoqXG4gICAgICog0JrQvtC70LjRh9C10YHRgtCy0L4g0LfQsNC/0YDQvtGB0L7Qsiwg0LLRi9C/0L7Qu9C90LXQvdC90YvRhSDQuiBBUEkuXG4gICAgICovXG4gICAgcHJpdmF0ZSBtaXNzZXM6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjU3NyUmVzcG9uc2VDYWNoZX0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWF4RW50cmllcyDQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0LfQsNC/0LjRgdC10Lkg0LIg0LrRjdGI0LUuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1heEVudHJpZXM6IG51bWJlciA9IDEwMCkge1xuICAgICAgICB0aGlzLm1heEVudHJpZXMgPSBOdW1iZXIuaXNGaW5pdGUobWF4RW50cmllcykgPyBNYXRoLm1heCgxLCBtYXhFbnRyaWVzKSA6IDEwMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQvtGC0LLQtdGCINC40Lcg0LrRjdGI0LAsINC/0YDQuCDQvtGC0YHRg9GC0YHRgtCy0LjQuCDQuNC70Lgg0YPRgdGC0LDRgNC10LLQsNC90LjQuCDQt9Cw0LPRgNGD0LbQsNC10YIg0Lgg0LrRjdGI0LjRgNGD0LXRgi4g0J7RiNC40LHQutCwINC30LDQs9GA0YPQt9C60Lgg0L3QtSDQutGN0YjQuNGA0YPQtdGC0YHRjy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBrZXkg0JrQu9GO0Ycg0LfQsNC/0YDQvtGB0LAuXG4gICAgICogQHBhcmFtIGxpZmVUaW1lINCS0YDQtdC80Y8g0LbQuNC30L3QuCDQvtGC0LLQtdGC0LAgKNC80YEpLlxuICAgICAqIEBwYXJhbSBsb2FkZXIg0KTRg9C90LrRhtC40Y8g0LfQsNCz0YDRg9C30LrQuCDQvtGC0LLQtdGC0LAuXG4gICAgICovXG4gICAgcHVibGljIGdldE9yTG9hZChrZXk6IHN0cmluZywgbGlmZVRpbWU6IG51bWJlciwgbG9hZGVyOiAoKSA9PiBQcm9taXNlPEh0dHBSZXNwb25zZTx1bmtub3duPj4pOiBQcm9taXNlPEh0dHBSZXNwb25zZTx1bmtub3duPj4ge1xuICAgICAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmdldChrZXkpO1xuXG4gICAgICAgIGlmIChjYWNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaGl0cyArPSAxO1xuXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNhY2hlZC5yZXNwb25zZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwZW5kaW5nID0gdGhpcy5wZW5kaW5nLmdldChrZXkpO1xuXG4gICAgICAgIGlmIChwZW5kaW5nKSB7XG4gICAgICAgICAgICB0aGlzLmhpdHMgKz0gMTtcblxuICAgICAgICAgICAgcmV0dXJuIHBlbmRpbmc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1pc3NlcyArPSAxO1xuXG4gICAgICAgIGNvbnN0IGxvYWRpbmcgPSBsb2FkZXIoKVxuICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXQoa2V5LCB7IHJlc3BvbnNlLCBleHBpcmVzQXQ6IERhdGUubm93KCkgKyBsaWZlVGltZSB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nLmRlbGV0ZShrZXkpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5wZW5kaW5nLnNldChrZXksIGxvYWRpbmcpO1xuXG4gICAgICAgIHJldHVybiBsb2FkaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0YLQsNGC0LjRgdGC0LjQutGDINGA0LDQsdC+0YLRiyDQutGN0YjQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U3RhdHMoKTogU2NJU3NyUmVzcG9uc2VDYWNoZVN0YXRzIHtcbiAgICAgICAgcmV0dXJuIHsgc2l6ZTogdGhpcy5lbnRyaWVzLnNpemUsIGhpdHM6IHRoaXMuaGl0cywgbWlzc2VzOiB0aGlzLm1pc3NlcyB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINCw0LrRgtGD0LDQu9GM0L3Rg9GOINC30LDQv9C40YHRjCDQuNC70LggYG51bGxgLlxuICAgICAqXG4gICAgICogQHBhcmFtIGtleSDQmtC70Y7RhyDQt9Cw0L/RgNC+0YHQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldChrZXk6IHN0cmluZyk6IFNjSVNzckNhY2hlZFJlc3BvbnNlIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5lbnRyaWVzLmdldChrZXkpO1xuXG4gICAgICAgIGlmICghZW50cnkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudHJ5LmV4cGlyZXNBdCA8PSBEYXRlLm5vdygpKSB7XG4gICAgICAgICAgICB0aGlzLmVudHJpZXMuZGVsZXRlKGtleSk7XG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g0J/QtdGA0LXRgdGC0LDQvdC+0LLQutCwINCyINC60L7QvdC10YYg0L/QvtC80LXRh9Cw0LXRgiDQt9Cw0L/QuNGB0Ywg0LrQsNC6INC90LXQtNCw0LLQvdC+INC40YHQv9C+0LvRjNC30L7QstCw0L3QvdGD0Y4uXG4gICAgICAgIHRoaXMuZW50cmllcy5kZWxldGUoa2V5KTtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnNldChrZXksIGVudHJ5KTtcblxuICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtGF0YDQsNC90Y/QtdGCINC30LDQv9C40YHRjCwg0L/RgNC4INC/0LXRgNC10L/QvtC70L3QtdC90LjQuCDQstGL0YLQtdGB0L3Rj9GPINGB0LDQvNGD0Y4g0LTQsNCy0L3RjtGOLlxuICAgICAqXG4gICAgICogQHBhcmFtIGtleSDQmtC70Y7RhyDQt9Cw0L/RgNC+0YHQsC5cbiAgICAgKiBAcGFyYW0gZW50cnkg0JfQsNC/0LjRgdGMINC60Y3RiNCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0KGtleTogc3RyaW5nLCBlbnRyeTogU2NJU3NyQ2FjaGVkUmVzcG9uc2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzLmRlbGV0ZShrZXkpO1xuXG4gICAgICAgIGlmICh0aGlzLmVudHJpZXMuc2l6ZSA+PSB0aGlzLm1heEVudHJpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IFtvbGRlc3RLZXldID0gdGhpcy5lbnRyaWVzLmtleXMoKTtcblxuICAgICAgICAgICAgdGhpcy5lbnRyaWVzLmRlbGV0ZShvbGRlc3RLZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lbnRyaWVzLnNldChrZXksIGVudHJ5KTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export * from './classes';
2
+ export * from './interfaces';
3
+ export * from './tokens';
4
+ export * from './sc-ssr-response-cache.backend';
5
+ export * from './sc-ssr-response-cache.providers';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Nzci1jYWNoZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NsYXNzZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vdG9rZW5zJztcbmV4cG9ydCAqIGZyb20gJy4vc2Mtc3NyLXJlc3BvbnNlLWNhY2hlLmJhY2tlbmQnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1zc3ItcmVzcG9uc2UtY2FjaGUucHJvdmlkZXJzJztcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './sc-i-ssr-response-cache-settings';
2
+ export * from './sc-i-ssr-response-cache-stats';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Nzci1jYWNoZS9pbnRlcmZhY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2MtaS1zc3ItcmVzcG9uc2UtY2FjaGUtc2V0dGluZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1pLXNzci1yZXNwb25zZS1jYWNoZS1zdGF0cyc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1zc3ItcmVzcG9uc2UtY2FjaGUtc2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Nzci1jYWNoZS9pbnRlcmZhY2VzL3NjLWktc3NyLXJlc3BvbnNlLWNhY2hlLXNldHRpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqINCd0LDRgdGC0YDQvtC50LrQuCDQutGN0YjQsCDQvtGC0LLQtdGC0L7QsiBBUEksINC+0LHRidC10LPQviDQtNC70Y8g0LLRgdC10YUgU1NSLdGA0LXQvdC00LXRgNC+0LIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NJU3NyUmVzcG9uc2VDYWNoZVNldHRpbmdzIHtcbiAgICAvKipcbiAgICAgKiDQkNC00YDQtdGB0LAgQVBJINC+0YLQvdC+0YHQuNGC0LXQu9GM0L3QviBgYXBpVXJsYCwg0L7RgtCy0LXRgtGLINC90LAg0LrQvtGC0L7RgNGL0LUg0LrRjdGI0LjRgNGD0Y7RgtGB0Y86INGC0L7Rh9C90L7QtSDRgdC+0LLQv9Cw0LTQtdC90LjQtSAoYC9uZXdzYCkg0LjQu9C4INC/0YDQtdGE0LjQutGBINGBIGAqYCAoYC9yZWZlcmVuY2VzLypgKS5cbiAgICAgKi9cbiAgICByZWFkb25seSBlbmRwb2ludHM6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICog0JLRgNC10LzRjyDQttC40LfQvdC4INC30LDQutGN0YjQuNGA0L7QstCw0L3QvdC+0LPQviDQvtGC0LLQtdGC0LAgKNC80YEpLiDQn9GA0Lgg0LfQvdCw0YfQtdC90LjQuCBgMGAg0LrRjdGIINCy0YvQutC70Y7Rh9C10L0uXG4gICAgICovXG4gICAgcmVhZG9ubHkgbGlmZVRpbWU6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqINCS0YDQtdC80Y8g0L7QttC40LTQsNC90LjRjyDQvtGC0LLQtdGC0LAgQVBJICjQvNGBKSwg0YfRgtC+0LHRiyDQt9Cw0LLQuNGB0YjQuNC5INC30LDQv9GA0L7RgSDQvdC1INCx0LvQvtC60LjRgNC+0LLQsNC7INCw0LTRgNC10YEg0LTQu9GPINCy0YHQtdGFINGA0LXQvdC00LXRgNC+0LIuIGAwYDog0LHQtdC3INC+0LPRgNCw0L3QuNGH0LXQvdC40Y8uXG4gICAgICovXG4gICAgLy8gVE9ETzogQW5ndWxhciAyMTog0LHRgNCw0YLRjCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQuNC3IFNDX1NTUl9IVFRQX1RJTUVPVVQgKGZlYXR1cmUvYW5ndWxhcl91cGdyYWRlKSwg0L3QtSDQt9Cw0LLQvtC00LjRgtGMINCy0YLQvtGA0L7QuSDRgtCw0LnQvNCw0YPRgi5cbiAgICByZWFkb25seSBsb2FkVGltZW91dDogbnVtYmVyO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1zc3ItcmVzcG9uc2UtY2FjaGUtc3RhdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Nzci1jYWNoZS9pbnRlcmZhY2VzL3NjLWktc3NyLXJlc3BvbnNlLWNhY2hlLXN0YXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqINCh0YLQsNGC0LjRgdGC0LjQutCwINGA0LDQsdC+0YLRiyDQutGN0YjQsCDQvtGC0LLQtdGC0L7QsiBBUEkg0LzQtdC20LTRgyBTU1It0YDQtdC90LTQtdGA0LDQvNC4LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjSVNzclJlc3BvbnNlQ2FjaGVTdGF0cyB7XG4gICAgLyoqXG4gICAgICog0JrQvtC70LjRh9C10YHRgtCy0L4g0LfQsNC/0LjRgdC10Lkg0LIg0LrRjdGI0LUuXG4gICAgICovXG4gICAgcmVhZG9ubHkgc2l6ZTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICog0JrQvtC70LjRh9C10YHRgtCy0L4g0LfQsNC/0YDQvtGB0L7Qsiwg0L7RgtC00LDQvdC90YvRhSDQsdC10Lcg0L7QsdGA0LDRidC10L3QuNGPINC6IEFQSTog0LjQtyDQutGN0YjQsCDQuNC70Lgg0LjQtyDRg9C20LUg0LLRi9C/0L7Qu9C90Y/RjtGJ0LXQs9C+0YHRjyDQt9Cw0L/RgNC+0YHQsC5cbiAgICAgKi9cbiAgICByZWFkb25seSBoaXRzOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDQmtC+0LvQuNGH0LXRgdGC0LLQviDQt9Cw0L/RgNC+0YHQvtCyLCDQstGL0L/QvtC70L3QtdC90L3Ri9GFINC6IEFQSS5cbiAgICAgKi9cbiAgICByZWFkb25seSBtaXNzZXM6IG51bWJlcjtcbn1cbiJdfQ==
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Возвращает признак, что ответ можно кэшировать между SSR-рендерами: GET за JSON без ключей доступа по адресам из настроек.
3
+ *
4
+ * @param request Данные запроса.
5
+ * @param settings Настройки кэша.
6
+ * @param apiUrl Адрес API.
7
+ * @param apiKeys Названия заголовков ключей доступа к API.
8
+ *
9
+ * @internal
10
+ */
11
+ export function isSsrResponseCacheable(request, settings, apiUrl, apiKeys) {
12
+ if (!Number.isFinite(settings.lifeTime) || settings.lifeTime <= 0 || request.method !== 'GET' || request.responseType !== 'json') {
13
+ return false;
14
+ }
15
+ if (request.headers.has(apiKeys.keyName) || request.headers.has(apiKeys.guestKeyName)) {
16
+ return false;
17
+ }
18
+ const [url] = request.url.split('?');
19
+ if (!url.startsWith(apiUrl)) {
20
+ return false;
21
+ }
22
+ const path = url.slice(apiUrl.length);
23
+ return settings.endpoints.some((endpoint) => (endpoint.endsWith('*') ? path.startsWith(endpoint.slice(0, -1)) : path === endpoint));
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtc3NyLXJlc3BvbnNlLWNhY2hlYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3NyLWNhY2hlL2ludGVybmFsL2lzLXNzci1yZXNwb25zZS1jYWNoZWFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0E7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLE9BQTZCLEVBQUUsUUFBcUMsRUFBRSxNQUFjLEVBQUUsT0FBbUI7SUFDNUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssS0FBSyxJQUFJLE9BQU8sQ0FBQyxZQUFZLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDL0gsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQ3BGLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdEMsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDeEksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBTY0lBcGlLZXlzIH0gZnJvbSAnLi4vLi4vY29uZmlnL3NjLWktYXBpLWtleXMnO1xuaW1wb3J0IHsgU2NJU3NyUmVzcG9uc2VDYWNoZVNldHRpbmdzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zYy1pLXNzci1yZXNwb25zZS1jYWNoZS1zZXR0aW5ncyc7XG5cbi8qKlxuICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/RgNC40LfQvdCw0LosINGH0YLQviDQvtGC0LLQtdGCINC80L7QttC90L4g0LrRjdGI0LjRgNC+0LLQsNGC0Ywg0LzQtdC20LTRgyBTU1It0YDQtdC90LTQtdGA0LDQvNC4OiBHRVQg0LfQsCBKU09OINCx0LXQtyDQutC70Y7Rh9C10Lkg0LTQvtGB0YLRg9C/0LAg0L/QviDQsNC00YDQtdGB0LDQvCDQuNC3INC90LDRgdGC0YDQvtC10LouXG4gKlxuICogQHBhcmFtIHJlcXVlc3Qg0JTQsNC90L3Ri9C1INC30LDQv9GA0L7RgdCwLlxuICogQHBhcmFtIHNldHRpbmdzINCd0LDRgdGC0YDQvtC50LrQuCDQutGN0YjQsC5cbiAqIEBwYXJhbSBhcGlVcmwg0JDQtNGA0LXRgSBBUEkuXG4gKiBAcGFyYW0gYXBpS2V5cyDQndCw0LfQstCw0L3QuNGPINC30LDQs9C+0LvQvtCy0LrQvtCyINC60LvRjtGH0LXQuSDQtNC+0YHRgtGD0L/QsCDQuiBBUEkuXG4gKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NzclJlc3BvbnNlQ2FjaGVhYmxlKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBzZXR0aW5nczogU2NJU3NyUmVzcG9uc2VDYWNoZVNldHRpbmdzLCBhcGlVcmw6IHN0cmluZywgYXBpS2V5czogU2NJQXBpS2V5cyk6IGJvb2xlYW4ge1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKHNldHRpbmdzLmxpZmVUaW1lKSB8fCBzZXR0aW5ncy5saWZlVGltZSA8PSAwIHx8IHJlcXVlc3QubWV0aG9kICE9PSAnR0VUJyB8fCByZXF1ZXN0LnJlc3BvbnNlVHlwZSAhPT0gJ2pzb24nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAocmVxdWVzdC5oZWFkZXJzLmhhcyhhcGlLZXlzLmtleU5hbWUpIHx8IHJlcXVlc3QuaGVhZGVycy5oYXMoYXBpS2V5cy5ndWVzdEtleU5hbWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBbdXJsXSA9IHJlcXVlc3QudXJsLnNwbGl0KCc/Jyk7XG5cbiAgICBpZiAoIXVybC5zdGFydHNXaXRoKGFwaVVybCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHBhdGggPSB1cmwuc2xpY2UoYXBpVXJsLmxlbmd0aCk7XG5cbiAgICByZXR1cm4gc2V0dGluZ3MuZW5kcG9pbnRzLnNvbWUoKGVuZHBvaW50KSA9PiAoZW5kcG9pbnQuZW5kc1dpdGgoJyonKSA/IHBhdGguc3RhcnRzV2l0aChlbmRwb2ludC5zbGljZSgwLCAtMSkpIDogcGF0aCA9PT0gZW5kcG9pbnQpKTtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1zc3ItY2FjaGVkLXJlc3BvbnNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zc3ItY2FjaGUvaW50ZXJuYWwvc2MtaS1zc3ItY2FjaGVkLXJlc3BvbnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbi8qKlxuICog0J7RgtCy0LXRgiBBUEksINC30LDQutGN0YjQuNGA0L7QstCw0L3QvdGL0Lkg0LzQtdC20LTRgyBTU1It0YDQtdC90LTQtdGA0LDQvNC4LlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjSVNzckNhY2hlZFJlc3BvbnNlIHtcbiAgICAvKipcbiAgICAgKiDQnNC+0LzQtdC90YIg0LLRgNC10LzQtdC90LggKNC80YEpLCDQv9C+0YHQu9C1INC60L7RgtC+0YDQvtCz0L4g0L7RgtCy0LXRgiDRgdGH0LjRgtCw0LXRgtGB0Y8g0YPRgdGC0LDRgNC10LLRiNC40LwuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZXhwaXJlc0F0OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDQl9Cw0LrRjdGI0LjRgNC+0LLQsNC90L3Ri9C5INC+0YLQstC10YIg0L3QsCDQt9Cw0L/RgNC+0YEuXG4gICAgICovXG4gICAgcmVhZG9ubHkgcmVzcG9uc2U6IEh0dHBSZXNwb25zZTx1bmtub3duPjtcbn1cbiJdfQ==
@@ -0,0 +1,71 @@
1
+ import { FetchBackend, HttpErrorResponse, HttpResponse, HttpStatusCode, HttpXhrBackend } from '@angular/common/http';
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { catchError, defer, filter, from, lastValueFrom, map, throwError, timeout, TimeoutError } from 'rxjs';
4
+ import { SC_API_KEYS } from '../tokens/sc-api-keys';
5
+ import { SC_URLS } from '../tokens/sc-urls';
6
+ import { isSsrResponseCacheable } from './internal/is-ssr-response-cacheable';
7
+ import { SC_SSR_RESPONSE_CACHE } from './tokens/sc-ssr-response-cache';
8
+ import { SC_SSR_RESPONSE_CACHE_SETTINGS } from './tokens/sc-ssr-response-cache-settings';
9
+ import * as i0 from "@angular/core";
10
+ /**
11
+ * Обработчик запросов с кэшем ответов API между SSR-рендерами.
12
+ *
13
+ * Стоит на уровне {@link HttpBackend}, ниже перехватчиков: ответ из кэша проходит через перенос в браузер,
14
+ * а проверка ключей доступа видит итоговые заголовки. Отдаёт только итоговый {@link HttpResponse};
15
+ * запрос не отменяется при отписке рендера, а ограничен `loadTimeout` из настроек.
16
+ */
17
+ export class ScSsrResponseCacheBackend {
18
+ constructor() {
19
+ /**
20
+ * Штатный обработчик, выполняющий запросы к API.
21
+ */
22
+ // TODO: Angular 21: проверить, какой backend регистрирует provideHttpClient.
23
+ this.backend = inject(FetchBackend, { optional: true }) ?? inject(HttpXhrBackend);
24
+ /**
25
+ * Кэш ответов API.
26
+ */
27
+ this.cache = inject(SC_SSR_RESPONSE_CACHE);
28
+ /**
29
+ * Настройки кэша.
30
+ */
31
+ this.settings = inject(SC_SSR_RESPONSE_CACHE_SETTINGS);
32
+ /**
33
+ * Адрес API.
34
+ */
35
+ this.apiUrl = inject(SC_URLS).apiUrl;
36
+ /**
37
+ * Названия заголовков ключей доступа к API.
38
+ */
39
+ this.apiKeys = inject(SC_API_KEYS);
40
+ }
41
+ /** @inheritDoc */
42
+ handle(request) {
43
+ if (!isSsrResponseCacheable(request, this.settings, this.apiUrl, this.apiKeys)) {
44
+ return this.backend.handle(request);
45
+ }
46
+ return defer(() => from(this.cache.getOrLoad(request.urlWithParams, this.settings.lifeTime, () => this.load(request)))).pipe(
47
+ // Копия тела на каждый рендер, чтобы изменения не утекали между рендерами.
48
+ map((response) => response.clone({ body: structuredClone(response.body) })));
49
+ }
50
+ /**
51
+ * Выполняет запрос к API и возвращает его ответ.
52
+ *
53
+ * @param request Данные запроса.
54
+ */
55
+ load(request) {
56
+ const response$ = this.backend.handle(request).pipe(filter((event) => event instanceof HttpResponse));
57
+ if (this.settings.loadTimeout <= 0) {
58
+ return lastValueFrom(response$);
59
+ }
60
+ // По таймауту запрос отменяется, ошибка отдаётся как HttpErrorResponse, как и остальные ошибки запросов.
61
+ return lastValueFrom(response$.pipe(timeout(this.settings.loadTimeout), catchError((error) => throwError(() => error instanceof TimeoutError
62
+ ? new HttpErrorResponse({ status: HttpStatusCode.GatewayTimeout, statusText: 'Gateway Timeout', url: request.url, error })
63
+ : error))));
64
+ }
65
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScSsrResponseCacheBackend, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
66
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScSsrResponseCacheBackend }); }
67
+ }
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScSsrResponseCacheBackend, decorators: [{
69
+ type: Injectable
70
+ }] });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc3NyLXJlc3BvbnNlLWNhY2hlLmJhY2tlbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Nzci1jYWNoZS9zYy1zc3ItcmVzcG9uc2UtY2FjaGUuYmFja2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFlLGlCQUFpQixFQUEwQixZQUFZLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFKLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcxSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQUV6Rjs7Ozs7O0dBTUc7QUFFSCxNQUFNLE9BQU8seUJBQXlCO0lBRHRDO1FBRUk7O1dBRUc7UUFDSCw2RUFBNkU7UUFDNUQsWUFBTyxHQUFnQixNQUFNLENBQUMsWUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTNHOztXQUVHO1FBQ2MsVUFBSyxHQUF1QixNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUUzRTs7V0FFRztRQUNjLGFBQVEsR0FBZ0MsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFFaEc7O1dBRUc7UUFDYyxXQUFNLEdBQVcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUV6RDs7V0FFRztRQUNjLFlBQU8sR0FBZSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0F3QzlEO0lBdENHLGtCQUFrQjtJQUNYLE1BQU0sQ0FBQyxPQUE2QjtRQUN2QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3RSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7UUFDeEgsMkVBQTJFO1FBQzNFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUM5RSxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxJQUFJLENBQUMsT0FBNkI7UUFDdEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBa0MsRUFBRSxDQUFDLEtBQUssWUFBWSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRXRJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakMsT0FBTyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUVELHlHQUF5RztRQUN6RyxPQUFPLGFBQWEsQ0FDaEIsU0FBUyxDQUFDLElBQUksQ0FDVixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFDbEMsVUFBVSxDQUFDLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FDMUIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUNaLEtBQUssWUFBWSxZQUFZO1lBQ3pCLENBQUMsQ0FBQyxJQUFJLGlCQUFpQixDQUFDLEVBQUUsTUFBTSxFQUFFLGNBQWMsQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQzFILENBQUMsQ0FBQyxLQUFLLENBQ2QsQ0FDSixDQUNKLENBQ0osQ0FBQztJQUNOLENBQUM7K0dBaEVRLHlCQUF5QjttSEFBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmV0Y2hCYWNrZW5kLCBIdHRwQmFja2VuZCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBFdmVudCwgSHR0cFJlcXVlc3QsIEh0dHBSZXNwb25zZSwgSHR0cFN0YXR1c0NvZGUsIEh0dHBYaHJCYWNrZW5kIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWZlciwgZmlsdGVyLCBmcm9tLCBsYXN0VmFsdWVGcm9tLCBtYXAsIE9ic2VydmFibGUsIHRocm93RXJyb3IsIHRpbWVvdXQsIFRpbWVvdXRFcnJvciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY0lBcGlLZXlzIH0gZnJvbSAnLi4vY29uZmlnL3NjLWktYXBpLWtleXMnO1xuaW1wb3J0IHsgU0NfQVBJX0tFWVMgfSBmcm9tICcuLi90b2tlbnMvc2MtYXBpLWtleXMnO1xuaW1wb3J0IHsgU0NfVVJMUyB9IGZyb20gJy4uL3Rva2Vucy9zYy11cmxzJztcbmltcG9ydCB7IFNjU3NyUmVzcG9uc2VDYWNoZSB9IGZyb20gJy4vY2xhc3Nlcy9zYy1zc3ItcmVzcG9uc2UtY2FjaGUnO1xuaW1wb3J0IHsgU2NJU3NyUmVzcG9uc2VDYWNoZVNldHRpbmdzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3NjLWktc3NyLXJlc3BvbnNlLWNhY2hlLXNldHRpbmdzJztcbmltcG9ydCB7IGlzU3NyUmVzcG9uc2VDYWNoZWFibGUgfSBmcm9tICcuL2ludGVybmFsL2lzLXNzci1yZXNwb25zZS1jYWNoZWFibGUnO1xuaW1wb3J0IHsgU0NfU1NSX1JFU1BPTlNFX0NBQ0hFIH0gZnJvbSAnLi90b2tlbnMvc2Mtc3NyLXJlc3BvbnNlLWNhY2hlJztcbmltcG9ydCB7IFNDX1NTUl9SRVNQT05TRV9DQUNIRV9TRVRUSU5HUyB9IGZyb20gJy4vdG9rZW5zL3NjLXNzci1yZXNwb25zZS1jYWNoZS1zZXR0aW5ncyc7XG5cbi8qKlxuICog0J7QsdGA0LDQsdC+0YLRh9C40Log0LfQsNC/0YDQvtGB0L7QsiDRgSDQutGN0YjQtdC8INC+0YLQstC10YLQvtCyIEFQSSDQvNC10LbQtNGDIFNTUi3RgNC10L3QtNC10YDQsNC80LguXG4gKlxuICog0KHRgtC+0LjRgiDQvdCwINGD0YDQvtCy0L3QtSB7QGxpbmsgSHR0cEJhY2tlbmR9LCDQvdC40LbQtSDQv9C10YDQtdGF0LLQsNGC0YfQuNC60L7Qsjog0L7RgtCy0LXRgiDQuNC3INC60Y3RiNCwINC/0YDQvtGF0L7QtNC40YIg0YfQtdGA0LXQtyDQv9C10YDQtdC90L7RgSDQsiDQsdGA0LDRg9C30LXRgCxcbiAqINCwINC/0YDQvtCy0LXRgNC60LAg0LrQu9GO0YfQtdC5INC00L7RgdGC0YPQv9CwINCy0LjQtNC40YIg0LjRgtC+0LPQvtCy0YvQtSDQt9Cw0LPQvtC70L7QstC60LguINCe0YLQtNCw0ZHRgiDRgtC+0LvRjNC60L4g0LjRgtC+0LPQvtCy0YvQuSB7QGxpbmsgSHR0cFJlc3BvbnNlfTtcbiAqINC30LDQv9GA0L7RgSDQvdC1INC+0YLQvNC10L3Rj9C10YLRgdGPINC/0YDQuCDQvtGC0L/QuNGB0LrQtSDRgNC10L3QtNC10YDQsCwg0LAg0L7Qs9GA0LDQvdC40YfQtdC9IGBsb2FkVGltZW91dGAg0LjQtyDQvdCw0YHRgtGA0L7QtdC6LlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2NTc3JSZXNwb25zZUNhY2hlQmFja2VuZCBpbXBsZW1lbnRzIEh0dHBCYWNrZW5kIHtcbiAgICAvKipcbiAgICAgKiDQqNGC0LDRgtC90YvQuSDQvtCx0YDQsNCx0L7RgtGH0LjQuiwg0LLRi9C/0L7Qu9C90Y/RjtGJ0LjQuSDQt9Cw0L/RgNC+0YHRiyDQuiBBUEkuXG4gICAgICovXG4gICAgLy8gVE9ETzogQW5ndWxhciAyMTog0L/RgNC+0LLQtdGA0LjRgtGMLCDQutCw0LrQvtC5IGJhY2tlbmQg0YDQtdCz0LjRgdGC0YDQuNGA0YPQtdGCIHByb3ZpZGVIdHRwQ2xpZW50LlxuICAgIHByaXZhdGUgcmVhZG9ubHkgYmFja2VuZDogSHR0cEJhY2tlbmQgPSBpbmplY3QoRmV0Y2hCYWNrZW5kLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IGluamVjdChIdHRwWGhyQmFja2VuZCk7XG5cbiAgICAvKipcbiAgICAgKiDQmtGN0Ygg0L7RgtCy0LXRgtC+0LIgQVBJLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FjaGU6IFNjU3NyUmVzcG9uc2VDYWNoZSA9IGluamVjdChTQ19TU1JfUkVTUE9OU0VfQ0FDSEUpO1xuXG4gICAgLyoqXG4gICAgICog0J3QsNGB0YLRgNC+0LnQutC4INC60Y3RiNCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2V0dGluZ3M6IFNjSVNzclJlc3BvbnNlQ2FjaGVTZXR0aW5ncyA9IGluamVjdChTQ19TU1JfUkVTUE9OU0VfQ0FDSEVfU0VUVElOR1MpO1xuXG4gICAgLyoqXG4gICAgICog0JDQtNGA0LXRgSBBUEkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcGlVcmw6IHN0cmluZyA9IGluamVjdChTQ19VUkxTKS5hcGlVcmw7XG5cbiAgICAvKipcbiAgICAgKiDQndCw0LfQstCw0L3QuNGPINC30LDQs9C+0LvQvtCy0LrQvtCyINC60LvRjtGH0LXQuSDQtNC+0YHRgtGD0L/QsCDQuiBBUEkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcGlLZXlzOiBTY0lBcGlLZXlzID0gaW5qZWN0KFNDX0FQSV9LRVlTKTtcblxuICAgIC8qKiBAaW5oZXJpdERvYyAqL1xuICAgIHB1YmxpYyBoYW5kbGUocmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDx1bmtub3duPj4ge1xuICAgICAgICBpZiAoIWlzU3NyUmVzcG9uc2VDYWNoZWFibGUocmVxdWVzdCwgdGhpcy5zZXR0aW5ncywgdGhpcy5hcGlVcmwsIHRoaXMuYXBpS2V5cykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhY2tlbmQuaGFuZGxlKHJlcXVlc3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlZmVyKCgpID0+IGZyb20odGhpcy5jYWNoZS5nZXRPckxvYWQocmVxdWVzdC51cmxXaXRoUGFyYW1zLCB0aGlzLnNldHRpbmdzLmxpZmVUaW1lLCAoKSA9PiB0aGlzLmxvYWQocmVxdWVzdCkpKSkucGlwZShcbiAgICAgICAgICAgIC8vINCa0L7Qv9C40Y8g0YLQtdC70LAg0L3QsCDQutCw0LbQtNGL0Lkg0YDQtdC90LTQtdGALCDRh9GC0L7QsdGLINC40LfQvNC10L3QtdC90LjRjyDQvdC1INGD0YLQtdC60LDQu9C4INC80LXQttC00YMg0YDQtdC90LTQtdGA0LDQvNC4LlxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuY2xvbmUoeyBib2R5OiBzdHJ1Y3R1cmVkQ2xvbmUocmVzcG9uc2UuYm9keSkgfSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLRi9C/0L7Qu9C90Y/QtdGCINC30LDQv9GA0L7RgSDQuiBBUEkg0Lgg0LLQvtC30LLRgNCw0YnQsNC10YIg0LXQs9C+INC+0YLQstC10YIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdCDQlNCw0L3QvdGL0LUg0LfQsNC/0YDQvtGB0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2FkKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PHVua25vd24+KTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8dW5rbm93bj4+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UkID0gdGhpcy5iYWNrZW5kLmhhbmRsZShyZXF1ZXN0KS5waXBlKGZpbHRlcigoZXZlbnQpOiBldmVudCBpcyBIdHRwUmVzcG9uc2U8dW5rbm93bj4gPT4gZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpKTtcblxuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5sb2FkVGltZW91dCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbShyZXNwb25zZSQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g0J/QviDRgtCw0LnQvNCw0YPRgtGDINC30LDQv9GA0L7RgSDQvtGC0LzQtdC90Y/QtdGC0YHRjywg0L7RiNC40LHQutCwINC+0YLQtNCw0ZHRgtGB0Y8g0LrQsNC6IEh0dHBFcnJvclJlc3BvbnNlLCDQutCw0Log0Lgg0L7RgdGC0LDQu9GM0L3Ri9C1INC+0YjQuNCx0LrQuCDQt9Cw0L/RgNC+0YHQvtCyLlxuICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbShcbiAgICAgICAgICAgIHJlc3BvbnNlJC5waXBlKFxuICAgICAgICAgICAgICAgIHRpbWVvdXQodGhpcy5zZXR0aW5ncy5sb2FkVGltZW91dCksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+XG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yIGluc3RhbmNlb2YgVGltZW91dEVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBuZXcgSHR0cEVycm9yUmVzcG9uc2UoeyBzdGF0dXM6IEh0dHBTdGF0dXNDb2RlLkdhdGV3YXlUaW1lb3V0LCBzdGF0dXNUZXh0OiAnR2F0ZXdheSBUaW1lb3V0JywgdXJsOiByZXF1ZXN0LnVybCwgZXJyb3IgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGVycm9yXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,12 @@
1
+ import { HttpBackend } from '@angular/common/http';
2
+ import { makeEnvironmentProviders } from '@angular/core';
3
+ import { ScSsrResponseCacheBackend } from './sc-ssr-response-cache.backend';
4
+ /**
5
+ * Возвращает провайдеры кэша ответов API между SSR-рендерами.
6
+ * Подключать только в серверной конфигурации после `provideHttpClient()`: подменяют {@link HttpBackend}.
7
+ */
8
+ // TODO: Angular 21: проверить, что подмена HttpBackend остаётся последней после provideServerRendering(withRoutes()).
9
+ export function provideSsrResponseCache() {
10
+ return makeEnvironmentProviders([{ provide: HttpBackend, useClass: ScSsrResponseCacheBackend }]);
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc3NyLXJlc3BvbnNlLWNhY2hlLnByb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3NyLWNhY2hlL3NjLXNzci1yZXNwb25zZS1jYWNoZS5wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBd0Isd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFNUU7OztHQUdHO0FBQ0gsc0hBQXNIO0FBQ3RILE1BQU0sVUFBVSx1QkFBdUI7SUFDbkMsT0FBTyx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBCYWNrZW5kIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRQcm92aWRlcnMsIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTY1NzclJlc3BvbnNlQ2FjaGVCYWNrZW5kIH0gZnJvbSAnLi9zYy1zc3ItcmVzcG9uc2UtY2FjaGUuYmFja2VuZCc7XG5cbi8qKlxuICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/RgNC+0LLQsNC50LTQtdGA0Ysg0LrRjdGI0LAg0L7RgtCy0LXRgtC+0LIgQVBJINC80LXQttC00YMgU1NSLdGA0LXQvdC00LXRgNCw0LzQuC5cbiAqINCf0L7QtNC60LvRjtGH0LDRgtGMINGC0L7Qu9GM0LrQviDQsiDRgdC10YDQstC10YDQvdC+0Lkg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC/0L7RgdC70LUgYHByb3ZpZGVIdHRwQ2xpZW50KClgOiDQv9C+0LTQvNC10L3Rj9GO0YIge0BsaW5rIEh0dHBCYWNrZW5kfS5cbiAqL1xuLy8gVE9ETzogQW5ndWxhciAyMTog0L/RgNC+0LLQtdGA0LjRgtGMLCDRh9GC0L4g0L/QvtC00LzQtdC90LAgSHR0cEJhY2tlbmQg0L7RgdGC0LDRkdGC0YHRjyDQv9C+0YHQu9C10LTQvdC10Lkg0L/QvtGB0LvQtSBwcm92aWRlU2VydmVyUmVuZGVyaW5nKHdpdGhSb3V0ZXMoKSkuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVNzclJlc3BvbnNlQ2FjaGUoKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICAgIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW3sgcHJvdmlkZTogSHR0cEJhY2tlbmQsIHVzZUNsYXNzOiBTY1NzclJlc3BvbnNlQ2FjaGVCYWNrZW5kIH1dKTtcbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './sc-ssr-response-cache';
2
+ export * from './sc-ssr-response-cache-settings';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Nzci1jYWNoZS90b2tlbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGtDQUFrQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zYy1zc3ItcmVzcG9uc2UtY2FjaGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1zc3ItcmVzcG9uc2UtY2FjaGUtc2V0dGluZ3MnO1xuIl19
@@ -0,0 +1,8 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ /**
3
+ * Токен настроек кэша ответов API между SSR-рендерами. По умолчанию кэш выключен.
4
+ */
5
+ export const SC_SSR_RESPONSE_CACHE_SETTINGS = new InjectionToken('SC_SSR_RESPONSE_CACHE_SETTINGS', {
6
+ factory: () => ({ endpoints: [], lifeTime: 0, loadTimeout: 0 }),
7
+ });
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc3NyLXJlc3BvbnNlLWNhY2hlLXNldHRpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zc3ItY2FjaGUvdG9rZW5zL3NjLXNzci1yZXNwb25zZS1jYWNoZS1zZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSS9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQWdELElBQUksY0FBYyxDQUE4QixnQ0FBZ0MsRUFBRTtJQUN6SyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUM7Q0FDbEUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2NJU3NyUmVzcG9uc2VDYWNoZVNldHRpbmdzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zYy1pLXNzci1yZXNwb25zZS1jYWNoZS1zZXR0aW5ncyc7XG5cbi8qKlxuICog0KLQvtC60LXQvSDQvdCw0YHRgtGA0L7QtdC6INC60Y3RiNCwINC+0YLQstC10YLQvtCyIEFQSSDQvNC10LbQtNGDIFNTUi3RgNC10L3QtNC10YDQsNC80LguINCf0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC60Y3RiCDQstGL0LrQu9GO0YfQtdC9LlxuICovXG5leHBvcnQgY29uc3QgU0NfU1NSX1JFU1BPTlNFX0NBQ0hFX1NFVFRJTkdTOiBJbmplY3Rpb25Ub2tlbjxTY0lTc3JSZXNwb25zZUNhY2hlU2V0dGluZ3M+ID0gbmV3IEluamVjdGlvblRva2VuPFNjSVNzclJlc3BvbnNlQ2FjaGVTZXR0aW5ncz4oJ1NDX1NTUl9SRVNQT05TRV9DQUNIRV9TRVRUSU5HUycsIHtcbiAgICBmYWN0b3J5OiAoKSA9PiAoeyBlbmRwb2ludHM6IFtdLCBsaWZlVGltZTogMCwgbG9hZFRpbWVvdXQ6IDAgfSksXG59KTtcbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { ScSsrResponseCache } from '../classes/sc-ssr-response-cache';
3
+ /**
4
+ * Кэш по умолчанию, один на процесс.
5
+ */
6
+ const defaultSsrResponseCache = new ScSsrResponseCache();
7
+ /**
8
+ * Токен кэша ответов API между SSR-рендерами. По умолчанию один экземпляр на процесс, можно переопределить провайдером.
9
+ */
10
+ export const SC_SSR_RESPONSE_CACHE = new InjectionToken('SC_SSR_RESPONSE_CACHE', {
11
+ factory: () => defaultSsrResponseCache,
12
+ });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc3NyLXJlc3BvbnNlLWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zc3ItY2FjaGUvdG9rZW5zL3NjLXNzci1yZXNwb25zZS1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXRFOztHQUVHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7QUFFekQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBdUMsSUFBSSxjQUFjLENBQXFCLHVCQUF1QixFQUFFO0lBQ3JJLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyx1QkFBdUI7Q0FDekMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2NTc3JSZXNwb25zZUNhY2hlIH0gZnJvbSAnLi4vY2xhc3Nlcy9zYy1zc3ItcmVzcG9uc2UtY2FjaGUnO1xuXG4vKipcbiAqINCa0Y3RiCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiwg0L7QtNC40L0g0L3QsCDQv9GA0L7RhtC10YHRgS5cbiAqL1xuY29uc3QgZGVmYXVsdFNzclJlc3BvbnNlQ2FjaGUgPSBuZXcgU2NTc3JSZXNwb25zZUNhY2hlKCk7XG5cbi8qKlxuICog0KLQvtC60LXQvSDQutGN0YjQsCDQvtGC0LLQtdGC0L7QsiBBUEkg0LzQtdC20LTRgyBTU1It0YDQtdC90LTQtdGA0LDQvNC4LiDQn9C+INGD0LzQvtC70YfQsNC90LjRjiDQvtC00LjQvSDRjdC60LfQtdC80L/Qu9GP0YAg0L3QsCDQv9GA0L7RhtC10YHRgSwg0LzQvtC20L3QviDQv9C10YDQtdC+0L/RgNC10LTQtdC70LjRgtGMINC/0YDQvtCy0LDQudC00LXRgNC+0LwuXG4gKi9cbmV4cG9ydCBjb25zdCBTQ19TU1JfUkVTUE9OU0VfQ0FDSEU6IEluamVjdGlvblRva2VuPFNjU3NyUmVzcG9uc2VDYWNoZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48U2NTc3JSZXNwb25zZUNhY2hlPignU0NfU1NSX1JFU1BPTlNFX0NBQ0hFJywge1xuICAgIGZhY3Rvcnk6ICgpID0+IGRlZmF1bHRTc3JSZXNwb25zZUNhY2hlLFxufSk7XG4iXX0=