@automata-network/pom-js-sdk
Advanced tools
Comparing version 0.0.64 to 0.0.65
@@ -1,2 +0,2 @@ | ||
"use strict";var e,r,o,t,a=require("@automata-network/pom-socket"),s=require("qrcode"),i=require("./util.js"),n=require("url-parse"),c=require("qs");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 d={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"}},l="pom-universal-link.ata.network",p="https:",m=new Error("deep link is invalid"),S=new Error("deep link parameters is invalid"),O=new Error("socket is connecting"),h=new Error("get identity status timeout"),u=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:s}=e,i=new n(`${p}//${l}#download`,!0);return r&&(i.query.id=r),o&&(i.query.dh=o),t&&(i.query.s=t),a&&(i.query.cb=a),s&&(i.query.cu=s),console.log("url",i.toString()),i.toString()}static parseDeepLinkQuery(e){const r=new n(e);if(console.log("url",e,r.hostname,r.protocol,r.query,l,p),r.hostname!==l||r.protocol!==p)throw m;const{id:o,dh:t,s:a,cu:s,cb:i}=c.parse(r.query.replace("?",""));if(console.log("url2",o,t,a,s,i),null!=o&&"string"!=typeof o||null!=t&&"string"!=typeof t||null!=a&&"string"!=typeof a||null!=s&&"string"!=typeof s||null!=i&&"string"!=typeof i)throw S;return{id:o,dh:t,s:a,cu:s,cb:i}}static async generateQrcode(e,r){const{sessionId:o,dhSharedPublicNumber:t,hkdfSalt:a}=e,i=[t?{data:t.toUpperCase(),mode:"alphanumeric"}:void 0,a?{data:a,mode:"alphanumeric"}:void 0,o?{data:o}:void 0];return await s.toDataURL(i.filter((e=>null!=e)),{errorCorrectionLevel:r?.level||"L"})}static parseQrcode(e){const r=e.slice(0,128).toLowerCase(),o=e.slice(128,160);return{id:e.slice(160),dh:r,s:o}}async sign(e){const{chainId:r,caller:o,message:t,qrcodeLevel:s,onRenderQrcode:n,onGetIdentityOnChain:c,onRegisterIdentity:d}=e;let l=this.pomSocket.getSocketStatus();if(l===a.SocketStatus.Connecting)throw O;l===a.SocketStatus.Disconnected&&await this.connectSocketAndWait({qrcodeLevel:s,onRenderQrcode:n});const p=await this.getIdentityStatus({chainId:r}).promise;let m;if(p.status!==exports.IdentityStatus.None&&p.status!==exports.IdentityStatus.Generated||(m=await this.attestDevice({chainId:r,caller:o}).promise),p.status===exports.IdentityStatus.None||p.status===exports.IdentityStatus.Generated){if(null==m)throw u;await d(m),await i.runWithErrorRetry((()=>{const e=c({chainId:r,identity:m.identity});if(!e)throw i.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:await w.generateQrcode(t,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=i.sendMessageAndWaitForResponse({socket:this.pomSocket,op:i.POMOperation.GetIdentityStatus,data:{chainId:r},resolver:e,rejecter:t})})),cancel:o}}attestDevice(e){let r;return{promise:new Promise(((o,t)=>{r=i.sendMessageAndWaitForResponse({socket:this.pomSocket,op:i.POMOperation.AttestDevice,data:e,resolver:o,rejecter:t})})),cancel:r}}signMessage(e){let r;return{promise:new Promise(((o,t)=>{r=i.sendMessageAndWaitForResponse({socket:this.pomSocket,op:i.POMOperation.SignMessage,data:e,resolver:o,rejecter:t})})),cancel:r}}}exports.ERR_OPERATION_CANCELLED=i.ERR_OPERATION_CANCELLED,Object.defineProperty(exports,"POMOperation",{enumerable:!0,get:function(){return i.POMOperation}}),exports.decodeMessageData=i.decodeMessageData,exports.encodeMessageData=i.encodeMessageData,exports.getCallbackBrowser=i.getCallbackBrowser,exports.ERR_GET_IDENTITY_STATUS_TIMEOUT=h,exports.ERR_IDENTITY_IS_EMPTY=u,exports.ERR_INVALID_DEEP_LINK=m,exports.ERR_INVALID_DEEP_LINK_PARAMETERS=S,exports.ERR_SOCKET_IS_CONNECTING=O,exports.POMClinet=w,exports.bundleIds=d; | ||
"use strict";var e,r,a,o,t=require("@automata-network/pom-socket"),s=require("qrcode"),i=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,(a=exports.IdentityStatus||(exports.IdentityStatus={})).None="none",a.Generated="generated",a.Registered="registered",exports.CallbackBrowser=void 0,(o=exports.CallbackBrowser||(exports.CallbackBrowser={})).iOSChrome="iOSChrome",o.iOSSafari="iOSSafari",o.iOSEdge="iOSEdge",o.iOSFirefox="iOSFirefox",o.iOSOpera="iOSOpera",o.iOSBrave="iOSBrave",o.iOSAloha="iOSAloha",o.androidChrome="androidChrome",o.androidEdge="androidEdge",o.androidFirefox="androidFirefox",o.androidOpera="androidOpera",o.androidBrave="androidBrave",o.androidAloha="androidAloha",o.macOSChrome="macOSChrome",o.macOSSafari="macOSSafari",o.macOSEdge="macOSEdge",o.macOSFirefox="macOSFirefox",o.macOSOpera="macOSOpera",o.macOSBrave="macOSBrave",o.macOSAloha="macOSAloha";const n={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"}},c="pom-universal-link.ata.network",d="https",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"),h=new Error("identity is empty");class O{pomSocket;constructor(...[e,r]){this.pomSocket=t.getSocket(e,r)}static generateDeepLink(e){const{sessionId:r,dhSharedPublicNumber:a,hkdfSalt:o,callbackBrowser:t,callbackDeepLinkUrl:s}=e,i=new URL(`${d}://${c}#download`);return r&&i.searchParams.set("id",r),a&&i.searchParams.set("dh",a),o&&i.searchParams.set("s",o),t&&i.searchParams.set("cb",t),s&&i.searchParams.set("cu",s),i.href}static parseDeepLinkQuery(e){const r=new URL(e);if(console.log("url",r.hostname,r.protocol,r.search,c,d),r.hostname!==c||r.protocol!==d)throw l;const a=r.searchParams.get("id"),o=r.searchParams.get("dh"),t=r.searchParams.get("s"),s=r.searchParams.get("cu"),i=r.searchParams.get("cb");if(null!=a&&"string"!=typeof a||null!=o&&"string"!=typeof o||null!=t&&"string"!=typeof t||null!=s&&"string"!=typeof s||null!=i&&"string"!=typeof i)throw p;return{id:a,dh:o,s:t,cu:s,cb:i}}static async generateQrcode(e,r){const{sessionId:a,dhSharedPublicNumber:o,hkdfSalt:t}=e,i=[o?{data:o.toUpperCase(),mode:"alphanumeric"}:void 0,t?{data:t,mode:"alphanumeric"}:void 0,a?{data:a}:void 0];return await s.toDataURL(i.filter((e=>null!=e)),{errorCorrectionLevel:r?.level||"L"})}static parseQrcode(e){const r=e.slice(0,128).toLowerCase(),a=e.slice(128,160);return{id:e.slice(160),dh:r,s:a}}async sign(e){const{chainId:r,caller:a,message:o,qrcodeLevel:s,onRenderQrcode:n,onGetIdentityOnChain:c,onRegisterIdentity:d}=e;let l=this.pomSocket.getSocketStatus();if(l===t.SocketStatus.Connecting)throw m;l===t.SocketStatus.Disconnected&&await this.connectSocketAndWait({qrcodeLevel:s,onRenderQrcode:n});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:a}).promise),p.status===exports.IdentityStatus.None||p.status===exports.IdentityStatus.Generated){if(null==S)throw h;await d(S),await i.runWithErrorRetry((()=>{const e=c({chainId:r,identity:S.identity});if(!e)throw i.ERR_NEED_RETRY;return e}))}return await this.signMessage({chainId:r,caller:a,message:o}).promise}async connectSocketAndWait(e){try{const{qrcodeLevel:r,onRenderQrcode:a}=e,o=await this.connectSocket(),t=O.generateDeepLink(o);a({deepLink:t,imageBase64:await O.generateQrcode(o,r?{level:r}:void 0)}),await this.waitForConnectedEvent(),await this.waitForKeyExchangeEvent()}catch(r){if(r!==t.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 a;return{promise:new Promise(((e,o)=>{a=i.sendMessageAndWaitForResponse({socket:this.pomSocket,op:i.POMOperation.GetIdentityStatus,data:{chainId:r},resolver:e,rejecter:o})})),cancel:a}}attestDevice(e){let r;return{promise:new Promise(((a,o)=>{r=i.sendMessageAndWaitForResponse({socket:this.pomSocket,op:i.POMOperation.AttestDevice,data:e,resolver:a,rejecter:o})})),cancel:r}}signMessage(e){let r;return{promise:new Promise(((a,o)=>{r=i.sendMessageAndWaitForResponse({socket:this.pomSocket,op:i.POMOperation.SignMessage,data:e,resolver:a,rejecter:o})})),cancel:r}}}exports.ERR_OPERATION_CANCELLED=i.ERR_OPERATION_CANCELLED,Object.defineProperty(exports,"POMOperation",{enumerable:!0,get:function(){return i.POMOperation}}),exports.decodeMessageData=i.decodeMessageData,exports.encodeMessageData=i.encodeMessageData,exports.getCallbackBrowser=i.getCallbackBrowser,exports.ERR_GET_IDENTITY_STATUS_TIMEOUT=S,exports.ERR_IDENTITY_IS_EMPTY=h,exports.ERR_INVALID_DEEP_LINK=l,exports.ERR_INVALID_DEEP_LINK_PARAMETERS=p,exports.ERR_SOCKET_IS_CONNECTING=m,exports.POMClinet=O,exports.bundleIds=n; | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "@automata-network/pom-js-sdk", | ||
"version": "0.0.64", | ||
"version": "0.0.65", | ||
"description": "A socket clinet for automata's Proof Of Machinehood", | ||
@@ -26,5 +26,3 @@ "main": "dist/index.js", | ||
"@automata-network/pom-socket": "^0.0.17", | ||
"qrcode": "^1.5.4", | ||
"qs": "^6.13.0", | ||
"url-parse": "^1.5.10" | ||
"qrcode": "^1.5.4" | ||
}, | ||
@@ -35,4 +33,2 @@ "devDependencies": { | ||
"@types/qrcode": "^1.5.5", | ||
"@types/qs": "^6.9.17", | ||
"@types/url-parse": "^1.4.11", | ||
"rollup": "^4.12.0", | ||
@@ -39,0 +35,0 @@ "rollup-plugin-dts": "^6.1.0", |
@@ -14,4 +14,2 @@ import { | ||
} from './util'; | ||
import URL from 'url-parse'; | ||
import {parse, stringify} from 'qs'; | ||
@@ -194,3 +192,3 @@ export { | ||
const pomAppHost = 'pom-universal-link.ata.network'; | ||
const pomAppProtocol = 'https:'; | ||
const pomAppProtocol = 'https'; | ||
const pomAppHash = 'download'; | ||
@@ -226,27 +224,25 @@ | ||
const url = new URL(`${pomAppProtocol}//${pomAppHost}#${pomAppHash}`, true); | ||
const url = new URL(`${pomAppProtocol}://${pomAppHost}#${pomAppHash}`); | ||
if (sessionId) { | ||
url.query.id = sessionId; | ||
url.searchParams.set('id', sessionId); | ||
} | ||
if (dhSharedPublicNumber) { | ||
url.query.dh = dhSharedPublicNumber; | ||
url.searchParams.set('dh', dhSharedPublicNumber); | ||
} | ||
if (hkdfSalt) { | ||
url.query.s = hkdfSalt; | ||
url.searchParams.set('s', hkdfSalt); | ||
} | ||
if (callbackBrowser) { | ||
url.query.cb = callbackBrowser; | ||
url.searchParams.set('cb', callbackBrowser); | ||
} | ||
if (callbackDeepLinkUrl) { | ||
url.query.cu = callbackDeepLinkUrl; | ||
url.searchParams.set('cu', callbackDeepLinkUrl); | ||
} | ||
console.log('url', url.toString()); | ||
return url.toString(); | ||
return url.href; | ||
} | ||
@@ -259,6 +255,5 @@ | ||
'url', | ||
deepLink, | ||
url.hostname, | ||
url.protocol, | ||
url.query, | ||
url.search, | ||
pomAppHost, | ||
@@ -272,6 +267,8 @@ pomAppProtocol, | ||
const {id, dh, s, cu, cb} = parse(url.query.replace('?', '')); | ||
const id = url.searchParams.get('id'); | ||
const dh = url.searchParams.get('dh'); | ||
const s = url.searchParams.get('s'); | ||
const cu = url.searchParams.get('cu'); | ||
const cb = url.searchParams.get('cb'); | ||
console.log('url2', id, dh, s, cu, cb); | ||
if ( | ||
@@ -286,3 +283,2 @@ (id != null && typeof id !== 'string') || | ||
} | ||
return {id, dh, s, cu, cb} as DeepLinkQuery; | ||
@@ -289,0 +285,0 @@ } |
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
2
7
67557
923
- Removedqs@^6.13.0
- Removedurl-parse@^1.5.10
- Removedcall-bind-apply-helpers@1.0.1(transitive)
- Removedcall-bound@1.0.3(transitive)
- Removeddunder-proto@1.0.1(transitive)
- Removedes-define-property@1.0.1(transitive)
- Removedes-errors@1.3.0(transitive)
- Removedes-object-atoms@1.1.1(transitive)
- Removedfunction-bind@1.1.2(transitive)
- Removedget-intrinsic@1.2.7(transitive)
- Removedget-proto@1.0.1(transitive)
- Removedgopd@1.2.0(transitive)
- Removedhas-symbols@1.1.0(transitive)
- Removedhasown@2.0.2(transitive)
- Removedmath-intrinsics@1.1.0(transitive)
- Removedobject-inspect@1.13.4(transitive)
- Removedqs@6.14.0(transitive)
- Removedquerystringify@2.2.0(transitive)
- Removedrequires-port@1.0.0(transitive)
- Removedside-channel@1.1.0(transitive)
- Removedside-channel-list@1.0.0(transitive)
- Removedside-channel-map@1.0.1(transitive)
- Removedside-channel-weakmap@1.0.2(transitive)
- Removedurl-parse@1.5.10(transitive)