@automata-network/pom-js-sdk
Advanced tools
Comparing version 0.0.34 to 0.0.35
@@ -76,4 +76,4 @@ import * as _automata_network_pom_socket from '@automata-network/pom-socket'; | ||
interface QrcodeCallbackQuery { | ||
cbUrl?: string; | ||
cbBrowser?: string; | ||
cu?: string; | ||
cb?: string; | ||
} | ||
@@ -80,0 +80,0 @@ interface DeepLinkQuery extends QrcodeCallbackQuery { |
@@ -1,2 +0,2 @@ | ||
"use strict";var e,r,o,t,a=require("@automata-network/pom-socket"),s=require("qs"),i=require("@nuintun/qrcode"),n=require("./util.js");exports.ChainId=void 0,(e=exports.ChainId||(exports.ChainId={})).LineaSepolia="0xe705",e.AutomataTestnet="0x1555e3",e.AutomataMainnet="0x10000",exports.POMPlatform=void 0,(r=exports.POMPlatform||(exports.POMPlatform={})).Android="android",r.iOS="iOS",r.macOS="macOS",exports.IdentityStatus=void 0,(o=exports.IdentityStatus||(exports.IdentityStatus={})).None="none",o.Generated="generated",o.Registered="registered",exports.CallbackBrowser=void 0,(t=exports.CallbackBrowser||(exports.CallbackBrowser={})).iOSChrome="iOSChrome",t.iOSSafari="iOSSafari",t.iOSEdge="iOSEdge",t.iOSFirefox="iOSFirefox",t.iOSOpera="iOSOpera",t.iOSBrave="iOSBrave",t.iOSAloha="iOSAloha",t.androidChrome="androidChrome",t.androidEdge="androidEdge",t.androidFirefox="androidFirefox",t.androidOpera="androidOpera",t.androidBrave="androidBrave",t.androidAloha="androidAloha",t.macOSChrome="macOSChrome",t.macOSSafari="macOSSafari",t.macOSEdge="macOSEdge",t.macOSFirefox="macOSFirefox",t.macOSOpera="macOSOpera",t.macOSBrave="macOSBrave",t.macOSAloha="macOSAloha";const c={macOS:{[exports.CallbackBrowser.macOSChrome]:"com.google.Chrome",[exports.CallbackBrowser.macOSSafari]:"com.apple.safari",[exports.CallbackBrowser.macOSFirefox]:"org.mozilla.firefox",[exports.CallbackBrowser.macOSEdge]:"com.microsoft.edgemac",[exports.CallbackBrowser.macOSBrave]:"com.brave.Browser",[exports.CallbackBrowser.macOSOpera]:"com.operasoftware.Opera",[exports.CallbackBrowser.macOSAloha]:"com.alohabrowser.alohabrowser"},iOS:{[exports.CallbackBrowser.iOSChrome]:"com.google.chrome.ios",[exports.CallbackBrowser.iOSSafari]:"com.apple.mobilesafari",[exports.CallbackBrowser.iOSFirefox]:"org.mozilla.ios.Firefox",[exports.CallbackBrowser.iOSEdge]:"com.microsoft.msedge",[exports.CallbackBrowser.iOSBrave]:"com.brave.ios.browser",[exports.CallbackBrowser.iOSOpera]:"com.opera.OperaTouch",[exports.CallbackBrowser.iOSAloha]:"com.alohabrowser.alohabrowser"},android:{[exports.CallbackBrowser.androidChrome]:"com.android.chrome",[exports.CallbackBrowser.androidFirefox]:"org.mozilla.firefox",[exports.CallbackBrowser.androidEdge]:"com.microsoft.emmx",[exports.CallbackBrowser.androidBrave]:"com.brave.browser",[exports.CallbackBrowser.androidOpera]:"com.opera.browser",[exports.CallbackBrowser.androidAloha]:"com.aloha.browser"}},d="pom://pomrn.ata.network/connect",l=new Error("deep link is invalid"),p=new Error("deep link parameters is invalid"),m=new Error("socket is connecting"),S=new Error("get identity status timeout"),O=new Error("identity is empty");class w{pomSocket;constructor(...[e,r]){this.pomSocket=a.getSocket(e,r)}static generateDeepLink(e){const{sessionId:r,dhSharedPublicNumber:o,hkdfSalt:t,callbackBrowser:a,callbackDeepLinkUrl:i}=e,n={id:r,dh:o,s:t,cbBrowser:a,cbUrl:i};return`${d}?${s.stringify(n)}`}static parseDeepLinkQuery(e){const[r,o]=e.split("?");if(r!==d)throw l;const t=s.parse(o);if(null!=t.id&&"string"!=typeof t.id||null!=t.dh&&"string"!=typeof t.dh||null!=t.s&&"string"!=typeof t.s||null!=t.cbUrl&&"string"!=typeof t.cbUrl||null!=t.cbBrowser&&"string"!=typeof t.cbBrowser)throw p;return t}static generateQrcode(e,r){return new i.Encoder({level:r?.level||"M"}).encode(new i.Byte(e)).toDataURL()}async sign(e){const{chainId:r,caller:o,message:t,qrcodeLevel:s,onRenderQrcode:i,onGetIdentityOnChain:c,onRegisterIdentity:d}=e;let l=this.pomSocket.getSocketStatus();if(l===a.SocketStatus.Connecting)throw m;l===a.SocketStatus.Disconnected&&await this.connectSocketAndWait({qrcodeLevel:s,onRenderQrcode:i});const p=await this.getIdentityStatus({chainId:r}).promise;let S;if(p.status!==exports.IdentityStatus.None&&p.status!==exports.IdentityStatus.Generated||(S=await this.attestDevice({chainId:r,caller:o}).promise),p.status===exports.IdentityStatus.None||p.status===exports.IdentityStatus.Generated){if(null==S)throw O;await d(S),await n.runWithErrorRetry((()=>{const e=c({chainId:r,identity:S.identity});if(!e)throw n.ERR_NEED_RETRY;return e}))}return await this.signMessage({chainId:r,caller:o,message:t}).promise}async connectSocketAndWait(e){try{const{qrcodeLevel:r,onRenderQrcode:o}=e,t=await this.connectSocket(),a=w.generateDeepLink(t);o({deepLink:a,imageBase64:w.generateQrcode(a,r?{level:r}:void 0)}),await this.waitForConnectedEvent(),await this.waitForKeyExchangeEvent()}catch(r){if(r!==a.ERR_SESSION_IS_EXPIRED)throw r;this.connectSocketAndWait(e)}}async connectSocket(){return this.pomSocket.connect()}async waitForConnectedEvent(){return this.pomSocket.waitForConnectedEvent()}async waitForKeyExchangeEvent(){return this.pomSocket.waitForKeyExchangeEvent()}getIdentityStatus(e){const{chainId:r}=e;let o;return{promise:new Promise(((e,t)=>{o=n.sendMessageAndWaitForResponse({socket:this.pomSocket,op:n.POMOperation.GetIdentityStatus,data:{chainId:r},resolver:e,rejecter:t})})),cancel:o}}attestDevice(e){let r;return{promise:new Promise(((o,t)=>{r=n.sendMessageAndWaitForResponse({socket:this.pomSocket,op:n.POMOperation.AttestDevice,data:e,resolver:o,rejecter:t})})),cancel:r}}signMessage(e){let r;return{promise:new Promise(((o,t)=>{r=n.sendMessageAndWaitForResponse({socket:this.pomSocket,op:n.POMOperation.SignMessage,data:e,resolver:o,rejecter:t})})),cancel:r}}}exports.ERR_OPERATION_CANCELLED=n.ERR_OPERATION_CANCELLED,Object.defineProperty(exports,"POMOperation",{enumerable:!0,get:function(){return n.POMOperation}}),exports.decodeMessageData=n.decodeMessageData,exports.encodeMessageData=n.encodeMessageData,exports.getCallbackBrowser=n.getCallbackBrowser,exports.ERR_GET_IDENTITY_STATUS_TIMEOUT=S,exports.ERR_IDENTITY_IS_EMPTY=O,exports.ERR_INVALID_DEEP_LINK=l,exports.ERR_INVALID_DEEP_LINK_PARAMETERS=p,exports.ERR_SOCKET_IS_CONNECTING=m,exports.POMClinet=w,exports.bundleIds=c; | ||
"use strict";var e,r,o,t,a=require("@automata-network/pom-socket"),s=require("qs"),i=require("@nuintun/qrcode"),n=require("./util.js");exports.ChainId=void 0,(e=exports.ChainId||(exports.ChainId={})).LineaSepolia="0xe705",e.AutomataTestnet="0x1555e3",e.AutomataMainnet="0x10000",exports.POMPlatform=void 0,(r=exports.POMPlatform||(exports.POMPlatform={})).Android="android",r.iOS="iOS",r.macOS="macOS",exports.IdentityStatus=void 0,(o=exports.IdentityStatus||(exports.IdentityStatus={})).None="none",o.Generated="generated",o.Registered="registered",exports.CallbackBrowser=void 0,(t=exports.CallbackBrowser||(exports.CallbackBrowser={})).iOSChrome="iOSChrome",t.iOSSafari="iOSSafari",t.iOSEdge="iOSEdge",t.iOSFirefox="iOSFirefox",t.iOSOpera="iOSOpera",t.iOSBrave="iOSBrave",t.iOSAloha="iOSAloha",t.androidChrome="androidChrome",t.androidEdge="androidEdge",t.androidFirefox="androidFirefox",t.androidOpera="androidOpera",t.androidBrave="androidBrave",t.androidAloha="androidAloha",t.macOSChrome="macOSChrome",t.macOSSafari="macOSSafari",t.macOSEdge="macOSEdge",t.macOSFirefox="macOSFirefox",t.macOSOpera="macOSOpera",t.macOSBrave="macOSBrave",t.macOSAloha="macOSAloha";const c={macOS:{[exports.CallbackBrowser.macOSChrome]:"com.google.Chrome",[exports.CallbackBrowser.macOSSafari]:"com.apple.safari",[exports.CallbackBrowser.macOSFirefox]:"org.mozilla.firefox",[exports.CallbackBrowser.macOSEdge]:"com.microsoft.edgemac",[exports.CallbackBrowser.macOSBrave]:"com.brave.Browser",[exports.CallbackBrowser.macOSOpera]:"com.operasoftware.Opera",[exports.CallbackBrowser.macOSAloha]:"com.alohabrowser.alohabrowser"},iOS:{[exports.CallbackBrowser.iOSChrome]:"com.google.chrome.ios",[exports.CallbackBrowser.iOSSafari]:"com.apple.mobilesafari",[exports.CallbackBrowser.iOSFirefox]:"org.mozilla.ios.Firefox",[exports.CallbackBrowser.iOSEdge]:"com.microsoft.msedge",[exports.CallbackBrowser.iOSBrave]:"com.brave.ios.browser",[exports.CallbackBrowser.iOSOpera]:"com.opera.OperaTouch",[exports.CallbackBrowser.iOSAloha]:"com.alohabrowser.alohabrowser"},android:{[exports.CallbackBrowser.androidChrome]:"com.android.chrome",[exports.CallbackBrowser.androidFirefox]:"org.mozilla.firefox",[exports.CallbackBrowser.androidEdge]:"com.microsoft.emmx",[exports.CallbackBrowser.androidBrave]:"com.brave.browser",[exports.CallbackBrowser.androidOpera]:"com.opera.browser",[exports.CallbackBrowser.androidAloha]:"com.aloha.browser"}},d="pom://pomrn.ata.network/connect",l=new Error("deep link is invalid"),p=new Error("deep link parameters is invalid"),m=new Error("socket is connecting"),S=new Error("get identity status timeout"),O=new Error("identity is empty");class h{pomSocket;constructor(...[e,r]){this.pomSocket=a.getSocket(e,r)}static generateDeepLink(e){const{sessionId:r,dhSharedPublicNumber:o,hkdfSalt:t,callbackBrowser:a,callbackDeepLinkUrl:i}=e,n={id:r,dh:o,s:t,cb:a,cu:i};return`${d}?${s.stringify(n)}`}static parseDeepLinkQuery(e){const[r,o]=e.split("?");if(r!==d)throw l;const t=s.parse(o);if(null!=t.id&&"string"!=typeof t.id||null!=t.dh&&"string"!=typeof t.dh||null!=t.s&&"string"!=typeof t.s||null!=t.cu&&"string"!=typeof t.cu||null!=t.cb&&"string"!=typeof t.cb)throw p;return t}static generateQrcode(e,r){return new i.Encoder({level:r?.level||"M"}).encode(new i.Byte(e)).toDataURL()}async sign(e){const{chainId:r,caller:o,message:t,qrcodeLevel:s,onRenderQrcode:i,onGetIdentityOnChain:c,onRegisterIdentity:d}=e;let l=this.pomSocket.getSocketStatus();if(l===a.SocketStatus.Connecting)throw m;l===a.SocketStatus.Disconnected&&await this.connectSocketAndWait({qrcodeLevel:s,onRenderQrcode:i});const p=await this.getIdentityStatus({chainId:r}).promise;let S;if(p.status!==exports.IdentityStatus.None&&p.status!==exports.IdentityStatus.Generated||(S=await this.attestDevice({chainId:r,caller:o}).promise),p.status===exports.IdentityStatus.None||p.status===exports.IdentityStatus.Generated){if(null==S)throw O;await d(S),await n.runWithErrorRetry((()=>{const e=c({chainId:r,identity:S.identity});if(!e)throw n.ERR_NEED_RETRY;return e}))}return await this.signMessage({chainId:r,caller:o,message:t}).promise}async connectSocketAndWait(e){try{const{qrcodeLevel:r,onRenderQrcode:o}=e,t=await this.connectSocket(),a=h.generateDeepLink(t);o({deepLink:a,imageBase64:h.generateQrcode(a,r?{level:r}:void 0)}),await this.waitForConnectedEvent(),await this.waitForKeyExchangeEvent()}catch(r){if(r!==a.ERR_SESSION_IS_EXPIRED)throw r;this.connectSocketAndWait(e)}}async connectSocket(){return this.pomSocket.connect()}async waitForConnectedEvent(){return this.pomSocket.waitForConnectedEvent()}async waitForKeyExchangeEvent(){return this.pomSocket.waitForKeyExchangeEvent()}getIdentityStatus(e){const{chainId:r}=e;let o;return{promise:new Promise(((e,t)=>{o=n.sendMessageAndWaitForResponse({socket:this.pomSocket,op:n.POMOperation.GetIdentityStatus,data:{chainId:r},resolver:e,rejecter:t})})),cancel:o}}attestDevice(e){let r;return{promise:new Promise(((o,t)=>{r=n.sendMessageAndWaitForResponse({socket:this.pomSocket,op:n.POMOperation.AttestDevice,data:e,resolver:o,rejecter:t})})),cancel:r}}signMessage(e){let r;return{promise:new Promise(((o,t)=>{r=n.sendMessageAndWaitForResponse({socket:this.pomSocket,op:n.POMOperation.SignMessage,data:e,resolver:o,rejecter:t})})),cancel:r}}}exports.ERR_OPERATION_CANCELLED=n.ERR_OPERATION_CANCELLED,Object.defineProperty(exports,"POMOperation",{enumerable:!0,get:function(){return n.POMOperation}}),exports.decodeMessageData=n.decodeMessageData,exports.encodeMessageData=n.encodeMessageData,exports.getCallbackBrowser=n.getCallbackBrowser,exports.ERR_GET_IDENTITY_STATUS_TIMEOUT=S,exports.ERR_IDENTITY_IS_EMPTY=O,exports.ERR_INVALID_DEEP_LINK=l,exports.ERR_INVALID_DEEP_LINK_PARAMETERS=p,exports.ERR_SOCKET_IS_CONNECTING=m,exports.POMClinet=h,exports.bundleIds=c; | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "@automata-network/pom-js-sdk", | ||
"version": "0.0.34", | ||
"version": "0.0.35", | ||
"description": "A socket clinet for automata's Proof Of Machinehood", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -81,4 +81,4 @@ import { | ||
export interface QrcodeCallbackQuery { | ||
cbUrl?: string; | ||
cbBrowser?: string; | ||
cu?: string; | ||
cb?: string; | ||
} | ||
@@ -223,4 +223,4 @@ | ||
s: hkdfSalt, | ||
cbBrowser: callbackBrowser, | ||
cbUrl: callbackDeepLinkUrl, | ||
cb: callbackBrowser, | ||
cu: callbackDeepLinkUrl, | ||
}; | ||
@@ -244,4 +244,4 @@ | ||
(parsedQs.s != null && typeof parsedQs.s !== 'string') || | ||
(parsedQs.cbUrl != null && typeof parsedQs.cbUrl !== 'string') || | ||
(parsedQs.cbBrowser != null && typeof parsedQs.cbBrowser !== 'string') | ||
(parsedQs.cu != null && typeof parsedQs.cu !== 'string') || | ||
(parsedQs.cb != null && typeof parsedQs.cb !== 'string') | ||
) { | ||
@@ -248,0 +248,0 @@ throw ERR_INVALID_DEEP_LINK_PARAMETERS; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
62906