PageSourceSearch

https://101-app.com/assets/SiteClientDataHost-C0VKwwcz.js

js 101-app.com collected 2026-09-24 10:21:59 UTC 9,674 bytes, 1 lines download raw bytes

1import{c as H}from"./runtimeLinks-PJDHs5pG.js";import{h as P,A as m}from"./tokens-DERl5KQ3.js";import{C as W}from"./site-D_Hb2a3q.js";import{u as v}from"./useQuery-CW5T5Kpo.js";import{a as I}from"./apiClient-BWe3_tUG.js";import{e as j,u as X,a as J,h as K,s as $,c as Z}from"./contracts-CXOLPIWo.js";import{c,u as h,r as Y,G as A,o as T,w as E,aT as ee,a7 as te,W as b,V as O,a4 as ne,d as re}from"./state-Bf4GxglA.js";import{a as se,c as oe,Y as ie,b as U,P as ae,d as _,f as ue,e as G,g as ce,A as de,B as pe,h as le}from"./utils-Dqhw0s2Z.js";import{i as fe}from"./index-VVJ-IlTB.js";import{r as me}from"./site-prose-tables-LYjPkEqr.js";import{c as Se}from"./utils-BdzSUDVd.js";import{g as z}from"./accountSessions-CYc_MUx3.js";import"./loginNavigation-C4K-gJz_.js";import"./authenticated-capabilities-DzTuL0zT.js";import"./instance-BCdBOrNX.js";import{c as we,a as _e}from"./runtime-Cevq_n1D.js";import"./useAppLocale-DSzVRhv6.js";import"./phone-BItNA7a7.js";import"./uiNotifications-DWoj9DrK.js";import"./blogAuthor-DZvXqKdv.js";import"./useQueryClient-B_BD89vW.js";import"./useMutation-nzCaNP2E.js";import"./catalogPresentation-nVV3YG58.js";import"./features-CpgW7gMG.js";import"./more-CSfVgy-B.js";import"./clear-70e119C3.js";import"./checkmark--ZtKPZj_.js";import"./Tooltip-UlFd0FDH.js";import"./error-DXjYLH3L.js";import"./email-CC4Ea1JT.js";import"./ContextMenu-if3xGOkI.js";import"./AppModal-_gpJhA01.js";import"./index-CECM-pZb.js";import"./standalone-CD02vMDA.js";import"./SegmentedControl-BP1NeJDN.js";import"./useQueryGetCurrentUserProfileV2-Wn70hE-X.js";const ye=e=>j(e),ge=e=>{const t=c(()=>!!h(e));return v({enabled:t,queryFn:async()=>{const n=await I.productsList();return ye(n.data)},queryKey:["shared-products","catalog"],retry:1,staleTime:3e4})},Pe={DEV:!1,SSR:!1,VITE_EDUCATION_URL:"https://education.101-app.com",VITE_SINGLE_DOMAIN_MODE:"true",VITE_SITE_URL:"https://101-app.com",VITE_SITE_URL_DEV:"https://dev.101-app.com",VITE_SITE_URL_PROD:"https://dev.101-app.com",VITE_SUPPORT_URL:"",VITE_WEB_URL:"https://101-app.com"},Ee="/api-docs",g="/product",x=H(Pe),ve=new Set([de,pe,le]),be=e=>!!e.meta.siteShell&&e.name==="site-product",R=e=>be(e),Re=({navigateToAuthorizedProducts:e=()=>{typeof window<"u"&&window.location.assign(g)},route:t,store:n})=>{const r=Y(P()),s=ge(c(()=>R(t)&&r.value)),o=X(),i=J(),a=c(()=>R(t)&&r.value),d=()=>{n.setProductsActionRunner(D),n.setProductsSyncing(!1),n.setProductsGuest(oe({supportUrl:x.supportUrl}))},D=async({actionKind:p,href:C,itemId:S})=>{if(S===ie&&p==="connectYandexDisk")return typeof window>"u"?{message:"Не удалось открыть вход в 101",status:"error"}:($(window.sessionStorage),r.value?{navigationMode:"reload",status:"redirect",url:g}:W()?U():(Z(window.sessionStorage),{message:"Не удалось открыть вход в 101",status:"error"}));if(S===ae&&p==="openDocs")return _(Ee);if(p==="details"){if(C)return _(C);const w=ee(S);if(w)return _(te(w.slug));if(ve.has(S))return _(g)}if(!r.value)return p==="details"?_(g):{message:"Войдите в сервис, чтобы выполнить действие",status:"error"};const L=s.data.value;if(!L)return{message:"Каталог продуктов ещё не готов",status:"error"};const u=ue(L,S);if(!u)return{message:"Продукт не найден",status:"error"};if(p==="details")return u.details_url?G(u.details_url):{message:"Ссылка на описание недоступна",status:"error"};if(p==="buy"){if(!u.guid)return{message:"Ссылка на оплату недоступна",status:"error"};const N=(await o.mutateAsync(u.guid)).data?.payment_url;return N?G(N):{message:"Ссылка на оплату недоступна",status:"error"}}if(p==="download"){if(!u.guid)return{message:"Файл для скачивания недоступен",status:"error"};const w=await i.mutateAsync(u.guid);return ce(w,u.name??u.title??"product"),U("Файл подготовлен")}return{message:"Действие недоступно",status:"error"}},l=()=>{if(r.value=P(),r.value&&typeof window<"u"&&K(window.sessionStorage)){e();return}r.value||d()},F=()=>
1{if(!R(t)){n.setProductsActionRunner(null),n.setProductsGuest();return}if(!a.value){d();return}if(n.setProductsActionRunner(D),s.isPending.value){n.setProductsSyncing(!0);return}if(s.data.value){n.setProductsAuthorized(se({products:s.data.value,supportUrl:x.supportUrl}));return}if(s.error.value){n.setProductsActionRunner(null),n.setProductsError("Не удалось загрузить каталог продуктов");return}n.setProductsSyncing(!1)};A(()=>{typeof window>"u"||(window.addEventListener(m,l),window.addEventListener("storage",l),window.addEventListener("focus",l))}),T(()=>{typeof window>"u"||(window.removeEventListener(m,l),window.removeEventListener("storage",l),window.removeEventListener("focus",l),n.setProductsActionRunner(null))}),E([a,()=>s.data.value,()=>s.error.value,()=>s.isPending.value],()=>{F()},{immediate:!0})},Q=e=>typeof e=="object"&&e!==null,f=e=>e==null||typeof e=="boolean",q=e=>e==null||typeof e=="number",Ie=e=>e==null||typeof e=="string"||typeof e=="number",y=e=>e==null||typeof e=="string",he=e=>Q(e)&&y(e.infinite_subscription_type)&&y(e.subscription_expiration_date_original)&&f(e.subscription_is_active)&&f(e.subscription_is_infinite)&&y(e.subscription_type),Ae=e=>Q(e)&&f(e.expired)&&y(e.expiration_date)&&f(e.has_remaining_subscription_period)&&Ie(e.id)&&f(e.is_active)&&(e.next_payment===void 0||e.next_payment===null||typeof e.next_payment=="boolean"||typeof e.next_payment=="string")&&q(e.period)&&q(e.price)&&y(e.subscription_type)&&f(e.update_requested),Te=e=>{if(!he(e))throw new Error("Некорректный ответ по текущей подписке");return e},De=e=>{const t=c(()=>!!h(e));return v({enabled:t,queryFn:async()=>{const n=await I.userSubscriptionInfo();return Te(n.data)},queryKey:["shared-subscription","current-status"],retry:1,staleTime:3e4})},Ce=e=>{if(!Array.isArray(e))throw new Error("Некорректный ответ по доступным тарифам");return e.map(t=>{if(!Ae(t))throw new Error("Некорректный ответ по доступным тарифам");return t})},Le=e=>{const t=c(()=>!!h(e));return v({enabled:t,queryFn:async()=>{const n=await I.userSubscriptions();return Ce(n.data)},queryKey:["shared-subscription","plans"],retry:1,staleTime:3e4})},Ne=e=>!!e.meta.siteShell&&e.name==="mainPage",B=e=>fe(e)&&(e.response?.status===401||e.response?.status===403),Oe="Не удалось загрузить данные подписки",Ue=({route:e,store:t})=>{const n=Y(P()),r=()=>{n.value=P(),n.value||t.setSubscriptionGuest()},s=c(()=>Ne(e)&&n.value),o=De(s),i=Le(s),a=()=>{t.setSubscriptionSyncing(!1),t.setSubscriptionGuest()},d=()=>{if(!s.value){a();return}if(o.isPending.value||i.isPending.value){t.setSubscriptionLoading();return}if(o.data.value&&i.data.value){t.setSubscriptionAuthorized(Se({actionUrl:me("/my-profile/info?tab=subscription"),plans:i.data.value,userSubscriptionData:o.data.value}));return}if(B(o.error.value)||B(i.error.value)){a();return}t.setSubscriptionLoadError(Oe)};A(()=>{typeof window>"u"||(window.addEventListener(m,r),window.addEventListener("storage",r),window.addEventListener("focus",r))}),T(()=>{typeof window>"u"||(window.removeEventListener(m,r),window.removeEventListener("storage",r),window.removeEventListener("focus",r))}),E([s,()=>o.data.value,()=>i.data.value,()=>o.error.value,()=>i.error.value,()=>o.isPending.value,()=>i.isPending.value],()=>{d()},{immediate:!0})},Ge=({authorization:e,enabled:t,request:n,sessionId:r})=>v({enabled:t,queryFn:async()=>{const s=b(n);if(!s)throw new Error("personalization_request_missing");const o={"Content-Type":"application/json","X-Personalization-Session":b(r)},i=b(e);i&&(o.Authorization=i);const a=await fetch("/api/site/personalization/resolve",{body:JSON.stringify(s),headers:o,method:"POST"});if(!a.ok)throw new Error("personalization_request_failed");return a.json()},queryKey:["site-personalization",n],retry:!1,staleTime:1800*1e3}),V="site-personalization-session-id-v1",M="site-personalization-generation-count-v1",k="site-personalization-returning-v1",ze=()=>{if(typeof navigator>"u")return"other";const e=navigator.userAgent.toLowerCase();return e.includes("android")?"android":/iphone|ipad|ipod/.test(e)?"ios":"desktop"},xe=()=>{if(typeof window>"u")return"ssr";const e=window.sessionStorage.getItem(V);if(e)return e;const t=window.crypto.randomUUID();return window.sessionStorage.setItem(V,t),t},qe=()=>{if(typeof window>"u")return!1;const e=window.localStorage.getItem(k)==="1";return window.localStorage.setItem(k,"1"),e},Be=()=>{if(typeof window>"u")return!1;const e=Number(window.sessionStorage.getItem(M)??"0");return!Number.isFinite(e)||e>=2?!1:(window.sessionStorage.setItem(M,String(e+1)),!0)},Ve=e=>{const t=O(z()),n=()=>{t.value=z()};A(()=>{window.addEventListener(m,n)}),T(()=>{window.removeEventListener(m,n)});const r=O(null);E(()=>[e.name,e.path],([o,i])=>
1{const a=typeof o=="string"?o:null;if(a!=="mainPage"&&a!=="blog-post"){r.value=null;return}if(!Be()){r.value=null;return}const d=i||"/";r.value=we({appInstalled:!1,device:ze(),isReturning:qe(),locale:ne(d).locale,routeName:a,routePath:d})},{immediate:!0});const s=Ge({authorization:c(()=>t.value?.token?`JWT ${t.value.token}`:""),enabled:c(()=>r.value!==null),request:r,sessionId:xe()});E(()=>s.data.value,o=>{o&&_e(o)},{immediate:!0})},bt=re({__name:"SiteClientDataHost",props:{route:{},store:{}},setup(e){const t=e;return Ue({route:t.route,store:t.store}),Ve(t.route),Re({route:t.route,store:t.store}),(n,r)=>null}});export{bt as default};

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.