@devvit/web-view-scripts 0.14.4 → 0.14.5-next-2026-09-15-15-55-58-c5070281ea.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.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devvit/web-view-scripts",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.5-next-2026-09-15-15-55-58-c5070281ea.0",
|
|
4
4
|
"license": "BSD-3-Clause",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -34,17 +34,17 @@
|
|
|
34
34
|
},
|
|
35
35
|
"types": "./dist/index.d.ts",
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@devvit/protos": "0.14.
|
|
38
|
-
"@devvit/shared": "0.14.
|
|
39
|
-
"@devvit/shared-types": "0.14.
|
|
37
|
+
"@devvit/protos": "0.14.5-next-2026-09-15-15-55-58-c5070281ea.0",
|
|
38
|
+
"@devvit/shared": "0.14.5-next-2026-09-15-15-55-58-c5070281ea.0",
|
|
39
|
+
"@devvit/shared-types": "0.14.5-next-2026-09-15-15-55-58-c5070281ea.0",
|
|
40
40
|
"html-to-image": "1.11.13",
|
|
41
41
|
"jwt-decode": "4.0.0",
|
|
42
42
|
"web-vitals": "4.2.4"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@ampproject/filesize": "4.3.0",
|
|
46
|
-
"@devvit/repo-tools": "0.14.
|
|
47
|
-
"@devvit/tsconfig": "0.14.
|
|
46
|
+
"@devvit/repo-tools": "0.14.5-next-2026-09-15-15-55-58-c5070281ea.0",
|
|
47
|
+
"@devvit/tsconfig": "0.14.5-next-2026-09-15-15-55-58-c5070281ea.0",
|
|
48
48
|
"@types/jsdom": "21.1.7",
|
|
49
49
|
"@types/node": "24.13.3",
|
|
50
50
|
"esbuild": "0.25.9",
|
|
@@ -64,5 +64,5 @@
|
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
66
|
"source": "./src/index.ts",
|
|
67
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "27bad9569c9408811fe8afdf46543f08142966f7"
|
|
68
68
|
}
|
package/scripts/devvit.v1.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(()=>{var c={hash:"b299cfb",version:"0.14.4-dev"};var M="clientVersion",w="devvit.v1.min.js",R="screenshot.v1.min.js",O=`https://webview.devvit.net/scripts/${w}`;function P(e){if(e.currentScript&&"src"in e.currentScript)return new URL(e.currentScript.src).searchParams.get(M)??void 0}function U(e){if(e.currentScript&&"src"in e.currentScript)return e.currentScript.src}var m;(function(e){e[e.CLIENT_UNSPECIFIED=0]="CLIENT_UNSPECIFIED",e[e.ANDROID=1]="ANDROID",e[e.IOS=2]="IOS",e[e.SHREDDIT=3]="SHREDDIT",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED"})(m||(m={}));var k;(function(e){e[e.HEIGHT_UNSPECIFIED=0]="HEIGHT_UNSPECIFIED",e[e.REGULAR=1]="REGULAR",e[e.TALL=2]="TALL",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED"})(k||(k={}));function T(e,t){if(!e)throw Error(t)}var p;(function(e){e.COMMENT="t1_",e.ACCOUNT="t2_",e.LINK="t3_",e.MESSAGE="t4_",e.SUBREDDIT="t5_",e.AWARD="t6_"})(p||(p={}));function se(e){return!!e?.startsWith(p.ACCOUNT)}function ce(e){return!!e?.startsWith(p.LINK)}function de(e){return!!e?.startsWith(p.SUBREDDIT)}function ue(e){T(se(e),`Expected account id to start with ${p.ACCOUNT}, got ${e}`)}function pe(e){T(ce(e),`Expected link id to start with ${p.LINK}, got ${e}`)}function fe(e){T(de(e),`Expected subreddit id to start with ${p.SUBREDDIT}, got ${e}`)}function h(e){return ue(e),e}function _(e){return pe(e),e}function I(e){return fe(e),e}var u;(function(e){e[e.EFFECT_REALTIME_SUB=0]="EFFECT_REALTIME_SUB",e[e.EFFECT_RERENDER_UI=1]="EFFECT_RERENDER_UI",e[e.EFFECT_RELOAD_PART=2]="EFFECT_RELOAD_PART",e[e.EFFECT_SHOW_FORM=3]="EFFECT_SHOW_FORM",e[e.EFFECT_SHOW_TOAST=4]="EFFECT_SHOW_TOAST",e[e.EFFECT_NAVIGATE_TO_URL=5]="EFFECT_NAVIGATE_TO_URL",e[e.EFFECT_SET_INTERVALS=7]="EFFECT_SET_INTERVALS",e[e.EFFECT_CREATE_ORDER=8]="EFFECT_CREATE_ORDER",e[e.EFFECT_WEB_VIEW=9]="EFFECT_WEB_VIEW",e[e.EFFECT_CAN_RUN_AS_USER=11]="EFFECT_CAN_RUN_AS_USER",e[e.EFFECT_TELEMETRY=12]="EFFECT_TELEMETRY",e[e.EFFECT_UPDATE_REQUEST_CONTEXT=13]="EFFECT_UPDATE_REQUEST_CONTEXT",e[e.EFFECT_SCREENSHOT_RESPONSE=14]="EFFECT_SCREENSHOT_RESPONSE",e[e.EFFECT_LOGIN_PROMPT=15]="EFFECT_LOGIN_PROMPT",e[e.EFFECT_PROMOTED_TELEMETRY=16]="EFFECT_PROMOTED_TELEMETRY",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED"})(u||(u={}));var E;(function(e){e[e.CLIENT=0]="CLIENT",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED"})(E||(E={}));var V="devvit-internal",f=(e,t)=>{let n={...e,realtimeEffect:e.realtime,id:t,scope:E.CLIENT,type:V};(e.showToast||e.navigateToUrl)&&(n.effect=e),parent.postMessage(n,"*")},W=e=>new Promise(t=>{let n={...e,realtimeEffect:e.realtime,scope:E.CLIENT,type:V};(e.showForm||e.type===u.EFFECT_CAN_RUN_AS_USER)&&(n.effect=e);let r=crypto.randomUUID();n.id=r;let o=i=>{i.data?.type==="devvit-message"&&i.data?.data?.id===r&&(t(i.data.data),removeEventListener("message",o))};addEventListener("message",o),parent.postMessage(n,"*")});var l=class extends Error{};l.prototype.name="InvalidTokenError";function le(e){return decodeURIComponent(atob(e).replace(/(.)/g,(t,n)=>{let r=n.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r}))}function me(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw new Error("base64 string is not of the correct length")}try{return le(t)}catch{return atob(t)}}function D(e,t){if(typeof e!="string")throw new l("Invalid token specified: must be a string");t||(t={});let n=t.header===!0?0:1,r=e.split(".")[n];if(typeof r!="string")throw new l(`Invalid token specified: missing part #${n+1}`);let o;try{o=me(r)}catch(i){throw new l(`Invalid token specified: invalid base64 for part #${n+1} (${i.message})`)}try{return JSON.parse(o)}catch(i){throw new l(`Invalid token specified: invalid json for part #${n+1} (${i.message})`)}}function j(e){if(e)try{return D(e)?.devvit}catch(t){throw Error("token decode failure",{cause:t})}}function G(){setInterval(ve,6e4)}async function ve(){let{exp:e}=D(globalThis.devvit.token);e&&e-Date.now()/1e3>300||await F()}async function F(){let e=await W({type:u.EFFECT_UPDATE_REQUEST_CONTEXT,updateRequestContext:{}});if(!e?.updateRequestContext?.signedRequestContext){console.error("Failed to refresh token");return}B(e.updateRequestContext.signedRequestContext)}var $=(e,t,n)=>{let r=he(n.name,t.hash),o=ge(r),i=r?.appPermissionState;o?.name==="ANDROID"&&(o.version.yyyy<2026||o.version.yyyy===2026&&o.version.release<=5)&&(i=void 0);let a=j(r.signedRequestContext),s;if(a?s=Ee(a,o,r.postData):r.webViewContext&&(s=Te(r.webViewContext,o,r.postData)),!s)throw Error("no context");let d=r.webViewClientData;globalThis.devvit={context:s,dependencies:{client:P(e),webViewScripts:c},entrypoints:d?.appConfig?.entrypoints??{},experiments:d?.featureConfig?.experiments??{},share:r?.shareParam?{userData:r?.shareParam.userData}:void 0,adPayload:r?.adPayload,appPermissionState:i,token:r.signedRequestContext||r.webbitToken,webViewMode:r?.viewMode,startTime:r?.startTime??void 0,refreshToken:F}};function q(e){devvit.webViewMode=e}function B(e){globalThis.devvit.token=e}function Ee(e,t,n){if(!e.app)throw Error("no RequestContext.app");if(!e.post)throw Error("no RequestContext.post");if(!e.subreddit)throw Error("no RequestContext.subreddit");return{appName:e.app.name,appSlug:e.app.slug,appVersion:e.app.version,client:t,commentId:void 0,loid:e.user?.devvitLoid??e.user?.devvit_loid,postAuthorId:h(e.post.author),postData:n?.developerData,postId:_(e.post.id),snoovatar:e.user?.snoovatar,subredditId:I(e.subreddit.id),subredditName:e.subreddit.name,userId:e.user?.id?h(e.user.id):void 0,username:e.user?.name}}function Te(e,t,n){return{appName:e.appName,appSlug:e.appName,appVersion:e.appVersion,client:t,commentId:void 0,loid:void 0,postData:n?.developerData,postAuthorId:void 0,postId:_(e.postId),snoovatar:void 0,subredditId:I(e.subredditId),subredditName:e.subredditName,userId:e.userId?h(e.userId):void 0,username:void 0}}function he(e,t){if(e)return JSON.parse(e);let n=t?.slice(1);if(!n)throw Error("no bridge context");return JSON.parse(decodeURIComponent(n))}function ge(e){if(!(e.client!==m.ANDROID&&e.client!==m.IOS||!e.nativeVersion))return{name:e.client===m.ANDROID?"ANDROID":"IOS",version:e.nativeVersion}}async function Se(e,t,n,r,o){let i=new Request(r,o);return Ce(n,new URL(i.url))&&i.headers.set("Authorization",`Bearer ${e.token}`),await t(i)}function H(){globalThis.fetch=Se.bind(void 0,globalThis.devvit,globalThis.fetch,location)}function Ce(e,t){return t.origin===e.origin}var ye=new URL(R,O).toString();function be(e){let t=e?.trim();if(t)try{let n=new URL(t);if(n.pathname.endsWith(`/${w}`))return new URL(R,n).toString()}catch{}return ye}async function we(e,t){let n=e.data;if(n?.type!=="devvit-message"||n.data==null)return;let r=n.data;if(r.screenshotRequest==null||typeof r.id!="string")return;let o,i;try{let a=be(t),{captureScreenshot:s}=await import(a);o=await s()}catch(a){i=a instanceof Error?a.message:String(a)}f({type:u.EFFECT_SCREENSHOT_RESPONSE,screenshot:{dataUrl:o,error:i}},r.id)}function Z(e){addEventListener("message",t=>{we(t,e)})}function Y(e){let t=Re(e.target,e.isTrusted);f({type:u.EFFECT_TELEMETRY,telemetry:{event:t.event,click:t},analytics:t})}function Re(e,t){let{definition:n,elemTrackId:r}=_e(e,t);return{event:"click",definition:n,elemTrackId:r}}function _e(e,t){let n=Ie(e);if(!n)return{definition:"default",elemTrackId:void 0};let r="default";t&&globalThis.window.getComputedStyle(n)?.getPropertyValue("cursor")==="pointer"&&(r="strict");let o,i=n;for(;i;){if(o===void 0){let a=i.getAttribute("data-track-id");a?o=a:i.id&&(o=i.id)}if(t&&r==="default"&&De(i)&&(r="strict"),o!==void 0&&(!t||r==="strict"))break;i=i.parentElement}return{definition:r,elemTrackId:o}}function Ie(e){if(!e||typeof e!="object"||!("nodeType"in e))return;let t=e;return t.nodeType===1?t:t.parentElement??void 0}function De(e){return["A","BUTTON","CANVAS","INPUT","SELECT","TEXTAREA","LABEL"].includes(e.tagName)||["true","plaintext-only"].includes(e.getAttribute("contenteditable")??"")}var X=-1,x=function(e){addEventListener("pageshow",(function(t){t.persisted&&(X=t.timeStamp,e(t))}),!0)},N=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},L=function(){var e=N();return e&&e.activationStart||0},g=function(e,t){var n=N(),r="navigate";return X>=0?r="back-forward-cache":n&&(document.prerendering||L()>0?r="prerender":document.wasDiscarded?r="restore":n.type&&(r=n.type.replace(/_/g,"-"))),{name:e,value:t===void 0?-1:t,rating:"good",delta:0,entries:[],id:"v4-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},Fe=function(e,t,n){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(o){Promise.resolve().then((function(){t(o.getEntries())}))}));return r.observe(Object.assign({type:e,buffered:!0},n||{})),r}}catch{}},S=function(e,t,n,r){var o,i;return function(a){t.value>=0&&(a||r)&&((i=t.value-(o||0))||o===void 0)&&(o=t.value,t.delta=i,t.rating=(function(s,d){return s>d[1]?"poor":s>d[0]?"needs-improvement":"good"})(t.value,n),e(t))}},xe=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))};var v=-1,z=function(){return document.visibilityState!=="hidden"||document.prerendering?1/0:0},C=function(e){document.visibilityState==="hidden"&&v>-1&&(v=e.type==="visibilitychange"?e.timeStamp:0,Ne())},J=function(){addEventListener("visibilitychange",C,!0),addEventListener("prerenderingchange",C,!0)},Ne=function(){removeEventListener("visibilitychange",C,!0),removeEventListener("prerenderingchange",C,!0)},Le=function(){return v<0&&(v=z(),J(),x((function(){setTimeout((function(){v=z(),J()}),0)}))),{get firstHiddenTime(){return v}}},ee=function(e){document.prerendering?addEventListener("prerenderingchange",(function(){return e()}),!0):e()},K=[1800,3e3],te=function(e,t){t=t||{},ee((function(){var n,r=Le(),o=g("FCP"),i=Fe("paint",(function(a){a.forEach((function(s){s.name==="first-contentful-paint"&&(i.disconnect(),s.startTime<r.firstHiddenTime&&(o.value=Math.max(s.startTime-L(),0),o.entries.push(s),n(!0)))}))}));i&&(n=S(e,o,K,t.reportAllChanges),x((function(a){o=g("FCP"),n=S(e,o,K,t.reportAllChanges),xe((function(){o.value=performance.now()-a.timeStamp,n(!0)}))})))}))};var Q=[800,1800],Ae=function e(t){document.prerendering?ee((function(){return e(t)})):document.readyState!=="complete"?addEventListener("load",(function(){return e(t)}),!0):setTimeout(t,0)},ne=function(e,t){t=t||{};var n=g("TTFB"),r=S(e,n,Q,t.reportAllChanges);Ae((function(){var o=N();o&&(n.value=Math.max(o.responseStart-L(),0),n.entries=[o],r(!0),x((function(){n=g("TTFB",0),(r=S(e,n,Q,t.reportAllChanges))(!0)})))}))};function ie(){ke(),Me(),Oe()}function Me(){addEventListener("load",()=>{let e=performance.timeOrigin,t=performance.now(),n=performance.timeOrigin+t,r={event:"web-view-loaded",timeStart:e,timeEnd:n,duration:t};f({type:u.EFFECT_TELEMETRY,telemetry:{event:r.event,loaded:r},analytics:r})})}function Oe(){document.addEventListener("click",e=>{Y(e)},{capture:!0,passive:!0})}function A(){return performance.getEntriesByType("navigation")[0]}function b(e,t){return{spanName:e,timeStart:performance.timeOrigin,timeEnd:performance.timeOrigin+t}}function y(e){f({type:u.EFFECT_TELEMETRY,telemetry:{metrics:{metrics:e}}})}function Pe(e){if(e)return{spanName:"web_view_initialization",timeStart:e,timeEnd:performance.timeOrigin}}function Ue(e){let t=A(),n=t?.loadEventEnd;if(!(e==null||n==null||n<=0||!t||t.responseStart<=0))return{spanName:"web_view_render_duration",timeStart:performance.timeOrigin+t.responseStart,timeEnd:performance.timeOrigin+Math.max(e,n)}}function re(){let t=A()?.domInteractive;if(t)return b("web_view_time_to_interactive",t)}function ke(){let e=[],t,n=!1,r=()=>{if(n)return;let i=Ue(t);if(i)return n=!0,i},o=Pe(globalThis.devvit?.startTime);if(o&&e.push(o),te(i=>{let a=i.entries[0];if(!a)return;t=a.startTime;let s=b("web_view_first_contentful_paint",a.startTime),d=r();document.readyState==="complete"?y(d?[s,d]:[s]):(e.push(s),d&&e.push(d))}),ne(i=>{let a=i.entries[0];if(!a)return;let s=b("web_view_time_to_first_byte",a.responseStart),d=r();y(d?[s,d]:[s])}),document.readyState==="loading")globalThis.addEventListener("DOMContentLoaded",()=>{let i=re();i&&e.push(i)});else{let i=re();i&&e.push(i)}globalThis.addEventListener("load",()=>{let i=r();i&&e.push(i),e.push(b("web_view_load",performance.now())),y(e);let a=A();!i&&t!=null&&a?.responseStart&&!a.loadEventEnd&&globalThis.setTimeout(()=>{let s=r();s&&y([s])})})}function oe(){addEventListener("message",Ve)}function Ve(e){e.data?.type==="devvit-message"&&e.data?.data?.immersiveModeEvent&&q(e.data.data.immersiveModeEvent.immersiveMode)}$(document,location,window);ie();H();Z(U(document)??"");G();oe();})();
|
|
1
|
+
"use strict";(()=>{var c={hash:"c507028",version:"0.14.5-dev"};var M="clientVersion",w="devvit.v1.min.js",R="screenshot.v1.min.js",O=`https://webview.devvit.net/scripts/${w}`;function P(e){if(e.currentScript&&"src"in e.currentScript)return new URL(e.currentScript.src).searchParams.get(M)??void 0}function U(e){if(e.currentScript&&"src"in e.currentScript)return e.currentScript.src}var m;(function(e){e[e.CLIENT_UNSPECIFIED=0]="CLIENT_UNSPECIFIED",e[e.ANDROID=1]="ANDROID",e[e.IOS=2]="IOS",e[e.SHREDDIT=3]="SHREDDIT",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED"})(m||(m={}));var k;(function(e){e[e.HEIGHT_UNSPECIFIED=0]="HEIGHT_UNSPECIFIED",e[e.REGULAR=1]="REGULAR",e[e.TALL=2]="TALL",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED"})(k||(k={}));function T(e,t){if(!e)throw Error(t)}var p;(function(e){e.COMMENT="t1_",e.ACCOUNT="t2_",e.LINK="t3_",e.MESSAGE="t4_",e.SUBREDDIT="t5_",e.AWARD="t6_"})(p||(p={}));function se(e){return!!e?.startsWith(p.ACCOUNT)}function ce(e){return!!e?.startsWith(p.LINK)}function de(e){return!!e?.startsWith(p.SUBREDDIT)}function ue(e){T(se(e),`Expected account id to start with ${p.ACCOUNT}, got ${e}`)}function pe(e){T(ce(e),`Expected link id to start with ${p.LINK}, got ${e}`)}function fe(e){T(de(e),`Expected subreddit id to start with ${p.SUBREDDIT}, got ${e}`)}function h(e){return ue(e),e}function _(e){return pe(e),e}function I(e){return fe(e),e}var u;(function(e){e[e.EFFECT_REALTIME_SUB=0]="EFFECT_REALTIME_SUB",e[e.EFFECT_RERENDER_UI=1]="EFFECT_RERENDER_UI",e[e.EFFECT_RELOAD_PART=2]="EFFECT_RELOAD_PART",e[e.EFFECT_SHOW_FORM=3]="EFFECT_SHOW_FORM",e[e.EFFECT_SHOW_TOAST=4]="EFFECT_SHOW_TOAST",e[e.EFFECT_NAVIGATE_TO_URL=5]="EFFECT_NAVIGATE_TO_URL",e[e.EFFECT_SET_INTERVALS=7]="EFFECT_SET_INTERVALS",e[e.EFFECT_CREATE_ORDER=8]="EFFECT_CREATE_ORDER",e[e.EFFECT_WEB_VIEW=9]="EFFECT_WEB_VIEW",e[e.EFFECT_CAN_RUN_AS_USER=11]="EFFECT_CAN_RUN_AS_USER",e[e.EFFECT_TELEMETRY=12]="EFFECT_TELEMETRY",e[e.EFFECT_UPDATE_REQUEST_CONTEXT=13]="EFFECT_UPDATE_REQUEST_CONTEXT",e[e.EFFECT_SCREENSHOT_RESPONSE=14]="EFFECT_SCREENSHOT_RESPONSE",e[e.EFFECT_LOGIN_PROMPT=15]="EFFECT_LOGIN_PROMPT",e[e.EFFECT_PROMOTED_TELEMETRY=16]="EFFECT_PROMOTED_TELEMETRY",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED"})(u||(u={}));var E;(function(e){e[e.CLIENT=0]="CLIENT",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED"})(E||(E={}));var V="devvit-internal",f=(e,t)=>{let n={...e,realtimeEffect:e.realtime,id:t,scope:E.CLIENT,type:V};(e.showToast||e.navigateToUrl)&&(n.effect=e),parent.postMessage(n,"*")},W=e=>new Promise(t=>{let n={...e,realtimeEffect:e.realtime,scope:E.CLIENT,type:V};(e.showForm||e.type===u.EFFECT_CAN_RUN_AS_USER)&&(n.effect=e);let r=crypto.randomUUID();n.id=r;let o=i=>{i.data?.type==="devvit-message"&&i.data?.data?.id===r&&(t(i.data.data),removeEventListener("message",o))};addEventListener("message",o),parent.postMessage(n,"*")});var l=class extends Error{};l.prototype.name="InvalidTokenError";function le(e){return decodeURIComponent(atob(e).replace(/(.)/g,(t,n)=>{let r=n.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r}))}function me(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw new Error("base64 string is not of the correct length")}try{return le(t)}catch{return atob(t)}}function D(e,t){if(typeof e!="string")throw new l("Invalid token specified: must be a string");t||(t={});let n=t.header===!0?0:1,r=e.split(".")[n];if(typeof r!="string")throw new l(`Invalid token specified: missing part #${n+1}`);let o;try{o=me(r)}catch(i){throw new l(`Invalid token specified: invalid base64 for part #${n+1} (${i.message})`)}try{return JSON.parse(o)}catch(i){throw new l(`Invalid token specified: invalid json for part #${n+1} (${i.message})`)}}function j(e){if(e)try{return D(e)?.devvit}catch(t){throw Error("token decode failure",{cause:t})}}function G(){setInterval(ve,6e4)}async function ve(){let{exp:e}=D(globalThis.devvit.token);e&&e-Date.now()/1e3>300||await F()}async function F(){let e=await W({type:u.EFFECT_UPDATE_REQUEST_CONTEXT,updateRequestContext:{}});if(!e?.updateRequestContext?.signedRequestContext){console.error("Failed to refresh token");return}B(e.updateRequestContext.signedRequestContext)}var $=(e,t,n)=>{let r=he(n.name,t.hash),o=ge(r),i=r?.appPermissionState;o?.name==="ANDROID"&&(o.version.yyyy<2026||o.version.yyyy===2026&&o.version.release<=5)&&(i=void 0);let a=j(r.signedRequestContext),s;if(a?s=Ee(a,o,r.postData):r.webViewContext&&(s=Te(r.webViewContext,o,r.postData)),!s)throw Error("no context");let d=r.webViewClientData;globalThis.devvit={context:s,dependencies:{client:P(e),webViewScripts:c},entrypoints:d?.appConfig?.entrypoints??{},experiments:d?.featureConfig?.experiments??{},share:r?.shareParam?{userData:r?.shareParam.userData}:void 0,adPayload:r?.adPayload,appPermissionState:i,token:r.signedRequestContext||r.webbitToken,webViewMode:r?.viewMode,startTime:r?.startTime??void 0,refreshToken:F}};function q(e){devvit.webViewMode=e}function B(e){globalThis.devvit.token=e}function Ee(e,t,n){if(!e.app)throw Error("no RequestContext.app");if(!e.post)throw Error("no RequestContext.post");if(!e.subreddit)throw Error("no RequestContext.subreddit");return{appName:e.app.name,appSlug:e.app.slug,appVersion:e.app.version,client:t,commentId:void 0,loid:e.user?.devvitLoid??e.user?.devvit_loid,postAuthorId:h(e.post.author),postData:n?.developerData,postId:_(e.post.id),snoovatar:e.user?.snoovatar,subredditId:I(e.subreddit.id),subredditName:e.subreddit.name,userId:e.user?.id?h(e.user.id):void 0,username:e.user?.name}}function Te(e,t,n){return{appName:e.appName,appSlug:e.appName,appVersion:e.appVersion,client:t,commentId:void 0,loid:void 0,postData:n?.developerData,postAuthorId:void 0,postId:_(e.postId),snoovatar:void 0,subredditId:I(e.subredditId),subredditName:e.subredditName,userId:e.userId?h(e.userId):void 0,username:void 0}}function he(e,t){if(e)return JSON.parse(e);let n=t?.slice(1);if(!n)throw Error("no bridge context");return JSON.parse(decodeURIComponent(n))}function ge(e){if(!(e.client!==m.ANDROID&&e.client!==m.IOS||!e.nativeVersion))return{name:e.client===m.ANDROID?"ANDROID":"IOS",version:e.nativeVersion}}async function Se(e,t,n,r,o){let i=new Request(r,o);return Ce(n,new URL(i.url))&&i.headers.set("Authorization",`Bearer ${e.token}`),await t(i)}function H(){globalThis.fetch=Se.bind(void 0,globalThis.devvit,globalThis.fetch,location)}function Ce(e,t){return t.origin===e.origin}var ye=new URL(R,O).toString();function be(e){let t=e?.trim();if(t)try{let n=new URL(t);if(n.pathname.endsWith(`/${w}`))return new URL(R,n).toString()}catch{}return ye}async function we(e,t){let n=e.data;if(n?.type!=="devvit-message"||n.data==null)return;let r=n.data;if(r.screenshotRequest==null||typeof r.id!="string")return;let o,i;try{let a=be(t),{captureScreenshot:s}=await import(a);o=await s()}catch(a){i=a instanceof Error?a.message:String(a)}f({type:u.EFFECT_SCREENSHOT_RESPONSE,screenshot:{dataUrl:o,error:i}},r.id)}function Z(e){addEventListener("message",t=>{we(t,e)})}function Y(e){let t=Re(e.target,e.isTrusted);f({type:u.EFFECT_TELEMETRY,telemetry:{event:t.event,click:t},analytics:t})}function Re(e,t){let{definition:n,elemTrackId:r}=_e(e,t);return{event:"click",definition:n,elemTrackId:r}}function _e(e,t){let n=Ie(e);if(!n)return{definition:"default",elemTrackId:void 0};let r="default";t&&globalThis.window.getComputedStyle(n)?.getPropertyValue("cursor")==="pointer"&&(r="strict");let o,i=n;for(;i;){if(o===void 0){let a=i.getAttribute("data-track-id");a?o=a:i.id&&(o=i.id)}if(t&&r==="default"&&De(i)&&(r="strict"),o!==void 0&&(!t||r==="strict"))break;i=i.parentElement}return{definition:r,elemTrackId:o}}function Ie(e){if(!e||typeof e!="object"||!("nodeType"in e))return;let t=e;return t.nodeType===1?t:t.parentElement??void 0}function De(e){return["A","BUTTON","CANVAS","INPUT","SELECT","TEXTAREA","LABEL"].includes(e.tagName)||["true","plaintext-only"].includes(e.getAttribute("contenteditable")??"")}var X=-1,x=function(e){addEventListener("pageshow",(function(t){t.persisted&&(X=t.timeStamp,e(t))}),!0)},N=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},L=function(){var e=N();return e&&e.activationStart||0},g=function(e,t){var n=N(),r="navigate";return X>=0?r="back-forward-cache":n&&(document.prerendering||L()>0?r="prerender":document.wasDiscarded?r="restore":n.type&&(r=n.type.replace(/_/g,"-"))),{name:e,value:t===void 0?-1:t,rating:"good",delta:0,entries:[],id:"v4-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},Fe=function(e,t,n){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(o){Promise.resolve().then((function(){t(o.getEntries())}))}));return r.observe(Object.assign({type:e,buffered:!0},n||{})),r}}catch{}},S=function(e,t,n,r){var o,i;return function(a){t.value>=0&&(a||r)&&((i=t.value-(o||0))||o===void 0)&&(o=t.value,t.delta=i,t.rating=(function(s,d){return s>d[1]?"poor":s>d[0]?"needs-improvement":"good"})(t.value,n),e(t))}},xe=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))};var v=-1,z=function(){return document.visibilityState!=="hidden"||document.prerendering?1/0:0},C=function(e){document.visibilityState==="hidden"&&v>-1&&(v=e.type==="visibilitychange"?e.timeStamp:0,Ne())},J=function(){addEventListener("visibilitychange",C,!0),addEventListener("prerenderingchange",C,!0)},Ne=function(){removeEventListener("visibilitychange",C,!0),removeEventListener("prerenderingchange",C,!0)},Le=function(){return v<0&&(v=z(),J(),x((function(){setTimeout((function(){v=z(),J()}),0)}))),{get firstHiddenTime(){return v}}},ee=function(e){document.prerendering?addEventListener("prerenderingchange",(function(){return e()}),!0):e()},K=[1800,3e3],te=function(e,t){t=t||{},ee((function(){var n,r=Le(),o=g("FCP"),i=Fe("paint",(function(a){a.forEach((function(s){s.name==="first-contentful-paint"&&(i.disconnect(),s.startTime<r.firstHiddenTime&&(o.value=Math.max(s.startTime-L(),0),o.entries.push(s),n(!0)))}))}));i&&(n=S(e,o,K,t.reportAllChanges),x((function(a){o=g("FCP"),n=S(e,o,K,t.reportAllChanges),xe((function(){o.value=performance.now()-a.timeStamp,n(!0)}))})))}))};var Q=[800,1800],Ae=function e(t){document.prerendering?ee((function(){return e(t)})):document.readyState!=="complete"?addEventListener("load",(function(){return e(t)}),!0):setTimeout(t,0)},ne=function(e,t){t=t||{};var n=g("TTFB"),r=S(e,n,Q,t.reportAllChanges);Ae((function(){var o=N();o&&(n.value=Math.max(o.responseStart-L(),0),n.entries=[o],r(!0),x((function(){n=g("TTFB",0),(r=S(e,n,Q,t.reportAllChanges))(!0)})))}))};function ie(){ke(),Me(),Oe()}function Me(){addEventListener("load",()=>{let e=performance.timeOrigin,t=performance.now(),n=performance.timeOrigin+t,r={event:"web-view-loaded",timeStart:e,timeEnd:n,duration:t};f({type:u.EFFECT_TELEMETRY,telemetry:{event:r.event,loaded:r},analytics:r})})}function Oe(){document.addEventListener("click",e=>{Y(e)},{capture:!0,passive:!0})}function A(){return performance.getEntriesByType("navigation")[0]}function b(e,t){return{spanName:e,timeStart:performance.timeOrigin,timeEnd:performance.timeOrigin+t}}function y(e){f({type:u.EFFECT_TELEMETRY,telemetry:{metrics:{metrics:e}}})}function Pe(e){if(e)return{spanName:"web_view_initialization",timeStart:e,timeEnd:performance.timeOrigin}}function Ue(e){let t=A(),n=t?.loadEventEnd;if(!(e==null||n==null||n<=0||!t||t.responseStart<=0))return{spanName:"web_view_render_duration",timeStart:performance.timeOrigin+t.responseStart,timeEnd:performance.timeOrigin+Math.max(e,n)}}function re(){let t=A()?.domInteractive;if(t)return b("web_view_time_to_interactive",t)}function ke(){let e=[],t,n=!1,r=()=>{if(n)return;let i=Ue(t);if(i)return n=!0,i},o=Pe(globalThis.devvit?.startTime);if(o&&e.push(o),te(i=>{let a=i.entries[0];if(!a)return;t=a.startTime;let s=b("web_view_first_contentful_paint",a.startTime),d=r();document.readyState==="complete"?y(d?[s,d]:[s]):(e.push(s),d&&e.push(d))}),ne(i=>{let a=i.entries[0];if(!a)return;let s=b("web_view_time_to_first_byte",a.responseStart),d=r();y(d?[s,d]:[s])}),document.readyState==="loading")globalThis.addEventListener("DOMContentLoaded",()=>{let i=re();i&&e.push(i)});else{let i=re();i&&e.push(i)}globalThis.addEventListener("load",()=>{let i=r();i&&e.push(i),e.push(b("web_view_load",performance.now())),y(e);let a=A();!i&&t!=null&&a?.responseStart&&!a.loadEventEnd&&globalThis.setTimeout(()=>{let s=r();s&&y([s])})})}function oe(){addEventListener("message",Ve)}function Ve(e){e.data?.type==="devvit-message"&&e.data?.data?.immersiveModeEvent&&q(e.data.data.immersiveModeEvent.immersiveMode)}$(document,location,window);ie();H();Z(U(document)??"");G();oe();})();
|
|
2
2
|
//# sourceMappingURL=devvit.v1.min.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["<define:globalThis.webViewScriptsVersion>", "../../../shared-types/dist/web-view-scripts-constants.js", "../../src/client.ts", "../../../protos/dist/json/devvit/ui/effects/web_view/v1alpha/context.js", "../../../shared-types/dist/assert.js", "../../../shared-types/dist/tid.js", "../../../protos/dist/json/devvit/ui/effects/v1alpha/effect.js", "../../../protos/dist/json/devvit/ui/effects/web_view/v1alpha/post_message.js", "../../../shared-types/dist/client/emit-effect.js", "../../../../node_modules/jwt-decode/build/esm/index.js", "../../src/token.ts", "../../src/devvit-global.ts", "../../src/fetch.ts", "../../src/screenshot-listener.ts", "../../../shared-types/dist/client/telemetry.js", "../../../../node_modules/web-vitals/dist/web-vitals.js", "../../src/telemetry.ts", "../../src/web-view-mode.ts", "../../src/devvit.v1.ts"],
|
|
4
|
-
"sourcesContent": ["{\"hash\":\"b299cfb\",\"version\":\"0.14.4-dev\"}", "/**\n * The `@devvit/client` version query parameter name the web view's document\n * script tag:\n *\n * <script src=\"https://webview.devvit.net/scripts/devvit.v1.min.js?clientVersion=1.2.3\"></script>\n *\n * The value is the version of `@devvit/client` bundled with the app.\n * `@devvit/client` may have runtime dependencies on\n * `@devvit/web-view-scripts` (`devvit.v1.min.js`) which is not bundled. The\n * client version can be used to specialize behavior to match the static\n * expectations of the `@devvit/client` version.\n */\nexport const clientVersionQueryParam = 'clientVersion';\n/** Bootstrap WebView script file name. */\nexport const devvitScriptFileName = 'devvit.v1.min.js';\n/** Screenshot capture WebView script file name. */\nexport const screenshotScriptFileName = 'screenshot.v1.min.js';\n/** CDN URL for the WebView bootstrap script. */\nexport const devvitScriptUrl = `https://webview.devvit.net/scripts/${devvitScriptFileName}`;\n", "import { clientVersionQueryParam } from '@devvit/shared-types/web-view-scripts-constants.js';\n\n/**\n * Queries the client version (eg, `'1.2.3'`) from the iframe document's script\n * tag:\n *\n * <script src=\"https://webview.devvit.net/scripts/devvit.v1.min.js?clientVersion=1.2.3\"></script>\n *\n * See `clientVersionQueryParam`.\n */\nexport function queryClientVersion(document: {\n readonly currentScript: { readonly src: string } | SVGScriptElement | null;\n}): string | undefined {\n if (document.currentScript && 'src' in document.currentScript)\n return (\n new URL(document.currentScript.src).searchParams.get(clientVersionQueryParam) ?? undefined\n );\n}\n\n/** Queries the current script `src` from the active document. */\nexport function queryCurrentScriptSrc(document: {\n readonly currentScript: { readonly src: string } | SVGScriptElement | null;\n}): string | undefined {\n if (document.currentScript && 'src' in document.currentScript) {\n return document.currentScript.src;\n }\n}\n", "/**\n * #context.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\n/** The user client hosting the web view. */\nexport var Client;\n(function (Client) {\n Client[Client[\"CLIENT_UNSPECIFIED\"] = 0] = \"CLIENT_UNSPECIFIED\";\n Client[Client[\"ANDROID\"] = 1] = \"ANDROID\";\n Client[Client[\"IOS\"] = 2] = \"IOS\";\n Client[Client[\"SHREDDIT\"] = 3] = \"SHREDDIT\";\n Client[Client[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(Client || (Client = {}));\n/**\n * Inline height of post.\n *\n * @deprecated\n */\nexport var Height;\n(function (Height) {\n Height[Height[\"HEIGHT_UNSPECIFIED\"] = 0] = \"HEIGHT_UNSPECIFIED\";\n Height[Height[\"REGULAR\"] = 1] = \"REGULAR\";\n Height[Height[\"TALL\"] = 2] = \"TALL\";\n Height[Height[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(Height || (Height = {}));\n", "export function assert(condition, msg) {\n if (!condition)\n throw Error(msg);\n}\n", "import { assert } from './assert.js';\n/**\n * - **C**omment (T1).\n * - **A**ccount (T2).\n * - **L**ink (T3).\n * - **M**essage (T4).\n * - **S**ubreddit (T5).\n * - **T**rophies (T6).\n */\nexport var T_PREFIX;\n(function (T_PREFIX) {\n T_PREFIX[\"COMMENT\"] = \"t1_\";\n T_PREFIX[\"ACCOUNT\"] = \"t2_\";\n T_PREFIX[\"LINK\"] = \"t3_\";\n T_PREFIX[\"MESSAGE\"] = \"t4_\";\n T_PREFIX[\"SUBREDDIT\"] = \"t5_\";\n T_PREFIX[\"AWARD\"] = \"t6_\";\n})(T_PREFIX || (T_PREFIX = {}));\n// type guards\nexport function isT1(id) {\n return !!id?.startsWith(T_PREFIX.COMMENT);\n}\nexport function isT2(id) {\n return !!id?.startsWith(T_PREFIX.ACCOUNT);\n}\nexport function isT3(id) {\n return !!id?.startsWith(T_PREFIX.LINK);\n}\nexport function isT4(id) {\n return !!id?.startsWith(T_PREFIX.MESSAGE);\n}\nexport function isT5(id) {\n return !!id?.startsWith(T_PREFIX.SUBREDDIT);\n}\nexport function isT6(id) {\n return !!id?.startsWith(T_PREFIX.AWARD);\n}\n// assertion functions\nexport function assertT1(id) {\n assert(isT1(id), `Expected comment id to start with ${T_PREFIX.COMMENT}, got ${id}`);\n}\nexport function assertT2(id) {\n assert(isT2(id), `Expected account id to start with ${T_PREFIX.ACCOUNT}, got ${id}`);\n}\nexport function assertT3(id) {\n assert(isT3(id), `Expected link id to start with ${T_PREFIX.LINK}, got ${id}`);\n}\nexport function assertT4(id) {\n assert(isT4(id), `Expected message id to start with ${T_PREFIX.MESSAGE}, got ${id}`);\n}\nexport function assertT5(id) {\n assert(isT5(id), `Expected subreddit id to start with ${T_PREFIX.SUBREDDIT}, got ${id}`);\n}\nexport function assertT6(id) {\n assert(isT6(id), `Expected award id to start with ${T_PREFIX.AWARD}, got ${id}`);\n}\n// factory functions\nexport function T1(id) {\n assertT1(id);\n return id;\n}\nexport function T2(id) {\n assertT2(id);\n return id;\n}\nexport function T3(id) {\n assertT3(id);\n return id;\n}\nexport function T4(id) {\n assertT4(id);\n return id;\n}\nexport function T5(id) {\n assertT5(id);\n return id;\n}\nexport function T6(id) {\n assertT6(id);\n return id;\n}\nexport function asTid(id) {\n if (isT1(id)) {\n return T1(id);\n }\n if (isT2(id)) {\n return T2(id);\n }\n if (isT3(id)) {\n return T3(id);\n }\n if (isT4(id)) {\n return T4(id);\n }\n if (isT5(id)) {\n return T5(id);\n }\n if (isT6(id)) {\n return T6(id);\n }\n throw new Error(`Expected thing id to start with ${Object.values(T_PREFIX).join(', ')} got ${id}}`);\n}\n", "/**\n * #effect.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nexport var EffectType;\n(function (EffectType) {\n /**\n * EFFECT_REALTIME_SUB - Notify client to synchronize its realtime subscriptions\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_REALTIME_SUB\"] = 0] = \"EFFECT_REALTIME_SUB\";\n /**\n * EFFECT_RERENDER_UI - Trigger a re-render for apps that have visible UI\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_RERENDER_UI\"] = 1] = \"EFFECT_RERENDER_UI\";\n /**\n * EFFECT_RELOAD_PART - Notify the client that parts of a subreddit, post, or comment should be reloaded\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_RELOAD_PART\"] = 2] = \"EFFECT_RELOAD_PART\";\n /** EFFECT_SHOW_FORM - Display a user input form */\n EffectType[EffectType[\"EFFECT_SHOW_FORM\"] = 3] = \"EFFECT_SHOW_FORM\";\n /** EFFECT_SHOW_TOAST - Display a transient toast message */\n EffectType[EffectType[\"EFFECT_SHOW_TOAST\"] = 4] = \"EFFECT_SHOW_TOAST\";\n /** EFFECT_NAVIGATE_TO_URL - Notify the client to navigate to a URL */\n EffectType[EffectType[\"EFFECT_NAVIGATE_TO_URL\"] = 5] = \"EFFECT_NAVIGATE_TO_URL\";\n /**\n * EFFECT_SET_INTERVALS - This updates the list of active timers.\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_SET_INTERVALS\"] = 7] = \"EFFECT_SET_INTERVALS\";\n /**\n * EFFECT_CREATE_ORDER - This starts a purchase flow\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_CREATE_ORDER\"] = 8] = \"EFFECT_CREATE_ORDER\";\n /**\n * EFFECT_WEB_VIEW - Control and communicate with WebViews\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_WEB_VIEW\"] = 9] = \"EFFECT_WEB_VIEW\";\n /**\n * EFFECT_CAN_RUN_AS_USER - Check if the app can execute some actions as the user\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_CAN_RUN_AS_USER\"] = 11] = \"EFFECT_CAN_RUN_AS_USER\";\n /**\n * EFFECT_TELEMETRY - Statistical data event for analytics.\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_TELEMETRY\"] = 12] = \"EFFECT_TELEMETRY\";\n /**\n * EFFECT_UPDATE_REQUEST_CONTEXT - Request an updated signed request context\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_UPDATE_REQUEST_CONTEXT\"] = 13] = \"EFFECT_UPDATE_REQUEST_CONTEXT\";\n /**\n * EFFECT_SCREENSHOT_RESPONSE - Send the screenshot response from web view to the client\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_SCREENSHOT_RESPONSE\"] = 14] = \"EFFECT_SCREENSHOT_RESPONSE\";\n /**\n * EFFECT_LOGIN_PROMPT - Request a login/signup prompt\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_LOGIN_PROMPT\"] = 15] = \"EFFECT_LOGIN_PROMPT\";\n /**\n * EFFECT_PROMOTED_TELEMETRY - Emit an app-defined promoted telemetry event from a web view, such as\n * custom_event_1 for a promoted app interaction.\n */\n EffectType[EffectType[\"EFFECT_PROMOTED_TELEMETRY\"] = 16] = \"EFFECT_PROMOTED_TELEMETRY\";\n EffectType[EffectType[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(EffectType || (EffectType = {}));\n", "/**\n * #post_message.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\n/**\n * Blocks only.\n *\n * @deprecated\n */\nexport var WebViewInternalMessageScope;\n(function (WebViewInternalMessageScope) {\n /** CLIENT - Message is intended for the client only */\n WebViewInternalMessageScope[WebViewInternalMessageScope[\"CLIENT\"] = 0] = \"CLIENT\";\n WebViewInternalMessageScope[WebViewInternalMessageScope[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(WebViewInternalMessageScope || (WebViewInternalMessageScope = {}));\n", "import { EffectType } from '@devvit/protos/json/devvit/ui/effects/v1alpha/effect.js';\nimport { WebViewInternalMessageScope, } from '@devvit/protos/json/devvit/ui/effects/web_view/v1alpha/post_message.js';\n/** `WebViewInternalMessage.type`. */\nexport const webViewInternalMessageType = 'devvit-internal';\n/**\n * Emits an effect to the parent window returns immediately.\n *\n * @param effect - The effect to be emitted to the parent window\n * @param requestId - Optional request id used to correlate request/response messages\n * @description\n * This function handles effects that don't require a response, and can also\n * set a request id when replying to client-originated requests.\n */\nexport const emitEffect = (effect, requestId) => {\n const message = {\n ...effect,\n realtimeEffect: effect.realtime, // to-do: remove deprecated field.\n id: requestId,\n scope: WebViewInternalMessageScope.CLIENT,\n type: webViewInternalMessageType,\n };\n // For temporary backward compatibility, we set both `message.effect_type` above, and `effect` below\n // Once mobile clients are updated to consume the strongly typed properties above, we can remove this block\n // *Do not* add new effects here, use the strongly typed properties above\n if (effect.showToast || effect.navigateToUrl) {\n message.effect = effect;\n }\n parent.postMessage(message, '*');\n};\n/**\n * Emits an effect to the parent window and returns a promise that resolves with the response message.\n *\n * @param effect - The effect to be emitted to the parent window\n * @returns A promise that resolves with the response message\n *\n * @description\n * This function handles effects that require a response.\n */\nexport const emitEffectWithResponse = (effect) => {\n return new Promise((resolve) => {\n const message = {\n ...effect,\n realtimeEffect: effect.realtime, // to-do: remove deprecated field.\n scope: WebViewInternalMessageScope.CLIENT,\n type: webViewInternalMessageType,\n };\n // For temporary backward compatibility, we set both `message.effect_type` above, and `effect` below\n // Once mobile clients are updated to consume the strongly typed properties above, we can remove this block\n // *Do not* add new effects here, use the strongly typed properties above\n if (effect.showForm || effect.type === EffectType.EFFECT_CAN_RUN_AS_USER) {\n message.effect = effect;\n }\n const id = crypto.randomUUID();\n message.id = id;\n const handleEffect = (event) => {\n if (event.data?.type === 'devvit-message' && event.data?.data?.id === id) {\n resolve(event.data.data);\n removeEventListener('message', handleEffect);\n }\n };\n addEventListener('message', handleEffect);\n // Post message to the parent window, handled by client web view component\n parent.postMessage(message, '*');\n });\n};\n", "export class InvalidTokenError extends Error {\n}\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n }));\n}\nfunction base64UrlDecode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"base64 string is not of the correct length\");\n }\n try {\n return b64DecodeUnicode(output);\n }\n catch (err) {\n return atob(output);\n }\n}\nexport function jwtDecode(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\n }\n options || (options = {});\n const pos = options.header === true ? 0 : 1;\n const part = token.split(\".\")[pos];\n if (typeof part !== \"string\") {\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\n }\n let decoded;\n try {\n decoded = base64UrlDecode(part);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);\n }\n try {\n return JSON.parse(decoded);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);\n }\n}\n", "import type { RequestContext } from '@devvit/protos/json/devvit/platform/v1/request_context.js';\nimport { EffectType } from '@devvit/protos/json/devvit/ui/effects/v1alpha/effect.js';\nimport { emitEffectWithResponse } from '@devvit/shared-types/client/emit-effect.js';\nimport type { WebbitToken } from '@devvit/shared-types/webbit.js';\nimport { jwtDecode, type JwtPayload } from 'jwt-decode';\n\nimport { updateToken } from './devvit-global.js';\n\n/**\n * Claims payload extracted from a Devvit JWT.\n * This represents a JSON Web Token (JWT) that holds the `devvit` platform request context\n */\ntype ContextClaims = JwtPayload & { devvit: RequestContext };\n\nexport function decodeToken(token: string | undefined): RequestContext | undefined {\n if (!token) return;\n\n try {\n return jwtDecode<ContextClaims>(token)?.devvit;\n } catch (err) {\n throw Error('token decode failure', { cause: err });\n }\n}\n\nexport function initToken(): void {\n setInterval(refreshToken, 60_000);\n}\n\n/** @internal */\nexport async function refreshToken(): Promise<void> {\n // Check if the token is about to expire in the next 5 minutes\n const { exp: expiresAt } = jwtDecode<ContextClaims>(globalThis.devvit.token);\n\n if (expiresAt && expiresAt - Date.now() / 1000 > 300) {\n return;\n }\n\n await requestTokenRefresh();\n}\n\nexport async function requestTokenRefresh(): Promise<void> {\n const response = await emitEffectWithResponse({\n type: EffectType.EFFECT_UPDATE_REQUEST_CONTEXT,\n updateRequestContext: {},\n });\n\n if (!response?.updateRequestContext?.signedRequestContext) {\n console.error('Failed to refresh token');\n return;\n }\n\n updateToken(response.updateRequestContext.signedRequestContext as WebbitToken);\n}\n", "import type { RequestContext } from '@devvit/protos/json/devvit/platform/v1/request_context.js';\nimport type { DevvitPostData } from '@devvit/protos/json/devvit/ui/effects/web_view/v1alpha/context.js';\nimport {\n type BridgeContext,\n Client as ClientName,\n type WebViewClientData,\n type WebViewContext,\n} from '@devvit/protos/json/devvit/ui/effects/web_view/v1alpha/context.js';\nimport type { WebViewImmersiveMode } from '@devvit/protos/json/devvit/ui/effects/web_view/v1alpha/immersive_mode.js';\nimport type { ConsentStatus } from '@devvit/protos/json/reddit/devvit/app_permission/v1/app_permission.js';\nimport type { Context } from '@devvit/shared-types/client/client-context.js';\nimport type {\n DevvitGlobal,\n WebViewScriptsVersion,\n} from '@devvit/shared-types/client/devvit-global.js';\nimport type { Client } from '@devvit/shared-types/shared/client.js';\nimport { T2, T3, T5 } from '@devvit/shared-types/tid.js';\nimport { type WebbitToken } from '@devvit/shared-types/webbit.js';\n\nimport { queryClientVersion } from './client.js';\nimport { decodeToken, requestTokenRefresh } from './token.js';\n\ndeclare global {\n // eslint-disable-next-line no-var\n var devvit: DevvitGlobal;\n /** Defined by build.ts. */\n // eslint-disable-next-line no-var\n var webViewScriptsVersion: Readonly<WebViewScriptsVersion>;\n}\n\n/** @internal */\nexport const initDevvitGlobal = (\n document: { readonly currentScript: { readonly src: string } | SVGScriptElement | null },\n location: { readonly hash: string },\n window: { readonly name: string }\n): void => {\n const bridge = getBridgeContext(window.name, location.hash);\n\n const client = getClient(bridge);\n\n let appPermissionState = bridge?.appPermissionState;\n /**\n * Android versions older than this do not support runAsUser correctly, so we\n * suppress the permission state to allow the app to run as if the feature\n * wasn't present (failing open).\n *\n * Supported after 2026.05.x\n */\n if (client?.name === 'ANDROID') {\n if (\n client.version.yyyy < 2026 ||\n (client.version.yyyy === 2026 && client.version.release <= 5)\n ) {\n appPermissionState = undefined;\n }\n }\n\n const reqCtx = decodeToken(bridge.signedRequestContext);\n\n let context;\n if (reqCtx) context = contextFromRequestContext(reqCtx, client, bridge.postData);\n else if (bridge.webViewContext)\n context = contextFromWebViewContext(bridge.webViewContext, client, bridge.postData);\n if (!context) throw Error('no context');\n\n // to-do: expose `devvitDebug`, `shredditVersion`.\n\n const clientData: WebViewClientData | undefined = bridge.webViewClientData;\n globalThis.devvit = {\n context,\n dependencies: {\n client: queryClientVersion(document),\n webViewScripts: globalThis.webViewScriptsVersion,\n },\n entrypoints: clientData?.appConfig?.entrypoints ?? {},\n experiments: clientData?.featureConfig?.experiments ?? {},\n share: bridge?.shareParam ? { userData: bridge?.shareParam.userData } : undefined,\n adPayload: bridge?.adPayload,\n appPermissionState,\n token: (bridge.signedRequestContext || bridge.webbitToken) as WebbitToken,\n webViewMode: bridge?.viewMode,\n startTime: bridge?.startTime ?? undefined,\n refreshToken: requestTokenRefresh,\n };\n};\n\nexport function updateConsentStatus(consentStatus: ConsentStatus): void {\n if (!globalThis.devvit.appPermissionState) return;\n globalThis.devvit.appPermissionState.consentStatus = consentStatus;\n}\n\nexport function updateMode(mode: WebViewImmersiveMode): void {\n devvit.webViewMode = mode;\n}\n\nexport function updateToken(token: WebbitToken): void {\n globalThis.devvit.token = token;\n}\n\n/** @internal */\nexport function contextFromRequestContext(\n reqCtx: Readonly<RequestContext>,\n client: Client | undefined,\n postData: Readonly<DevvitPostData> | undefined\n): Context {\n if (!reqCtx.app) throw Error('no RequestContext.app');\n if (!reqCtx.post) throw Error('no RequestContext.post');\n if (!reqCtx.subreddit) throw Error('no RequestContext.subreddit');\n return {\n appName: reqCtx.app.name,\n appSlug: reqCtx.app.slug,\n appVersion: reqCtx.app.version,\n client,\n commentId: undefined,\n loid:\n reqCtx.user?.devvitLoid ?? (reqCtx.user as { devvit_loid?: string } | undefined)?.devvit_loid,\n postAuthorId: T2(reqCtx.post.author),\n postData: postData?.developerData,\n postId: T3(reqCtx.post.id),\n snoovatar: reqCtx.user?.snoovatar,\n subredditId: T5(reqCtx.subreddit.id),\n subredditName: reqCtx.subreddit.name,\n userId: reqCtx.user?.id ? T2(reqCtx.user.id) : undefined,\n username: reqCtx.user?.name,\n };\n}\n\n/** @internal */\nexport function contextFromWebViewContext(\n webViewCtx: Readonly<WebViewContext>,\n client: Client | undefined,\n postData: Readonly<DevvitPostData> | undefined\n): Context {\n return {\n appName: webViewCtx.appName,\n appSlug: webViewCtx.appName,\n appVersion: webViewCtx.appVersion,\n client,\n commentId: undefined,\n loid: undefined,\n postData: postData?.developerData,\n postAuthorId: undefined,\n postId: T3(webViewCtx.postId),\n snoovatar: undefined,\n subredditId: T5(webViewCtx.subredditId),\n subredditName: webViewCtx.subredditName,\n userId: webViewCtx.userId ? T2(webViewCtx.userId) : undefined,\n username: undefined,\n };\n}\n\n/**\n * Extracts the BridgeContext from the hash.\n * @internal\n */\nexport function getBridgeContext(name: string | undefined, hash: string): BridgeContext {\n if (name) return JSON.parse(name);\n const json = hash?.slice(1); // Strip the leading '#' from the hash\n if (!json) throw Error('no bridge context');\n return JSON.parse(decodeURIComponent(json));\n}\n\n/** @internal */\nexport function getClient(bridge: Readonly<BridgeContext>): Client | undefined {\n if (\n (bridge.client !== ClientName.ANDROID && bridge.client !== ClientName.IOS) ||\n !bridge.nativeVersion\n )\n return;\n return {\n name: bridge.client === ClientName.ANDROID ? 'ANDROID' : ('IOS' as const),\n version: bridge.nativeVersion,\n };\n}\n", "import type { DevvitGlobal } from '@devvit/shared-types/client/devvit-global.js';\n\n/** Injects an auth token into /api/ requests. */\nexport async function fetch(\n devvit: Readonly<DevvitGlobal>,\n globalFetch: typeof globalThis.fetch,\n location: Readonly<Location>,\n input: RequestInfo | URL,\n init?: RequestInit\n): Promise<Response> {\n const req = new Request(input, init);\n if (isSameSite(location, new URL(req.url)))\n req.headers.set('Authorization', `Bearer ${devvit.token}`);\n // to-do: pass devvit-debug from BridgeContext.\n return await globalFetch(req);\n}\n\nexport function initFetch(): void {\n globalThis.fetch = fetch.bind(undefined, globalThis.devvit, globalThis.fetch, location);\n}\n\n/** @internal */\nexport function isSameSite(location: Readonly<Location>, url: URL): boolean {\n return url.origin === location.origin;\n}\n", "import { EffectType } from '@devvit/protos/json/devvit/ui/effects/v1alpha/effect.js';\nimport type { WebViewMessageEvent_MessageData } from '@devvit/protos/json/devvit/ui/events/v1alpha/web_view.js';\nimport { emitEffect } from '@devvit/shared-types/client/emit-effect.js';\nimport {\n devvitScriptFileName,\n devvitScriptUrl,\n screenshotScriptFileName,\n} from '@devvit/shared-types/web-view-scripts-constants.js';\n\nconst fallbackScriptUrl = new URL(screenshotScriptFileName, devvitScriptUrl).toString();\n\nexport function getScreenshotModuleUrl(scriptSrc: string | undefined): string {\n const trimmedScriptSrc = scriptSrc?.trim();\n if (trimmedScriptSrc) {\n try {\n const scriptUrl = new URL(trimmedScriptSrc);\n if (scriptUrl.pathname.endsWith(`/${devvitScriptFileName}`)) {\n return new URL(screenshotScriptFileName, scriptUrl).toString();\n }\n } catch {\n // no-op, fall through to return below\n }\n }\n return fallbackScriptUrl;\n}\n\nasync function onMessage(\n event: MessageEvent<WebViewMessageEvent_MessageData>,\n scriptSrc: string | undefined\n): Promise<void> {\n const envelope = event.data;\n if (envelope?.type !== 'devvit-message' || envelope.data == null) return;\n const payload = envelope.data;\n if (payload.screenshotRequest == null) {\n return;\n }\n if (typeof payload.id !== 'string') {\n return;\n }\n\n let dataUrl: string | undefined;\n let errorMessage: string | undefined;\n try {\n const screenshotModulePath = getScreenshotModuleUrl(scriptSrc);\n // eslint-disable-next-line\n const { captureScreenshot } = await import(screenshotModulePath);\n dataUrl = await captureScreenshot();\n } catch (error) {\n errorMessage = error instanceof Error ? error.message : String(error);\n }\n emitEffect(\n { type: EffectType.EFFECT_SCREENSHOT_RESPONSE, screenshot: { dataUrl, error: errorMessage } },\n payload.id\n );\n}\n\nexport function initScreenshotRequestListener(scriptSrc: string): void {\n addEventListener('message', (event) => {\n void onMessage(event, scriptSrc);\n });\n}\n", "import { EffectType } from '@devvit/protos/json/devvit/ui/effects/v1alpha/effect.js';\nimport { emitEffect } from './emit-effect.js';\nexport function emitTelemetryClickEffect(event) {\n const click = TelemetryClickPayload(event.target, event.isTrusted);\n void emitEffect({\n type: EffectType.EFFECT_TELEMETRY,\n telemetry: { event: click.event, click },\n // to-do: remove once all clients support `telemetry`. Deprecated on\n // 2025-11-24.\n analytics: click,\n });\n}\n/**\n * This function is expensive. It does heavy DOM work.\n * @internal\n */\nexport function TelemetryClickPayload(eventTarget, isTrusted) {\n const { definition, elemTrackId } = analyzeClickTarget(eventTarget, isTrusted);\n return { event: 'click', definition, elemTrackId };\n}\nfunction analyzeClickTarget(eventTarget, isTrusted) {\n const targetElement = getTargetElement(eventTarget);\n if (!targetElement) {\n return { definition: 'default', elemTrackId: undefined };\n }\n let definition = 'default';\n if (isTrusted) {\n const computedStyles = globalThis.window.getComputedStyle(targetElement);\n if (computedStyles?.getPropertyValue('cursor') === 'pointer') {\n definition = 'strict';\n }\n }\n let elemTrackId;\n let currentElement = targetElement;\n while (currentElement) {\n if (elemTrackId === undefined) {\n const dataTrackId = currentElement.getAttribute('data-track-id');\n if (dataTrackId) {\n elemTrackId = dataTrackId;\n }\n else if (currentElement.id) {\n elemTrackId = currentElement.id;\n }\n }\n if (isTrusted && definition === 'default' && elementIsStrictClickTarget(currentElement)) {\n definition = 'strict';\n }\n if (elemTrackId !== undefined && (!isTrusted || definition === 'strict')) {\n break;\n }\n currentElement = currentElement.parentElement;\n }\n return { definition, elemTrackId };\n}\nfunction getTargetElement(eventTarget) {\n if (!eventTarget || typeof eventTarget !== 'object' || !('nodeType' in eventTarget)) {\n return undefined;\n }\n const node = eventTarget;\n return node.nodeType === 1 ? node : (node.parentElement ?? undefined);\n}\nfunction elementIsStrictClickTarget(element) {\n const STRICT_CLICK_TAGNAMES = ['A', 'BUTTON', 'CANVAS', 'INPUT', 'SELECT', 'TEXTAREA', 'LABEL'];\n return (STRICT_CLICK_TAGNAMES.includes(element.tagName) ||\n ['true', 'plaintext-only'].includes(element.getAttribute('contenteditable') ?? ''));\n}\n", "var e,n,t,r,i,o=-1,a=function(e){addEventListener(\"pageshow\",(function(n){n.persisted&&(o=n.timeStamp,e(n))}),!0)},c=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType(\"navigation\")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},u=function(){var e=c();return e&&e.activationStart||0},f=function(e,n){var t=c(),r=\"navigate\";o>=0?r=\"back-forward-cache\":t&&(document.prerendering||u()>0?r=\"prerender\":document.wasDiscarded?r=\"restore\":t.type&&(r=t.type.replace(/_/g,\"-\")));return{name:e,value:void 0===n?-1:n,rating:\"good\",delta:0,entries:[],id:\"v4-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},s=function(e,n,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(e){Promise.resolve().then((function(){n(e.getEntries())}))}));return r.observe(Object.assign({type:e,buffered:!0},t||{})),r}}catch(e){}},d=function(e,n,t,r){var i,o;return function(a){n.value>=0&&(a||r)&&((o=n.value-(i||0))||void 0===i)&&(i=n.value,n.delta=o,n.rating=function(e,n){return e>n[1]?\"poor\":e>n[0]?\"needs-improvement\":\"good\"}(n.value,t),e(n))}},l=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},p=function(e){document.addEventListener(\"visibilitychange\",(function(){\"hidden\"===document.visibilityState&&e()}))},v=function(e){var n=!1;return function(){n||(e(),n=!0)}},m=-1,h=function(){return\"hidden\"!==document.visibilityState||document.prerendering?1/0:0},g=function(e){\"hidden\"===document.visibilityState&&m>-1&&(m=\"visibilitychange\"===e.type?e.timeStamp:0,T())},y=function(){addEventListener(\"visibilitychange\",g,!0),addEventListener(\"prerenderingchange\",g,!0)},T=function(){removeEventListener(\"visibilitychange\",g,!0),removeEventListener(\"prerenderingchange\",g,!0)},E=function(){return m<0&&(m=h(),y(),a((function(){setTimeout((function(){m=h(),y()}),0)}))),{get firstHiddenTime(){return m}}},C=function(e){document.prerendering?addEventListener(\"prerenderingchange\",(function(){return e()}),!0):e()},b=[1800,3e3],S=function(e,n){n=n||{},C((function(){var t,r=E(),i=f(\"FCP\"),o=s(\"paint\",(function(e){e.forEach((function(e){\"first-contentful-paint\"===e.name&&(o.disconnect(),e.startTime<r.firstHiddenTime&&(i.value=Math.max(e.startTime-u(),0),i.entries.push(e),t(!0)))}))}));o&&(t=d(e,i,b,n.reportAllChanges),a((function(r){i=f(\"FCP\"),t=d(e,i,b,n.reportAllChanges),l((function(){i.value=performance.now()-r.timeStamp,t(!0)}))})))}))},L=[.1,.25],w=function(e,n){n=n||{},S(v((function(){var t,r=f(\"CLS\",0),i=0,o=[],c=function(e){e.forEach((function(e){if(!e.hadRecentInput){var n=o[0],t=o[o.length-1];i&&e.startTime-t.startTime<1e3&&e.startTime-n.startTime<5e3?(i+=e.value,o.push(e)):(i=e.value,o=[e])}})),i>r.value&&(r.value=i,r.entries=o,t())},u=s(\"layout-shift\",c);u&&(t=d(e,r,L,n.reportAllChanges),p((function(){c(u.takeRecords()),t(!0)})),a((function(){i=0,r=f(\"CLS\",0),t=d(e,r,L,n.reportAllChanges),l((function(){return t()}))})),setTimeout(t,0))})))},A=0,I=1/0,P=0,M=function(e){e.forEach((function(e){e.interactionId&&(I=Math.min(I,e.interactionId),P=Math.max(P,e.interactionId),A=P?(P-I)/7+1:0)}))},k=function(){return e?A:performance.interactionCount||0},F=function(){\"interactionCount\"in performance||e||(e=s(\"event\",M,{type:\"event\",buffered:!0,durationThreshold:0}))},D=[],x=new Map,R=0,B=function(){var e=Math.min(D.length-1,Math.floor((k()-R)/50));return D[e]},H=[],q=function(e){if(H.forEach((function(n){return n(e)})),e.interactionId||\"first-input\"===e.entryType){var n=D[D.length-1],t=x.get(e.interactionId);if(t||D.length<10||e.duration>n.latency){if(t)e.duration>t.latency?(t.entries=[e],t.latency=e.duration):e.duration===t.latency&&e.startTime===t.entries[0].startTime&&t.entries.push(e);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};x.set(r.id,r),D.push(r)}D.sort((function(e,n){return n.latency-e.latency})),D.length>10&&D.splice(10).forEach((function(e){return x.delete(e.id)}))}}},O=function(e){var n=self.requestIdleCallback||self.setTimeout,t=-1;return e=v(e),\"hidden\"===document.visibilityState?e():(t=n(e),p(e)),t},N=[200,500],j=function(e,n){\"PerformanceEventTiming\"in self&&\"interactionId\"in PerformanceEventTiming.prototype&&(n=n||{},C((function(){var t;F();var r,i=f(\"INP\"),o=function(e){O((function(){e.forEach(q);var n=B();n&&n.latency!==i.value&&(i.value=n.latency,i.entries=n.entries,r())}))},c=s(\"event\",o,{durationThreshold:null!==(t=n.durationThreshold)&&void 0!==t?t:40});r=d(e,i,N,n.reportAllChanges),c&&(c.observe({type:\"first-input\",buffered:!0}),p((function(){o(c.takeRecords()),r(!0)})),a((function(){R=k(),D.length=0,x.clear(),i=f(\"INP\"),r=d(e,i,N,n.reportAllChanges)})))})))},_=[2500,4e3],z={},G=function(e,n){n=n||{},C((function(){var t,r=E(),i=f(\"LCP\"),o=function(e){n.reportAllChanges||(e=e.slice(-1)),e.forEach((function(e){e.startTime<r.firstHiddenTime&&(i.value=Math.max(e.startTime-u(),0),i.entries=[e],t())}))},c=s(\"largest-contentful-paint\",o);if(c){t=d(e,i,_,n.reportAllChanges);var m=v((function(){z[i.id]||(o(c.takeRecords()),c.disconnect(),z[i.id]=!0,t(!0))}));[\"keydown\",\"click\"].forEach((function(e){addEventListener(e,(function(){return O(m)}),{once:!0,capture:!0})})),p(m),a((function(r){i=f(\"LCP\"),t=d(e,i,_,n.reportAllChanges),l((function(){i.value=performance.now()-r.timeStamp,z[i.id]=!0,t(!0)}))}))}}))},J=[800,1800],K=function e(n){document.prerendering?C((function(){return e(n)})):\"complete\"!==document.readyState?addEventListener(\"load\",(function(){return e(n)}),!0):setTimeout(n,0)},Q=function(e,n){n=n||{};var t=f(\"TTFB\"),r=d(e,t,J,n.reportAllChanges);K((function(){var i=c();i&&(t.value=Math.max(i.responseStart-u(),0),t.entries=[i],r(!0),a((function(){t=f(\"TTFB\",0),(r=d(e,t,J,n.reportAllChanges))(!0)})))}))},U={passive:!0,capture:!0},V=new Date,W=function(e,i){n||(n=i,t=e,r=new Date,Z(removeEventListener),X())},X=function(){if(t>=0&&t<r-V){var e={entryType:\"first-input\",name:n.type,target:n.target,cancelable:n.cancelable,startTime:n.timeStamp,processingStart:n.timeStamp+t};i.forEach((function(n){n(e)})),i=[]}},Y=function(e){if(e.cancelable){var n=(e.timeStamp>1e12?new Date:performance.now())-e.timeStamp;\"pointerdown\"==e.type?function(e,n){var t=function(){W(e,n),i()},r=function(){i()},i=function(){removeEventListener(\"pointerup\",t,U),removeEventListener(\"pointercancel\",r,U)};addEventListener(\"pointerup\",t,U),addEventListener(\"pointercancel\",r,U)}(n,e):W(n,e)}},Z=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(n){return e(n,Y,U)}))},$=[100,300],ee=function(e,r){r=r||{},C((function(){var o,c=E(),u=f(\"FID\"),l=function(e){e.startTime<c.firstHiddenTime&&(u.value=e.processingStart-e.startTime,u.entries.push(e),o(!0))},m=function(e){e.forEach(l)},h=s(\"first-input\",m);o=d(e,u,$,r.reportAllChanges),h&&(p(v((function(){m(h.takeRecords()),h.disconnect()}))),a((function(){var a;u=f(\"FID\"),o=d(e,u,$,r.reportAllChanges),i=[],t=-1,n=null,Z(addEventListener),a=l,i.push(a),X()})))}))};export{L as CLSThresholds,b as FCPThresholds,$ as FIDThresholds,N as INPThresholds,_ as LCPThresholds,J as TTFBThresholds,w as onCLS,S as onFCP,ee as onFID,j as onINP,G as onLCP,Q as onTTFB};\n", "import { EffectType } from '@devvit/protos/json/devvit/ui/effects/v1alpha/effect.js';\nimport type {\n WebViewTelemetryLoadedEffect,\n WebViewTelemetryMetric,\n} from '@devvit/protos/json/devvit/ui/effects/web_view/v1alpha/telemetry.js';\nimport { emitEffect } from '@devvit/shared-types/client/emit-effect.js';\nimport { emitTelemetryClickEffect } from '@devvit/shared-types/client/telemetry.js';\nimport { onFCP, onTTFB } from 'web-vitals';\n\n/**\n * `initTelemetry()` is added to all Devvit apps which use web views.\n *\n * This sends interaction events to the parent window via postMessage.\n * These metrics are used to inform app performance and feed ranking.\n */\nexport function initTelemetry(): void {\n initPerformanceMonitoring();\n initLoadedEvent();\n initClickEvent();\n}\n\nfunction initLoadedEvent(): void {\n addEventListener('load', () => {\n const timeStart = performance.timeOrigin;\n const duration = performance.now();\n const timeEnd = performance.timeOrigin + duration;\n const loaded: WebViewTelemetryLoadedEffect = {\n event: 'web-view-loaded',\n timeStart,\n timeEnd,\n duration,\n };\n\n void emitEffect({\n type: EffectType.EFFECT_TELEMETRY,\n telemetry: { event: loaded.event, loaded },\n // to-do: remove once all clients support `telemetry`. Deprecated on\n // 2025-11-24.\n analytics: loaded,\n });\n });\n}\n\nfunction initClickEvent(): void {\n document.addEventListener(\n 'click',\n (event) => {\n emitTelemetryClickEffect(event);\n },\n { capture: true, passive: true }\n );\n}\n\nfunction getNavigationTiming(): PerformanceNavigationTiming | undefined {\n return performance.getEntriesByType('navigation')[0] as PerformanceNavigationTiming | undefined;\n}\n\nfunction buildTimeOriginMetric(spanName: string, offset: number): WebViewTelemetryMetric {\n return {\n spanName,\n timeStart: performance.timeOrigin,\n timeEnd: performance.timeOrigin + offset,\n };\n}\n\nfunction emitMetrics(metrics: WebViewTelemetryMetric[]): void {\n emitEffect({\n type: EffectType.EFFECT_TELEMETRY,\n telemetry: { metrics: { metrics } },\n });\n}\n\n/**\n * Measures the native startup window between the app launch (`startTime`) and the\n * moment the WebView began loading the page (`performance.timeOrigin`). This gap\n * covers WebView inflation, bridge setup, data fetching, and navigation triggers,\n * none of which is reflected in the in-page performance offsets.\n */\nfunction measureWebViewInitialization(\n startTime: number | undefined\n): WebViewTelemetryMetric | undefined {\n if (!startTime) {\n return undefined;\n }\n\n return {\n spanName: 'web_view_initialization',\n timeStart: startTime,\n timeEnd: performance.timeOrigin,\n };\n}\n\n// Match the existing app-readiness signal by ending at the slower of first paint and page load.\nfunction measureRenderDuration(\n firstContentfulPaintOffset: number | undefined\n): WebViewTelemetryMetric | undefined {\n const navigationTiming = getNavigationTiming();\n const loadEventEndOffset = navigationTiming?.loadEventEnd;\n\n if (\n firstContentfulPaintOffset == null ||\n loadEventEndOffset == null ||\n loadEventEndOffset <= 0 ||\n !navigationTiming ||\n navigationTiming.responseStart <= 0\n ) {\n return undefined;\n }\n\n return {\n spanName: 'web_view_render_duration',\n timeStart: performance.timeOrigin + navigationTiming.responseStart,\n timeEnd: performance.timeOrigin + Math.max(firstContentfulPaintOffset, loadEventEndOffset),\n };\n}\n\n/**\n * Measures the DOM interactive milestone emitted under the historical TTI span name.\n */\nfunction measureTti(): WebViewTelemetryMetric | undefined {\n const navTiming = getNavigationTiming();\n const ttiTime = navTiming?.domInteractive;\n\n if (!ttiTime) {\n return undefined;\n }\n\n return buildTimeOriginMetric('web_view_time_to_interactive', ttiTime);\n}\n\nfunction initPerformanceMonitoring(): void {\n const telemetryMetrics: WebViewTelemetryMetric[] = [];\n let firstContentfulPaintOffset: number | undefined;\n // FCP, TTFB, and load can complete the render-duration measurement.\n let renderDurationSent = false;\n\n const takeRenderDuration = (): WebViewTelemetryMetric | undefined => {\n if (renderDurationSent) return undefined;\n\n const renderDuration = measureRenderDuration(firstContentfulPaintOffset);\n if (!renderDuration) return undefined;\n\n renderDurationSent = true;\n return renderDuration;\n };\n\n const initialization = measureWebViewInitialization(globalThis.devvit?.startTime);\n if (initialization) telemetryMetrics.push(initialization);\n\n onFCP((metric) => {\n const firstContentfulPaintEntry = metric.entries[0];\n if (!firstContentfulPaintEntry) return;\n\n firstContentfulPaintOffset = firstContentfulPaintEntry.startTime;\n const fcp = buildTimeOriginMetric(\n 'web_view_first_contentful_paint',\n firstContentfulPaintEntry.startTime\n );\n const renderDuration = takeRenderDuration();\n if (document.readyState === 'complete') {\n // load may already have emitted its batch, so late FCP emits standalone.\n emitMetrics(renderDuration ? [fcp, renderDuration] : [fcp]);\n } else {\n telemetryMetrics.push(fcp);\n if (renderDuration) telemetryMetrics.push(renderDuration);\n }\n });\n\n onTTFB((metric) => {\n const navigationEntry = metric.entries[0];\n if (!navigationEntry) return;\n\n const ttfb = buildTimeOriginMetric(\n 'web_view_time_to_first_byte',\n navigationEntry.responseStart\n );\n const renderDuration = takeRenderDuration();\n emitMetrics(renderDuration ? [ttfb, renderDuration] : [ttfb]);\n });\n\n if (document.readyState === 'loading') {\n globalThis.addEventListener('DOMContentLoaded', () => {\n const tti = measureTti();\n if (tti) telemetryMetrics.push(tti);\n });\n } else {\n const tti = measureTti();\n if (tti) telemetryMetrics.push(tti);\n }\n\n // Emit metrics after page is fully loaded\n globalThis.addEventListener('load', () => {\n const renderDuration = takeRenderDuration();\n if (renderDuration) telemetryMetrics.push(renderDuration);\n telemetryMetrics.push(buildTimeOriginMetric('web_view_load', performance.now()));\n emitMetrics(telemetryMetrics);\n\n const navigationTiming = getNavigationTiming();\n if (\n !renderDuration &&\n firstContentfulPaintOffset != null &&\n navigationTiming?.responseStart &&\n !navigationTiming.loadEventEnd\n ) {\n // loadEventEnd is finalized only after all load handlers finish.\n globalThis.setTimeout(() => {\n const completedRenderDuration = takeRenderDuration();\n if (completedRenderDuration) emitMetrics([completedRenderDuration]);\n });\n }\n });\n}\n", "import type { WebViewMessageEvent_MessageData } from '@devvit/protos/json/devvit/ui/events/v1alpha/web_view.js';\n\nimport { updateMode } from './devvit-global.js';\n\n/** @internal */\nexport function initWebViewMode(): void {\n addEventListener('message', onWebViewMessage);\n}\n\n/** @internal */\nexport function onWebViewMessage(ev: MessageEvent<WebViewMessageEvent_MessageData>): void {\n if (ev.data?.type !== 'devvit-message') return;\n if (!ev.data?.data?.immersiveModeEvent) return;\n updateMode(ev.data.data.immersiveModeEvent.immersiveMode);\n}\n", "import { queryCurrentScriptSrc } from './client.js';\nimport { initDevvitGlobal } from './devvit-global.js';\nimport { initFetch } from './fetch.js';\nimport { initScreenshotRequestListener } from './screenshot-listener.js';\nimport { initTelemetry } from './telemetry.js';\nimport { initToken } from './token.js';\nimport { initWebViewMode } from './web-view-mode.js';\n\ninitDevvitGlobal(document, location, window);\ninitTelemetry();\ninitFetch();\ninitScreenshotRequestListener(queryCurrentScriptSrc(document) ?? '');\ninitToken();\ninitWebViewMode();\n"],
|
|
4
|
+
"sourcesContent": ["{\"hash\":\"c507028\",\"version\":\"0.14.5-dev\"}", "/**\n * The `@devvit/client` version query parameter name the web view's document\n * script tag:\n *\n * <script src=\"https://webview.devvit.net/scripts/devvit.v1.min.js?clientVersion=1.2.3\"></script>\n *\n * The value is the version of `@devvit/client` bundled with the app.\n * `@devvit/client` may have runtime dependencies on\n * `@devvit/web-view-scripts` (`devvit.v1.min.js`) which is not bundled. The\n * client version can be used to specialize behavior to match the static\n * expectations of the `@devvit/client` version.\n */\nexport const clientVersionQueryParam = 'clientVersion';\n/** Bootstrap WebView script file name. */\nexport const devvitScriptFileName = 'devvit.v1.min.js';\n/** Screenshot capture WebView script file name. */\nexport const screenshotScriptFileName = 'screenshot.v1.min.js';\n/** CDN URL for the WebView bootstrap script. */\nexport const devvitScriptUrl = `https://webview.devvit.net/scripts/${devvitScriptFileName}`;\n", "import { clientVersionQueryParam } from '@devvit/shared-types/web-view-scripts-constants.js';\n\n/**\n * Queries the client version (eg, `'1.2.3'`) from the iframe document's script\n * tag:\n *\n * <script src=\"https://webview.devvit.net/scripts/devvit.v1.min.js?clientVersion=1.2.3\"></script>\n *\n * See `clientVersionQueryParam`.\n */\nexport function queryClientVersion(document: {\n readonly currentScript: { readonly src: string } | SVGScriptElement | null;\n}): string | undefined {\n if (document.currentScript && 'src' in document.currentScript)\n return (\n new URL(document.currentScript.src).searchParams.get(clientVersionQueryParam) ?? undefined\n );\n}\n\n/** Queries the current script `src` from the active document. */\nexport function queryCurrentScriptSrc(document: {\n readonly currentScript: { readonly src: string } | SVGScriptElement | null;\n}): string | undefined {\n if (document.currentScript && 'src' in document.currentScript) {\n return document.currentScript.src;\n }\n}\n", "/**\n * #context.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\n/** The user client hosting the web view. */\nexport var Client;\n(function (Client) {\n Client[Client[\"CLIENT_UNSPECIFIED\"] = 0] = \"CLIENT_UNSPECIFIED\";\n Client[Client[\"ANDROID\"] = 1] = \"ANDROID\";\n Client[Client[\"IOS\"] = 2] = \"IOS\";\n Client[Client[\"SHREDDIT\"] = 3] = \"SHREDDIT\";\n Client[Client[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(Client || (Client = {}));\n/**\n * Inline height of post.\n *\n * @deprecated\n */\nexport var Height;\n(function (Height) {\n Height[Height[\"HEIGHT_UNSPECIFIED\"] = 0] = \"HEIGHT_UNSPECIFIED\";\n Height[Height[\"REGULAR\"] = 1] = \"REGULAR\";\n Height[Height[\"TALL\"] = 2] = \"TALL\";\n Height[Height[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(Height || (Height = {}));\n", "export function assert(condition, msg) {\n if (!condition)\n throw Error(msg);\n}\n", "import { assert } from './assert.js';\n/**\n * - **C**omment (T1).\n * - **A**ccount (T2).\n * - **L**ink (T3).\n * - **M**essage (T4).\n * - **S**ubreddit (T5).\n * - **T**rophies (T6).\n */\nexport var T_PREFIX;\n(function (T_PREFIX) {\n T_PREFIX[\"COMMENT\"] = \"t1_\";\n T_PREFIX[\"ACCOUNT\"] = \"t2_\";\n T_PREFIX[\"LINK\"] = \"t3_\";\n T_PREFIX[\"MESSAGE\"] = \"t4_\";\n T_PREFIX[\"SUBREDDIT\"] = \"t5_\";\n T_PREFIX[\"AWARD\"] = \"t6_\";\n})(T_PREFIX || (T_PREFIX = {}));\n// type guards\nexport function isT1(id) {\n return !!id?.startsWith(T_PREFIX.COMMENT);\n}\nexport function isT2(id) {\n return !!id?.startsWith(T_PREFIX.ACCOUNT);\n}\nexport function isT3(id) {\n return !!id?.startsWith(T_PREFIX.LINK);\n}\nexport function isT4(id) {\n return !!id?.startsWith(T_PREFIX.MESSAGE);\n}\nexport function isT5(id) {\n return !!id?.startsWith(T_PREFIX.SUBREDDIT);\n}\nexport function isT6(id) {\n return !!id?.startsWith(T_PREFIX.AWARD);\n}\n// assertion functions\nexport function assertT1(id) {\n assert(isT1(id), `Expected comment id to start with ${T_PREFIX.COMMENT}, got ${id}`);\n}\nexport function assertT2(id) {\n assert(isT2(id), `Expected account id to start with ${T_PREFIX.ACCOUNT}, got ${id}`);\n}\nexport function assertT3(id) {\n assert(isT3(id), `Expected link id to start with ${T_PREFIX.LINK}, got ${id}`);\n}\nexport function assertT4(id) {\n assert(isT4(id), `Expected message id to start with ${T_PREFIX.MESSAGE}, got ${id}`);\n}\nexport function assertT5(id) {\n assert(isT5(id), `Expected subreddit id to start with ${T_PREFIX.SUBREDDIT}, got ${id}`);\n}\nexport function assertT6(id) {\n assert(isT6(id), `Expected award id to start with ${T_PREFIX.AWARD}, got ${id}`);\n}\n// factory functions\nexport function T1(id) {\n assertT1(id);\n return id;\n}\nexport function T2(id) {\n assertT2(id);\n return id;\n}\nexport function T3(id) {\n assertT3(id);\n return id;\n}\nexport function T4(id) {\n assertT4(id);\n return id;\n}\nexport function T5(id) {\n assertT5(id);\n return id;\n}\nexport function T6(id) {\n assertT6(id);\n return id;\n}\nexport function asTid(id) {\n if (isT1(id)) {\n return T1(id);\n }\n if (isT2(id)) {\n return T2(id);\n }\n if (isT3(id)) {\n return T3(id);\n }\n if (isT4(id)) {\n return T4(id);\n }\n if (isT5(id)) {\n return T5(id);\n }\n if (isT6(id)) {\n return T6(id);\n }\n throw new Error(`Expected thing id to start with ${Object.values(T_PREFIX).join(', ')} got ${id}}`);\n}\n", "/**\n * #effect.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nexport var EffectType;\n(function (EffectType) {\n /**\n * EFFECT_REALTIME_SUB - Notify client to synchronize its realtime subscriptions\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_REALTIME_SUB\"] = 0] = \"EFFECT_REALTIME_SUB\";\n /**\n * EFFECT_RERENDER_UI - Trigger a re-render for apps that have visible UI\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_RERENDER_UI\"] = 1] = \"EFFECT_RERENDER_UI\";\n /**\n * EFFECT_RELOAD_PART - Notify the client that parts of a subreddit, post, or comment should be reloaded\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_RELOAD_PART\"] = 2] = \"EFFECT_RELOAD_PART\";\n /** EFFECT_SHOW_FORM - Display a user input form */\n EffectType[EffectType[\"EFFECT_SHOW_FORM\"] = 3] = \"EFFECT_SHOW_FORM\";\n /** EFFECT_SHOW_TOAST - Display a transient toast message */\n EffectType[EffectType[\"EFFECT_SHOW_TOAST\"] = 4] = \"EFFECT_SHOW_TOAST\";\n /** EFFECT_NAVIGATE_TO_URL - Notify the client to navigate to a URL */\n EffectType[EffectType[\"EFFECT_NAVIGATE_TO_URL\"] = 5] = \"EFFECT_NAVIGATE_TO_URL\";\n /**\n * EFFECT_SET_INTERVALS - This updates the list of active timers.\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_SET_INTERVALS\"] = 7] = \"EFFECT_SET_INTERVALS\";\n /**\n * EFFECT_CREATE_ORDER - This starts a purchase flow\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_CREATE_ORDER\"] = 8] = \"EFFECT_CREATE_ORDER\";\n /**\n * EFFECT_WEB_VIEW - Control and communicate with WebViews\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_WEB_VIEW\"] = 9] = \"EFFECT_WEB_VIEW\";\n /**\n * EFFECT_CAN_RUN_AS_USER - Check if the app can execute some actions as the user\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_CAN_RUN_AS_USER\"] = 11] = \"EFFECT_CAN_RUN_AS_USER\";\n /**\n * EFFECT_TELEMETRY - Statistical data event for analytics.\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_TELEMETRY\"] = 12] = \"EFFECT_TELEMETRY\";\n /**\n * EFFECT_UPDATE_REQUEST_CONTEXT - Request an updated signed request context\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_UPDATE_REQUEST_CONTEXT\"] = 13] = \"EFFECT_UPDATE_REQUEST_CONTEXT\";\n /**\n * EFFECT_SCREENSHOT_RESPONSE - Send the screenshot response from web view to the client\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_SCREENSHOT_RESPONSE\"] = 14] = \"EFFECT_SCREENSHOT_RESPONSE\";\n /**\n * EFFECT_LOGIN_PROMPT - Request a login/signup prompt\n *\n * @deprecated\n */\n EffectType[EffectType[\"EFFECT_LOGIN_PROMPT\"] = 15] = \"EFFECT_LOGIN_PROMPT\";\n /**\n * EFFECT_PROMOTED_TELEMETRY - Emit an app-defined promoted telemetry event from a web view, such as\n * custom_event_1 for a promoted app interaction.\n */\n EffectType[EffectType[\"EFFECT_PROMOTED_TELEMETRY\"] = 16] = \"EFFECT_PROMOTED_TELEMETRY\";\n EffectType[EffectType[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(EffectType || (EffectType = {}));\n", "/**\n * #post_message.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\n/**\n * Blocks only.\n *\n * @deprecated\n */\nexport var WebViewInternalMessageScope;\n(function (WebViewInternalMessageScope) {\n /** CLIENT - Message is intended for the client only */\n WebViewInternalMessageScope[WebViewInternalMessageScope[\"CLIENT\"] = 0] = \"CLIENT\";\n WebViewInternalMessageScope[WebViewInternalMessageScope[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(WebViewInternalMessageScope || (WebViewInternalMessageScope = {}));\n", "import { EffectType } from '@devvit/protos/json/devvit/ui/effects/v1alpha/effect.js';\nimport { WebViewInternalMessageScope, } from '@devvit/protos/json/devvit/ui/effects/web_view/v1alpha/post_message.js';\n/** `WebViewInternalMessage.type`. */\nexport const webViewInternalMessageType = 'devvit-internal';\n/**\n * Emits an effect to the parent window returns immediately.\n *\n * @param effect - The effect to be emitted to the parent window\n * @param requestId - Optional request id used to correlate request/response messages\n * @description\n * This function handles effects that don't require a response, and can also\n * set a request id when replying to client-originated requests.\n */\nexport const emitEffect = (effect, requestId) => {\n const message = {\n ...effect,\n realtimeEffect: effect.realtime, // to-do: remove deprecated field.\n id: requestId,\n scope: WebViewInternalMessageScope.CLIENT,\n type: webViewInternalMessageType,\n };\n // For temporary backward compatibility, we set both `message.effect_type` above, and `effect` below\n // Once mobile clients are updated to consume the strongly typed properties above, we can remove this block\n // *Do not* add new effects here, use the strongly typed properties above\n if (effect.showToast || effect.navigateToUrl) {\n message.effect = effect;\n }\n parent.postMessage(message, '*');\n};\n/**\n * Emits an effect to the parent window and returns a promise that resolves with the response message.\n *\n * @param effect - The effect to be emitted to the parent window\n * @returns A promise that resolves with the response message\n *\n * @description\n * This function handles effects that require a response.\n */\nexport const emitEffectWithResponse = (effect) => {\n return new Promise((resolve) => {\n const message = {\n ...effect,\n realtimeEffect: effect.realtime, // to-do: remove deprecated field.\n scope: WebViewInternalMessageScope.CLIENT,\n type: webViewInternalMessageType,\n };\n // For temporary backward compatibility, we set both `message.effect_type` above, and `effect` below\n // Once mobile clients are updated to consume the strongly typed properties above, we can remove this block\n // *Do not* add new effects here, use the strongly typed properties above\n if (effect.showForm || effect.type === EffectType.EFFECT_CAN_RUN_AS_USER) {\n message.effect = effect;\n }\n const id = crypto.randomUUID();\n message.id = id;\n const handleEffect = (event) => {\n if (event.data?.type === 'devvit-message' && event.data?.data?.id === id) {\n resolve(event.data.data);\n removeEventListener('message', handleEffect);\n }\n };\n addEventListener('message', handleEffect);\n // Post message to the parent window, handled by client web view component\n parent.postMessage(message, '*');\n });\n};\n", "export class InvalidTokenError extends Error {\n}\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n }));\n}\nfunction base64UrlDecode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"base64 string is not of the correct length\");\n }\n try {\n return b64DecodeUnicode(output);\n }\n catch (err) {\n return atob(output);\n }\n}\nexport function jwtDecode(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\n }\n options || (options = {});\n const pos = options.header === true ? 0 : 1;\n const part = token.split(\".\")[pos];\n if (typeof part !== \"string\") {\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\n }\n let decoded;\n try {\n decoded = base64UrlDecode(part);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);\n }\n try {\n return JSON.parse(decoded);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);\n }\n}\n", "import type { RequestContext } from '@devvit/protos/json/devvit/platform/v1/request_context.js';\nimport { EffectType } from '@devvit/protos/json/devvit/ui/effects/v1alpha/effect.js';\nimport { emitEffectWithResponse } from '@devvit/shared-types/client/emit-effect.js';\nimport type { WebbitToken } from '@devvit/shared-types/webbit.js';\nimport { jwtDecode, type JwtPayload } from 'jwt-decode';\n\nimport { updateToken } from './devvit-global.js';\n\n/**\n * Claims payload extracted from a Devvit JWT.\n * This represents a JSON Web Token (JWT) that holds the `devvit` platform request context\n */\ntype ContextClaims = JwtPayload & { devvit: RequestContext };\n\nexport function decodeToken(token: string | undefined): RequestContext | undefined {\n if (!token) return;\n\n try {\n return jwtDecode<ContextClaims>(token)?.devvit;\n } catch (err) {\n throw Error('token decode failure', { cause: err });\n }\n}\n\nexport function initToken(): void {\n setInterval(refreshToken, 60_000);\n}\n\n/** @internal */\nexport async function refreshToken(): Promise<void> {\n // Check if the token is about to expire in the next 5 minutes\n const { exp: expiresAt } = jwtDecode<ContextClaims>(globalThis.devvit.token);\n\n if (expiresAt && expiresAt - Date.now() / 1000 > 300) {\n return;\n }\n\n await requestTokenRefresh();\n}\n\nexport async function requestTokenRefresh(): Promise<void> {\n const response = await emitEffectWithResponse({\n type: EffectType.EFFECT_UPDATE_REQUEST_CONTEXT,\n updateRequestContext: {},\n });\n\n if (!response?.updateRequestContext?.signedRequestContext) {\n console.error('Failed to refresh token');\n return;\n }\n\n updateToken(response.updateRequestContext.signedRequestContext as WebbitToken);\n}\n", "import type { RequestContext } from '@devvit/protos/json/devvit/platform/v1/request_context.js';\nimport type { DevvitPostData } from '@devvit/protos/json/devvit/ui/effects/web_view/v1alpha/context.js';\nimport {\n type BridgeContext,\n Client as ClientName,\n type WebViewClientData,\n type WebViewContext,\n} from '@devvit/protos/json/devvit/ui/effects/web_view/v1alpha/context.js';\nimport type { WebViewImmersiveMode } from '@devvit/protos/json/devvit/ui/effects/web_view/v1alpha/immersive_mode.js';\nimport type { ConsentStatus } from '@devvit/protos/json/reddit/devvit/app_permission/v1/app_permission.js';\nimport type { Context } from '@devvit/shared-types/client/client-context.js';\nimport type {\n DevvitGlobal,\n WebViewScriptsVersion,\n} from '@devvit/shared-types/client/devvit-global.js';\nimport type { Client } from '@devvit/shared-types/shared/client.js';\nimport { T2, T3, T5 } from '@devvit/shared-types/tid.js';\nimport { type WebbitToken } from '@devvit/shared-types/webbit.js';\n\nimport { queryClientVersion } from './client.js';\nimport { decodeToken, requestTokenRefresh } from './token.js';\n\ndeclare global {\n // eslint-disable-next-line no-var\n var devvit: DevvitGlobal;\n /** Defined by build.ts. */\n // eslint-disable-next-line no-var\n var webViewScriptsVersion: Readonly<WebViewScriptsVersion>;\n}\n\n/** @internal */\nexport const initDevvitGlobal = (\n document: { readonly currentScript: { readonly src: string } | SVGScriptElement | null },\n location: { readonly hash: string },\n window: { readonly name: string }\n): void => {\n const bridge = getBridgeContext(window.name, location.hash);\n\n const client = getClient(bridge);\n\n let appPermissionState = bridge?.appPermissionState;\n /**\n * Android versions older than this do not support runAsUser correctly, so we\n * suppress the permission state to allow the app to run as if the feature\n * wasn't present (failing open).\n *\n * Supported after 2026.05.x\n */\n if (client?.name === 'ANDROID') {\n if (\n client.version.yyyy < 2026 ||\n (client.version.yyyy === 2026 && client.version.release <= 5)\n ) {\n appPermissionState = undefined;\n }\n }\n\n const reqCtx = decodeToken(bridge.signedRequestContext);\n\n let context;\n if (reqCtx) context = contextFromRequestContext(reqCtx, client, bridge.postData);\n else if (bridge.webViewContext)\n context = contextFromWebViewContext(bridge.webViewContext, client, bridge.postData);\n if (!context) throw Error('no context');\n\n // to-do: expose `devvitDebug`, `shredditVersion`.\n\n const clientData: WebViewClientData | undefined = bridge.webViewClientData;\n globalThis.devvit = {\n context,\n dependencies: {\n client: queryClientVersion(document),\n webViewScripts: globalThis.webViewScriptsVersion,\n },\n entrypoints: clientData?.appConfig?.entrypoints ?? {},\n experiments: clientData?.featureConfig?.experiments ?? {},\n share: bridge?.shareParam ? { userData: bridge?.shareParam.userData } : undefined,\n adPayload: bridge?.adPayload,\n appPermissionState,\n token: (bridge.signedRequestContext || bridge.webbitToken) as WebbitToken,\n webViewMode: bridge?.viewMode,\n startTime: bridge?.startTime ?? undefined,\n refreshToken: requestTokenRefresh,\n };\n};\n\nexport function updateConsentStatus(consentStatus: ConsentStatus): void {\n if (!globalThis.devvit.appPermissionState) return;\n globalThis.devvit.appPermissionState.consentStatus = consentStatus;\n}\n\nexport function updateMode(mode: WebViewImmersiveMode): void {\n devvit.webViewMode = mode;\n}\n\nexport function updateToken(token: WebbitToken): void {\n globalThis.devvit.token = token;\n}\n\n/** @internal */\nexport function contextFromRequestContext(\n reqCtx: Readonly<RequestContext>,\n client: Client | undefined,\n postData: Readonly<DevvitPostData> | undefined\n): Context {\n if (!reqCtx.app) throw Error('no RequestContext.app');\n if (!reqCtx.post) throw Error('no RequestContext.post');\n if (!reqCtx.subreddit) throw Error('no RequestContext.subreddit');\n return {\n appName: reqCtx.app.name,\n appSlug: reqCtx.app.slug,\n appVersion: reqCtx.app.version,\n client,\n commentId: undefined,\n loid:\n reqCtx.user?.devvitLoid ?? (reqCtx.user as { devvit_loid?: string } | undefined)?.devvit_loid,\n postAuthorId: T2(reqCtx.post.author),\n postData: postData?.developerData,\n postId: T3(reqCtx.post.id),\n snoovatar: reqCtx.user?.snoovatar,\n subredditId: T5(reqCtx.subreddit.id),\n subredditName: reqCtx.subreddit.name,\n userId: reqCtx.user?.id ? T2(reqCtx.user.id) : undefined,\n username: reqCtx.user?.name,\n };\n}\n\n/** @internal */\nexport function contextFromWebViewContext(\n webViewCtx: Readonly<WebViewContext>,\n client: Client | undefined,\n postData: Readonly<DevvitPostData> | undefined\n): Context {\n return {\n appName: webViewCtx.appName,\n appSlug: webViewCtx.appName,\n appVersion: webViewCtx.appVersion,\n client,\n commentId: undefined,\n loid: undefined,\n postData: postData?.developerData,\n postAuthorId: undefined,\n postId: T3(webViewCtx.postId),\n snoovatar: undefined,\n subredditId: T5(webViewCtx.subredditId),\n subredditName: webViewCtx.subredditName,\n userId: webViewCtx.userId ? T2(webViewCtx.userId) : undefined,\n username: undefined,\n };\n}\n\n/**\n * Extracts the BridgeContext from the hash.\n * @internal\n */\nexport function getBridgeContext(name: string | undefined, hash: string): BridgeContext {\n if (name) return JSON.parse(name);\n const json = hash?.slice(1); // Strip the leading '#' from the hash\n if (!json) throw Error('no bridge context');\n return JSON.parse(decodeURIComponent(json));\n}\n\n/** @internal */\nexport function getClient(bridge: Readonly<BridgeContext>): Client | undefined {\n if (\n (bridge.client !== ClientName.ANDROID && bridge.client !== ClientName.IOS) ||\n !bridge.nativeVersion\n )\n return;\n return {\n name: bridge.client === ClientName.ANDROID ? 'ANDROID' : ('IOS' as const),\n version: bridge.nativeVersion,\n };\n}\n", "import type { DevvitGlobal } from '@devvit/shared-types/client/devvit-global.js';\n\n/** Injects an auth token into /api/ requests. */\nexport async function fetch(\n devvit: Readonly<DevvitGlobal>,\n globalFetch: typeof globalThis.fetch,\n location: Readonly<Location>,\n input: RequestInfo | URL,\n init?: RequestInit\n): Promise<Response> {\n const req = new Request(input, init);\n if (isSameSite(location, new URL(req.url)))\n req.headers.set('Authorization', `Bearer ${devvit.token}`);\n // to-do: pass devvit-debug from BridgeContext.\n return await globalFetch(req);\n}\n\nexport function initFetch(): void {\n globalThis.fetch = fetch.bind(undefined, globalThis.devvit, globalThis.fetch, location);\n}\n\n/** @internal */\nexport function isSameSite(location: Readonly<Location>, url: URL): boolean {\n return url.origin === location.origin;\n}\n", "import { EffectType } from '@devvit/protos/json/devvit/ui/effects/v1alpha/effect.js';\nimport type { WebViewMessageEvent_MessageData } from '@devvit/protos/json/devvit/ui/events/v1alpha/web_view.js';\nimport { emitEffect } from '@devvit/shared-types/client/emit-effect.js';\nimport {\n devvitScriptFileName,\n devvitScriptUrl,\n screenshotScriptFileName,\n} from '@devvit/shared-types/web-view-scripts-constants.js';\n\nconst fallbackScriptUrl = new URL(screenshotScriptFileName, devvitScriptUrl).toString();\n\nexport function getScreenshotModuleUrl(scriptSrc: string | undefined): string {\n const trimmedScriptSrc = scriptSrc?.trim();\n if (trimmedScriptSrc) {\n try {\n const scriptUrl = new URL(trimmedScriptSrc);\n if (scriptUrl.pathname.endsWith(`/${devvitScriptFileName}`)) {\n return new URL(screenshotScriptFileName, scriptUrl).toString();\n }\n } catch {\n // no-op, fall through to return below\n }\n }\n return fallbackScriptUrl;\n}\n\nasync function onMessage(\n event: MessageEvent<WebViewMessageEvent_MessageData>,\n scriptSrc: string | undefined\n): Promise<void> {\n const envelope = event.data;\n if (envelope?.type !== 'devvit-message' || envelope.data == null) return;\n const payload = envelope.data;\n if (payload.screenshotRequest == null) {\n return;\n }\n if (typeof payload.id !== 'string') {\n return;\n }\n\n let dataUrl: string | undefined;\n let errorMessage: string | undefined;\n try {\n const screenshotModulePath = getScreenshotModuleUrl(scriptSrc);\n // eslint-disable-next-line\n const { captureScreenshot } = await import(screenshotModulePath);\n dataUrl = await captureScreenshot();\n } catch (error) {\n errorMessage = error instanceof Error ? error.message : String(error);\n }\n emitEffect(\n { type: EffectType.EFFECT_SCREENSHOT_RESPONSE, screenshot: { dataUrl, error: errorMessage } },\n payload.id\n );\n}\n\nexport function initScreenshotRequestListener(scriptSrc: string): void {\n addEventListener('message', (event) => {\n void onMessage(event, scriptSrc);\n });\n}\n", "import { EffectType } from '@devvit/protos/json/devvit/ui/effects/v1alpha/effect.js';\nimport { emitEffect } from './emit-effect.js';\nexport function emitTelemetryClickEffect(event) {\n const click = TelemetryClickPayload(event.target, event.isTrusted);\n void emitEffect({\n type: EffectType.EFFECT_TELEMETRY,\n telemetry: { event: click.event, click },\n // to-do: remove once all clients support `telemetry`. Deprecated on\n // 2025-11-24.\n analytics: click,\n });\n}\n/**\n * This function is expensive. It does heavy DOM work.\n * @internal\n */\nexport function TelemetryClickPayload(eventTarget, isTrusted) {\n const { definition, elemTrackId } = analyzeClickTarget(eventTarget, isTrusted);\n return { event: 'click', definition, elemTrackId };\n}\nfunction analyzeClickTarget(eventTarget, isTrusted) {\n const targetElement = getTargetElement(eventTarget);\n if (!targetElement) {\n return { definition: 'default', elemTrackId: undefined };\n }\n let definition = 'default';\n if (isTrusted) {\n const computedStyles = globalThis.window.getComputedStyle(targetElement);\n if (computedStyles?.getPropertyValue('cursor') === 'pointer') {\n definition = 'strict';\n }\n }\n let elemTrackId;\n let currentElement = targetElement;\n while (currentElement) {\n if (elemTrackId === undefined) {\n const dataTrackId = currentElement.getAttribute('data-track-id');\n if (dataTrackId) {\n elemTrackId = dataTrackId;\n }\n else if (currentElement.id) {\n elemTrackId = currentElement.id;\n }\n }\n if (isTrusted && definition === 'default' && elementIsStrictClickTarget(currentElement)) {\n definition = 'strict';\n }\n if (elemTrackId !== undefined && (!isTrusted || definition === 'strict')) {\n break;\n }\n currentElement = currentElement.parentElement;\n }\n return { definition, elemTrackId };\n}\nfunction getTargetElement(eventTarget) {\n if (!eventTarget || typeof eventTarget !== 'object' || !('nodeType' in eventTarget)) {\n return undefined;\n }\n const node = eventTarget;\n return node.nodeType === 1 ? node : (node.parentElement ?? undefined);\n}\nfunction elementIsStrictClickTarget(element) {\n const STRICT_CLICK_TAGNAMES = ['A', 'BUTTON', 'CANVAS', 'INPUT', 'SELECT', 'TEXTAREA', 'LABEL'];\n return (STRICT_CLICK_TAGNAMES.includes(element.tagName) ||\n ['true', 'plaintext-only'].includes(element.getAttribute('contenteditable') ?? ''));\n}\n", "var e,n,t,r,i,o=-1,a=function(e){addEventListener(\"pageshow\",(function(n){n.persisted&&(o=n.timeStamp,e(n))}),!0)},c=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType(\"navigation\")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},u=function(){var e=c();return e&&e.activationStart||0},f=function(e,n){var t=c(),r=\"navigate\";o>=0?r=\"back-forward-cache\":t&&(document.prerendering||u()>0?r=\"prerender\":document.wasDiscarded?r=\"restore\":t.type&&(r=t.type.replace(/_/g,\"-\")));return{name:e,value:void 0===n?-1:n,rating:\"good\",delta:0,entries:[],id:\"v4-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},s=function(e,n,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(e){Promise.resolve().then((function(){n(e.getEntries())}))}));return r.observe(Object.assign({type:e,buffered:!0},t||{})),r}}catch(e){}},d=function(e,n,t,r){var i,o;return function(a){n.value>=0&&(a||r)&&((o=n.value-(i||0))||void 0===i)&&(i=n.value,n.delta=o,n.rating=function(e,n){return e>n[1]?\"poor\":e>n[0]?\"needs-improvement\":\"good\"}(n.value,t),e(n))}},l=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},p=function(e){document.addEventListener(\"visibilitychange\",(function(){\"hidden\"===document.visibilityState&&e()}))},v=function(e){var n=!1;return function(){n||(e(),n=!0)}},m=-1,h=function(){return\"hidden\"!==document.visibilityState||document.prerendering?1/0:0},g=function(e){\"hidden\"===document.visibilityState&&m>-1&&(m=\"visibilitychange\"===e.type?e.timeStamp:0,T())},y=function(){addEventListener(\"visibilitychange\",g,!0),addEventListener(\"prerenderingchange\",g,!0)},T=function(){removeEventListener(\"visibilitychange\",g,!0),removeEventListener(\"prerenderingchange\",g,!0)},E=function(){return m<0&&(m=h(),y(),a((function(){setTimeout((function(){m=h(),y()}),0)}))),{get firstHiddenTime(){return m}}},C=function(e){document.prerendering?addEventListener(\"prerenderingchange\",(function(){return e()}),!0):e()},b=[1800,3e3],S=function(e,n){n=n||{},C((function(){var t,r=E(),i=f(\"FCP\"),o=s(\"paint\",(function(e){e.forEach((function(e){\"first-contentful-paint\"===e.name&&(o.disconnect(),e.startTime<r.firstHiddenTime&&(i.value=Math.max(e.startTime-u(),0),i.entries.push(e),t(!0)))}))}));o&&(t=d(e,i,b,n.reportAllChanges),a((function(r){i=f(\"FCP\"),t=d(e,i,b,n.reportAllChanges),l((function(){i.value=performance.now()-r.timeStamp,t(!0)}))})))}))},L=[.1,.25],w=function(e,n){n=n||{},S(v((function(){var t,r=f(\"CLS\",0),i=0,o=[],c=function(e){e.forEach((function(e){if(!e.hadRecentInput){var n=o[0],t=o[o.length-1];i&&e.startTime-t.startTime<1e3&&e.startTime-n.startTime<5e3?(i+=e.value,o.push(e)):(i=e.value,o=[e])}})),i>r.value&&(r.value=i,r.entries=o,t())},u=s(\"layout-shift\",c);u&&(t=d(e,r,L,n.reportAllChanges),p((function(){c(u.takeRecords()),t(!0)})),a((function(){i=0,r=f(\"CLS\",0),t=d(e,r,L,n.reportAllChanges),l((function(){return t()}))})),setTimeout(t,0))})))},A=0,I=1/0,P=0,M=function(e){e.forEach((function(e){e.interactionId&&(I=Math.min(I,e.interactionId),P=Math.max(P,e.interactionId),A=P?(P-I)/7+1:0)}))},k=function(){return e?A:performance.interactionCount||0},F=function(){\"interactionCount\"in performance||e||(e=s(\"event\",M,{type:\"event\",buffered:!0,durationThreshold:0}))},D=[],x=new Map,R=0,B=function(){var e=Math.min(D.length-1,Math.floor((k()-R)/50));return D[e]},H=[],q=function(e){if(H.forEach((function(n){return n(e)})),e.interactionId||\"first-input\"===e.entryType){var n=D[D.length-1],t=x.get(e.interactionId);if(t||D.length<10||e.duration>n.latency){if(t)e.duration>t.latency?(t.entries=[e],t.latency=e.duration):e.duration===t.latency&&e.startTime===t.entries[0].startTime&&t.entries.push(e);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};x.set(r.id,r),D.push(r)}D.sort((function(e,n){return n.latency-e.latency})),D.length>10&&D.splice(10).forEach((function(e){return x.delete(e.id)}))}}},O=function(e){var n=self.requestIdleCallback||self.setTimeout,t=-1;return e=v(e),\"hidden\"===document.visibilityState?e():(t=n(e),p(e)),t},N=[200,500],j=function(e,n){\"PerformanceEventTiming\"in self&&\"interactionId\"in PerformanceEventTiming.prototype&&(n=n||{},C((function(){var t;F();var r,i=f(\"INP\"),o=function(e){O((function(){e.forEach(q);var n=B();n&&n.latency!==i.value&&(i.value=n.latency,i.entries=n.entries,r())}))},c=s(\"event\",o,{durationThreshold:null!==(t=n.durationThreshold)&&void 0!==t?t:40});r=d(e,i,N,n.reportAllChanges),c&&(c.observe({type:\"first-input\",buffered:!0}),p((function(){o(c.takeRecords()),r(!0)})),a((function(){R=k(),D.length=0,x.clear(),i=f(\"INP\"),r=d(e,i,N,n.reportAllChanges)})))})))},_=[2500,4e3],z={},G=function(e,n){n=n||{},C((function(){var t,r=E(),i=f(\"LCP\"),o=function(e){n.reportAllChanges||(e=e.slice(-1)),e.forEach((function(e){e.startTime<r.firstHiddenTime&&(i.value=Math.max(e.startTime-u(),0),i.entries=[e],t())}))},c=s(\"largest-contentful-paint\",o);if(c){t=d(e,i,_,n.reportAllChanges);var m=v((function(){z[i.id]||(o(c.takeRecords()),c.disconnect(),z[i.id]=!0,t(!0))}));[\"keydown\",\"click\"].forEach((function(e){addEventListener(e,(function(){return O(m)}),{once:!0,capture:!0})})),p(m),a((function(r){i=f(\"LCP\"),t=d(e,i,_,n.reportAllChanges),l((function(){i.value=performance.now()-r.timeStamp,z[i.id]=!0,t(!0)}))}))}}))},J=[800,1800],K=function e(n){document.prerendering?C((function(){return e(n)})):\"complete\"!==document.readyState?addEventListener(\"load\",(function(){return e(n)}),!0):setTimeout(n,0)},Q=function(e,n){n=n||{};var t=f(\"TTFB\"),r=d(e,t,J,n.reportAllChanges);K((function(){var i=c();i&&(t.value=Math.max(i.responseStart-u(),0),t.entries=[i],r(!0),a((function(){t=f(\"TTFB\",0),(r=d(e,t,J,n.reportAllChanges))(!0)})))}))},U={passive:!0,capture:!0},V=new Date,W=function(e,i){n||(n=i,t=e,r=new Date,Z(removeEventListener),X())},X=function(){if(t>=0&&t<r-V){var e={entryType:\"first-input\",name:n.type,target:n.target,cancelable:n.cancelable,startTime:n.timeStamp,processingStart:n.timeStamp+t};i.forEach((function(n){n(e)})),i=[]}},Y=function(e){if(e.cancelable){var n=(e.timeStamp>1e12?new Date:performance.now())-e.timeStamp;\"pointerdown\"==e.type?function(e,n){var t=function(){W(e,n),i()},r=function(){i()},i=function(){removeEventListener(\"pointerup\",t,U),removeEventListener(\"pointercancel\",r,U)};addEventListener(\"pointerup\",t,U),addEventListener(\"pointercancel\",r,U)}(n,e):W(n,e)}},Z=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(n){return e(n,Y,U)}))},$=[100,300],ee=function(e,r){r=r||{},C((function(){var o,c=E(),u=f(\"FID\"),l=function(e){e.startTime<c.firstHiddenTime&&(u.value=e.processingStart-e.startTime,u.entries.push(e),o(!0))},m=function(e){e.forEach(l)},h=s(\"first-input\",m);o=d(e,u,$,r.reportAllChanges),h&&(p(v((function(){m(h.takeRecords()),h.disconnect()}))),a((function(){var a;u=f(\"FID\"),o=d(e,u,$,r.reportAllChanges),i=[],t=-1,n=null,Z(addEventListener),a=l,i.push(a),X()})))}))};export{L as CLSThresholds,b as FCPThresholds,$ as FIDThresholds,N as INPThresholds,_ as LCPThresholds,J as TTFBThresholds,w as onCLS,S as onFCP,ee as onFID,j as onINP,G as onLCP,Q as onTTFB};\n", "import { EffectType } from '@devvit/protos/json/devvit/ui/effects/v1alpha/effect.js';\nimport type {\n WebViewTelemetryLoadedEffect,\n WebViewTelemetryMetric,\n} from '@devvit/protos/json/devvit/ui/effects/web_view/v1alpha/telemetry.js';\nimport { emitEffect } from '@devvit/shared-types/client/emit-effect.js';\nimport { emitTelemetryClickEffect } from '@devvit/shared-types/client/telemetry.js';\nimport { onFCP, onTTFB } from 'web-vitals';\n\n/**\n * `initTelemetry()` is added to all Devvit apps which use web views.\n *\n * This sends interaction events to the parent window via postMessage.\n * These metrics are used to inform app performance and feed ranking.\n */\nexport function initTelemetry(): void {\n initPerformanceMonitoring();\n initLoadedEvent();\n initClickEvent();\n}\n\nfunction initLoadedEvent(): void {\n addEventListener('load', () => {\n const timeStart = performance.timeOrigin;\n const duration = performance.now();\n const timeEnd = performance.timeOrigin + duration;\n const loaded: WebViewTelemetryLoadedEffect = {\n event: 'web-view-loaded',\n timeStart,\n timeEnd,\n duration,\n };\n\n void emitEffect({\n type: EffectType.EFFECT_TELEMETRY,\n telemetry: { event: loaded.event, loaded },\n // to-do: remove once all clients support `telemetry`. Deprecated on\n // 2025-11-24.\n analytics: loaded,\n });\n });\n}\n\nfunction initClickEvent(): void {\n document.addEventListener(\n 'click',\n (event) => {\n emitTelemetryClickEffect(event);\n },\n { capture: true, passive: true }\n );\n}\n\nfunction getNavigationTiming(): PerformanceNavigationTiming | undefined {\n return performance.getEntriesByType('navigation')[0] as PerformanceNavigationTiming | undefined;\n}\n\nfunction buildTimeOriginMetric(spanName: string, offset: number): WebViewTelemetryMetric {\n return {\n spanName,\n timeStart: performance.timeOrigin,\n timeEnd: performance.timeOrigin + offset,\n };\n}\n\nfunction emitMetrics(metrics: WebViewTelemetryMetric[]): void {\n emitEffect({\n type: EffectType.EFFECT_TELEMETRY,\n telemetry: { metrics: { metrics } },\n });\n}\n\n/**\n * Measures the native startup window between the app launch (`startTime`) and the\n * moment the WebView began loading the page (`performance.timeOrigin`). This gap\n * covers WebView inflation, bridge setup, data fetching, and navigation triggers,\n * none of which is reflected in the in-page performance offsets.\n */\nfunction measureWebViewInitialization(\n startTime: number | undefined\n): WebViewTelemetryMetric | undefined {\n if (!startTime) {\n return undefined;\n }\n\n return {\n spanName: 'web_view_initialization',\n timeStart: startTime,\n timeEnd: performance.timeOrigin,\n };\n}\n\n// Match the existing app-readiness signal by ending at the slower of first paint and page load.\nfunction measureRenderDuration(\n firstContentfulPaintOffset: number | undefined\n): WebViewTelemetryMetric | undefined {\n const navigationTiming = getNavigationTiming();\n const loadEventEndOffset = navigationTiming?.loadEventEnd;\n\n if (\n firstContentfulPaintOffset == null ||\n loadEventEndOffset == null ||\n loadEventEndOffset <= 0 ||\n !navigationTiming ||\n navigationTiming.responseStart <= 0\n ) {\n return undefined;\n }\n\n return {\n spanName: 'web_view_render_duration',\n timeStart: performance.timeOrigin + navigationTiming.responseStart,\n timeEnd: performance.timeOrigin + Math.max(firstContentfulPaintOffset, loadEventEndOffset),\n };\n}\n\n/**\n * Measures the DOM interactive milestone emitted under the historical TTI span name.\n */\nfunction measureTti(): WebViewTelemetryMetric | undefined {\n const navTiming = getNavigationTiming();\n const ttiTime = navTiming?.domInteractive;\n\n if (!ttiTime) {\n return undefined;\n }\n\n return buildTimeOriginMetric('web_view_time_to_interactive', ttiTime);\n}\n\nfunction initPerformanceMonitoring(): void {\n const telemetryMetrics: WebViewTelemetryMetric[] = [];\n let firstContentfulPaintOffset: number | undefined;\n // FCP, TTFB, and load can complete the render-duration measurement.\n let renderDurationSent = false;\n\n const takeRenderDuration = (): WebViewTelemetryMetric | undefined => {\n if (renderDurationSent) return undefined;\n\n const renderDuration = measureRenderDuration(firstContentfulPaintOffset);\n if (!renderDuration) return undefined;\n\n renderDurationSent = true;\n return renderDuration;\n };\n\n const initialization = measureWebViewInitialization(globalThis.devvit?.startTime);\n if (initialization) telemetryMetrics.push(initialization);\n\n onFCP((metric) => {\n const firstContentfulPaintEntry = metric.entries[0];\n if (!firstContentfulPaintEntry) return;\n\n firstContentfulPaintOffset = firstContentfulPaintEntry.startTime;\n const fcp = buildTimeOriginMetric(\n 'web_view_first_contentful_paint',\n firstContentfulPaintEntry.startTime\n );\n const renderDuration = takeRenderDuration();\n if (document.readyState === 'complete') {\n // load may already have emitted its batch, so late FCP emits standalone.\n emitMetrics(renderDuration ? [fcp, renderDuration] : [fcp]);\n } else {\n telemetryMetrics.push(fcp);\n if (renderDuration) telemetryMetrics.push(renderDuration);\n }\n });\n\n onTTFB((metric) => {\n const navigationEntry = metric.entries[0];\n if (!navigationEntry) return;\n\n const ttfb = buildTimeOriginMetric(\n 'web_view_time_to_first_byte',\n navigationEntry.responseStart\n );\n const renderDuration = takeRenderDuration();\n emitMetrics(renderDuration ? [ttfb, renderDuration] : [ttfb]);\n });\n\n if (document.readyState === 'loading') {\n globalThis.addEventListener('DOMContentLoaded', () => {\n const tti = measureTti();\n if (tti) telemetryMetrics.push(tti);\n });\n } else {\n const tti = measureTti();\n if (tti) telemetryMetrics.push(tti);\n }\n\n // Emit metrics after page is fully loaded\n globalThis.addEventListener('load', () => {\n const renderDuration = takeRenderDuration();\n if (renderDuration) telemetryMetrics.push(renderDuration);\n telemetryMetrics.push(buildTimeOriginMetric('web_view_load', performance.now()));\n emitMetrics(telemetryMetrics);\n\n const navigationTiming = getNavigationTiming();\n if (\n !renderDuration &&\n firstContentfulPaintOffset != null &&\n navigationTiming?.responseStart &&\n !navigationTiming.loadEventEnd\n ) {\n // loadEventEnd is finalized only after all load handlers finish.\n globalThis.setTimeout(() => {\n const completedRenderDuration = takeRenderDuration();\n if (completedRenderDuration) emitMetrics([completedRenderDuration]);\n });\n }\n });\n}\n", "import type { WebViewMessageEvent_MessageData } from '@devvit/protos/json/devvit/ui/events/v1alpha/web_view.js';\n\nimport { updateMode } from './devvit-global.js';\n\n/** @internal */\nexport function initWebViewMode(): void {\n addEventListener('message', onWebViewMessage);\n}\n\n/** @internal */\nexport function onWebViewMessage(ev: MessageEvent<WebViewMessageEvent_MessageData>): void {\n if (ev.data?.type !== 'devvit-message') return;\n if (!ev.data?.data?.immersiveModeEvent) return;\n updateMode(ev.data.data.immersiveModeEvent.immersiveMode);\n}\n", "import { queryCurrentScriptSrc } from './client.js';\nimport { initDevvitGlobal } from './devvit-global.js';\nimport { initFetch } from './fetch.js';\nimport { initScreenshotRequestListener } from './screenshot-listener.js';\nimport { initTelemetry } from './telemetry.js';\nimport { initToken } from './token.js';\nimport { initWebViewMode } from './web-view-mode.js';\n\ninitDevvitGlobal(document, location, window);\ninitTelemetry();\ninitFetch();\ninitScreenshotRequestListener(queryCurrentScriptSrc(document) ?? '');\ninitToken();\ninitWebViewMode();\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["define_globalThis_webViewScriptsVersion_default", "clientVersionQueryParam", "devvitScriptFileName", "screenshotScriptFileName", "devvitScriptUrl", "queryClientVersion", "document", "clientVersionQueryParam", "queryCurrentScriptSrc", "Client", "Height", "assert", "condition", "msg", "T_PREFIX", "isT2", "id", "T_PREFIX", "isT3", "isT5", "id", "T_PREFIX", "assertT2", "id", "assert", "isT2", "T_PREFIX", "assertT3", "isT3", "assertT5", "id", "assert", "isT5", "T_PREFIX", "T2", "id", "assertT2", "T3", "assertT3", "T5", "id", "assertT5", "EffectType", "WebViewInternalMessageScope", "webViewInternalMessageType", "emitEffect", "effect", "requestId", "message", "WebViewInternalMessageScope", "emitEffectWithResponse", "resolve", "EffectType", "id", "handleEffect", "event", "InvalidTokenError", "b64DecodeUnicode", "str", "m", "p", "code", "base64UrlDecode", "output", "jwtDecode", "token", "options", "pos", "part", "decoded", "e", "decodeToken", "token", "jwtDecode", "err", "initToken", "refreshToken", "expiresAt", "requestTokenRefresh", "response", "emitEffectWithResponse", "EffectType", "updateToken", "initDevvitGlobal", "document", "location", "window", "bridge", "getBridgeContext", "client", "getClient", "appPermissionState", "reqCtx", "decodeToken", "context", "contextFromRequestContext", "contextFromWebViewContext", "clientData", "queryClientVersion", "define_globalThis_webViewScriptsVersion_default", "requestTokenRefresh", "updateMode", "mode", "updateToken", "token", "contextFromRequestContext", "reqCtx", "client", "postData", "T2", "T3", "T5", "contextFromWebViewContext", "webViewCtx", "getBridgeContext", "name", "hash", "json", "getClient", "bridge", "Client", "fetch", "devvit", "globalFetch", "location", "input", "init", "req", "isSameSite", "initFetch", "url", "fallbackScriptUrl", "screenshotScriptFileName", "devvitScriptUrl", "getScreenshotModuleUrl", "scriptSrc", "trimmedScriptSrc", "scriptUrl", "devvitScriptFileName", "onMessage", "event", "envelope", "payload", "dataUrl", "errorMessage", "screenshotModulePath", "captureScreenshot", "error", "emitEffect", "EffectType", "initScreenshotRequestListener", "emitTelemetryClickEffect", "event", "click", "TelemetryClickPayload", "emitEffect", "EffectType", "eventTarget", "isTrusted", "definition", "elemTrackId", "analyzeClickTarget", "targetElement", "getTargetElement", "currentElement", "dataTrackId", "elementIsStrictClickTarget", "node", "element", "o", "a", "n", "c", "u", "f", "t", "s", "e", "d", "i", "l", "m", "h", "g", "T", "y", "E", "a", "C", "b", "S", "n", "t", "i", "f", "o", "s", "e", "u", "d", "r", "l", "J", "K", "n", "C", "Q", "t", "f", "d", "i", "c", "u", "a", "initTelemetry", "initPerformanceMonitoring", "initLoadedEvent", "initClickEvent", "timeStart", "duration", "timeEnd", "loaded", "emitEffect", "EffectType", "event", "emitTelemetryClickEffect", "getNavigationTiming", "buildTimeOriginMetric", "spanName", "offset", "emitMetrics", "metrics", "measureWebViewInitialization", "startTime", "measureRenderDuration", "firstContentfulPaintOffset", "navigationTiming", "loadEventEndOffset", "measureTti", "ttiTime", "telemetryMetrics", "renderDurationSent", "takeRenderDuration", "renderDuration", "initialization", "S", "metric", "firstContentfulPaintEntry", "fcp", "Q", "navigationEntry", "ttfb", "tti", "completedRenderDuration", "initWebViewMode", "onWebViewMessage", "ev", "updateMode", "initDevvitGlobal", "initTelemetry", "initFetch", "initScreenshotRequestListener", "queryCurrentScriptSrc", "initToken", "initWebViewMode"]
|
|
7
7
|
}
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../protos/dist/json/reddit/devvit/app_permission/v1/app_permission.d.ts","../../protos/dist/json/reddit/devvit/ads/v1/ads.d.ts","../../protos/dist/json/reddit/devvit/common/v1/app.d.ts","../../protos/dist/json/reddit/devvit/common/v1/feature.d.ts","../../protos/dist/json/devvit/ui/effects/web_view/v1alpha/immersive_mode.d.ts","../../protos/dist/json/devvit/ui/effects/web_view/v1alpha/context.d.ts","../../shared-types/dist/webbit.d.ts","../../shared-types/dist/json.d.ts","../../shared-types/dist/PostData.d.ts","../../shared-types/dist/tid.d.ts","../../shared-types/dist/shared/baseContext.d.ts","../../shared-types/dist/shared/client.d.ts","../../shared-types/dist/client/client-context.d.ts","../../shared-types/dist/client/devvit-global.d.ts","../../../node_modules/esbuild/lib/main.d.ts","../package.json","../tools/build.ts","../tools/wvs.js","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/@types/node/node_modules/undici-types/utility.d.ts","../../../node_modules/@types/node/node_modules/undici-types/header.d.ts","../../../node_modules/@types/node/node_modules/undici-types/readable.d.ts","../../../node_modules/@types/node/node_modules/undici-types/fetch.d.ts","../../../node_modules/@types/node/node_modules/undici-types/formdata.d.ts","../../../node_modules/@types/node/node_modules/undici-types/connector.d.ts","../../../node_modules/@types/node/node_modules/undici-types/client-stats.d.ts","../../../node_modules/@types/node/node_modules/undici-types/client.d.ts","../../../node_modules/@types/node/node_modules/undici-types/errors.d.ts","../../../node_modules/@types/node/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/@types/node/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/@types/node/node_modules/undici-types/global-origin.d.ts","../../../node_modules/@types/node/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/@types/node/node_modules/undici-types/pool.d.ts","../../../node_modules/@types/node/node_modules/undici-types/handlers.d.ts","../../../node_modules/@types/node/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/@types/node/node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/@types/node/node_modules/undici-types/h2c-client.d.ts","../../../node_modules/@types/node/node_modules/undici-types/agent.d.ts","../../../node_modules/@types/node/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/@types/node/node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/@types/node/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/@types/node/node_modules/undici-types/mock-client.d.ts","../../../node_modules/@types/node/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/@types/node/node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/@types/node/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/@types/node/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/@types/node/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/@types/node/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/@types/node/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/@types/node/node_modules/undici-types/api.d.ts","../../../node_modules/@types/node/node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/@types/node/node_modules/undici-types/interceptors.d.ts","../../../node_modules/@types/node/node_modules/undici-types/util.d.ts","../../../node_modules/@types/node/node_modules/undici-types/cookies.d.ts","../../../node_modules/@types/node/node_modules/undici-types/patch.d.ts","../../../node_modules/@types/node/node_modules/undici-types/websocket.d.ts","../../../node_modules/@types/node/node_modules/undici-types/eventsource.d.ts","../../../node_modules/@types/node/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/@types/node/node_modules/undici-types/content-type.d.ts","../../../node_modules/@types/node/node_modules/undici-types/cache.d.ts","../../../node_modules/@types/node/node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts"],"fileIdsList":[[85,137,138,140,157,158],[85,139,140,157,158],[140,157,158],[85,140,145,157,158,176],[85,140,141,146,151,157,158,160,173,184],[85,140,141,142,151,157,158,160],[85,140,157,158],[85,140,143,157,158,185],[85,140,144,145,152,157,158,162],[85,140,145,157,158,173,181],[85,140,146,148,151,157,158,160],[85,139,140,147,157,158],[85,140,148,149,157,158],[85,140,150,151,157,158],[85,139,140,151,157,158],[85,140,151,152,153,157,158,173,184],[85,140,151,152,153,157,158,168,173,176],[85,132,140,148,151,154,157,158,160,173,184],[85,140,151,152,154,155,157,158,160,173,181,184],[85,140,154,156,157,158,173,181,184],[83,84,85,86,87,88,89,90,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190],[85,140,151,157,158],[85,140,157,158,159,184],[85,140,148,151,157,158,160,173],[85,97,100,103,104,140,157,158,184],[85,100,140,157,158,173,184],[85,100,104,140,157,158,184],[85,140,157,158,173],[85,94,140,157,158],[85,98,140,157,158],[85,96,97,100,140,157,158,184],[85,140,157,158,160,181],[85,140,157,158,191],[85,94,140,157,158,191],[85,96,100,140,157,158,160,184],[85,91,92,93,95,99,140,151,157,158,173,184],[85,100,109,117,140,157,158],[85,92,98,140,157,158],[85,100,126,127,140,157,158],[85,92,95,100,140,157,158,176,184,191],[85,100,140,157,158],[85,96,100,140,157,158,184],[85,91,140,157,158],[85,94,95,96,98,99,100,101,102,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,127,128,129,130,131,140,157,158],[85,100,119,122,140,148,157,158],[85,100,109,110,111,140,157,158],[85,98,100,110,112,140,157,158],[85,99,140,157,158],[85,92,94,100,140,157,158],[85,100,104,110,112,140,157,158],[85,104,140,157,158],[85,98,100,103,140,157,158,184],[85,92,96,100,109,140,157,158],[85,100,119,140,157,158],[85,112,140,157,158],[85,94,100,126,140,157,158,176,189,191],[85,140,157,158,162],[85,140,157,158,163],[85,139,140,157,158,164],[85,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190],[85,140,157,158,166],[85,140,157,158,167],[85,140,151,157,158,168,169],[85,140,157,158,168,170,185,187],[85,140,152,157,158],[85,140,151,157,158,173,174,176],[85,140,157,158,175,176],[85,140,157,158,173,174],[85,140,157,158,176],[85,140,157,158,177],[85,137,140,157,158,173,178,184],[85,140,151,157,158,179,180],[85,140,157,158,179,180],[85,140,145,157,158,160,173,181],[85,140,157,158,182],[85,140,157,158,160,183],[85,140,154,157,158,167,184],[85,140,145,157,158,185],[85,140,157,158,173,186],[85,140,157,158,159,187],[85,140,157,158,188],[85,140,145,157,158],[85,132,140,157,158],[85,140,157,158,189],[85,132,140,151,153,157,158,164,173,176,184,186,187,189],[85,140,157,158,173,190],[65,67,68,69,85,140,157,158],[65,66,85,140,157,158],[72,85,140,157,158],[74,75,76,85,140,157,158],[69,70,71,77,85,140,157,158],[73,74,85,140,157,158],[70,85,140,157,158],[78,79,80,85,140,141,152,157,158]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"8baba0ea3c8dd09f08640e9f1aecb2331bc434a8bd066e9414094bf7cf4f7649","impliedFormat":99},{"version":"7479db9f1098718bc606ebc836d36277c9471e913fd1359200a936af2f3f8b3f","impliedFormat":99},{"version":"5aff333d2464eb49a62cd9f0821d5624fd3f9ca840f8288c3ba81e76e0d81779","impliedFormat":99},{"version":"5f3402ed2df0e95619aa90a6fc58bc1b29d3df07c421829060255ccd50123db5","impliedFormat":99},{"version":"fd053a652acd3a2c7fc5ff6b7e628567dbc82d69414adbf8b40445bae9006342","impliedFormat":99},{"version":"9b8bbeaf84f7f8b68339df961448f0b2b27cfe8adf58aef7fe2e4d8d0af7cc73","impliedFormat":99},{"version":"6617d713c28b1bf882c39a3620c4db41e568f139217625701a71dd9a90873d3a","impliedFormat":99},{"version":"d211569292bb691b2476beff57b1972d4a94f999e8d7bbfad7605e21b4d413ad","impliedFormat":99},{"version":"e43a0516850ba3ea422d0d6649784f0323222dec22a01bbd3e256fb447bba6c4","impliedFormat":99},{"version":"d75ce101b61036b915e1f5e5e5b872dcfdd7f8cac22186cf4049fcceac4395ac","impliedFormat":99},{"version":"480d92d91f63183db46032f1eeec63c2da6c121bfcd52d2c026638034c74264e","impliedFormat":99},{"version":"1b6350dd5736fb570fae8bb8fed3ebf9db6ca8a3b9cf20b99a6da7bc21b7f7a3","impliedFormat":99},{"version":"16f78a145325f9cbf57d296edae7149d7540a49fe3f89eb3e3ac11d39cd849ca","impliedFormat":99},{"version":"bab34382fcce04bd9fc5b0501580a9d872cf7aeff8c4d3e52243e86cbfd6d072","impliedFormat":99},{"version":"161c8e0690c46021506e32fda85956d785b70f309ae97011fd27374c065cac9b","affectsGlobalScope":true,"impliedFormat":1},{"version":"13dc332b986126c49ec83bd5754ccaa4c56e9e7aec9b7417cb500926bd0447c0","signature":"c8da7201c279da89a34bbe420430d1b4c872bfca82cccab37a2c849da1283c22"},{"version":"d22e104bf1e9d11a9b35e9e13339f04d23de15dda13d4274f98ca8c9ee5bcbb8","signature":"9f2cb4eb5a50b225c59f60849e5f3695a595661921877b1fb6314feaf08d9271","impliedFormat":99},{"version":"779e6b7eede17f7e7e36c254f18eaf374e1d9ca457092f9f29d7cf6a3a3ab352","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":99},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"10ec5e82144dfac6f04fa5d1d6c11763b3e4dbbac6d99101427219ab3e2ae887","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"074de5b2fdead0165a2757e3aaef20f27a6347b1c36adea27d51456795b37682","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"24371e69a38fc33e268d4a8716dbcda430d6c2c414a99ff9669239c4b8f40dea","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"3e11fce78ad8c0e1d1db4ba5f0652285509be3acdd519529bc8fcef85f7dafd9","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"9c32412007b5662fd34a8eb04292fb5314ec370d7016d1c2fb8aa193c807fe22","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"6ebe8ebb8659aaa9d1acbf3710d7dae3e923e97610238b9511c25dc39023a166","impliedFormat":1},{"version":"e85d7f8068f6a26710bff0cc8c0fc5e47f71089c3780fbede05857331d2ddec9","impliedFormat":1},{"version":"7befaf0e76b5671be1d47b77fcc65f2b0aad91cc26529df1904f4a7c46d216e9","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"c63b9ada8c72f95aac5db92aea07e5e87ec810353cdf63b2d78f49a58662cf6c","impliedFormat":1},{"version":"1cc2a09e1a61a5222d4174ab358a9f9de5e906afe79dbf7363d871a7edda3955","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"b64d4d1c5f877f9c666e98e833f0205edb9384acc46e98a1fef344f64d6aba44","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"c9381908473a1c92cb8c516b184e75f4d226dad95c3a85a5af35f670064d9a2f","impliedFormat":1},{"version":"f724236417941ea77ec8d38c6b7021f5fb7f8521c7f8c1538e87661f2c6a0774","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"c06b2652ffeb89afd0f1c52c165ced77032f9cd09bc481153fbd6b5504c69494","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"612422d5ba6b4a5c4537f423e9199645468ad80a689801da63ab7edb43f7b835","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"1cbdcdef62bf42688e5d825898c3a59458466c48ad8a4ef3f88d8a1cd04310d6","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc8c6f5322961b56d9906601b20798725df60baeab45ec014fba9f795d5596fd","impliedFormat":1},{"version":"67e435fa530778903f5525904e6645b7368eb5ac622055febd19bb399e328ccd","impliedFormat":1},{"version":"060d305fe4494d8cb2b99d620928d369d1ee55c1645f5e729a2aca07d0f108cb","impliedFormat":1},{"version":"5b22bf96be06fca1e134e3a85351ffe7aa2edf0c9a5bd175b7239ee48186dbf5","impliedFormat":1},{"version":"0c50296ee73dae94efc3f0da4936b1146ca6ce2217acfabb44c19c9a33fa30e5","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"5b48cc670da1dfe926036deaf349085caf822def460a6d50de23f1cc12a5f8cd","impliedFormat":1},{"version":"418f34087d52d001e2688a6282a5de9bf583ff771ed5546af0ae36e4f60a458b","affectsGlobalScope":true,"impliedFormat":1},{"version":"036c9a03b01281f99f8251fdc7088e894566be44b3f139a9d48501a978b611df","impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"04bf1aa481d1adfb16d93d76e44ce71c51c8ef68039d849926551199489637f6","impliedFormat":1},{"version":"2c9adcc85574b002c9a6311ff2141055769e0071856ec979d92ff989042b1f1b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1569ad5969ae0de6ad0bdfaaab0dabcd8878bc3147ab096206eed2019bb84e7f","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"42a350ce4f6f291198dc89833afcc4fd078248b4e1fdc9d05c846c66a670f710","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"b03754211d839cdc48979996525a32eb62130682c2f9801dfc2f25533ce7238d","impliedFormat":1},{"version":"3910dab597c40e173bf0e0d419d3ce9682c54ebf6ae84849f9b829b1451a17ec","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"486c074a5c0f2254345c0d1c9540380f5463999e42d7e1a159305ea823d3c4b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"f4d99ac08c4097a3cc202bec2c7198c19dcdd80d4ec6c62d1356b10d03b119d5","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"ca77e83162eccec633513723d178d4203bdd5465297267696be08013bab0aa1d","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"f61c153d5abbe4381a1fba0d41be0babdd5de51c626ee7ff14cede14dedc33f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7803171d745ab18e77f16bf82e742268ff72b7f7382ab191e4277527580c2d89","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e9ba65cd3d6d194bdda7343f9f2917f7144ead96a924ca58d1a14919992dc20","impliedFormat":1},{"version":"255d948f87f24ffd57bcb2fdf95792fd418a2e1f712a98cf2cce88744d75085c","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"0b0dfb2d3e8420ead06f6a11acfb02ddcec42257e6ce391993e895ba0af86de4","affectsGlobalScope":true,"impliedFormat":1},{"version":"bfd3b3c21a56104693183942e221c1896ee23bcb8f8d91ab0b941f7b32985411","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1}],"root":[81,82],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"checkJs":true,"composite":true,"declaration":true,"declarationMap":true,"downlevelIteration":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"experimentalDecorators":true,"inlineSources":false,"jsx":2,"module":199,"noImplicitOverride":true,"noUnusedLocals":false,"noUnusedParameters":true,"outDir":"./","skipLibCheck":true,"strict":true,"stripInternal":true,"target":7,"verbatimModuleSyntax":true},"referencedMap":[[137,1],[138,1],[139,2],[85,3],[140,4],[141,5],[142,6],[83,7],[143,8],[144,9],[145,10],[146,11],[147,12],[148,13],[149,13],[150,14],[151,15],[152,16],[153,17],[86,7],[84,7],[154,18],[155,19],[156,20],[191,21],[157,22],[158,7],[159,23],[160,24],[109,25],[121,26],[106,27],[122,28],[131,29],[97,30],[98,31],[96,32],[130,33],[125,34],[129,35],[100,36],[118,37],[99,38],[128,39],[94,40],[95,34],[101,41],[102,7],[108,42],[105,41],[92,43],[132,44],[123,45],[112,46],[111,41],[113,47],[116,48],[110,49],[114,50],[126,33],[103,51],[104,52],[117,53],[93,28],[120,54],[119,41],[107,52],[115,55],[124,7],[91,7],[127,56],[162,57],[163,58],[164,59],[165,60],[166,61],[167,62],[168,63],[169,63],[170,64],[171,7],[172,65],[173,66],[175,67],[174,68],[176,69],[177,70],[178,71],[179,72],[180,73],[181,74],[182,75],[183,76],[184,77],[185,78],[186,79],[187,80],[188,81],[87,7],[88,82],[89,7],[90,7],[133,83],[134,84],[135,7],[136,69],[189,85],[190,86],[161,7],[79,7],[63,7],[64,7],[11,7],[13,7],[12,7],[2,7],[14,7],[15,7],[16,7],[17,7],[18,7],[19,7],[20,7],[21,7],[3,7],[22,7],[23,7],[4,7],[24,7],[28,7],[25,7],[26,7],[27,7],[29,7],[30,7],[31,7],[5,7],[32,7],[33,7],[34,7],[35,7],[6,7],[39,7],[36,7],[37,7],[38,7],[40,7],[7,7],[41,7],[46,7],[47,7],[42,7],[43,7],[44,7],[45,7],[8,7],[51,7],[48,7],[49,7],[50,7],[52,7],[9,7],[53,7],[54,7],[55,7],[57,7],[56,7],[58,7],[59,7],[10,7],[60,7],[1,7],[61,7],[62,7],[70,87],[69,7],[66,7],[65,7],[67,88],[68,7],[73,89],[77,90],[78,91],[72,7],[75,92],[76,93],[74,7],[71,7],[80,7],[81,94],[82,93]],"affectedFilesPendingEmit":[[81,49],[82,49]],"emitSignatures":[81,82],"latestChangedDtsFile":"./web-view-mode.test.d.ts","version":"5.8.3"}
|
|
1
|
+
{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../protos/dist/json/reddit/devvit/app_permission/v1/app_permission.d.ts","../../protos/dist/json/reddit/devvit/ads/v1/ads.d.ts","../../protos/dist/json/reddit/devvit/common/v1/app.d.ts","../../protos/dist/json/reddit/devvit/common/v1/feature.d.ts","../../protos/dist/json/devvit/ui/effects/web_view/v1alpha/immersive_mode.d.ts","../../protos/dist/json/devvit/ui/effects/web_view/v1alpha/context.d.ts","../../shared-types/dist/webbit.d.ts","../../shared-types/dist/json.d.ts","../../shared-types/dist/PostData.d.ts","../../shared-types/dist/tid.d.ts","../../shared-types/dist/shared/baseContext.d.ts","../../shared-types/dist/shared/client.d.ts","../../shared-types/dist/client/client-context.d.ts","../../shared-types/dist/client/devvit-global.d.ts","../../../node_modules/esbuild/lib/main.d.ts","../package.json","../tools/build.ts","../tools/wvs.js","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/@types/node/node_modules/undici-types/utility.d.ts","../../../node_modules/@types/node/node_modules/undici-types/header.d.ts","../../../node_modules/@types/node/node_modules/undici-types/readable.d.ts","../../../node_modules/@types/node/node_modules/undici-types/fetch.d.ts","../../../node_modules/@types/node/node_modules/undici-types/formdata.d.ts","../../../node_modules/@types/node/node_modules/undici-types/connector.d.ts","../../../node_modules/@types/node/node_modules/undici-types/client-stats.d.ts","../../../node_modules/@types/node/node_modules/undici-types/client.d.ts","../../../node_modules/@types/node/node_modules/undici-types/errors.d.ts","../../../node_modules/@types/node/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/@types/node/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/@types/node/node_modules/undici-types/global-origin.d.ts","../../../node_modules/@types/node/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/@types/node/node_modules/undici-types/pool.d.ts","../../../node_modules/@types/node/node_modules/undici-types/handlers.d.ts","../../../node_modules/@types/node/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/@types/node/node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/@types/node/node_modules/undici-types/h2c-client.d.ts","../../../node_modules/@types/node/node_modules/undici-types/agent.d.ts","../../../node_modules/@types/node/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/@types/node/node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/@types/node/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/@types/node/node_modules/undici-types/mock-client.d.ts","../../../node_modules/@types/node/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/@types/node/node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/@types/node/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/@types/node/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/@types/node/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/@types/node/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/@types/node/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/@types/node/node_modules/undici-types/api.d.ts","../../../node_modules/@types/node/node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/@types/node/node_modules/undici-types/interceptors.d.ts","../../../node_modules/@types/node/node_modules/undici-types/util.d.ts","../../../node_modules/@types/node/node_modules/undici-types/cookies.d.ts","../../../node_modules/@types/node/node_modules/undici-types/patch.d.ts","../../../node_modules/@types/node/node_modules/undici-types/websocket.d.ts","../../../node_modules/@types/node/node_modules/undici-types/eventsource.d.ts","../../../node_modules/@types/node/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/@types/node/node_modules/undici-types/content-type.d.ts","../../../node_modules/@types/node/node_modules/undici-types/cache.d.ts","../../../node_modules/@types/node/node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts"],"fileIdsList":[[85,137,138,140,157,158],[85,139,140,157,158],[140,157,158],[85,140,145,157,158,176],[85,140,141,146,151,157,158,160,173,184],[85,140,141,142,151,157,158,160],[85,140,157,158],[85,140,143,157,158,185],[85,140,144,145,152,157,158,162],[85,140,145,157,158,173,181],[85,140,146,148,151,157,158,160],[85,139,140,147,157,158],[85,140,148,149,157,158],[85,140,150,151,157,158],[85,139,140,151,157,158],[85,140,151,152,153,157,158,173,184],[85,140,151,152,153,157,158,168,173,176],[85,132,140,148,151,154,157,158,160,173,184],[85,140,151,152,154,155,157,158,160,173,181,184],[85,140,154,156,157,158,173,181,184],[83,84,85,86,87,88,89,90,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190],[85,140,151,157,158],[85,140,157,158,159,184],[85,140,148,151,157,158,160,173],[85,97,100,103,104,140,157,158,184],[85,100,140,157,158,173,184],[85,100,104,140,157,158,184],[85,140,157,158,173],[85,94,140,157,158],[85,98,140,157,158],[85,96,97,100,140,157,158,184],[85,140,157,158,160,181],[85,140,157,158,191],[85,94,140,157,158,191],[85,96,100,140,157,158,160,184],[85,91,92,93,95,99,140,151,157,158,173,184],[85,100,109,117,140,157,158],[85,92,98,140,157,158],[85,100,126,127,140,157,158],[85,92,95,100,140,157,158,176,184,191],[85,100,140,157,158],[85,96,100,140,157,158,184],[85,91,140,157,158],[85,94,95,96,98,99,100,101,102,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,127,128,129,130,131,140,157,158],[85,100,119,122,140,148,157,158],[85,100,109,110,111,140,157,158],[85,98,100,110,112,140,157,158],[85,99,140,157,158],[85,92,94,100,140,157,158],[85,100,104,110,112,140,157,158],[85,104,140,157,158],[85,98,100,103,140,157,158,184],[85,92,96,100,109,140,157,158],[85,100,119,140,157,158],[85,112,140,157,158],[85,94,100,126,140,157,158,176,189,191],[85,140,157,158,162],[85,140,157,158,163],[85,139,140,157,158,164],[85,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190],[85,140,157,158,166],[85,140,157,158,167],[85,140,151,157,158,168,169],[85,140,157,158,168,170,185,187],[85,140,152,157,158],[85,140,151,157,158,173,174,176],[85,140,157,158,175,176],[85,140,157,158,173,174],[85,140,157,158,176],[85,140,157,158,177],[85,137,140,157,158,173,178,184],[85,140,151,157,158,179,180],[85,140,157,158,179,180],[85,140,145,157,158,160,173,181],[85,140,157,158,182],[85,140,157,158,160,183],[85,140,154,157,158,167,184],[85,140,145,157,158,185],[85,140,157,158,173,186],[85,140,157,158,159,187],[85,140,157,158,188],[85,140,145,157,158],[85,132,140,157,158],[85,140,157,158,189],[85,132,140,151,153,157,158,164,173,176,184,186,187,189],[85,140,157,158,173,190],[65,67,68,69,85,140,157,158],[65,66,85,140,157,158],[72,85,140,157,158],[74,75,76,85,140,157,158],[69,70,71,77,85,140,157,158],[73,74,85,140,157,158],[70,85,140,157,158],[78,79,80,85,140,141,152,157,158]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"8baba0ea3c8dd09f08640e9f1aecb2331bc434a8bd066e9414094bf7cf4f7649","impliedFormat":99},{"version":"7479db9f1098718bc606ebc836d36277c9471e913fd1359200a936af2f3f8b3f","impliedFormat":99},{"version":"5aff333d2464eb49a62cd9f0821d5624fd3f9ca840f8288c3ba81e76e0d81779","impliedFormat":99},{"version":"5f3402ed2df0e95619aa90a6fc58bc1b29d3df07c421829060255ccd50123db5","impliedFormat":99},{"version":"fd053a652acd3a2c7fc5ff6b7e628567dbc82d69414adbf8b40445bae9006342","impliedFormat":99},{"version":"9b8bbeaf84f7f8b68339df961448f0b2b27cfe8adf58aef7fe2e4d8d0af7cc73","impliedFormat":99},{"version":"6617d713c28b1bf882c39a3620c4db41e568f139217625701a71dd9a90873d3a","impliedFormat":99},{"version":"d211569292bb691b2476beff57b1972d4a94f999e8d7bbfad7605e21b4d413ad","impliedFormat":99},{"version":"e43a0516850ba3ea422d0d6649784f0323222dec22a01bbd3e256fb447bba6c4","impliedFormat":99},{"version":"d75ce101b61036b915e1f5e5e5b872dcfdd7f8cac22186cf4049fcceac4395ac","impliedFormat":99},{"version":"480d92d91f63183db46032f1eeec63c2da6c121bfcd52d2c026638034c74264e","impliedFormat":99},{"version":"1b6350dd5736fb570fae8bb8fed3ebf9db6ca8a3b9cf20b99a6da7bc21b7f7a3","impliedFormat":99},{"version":"16f78a145325f9cbf57d296edae7149d7540a49fe3f89eb3e3ac11d39cd849ca","impliedFormat":99},{"version":"bab34382fcce04bd9fc5b0501580a9d872cf7aeff8c4d3e52243e86cbfd6d072","impliedFormat":99},{"version":"161c8e0690c46021506e32fda85956d785b70f309ae97011fd27374c065cac9b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d32f57d901b208727afb7950e9438cb617261d6c20b91b824bf03d29250b10c0","signature":"c8da7201c279da89a34bbe420430d1b4c872bfca82cccab37a2c849da1283c22"},{"version":"d22e104bf1e9d11a9b35e9e13339f04d23de15dda13d4274f98ca8c9ee5bcbb8","signature":"9f2cb4eb5a50b225c59f60849e5f3695a595661921877b1fb6314feaf08d9271","impliedFormat":99},{"version":"779e6b7eede17f7e7e36c254f18eaf374e1d9ca457092f9f29d7cf6a3a3ab352","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":99},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"10ec5e82144dfac6f04fa5d1d6c11763b3e4dbbac6d99101427219ab3e2ae887","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"074de5b2fdead0165a2757e3aaef20f27a6347b1c36adea27d51456795b37682","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"24371e69a38fc33e268d4a8716dbcda430d6c2c414a99ff9669239c4b8f40dea","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"3e11fce78ad8c0e1d1db4ba5f0652285509be3acdd519529bc8fcef85f7dafd9","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"9c32412007b5662fd34a8eb04292fb5314ec370d7016d1c2fb8aa193c807fe22","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"6ebe8ebb8659aaa9d1acbf3710d7dae3e923e97610238b9511c25dc39023a166","impliedFormat":1},{"version":"e85d7f8068f6a26710bff0cc8c0fc5e47f71089c3780fbede05857331d2ddec9","impliedFormat":1},{"version":"7befaf0e76b5671be1d47b77fcc65f2b0aad91cc26529df1904f4a7c46d216e9","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"c63b9ada8c72f95aac5db92aea07e5e87ec810353cdf63b2d78f49a58662cf6c","impliedFormat":1},{"version":"1cc2a09e1a61a5222d4174ab358a9f9de5e906afe79dbf7363d871a7edda3955","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"b64d4d1c5f877f9c666e98e833f0205edb9384acc46e98a1fef344f64d6aba44","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"c9381908473a1c92cb8c516b184e75f4d226dad95c3a85a5af35f670064d9a2f","impliedFormat":1},{"version":"f724236417941ea77ec8d38c6b7021f5fb7f8521c7f8c1538e87661f2c6a0774","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"c06b2652ffeb89afd0f1c52c165ced77032f9cd09bc481153fbd6b5504c69494","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"612422d5ba6b4a5c4537f423e9199645468ad80a689801da63ab7edb43f7b835","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"1cbdcdef62bf42688e5d825898c3a59458466c48ad8a4ef3f88d8a1cd04310d6","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc8c6f5322961b56d9906601b20798725df60baeab45ec014fba9f795d5596fd","impliedFormat":1},{"version":"67e435fa530778903f5525904e6645b7368eb5ac622055febd19bb399e328ccd","impliedFormat":1},{"version":"060d305fe4494d8cb2b99d620928d369d1ee55c1645f5e729a2aca07d0f108cb","impliedFormat":1},{"version":"5b22bf96be06fca1e134e3a85351ffe7aa2edf0c9a5bd175b7239ee48186dbf5","impliedFormat":1},{"version":"0c50296ee73dae94efc3f0da4936b1146ca6ce2217acfabb44c19c9a33fa30e5","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"5b48cc670da1dfe926036deaf349085caf822def460a6d50de23f1cc12a5f8cd","impliedFormat":1},{"version":"418f34087d52d001e2688a6282a5de9bf583ff771ed5546af0ae36e4f60a458b","affectsGlobalScope":true,"impliedFormat":1},{"version":"036c9a03b01281f99f8251fdc7088e894566be44b3f139a9d48501a978b611df","impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"04bf1aa481d1adfb16d93d76e44ce71c51c8ef68039d849926551199489637f6","impliedFormat":1},{"version":"2c9adcc85574b002c9a6311ff2141055769e0071856ec979d92ff989042b1f1b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1569ad5969ae0de6ad0bdfaaab0dabcd8878bc3147ab096206eed2019bb84e7f","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"42a350ce4f6f291198dc89833afcc4fd078248b4e1fdc9d05c846c66a670f710","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"b03754211d839cdc48979996525a32eb62130682c2f9801dfc2f25533ce7238d","impliedFormat":1},{"version":"3910dab597c40e173bf0e0d419d3ce9682c54ebf6ae84849f9b829b1451a17ec","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"486c074a5c0f2254345c0d1c9540380f5463999e42d7e1a159305ea823d3c4b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"f4d99ac08c4097a3cc202bec2c7198c19dcdd80d4ec6c62d1356b10d03b119d5","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"ca77e83162eccec633513723d178d4203bdd5465297267696be08013bab0aa1d","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"f61c153d5abbe4381a1fba0d41be0babdd5de51c626ee7ff14cede14dedc33f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7803171d745ab18e77f16bf82e742268ff72b7f7382ab191e4277527580c2d89","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e9ba65cd3d6d194bdda7343f9f2917f7144ead96a924ca58d1a14919992dc20","impliedFormat":1},{"version":"255d948f87f24ffd57bcb2fdf95792fd418a2e1f712a98cf2cce88744d75085c","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"0b0dfb2d3e8420ead06f6a11acfb02ddcec42257e6ce391993e895ba0af86de4","affectsGlobalScope":true,"impliedFormat":1},{"version":"bfd3b3c21a56104693183942e221c1896ee23bcb8f8d91ab0b941f7b32985411","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1}],"root":[81,82],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"checkJs":true,"composite":true,"declaration":true,"declarationMap":true,"downlevelIteration":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"experimentalDecorators":true,"inlineSources":false,"jsx":2,"module":199,"noImplicitOverride":true,"noUnusedLocals":false,"noUnusedParameters":true,"outDir":"./","skipLibCheck":true,"strict":true,"stripInternal":true,"target":7,"verbatimModuleSyntax":true},"referencedMap":[[137,1],[138,1],[139,2],[85,3],[140,4],[141,5],[142,6],[83,7],[143,8],[144,9],[145,10],[146,11],[147,12],[148,13],[149,13],[150,14],[151,15],[152,16],[153,17],[86,7],[84,7],[154,18],[155,19],[156,20],[191,21],[157,22],[158,7],[159,23],[160,24],[109,25],[121,26],[106,27],[122,28],[131,29],[97,30],[98,31],[96,32],[130,33],[125,34],[129,35],[100,36],[118,37],[99,38],[128,39],[94,40],[95,34],[101,41],[102,7],[108,42],[105,41],[92,43],[132,44],[123,45],[112,46],[111,41],[113,47],[116,48],[110,49],[114,50],[126,33],[103,51],[104,52],[117,53],[93,28],[120,54],[119,41],[107,52],[115,55],[124,7],[91,7],[127,56],[162,57],[163,58],[164,59],[165,60],[166,61],[167,62],[168,63],[169,63],[170,64],[171,7],[172,65],[173,66],[175,67],[174,68],[176,69],[177,70],[178,71],[179,72],[180,73],[181,74],[182,75],[183,76],[184,77],[185,78],[186,79],[187,80],[188,81],[87,7],[88,82],[89,7],[90,7],[133,83],[134,84],[135,7],[136,69],[189,85],[190,86],[161,7],[79,7],[63,7],[64,7],[11,7],[13,7],[12,7],[2,7],[14,7],[15,7],[16,7],[17,7],[18,7],[19,7],[20,7],[21,7],[3,7],[22,7],[23,7],[4,7],[24,7],[28,7],[25,7],[26,7],[27,7],[29,7],[30,7],[31,7],[5,7],[32,7],[33,7],[34,7],[35,7],[6,7],[39,7],[36,7],[37,7],[38,7],[40,7],[7,7],[41,7],[46,7],[47,7],[42,7],[43,7],[44,7],[45,7],[8,7],[51,7],[48,7],[49,7],[50,7],[52,7],[9,7],[53,7],[54,7],[55,7],[57,7],[56,7],[58,7],[59,7],[10,7],[60,7],[1,7],[61,7],[62,7],[70,87],[69,7],[66,7],[65,7],[67,88],[68,7],[73,89],[77,90],[78,91],[72,7],[75,92],[76,93],[74,7],[71,7],[80,7],[81,94],[82,93]],"affectedFilesPendingEmit":[[81,49],[82,49]],"emitSignatures":[81,82],"latestChangedDtsFile":"./web-view-mode.test.d.ts","version":"5.8.3"}
|