@magic-ext/farcaster 0.0.5 → 0.0.6-canary.25c0460.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var v=(n,e)=>{for(var t in e)a(n,t,{get:e[t],enumerable:!0})},A=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of p(e))!h.call(n,o)&&o!==t&&a(n,o,{get:()=>e[o],enumerable:!(r=f(e,o))||r.enumerable});return n};var I=n=>A(a({},"__esModule",{value:!0}),n);var O={};v(O,{FarcasterExtension:()=>s});module.exports=I(O);var u=require("@magic-sdk/commons");function R(){return typeof navigator!="undefined"&&/android/i.test(navigator.userAgent)}function m(){return typeof navigator!="undefined"&&/iPhone|iPod/.test(navigator.userAgent)}function b(){return typeof navigator!="undefined"&&(/iPad/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1)}function L(){return m()||b()}function i(){return R()||L()}var F=!0;var s=class extends u.Extension.Internal{constructor(){super(...arguments);this.name="farcaster";this.config={};this.login=t=>{var l;let r=(l=t==null?void 0:t.showUI)!=null?l:F,o=location.origin,d=this.utils.createJsonRpcRequestPayload("farcaster_show_QR",[{data:{showUI:r,domain:o,isMobile:i()}}]),c=this.request(d);return i()&&c.on("channel",g=>{window.open(g.url,"_blank")}),c}}};
1
+ "use strict";var h=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var R=Object.prototype.hasOwnProperty;var A=(t,n)=>{for(var e in n)h(t,e,{get:n[e],enumerable:!0})},C=(t,n,e,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of v(n))!R.call(t,o)&&o!==e&&h(t,o,{get:()=>n[o],enumerable:!(a=g(n,o))||a.enumerable});return t};var I=t=>C(h({},"__esModule",{value:!0}),t);var p=(t,n,e)=>new Promise((a,o)=>{var s=r=>{try{i(e.next(r))}catch(l){o(l)}},c=r=>{try{i(e.throw(r))}catch(l){o(l)}},i=r=>r.done?a(r.value):Promise.resolve(r.value).then(s,c);i((e=e.apply(t,n)).next())});var S={};A(S,{FarcasterExtension:()=>d});module.exports=I(S);var f=require("@magic-sdk/commons");function m(){return typeof navigator!="undefined"&&/android/i.test(navigator.userAgent)}function y(){return typeof navigator!="undefined"&&/iPhone|iPod/.test(navigator.userAgent)}function L(){return typeof navigator!="undefined"&&(/iPad/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1)}function P(){return y()||L()}function u(){return m()||P()}var E=!0;var O="https://relay.farcaster.xyz",d=class extends f.Extension.Internal{constructor(){super();this.name="farcaster";this.config={};this.channel=null;this.login=e=>{var i;if(!this.channel)throw new Error("Channel not created yet.");let a=(i=e==null?void 0:e.showUI)!=null?i:E,o=location.origin,s=this.utils.createJsonRpcRequestPayload("farcaster_show_QR",[{data:{showUI:a,domain:o,isMobile:u(),channel:this.channel}}]),c=this.request(s);return u()&&(location.href=this.channel.url),c};p(this,null,function*(){let e=yield fetch(`${O}/v1/channel`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({domain:location.host,siweUri:location.origin})}).then(a=>a.json());this.channel=e})}};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts", "../../src/utils.ts"],
4
- "sourcesContent": ["import { Extension } from '@magic-sdk/commons';\nimport type { CreateChannelAPIResponse, AuthenticateAPIResponse, AuthClientError } from '@farcaster/auth-client';\nimport { FarcasterPayloadMethod } from './types';\nimport { isMobile } from './utils';\n\nconst DEFAULT_SHOW_UI = true;\n\ntype LoginParams = {\n showUI: boolean;\n};\n\nconst FarcasterLoginEventOnReceived = {\n OpenChannel: 'channel',\n Success: 'success',\n Failed: 'failed',\n} as const;\n\ntype FarcasterLoginEventHandlers = {\n [FarcasterLoginEventOnReceived.OpenChannel]: (channel: CreateChannelAPIResponse) => void;\n [FarcasterLoginEventOnReceived.Success]: (data: AuthenticateAPIResponse) => void;\n [FarcasterLoginEventOnReceived.Failed]: (error: AuthClientError) => void;\n};\n\nexport class FarcasterExtension extends Extension.Internal<'farcaster'> {\n name = 'farcaster' as const;\n config = {};\n\n public login = (params?: LoginParams) => {\n const showUI = params?.showUI ?? DEFAULT_SHOW_UI;\n\n const domain = location.origin;\n\n const payload = this.utils.createJsonRpcRequestPayload(FarcasterPayloadMethod.FarcasterShowQR, [\n {\n data: {\n showUI,\n domain,\n isMobile: isMobile(),\n },\n },\n ]);\n\n const handle = this.request<string, FarcasterLoginEventHandlers>(payload);\n\n if (isMobile()) {\n handle.on('channel', (channel) => {\n window.open(channel.url, '_blank');\n });\n }\n\n return handle;\n };\n}\n", "// https://github.com/farcasterxyz/auth-monorepo/blob/main/packages/auth-kit/src/utils.ts\n\nexport function isAndroid(): boolean {\n return typeof navigator !== 'undefined' && /android/i.test(navigator.userAgent);\n}\n\nexport function isSmallIOS(): boolean {\n return typeof navigator !== 'undefined' && /iPhone|iPod/.test(navigator.userAgent);\n}\n\nexport function isLargeIOS(): boolean {\n return (\n typeof navigator !== 'undefined' &&\n (/iPad/.test(navigator.userAgent) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1))\n );\n}\n\nexport function isIOS(): boolean {\n return isSmallIOS() || isLargeIOS();\n}\n\nexport function isMobile(): boolean {\n return isAndroid() || isIOS();\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA0B,8BCEnB,SAASC,GAAqB,CACnC,OAAO,OAAO,WAAc,aAAe,WAAW,KAAK,UAAU,SAAS,CAChF,CAEO,SAASC,GAAsB,CACpC,OAAO,OAAO,WAAc,aAAe,cAAc,KAAK,UAAU,SAAS,CACnF,CAEO,SAASC,GAAsB,CACpC,OACE,OAAO,WAAc,cACpB,OAAO,KAAK,UAAU,SAAS,GAAM,UAAU,WAAa,YAAc,UAAU,eAAiB,EAE1G,CAEO,SAASC,GAAiB,CAC/B,OAAOF,EAAW,GAAKC,EAAW,CACpC,CAEO,SAASE,GAAoB,CAClC,OAAOJ,EAAU,GAAKG,EAAM,CAC9B,CDlBA,IAAME,EAAkB,GAkBjB,IAAMC,EAAN,cAAiC,YAAU,QAAsB,CAAjE,kCACL,UAAO,YACP,YAAS,CAAC,EAEV,KAAO,MAASC,GAAyB,CA3B3C,IAAAC,EA4BI,IAAMC,GAASD,EAAAD,GAAA,YAAAA,EAAQ,SAAR,KAAAC,EAAkBE,EAE3BC,EAAS,SAAS,OAElBC,EAAU,KAAK,MAAM,gDAAoE,CAC7F,CACE,KAAM,CACJ,OAAAH,EACA,OAAAE,EACA,SAAUE,EAAS,CACrB,CACF,CACF,CAAC,EAEKC,EAAS,KAAK,QAA6CF,CAAO,EAExE,OAAIC,EAAS,GACXC,EAAO,GAAG,UAAYC,GAAY,CAChC,OAAO,KAAKA,EAAQ,IAAK,QAAQ,CACnC,CAAC,EAGID,CACT,EACF",
6
- "names": ["src_exports", "__export", "FarcasterExtension", "__toCommonJS", "import_commons", "isAndroid", "isSmallIOS", "isLargeIOS", "isIOS", "isMobile", "DEFAULT_SHOW_UI", "FarcasterExtension", "params", "_a", "showUI", "DEFAULT_SHOW_UI", "domain", "payload", "isMobile", "handle", "channel"]
4
+ "sourcesContent": ["import { Extension } from '@magic-sdk/commons';\nimport type { CreateChannelAPIResponse, AuthenticateAPIResponse, AuthClientError } from '@farcaster/auth-client';\nimport { FarcasterPayloadMethod } from './types';\nimport { isMobile } from './utils';\n\nconst DEFAULT_SHOW_UI = true;\n\ntype LoginParams = {\n showUI: boolean;\n};\n\nconst FarcasterLoginEventOnReceived = {\n OpenChannel: 'channel',\n Success: 'success',\n Failed: 'failed',\n} as const;\n\ntype FarcasterLoginEventHandlers = {\n [FarcasterLoginEventOnReceived.OpenChannel]: (channel: CreateChannelAPIResponse) => void;\n [FarcasterLoginEventOnReceived.Success]: (data: AuthenticateAPIResponse) => void;\n [FarcasterLoginEventOnReceived.Failed]: (error: AuthClientError) => void;\n};\n\nconst FARCASTER_RELAY_URL = 'https://relay.farcaster.xyz';\nexport class FarcasterExtension extends Extension.Internal<'farcaster'> {\n name = 'farcaster' as const;\n config = {};\n channel: CreateChannelAPIResponse | null = null;\n\n constructor() {\n super();\n\n (async () => {\n const json = await fetch(`${FARCASTER_RELAY_URL}/v1/channel`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n domain: location.host,\n siweUri: location.origin,\n }),\n }).then<CreateChannelAPIResponse>((r) => r.json());\n\n this.channel = json;\n })();\n }\n\n public login = (params?: LoginParams) => {\n if (!this.channel) {\n throw new Error('Channel not created yet.');\n }\n\n const showUI = params?.showUI ?? DEFAULT_SHOW_UI;\n\n const domain = location.origin;\n\n const payload = this.utils.createJsonRpcRequestPayload(FarcasterPayloadMethod.FarcasterShowQR, [\n {\n data: {\n showUI,\n domain,\n isMobile: isMobile(),\n channel: this.channel,\n },\n },\n ]);\n\n const handle = this.request<string, FarcasterLoginEventHandlers>(payload);\n\n if (isMobile()) {\n location.href = this.channel.url;\n }\n\n return handle;\n };\n}\n", "// https://github.com/farcasterxyz/auth-monorepo/blob/main/packages/auth-kit/src/utils.ts\n\nexport function isAndroid(): boolean {\n return typeof navigator !== 'undefined' && /android/i.test(navigator.userAgent);\n}\n\nexport function isSmallIOS(): boolean {\n return typeof navigator !== 'undefined' && /iPhone|iPod/.test(navigator.userAgent);\n}\n\nexport function isLargeIOS(): boolean {\n return (\n typeof navigator !== 'undefined' &&\n (/iPad/.test(navigator.userAgent) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1))\n );\n}\n\nexport function isIOS(): boolean {\n return isSmallIOS() || isLargeIOS();\n}\n\nexport function isMobile(): boolean {\n return isAndroid() || isIOS();\n}\n"],
5
+ "mappings": "snBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA0B,8BCEnB,SAASC,GAAqB,CACnC,OAAO,OAAO,WAAc,aAAe,WAAW,KAAK,UAAU,SAAS,CAChF,CAEO,SAASC,GAAsB,CACpC,OAAO,OAAO,WAAc,aAAe,cAAc,KAAK,UAAU,SAAS,CACnF,CAEO,SAASC,GAAsB,CACpC,OACE,OAAO,WAAc,cACpB,OAAO,KAAK,UAAU,SAAS,GAAM,UAAU,WAAa,YAAc,UAAU,eAAiB,EAE1G,CAEO,SAASC,GAAiB,CAC/B,OAAOF,EAAW,GAAKC,EAAW,CACpC,CAEO,SAASE,GAAoB,CAClC,OAAOJ,EAAU,GAAKG,EAAM,CAC9B,CDlBA,IAAME,EAAkB,GAkBxB,IAAMC,EAAsB,8BACfC,EAAN,cAAiC,YAAU,QAAsB,CAKtE,aAAc,CACZ,MAAM,EALR,UAAO,YACP,YAAS,CAAC,EACV,aAA2C,KAqB3C,KAAO,MAASC,GAAyB,CAhD3C,IAAAC,EAiDI,GAAI,CAAC,KAAK,QACR,MAAM,IAAI,MAAM,0BAA0B,EAG5C,IAAMC,GAASD,EAAAD,GAAA,YAAAA,EAAQ,SAAR,KAAAC,EAAkBE,EAE3BC,EAAS,SAAS,OAElBC,EAAU,KAAK,MAAM,gDAAoE,CAC7F,CACE,KAAM,CACJ,OAAAH,EACA,OAAAE,EACA,SAAUE,EAAS,EACnB,QAAS,KAAK,OAChB,CACF,CACF,CAAC,EAEKC,EAAS,KAAK,QAA6CF,CAAO,EAExE,OAAIC,EAAS,IACX,SAAS,KAAO,KAAK,QAAQ,KAGxBC,CACT,EA3CeC,EAAA,sBACX,IAAMC,EAAO,MAAM,MAAM,GAAGX,eAAkC,CAC5D,OAAQ,OACR,QAAS,CACP,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAU,CACnB,OAAQ,SAAS,KACjB,QAAS,SAAS,MACpB,CAAC,CACH,CAAC,EAAE,KAAgCY,GAAMA,EAAE,KAAK,CAAC,EAEjD,KAAK,QAAUD,CACjB,EACF,CA8BF",
6
+ "names": ["src_exports", "__export", "FarcasterExtension", "__toCommonJS", "import_commons", "isAndroid", "isSmallIOS", "isLargeIOS", "isIOS", "isMobile", "DEFAULT_SHOW_UI", "FARCASTER_RELAY_URL", "FarcasterExtension", "params", "_a", "showUI", "DEFAULT_SHOW_UI", "domain", "payload", "isMobile", "handle", "__async", "json", "r"]
7
7
  }
