@farcaster/frame-sdk 0.0.3 → 0.0.4

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.
@@ -0,0 +1,12 @@
1
+ "use strict";var frame=(()=>{var je=Object.create;var F=Object.defineProperty;var Re=Object.getOwnPropertyDescriptor;var Le=Object.getOwnPropertyNames;var Ae=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty;var Ce=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),X=(e,r)=>{for(var t in r)F(e,t,{get:r[t],enumerable:!0})},te=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of Le(r))!Me.call(e,n)&&n!==t&&F(e,n,{get:()=>r[n],enumerable:!(o=Re(r,n))||o.enumerable});return e};var Te=(e,r,t)=>(t=e!=null?je(Ae(e)):{},te(r||!e||!e.__esModule?F(t,"default",{value:e,enumerable:!0}):t,e)),ke=e=>te(F({},"__esModule",{value:!0}),e);var oe=Ce((or,Q)=>{"use strict";var Se=Object.prototype.hasOwnProperty,b="~";function w(){}Object.create&&(w.prototype=Object.create(null),new w().__proto__||(b=!1));function _e(e,r,t){this.fn=e,this.context=r,this.once=t||!1}function ne(e,r,t,o,n){if(typeof t!="function")throw new TypeError("The listener must be a function");var a=new _e(t,o||e,n),i=b?b+r:r;return e._events[i]?e._events[i].fn?e._events[i]=[e._events[i],a]:e._events[i].push(a):(e._events[i]=a,e._eventsCount++),e}function q(e,r){--e._eventsCount===0?e._events=new w:delete e._events[r]}function p(){this._events=new w,this._eventsCount=0}p.prototype.eventNames=function(){var r=[],t,o;if(this._eventsCount===0)return r;for(o in t=this._events)Se.call(t,o)&&r.push(b?o.slice(1):o);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(t)):r};p.prototype.listeners=function(r){var t=b?b+r:r,o=this._events[t];if(!o)return[];if(o.fn)return[o.fn];for(var n=0,a=o.length,i=new Array(a);n<a;n++)i[n]=o[n].fn;return i};p.prototype.listenerCount=function(r){var t=b?b+r:r,o=this._events[t];return o?o.fn?1:o.length:0};p.prototype.emit=function(r,t,o,n,a,i){var l=b?b+r:r;if(!this._events[l])return!1;var s=this._events[l],c=arguments.length,f,u;if(s.fn){switch(s.once&&this.removeListener(r,s.fn,void 0,!0),c){case 1:return s.fn.call(s.context),!0;case 2:return s.fn.call(s.context,t),!0;case 3:return s.fn.call(s.context,t,o),!0;case 4:return s.fn.call(s.context,t,o,n),!0;case 5:return s.fn.call(s.context,t,o,n,a),!0;case 6:return s.fn.call(s.context,t,o,n,a,i),!0}for(u=1,f=new Array(c-1);u<c;u++)f[u-1]=arguments[u];s.fn.apply(s.context,f)}else{var d=s.length,h;for(u=0;u<d;u++)switch(s[u].once&&this.removeListener(r,s[u].fn,void 0,!0),c){case 1:s[u].fn.call(s[u].context);break;case 2:s[u].fn.call(s[u].context,t);break;case 3:s[u].fn.call(s[u].context,t,o);break;case 4:s[u].fn.call(s[u].context,t,o,n);break;default:if(!f)for(h=1,f=new Array(c-1);h<c;h++)f[h-1]=arguments[h];s[u].fn.apply(s[u].context,f)}}return!0};p.prototype.on=function(r,t,o){return ne(this,r,t,o,!1)};p.prototype.once=function(r,t,o){return ne(this,r,t,o,!0)};p.prototype.removeListener=function(r,t,o,n){var a=b?b+r:r;if(!this._events[a])return this;if(!t)return q(this,a),this;var i=this._events[a];if(i.fn)i.fn===t&&(!n||i.once)&&(!o||i.context===o)&&q(this,a);else{for(var l=0,s=[],c=i.length;l<c;l++)(i[l].fn!==t||n&&!i[l].once||o&&i[l].context!==o)&&s.push(i[l]);s.length?this._events[a]=s.length===1?s[0]:s:q(this,a)}return this};p.prototype.removeAllListeners=function(r){var t;return r?(t=b?b+r:r,this._events[t]&&q(this,t)):(this._events=new w,this._eventsCount=0),this};p.prototype.off=p.prototype.removeListener;p.prototype.addListener=p.prototype.on;p.prefixed=b;p.EventEmitter=p;typeof Q<"u"&&(Q.exports=p)});var tr={};X(tr,{default:()=>rr});var P=Te(oe(),1);var ae=Symbol("Comlink.proxy"),Ne=Symbol("Comlink.endpoint"),Fe=Symbol("Comlink.releaseProxy"),Z=Symbol("Comlink.finalizer"),H=Symbol("Comlink.thrown"),ie=e=>typeof e=="object"&&e!==null||typeof e=="function",qe={canHandle:e=>ie(e)&&e[ae],serialize(e){let{port1:r,port2:t}=new MessageChannel;return ce(e,r),[t,[t]]},deserialize(e){return e.start(),re(e)}},Be={canHandle:e=>ie(e)&&H in e,serialize({value:e}){let r;return e instanceof Error?r={isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:r={isError:!1,value:e},[r,[]]},deserialize(e){throw e.isError?Object.assign(new Error(e.value.message),e.value):e.value}},ue=new Map([["proxy",qe],["throw",Be]]);function He(e,r){for(let t of e)if(r===t||t==="*"||t instanceof RegExp&&t.test(r))return!0;return!1}function ce(e,r=globalThis,t=["*"]){r.addEventListener("message",function o(n){if(!n||!n.data)return;if(!He(t,n.origin)){console.warn(`Invalid origin '${n.origin}' for comlink proxy`);return}let{id:a,type:i,path:l}=Object.assign({path:[]},n.data),s=(n.data.argumentList||[]).map(x),c;try{let f=l.slice(0,-1).reduce((d,h)=>d[h],e),u=l.reduce((d,h)=>d[h],e);switch(i){case"GET":c=u;break;case"SET":f[l.slice(-1)[0]]=x(n.data.value),c=!0;break;case"APPLY":c=u.apply(f,s);break;case"CONSTRUCT":{let d=new u(...s);c=Ue(d)}break;case"ENDPOINT":{let{port1:d,port2:h}=new MessageChannel;ce(e,h),c=Ie(d,[d])}break;case"RELEASE":c=void 0;break;default:return}}catch(f){c={value:f,[H]:0}}Promise.resolve(c).catch(f=>({value:f,[H]:0})).then(f=>{let[u,d]=W(f);r.postMessage(Object.assign(Object.assign({},u),{id:a}),d),i==="RELEASE"&&(r.removeEventListener("message",o),le(r),Z in e&&typeof e[Z]=="function"&&e[Z]())}).catch(f=>{let[u,d]=W({value:new TypeError("Unserializable return value"),[H]:0});r.postMessage(Object.assign(Object.assign({},u),{id:a}),d)})}),r.start&&r.start()}function ze(e){return e.constructor.name==="MessagePort"}function le(e){ze(e)&&e.close()}function re(e,r){let t=new Map;return e.addEventListener("message",function(n){let{data:a}=n;if(!a||!a.id)return;let i=t.get(a.id);if(i)try{i(a)}finally{t.delete(a.id)}}),ee(e,t,[],r)}function B(e){if(e)throw new Error("Proxy has been released and is not useable")}function fe(e){return y(e,new Map,{type:"RELEASE"}).then(()=>{le(e)})}var z=new WeakMap,V="FinalizationRegistry"in globalThis&&new FinalizationRegistry(e=>{let r=(z.get(e)||0)-1;z.set(e,r),r===0&&fe(e)});function Ve(e,r){let t=(z.get(r)||0)+1;z.set(r,t),V&&V.register(e,r,e)}function We(e){V&&V.unregister(e)}function ee(e,r,t=[],o=function(){}){let n=!1,a=new Proxy(o,{get(i,l){if(B(n),l===Fe)return()=>{We(a),fe(e),r.clear(),n=!0};if(l==="then"){if(t.length===0)return{then:()=>a};let s=y(e,r,{type:"GET",path:t.map(c=>c.toString())}).then(x);return s.then.bind(s)}return ee(e,r,[...t,l])},set(i,l,s){B(n);let[c,f]=W(s);return y(e,r,{type:"SET",path:[...t,l].map(u=>u.toString()),value:c},f).then(x)},apply(i,l,s){B(n);let c=t[t.length-1];if(c===Ne)return y(e,r,{type:"ENDPOINT"}).then(x);if(c==="bind")return ee(e,r,t.slice(0,-1));let[f,u]=se(s);return y(e,r,{type:"APPLY",path:t.map(d=>d.toString()),argumentList:f},u).then(x)},construct(i,l){B(n);let[s,c]=se(l);return y(e,r,{type:"CONSTRUCT",path:t.map(f=>f.toString()),argumentList:s},c).then(x)}});return Ve(a,e),a}function De(e){return Array.prototype.concat.apply([],e)}function se(e){let r=e.map(W);return[r.map(t=>t[0]),De(r.map(t=>t[1]))]}var de=new WeakMap;function Ie(e,r){return de.set(e,r),e}function Ue(e){return Object.assign(e,{[ae]:!0})}function pe(e,r=globalThis,t="*"){return{postMessage:(o,n)=>e.postMessage(o,t,n),addEventListener:r.addEventListener.bind(r),removeEventListener:r.removeEventListener.bind(r)}}function W(e){for(let[r,t]of ue)if(t.canHandle(e)){let[o,n]=t.serialize(e);return[{type:"HANDLER",name:r,value:o},n]}return[{type:"RAW",value:e},de.get(e)||[]]}function x(e){switch(e.type){case"HANDLER":return ue.get(e.name).deserialize(e.value);case"RAW":return e.value}}function y(e,r,t,o){return new Promise(n=>{let a=$e();r.set(a,n),e.start&&e.start(),e.postMessage(Object.assign({id:a},t),o)})}function $e(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}var Je={postMessage(){},addEventListener:()=>{},removeEventListener:()=>{}},Ke={postMessage:e=>{console.debug("[webview:req]",e),window.ReactNativeWebView.postMessage(JSON.stringify(e))},addEventListener:(e,r,...t)=>{document.addEventListener("FarcasterFrameCallback",r,...t)},removeEventListener:(e,r)=>{document.removeEventListener("FarcasterFrameCallback",r)}},be=typeof window>"u"?Je:window?.ReactNativeWebView?Ke:pe(window?.parent??window);var v=re(be);var me="0.1.1";function ve(){return me}var D=class e extends Error{constructor(r,t={}){let o=(()=>{if(t.cause instanceof e){if(t.cause.details)return t.cause.details;if(t.cause.shortMessage)return t.cause.shortMessage}return t.cause?.message?t.cause.message:t.details})(),n=t.cause instanceof e&&t.cause.docsPath||t.docsPath,i=`https://oxlib.sh${n??""}`,l=[r||"An error occurred.",...t.metaMessages?["",...t.metaMessages]:[],...o||n?["",o?`Details: ${o}`:void 0,n?`See: ${i}`:void 0]:[]].filter(s=>typeof s=="string").join(`
2
+ `);super(l,t.cause?{cause:t.cause}:void 0),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docs",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BaseError"}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:`ox@${ve()}`}),this.cause=t.cause,this.details=o,this.docs=i,this.docsPath=n,this.shortMessage=r}walk(r){return he(this,r)}};function he(e,r){return r?.(e)?e:e&&typeof e=="object"&&"cause"in e&&e.cause?he(e.cause,r):r?null:e}var N={};X(N,{ChainDisconnectedError:()=>K,DisconnectedError:()=>J,IsUndefinedError:()=>G,ProviderRpcError:()=>g,UnauthorizedError:()=>U,UnsupportedMethodError:()=>$,UserRejectedRequestError:()=>I,createEmitter:()=>Ge,from:()=>Ye});function xe(e,r={}){let{raw:t=!1}=r,o=e;if(t)return e;if(o.error){let{code:n}=o.error,a=n===S.code?S:n===E.code?E:n===k.code?k:n===C.code?C:n===A.code?A:n===T.code?T:n===L.code?L:n===_.code?_:n===O.code?O:n===j.code?j:n===R.code?R:n===M.code?M:m;throw new a(o.error)}return o.result}var m=class extends Error{constructor(r){let{code:t,message:o,data:n}=r;super(o),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"RpcResponse.BaseError"}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.code=t,this.data=n}},E=class e extends m{constructor(r={}){super({message:"Missing or invalid parameters.",...r,code:e.code}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32e3}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"RpcResponse.InvalidInputError"})}};Object.defineProperty(E,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32e3});var O=class e extends m{constructor(r={}){super({message:"Requested resource not found.",...r,code:e.code}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32001}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"RpcResponse.ResourceNotFoundError"})}};Object.defineProperty(O,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32001});var j=class e extends m{constructor(r={}){super({message:"Requested resource not available.",...r,code:e.code}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32002}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"RpcResponse.ResourceUnavailableError"})}};Object.defineProperty(j,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32002});var R=class e extends m{constructor(r={}){super({message:"Transaction creation failed.",...r,code:e.code}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32003}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"RpcResponse.TransactionRejectedError"})}};Object.defineProperty(R,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32003});var L=class e extends m{constructor(r={}){super({message:"Method is not implemented.",...r,code:e.code}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32004}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"RpcResponse.MethodNotSupportedError"})}};Object.defineProperty(L,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32004});var A=class e extends m{constructor(r={}){super({message:"Rate limit exceeded.",...r,code:e.code}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32005}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"RpcResponse.LimitExceededError"})}};Object.defineProperty(A,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32005});var M=class e extends m{constructor(r={}){super({message:"JSON-RPC version not supported.",...r,code:e.code}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32006}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"RpcResponse.VersionNotSupportedError"})}};Object.defineProperty(M,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32006});var C=class e extends m{constructor(r={}){super({message:"Input is not a valid JSON-RPC request.",...r,code:e.code}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32600}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"RpcResponse.InvalidRequestError"})}};Object.defineProperty(C,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32600});var T=class e extends m{constructor(r={}){super({message:"Method does not exist.",...r,code:e.code}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32601}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"RpcResponse.MethodNotFoundError"})}};Object.defineProperty(T,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32601});var k=class e extends m{constructor(r={}){super({message:"Invalid method parameters.",...r,code:e.code}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32602}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"RpcResponse.InvalidParamsError"})}};Object.defineProperty(k,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32602});var S=class e extends m{constructor(r={}){super({message:"Internal JSON-RPC error.",...r,code:e.code}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32603}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"RpcResponse.InternalErrorError"})}};Object.defineProperty(S,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32603});var _=class e extends m{constructor(r={}){super({message:"Failed to parse JSON-RPC response.",...r,code:e.code}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32700}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"RpcResponse.ParseError"})}};Object.defineProperty(_,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32700});var g=class extends Error{constructor(r,t){super(t),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ProviderRpcError"}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.code=r,this.details=t}},I=class extends g{constructor({message:r="The user rejected the request."}={}){super(4001,r),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Provider.UserRejectedRequestError"})}};Object.defineProperty(I,"code",{enumerable:!0,configurable:!0,writable:!0,value:4001});var U=class extends g{constructor({message:r="The requested method and/or account has not been authorized by the user."}={}){super(4100,r),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Provider.UnauthorizedError"})}};Object.defineProperty(U,"code",{enumerable:!0,configurable:!0,writable:!0,value:4100});var $=class extends g{constructor({message:r="The provider does not support the requested method."}={}){super(4200,r),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Provider.UnsupportedMethodError"})}};Object.defineProperty($,"code",{enumerable:!0,configurable:!0,writable:!0,value:4200});var J=class extends g{constructor({message:r="The provider is disconnected from all chains."}={}){super(4900,r),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Provider.DisconnectedError"})}};Object.defineProperty(J,"code",{enumerable:!0,configurable:!0,writable:!0,value:4900});var K=class extends g{constructor({message:r="The provider is not connected to the requested chain."}={}){super(4901,r),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Provider.ChainDisconnectedError"})}};Object.defineProperty(K,"code",{enumerable:!0,configurable:!0,writable:!0,value:4901});function Ge(){let e=new P.default;return{get eventNames(){return e.eventNames.bind(e)},get listenerCount(){return e.listenerCount.bind(e)},get listeners(){return e.listeners.bind(e)},addListener:e.addListener.bind(e),emit:e.emit.bind(e),off:e.off.bind(e),on:e.on.bind(e),once:e.once.bind(e),removeAllListeners:e.removeAllListeners.bind(e),removeListener:e.removeListener.bind(e)}}function Ye(e,r={}){let{includeEvents:t=!0}=r;if(!e)throw new G;return{...t?{on:e.on?.bind(e),removeListener:e.removeListener?.bind(e)}:{},async request(o){let n=await e.request(o);return n&&typeof n=="object"&&"jsonrpc"in n?xe(n):n}}}var G=class extends D{constructor(){super("`provider` is undefined."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Provider.IsUndefinedError"})}};var Y={};X(Y,{createStore:()=>Xe,from:()=>we});function Xe(e={}){let r=e.id??0;return{prepare(t){return we({id:r++,...t})},get id(){return r}}}function we(e){return{...e,jsonrpc:"2.0"}}var Qe=N.createEmitter(),Ze=Y.createStore(),Pe=N.from({...Qe,async request(e){return await v.ethProviderRequest(Ze.prepare(e))}});typeof document<"u"&&document.addEventListener("FarcasterFrameEvent",e=>{e instanceof MessageEvent});function er(){let e=new P.default;return{get eventNames(){return e.eventNames.bind(e)},get listenerCount(){return e.listenerCount.bind(e)},get listeners(){return e.listeners.bind(e)},addListener:e.addListener.bind(e),emit:e.emit.bind(e),off:e.off.bind(e),on:e.on.bind(e),once:e.once.bind(e),removeAllListeners:e.removeAllListeners.bind(e),removeListener:e.removeListener.bind(e)}}var Ee=er(),Oe={...Ee,context:v.context,actions:{setPrimaryButton:v.setPrimaryButton.bind(v),ready:v.ready.bind(v),close:v.close.bind(v),openUrl:v.openUrl.bind(v)},wallet:{ethProvider:Pe}};typeof document<"u"&&document.addEventListener("FarcasterFrameEvent",e=>{e instanceof MessageEvent&&e.data.type==="primaryButtonClicked"&&Ee.emit("primaryButtonClicked")});var rr=Oe;return ke(tr);})();
3
+ /*! Bundled license information:
4
+
5
+ comlink/dist/esm/comlink.mjs:
6
+ (**
7
+ * @license
8
+ * Copyright 2019 Google LLC
9
+ * SPDX-License-Identifier: Apache-2.0
10
+ *)
11
+ */
12
+ //# sourceMappingURL=index.umd.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../node_modules/eventemitter3/index.js", "../src/index.ts", "../../../node_modules/eventemitter3/index.mjs", "../../../node_modules/comlink/src/comlink.ts", "../src/endpoint.ts", "../src/frameHost.ts", "../node_modules/ox/core/version.ts", "../node_modules/ox/core/internal/errors.ts", "../node_modules/ox/core/Errors.ts", "../node_modules/ox/core/Provider.ts", "../node_modules/ox/core/RpcResponse.ts", "../node_modules/ox/core/RpcRequest.ts", "../src/provider.ts", "../src/sdk.ts"],
4
+ "sourcesContent": ["'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n", "import { sdk } from \"./sdk\";\n\nexport default sdk;\nexport * from \"@farcaster/frame-core\";\n", "import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\n", "/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Endpoint,\n EventSource,\n Message,\n MessageType,\n PostMessageWithOrigin,\n WireValue,\n WireValueType,\n} from \"./protocol\";\nexport type { Endpoint };\n\nexport const proxyMarker = Symbol(\"Comlink.proxy\");\nexport const createEndpoint = Symbol(\"Comlink.endpoint\");\nexport const releaseProxy = Symbol(\"Comlink.releaseProxy\");\nexport const finalizer = Symbol(\"Comlink.finalizer\");\n\nconst throwMarker = Symbol(\"Comlink.thrown\");\n\n/**\n * Interface of values that were marked to be proxied with `comlink.proxy()`.\n * Can also be implemented by classes.\n */\nexport interface ProxyMarked {\n [proxyMarker]: true;\n}\n\n/**\n * Takes a type and wraps it in a Promise, if it not already is one.\n * This is to avoid `Promise<Promise<T>>`.\n *\n * This is the inverse of `Unpromisify<T>`.\n */\ntype Promisify<T> = T extends Promise<unknown> ? T : Promise<T>;\n/**\n * Takes a type that may be Promise and unwraps the Promise type.\n * If `P` is not a Promise, it returns `P`.\n *\n * This is the inverse of `Promisify<T>`.\n */\ntype Unpromisify<P> = P extends Promise<infer T> ? T : P;\n\n/**\n * Takes the raw type of a remote property and returns the type that is visible to the local thread on the proxy.\n *\n * Note: This needs to be its own type alias, otherwise it will not distribute over unions.\n * See https://www.typescriptlang.org/docs/handbook/advanced-types.html#distributive-conditional-types\n */\ntype RemoteProperty<T> =\n // If the value is a method, comlink will proxy it automatically.\n // Objects are only proxied if they are marked to be proxied.\n // Otherwise, the property is converted to a Promise that resolves the cloned value.\n T extends Function | ProxyMarked ? Remote<T> : Promisify<T>;\n\n/**\n * Takes the raw type of a property as a remote thread would see it through a proxy (e.g. when passed in as a function\n * argument) and returns the type that the local thread has to supply.\n *\n * This is the inverse of `RemoteProperty<T>`.\n *\n * Note: This needs to be its own type alias, otherwise it will not distribute over unions. See\n * https://www.typescriptlang.org/docs/handbook/advanced-types.html#distributive-conditional-types\n */\ntype LocalProperty<T> = T extends Function | ProxyMarked\n ? Local<T>\n : Unpromisify<T>;\n\n/**\n * Proxies `T` if it is a `ProxyMarked`, clones it otherwise (as handled by structured cloning and transfer handlers).\n */\nexport type ProxyOrClone<T> = T extends ProxyMarked ? Remote<T> : T;\n/**\n * Inverse of `ProxyOrClone<T>`.\n */\nexport type UnproxyOrClone<T> = T extends RemoteObject<ProxyMarked>\n ? Local<T>\n : T;\n\n/**\n * Takes the raw type of a remote object in the other thread and returns the type as it is visible to the local thread\n * when proxied with `Comlink.proxy()`.\n *\n * This does not handle call signatures, which is handled by the more general `Remote<T>` type.\n *\n * @template T The raw type of a remote object as seen in the other thread.\n */\nexport type RemoteObject<T> = { [P in keyof T]: RemoteProperty<T[P]> };\n/**\n * Takes the type of an object as a remote thread would see it through a proxy (e.g. when passed in as a function\n * argument) and returns the type that the local thread has to supply.\n *\n * This does not handle call signatures, which is handled by the more general `Local<T>` type.\n *\n * This is the inverse of `RemoteObject<T>`.\n *\n * @template T The type of a proxied object.\n */\nexport type LocalObject<T> = { [P in keyof T]: LocalProperty<T[P]> };\n\n/**\n * Additional special comlink methods available on each proxy returned by `Comlink.wrap()`.\n */\nexport interface ProxyMethods {\n [createEndpoint]: () => Promise<MessagePort>;\n [releaseProxy]: () => void;\n}\n\n/**\n * Takes the raw type of a remote object, function or class in the other thread and returns the type as it is visible to\n * the local thread from the proxy return value of `Comlink.wrap()` or `Comlink.proxy()`.\n */\nexport type Remote<T> =\n // Handle properties\n RemoteObject<T> &\n // Handle call signature (if present)\n (T extends (...args: infer TArguments) => infer TReturn\n ? (\n ...args: { [I in keyof TArguments]: UnproxyOrClone<TArguments[I]> }\n ) => Promisify<ProxyOrClone<Unpromisify<TReturn>>>\n : unknown) &\n // Handle construct signature (if present)\n // The return of construct signatures is always proxied (whether marked or not)\n (T extends { new (...args: infer TArguments): infer TInstance }\n ? {\n new (\n ...args: {\n [I in keyof TArguments]: UnproxyOrClone<TArguments[I]>;\n }\n ): Promisify<Remote<TInstance>>;\n }\n : unknown) &\n // Include additional special comlink methods available on the proxy.\n ProxyMethods;\n\n/**\n * Expresses that a type can be either a sync or async.\n */\ntype MaybePromise<T> = Promise<T> | T;\n\n/**\n * Takes the raw type of a remote object, function or class as a remote thread would see it through a proxy (e.g. when\n * passed in as a function argument) and returns the type the local thread has to supply.\n *\n * This is the inverse of `Remote<T>`. It takes a `Remote<T>` and returns its original input `T`.\n */\nexport type Local<T> =\n // Omit the special proxy methods (they don't need to be supplied, comlink adds them)\n Omit<LocalObject<T>, keyof ProxyMethods> &\n // Handle call signatures (if present)\n (T extends (...args: infer TArguments) => infer TReturn\n ? (\n ...args: { [I in keyof TArguments]: ProxyOrClone<TArguments[I]> }\n ) => // The raw function could either be sync or async, but is always proxied automatically\n MaybePromise<UnproxyOrClone<Unpromisify<TReturn>>>\n : unknown) &\n // Handle construct signature (if present)\n // The return of construct signatures is always proxied (whether marked or not)\n (T extends { new (...args: infer TArguments): infer TInstance }\n ? {\n new (\n ...args: {\n [I in keyof TArguments]: ProxyOrClone<TArguments[I]>;\n }\n ): // The raw constructor could either be sync or async, but is always proxied automatically\n MaybePromise<Local<Unpromisify<TInstance>>>;\n }\n : unknown);\n\nconst isObject = (val: unknown): val is object =>\n (typeof val === \"object\" && val !== null) || typeof val === \"function\";\n\n/**\n * Customizes the serialization of certain values as determined by `canHandle()`.\n *\n * @template T The input type being handled by this transfer handler.\n * @template S The serialized type sent over the wire.\n */\nexport interface TransferHandler<T, S> {\n /**\n * Gets called for every value to determine whether this transfer handler\n * should serialize the value, which includes checking that it is of the right\n * type (but can perform checks beyond that as well).\n */\n canHandle(value: unknown): value is T;\n\n /**\n * Gets called with the value if `canHandle()` returned `true` to produce a\n * value that can be sent in a message, consisting of structured-cloneable\n * values and/or transferrable objects.\n */\n serialize(value: T): [S, Transferable[]];\n\n /**\n * Gets called to deserialize an incoming value that was serialized in the\n * other thread with this transfer handler (known through the name it was\n * registered under).\n */\n deserialize(value: S): T;\n}\n\n/**\n * Internal transfer handle to handle objects marked to proxy.\n */\nconst proxyTransferHandler: TransferHandler<object, MessagePort> = {\n canHandle: (val): val is ProxyMarked =>\n isObject(val) && (val as ProxyMarked)[proxyMarker],\n serialize(obj) {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port1);\n return [port2, [port2]];\n },\n deserialize(port) {\n port.start();\n return wrap(port);\n },\n};\n\ninterface ThrownValue {\n [throwMarker]: unknown; // just needs to be present\n value: unknown;\n}\ntype SerializedThrownValue =\n | { isError: true; value: Error }\n | { isError: false; value: unknown };\ntype PendingListenersMap = Map<\n string,\n (value: WireValue | PromiseLike<WireValue>) => void\n>;\n\n/**\n * Internal transfer handler to handle thrown exceptions.\n */\nconst throwTransferHandler: TransferHandler<\n ThrownValue,\n SerializedThrownValue\n> = {\n canHandle: (value): value is ThrownValue =>\n isObject(value) && throwMarker in value,\n serialize({ value }) {\n let serialized: SerializedThrownValue;\n if (value instanceof Error) {\n serialized = {\n isError: true,\n value: {\n message: value.message,\n name: value.name,\n stack: value.stack,\n },\n };\n } else {\n serialized = { isError: false, value };\n }\n return [serialized, []];\n },\n deserialize(serialized) {\n if (serialized.isError) {\n throw Object.assign(\n new Error(serialized.value.message),\n serialized.value\n );\n }\n throw serialized.value;\n },\n};\n\n/**\n * Allows customizing the serialization of certain values.\n */\nexport const transferHandlers = new Map<\n string,\n TransferHandler<unknown, unknown>\n>([\n [\"proxy\", proxyTransferHandler],\n [\"throw\", throwTransferHandler],\n]);\n\nfunction isAllowedOrigin(\n allowedOrigins: (string | RegExp)[],\n origin: string\n): boolean {\n for (const allowedOrigin of allowedOrigins) {\n if (origin === allowedOrigin || allowedOrigin === \"*\") {\n return true;\n }\n if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) {\n return true;\n }\n }\n return false;\n}\n\nexport function expose(\n obj: any,\n ep: Endpoint = globalThis as any,\n allowedOrigins: (string | RegExp)[] = [\"*\"]\n) {\n ep.addEventListener(\"message\", function callback(ev: MessageEvent) {\n if (!ev || !ev.data) {\n return;\n }\n if (!isAllowedOrigin(allowedOrigins, ev.origin)) {\n console.warn(`Invalid origin '${ev.origin}' for comlink proxy`);\n return;\n }\n const { id, type, path } = {\n path: [] as string[],\n ...(ev.data as Message),\n };\n const argumentList = (ev.data.argumentList || []).map(fromWireValue);\n let returnValue;\n try {\n const parent = path.slice(0, -1).reduce((obj, prop) => obj[prop], obj);\n const rawValue = path.reduce((obj, prop) => obj[prop], obj);\n switch (type) {\n case MessageType.GET:\n {\n returnValue = rawValue;\n }\n break;\n case MessageType.SET:\n {\n parent[path.slice(-1)[0]] = fromWireValue(ev.data.value);\n returnValue = true;\n }\n break;\n case MessageType.APPLY:\n {\n returnValue = rawValue.apply(parent, argumentList);\n }\n break;\n case MessageType.CONSTRUCT:\n {\n const value = new rawValue(...argumentList);\n returnValue = proxy(value);\n }\n break;\n case MessageType.ENDPOINT:\n {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port2);\n returnValue = transfer(port1, [port1]);\n }\n break;\n case MessageType.RELEASE:\n {\n returnValue = undefined;\n }\n break;\n default:\n return;\n }\n } catch (value) {\n returnValue = { value, [throwMarker]: 0 };\n }\n Promise.resolve(returnValue)\n .catch((value) => {\n return { value, [throwMarker]: 0 };\n })\n .then((returnValue) => {\n const [wireValue, transferables] = toWireValue(returnValue);\n ep.postMessage({ ...wireValue, id }, transferables);\n if (type === MessageType.RELEASE) {\n // detach and deactive after sending release response above.\n ep.removeEventListener(\"message\", callback as any);\n closeEndPoint(ep);\n if (finalizer in obj && typeof obj[finalizer] === \"function\") {\n obj[finalizer]();\n }\n }\n })\n .catch((error) => {\n // Send Serialization Error To Caller\n const [wireValue, transferables] = toWireValue({\n value: new TypeError(\"Unserializable return value\"),\n [throwMarker]: 0,\n });\n ep.postMessage({ ...wireValue, id }, transferables);\n });\n } as any);\n if (ep.start) {\n ep.start();\n }\n}\n\nfunction isMessagePort(endpoint: Endpoint): endpoint is MessagePort {\n return endpoint.constructor.name === \"MessagePort\";\n}\n\nfunction closeEndPoint(endpoint: Endpoint) {\n if (isMessagePort(endpoint)) endpoint.close();\n}\n\nexport function wrap<T>(ep: Endpoint, target?: any): Remote<T> {\n const pendingListeners : PendingListenersMap = new Map();\n\n ep.addEventListener(\"message\", function handleMessage(ev: Event) {\n const { data } = ev as MessageEvent;\n if (!data || !data.id) {\n return;\n }\n const resolver = pendingListeners.get(data.id);\n if (!resolver) {\n return;\n }\n\n try {\n resolver(data);\n } finally {\n pendingListeners.delete(data.id);\n }\n });\n\n return createProxy<T>(ep, pendingListeners, [], target) as any;\n}\n\nfunction throwIfProxyReleased(isReleased: boolean) {\n if (isReleased) {\n throw new Error(\"Proxy has been released and is not useable\");\n }\n}\n\nfunction releaseEndpoint(ep: Endpoint) {\n return requestResponseMessage(ep, new Map(), {\n type: MessageType.RELEASE,\n }).then(() => {\n closeEndPoint(ep);\n });\n}\n\ninterface FinalizationRegistry<T> {\n new (cb: (heldValue: T) => void): FinalizationRegistry<T>;\n register(\n weakItem: object,\n heldValue: T,\n unregisterToken?: object | undefined\n ): void;\n unregister(unregisterToken: object): void;\n}\ndeclare var FinalizationRegistry: FinalizationRegistry<Endpoint>;\n\nconst proxyCounter = new WeakMap<Endpoint, number>();\nconst proxyFinalizers =\n \"FinalizationRegistry\" in globalThis &&\n new FinalizationRegistry((ep: Endpoint) => {\n const newCount = (proxyCounter.get(ep) || 0) - 1;\n proxyCounter.set(ep, newCount);\n if (newCount === 0) {\n releaseEndpoint(ep);\n }\n });\n\nfunction registerProxy(proxy: object, ep: Endpoint) {\n const newCount = (proxyCounter.get(ep) || 0) + 1;\n proxyCounter.set(ep, newCount);\n if (proxyFinalizers) {\n proxyFinalizers.register(proxy, ep, proxy);\n }\n}\n\nfunction unregisterProxy(proxy: object) {\n if (proxyFinalizers) {\n proxyFinalizers.unregister(proxy);\n }\n}\n\nfunction createProxy<T>(\n ep: Endpoint,\n pendingListeners: PendingListenersMap,\n path: (string | number | symbol)[] = [],\n target: object = function () {}\n): Remote<T> {\n let isProxyReleased = false;\n const proxy = new Proxy(target, {\n get(_target, prop) {\n throwIfProxyReleased(isProxyReleased);\n if (prop === releaseProxy) {\n return () => {\n unregisterProxy(proxy);\n releaseEndpoint(ep);\n pendingListeners.clear();\n isProxyReleased = true;\n };\n }\n if (prop === \"then\") {\n if (path.length === 0) {\n return { then: () => proxy };\n }\n const r = requestResponseMessage(ep, pendingListeners, {\n type: MessageType.GET,\n path: path.map((p) => p.toString()),\n }).then(fromWireValue);\n return r.then.bind(r);\n }\n return createProxy(ep, pendingListeners, [...path, prop]);\n },\n set(_target, prop, rawValue) {\n throwIfProxyReleased(isProxyReleased);\n // FIXME: ES6 Proxy Handler `set` methods are supposed to return a\n // boolean. To show good will, we return true asynchronously \u00AF\\_(\u30C4)_/\u00AF\n const [value, transferables] = toWireValue(rawValue);\n return requestResponseMessage(\n ep,\n pendingListeners,\n {\n type: MessageType.SET,\n path: [...path, prop].map((p) => p.toString()),\n value,\n },\n transferables\n ).then(fromWireValue) as any;\n },\n apply(_target, _thisArg, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const last = path[path.length - 1];\n if ((last as any) === createEndpoint) {\n return requestResponseMessage(ep, pendingListeners, {\n type: MessageType.ENDPOINT,\n }).then(fromWireValue);\n }\n // We just pretend that `bind()` didn\u2019t happen.\n if (last === \"bind\") {\n return createProxy(ep, pendingListeners, path.slice(0, -1));\n }\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(\n ep,\n pendingListeners,\n {\n type: MessageType.APPLY,\n path: path.map((p) => p.toString()),\n argumentList,\n },\n transferables\n ).then(fromWireValue);\n },\n construct(_target, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(\n ep,\n pendingListeners,\n {\n type: MessageType.CONSTRUCT,\n path: path.map((p) => p.toString()),\n argumentList,\n },\n transferables\n ).then(fromWireValue);\n },\n });\n registerProxy(proxy, ep);\n return proxy as any;\n}\n\nfunction myFlat<T>(arr: (T | T[])[]): T[] {\n return Array.prototype.concat.apply([], arr);\n}\n\nfunction processArguments(argumentList: any[]): [WireValue[], Transferable[]] {\n const processed = argumentList.map(toWireValue);\n return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))];\n}\n\nconst transferCache = new WeakMap<any, Transferable[]>();\nexport function transfer<T>(obj: T, transfers: Transferable[]): T {\n transferCache.set(obj, transfers);\n return obj;\n}\n\nexport function proxy<T extends {}>(obj: T): T & ProxyMarked {\n return Object.assign(obj, { [proxyMarker]: true }) as any;\n}\n\nexport function windowEndpoint(\n w: PostMessageWithOrigin,\n context: EventSource = globalThis,\n targetOrigin = \"*\"\n): Endpoint {\n return {\n postMessage: (msg: any, transferables: Transferable[]) =>\n w.postMessage(msg, targetOrigin, transferables),\n addEventListener: context.addEventListener.bind(context),\n removeEventListener: context.removeEventListener.bind(context),\n };\n}\n\nfunction toWireValue(value: any): [WireValue, Transferable[]] {\n for (const [name, handler] of transferHandlers) {\n if (handler.canHandle(value)) {\n const [serializedValue, transferables] = handler.serialize(value);\n return [\n {\n type: WireValueType.HANDLER,\n name,\n value: serializedValue,\n },\n transferables,\n ];\n }\n }\n return [\n {\n type: WireValueType.RAW,\n value,\n },\n transferCache.get(value) || [],\n ];\n}\n\nfunction fromWireValue(value: WireValue): any {\n switch (value.type) {\n case WireValueType.HANDLER:\n return transferHandlers.get(value.name)!.deserialize(value.value);\n case WireValueType.RAW:\n return value.value;\n }\n}\n\nfunction requestResponseMessage(\n ep: Endpoint,\n pendingListeners: PendingListenersMap,\n msg: Message,\n transfers?: Transferable[]\n): Promise<WireValue> {\n return new Promise((resolve) => {\n const id = generateUUID();\n pendingListeners.set(id, resolve);\n if (ep.start) {\n ep.start();\n }\n ep.postMessage({ id, ...msg }, transfers);\n});\n}\n\nfunction generateUUID(): string {\n return new Array(4)\n .fill(0)\n .map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16))\n .join(\"-\");\n}\n", "import { type Endpoint, windowEndpoint } from \"comlink\";\n\nconst mockEndpoint: Endpoint = {\n postMessage() {\n // noop\n },\n addEventListener: () => {\n // noop\n },\n removeEventListener: () => {\n // noop\n },\n}\n\nconst webViewEndpoint: Endpoint = {\n postMessage: (data: unknown) => {\n console.debug(\"[webview:req]\", data);\n window.ReactNativeWebView.postMessage(JSON.stringify(data));\n },\n addEventListener: (_, listener, ...args) => {\n document.addEventListener(\"FarcasterFrameCallback\", listener, ...args);\n },\n removeEventListener: (_, listener) => {\n document.removeEventListener(\"FarcasterFrameCallback\", listener);\n },\n};\n\nexport const endpoint = (() => {\n // No actions are actually gonna take place during SSR, thus it's safe to return mocked endpoint\n if (typeof window === 'undefined') return mockEndpoint\n return window?.ReactNativeWebView\n ? webViewEndpoint\n : windowEndpoint(window?.parent ?? window);\n})()\n", "import { wrap } from \"comlink\";\nimport { endpoint } from \"./endpoint\";\nimport { FrameHost } from \"@farcaster/frame-core\";\n\nexport const frameHost = wrap<FrameHost>(endpoint);\n", "/** @internal */\nexport const version = '0.1.1'\n", "import { version } from '../version.js'\n\n/** @internal */\nexport function getUrl(url: string) {\n return url\n}\n\n/** @internal */\nexport function getVersion() {\n return version\n}\n\n/** @internal */\nexport function prettyPrint(args: unknown) {\n if (!args) return ''\n const entries = Object.entries(args)\n .map(([key, value]) => {\n if (value === undefined || value === false) return null\n return [key, value]\n })\n .filter(Boolean) as [string, string][]\n const maxLength = entries.reduce((acc, [key]) => Math.max(acc, key.length), 0)\n return entries\n .map(([key, value]) => ` ${`${key}:`.padEnd(maxLength + 1)} ${value}`)\n .join('\\n')\n}\n", "import { getVersion } from './internal/errors.js'\n\nexport type GlobalErrorType<name extends string = 'Error'> = Error & {\n name: name\n}\n\n/**\n * Base error class inherited by all errors thrown by ox.\n *\n * @example\n * ```ts\n * import { Errors } from 'ox'\n * throw new Errors.BaseError('An error occurred')\n * ```\n */\nexport class BaseError<\n cause extends Error | undefined = undefined,\n> extends Error {\n details: string\n docs?: string | undefined\n docsPath?: string | undefined\n shortMessage: string\n\n override cause: cause\n override name = 'BaseError'\n\n version = `ox@${getVersion()}`\n\n constructor(shortMessage: string, options: BaseError.Options<cause> = {}) {\n const details = (() => {\n if (options.cause instanceof BaseError) {\n if (options.cause.details) return options.cause.details\n if (options.cause.shortMessage) return options.cause.shortMessage\n }\n if (options.cause?.message) return options.cause.message\n return options.details!\n })()\n const docsPath = (() => {\n if (options.cause instanceof BaseError)\n return options.cause.docsPath || options.docsPath\n return options.docsPath\n })()\n\n const docsBaseUrl = 'https://oxlib.sh'\n const docs = `${docsBaseUrl}${docsPath ?? ''}`\n\n const message = [\n shortMessage || 'An error occurred.',\n ...(options.metaMessages ? ['', ...options.metaMessages] : []),\n ...(details || docsPath\n ? [\n '',\n details ? `Details: ${details}` : undefined,\n docsPath ? `See: ${docs}` : undefined,\n ]\n : []),\n ]\n .filter((x) => typeof x === 'string')\n .join('\\n')\n\n super(message, options.cause ? { cause: options.cause } : undefined)\n\n this.cause = options.cause as any\n this.details = details\n this.docs = docs\n this.docsPath = docsPath\n this.shortMessage = shortMessage\n }\n\n walk(): Error\n walk(fn: (err: unknown) => boolean): Error | null\n walk(fn?: any): any {\n return walk(this, fn)\n }\n}\n\nexport declare namespace BaseError {\n type Options<cause extends Error | undefined = Error | undefined> = {\n cause?: cause | undefined\n details?: string | undefined\n docsPath?: string | undefined\n metaMessages?: (string | undefined)[] | undefined\n }\n}\n\n/** @internal */\nfunction walk(\n err: unknown,\n fn?: ((err: unknown) => boolean) | undefined,\n): unknown {\n if (fn?.(err)) return err\n if (err && typeof err === 'object' && 'cause' in err && err.cause)\n return walk(err.cause, fn)\n return fn ? null : err\n}\n", "import { EventEmitter } from 'eventemitter3'\nimport type * as Address from './Address.js'\nimport * as Errors from './Errors.js'\nimport * as RpcResponse from './RpcResponse.js'\nimport type * as RpcSchema from './RpcSchema.js'\nimport type * as RpcSchema_internal from './internal/rpcSchema.js'\nimport type { Compute } from './internal/types.js'\n\n/** Options for a {@link ox#Provider.Provider}. */\nexport type Options = {\n /**\n * Whether to include event functions (`on`, `removeListener`) on the Provider.\n *\n * @default true\n */\n includeEvents?: boolean | undefined\n /**\n * RPC Schema to use for the Provider's `request` function.\n * See {@link ox#RpcSchema.(from:function)} for more.\n *\n * @default `RpcSchema.Generic`\n */\n schema?: RpcSchema.Generic | undefined\n}\n\n/** Root type for an EIP-1193 Provider. */\nexport type Provider<\n options extends Options | undefined = undefined,\n ///\n _schema extends RpcSchema.Generic = options extends {\n schema: infer schema extends RpcSchema.Generic\n }\n ? schema\n : RpcSchema.Default,\n> = Compute<\n {\n request: RequestFn<_schema>\n } & (options extends { includeEvents: true } | undefined\n ? {\n on: EventListenerFn\n removeListener: EventListenerFn\n }\n : {})\n>\n\n/** Type for an EIP-1193 Provider's event emitter. */\nexport type Emitter = Compute<EventEmitter<EventMap>>\n\n/** EIP-1193 Provider's `request` function. */\nexport type RequestFn<schema extends RpcSchema.Generic = RpcSchema.Generic> = <\n methodName extends RpcSchema.MethodNameGeneric,\n>(\n parameters: RpcSchema_internal.ExtractRequestOpaque<schema, methodName>,\n) => Promise<RpcSchema.ExtractReturnType<schema, methodName>>\n\n/** Type for an EIP-1193 Provider's event listener functions (`on`, `removeListener`, etc). */\nexport type EventListenerFn = <event extends keyof EventMap>(\n event: event,\n listener: EventMap[event],\n) => void\n\nexport type ConnectInfo = {\n chainId: string\n}\n\nexport type Message = {\n type: string\n data: unknown\n}\n\nexport class ProviderRpcError extends Error {\n override name = 'ProviderRpcError'\n\n code: number\n details: string\n\n constructor(code: number, message: string) {\n super(message)\n this.code = code\n this.details = message\n }\n}\n\nexport type EventMap = {\n accountsChanged: (accounts: readonly Address.Address[]) => void\n chainChanged: (chainId: string) => void\n connect: (connectInfo: ConnectInfo) => void\n disconnect: (error: ProviderRpcError) => void\n message: (message: Message) => void\n}\n\n/** The user rejected the request. */\nexport class UserRejectedRequestError extends ProviderRpcError {\n static readonly code = 4001\n override readonly name = 'Provider.UserRejectedRequestError'\n\n constructor({\n message = 'The user rejected the request.',\n }: { message?: string | undefined } = {}) {\n super(4001, message)\n }\n}\n\n/** The requested method and/or account has not been authorized by the user. */\nexport class UnauthorizedError extends ProviderRpcError {\n static readonly code = 4100\n override readonly name = 'Provider.UnauthorizedError'\n\n constructor({\n message = 'The requested method and/or account has not been authorized by the user.',\n }: { message?: string | undefined } = {}) {\n super(4100, message)\n }\n}\n\n/** The provider does not support the requested method. */\nexport class UnsupportedMethodError extends ProviderRpcError {\n static readonly code = 4200\n override readonly name = 'Provider.UnsupportedMethodError'\n\n constructor({\n message = 'The provider does not support the requested method.',\n }: { message?: string | undefined } = {}) {\n super(4200, message)\n }\n}\n\n/** The provider is disconnected from all chains. */\nexport class DisconnectedError extends ProviderRpcError {\n static readonly code = 4900\n override readonly name = 'Provider.DisconnectedError'\n\n constructor({\n message = 'The provider is disconnected from all chains.',\n }: { message?: string | undefined } = {}) {\n super(4900, message)\n }\n}\n\n/** The provider is not connected to the requested chain. */\nexport class ChainDisconnectedError extends ProviderRpcError {\n static readonly code = 4901\n override readonly name = 'Provider.ChainDisconnectedError'\n\n constructor({\n message = 'The provider is not connected to the requested chain.',\n }: { message?: string | undefined } = {}) {\n super(4901, message)\n }\n}\n\n/**\n * Creates an EIP-1193 flavored event emitter to be injected onto a Provider.\n *\n * @example\n * ```ts twoslash\n * import { Provider, RpcRequest, RpcResponse } from 'ox' // [!code focus]\n *\n * // 1. Instantiate a Provider Emitter. // [!code focus]\n * const emitter = Provider.createEmitter() // [!code focus]\n *\n * const store = RpcRequest.createStore()\n *\n * const provider = Provider.from({\n * // 2. Pass the Emitter to the Provider. // [!code focus]\n * ...emitter, // [!code focus]\n * async request(args) {\n * return await fetch('https://1.rpc.thirdweb.com', {\n * body: JSON.stringify(store.prepare(args)),\n * method: 'POST',\n * headers: {\n * 'Content-Type': 'application/json',\n * },\n * })\n * .then((res) => res.json())\n * .then(RpcResponse.parse)\n * },\n * })\n *\n * // 3. Emit Provider Events. // [!code focus]\n * emitter.emit('accountsChanged', ['0x...']) // [!code focus]\n * ```\n *\n * @returns An event emitter.\n */\nexport function createEmitter(): Emitter {\n const emitter = new EventEmitter<EventMap>()\n\n return {\n get eventNames() {\n return emitter.eventNames.bind(emitter)\n },\n get listenerCount() {\n return emitter.listenerCount.bind(emitter)\n },\n get listeners() {\n return emitter.listeners.bind(emitter)\n },\n addListener: emitter.addListener.bind(emitter),\n emit: emitter.emit.bind(emitter),\n off: emitter.off.bind(emitter),\n on: emitter.on.bind(emitter),\n once: emitter.once.bind(emitter),\n removeAllListeners: emitter.removeAllListeners.bind(emitter),\n removeListener: emitter.removeListener.bind(emitter),\n }\n}\n\nexport declare namespace createEmitter {\n type ErrorType = Errors.GlobalErrorType\n}\n\n/**\n * Instantiates an [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193) {@link ox#Provider.Provider}\n * from an arbitrary [EIP-1193 Provider](https://eips.ethereum.org/EIPS/eip-1193) interface.\n *\n * @example\n * ### Instantiating with RPC Transport\n *\n * Ox's {@link ox#RpcTransport} is EIP-1193 compliant, and can be used to instantiate an EIP-1193 Provider. This means you can use any HTTP RPC endpoint as an EIP-1193 Provider.\n *\n * ```ts twoslash\n * import { Provider, RpcTransport } from 'ox'\n *\n * const transport = RpcTransport.fromHttp('https://1.rpc.thirdweb.com')\n * const provider = Provider.from(transport)\n * ```\n *\n * @example\n * ### Instantiating with External Providers\n *\n * The example below demonstrates how we can instantiate a typed EIP-1193 Provider from an\n * external EIP-1193 Provider like `window.ethereum`.\n *\n * ```ts twoslash\n * import 'ox/window'\n * import { Provider } from 'ox'\n *\n * const provider = Provider.from(window.ethereum)\n *\n * const blockNumber = await provider.request({ method: 'eth_blockNumber' })\n * ```\n *\n * :::tip\n *\n * There are also libraries that distribute EIP-1193 Provider objects that you can use with `Provider.from`:\n *\n * - [`@walletconnect/ethereum-provider`](https://www.npmjs.com/package/\\@walletconnect/ethereum-provider)\n *\n * - [`@coinbase/wallet-sdk`](https://www.npmjs.com/package/\\@coinbase/wallet-sdk)\n *\n * - [`@metamask/detect-provider`](https://www.npmjs.com/package/\\@metamask/detect-provider)\n *\n * - [`@safe-global/safe-apps-provider`](https://github.com/safe-global/safe-apps-sdk/tree/main/packages/safe-apps-provider)\n *\n * - [`mipd`](https://github.com/wevm/mipd): EIP-6963 Multi Injected Providers\n *\n * :::\n *\n * @example\n * ### Instantiating a Custom Provider\n *\n * The example below demonstrates how we can instantiate a typed EIP-1193 Provider from a\n * HTTP `fetch` JSON-RPC request. You can use this pattern to integrate with any asynchronous JSON-RPC\n * transport, including WebSockets and IPC.\n *\n * ```ts twoslash\n * import { Provider, RpcRequest, RpcResponse } from 'ox'\n *\n * const store = RpcRequest.createStore()\n *\n * const provider = Provider.from({\n * async request(args) {\n * return await fetch('https://1.rpc.thirdweb.com', {\n * body: JSON.stringify(store.prepare(args)),\n * method: 'POST',\n * headers: {\n * 'Content-Type': 'application/json',\n * },\n * })\n * .then((res) => res.json())\n * .then(RpcResponse.parse)\n * },\n * })\n *\n * const blockNumber = await provider.request({ method: 'eth_blockNumber' })\n * ```\n *\n * @example\n * ### Type-safe Custom Schemas\n *\n * It is possible to define your own type-safe schema by using the {@link ox#RpcSchema.(from:function)} type.\n *\n * ```ts twoslash\n * // @noErrors\n * import 'ox/window'\n * import { Provider, RpcSchema } from 'ox'\n *\n * const schema = RpcSchema.from<\n * | RpcSchema.Default\n * | {\n * Request: {\n * method: 'abe_foo',\n * params: [id: number],\n * }\n * ReturnType: string\n * }\n * | {\n * Request: {\n * method: 'abe_bar',\n * params: [id: string],\n * }\n * ReturnType: string\n * }\n * >()\n *\n * const provider = Provider.from(window.ethereum, { schema })\n *\n * const blockNumber = await provider.request({ method: 'e' })\n * // ^|\n *\n *\n *\n *\n *\n * ```\n *\n * @example\n * ### Instantiating a Provider with Events\n *\n * The example below demonstrates how to instantiate a Provider with your own EIP-1193 flavored event emitter.\n *\n * This example is useful for Wallets that distribute an EIP-1193 Provider (e.g. webpage injection via `window.ethereum`).\n *\n * ```ts twoslash\n * import { Provider, RpcRequest, RpcResponse } from 'ox'\n *\n * // 1. Instantiate a Provider Emitter.\n * const emitter = Provider.createEmitter() // [!code ++]\n *\n * const store = RpcRequest.createStore()\n *\n * const provider = Provider.from({\n * // 2. Pass the Emitter to the Provider.\n * ...emitter, // [!code ++]\n * async request(args) {\n * return await fetch('https://1.rpc.thirdweb.com', {\n * body: JSON.stringify(store.prepare(args)),\n * method: 'POST',\n * headers: {\n * 'Content-Type': 'application/json',\n * },\n * })\n * .then((res) => res.json())\n * .then(RpcResponse.parse)\n * },\n * })\n *\n * // 3. Emit Provider Events.\n * emitter.emit('accountsChanged', ['0x...']) // [!code ++]\n * ```\n *\n * @param provider - The EIP-1193 provider to convert.\n * @returns An typed EIP-1193 Provider.\n */\nexport function from<\n const provider extends Provider | unknown,\n options extends Options | undefined = undefined,\n>(\n provider: provider | Provider<{ schema: RpcSchema.Generic }>,\n options?: options | Options,\n): Provider<options>\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport function from(provider: any, options: Options = {}): Provider<Options> {\n const { includeEvents = true } = options\n if (!provider) throw new IsUndefinedError()\n return {\n ...(includeEvents\n ? {\n on: provider.on?.bind(provider),\n removeListener: provider.removeListener?.bind(provider),\n }\n : {}),\n async request(args) {\n const result = await provider.request(args)\n if (\n result &&\n typeof result === 'object' &&\n 'jsonrpc' in (result as { jsonrpc?: unknown })\n )\n return RpcResponse.parse(result) as never\n return result\n },\n }\n}\n\nexport declare namespace from {\n type ErrorType = IsUndefinedError | Errors.GlobalErrorType\n}\n\n/** Thrown when the provider is undefined. */\nexport class IsUndefinedError extends Errors.BaseError {\n override readonly name = 'Provider.IsUndefinedError'\n\n constructor() {\n super('`provider` is undefined.')\n }\n}\n", "import type { Errors, RpcRequest } from '../index.js'\nimport type {\n Compute,\n IsNarrowable,\n OneOf,\n UnionPartialBy,\n} from './internal/types.js'\n\n/** A JSON-RPC response object as per the [JSON-RPC 2.0 specification](https://www.jsonrpc.org/specification#request_object). */\nexport type RpcResponse<\n result = unknown,\n error extends ErrorObject = ErrorObject,\n> = Compute<\n {\n id: number\n jsonrpc: '2.0'\n } & OneOf<{ result: result } | { error: error }>\n>\n\n/** JSON-RPC error object as per the [JSON-RPC 2.0 specification](https://www.jsonrpc.org/specification#error_object). */\nexport type ErrorObject = {\n code: number\n message: string\n data?: unknown | undefined\n}\n\n/**\n * A type-safe interface to instantiate a JSON-RPC response object as per the [JSON-RPC 2.0 specification](https://www.jsonrpc.org/specification#response_object).\n *\n * @example\n * ### Instantiating a Response Object\n *\n * ```ts twoslash\n * import { RpcResponse } from 'ox'\n *\n * const response = RpcResponse.from({\n * id: 0,\n * jsonrpc: '2.0',\n * result: '0x69420',\n * })\n * ```\n *\n * @example\n * ### Type-safe Instantiation\n *\n * If you have a JSON-RPC request object, you can use it to strongly-type the response. If a `request` is provided,\n * then the `id` and `jsonrpc` properties will be overridden with the values from the request.\n *\n * ```ts twoslash\n * import { RpcRequest, RpcResponse } from 'ox'\n *\n * const request = RpcRequest.from({ id: 0, method: 'eth_blockNumber' })\n *\n * const response = RpcResponse.from(\n * { result: '0x69420' },\n * { request },\n * )\n * ```\n *\n * @param response - Opaque JSON-RPC response object.\n * @param options - Parsing options.\n * @returns Typed JSON-RPC result, or response object (if `raw` is `true`).\n */\nexport function from<\n request extends RpcRequest.RpcRequest | undefined = undefined,\n const response =\n | (request extends RpcRequest.RpcRequest\n ? request['_returnType']\n : RpcResponse)\n | unknown,\n>(\n response: from.Response<request, response>,\n options?: from.Options<request>,\n): Compute<from.ReturnType<response>>\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport function from(response: RpcResponse, options: any = {}): RpcResponse {\n const { request } = options\n return {\n ...response,\n id: response.id ?? request?.id,\n jsonrpc: response.jsonrpc ?? request.jsonrpc,\n }\n}\n\nexport declare namespace from {\n type Response<\n request extends RpcRequest.RpcRequest | undefined = undefined,\n response = unknown,\n > = response &\n (request extends RpcRequest.RpcRequest\n ? UnionPartialBy<RpcResponse<request['_returnType']>, 'id' | 'jsonrpc'>\n : RpcResponse)\n\n type Options<\n request extends RpcRequest.RpcRequest | undefined =\n | RpcRequest.RpcRequest\n | undefined,\n > = {\n request?: request | RpcRequest.RpcRequest | undefined\n }\n\n type ReturnType<response> = IsNarrowable<response, RpcResponse> extends true\n ? RpcResponse\n : response & Readonly<{ id: number; jsonrpc: '2.0' }>\n}\n\n/**\n * A type-safe interface to parse a JSON-RPC response object as per the [JSON-RPC 2.0 specification](https://www.jsonrpc.org/specification#response_object), and extract the result.\n *\n * @example\n * ```ts twoslash\n * import { RpcRequest, RpcResponse } from 'ox'\n *\n * // 1. Create a request store.\n * const store = RpcRequest.createStore()\n *\n * // 2. Get a request object.\n * const request = store.prepare({\n * method: 'eth_getBlockByNumber',\n * params: ['0x1', false],\n * })\n *\n * // 3. Send the JSON-RPC request via HTTP.\n * const block = await fetch('https://1.rpc.thirdweb.com', {\n * body: JSON.stringify(request),\n * headers: {\n * 'Content-Type': 'application/json',\n * },\n * method: 'POST',\n * })\n * .then((response) => response.json())\n * // 4. Parse the JSON-RPC response into a type-safe result. // [!code focus]\n * .then((response) => RpcResponse.parse(response, { request })) // [!code focus]\n *\n * block // [!code focus]\n * // ^?\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n * ```\n *\n * :::tip\n *\n * If you don't need the return type, you can omit the options entirely.\n *\n * ```ts twoslash\n * // @noErrors\n * import { RpcResponse } from 'ox'\n *\n * const block = await fetch('https://1.rpc.thirdweb.com', {})\n * .then((response) => response.json())\n * .then((response) => RpcResponse.parse(response, { request })) // [!code --]\n * .then(RpcResponse.parse) // [!code ++]\n * ```\n * :::\n *\n * @example\n * ### Raw Mode\n *\n * If `raw` is `true`, the response will be returned as an object with `result` and `error` properties instead of returning the `result` directly and throwing errors.\n *\n * ```ts twoslash\n * import { RpcRequest, RpcResponse } from 'ox'\n *\n * const store = RpcRequest.createStore()\n *\n * const request = store.prepare({\n * method: 'eth_blockNumber',\n * })\n *\n * const response = RpcResponse.parse({}, {\n * request,\n * raw: true, // [!code hl]\n * })\n *\n * response.result\n * // ^?\n *\n *\n * response.error\n * // ^?\n *\n *\n * ```\n *\n * @param response - Opaque JSON-RPC response object.\n * @param options - Parsing options.\n * @returns Typed JSON-RPC result, or response object (if `raw` is `true`).\n */\nexport function parse<\n const response extends RpcResponse | unknown,\n returnType,\n raw extends boolean = false,\n>(\n response: response,\n options: parse.Options<returnType, raw> = {},\n): parse.ReturnType<\n unknown extends response\n ? returnType\n : response extends RpcResponse\n ? response extends { result: infer result }\n ? result\n : never\n : returnType,\n raw\n> {\n const { raw = false } = options\n const response_ = response as RpcResponse\n if (raw) return response as never\n if (response_.error) {\n const { code } = response_.error\n const JsonRpcError = (() => {\n if (code === InternalError.code) return InternalError\n if (code === InvalidInputError.code) return InvalidInputError\n if (code === InvalidParamsError.code) return InvalidParamsError\n if (code === InvalidRequestError.code) return InvalidRequestError\n if (code === LimitExceededError.code) return LimitExceededError\n if (code === MethodNotFoundError.code) return MethodNotFoundError\n if (code === MethodNotSupportedError.code) return MethodNotSupportedError\n if (code === ParseError.code) return ParseError\n if (code === ResourceNotFoundError.code) return ResourceNotFoundError\n if (code === ResourceUnavailableError.code)\n return ResourceUnavailableError\n if (code === TransactionRejectedError.code)\n return TransactionRejectedError\n if (code === VersionNotSupportedError.code)\n return VersionNotSupportedError\n return BaseError\n })()\n throw new JsonRpcError(response_.error)\n }\n return response_.result as never\n}\n\nexport declare namespace parse {\n type Options<returnType, raw extends boolean = false> = {\n /**\n * JSON-RPC Method that was used to make the request. Used for typing the response.\n */\n request?:\n | {\n _returnType: returnType\n }\n | RpcRequest.RpcRequest\n | undefined\n /**\n * Enables raw mode \u2013 responses will return an object with `result` and `error` properties instead of returning the `result` directly and throwing errors.\n *\n * - `true`: a JSON-RPC response object will be returned with `result` and `error` properties.\n * - `false`: the JSON-RPC response object's `result` property will be returned directly, and JSON-RPC Errors will be thrown.\n *\n * @default false\n */\n raw?: raw | boolean | undefined\n }\n\n type ReturnType<returnType, raw extends boolean = false> = Compute<\n raw extends true ? RpcResponse<returnType> : returnType\n >\n\n type ErrorType =\n | ParseError\n | InvalidInputError\n | ResourceNotFoundError\n | ResourceUnavailableError\n | TransactionRejectedError\n | MethodNotSupportedError\n | LimitExceededError\n | VersionNotSupportedError\n | InvalidRequestError\n | MethodNotFoundError\n | InvalidParamsError\n | InternalError\n | BaseErrorType\n | Errors.GlobalErrorType\n}\n\nexport type BaseErrorType = BaseError & { name: 'BaseError' }\n\n/** Thrown when a JSON-RPC error has occurred. */\nexport class BaseError extends Error {\n override name = 'RpcResponse.BaseError'\n\n readonly code: number\n readonly data?: unknown | undefined\n\n constructor(errorObject: ErrorObject) {\n const { code, message, data } = errorObject\n super(message)\n this.code = code\n this.data = data\n }\n}\n\n/** Thrown when the input to a JSON-RPC method is invalid. */\nexport class InvalidInputError extends BaseError {\n static readonly code = -32000\n override readonly code = -32000\n override readonly name = 'RpcResponse.InvalidInputError'\n\n constructor(parameters: Partial<Omit<ErrorObject, 'code'>> = {}) {\n super({\n message: 'Missing or invalid parameters.',\n ...parameters,\n code: InvalidInputError.code,\n })\n }\n}\n\n/** Thrown when a JSON-RPC resource is not found. */\nexport class ResourceNotFoundError extends BaseError {\n static readonly code = -32001\n override readonly code = -32001\n override readonly name = 'RpcResponse.ResourceNotFoundError'\n\n constructor(parameters: Partial<Omit<ErrorObject, 'code'>> = {}) {\n super({\n message: 'Requested resource not found.',\n ...parameters,\n code: ResourceNotFoundError.code,\n })\n }\n}\n\n/** Thrown when a JSON-RPC resource is unavailable. */\nexport class ResourceUnavailableError extends BaseError {\n static readonly code = -32002\n override readonly code = -32002\n override readonly name = 'RpcResponse.ResourceUnavailableError'\n\n constructor(parameters: Partial<Omit<ErrorObject, 'code'>> = {}) {\n super({\n message: 'Requested resource not available.',\n ...parameters,\n code: ResourceUnavailableError.code,\n })\n }\n}\n\n/** Thrown when a JSON-RPC transaction is rejected. */\nexport class TransactionRejectedError extends BaseError {\n static readonly code = -32003\n override readonly code = -32003\n override readonly name = 'RpcResponse.TransactionRejectedError'\n\n constructor(parameters: Partial<Omit<ErrorObject, 'code'>> = {}) {\n super({\n message: 'Transaction creation failed.',\n ...parameters,\n code: TransactionRejectedError.code,\n })\n }\n}\n\n/** Thrown when a JSON-RPC method is not supported. */\nexport class MethodNotSupportedError extends BaseError {\n static readonly code = -32004\n override readonly code = -32004\n override readonly name = 'RpcResponse.MethodNotSupportedError'\n\n constructor(parameters: Partial<Omit<ErrorObject, 'code'>> = {}) {\n super({\n message: 'Method is not implemented.',\n ...parameters,\n code: MethodNotSupportedError.code,\n })\n }\n}\n\n/** Thrown when a rate-limit is exceeded. */\nexport class LimitExceededError extends BaseError {\n static readonly code = -32005\n override readonly code = -32005\n override readonly name = 'RpcResponse.LimitExceededError'\n\n constructor(parameters: Partial<Omit<ErrorObject, 'code'>> = {}) {\n super({\n message: 'Rate limit exceeded.',\n ...parameters,\n code: LimitExceededError.code,\n })\n }\n}\n\n/** Thrown when a JSON-RPC version is not supported. */\nexport class VersionNotSupportedError extends BaseError {\n static readonly code = -32006\n override readonly code = -32006\n override readonly name = 'RpcResponse.VersionNotSupportedError'\n\n constructor(parameters: Partial<Omit<ErrorObject, 'code'>> = {}) {\n super({\n message: 'JSON-RPC version not supported.',\n ...parameters,\n code: VersionNotSupportedError.code,\n })\n }\n}\n\n/** Thrown when a JSON-RPC request is invalid. */\nexport class InvalidRequestError extends BaseError {\n static readonly code = -32600\n override readonly code = -32600\n override readonly name = 'RpcResponse.InvalidRequestError'\n\n constructor(parameters: Partial<Omit<ErrorObject, 'code'>> = {}) {\n super({\n message: 'Input is not a valid JSON-RPC request.',\n ...parameters,\n code: InvalidRequestError.code,\n })\n }\n}\n\n/** Thrown when a JSON-RPC method is not found. */\nexport class MethodNotFoundError extends BaseError {\n static readonly code = -32601\n override readonly code = -32601\n override readonly name = 'RpcResponse.MethodNotFoundError'\n\n constructor(parameters: Partial<Omit<ErrorObject, 'code'>> = {}) {\n super({\n message: 'Method does not exist.',\n ...parameters,\n code: MethodNotFoundError.code,\n })\n }\n}\n\n/** Thrown when the parameters to a JSON-RPC method are invalid. */\nexport class InvalidParamsError extends BaseError {\n static readonly code = -32602\n override readonly code = -32602\n override readonly name = 'RpcResponse.InvalidParamsError'\n\n constructor(parameters: Partial<Omit<ErrorObject, 'code'>> = {}) {\n super({\n message: 'Invalid method parameters.',\n ...parameters,\n code: InvalidParamsError.code,\n })\n }\n}\n\n/** Thrown when an internal JSON-RPC error has occurred. */\nexport class InternalError extends BaseError {\n static readonly code = -32603\n override readonly code = -32603\n override readonly name = 'RpcResponse.InternalErrorError'\n\n constructor(parameters: Partial<Omit<ErrorObject, 'code'>> = {}) {\n super({\n message: 'Internal JSON-RPC error.',\n ...parameters,\n code: InternalError.code,\n })\n }\n}\n\n/** Thrown when a JSON-RPC response is invalid. */\nexport class ParseError extends BaseError {\n static readonly code = -32700\n override readonly code = -32700\n override readonly name = 'RpcResponse.ParseError'\n\n constructor(parameters: Partial<Omit<ErrorObject, 'code'>> = {}) {\n super({\n message: 'Failed to parse JSON-RPC response.',\n ...parameters,\n code: ParseError.code,\n })\n }\n}\n", "import type { Errors } from '../index.js'\nimport type * as RpcSchema from './RpcSchema.js'\nimport type * as RpcSchema_internal from './internal/rpcSchema.js'\nimport type { Compute } from './internal/types.js'\n\n/** A JSON-RPC request object as per the [JSON-RPC 2.0 specification](https://www.jsonrpc.org/specification#request_object). */\nexport type RpcRequest<schema extends RpcSchema.Generic = RpcSchema.Generic> =\n Compute<\n schema extends any\n ? schema['Request'] & {\n id: number\n jsonrpc: '2.0'\n /** @deprecated internal */\n _returnType: schema['ReturnType']\n }\n : never\n >\n\n/** JSON-RPC request store type. */\nexport type Store<schema extends RpcSchema.Generic = RpcSchema.Default> =\n Compute<{\n prepare: <methodName extends RpcSchema.MethodNameGeneric>(\n parameters: Compute<\n RpcSchema_internal.ExtractRequestOpaque<schema, methodName>\n >,\n ) => Compute<RpcRequest<RpcSchema.ExtractItem<schema, methodName>>>\n readonly id: number\n }>\n\n/**\n * Creates a JSON-RPC request store to build requests with an incrementing `id`.\n *\n * Returns a type-safe `prepare` function to build a JSON-RPC request object as per the [JSON-RPC 2.0 specification](https://www.jsonrpc.org/specification#request_object).\n *\n * @example\n * ```ts twoslash\n * import { RpcRequest } from 'ox'\n *\n * const store = RpcRequest.createStore()\n *\n * const request_1 = store.prepare({\n * method: 'eth_blockNumber',\n * })\n * // @log: { id: 0, jsonrpc: '2.0', method: 'eth_blockNumber' }\n *\n * const request_2 = store.prepare({\n * method: 'eth_call',\n * params: [\n * {\n * to: '0x0000000000000000000000000000000000000000',\n * data: '0xdeadbeef',\n * },\n * ],\n * })\n * // @log: { id: 1, jsonrpc: '2.0', method: 'eth_call', params: [{ to: '0x0000000000000000000000000000000000000000', data: '0xdeadbeef' }] }\n * ```\n *\n * @example\n * ### Type-safe Custom Schemas\n *\n * It is possible to define your own type-safe schema by using the {@link ox#RpcSchema.From} type.\n *\n * ```ts twoslash\n * import { RpcSchema, RpcRequest } from 'ox'\n *\n * type Schema = RpcSchema.From<{ // [!code focus]\n * Request: { // [!code focus]\n * method: 'eth_foobar' // [!code focus]\n * params: [number] // [!code focus]\n * } // [!code focus]\n * ReturnType: string // [!code focus]\n * } | { // [!code focus]\n * Request: { // [!code focus]\n * method: 'eth_foobaz' // [!code focus]\n * params: [string] // [!code focus]\n * } // [!code focus]\n * ReturnType: string // [!code focus]\n * }> // [!code focus]\n *\n * const store = RpcRequest.createStore<Schema>() // [!code focus]\n *\n * const request = store.prepare({\n * method: 'eth_foobar', // [!code focus]\n * // ^?\n * params: [42],\n * })\n * ```\n *\n * @param options - Request store options.\n * @returns The request store\n */\nexport function createStore<\n schema extends RpcSchema.Generic = RpcSchema.Default,\n>(options: createStore.Options = {}): createStore.ReturnType<schema> {\n let id = options.id ?? 0\n return {\n prepare(options) {\n return from({\n id: id++,\n ...options,\n } as never) as never\n },\n get id() {\n return id\n },\n }\n}\n\nexport declare namespace createStore {\n type Options = {\n /** The initial request ID. */\n id?: number\n }\n\n type ReturnType<schema extends RpcSchema.Generic = RpcSchema.Default> =\n Store<schema>\n\n type ErrorType = Errors.GlobalErrorType\n}\n\n/**\n * A type-safe interface to build a JSON-RPC request object as per the [JSON-RPC 2.0 specification](https://www.jsonrpc.org/specification#request_object).\n *\n * :::warning\n *\n * You will likely want to use {@link ox#RpcRequest.(createStore:function)} instead as it will also manage `id`s and uses this function internally.\n *\n * :::\n *\n * @example\n * ```ts twoslash\n * import { RpcRequest, RpcResponse } from 'ox'\n *\n * // 1. Build a request object.\n * const request = RpcRequest.from({ // [!code focus]\n * id: 0, // [!code focus]\n * method: 'eth_estimateGas', // [!code focus]\n * params: [ // [!code focus]\n * { // [!code focus]\n * from: '0xd2135CfB216b74109775236E36d4b433F1DF507B', // [!code focus]\n * to: '0x0D44f617435088c947F00B31160f64b074e412B4', // [!code focus]\n * value: '0x69420', // [!code focus]\n * }, // [!code focus]\n * ], // [!code focus]\n * }) // [!code focus]\n *\n * // 2. Send the JSON-RPC request via HTTP.\n * const gas = await fetch('https://1.rpc.thirdweb.com', {\n * body: JSON.stringify(request),\n * headers: {\n * 'Content-Type': 'application/json',\n * },\n * method: 'POST',\n * })\n * .then((response) => response.json())\n * // 3. Parse the JSON-RPC response into a type-safe result.\n * .then((response) => RpcResponse.parse(response, { request }))\n * ```\n *\n * @param options - JSON-RPC request options.\n * @returns The fully-formed JSON-RPC request object.\n */\nexport function from<methodName extends RpcSchema.MethodNameGeneric>(\n options: from.Options<methodName>,\n): from.ReturnType<methodName> {\n return {\n ...options,\n jsonrpc: '2.0',\n } as never\n}\n\nexport declare namespace from {\n type Options<methodName extends RpcSchema.MethodNameGeneric> = Compute<\n RpcSchema_internal.ExtractRequestOpaque<RpcSchema.Default, methodName> & {\n id: number\n }\n >\n\n type ReturnType<methodName extends RpcSchema.MethodNameGeneric> = Compute<\n RpcRequest<RpcSchema.ExtractItem<RpcSchema.Default, methodName>>\n >\n\n type ErrorType = Errors.GlobalErrorType\n}\n", "import { Provider, RpcRequest } from \"ox\";\nimport { frameHost } from \"./frameHost\";\n\nconst emitter = Provider.createEmitter();\nconst store = RpcRequest.createStore();\n\nexport const provider = Provider.from({\n ...emitter,\n async request(args) {\n return await frameHost.ethProviderRequest(\n // @ts-expect-error - from ox examples but our FetchFn needs better typing\n store.prepare(args),\n );\n },\n});\n\nexport type ProviderType = typeof provider;\n\n// Required to pass SSR\nif (typeof document !== 'undefined')\n document.addEventListener(\"FarcasterFrameEvent\", (event) => {\n if (event instanceof MessageEvent) {\n // TODO narrow to EventMap types and emit\n // emitter.emit(event.type as (keyof Provider.EventMap), event.data);\n }\n });\n", "import { EventEmitter } from \"eventemitter3\";\nimport { FrameSDK, Emitter, EventMap } from \"./types\";\nimport { frameHost } from \"./frameHost\";\nimport { provider } from \"./provider\";\n\nexport function createEmitter(): Emitter {\n const emitter = new EventEmitter<EventMap>();\n\n return {\n get eventNames() {\n return emitter.eventNames.bind(emitter);\n },\n get listenerCount() {\n return emitter.listenerCount.bind(emitter);\n },\n get listeners() {\n return emitter.listeners.bind(emitter);\n },\n addListener: emitter.addListener.bind(emitter),\n emit: emitter.emit.bind(emitter),\n off: emitter.off.bind(emitter),\n on: emitter.on.bind(emitter),\n once: emitter.once.bind(emitter),\n removeAllListeners: emitter.removeAllListeners.bind(emitter),\n removeListener: emitter.removeListener.bind(emitter),\n };\n}\n\nconst emitter = createEmitter();\n\nexport const sdk: FrameSDK = {\n ...emitter,\n context: frameHost.context,\n actions: {\n setPrimaryButton: frameHost.setPrimaryButton.bind(frameHost),\n ready: frameHost.ready.bind(frameHost),\n close: frameHost.close.bind(frameHost),\n openUrl: frameHost.openUrl.bind(frameHost),\n },\n wallet: {\n ethProvider: provider,\n }\n};\n\n// Required to pass SSR\nif (typeof document !== 'undefined')\n document.addEventListener(\"FarcasterFrameEvent\", (event) => {\n if (event instanceof MessageEvent) {\n if (event.data.type === \"primaryButtonClicked\") {\n emitter.emit(\"primaryButtonClicked\");\n }\n }\n });\n"],
5
+ "mappings": "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",
6
+ "names": ["require_eventemitter3", "__commonJSMin", "exports", "module", "has", "prefix", "Events", "EE", "fn", "context", "once", "addListener", "emitter", "event", "listener", "evt", "clearEvent", "EventEmitter", "names", "events", "name", "handlers", "i", "l", "ee", "listeners", "a1", "a2", "a3", "a4", "a5", "len", "args", "length", "j", "src_exports", "__export", "src_default", "import_index", "proxyMarker", "createEndpoint", "releaseProxy", "finalizer", "throwMarker", "isObject", "val", "proxyTransferHandler", "obj", "port1", "port2", "expose", "port", "wrap", "throwTransferHandler", "value", "serialized", "transferHandlers", "isAllowedOrigin", "allowedOrigins", "origin", "allowedOrigin", "ep", "callback", "ev", "id", "type", "path", "argumentList", "fromWireValue", "returnValue", "parent", "prop", "rawValue", "proxy", "transfer", "wireValue", "transferables", "toWireValue", "closeEndPoint", "error", "isMessagePort", "endpoint", "target", "pendingListeners", "data", "resolver", "createProxy", "throwIfProxyReleased", "isReleased", "releaseEndpoint", "requestResponseMessage", "proxyCounter", "proxyFinalizers", "newCount", "registerProxy", "unregisterProxy", "isProxyReleased", "_target", "r", "p", "_thisArg", "rawArgumentList", "last", "processArguments", "myFlat", "arr", "processed", "v", "transferCache", "transfers", "windowEndpoint", "w", "context", "targetOrigin", "msg", "name", "handler", "serializedValue", "resolve", "generateUUID", "mockEndpoint", "webViewEndpoint", "data", "_", "listener", "args", "endpoint", "windowEndpoint", "frameHost", "wrap", "endpoint", "version", "getVersion", "version", "BaseError", "_BaseError", "shortMessage", "options", "details", "docsPath", "docs", "message", "x", "getVersion", "fn", "walk", "err", "Provider_exports", "__export", "ChainDisconnectedError", "DisconnectedError", "IsUndefinedError", "ProviderRpcError", "UnauthorizedError", "UnsupportedMethodError", "UserRejectedRequestError", "createEmitter", "from", "parse", "response", "options", "raw", "response_", "code", "JsonRpcError", "InternalError", "InvalidInputError", "InvalidParamsError", "InvalidRequestError", "LimitExceededError", "MethodNotFoundError", "MethodNotSupportedError", "ParseError", "ResourceNotFoundError", "ResourceUnavailableError", "TransactionRejectedError", "VersionNotSupportedError", "BaseError", "errorObject", "message", "data", "_InvalidInputError", "parameters", "_ResourceNotFoundError", "_ResourceUnavailableError", "_TransactionRejectedError", "_MethodNotSupportedError", "_LimitExceededError", "_VersionNotSupportedError", "_InvalidRequestError", "_MethodNotFoundError", "_InvalidParamsError", "_InternalError", "_ParseError", "ProviderRpcError", "code", "message", "UserRejectedRequestError", "UnauthorizedError", "UnsupportedMethodError", "DisconnectedError", "ChainDisconnectedError", "createEmitter", "emitter", "EventEmitter", "from", "provider", "options", "includeEvents", "IsUndefinedError", "args", "result", "parse", "BaseError", "RpcRequest_exports", "__export", "createStore", "from", "options", "id", "emitter", "Provider_exports", "store", "RpcRequest_exports", "provider", "args", "frameHost", "event", "createEmitter", "emitter", "EventEmitter", "sdk", "frameHost", "provider", "event", "src_default", "sdk"]
7
+ }
package/package.json CHANGED
@@ -1,11 +1,13 @@
1
1
  {
2
2
  "name": "@farcaster/frame-sdk",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "clean": "rm -rf dist",
7
7
  "prebuild": "npm run clean",
8
- "build": "tsc",
8
+ "build": "yarn build:cjs && yarn build:umd",
9
+ "build:cjs": "tsc",
10
+ "build:umd": "node scripts/build.js",
9
11
  "typecheck": "tsc --noEmit"
10
12
  },
11
13
  "files": [
@@ -14,13 +16,14 @@
14
16
  ],
15
17
  "devDependencies": {
16
18
  "@farcaster/tsconfig": "*",
17
- "ox": "^0.2.2",
19
+ "esbuild": "^0.24.0",
18
20
  "typescript": "^5.6.3"
19
21
  },
20
22
  "dependencies": {
21
23
  "@farcaster/frame-core": "^0.0.4",
22
24
  "comlink": "^4.4.2",
23
- "eventemitter3": "^5.0.1"
25
+ "eventemitter3": "^5.0.1",
26
+ "ox": "^0.2.2"
24
27
  },
25
28
  "peerDependencies": {
26
29
  "ox": "^0.2.2"