@frames.js/debugger
Version:
Debug your Frames.js applications
1 lines • 15.4 kB
JavaScript
;(()=>{var e={};e.id=399,e.ids=[399],e.modules={20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},49411:e=>{e.exports=require("node:path")},45819:(e,t,r)=>{r.r(t),r.d(t,{headerHooks:()=>U,originalPathname:()=>z,patchFetch:()=>O,requestAsyncStorage:()=>_,routeModule:()=>P,serverHooks:()=>S,staticGenerationAsyncStorage:()=>x,staticGenerationBailout:()=>k});var s={};r.r(s),r.d(s,{GET:()=>v,POST:()=>R,isSpecificationValid:()=>w});var n=r(95419),a=r(69108),i=r(99678);r(37751),r(40002);var o=r(9759);r(95192),r(10893),r(60714);var u=r(29698);r(10441),r(73119),r(27278),r(92595),r(66125),r(98604);var c=r(74491);async function l(e){try{return e().catch(e=>e instanceof Error?e:TypeError("Unexpected error, check the console for details"))}catch(e){return TypeError("Unexpected error, check the console for details")}}var d=r(53797),f=d.z.object({type:d.z.literal("message"),message:d.z.string().min(1)}),p=d.z.object({type:d.z.literal("frame"),frameUrl:d.z.string().min(1).url()}),m=d.z.object({type:d.z.literal("form"),url:d.z.string().min(1).url(),title:d.z.string().min(1)}),g=d.z.preprocess(e=>"object"!=typeof e||null===e||"type"in e?e:{type:"message",...e},d.z.discriminatedUnion("type",[p,f,m])),h=d.z.object({message:d.z.string().min(1)});async function y(e){try{let t="nextUrl"in e?e.nextUrl.searchParams:new URL(e.url).searchParams,r=await e.json(),s="post_redirect"===t.get("postType"),n="tx"===t.get("postType"),a=t.get("postUrl"),i="true"===t.get("multispecification"),u=t.get("specification")??"farcaster";if(!a)return Response.json({message:"postUrl parameter not found"},{status:400});let f=await fetch(a,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},redirect:s?"manual":void 0,body:JSON.stringify(r)});if(f.status>=500){let e=await l(()=>f.clone().json());if(e instanceof Error)return Response.json({message:e.message},{status:f.status});let t=h.safeParse(e);if(t.success)return Response.json({message:t.data.message},{status:f.status});return console.error(e),Response.json({message:"Frame server returned an unexpected error."},{status:500})}if(302===f.status){let e=f.headers.get("location");if(!e)return Response.json({message:"Frame server returned a redirect without a location header"},{status:500});return Response.json({location:e},{status:302})}if(s)return Response.json({message:"Frame server did not return a 302 redirect"},{status:500});if(f.status>=400&&f.status<500){let e=await l(()=>f.clone().json());if(e instanceof Error)return Response.json({message:e.message},{status:f.status});let t=h.safeParse(e);if(t.success)return Response.json({message:t.data.message},{status:f.status});return console.error(e),Response.json({message:"Frame server returned an unexpected error."},{status:f.status})}if(200!==f.status)return Response.json({message:`Frame server returned a non-200 status code: ${f.status}`},{status:500});if(n){let e=await l(()=>f.clone().json());if(e instanceof Error)return Response.json({message:e.message},{status:500});return Response.json(e)}if(f.headers.get("content-type")?.toLowerCase().includes("application/json")){if(!(await d.z.promise(g).safeParseAsync(f.clone().json())).success)throw Error("Invalid frame response");let e=new Headers(f.headers);return e.delete("content-encoding"),new Response(f.body,{headers:e,status:f.status,statusText:f.statusText})}let p=await f.text();if(i){let e=await (0,o.Q)({html:p,frameUrl:r.untrustedData.url,fallbackPostUrl:r.untrustedData.url,fromRequestMethod:"POST"});return Response.json(e)}if(!("string"==typeof u&&["farcaster","farcaster_v2","openframes"].includes(u)))return Response.json({message:"Invalid specification"},{status:400});let m=await (0,c.$h)({htmlString:p,frameUrl:r.untrustedData.url,url:r.untrustedData.url,fromRequestMethod:"POST",specification:u});return Response.json(m)}catch(e){return console.error(e),Response.json({message:String(e)},{status:500})}}var b=r(40205),j=r(15911);function w(e){return"string"==typeof e&&["farcaster","farcaster_v2","openframes"].includes(e)}async function v(e){let t=e.nextUrl.searchParams.get("url"),r=e.nextUrl.searchParams.get("specification")??"farcaster",s=e.nextUrl.searchParams.get("actions");if(!t)return Response.json({message:"Invalid URL"},{status:400});if(!w(r))return Response.json({message:"Invalid specification"},{status:400});try{let e=await fetch(t);if(e.headers.get("content-type")?.includes("application/json")&&"farcaster"===r&&s){let s=await e.json(),n=function({json:e,specification:t="farcaster"}){return function({actionMetadata:e}){return{farcaster:function(e,t){let r={...e};return(r.name?r.name=(0,u.Gu)(t,"name",e=>{if(e.length>30)throw Error("Name must be less than 30 characters");return e},r.name):t.error("name","Name is required"),r.icon?r.icon=(0,u.Gu)(t,"icon",e=>{if(!e)throw Error("Icon is required");return e},r.icon):t.error("icon","Icon is required"),r.description?r.description=(0,u.Gu)(t,"description",e=>{if(e.length>80)throw Error("Description must be less than 80 characters");return e},r.description):t.error("description","Description is required"),r.aboutUrl?r.aboutUrl=(0,u.Gu)(t,"aboutUrl",e=>{if(!e)throw Error("About URL is required");return e},r.aboutUrl):t.error("aboutUrl","About URL is required"),r.action?"post"!==r.action.type&&t.error("action",`Invalid action type "${r.action.type}"`):t.error("action","Action is required"),t.hasErrors())?{status:"failure",action:r,reports:t.toObject()}:{status:"success",action:r,reports:t.toObject()}}(e,(0,b.J)("farcaster"))}}({actionMetadata:e})[t]}({json:s,specification:r});return Response.json({...n,type:"action",url:t})}let n=await e.text(),a=await (0,o.Q)({html:n,frameUrl:t,fallbackPostUrl:t,fromRequestMethod:"GET",parseSettings:{farcaster_v2:{parseManifest:!0,strict:!1}}});return Response.json({...a,type:"frame"})}catch(e){if(console.error(e),e instanceof Error)return Response.json({message:e.message},{status:500});return Response.json({message:e},{status:500})}}async function R(e){return await (0,j.H)(e),y(e)}let P=new n.AppRouteRouteModule({definition:{kind:a.x.APP_ROUTE,page:"/frames/route",pathname:"/frames",filename:"route",bundlePath:"app/frames/route"},resolvedPagePath:"/Users/davidfurlong/Projects/active/frames.js/packages/debugger/app/frames/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:_,staticGenerationAsyncStorage:x,serverHooks:S,headerHooks:U,staticGenerationBailout:k}=P,z="/frames/route";function O(){return(0,i.patchFetch)({serverHooks:S,staticGenerationAsyncStorage:x})}},15911:(e,t,r)=>{r.d(t,{K:()=>f,H:()=>p});var s=r(31542);r(68616);let n=require("node:fs/promises");var a=r.n(n),i=r(49411),o=r.n(i);let u=require("node:os");var c=r.n(u);function l(e){return Array.from(e).sort().map(e=>e.join("=")).join("&")}function d(){return o().join(c().tmpdir(),"framesjsmocks.json")}async function f(e,t){let r;let s=d();if(!await a().access(s,a().constants.F_OK).then(()=>!0).catch(()=>!1))return;let n=await a().readFile(s,"utf-8");try{r=JSON.parse(n)}catch(e){console.error(e);return}if(!r.enabled)return;let i=new URL(e.url).searchParams,o=`/${t.join("/")}?${l(i)}`,u=r.requests[o];if(u?.ok!=null)return console.log(`info: Mock hub: Found mock for ${o}, returning ${u.ok?"200":"404"}`),new Response(JSON.stringify(u),{headers:{"content-type":"application/json"},status:u.ok?200:404})}async function p(e){let{mockData:t,untrustedData:r}=await e.clone().json();if(!t||!r?.castId)return;let{fid:s,castId:n}=r,i=`/v1/linkById?${l(new URLSearchParams({fid:s,target_fid:n.fid,link_type:"follow"}))}`,o=`/v1/linkById?${l(new URLSearchParams({fid:n.fid,target_fid:s,link_type:"follow"}))}`,u=`/v1/reactionById?${l(new URLSearchParams({fid:s,reaction_type:"1",target_fid:n.fid,target_hash:n.hash}))}`,c=`/v1/reactionById?${l(new URLSearchParams({fid:s,reaction_type:"2",target_fid:n.fid,target_hash:n.hash}))}`,f=d(),p={enabled:t.enabled,requests:{[i]:{ok:t.enabled&&t.requesterFollowsCaster},[o]:{ok:t.enabled&&t.casterFollowsRequester},[u]:{ok:t.enabled&&t.likedCast},[c]:{ok:t.enabled&&t.recastedCast}}};await a().writeFile(f,JSON.stringify(p,null,2))}(0,r(42053).h)([f,p]),(0,s.j)("0a960cab62b86f19f05335d5152dbfe9d9adee9d",f),(0,s.j)("6af4d9a628e98b577746a391006ba84ccaf97328",p)},86843:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createProxy",{enumerable:!0,get:function(){return s}});let s=r(18195).createClientModuleProxy},96987:(e,t,r)=>{let{createProxy:s}=r(86843);e.exports=s("/Users/davidfurlong/Projects/active/frames.js/packages/debugger/node_modules/next/dist/client/image-component.js")},34470:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getImgProps",{enumerable:!0,get:function(){return o}}),r(46031);let s=r(76184),n=r(64180);function a(e){return void 0!==e.default}function i(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function o(e,t){var r;let o,u,c,{src:l,sizes:d,unoptimized:f=!1,priority:p=!1,loading:m,className:g,quality:h,width:y,height:b,fill:j=!1,style:w,onLoad:v,onLoadingComplete:R,placeholder:P="empty",blurDataURL:_,fetchPriority:x,layout:S,objectFit:U,objectPosition:k,lazyBoundary:z,lazyRoot:O,...E}=e,{imgConf:C,showAltText:I,blurComplete:M,defaultLoader:q}=t,F=C||n.imageConfigDefault;if("allSizes"in F)o=F;else{let e=[...F.deviceSizes,...F.imageSizes].sort((e,t)=>e-t),t=F.deviceSizes.sort((e,t)=>e-t);o={...F,allSizes:e,deviceSizes:t}}let A=E.loader||q;delete E.loader,delete E.srcSet;let T="__next_img_default"in A;if(T){if("custom"===o.loader)throw Error('Image with src "'+l+'" is missing "loader" prop.\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader')}else{let e=A;A=t=>{let{config:r,...s}=t;return e(s)}}if(S){"fill"===S&&(j=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[S];e&&(w={...w,...e});let t={responsive:"100vw",fill:"100vw"}[S];t&&!d&&(d=t)}let L="",D=i(y),G=i(b);if("object"==typeof(r=l)&&(a(r)||void 0!==r.src)){let e=a(l)?l.default:l;if(!e.src)throw Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received "+JSON.stringify(e));if(!e.height||!e.width)throw Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received "+JSON.stringify(e));if(u=e.blurWidth,c=e.blurHeight,_=_||e.blurDataURL,L=e.src,!j){if(D||G){if(D&&!G){let t=D/e.width;G=Math.round(e.height*t)}else if(!D&&G){let t=G/e.height;D=Math.round(e.width*t)}}else D=e.width,G=e.height}}let N=!p&&("lazy"===m||void 0===m);(!(l="string"==typeof l?l:L)||l.startsWith("data:")||l.startsWith("blob:"))&&(f=!0,N=!1),o.unoptimized&&(f=!0),T&&l.endsWith(".svg")&&!o.dangerouslyAllowSVG&&(f=!0),p&&(x="high");let $=i(h),B=Object.assign(j?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:U,objectPosition:k}:{},I?{}:{color:"transparent"},w),J=M||"empty"===P?null:"blur"===P?'url("data:image/svg+xml;charset=utf-8,'+(0,s.getImageBlurSvg)({widthInt:D,heightInt:G,blurWidth:u,blurHeight:c,blurDataURL:_||"",objectFit:B.objectFit})+'")':'url("'+P+'")',H=J?{backgroundSize:B.objectFit||"cover",backgroundPosition:B.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:J}:{},V=function(e){let{config:t,src:r,unoptimized:s,width:n,quality:a,sizes:i,loader:o}=e;if(s)return{src:r,srcSet:void 0,sizes:void 0};let{widths:u,kind:c}=function(e,t,r){let{deviceSizes:s,allSizes:n}=e;if(r){let e=/(^|\s)(1?\d?\d)vw/g,t=[];for(let s;s=e.exec(r);s)t.push(parseInt(s[2]));if(t.length){let e=.01*Math.min(...t);return{widths:n.filter(t=>t>=s[0]*e),kind:"w"}}return{widths:n,kind:"w"}}return"number"!=typeof t?{widths:s,kind:"w"}:{widths:[...new Set([t,2*t].map(e=>n.find(t=>t>=e)||n[n.length-1]))],kind:"x"}}(t,n,i),l=u.length-1;return{sizes:i||"w"!==c?i:"100vw",srcSet:u.map((e,s)=>o({config:t,src:r,quality:a,width:e})+" "+("w"===c?e:s+1)+c).join(", "),src:o({config:t,src:r,quality:a,width:u[l]})}}({config:o,src:l,unoptimized:f,width:D,quality:$,sizes:d,loader:A});return{props:{...E,loading:N?"lazy":m,fetchPriority:x,width:D,height:G,decoding:"async",className:g,style:{...B,...H},sizes:V.sizes,srcSet:V.srcSet,src:V.src},meta:{unoptimized:f,priority:p,placeholder:P,fill:j}}}},76184:(e,t)=>{function r(e){let{widthInt:t,heightInt:r,blurWidth:s,blurHeight:n,blurDataURL:a,objectFit:i}=e,o=s?40*s:t,u=n?40*n:r,c=o&&u?"viewBox='0 0 "+o+" "+u+"'":"";return"%3Csvg xmlns='http://www.w3.org/2000/svg' "+c+"%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='"+(c?"none":"contain"===i?"xMidYMid":"cover"===i?"xMidYMid slice":"none")+"' style='filter: url(%23b);' href='"+a+"'/%3E%3C/svg%3E"}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getImageBlurSvg",{enumerable:!0,get:function(){return r}})},64180:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{VALID_LOADERS:function(){return r},imageConfigDefault:function(){return s}});let r=["default","imgix","cloudinary","akamai","custom"],s={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:60,formats:["image/webp"],dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"inline",remotePatterns:[],unoptimized:!1}},37751:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getImageProps:function(){return o},default:function(){return u}});let s=r(46783),n=r(34470),a=r(96987),i=s._(r(94534)),o=e=>{let{props:t}=(0,n.getImgProps)(e,{defaultLoader:i.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[e,r]of Object.entries(t))void 0===r&&delete t[e];return{props:t}},u=a.Image},94534:(e,t)=>{function r(e){let{config:t,src:r,width:s,quality:n}=e;return t.path+"?url="+encodeURIComponent(r)+"&w="+s+"&q="+(n||75)}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}}),r.__next_img_default=!0;let s=r},46031:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},46783:(e,t,r)=>{function s(e){return e&&e.__esModule?e:{default:e}}r.r(t),r.d(t,{_:()=>s,_interop_require_default:()=>s})}};var t=require("../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[1638,9947,1027,9014,9222,4491],()=>r(45819));module.exports=s})();