0% acharam este documento útil (0 voto)
5 visualizações4 páginas

Com 0

O documento aborda a implementação de um sistema de fallback de rede, que inclui a leitura de dados de uma resposta, a compressão de solicitações e a gestão de sessões. Ele detalha como o sistema lida com falhas de rede e a recuperação de URLs de fallback, além de gerenciar sessões de usuário e metadados associados. O código é estruturado para otimizar a comunicação em ambientes com possíveis falhas de rede.

Enviado por

rak kiesz
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
5 visualizações4 páginas

Com 0

O documento aborda a implementação de um sistema de fallback de rede, que inclui a leitura de dados de uma resposta, a compressão de solicitações e a gestão de sessões. Ele detalha como o sistema lida com falhas de rede e a recuperação de URLs de fallback, além de gerenciar sessões de usuário e metadados associados. O código é estruturado para otimizar a comunicação em ambientes com possíveis falhas de rede.

Enviado por

rak kiesz
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

lose().catch([Link]);const l=[Link](),u=[];let c;for(;!

(c=yield [Link]()).done;)[Link]([Link]);const
d=[Link](((e,t)=>e+[Link]),0),g=new Uint8Array(d);let _=0;for(const e of
u)[Link](e,_),_+=[Link];[Link]=g,[Link]=[Link]([Link]({},null!
==(t=[Link])&&void 0!==t?t:{}),{[[Link]]:"1"})}catch(t)
{[Link](`Request compression failed for $
{[Link]()}`,t)}}))}_getInternalRequestArgs(e,t){const
n=this._fallbackResolver.getActiveFallbackUrl([Link],[Link]),i=[Link]
ign([Link]({},t),{method:e,fallbackUrl:n});return"data"in
t&&b(i,[Link]),i}};const y=e=>!![Link]||([Link]("Unable to make request
without an SDK key"),!
1),b=(e,t)=>{const{sdkKey:n,fallbackUrl:i}=e,r=_.[Link](n),s=[Link].g
et(n),o=[Link]._get(n);[Link]=[Link]([Link]([Link]({},t
),
{statsigMetadata:[Link]([Link]({},[Link]())
,{stableID:r,sessionID:s,sdkType:o,fallbackUrl:i})}))};function S(e,t,n,i,r)
{[Link]===[Link]._initialize&&[Link]._markInitNetworkRe
qEnd([Link],[Link]._getDiagnosticsData(t,n,i,r))}},52:function(e,t,n)
{"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||
(n=Promise))((function(r,s){function o(e){try{l([Link](e))}catch(e)
{s(e)}}function a(e){try{l([Link](e))}catch(e){s(e)}}function l(e){var
t;[Link]?r([Link]):(t=[Link],t instanceof n?t:new n((function(e)
{e(t)}))).then(o,a)}l((i=[Link](e,t||
[])).next())}))};[Link](t,"__esModule",{value:!
0}),t._isDomainFailure=[Link]=void 0;const
r=n(457),s=n(3918),o=n(8024),a=n(1638),l=6048e5;function u(e,t){var n;const
i=null!==(n=null==e?void 0:[Link]())&&void 0!==n?n:"";return t||
[Link]("uncaught exception")||[Link]("failed to fetch")||
[Link]("networkerror when attempting to fetch resource")}function c(e)
{return`statsig.network_fallback.${(0,s._DJB2)(e)}`}function d(e,t){const
n=c(e);t&&0!==[Link](t).length?
[Link](n,[Link](t)):[Link](n)}[Link]
Resolver=class{constructor(e){var
t;this._fallbackInfo=null,this._errorBoundary=null,this._dnsQueryCooldowns={},th
is._networkOverrideFunc=null===(t=[Link])||void 0===t?void
0:[Link]}setErrorBoundary(e)
{this._errorBoundary=e}tryBumpExpiryTime(e,t){var n;const
i=null===(n=this._fallbackInfo)||void 0===n?void
0:n[[Link]];i&&([Link]=[Link]()
+l,d(e,[Link]([Link]({},this._fallbackInfo),
{[[Link]]:i})))}getActiveFallbackUrl(e,t){var n,i;if(null!
=[Link]&&null!=[Link])return null;let
r=this._fallbackInfo;null==r&&(r=null!==(n=function(e){const
t=c(e),n=[Link](t);if(!n)return null;try{return
[Link](n)}catch(e){return [Link]("Failed to parse FallbackInfo"),null}}
(e))&&void 0!==n?n:{},this._fallbackInfo=r);const s=r[[Link]];return!s||
[Link]()>(null!==(i=[Link])&&void 0!==i?i:0)||[Link]()!
==[Link]?(delete
r[[Link]],this._fallbackInfo=r,d(e,this._fallbackInfo),null):[Link]?
[Link]:null}tryFetchUpdatedFallbackInfo(e,t,n,r){return i(this,void 0,void 0,
(function*(){var i,s;try{if(!u(n,r))return!1;const
s=null==[Link]&&null==[Link]?yield
this._tryFetchFallbackUrlsFromNetwork(t):[Link],o=this._pickNewFallbackU
rl(null===(i=this._fallbackInfo)||void 0===i?void 0:i[[Link]],s);return!!
o&&(this._updateFallbackInfoWithNewUrl(e,t,o),!0)}catch(e){return
null===(s=this._errorBoundary)||void 0===s||
[Link]("tryFetchUpdatedFallbackInfo",e),!
1}}))}_updateFallbackInfoWithNewUrl(e,t,n){var i,r,s;const
o={urlConfigChecksum:[Link](),url:n,expiryTime:[Link]()+l,previous:
[]},a=[Link],u=null===(i=this._fallbackInfo)||void 0===i?void
0:i[a];u&&[Link](...[Link]),[Link]>10&&([Link]=[]);c
onst c=null===(s=null===(r=this._fallbackInfo)||void 0===r?void 0:r[a])||void
0===s?void 0:[Link];null!
=c&&[Link](c),this._fallbackInfo=[Link]([Link]({},this._f
allbackInfo),
{[a]:o}),d(e,this._fallbackInfo)}_tryFetchFallbackUrlsFromNetwork(e){return
i(this,void 0,void 0,(function*(){var t;const
n=this._dnsQueryCooldowns[[Link]];if(n&&[Link]()<n)return
null;this._dnsQueryCooldowns[[Link]]=[Link]()+144e5;const
i=[],s=yield(0,r._fetchTxtRecords)(null!==(t=this._networkOverrideFunc)&&void 0!
==t?t:fetch),o=function(e){try{return new URL(e).pathname}catch(e){return null}}
([Link]);for(const t of s){if(!
[Link]([Link]+"="))continue;const n=[Link]("=");if([Link]>1)
{let e=n[1];[Link]("/")&&(e=[Link](0,-1)),[Link](`[Link]
{o}`)}}return i}))}_pickNewFallbackUrl(e,t){var n;if(null==t)return null;const
i=new Set(null!==(n=null==e?void 0:[Link])&&void 0!==n?n:[]),r=null==e?void
0:[Link];let s=null;for(const e of t){const t=[Link]("/")?[Link](0,-
1):e;if(![Link](e)&&t!==r){s=t;break}}return s}},t._isDomainFailure=u},2509:
(e,t)=>{"use strict";[Link](t,"__esModule",{value:!0})},5025:
(e,t)=>{"use strict";[Link](t,"__esModule",{value:!0})},5747:
(e,t)=>{"use strict";[Link](t,"__esModule",{value:!
0}),[Link]=void 0;const n={};[Link]={setFlags:(e,t)=>{n[e]=t},get:
(e,t)=>{var i,r;return null!==(r=null===(i=n[e])||void 0===i?void 0:i[t])&&void
0!==r&&r}}},686:(e,t)=>{"use strict";[Link](t,"__esModule",
{value:!0}),[Link]=void 0;const n={};let i;[Link]={_get:e=>{var
t;return(null!==(t=n[e])&&void 0!==t?t:"js-mono")+(null!=i?
i:"")},_setClientType(e,t){n[e]=t},_setBindingType(e){i&&"-react"!==i||
(i="-"+e)}}},414:(e,t)=>{"use strict";[Link](t,"__esModule",
{value:!
0}),t._getUnloadEvent=t._getCurrentPageUrlSafe=t._addDocumentEventListenerSafe=t
._addWindowEventListenerSafe=t._isServerEnv=t._getDocumentSafe=t._getWindowSafe=
void 0,t._getWindowSafe=()=>"undefined"!=typeof window?
window:null,t._getDocumentSafe=()=>{var e;const n=(0,t._getWindowSafe)();return
null!==(e=null==n?void 0:[Link])&&void 0!==e?
e:null},t._isServerEnv=()=>{if(null!==(0,t._getDocumentSafe)())return!1;const
e="undefined"!=typeof process&&null!=[Link]&&null!
=[Link];return"string"==typeof EdgeRuntime||
e},t._addWindowEventListenerSafe=(e,n)=>{const i=(0,t._getWindowSafe)
();"function"==typeof(null==i?void
0:[Link])&&[Link](e,n)},t._addDocumentEventListenerSafe=
(e,n)=>{const i=(0,t._getDocumentSafe)();"function"==typeof(null==i?void
0:[Link])&&[Link](e,n)},t._getCurrentPageUrlSafe=()=>{va
r e;try{return null===(e=(0,t._getWindowSafe)())||void 0===e?void
0:[Link](/[?#]/)[0]}catch(e)
{return}},t._getUnloadEvent=()=>{const e=(0,t._getWindowSafe)();return
e&&"onpagehide"in e?"pagehide":"beforeunload"}},9839:(e,t,n)=>{"use
strict";[Link](t,"__esModule",{value:!
0}),[Link]=[Link]=void 0;const
i=n(3509),r=n(4681),s=n(8024),o=n(1638),a=n(7047),l=18e5,u=144e5,c={};function
d(e,t){return setTimeout((()=>{var t;const n=null===(t=(0,i._getStatsigGlobal)
())||void 0===t?void 0:[Link](e);n&&n.
$emt({name:"session_expired"})}),t)}function g(e){return`statsig.session_id.$
{(0,r._getStorageKey)
(e)}`}[Link]={get:e=>[Link](e).[Link]},[Link]
on={get:e=>(null==c[e]&&(c[e]=function(e){let t=function(e){const
t=g(e);return(0,o._getObjectFromStorage)(t)}(e);const n=[Link]();return t||
(t={sessionID:(0,[Link])(),startTime:n,lastUpdate:n}),{data:t,sdkKey:e}}
(e)),function(e){const
t=[Link](),n=[Link],i=[Link];if(function({lastUpdate:e}){return [Link]()-
e>l}(n)||function({startTime:e}){return [Link]()-e>u}(n))
{[Link]=(0,[Link])(),[Link]=t;const e=null===__STATSIG__||void
0===__STATSIG__?void 0:__STATSIG__.instance(i);e&&e.
$emt({name:"session_expired"})}[Link]=t,function(e,t){const
n=g(t);try{(0,o._setObjectInStorage)(n,e)}catch(e){[Link]("Failed to save
SessionID")}}
(n,[Link]),clearTimeout([Link]),clearTimeout([Link]);const
r=[Link];return [Link]=d(i,l),[Link]=d(i,u-r),e}
(c[e])),overrideInitialSessionID:(e,t)=>{c[t]=function(e,t){const
n=[Link]();return{data:{sessionID:e,startTime:n,lastUpdate:n},sdkKey:t}}
(e,t)}}},6272:(e,t)=>{"use strict";[Link](t,"__esModule",{value:!
0}),t._fastApproxSizeOf=void 0,t._fastApproxSizeOf=(e,n)=>{let i=0;const
r=[Link](e);for(let s=0;s<[Link];s++){const
o=r[s],a=e[o];if(i+=[Link],i+="object"==typeof a&&null!==a?
(0,t._fastApproxSizeOf)(a,n)+2:String(a).length+1,i>=n)return i}return i}},2626:
(e,t,n)=>{"use strict";[Link](t,"__esModule",{value:!
0}),[Link]=[Link]=void 0;const
i=n(4681),r=n(8024),s=n(414),o=n(1638),a=n(7047),l={},u={},c={};function d(e)
{return`statsig.stable_id.${(0,i._getStorageKey)(e)}`}function g(e,t){const
n=d(t);try{(0,o._setObjectInStorage)(n,e)}catch(e){[Link]("Failed to save
StableID to storage")}}function _(e,t){if(!u[t]||null==(0,s._getDocumentSafe)
())return;const n=new Date;[Link]([Link]()+1),[Link]=`$
{h(t)}=${encodeURIComponent(e)}; expires=${[Link]()}; path=/`}function
h(e){return`statsig.stable_id.${(0,i._getStorageKey)
(e)}`}[Link]={cookiesEnabled:!
1,randomID:[Link]().toString(36),get:e=>{if(c[e])return null;if(null!
=l[e])return l[e];let t=null;return t=function(e){if(!u[e]||
null==(0,s._getDocumentSafe)())return null;const
t=[Link](";");for(const n of t)
{const[t,i]=[Link]().split("=");if(t===h(e))return decodeURIComponent(i)}return
null}(e),null!=t?(l[e]=t,g(t,e),t):(t=function(e){const
t=d(e);return(0,o._getObjectFromStorage)(t)}(e),null==t&&(t=(0,[Link])
()),g(t,e),_(t,e),l[e]=t,t)},setOverride:
(e,t)=>{l[t]=e,g(e,t),_(e,t)},_setCookiesEnabled:(e,t)=>{u[e]=t},_setDisabled:
(e,t)=>{c[e]=t}},[Link]=h},4351:function(e,t,n){"use strict";var
i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))
((function(r,s){function o(e){try{l([Link](e))}catch(e){s(e)}}function a(e)
{try{l([Link](e))}catch(e){s(e)}}function l(e){var t;[Link]?r([Link]):
(t=[Link],t instanceof n?t:new n((function(e)
{e(t)}))).then(o,a)}l((i=[Link](e,t||
[])).next())}))};[Link](t,"__esModule",{value:!
0}),[Link]=void 0,n(3509);const
r=n(3509),s=n(4358),o=n(5434),a=n(8024),l=n(843),u=n(414),c=n(9839),d=n(2626),g=
n(7754),_=n(1638);[Link]=class{constructor(e,t,n,i){var
l,g,h,f;[Link]="Uninitialized",this._initializePromise=null,this._li
steners={};const v=this.$[Link](this);null!=(null==i?void
0:[Link])&&([Link]=[Link]),(null==i?void
0:[Link])&&_.Storage._setDisabled(!0),(null==i?void
0:[Link])&&[Link]([Link]
nID,e),(null==i?void
0:[Link])&&_.Storage._setProvider([Link]),(null==i?void
0:[Link])&&[Link]._setCookiesEnabled(e,[Link]),(null==i?
void 0:[Link])&&[Link]._setDisabled(e,!
0),this._sdkKey=e,this._options=null!=i?i:
{},this._memoCache={},[Link]=null!==(l=null==i?void
0:[Link])&&void 0!==l?l:null,this._logger=new
[Link](e,v,n,i),this._errorBoundary=new
[Link](e,i,v),this._errorBoundary.wrap(this),this._errorBoundary.wrap(t
),this._errorBoundary.wrap(this._logger),[Link](this._errorBoundary)
,[Link]=t,[Link](e,i,n),[Link]=_.Storag
e,null===(f=null===(h=null===(g=[Link])||void 0===g?void
0:[Link])||void 0===h?void 0:[Link](g))||void 0===f||
[Link]((e=>this._errorBoundary.logError("OA::loadFromStorage",e))),this._primeR
eadyRipcord(),function(e,t){var n;if((0,u._isServerEnv)())return;const
i=(0,r._getStatsigGlobal)(),s=null!==(n=[Link])&&void 0!==n?n:{},o=t;null!
=s[e]&&[Link]("Creating multiple Statsig clients with the same SDK key can
lead to unexpected behavior. Multi-instance support requires different SDK
keys."),s[e]=o,[Link]||([Link]=o),[Link]=s,__STATSIG__=i}
(e,this)}updateRuntimeOptions(e){[Link]?
(this._options.loggingEnabled=[Link],this._logger.setLoggingEnabled(e.
loggingEnabled)):null!
=[Link]&&(this._options.disableLogging=[Link],this._logger.s
etLoggingEnabled([Link]?"disabled":"browser-only")),null!
=[Link]&&(this._options.disableStorage=[Link],_.Storage._set
Disabled([Link])),null!
=[Link]&&(this._options.enableCookies=[Link],[Link]._setCo
okiesEnabled(this._sdkKey,[Link])),[Link]?
this._logger.setLogEventCompressionMode([Link]):[Link]
ression&&this._logger.setLogEventCompressionMode([Link]
led)}flush(){return this._logger.flush()}shutdown(){return i(this,void 0,void 0,
(function*(){this.
$emt({name:"pre_shutdown"}),this._setStatus("Uninitialized",null),this._initiali
zePromise=null,yield this._logger.stop()}))}on(e,t){this._listeners[e]||
(this._list

Você também pode gostar