package/dist/es/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{Extension as f}from"@magic-sdk/commons";function l(){return typeof navigator!="undefined"&&/android/i.test(navigator.userAgent)}function u(){return typeof navigator!="undefined"&&/iPhone|iPod/.test(navigator.userAgent)}function d(){return typeof navigator!="undefined"&&(/iPad/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1)}function g(){return u()||d()}function n(){return l()||g()}var p=!0;var r=class extends f.Internal{constructor(){super(...arguments);this.name="farcaster";this.config={};this.login=e=>{var o;let a=(o=e==null?void 0:e.showUI)!=null?o:p,i=location.origin,s=this.utils.createJsonRpcRequestPayload("farcaster_show_QR",[{data:{showUI:a,domain:i,isMobile:n()}}]),t=this.request(s);return n()&&t.on("channel",c=>{window.open(c.url,"_blank")}),t}}};export{r as FarcasterExtension};
1
+ var u=(l,h,e)=>new Promise((o,a)=>{var r=n=>{try{t(e.next(n))}catch(s){a(s)}},i=n=>{try{t(e.throw(n))}catch(s){a(s)}},t=n=>n.done?o(n.value):Promise.resolve(n.value).then(r,i);t((e=e.apply(l,h)).next())});import{Extension as R}from"@magic-sdk/commons";function p(){return typeof navigator!="undefined"&&/android/i.test(navigator.userAgent)}function f(){return typeof navigator!="undefined"&&/iPhone|iPod/.test(navigator.userAgent)}function g(){return typeof navigator!="undefined"&&(/iPad/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1)}function v(){return f()||g()}function c(){return p()||v()}var A=!0;var C="https://relay.farcaster.xyz",d=class extends R.Internal{constructor(){super();this.name="farcaster";this.config={};this.channel=null;this.login=e=>{var t;if(!this.channel)throw new Error("Channel not created yet.");let o=(t=e==null?void 0:e.showUI)!=null?t:A,a=location.origin,r=this.utils.createJsonRpcRequestPayload("farcaster_show_QR",[{data:{showUI:o,domain:a,isMobile:c(),channel:this.channel}}]),i=this.request(r);return c()&&(location.href=this.channel.url),i};u(this,null,function*(){let e=yield fetch(`${C}/v1/channel`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({domain:location.host,siweUri:location.origin})}).then(o=>o.json());this.channel=e})}};export{d as FarcasterExtension};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts", "../../src/utils.ts"],
4
- "sourcesContent": ["import { Extension } from '@magic-sdk/commons';\nimport type { CreateChannelAPIResponse, AuthenticateAPIResponse, AuthClientError } from '@farcaster/auth-client';\nimport { FarcasterPayloadMethod } from './types';\nimport { isMobile } from './utils';\n\nconst DEFAULT_SHOW_UI = true;\n\ntype LoginParams = {\n showUI: boolean;\n};\n\nconst FarcasterLoginEventOnReceived = {\n OpenChannel: 'channel',\n Success: 'success',\n Failed: 'failed',\n} as const;\n\ntype FarcasterLoginEventHandlers = {\n [FarcasterLoginEventOnReceived.OpenChannel]: (channel: CreateChannelAPIResponse) => void;\n [FarcasterLoginEventOnReceived.Success]: (data: AuthenticateAPIResponse) => void;\n [FarcasterLoginEventOnReceived.Failed]: (error: AuthClientError) => void;\n};\n\nexport class FarcasterExtension extends Extension.Internal<'farcaster'> {\n name = 'farcaster' as const;\n config = {};\n\n public login = (params?: LoginParams) => {\n const showUI = params?.showUI ?? DEFAULT_SHOW_UI;\n\n const domain = location.origin;\n\n const payload = this.utils.createJsonRpcRequestPayload(FarcasterPayloadMethod.FarcasterShowQR, [\n {\n data: {\n showUI,\n domain,\n isMobile: isMobile(),\n },\n },\n ]);\n\n const handle = this.request<string, FarcasterLoginEventHandlers>(payload);\n\n if (isMobile()) {\n handle.on('channel', (channel) => {\n window.open(channel.url, '_blank');\n });\n }\n\n return handle;\n };\n}\n", "// https://github.com/farcasterxyz/auth-monorepo/blob/main/packages/auth-kit/src/utils.ts\n\nexport function isAndroid(): boolean {\n return typeof navigator !== 'undefined' && /android/i.test(navigator.userAgent);\n}\n\nexport function isSmallIOS(): boolean {\n return typeof navigator !== 'undefined' && /iPhone|iPod/.test(navigator.userAgent);\n}\n\nexport function isLargeIOS(): boolean {\n return (\n typeof navigator !== 'undefined' &&\n (/iPad/.test(navigator.userAgent) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1))\n );\n}\n\nexport function isIOS(): boolean {\n return isSmallIOS() || isLargeIOS();\n}\n\nexport function isMobile(): boolean {\n return isAndroid() || isIOS();\n}\n"],
5
- "mappings": "AAAA,OAAS,aAAAA,MAAiB,qBCEnB,SAASC,GAAqB,CACnC,OAAO,OAAO,WAAc,aAAe,WAAW,KAAK,UAAU,SAAS,CAChF,CAEO,SAASC,GAAsB,CACpC,OAAO,OAAO,WAAc,aAAe,cAAc,KAAK,UAAU,SAAS,CACnF,CAEO,SAASC,GAAsB,CACpC,OACE,OAAO,WAAc,cACpB,OAAO,KAAK,UAAU,SAAS,GAAM,UAAU,WAAa,YAAc,UAAU,eAAiB,EAE1G,CAEO,SAASC,GAAiB,CAC/B,OAAOF,EAAW,GAAKC,EAAW,CACpC,CAEO,SAASE,GAAoB,CAClC,OAAOJ,EAAU,GAAKG,EAAM,CAC9B,CDlBA,IAAME,EAAkB,GAkBjB,IAAMC,EAAN,cAAiCC,EAAU,QAAsB,CAAjE,kCACL,UAAO,YACP,YAAS,CAAC,EAEV,KAAO,MAASC,GAAyB,CA3B3C,IAAAC,EA4BI,IAAMC,GAASD,EAAAD,GAAA,YAAAA,EAAQ,SAAR,KAAAC,EAAkBE,EAE3BC,EAAS,SAAS,OAElBC,EAAU,KAAK,MAAM,gDAAoE,CAC7F,CACE,KAAM,CACJ,OAAAH,EACA,OAAAE,EACA,SAAUE,EAAS,CACrB,CACF,CACF,CAAC,EAEKC,EAAS,KAAK,QAA6CF,CAAO,EAExE,OAAIC,EAAS,GACXC,EAAO,GAAG,UAAYC,GAAY,CAChC,OAAO,KAAKA,EAAQ,IAAK,QAAQ,CACnC,CAAC,EAGID,CACT,EACF",
6
- "names": ["Extension", "isAndroid", "isSmallIOS", "isLargeIOS", "isIOS", "isMobile", "DEFAULT_SHOW_UI", "FarcasterExtension", "Extension", "params", "_a", "showUI", "DEFAULT_SHOW_UI", "domain", "payload", "isMobile", "handle", "channel"]
4
+ "sourcesContent": ["import { Extension } from '@magic-sdk/commons';\nimport type { CreateChannelAPIResponse, AuthenticateAPIResponse, AuthClientError } from '@farcaster/auth-client';\nimport { FarcasterPayloadMethod } from './types';\nimport { isMobile } from './utils';\n\nconst DEFAULT_SHOW_UI = true;\n\ntype LoginParams = {\n showUI: boolean;\n};\n\nconst FarcasterLoginEventOnReceived = {\n OpenChannel: 'channel',\n Success: 'success',\n Failed: 'failed',\n} as const;\n\ntype FarcasterLoginEventHandlers = {\n [FarcasterLoginEventOnReceived.OpenChannel]: (channel: CreateChannelAPIResponse) => void;\n [FarcasterLoginEventOnReceived.Success]: (data: AuthenticateAPIResponse) => void;\n [FarcasterLoginEventOnReceived.Failed]: (error: AuthClientError) => void;\n};\n\nconst FARCASTER_RELAY_URL = 'https://relay.farcaster.xyz';\nexport class FarcasterExtension extends Extension.Internal<'farcaster'> {\n name = 'farcaster' as const;\n config = {};\n channel: CreateChannelAPIResponse | null = null;\n\n constructor() {\n super();\n\n (async () => {\n const json = await fetch(`${FARCASTER_RELAY_URL}/v1/channel`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n domain: location.host,\n siweUri: location.origin,\n }),\n }).then<CreateChannelAPIResponse>((r) => r.json());\n\n this.channel = json;\n })();\n }\n\n public login = (params?: LoginParams) => {\n if (!this.channel) {\n throw new Error('Channel not created yet.');\n }\n\n const showUI = params?.showUI ?? DEFAULT_SHOW_UI;\n\n const domain = location.origin;\n\n const payload = this.utils.createJsonRpcRequestPayload(FarcasterPayloadMethod.FarcasterShowQR, [\n {\n data: {\n showUI,\n domain,\n isMobile: isMobile(),\n channel: this.channel,\n },\n },\n ]);\n\n const handle = this.request<string, FarcasterLoginEventHandlers>(payload);\n\n if (isMobile()) {\n location.href = this.channel.url;\n }\n\n return handle;\n };\n}\n", "// https://github.com/farcasterxyz/auth-monorepo/blob/main/packages/auth-kit/src/utils.ts\n\nexport function isAndroid(): boolean {\n return typeof navigator !== 'undefined' && /android/i.test(navigator.userAgent);\n}\n\nexport function isSmallIOS(): boolean {\n return typeof navigator !== 'undefined' && /iPhone|iPod/.test(navigator.userAgent);\n}\n\nexport function isLargeIOS(): boolean {\n return (\n typeof navigator !== 'undefined' &&\n (/iPad/.test(navigator.userAgent) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1))\n );\n}\n\nexport function isIOS(): boolean {\n return isSmallIOS() || isLargeIOS();\n}\n\nexport function isMobile(): boolean {\n return isAndroid() || isIOS();\n}\n"],
5
+ "mappings": "6MAAA,OAAS,aAAAA,MAAiB,qBCEnB,SAASC,GAAqB,CACnC,OAAO,OAAO,WAAc,aAAe,WAAW,KAAK,UAAU,SAAS,CAChF,CAEO,SAASC,GAAsB,CACpC,OAAO,OAAO,WAAc,aAAe,cAAc,KAAK,UAAU,SAAS,CACnF,CAEO,SAASC,GAAsB,CACpC,OACE,OAAO,WAAc,cACpB,OAAO,KAAK,UAAU,SAAS,GAAM,UAAU,WAAa,YAAc,UAAU,eAAiB,EAE1G,CAEO,SAASC,GAAiB,CAC/B,OAAOF,EAAW,GAAKC,EAAW,CACpC,CAEO,SAASE,GAAoB,CAClC,OAAOJ,EAAU,GAAKG,EAAM,CAC9B,CDlBA,IAAME,EAAkB,GAkBxB,IAAMC,EAAsB,8BACfC,EAAN,cAAiCC,EAAU,QAAsB,CAKtE,aAAc,CACZ,MAAM,EALR,UAAO,YACP,YAAS,CAAC,EACV,aAA2C,KAqB3C,KAAO,MAASC,GAAyB,CAhD3C,IAAAC,EAiDI,GAAI,CAAC,KAAK,QACR,MAAM,IAAI,MAAM,0BAA0B,EAG5C,IAAMC,GAASD,EAAAD,GAAA,YAAAA,EAAQ,SAAR,KAAAC,EAAkBE,EAE3BC,EAAS,SAAS,OAElBC,EAAU,KAAK,MAAM,gDAAoE,CAC7F,CACE,KAAM,CACJ,OAAAH,EACA,OAAAE,EACA,SAAUE,EAAS,EACnB,QAAS,KAAK,OAChB,CACF,CACF,CAAC,EAEKC,EAAS,KAAK,QAA6CF,CAAO,EAExE,OAAIC,EAAS,IACX,SAAS,KAAO,KAAK,QAAQ,KAGxBC,CACT,EA3CeC,EAAA,sBACX,IAAMC,EAAO,MAAM,MAAM,GAAGZ,eAAkC,CAC5D,OAAQ,OACR,QAAS,CACP,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAU,CACnB,OAAQ,SAAS,KACjB,QAAS,SAAS,MACpB,CAAC,CACH,CAAC,EAAE,KAAgCa,GAAMA,EAAE,KAAK,CAAC,EAEjD,KAAK,QAAUD,CACjB,EACF,CA8BF",
6
+ "names": ["Extension", "isAndroid", "isSmallIOS", "isLargeIOS", "isIOS", "isMobile", "DEFAULT_SHOW_UI", "FARCASTER_RELAY_URL", "FarcasterExtension", "Extension", "params", "_a", "showUI", "DEFAULT_SHOW_UI", "domain", "payload", "isMobile", "handle", "__async", "json", "r"]
7
7
  }
