PageSourceSearch

https://www.bootspruefung.de/chunk-6CBKBXCD.js

js bootspruefung.de collected 2026-09-25 05:24:55 UTC 9,030 bytes, 1 lines download raw bytes

1import{a as f}from"./chunk-EHDKOORC.js";import{a as N}from"./chunk-O2SG2TNW.js";import{a as v}from"./chunk-GPQELWST.js";import{f as c}from"./chunk-YN76JBQ5.js";import{c as A}from"./chunk-PUGJONFD.js";import{E as g,T as m,h as p,ha as S,na as o,v as I,ya as l}from"./chunk-JUMI4B7D.js";import{o as a}from"./chunk-Y3CBR4R2.js";var E=(function(e){return e.A_B_TESTS="abTests",e.APP_REVIEWS="appReviews",e.ASSET_FILE_PATHS="assetFilePathes",e.CACHEABLE_ASSET_GROUPS="cacheableAssetGroups",e.BLOG_AUTHORS="blogAuthors",e.BLOG_POSTS="blogposts",e.BOOTSSCHULEN="bootsschulen",e.CONTENT_ARTICLES="contentArticles",e.CONTENT_ARTICLE_CATEGORIES="contentArticleCategories",e.COUNTERS="counters",e.DISCOUNT_CODES="discountCodes",e.EMAIL_TEMPLATES="emailTemplates",e.EVENTS="events",e.FAQ_CHAPTERS="faqChapters",e.FAQ_TEXTS="faqTexts",e.GLOBAL_CACHE="globalCache",e.GLOBAL_SETTINGS="globalSettings",e.HANDLED_PURCHASES="handledPurchases",e.INVOICES="invoices",e.KNOTS="knots",e.KNOWN_IOS_APP_REVIEW_IDS="knownIosAppReviewIds",e.KOWN_PUBLIC_IOS_APP_REVIEW_IDS="kownPublicIosAppReviewIds",e.LINK_PARTNERS="linkPartners",e.LOGS="logs",e.MAILGUN_EVENTS="mailgunEvents",e.MAIN_MESSAGES="mainMessages",e.MAP_QUESTION_EXPLANATIONS="mapQuestionExplanations",e.MESSAGES="messages",e.NEWSLETTER_SUBSCRIPTIONS="newsletterSubscriptions",e.ORDERS="orders",e.PAYMENTS="payments",e.PRO_VERSION_PRODUCTS="proVersionProducts",e.PRODUCT_REVIEWS="productReviews",e.QUESTIONS="questions",e.RATINGS="ratings",e.REDEEM_CODES="redeemCodes",e.REDEEM_PARTNERS="redeemPartners",e.SHOP_LICENSE_KEYS="shopLicenseKeys",e.SHOP_PRODUCTS="shopProducts",e.SHOP_PRODUCT_CATEGORIES="shopProductCategories",e.THEORY="theory",e.THEORY_CHAPTERS="theoryChapters",e.USERS="users",e.SKS_ANSWERS_TEMP="sksAnswersTemp",e.GOOGLE_ADS_PURCHASES="googleAdsPurchases",e.OTHER_TEXTS="otherTexts",e.B2B_CUSTOMER_INTEL="b2bCustomerIntel",e.BUSINESS_ACCOUNTS="businessAccounts",e.BOOTSSCHULEN_MIGRATION="bootsschulenMigration",e.VIDEO_COURSES="videoCourses",e})(E||{});var F=Object.values(E);var L=(function(e){return e.CONTENT_ARTICLES_KEY="CONTENT_ARTICLES_KEY",e.CONTENT_ARTICLE_CATEGORIES_KEY="CONTENT_ARTICLE_CATEGORIES_KEY",e.FAQ_TEXTS_PERSISTENCE_KEY="FAQ_TEXTS_PERSISTENCE_KEY",e.FAQ_CHAPTERS_PERSISTENCE_KEY="FAQ_CHAPTERS_PERSISTENCE_KEY",e.OTHER_TEXTS_KEY="OTHER_TEXTS_KEY",e.PRO_VERSION_PRODUCTS_KEY="PRO_VERSION_PRODUCTS_KEY",e.MAIN_MESSAGES_B2C_KEY="MAIN_MESSAGES_B2C_KEY",e.MAIN_MESSAGES_B2B_KEY="MAIN_MESSAGES_B2B_KEY",e})(L||{}),y=(function(e){return e.KNOTS_KEY_PREFIX="KNOTS_KEY_PREFIX",e.THEORY_TEXTS_KEY_PREFIX="THEORY_TEXTS_KEY_PREFIX",e.THEORY_CHAPTERS_KEY_PREFIX="THEORY_CHAPTERS_KEY_PREFIX",e.VIDEO_COURSE_CHAPTERS_KEY="VIDEO_COURSE_CHAPTERS_KEY",e.VIDEO_COURSE_TEXTS_KEY="VIDEO_COURSE_TEXTS_KEY",e.VIDEO_COURSE_METADATA_KEY="VIDEO_COURSE_METADATA_KEY",e.MAP_QUESTION_EXPLANATIONS_KEY_PREFIX="MAP_QUESTION_EXPLANATIONS_KEY_PREFIX",e.MAP_QUESTION_VIDEO_EXPLANATIONS_KEY_PREFIX="MAP_QUESTION_VIDEO_EXPLANATIONS_KEY_PREFIX",e})(y||{}),Y=(function(e){return e.MULTIPLE_CHOICE_QUESTIONS_KEY_PREFIX="MULTIPLE_CHOICE_QUESTIONS_KEY_PREFIX",e.MAP_QUESTIONS_KEY_PREFIX="MAP_QUESTIONS_KEY_PREFIX",e.QUESTION_WITH_WRITTEN_ANSWER_KEY_PREFIX="QUESTION_WITH_WRITTEN_ANSWER_KEY_PREFIX",e})(Y||{}),V={[E.PRO_VERSION_PRODUCTS]:[L.PRO_VERSION_PRODUCTS_KEY]};var n=class{purgeClientCacheOnUpdate=!1};var d=class extends n{collectionPath=E.BOOTSSCHULEN;minClientVersion="2.20.21"};var T=class extends n{collectionPath=E.KNOTS;minClientVersion="7.4.0"};var P=class extends n{collectionPath=E.PRO_VERSION_PRODUCTS;minClientVersion="7.4.0";purgeClientCacheOnUpdate=!0};var R=class extends n{collectionPath="shopProductsV2";minClientVersion="7.3.0"};var u=class extends n{collectionPath="shopProductsV2";minClientVersion="7.6.0"};var U=[new d,new T,new P,new R,new u];var D=(()=>{class e{persisterService=o(c);static LAST_PURGED_VERSION_KEY="LAST_PURGED_VERSION_KEY";lastPurgedVersionPromise;getLastPurgedVersionAsync(){return a(this,null,function*(){return this.lastPurgedVersionPromise||(this.lastPurgedVersionPromise=this.readFromStorageAsync()),yield this.lastPurgedVersionPromise})}setLastPurgedVersionAsync(r){return a(this,null,function*(){yield this.persisterService.persistLocallyAsync(e.LAST_PURGED_VERSION_KEY,r),this.lastPurgedVersionPromise=Promise.resolve(r)})}readFromStorageAsync(){return a(this,null,function*(){return(yield this.persisterService.loadLocallyAsync(e.LAST_PURGED_VERSION_KEY))??void 0})}static \u0275fac=function(t){return new(t||e)};static \u0275prov=S({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var w=(()=>{class e{versionService=o(v);lastPurgedVersionService=o(D);persisterService=o(c);logger=o(A);versionUtils=new N;purgePromise;purgeDoneAsync(){return a(this,null,function*(){return this.purgePromise||(this.purgePromise=this.purgeAsync().catch(r=>this.logger.error(this,"purgeDoneAsync: Could not purge the outdated content, carrying on.",r))),yield this.purgePromise})}purgeAsync(){return a(this,null,function*(){let r=yield this.versionService.getVersionNumberAsync(),t=yield this.lastPurgedVersionService.getLastPurgedVersionAsync();if(r===t)return;let i=U.filter(s=>this.shouldPurgeForRule(s,t,r)).flatMap(s=>V[s.collectionPath]??[]),_=!0;for(let s of i)try{this.logger.log(this,`purgeAsync: Deleting outdated content saved under ${s}.`),yield this.persisterService.deleteLocallyAsync(s)}catch(O){_=!1,this.logger.error(this,`purgeAsync: Could not delete the outdated content under ${s}.`,O)}_&&(yield this.lastPurgedVersionService.setLastPurgedVersionAsync(r))})}shouldPurgeForRule(r,t,i){return r.purgeClientCacheOnUpdate?this.versionUtils.isVersionBelow(t,r.minClientVersion)&&!this.versionUtils.isVersionBelow(i,r.minClientVersion):!1}static \u0275fac=function(t){return new(t||e)};static \u0275prov=S({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();
1var C=(()=>{class e{loadCachedService=o(f);logger=o(A);persisterService=o(c);staleCachedContentPurgerService=o(w);cache=new Map;updateSubjects=new Map;pendingDeviceReads=new Map;downloadAndPersistAsync(r){return a(this,null,function*(){yield Promise.all(r.map(t=>this.downloadAndPersistOneKeyPathPairAsync(t)))})}downloadAndPersistOneKeyPathPairAsync(_){return a(this,arguments,function*({key:r,path:t,fallbackValue:i}){let s;try{[s]=yield Promise.all([this.fetchFromDbAsync(t),this.staleCachedContentPurgerService.purgeDoneAsync()])}catch(O){yield this.handleFailedDownloadAsync(r,t,i,O);return}this.logger.log(this,"downloadAndPersistAsync",t,this.describeValueForLog(s)),this.cacheAndEmit(r,s),yield this.persisterService.persistLocallyAsync(r,s)})}handleFailedDownloadAsync(r,t,i,_){return a(this,null,function*(){if(i===void 0)throw _;yield this.staleCachedContentPurgerService.purgeDoneAsync();let s=yield this.persisterService.loadLocallyAsync(r);this.cache.has(r)||(this.isStoredValuePresent(s)?(this.logger.log(this,"downloadAndPersistAsync",t,"download failed, serving the persisted value"),this.cacheAndEmit(r,s)):(this.logger.log(this,"downloadAndPersistAsync",t,"download failed, emitting the fallback value"),this.cacheAndEmit(r,i)))})}cacheAndEmit(r,t){this.cache.set(r,t),this.getUpdateSubject(r).next(t)}rawValue$(r){return g(()=>(this.getRawValueAsync(r).catch(t=>this.logger.error(this,`rawValue$: Could not read the value saved under ${r}.`,t)),this.getUpdateSubject(r)))}getRawValueAsync(r){return a(this,null,function*(){return yield this.staleCachedContentPurgerService.purgeDoneAsync(),this.cache.has(r)||(yield this.readFromDeviceOncePerKeyAsync(r)),this.cache.get(r)})}readFromDeviceOncePerKeyAsync(r){let t=this.pendingDeviceReads.get(r);if(t)return t;let i=this.readFromDeviceAsync(r).finally(()=>this.pendingDeviceReads.delete(r));return this.pendingDeviceReads.set(r,i),i}readFromDeviceAsync(r){return a(this,null,function*(){this.logger.log(this,`readFromDeviceAsync: Nothing cached in memory for key ${r}.`);let t=yield this.persisterService.loadLocallyAsync(r);this.isStoredValuePresent(t)?(this.logger.log(this,"readFromDeviceAsync",r,this.describeValueForLog(t)),this.cacheAndEmit(r,t)):(this.logger.log(this,`readFromDeviceAsync: Nothing found for ${r} in storage. Waiting for download.`),yield I(this.getUpdateSubject(r).pipe(m())))})}getUpdateSubject(r){return this.updateSubjects.has(r)||this.updateSubjects.set(r,new p(1)),this.updateSubjects.get(r)}describeValueForLog(r){return Array.isArray(r)?`no of entries: ${r.length}`:"loaded value"}static \u0275fac=function(t){return new(t||e)};static \u0275prov=S({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var we=(()=>{class e extends C{rawEntries$(r){return this.rawValue$(r)}getRawEntriesAsync(r){return this.getRawValueAsync(r)}fetchFromDbAsync(r){return this.loadCachedService.loadCachedCollectionFromDbAsync(r)}isStoredValuePresent(r){return!!r}static \u0275fac=(()=>{let r;return function(i){return(r||(r=l(e)))(i||e)}})();static \u0275prov=S({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();export{E as a,L as b,y as c,Y as d,C as e,we as f};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.