package/dist/es/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{Extension as f}from"@magic-sdk/commons";function l(){return typeof navigator!="undefined"&&/android/i.test(navigator.userAgent)}function u(){return typeof navigator!="undefined"&&/iPhone|iPod/.test(navigator.userAgent)}function d(){return typeof navigator!="undefined"&&(/iPad/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1)}function g(){return u()||d()}function n(){return l()||g()}var p=!0;var r=class extends f.Internal{constructor(){super(...arguments);this.name="farcaster";this.config={};this.login=e=>{var o;let a=(o=e==null?void 0:e.showUI)!=null?o:p,i=location.origin,s=this.utils.createJsonRpcRequestPayload("farcaster_show_QR",[{data:{showUI:a,domain:i,isMobile:n()}}]),t=this.request(s);return n()&&t.on("channel",c=>{window.open(c.url,"_blank")}),t}}};export{r as FarcasterExtension};
1
+ var u=(l,h,e)=>new Promise((o,a)=>{var r=n=>{try{t(e.next(n))}catch(s){a(s)}},i=n=>{try{t(e.throw(n))}catch(s){a(s)}},t=n=>n.done?o(n.value):Promise.resolve(n.value).then(r,i);t((e=e.apply(l,h)).next())});import{Extension as R}from"@magic-sdk/commons";function p(){return typeof navigator!="undefined"&&/android/i.test(navigator.userAgent)}function f(){return typeof navigator!="undefined"&&/iPhone|iPod/.test(navigator.userAgent)}function g(){return typeof navigator!="undefined"&&(/iPad/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1)}function v(){return f()||g()}function c(){return p()||v()}var A=!0;var C="https://relay.farcaster.xyz",d=class extends R.Internal{constructor(){super();this.name="farcaster";this.config={};this.channel=null;this.login=e=>{var t;if(!this.channel)throw new Error("Channel not created yet.");let o=(t=e==null?void 0:e.showUI)!=null?t:A,a=location.origin,r=this.utils.createJsonRpcRequestPayload("farcaster_show_QR",[{data:{showUI:o,domain:a,isMobile:c(),channel:this.channel}}]),i=this.request(r);return c()&&(location.href=this.channel.url),i};u(this,null,function*(){let e=yield fetch(`${C}/v1/channel`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({domain:location.host,siweUri:location.origin})}).then(o=>o.json());this.channel=e})}};export{d as FarcasterExtension};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts", "../../src/utils.ts"],
4
- "sourcesContent": ["import { Extension } from '@magic-sdk/commons';\nimport type { CreateChannelAPIResponse, AuthenticateAPIResponse, AuthClientError } from '@farcaster/auth-client';\nimport { FarcasterPayloadMethod } from './types';\nimport { isMobile } from './utils';\n\nconst DEFAULT_SHOW_UI = true;\n\ntype LoginParams = {\n showUI: boolean;\n};\n\nconst FarcasterLoginEventOnReceived = {\n OpenChannel: 'channel',\n Success: 'success',\n Failed: 'failed',\n} as const;\n\ntype FarcasterLoginEventHandlers = {\n [FarcasterLoginEventOnReceived.OpenChannel]: (channel: CreateChannelAPIResponse) => void;\n [FarcasterLoginEventOnReceived.Success]: (data: AuthenticateAPIResponse) => void;\n [FarcasterLoginEventOnReceived.Failed]: (error: AuthClientError) => void;\n};\n\nexport class FarcasterExtension extends Extension.Internal<'farcaster'> {\n name = 'farcaster' as const;\n config = {};\n\n public login = (params?: LoginParams) => {\n const showUI = params?.showUI ?? DEFAULT_SHOW_UI;\n\n const domain = location.origin;\n\n const payload = this.utils.createJsonRpcRequestPayload(FarcasterPayloadMethod.FarcasterShowQR, [\n {\n data: {\n showUI,\n domain,\n isMobile: isMobile(),\n },\n },\n ]);\n\n const handle = this.request<string, FarcasterLoginEventHandlers>(payload);\n\n if (isMobile()) {\n handle.on('channel', (channel) => {\n window.open(channel.url, '_blank');\n });\n }\n\n return handle;\n };\n}\n", "// https://github.com/farcasterxyz/auth-monorepo/blob/main/packages/auth-kit/src/utils.ts\n\nexport function isAndroid(): boolean {\n return typeof navigator !== 'undefined' && /android/i.test(navigator.userAgent);\n}\n\nexport function isSmallIOS(): boolean {\n return typeof navigator !== 'undefined' && /iPhone|iPod/.test(navigator.userAgent);\n}\n\nexport function isLargeIOS(): boolean {\n return (\n typeof navigator !== 'undefined' &&\n (/iPad/.test(navigator.userAgent) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1))\n );\n}\n\nexport function isIOS(): boolean {\n return isSmallIOS() || isLargeIOS();\n}\n\nexport function isMobile(): boolean {\n return isAndroid() || isIOS();\n}\n"],
5
- "mappings": "AAAA,OAAS,aAAAA,MAAiB,qBCEnB,SAASC,GAAqB,CACnC,OAAO,OAAO,WAAc,aAAe,WAAW,KAAK,UAAU,SAAS,CAChF,CAEO,SAASC,GAAsB,CACpC,OAAO,OAAO,WAAc,aAAe,cAAc,KAAK,UAAU,SAAS,CACnF,CAEO,SAASC,GAAsB,CACpC,OACE,OAAO,WAAc,cACpB,OAAO,KAAK,UAAU,SAAS,GAAM,UAAU,WAAa,YAAc,UAAU,eAAiB,EAE1G,CAEO,SAASC,GAAiB,CAC/B,OAAOF,EAAW,GAAKC,EAAW,CACpC,CAEO,SAASE,GAAoB,CAClC,OAAOJ,EAAU,GAAKG,EAAM,CAC9B,CDlBA,IAAME,EAAkB,GAkBjB,IAAMC,EAAN,cAAiCC,EAAU,QAAsB,CAAjE,kCACL,UAAO,YACP,YAAS,CAAC,EAEV,KAAO,MAASC,GAAyB,CA3B3C,IAAAC,EA4BI,IAAMC,GAASD,EAAAD,GAAA,YAAAA,EAAQ,SAAR,KAAAC,EAAkBE,EAE3BC,EAAS,SAAS,OAElBC,EAAU,KAAK,MAAM,gDAAoE,CAC7F,CACE,KAAM,CACJ,OAAAH,EACA,OAAAE,EACA,SAAUE,EAAS,CACrB,CACF,CACF,CAAC,EAEKC,EAAS,KAAK,QAA6CF,CAAO,EAExE,OAAIC,EAAS,GACXC,EAAO,GAAG,UAAYC,GAAY,CAChC,OAAO,KAAKA,EAAQ,IAAK,QAAQ,CACnC,CAAC,EAGID,CACT,EACF",
6
- "names": ["Extension", "isAndroid", "isSmallIOS", "isLargeIOS", "isIOS", "isMobile", "DEFAULT_SHOW_UI", "FarcasterExtension", "Extension", "params", "_a", "showUI", "DEFAULT_SHOW_UI", "domain", "payload", "isMobile", "handle", "channel"]
4
+ "sourcesContent": ["import { Extension } from '@magic-sdk/commons';\nimport type { CreateChannelAPIResponse, AuthenticateAPIResponse, AuthClientError } from '@farcaster/auth-client';\nimport { FarcasterPayloadMethod } from './types';\nimport { isMobile } from './utils';\n\nconst DEFAULT_SHOW_UI = true;\n\ntype LoginParams = {\n showUI: boolean;\n};\n\nconst FarcasterLoginEventOnReceived = {\n OpenChannel: 'channel',\n Success: 'success',\n Failed: 'failed',\n} as const;\n\ntype FarcasterLoginEventHandlers = {\n [FarcasterLoginEventOnReceived.OpenChannel]: (channel: CreateChannelAPIResponse) => void;\n [FarcasterLoginEventOnReceived.Success]: (data: AuthenticateAPIResponse) => void;\n [FarcasterLoginEventOnReceived.Failed]: (error: AuthClientError) => void;\n};\n\nconst FARCASTER_RELAY_URL = 'https://relay.farcaster.xyz';\nexport class FarcasterExtension extends Extension.Internal<'farcaster'> {\n name = 'farcaster' as const;\n config = {};\n channel: CreateChannelAPIResponse | null = null;\n\n constructor() {\n super();\n\n (async () => {\n const json = await fetch(`${FARCASTER_RELAY_URL}/v1/channel`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n domain: location.host,\n siweUri: location.origin,\n }),\n }).then<CreateChannelAPIResponse>((r) => r.json());\n\n this.channel = json;\n })();\n }\n\n public login = (params?: LoginParams) => {\n if (!this.channel) {\n throw new Error('Channel not created yet.');\n }\n\n const showUI = params?.showUI ?? DEFAULT_SHOW_UI;\n\n const domain = location.origin;\n\n const payload = this.utils.createJsonRpcRequestPayload(FarcasterPayloadMethod.FarcasterShowQR, [\n {\n data: {\n showUI,\n domain,\n isMobile: isMobile(),\n channel: this.channel,\n },\n },\n ]);\n\n const handle = this.request<string, FarcasterLoginEventHandlers>(payload);\n\n if (isMobile()) {\n location.href = this.channel.url;\n }\n\n return handle;\n };\n}\n", "// https://github.com/farcasterxyz/auth-monorepo/blob/main/packages/auth-kit/src/utils.ts\n\nexport function isAndroid(): boolean {\n return typeof navigator !== 'undefined' && /android/i.test(navigator.userAgent);\n}\n\nexport function isSmallIOS(): boolean {\n return typeof navigator !== 'undefined' && /iPhone|iPod/.test(navigator.userAgent);\n}\n\nexport function isLargeIOS(): boolean {\n return (\n typeof navigator !== 'undefined' &&\n (/iPad/.test(navigator.userAgent) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1))\n );\n}\n\nexport function isIOS(): boolean {\n return isSmallIOS() || isLargeIOS();\n}\n\nexport function isMobile(): boolean {\n return isAndroid() || isIOS();\n}\n"],
5
+ "mappings": "6MAAA,OAAS,aAAAA,MAAiB,qBCEnB,SAASC,GAAqB,CACnC,OAAO,OAAO,WAAc,aAAe,WAAW,KAAK,UAAU,SAAS,CAChF,CAEO,SAASC,GAAsB,CACpC,OAAO,OAAO,WAAc,aAAe,cAAc,KAAK,UAAU,SAAS,CACnF,CAEO,SAASC,GAAsB,CACpC,OACE,OAAO,WAAc,cACpB,OAAO,KAAK,UAAU,SAAS,GAAM,UAAU,WAAa,YAAc,UAAU,eAAiB,EAE1G,CAEO,SAASC,GAAiB,CAC/B,OAAOF,EAAW,GAAKC,EAAW,CACpC,CAEO,SAASE,GAAoB,CAClC,OAAOJ,EAAU,GAAKG,EAAM,CAC9B,CDlBA,IAAME,EAAkB,GAkBxB,IAAMC,EAAsB,8BACfC,EAAN,cAAiCC,EAAU,QAAsB,CAKtE,aAAc,CACZ,MAAM,EALR,UAAO,YACP,YAAS,CAAC,EACV,aAA2C,KAqB3C,KAAO,MAASC,GAAyB,CAhD3C,IAAAC,EAiDI,GAAI,CAAC,KAAK,QACR,MAAM,IAAI,MAAM,0BAA0B,EAG5C,IAAMC,GAASD,EAAAD,GAAA,YAAAA,EAAQ,SAAR,KAAAC,EAAkBE,EAE3BC,EAAS,SAAS,OAElBC,EAAU,KAAK,MAAM,gDAAoE,CAC7F,CACE,KAAM,CACJ,OAAAH,EACA,OAAAE,EACA,SAAUE,EAAS,EACnB,QAAS,KAAK,OAChB,CACF,CACF,CAAC,EAEKC,EAAS,KAAK,QAA6CF,CAAO,EAExE,OAAIC,EAAS,IACX,SAAS,KAAO,KAAK,QAAQ,KAGxBC,CACT,EA3CeC,EAAA,sBACX,IAAMC,EAAO,MAAM,MAAM,GAAGZ,eAAkC,CAC5D,OAAQ,OACR,QAAS,CACP,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAU,CACnB,OAAQ,SAAS,KACjB,QAAS,SAAS,MACpB,CAAC,CACH,CAAC,EAAE,KAAgCa,GAAMA,EAAE,KAAK,CAAC,EAEjD,KAAK,QAAUD,CACjB,EACF,CA8BF",
6
+ "names": ["Extension", "isAndroid", "isSmallIOS", "isLargeIOS", "isIOS", "isMobile", "DEFAULT_SHOW_UI", "FARCASTER_RELAY_URL", "FarcasterExtension", "Extension", "params", "_a", "showUI", "DEFAULT_SHOW_UI", "domain", "payload", "isMobile", "handle", "__async", "json", "r"]
7
7
  }
package/dist/extension.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var MagicFarcasterExtension=(()=>{var v=Object.create;var a=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty;var b=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),L=(e,n)=>{for(var t in n)a(e,t,{get:n[t],enumerable:!0})},u=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of I(n))!m.call(e,o)&&o!==t&&a(e,o,{get:()=>n[o],enumerable:!(r=A(n,o))||r.enumerable});return e};var x=(e,n,t)=>(t=e!=null?v(R(e)):{},u(n||!e||!e.__esModule?a(t,"default",{value:e,enumerable:!0}):t,e)),F=e=>u(a({},"__esModule",{value:!0}),e);var g=b((_,d)=>{d.exports=Magic});var C={};L(C,{FarcasterExtension:()=>s});var p=x(g());function O(){return typeof navigator!="undefined"&&/android/i.test(navigator.userAgent)}function P(){return typeof navigator!="undefined"&&/iPhone|iPod/.test(navigator.userAgent)}function E(){return typeof navigator!="undefined"&&(/iPad/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1)}function S(){return P()||E()}function i(){return O()||S()}var w=!0;var s=class extends p.Extension.Internal{constructor(){super(...arguments);this.name="farcaster";this.config={};this.login=t=>{var l;let r=(l=t==null?void 0:t.showUI)!=null?l:w,o=location.origin,f=this.utils.createJsonRpcRequestPayload("farcaster_show_QR",[{data:{showUI:r,domain:o,isMobile:i()}}]),c=this.request(f);return i()&&c.on("channel",h=>{window.open(h.url,"_blank")}),c}}};return F(C);})();
1
+ "use strict";var MagicFarcasterExtension=(()=>{var A=Object.create;var s=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var m=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty;var L=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),P=(e,n)=>{for(var t in n)s(e,t,{get:n[t],enumerable:!0})},p=(e,n,t,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of I(n))!y.call(e,o)&&o!==t&&s(e,o,{get:()=>n[o],enumerable:!(a=C(n,o))||a.enumerable});return e};var E=(e,n,t)=>(t=e!=null?A(m(e)):{},p(n||!e||!e.__esModule?s(t,"default",{value:e,enumerable:!0}):t,e)),O=e=>p(s({},"__esModule",{value:!0}),e);var f=(e,n,t)=>new Promise((a,o)=>{var c=r=>{try{i(t.next(r))}catch(h){o(h)}},l=r=>{try{i(t.throw(r))}catch(h){o(h)}},i=r=>r.done?a(r.value):Promise.resolve(r.value).then(c,l);i((t=t.apply(e,n)).next())});var v=L((M,g)=>{g.exports=Magic});var _={};P(_,{FarcasterExtension:()=>d});var R=E(v());function S(){return typeof navigator!="undefined"&&/android/i.test(navigator.userAgent)}function b(){return typeof navigator!="undefined"&&/iPhone|iPod/.test(navigator.userAgent)}function x(){return typeof navigator!="undefined"&&(/iPad/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1)}function F(){return b()||x()}function u(){return S()||F()}var w=!0;var U="https://relay.farcaster.xyz",d=class extends R.Extension.Internal{constructor(){super();this.name="farcaster";this.config={};this.channel=null;this.login=t=>{var i;if(!this.channel)throw new Error("Channel not created yet.");let a=(i=t==null?void 0:t.showUI)!=null?i:w,o=location.origin,c=this.utils.createJsonRpcRequestPayload("farcaster_show_QR",[{data:{showUI:a,domain:o,isMobile:u(),channel:this.channel}}]),l=this.request(c);return u()&&(location.href=this.channel.url),l};f(this,null,function*(){let t=yield fetch(`${U}/v1/channel`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({domain:location.host,siweUri:location.origin})}).then(a=>a.json());this.channel=t})}};return O(_);})();
2
2
  if (MagicFarcasterExtension && MagicFarcasterExtension.default != null) { MagicFarcasterExtension = Object.assign(MagicFarcasterExtension.default, MagicFarcasterExtension); delete MagicFarcasterExtension.default; }
@@ -16,6 +16,8 @@ type FarcasterLoginEventHandlers = {
16
16
  export declare class FarcasterExtension extends Extension.Internal<'farcaster'> {
17
17
  name: "farcaster";
18
18
  config: {};
19
+ channel: CreateChannelAPIResponse | null;
20
+ constructor();
19
21
  login: (params?: LoginParams) => import("@magic-sdk/commons").PromiEvent<string, FarcasterLoginEventHandlers & {
20
22
  done: (result: string) => void;
21
23
  error: (reason: any) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magic-ext/farcaster",
3
- "version": "0.0.5",
3
+ "version": "0.0.6-canary.25c0460.0",
4
4
  "description": "magic farcaster extension",
5
5
  "author": "Magic <team@magic.link> (https://magic.link/)",
6
6
  "license": "MIT",
@@ -39,5 +39,5 @@
39
39
  "ethers": "^6.13.0",
40
40
  "viem": "^2.15.1"
41
41
  },
42
- "gitHead": "09e3b1f74e170ef1c10d50735a4749ce17c95083"
42
+ "gitHead": "25c04602e17f61a19e4656a7b9cc980553bf2e10"
43
43
  }