New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

anchor-link

Package Overview
Dependencies
Maintainers
2
Versions
63
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

anchor-link - npm Package Compare versions

Comparing version 3.0.0-beta3 to 3.0.0-beta4

2

lib/index.esm.js

@@ -16,3 +16,3 @@ import e from"pako";import{Struct as t,UInt64 as s,Serializer as i,Bytes as r,Checksum256 as n,PermissionLevel as a,PublicKey as o,Name as c,PrivateKey as l,APIClient as h,Signature as u,SignedTransaction as p}from"@greymass/eosio";import{ChainId as d,SigningRequest as f,ResolvedSigningRequest as m,PlaceholderName as g,PlaceholderPermission as y}from"eosio-signing-request";export{PlaceholderAuth,PlaceholderName,PlaceholderPermission}from"eosio-signing-request";import w from"fetch-ponyfill";import{AES_CBC as k}from"asmcrypto.js";import{v4 as b}from"uuid";import S from"isomorphic-ws";class v extends Error{constructor(e){super("User canceled request "+(e?"("+e+")":"")),this.code="E_CANCEL"}}class _ extends Error{constructor(e){super("Unable to verify identity "+(e?"("+e+")":"")),this.code="E_IDENTITY"}}class q extends Error{constructor(e,t){super(e),this.code=t}}var x;

***************************************************************************** */
function E(e,t,s,i){var r,n=arguments.length,a=n<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,s):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,s,i);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(n<3?r(a):n>3?r(t,s,a):r(t,s))||a);return n>3&&a&&Object.defineProperty(t,s,a),a}!function(e){e.defaults={chainId:"aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906",client:"https://eos.greymass.com",service:"https://cb.anchor.link"}}(x||(x={}));let P=class extends t{};E([t.field("public_key")],P.prototype,"from",void 0),E([t.field("uint64")],P.prototype,"nonce",void 0),E([t.field("bytes")],P.prototype,"ciphertext",void 0),E([t.field("uint32")],P.prototype,"checksum",void 0),P=E([t.type("sealed_message")],P);let K=class extends t{};E([t.field("name")],K.prototype,"session_name",void 0),E([t.field("public_key")],K.prototype,"request_key",void 0),K=E([t.type("link_create")],K);let I=class extends t{};E([t.field("time_point_sec")],I.prototype,"expiration",void 0),I=E([t.type("link_info")],I);const O=w().fetch;class R{async remove(){this.link.storage&&await this.link.removeSession(this.identifier,this.auth)}static restore(e,t){switch(t.type){case"channel":return new N(e,t.data,t.metadata);case"fallback":return new T(e,t.data,t.metadata);default:throw new Error("Unable to restore, session data invalid")}}}class N extends R{constructor(e,t,h){super(),this.type="channel",this.timeout=12e4,this.link=e,this.auth=a.from(t.auth),this.publicKey=o.from(t.publicKey),this.channel=t.channel,this.identifier=c.from(t.identifier);const u=l.from(t.requestKey),p=o.from(t.channel.key);this.encrypt=e=>function(e,t,a,o){const c=t.sharedSecret(a);o||(o=s.random());const l=i.encode({object:o}).appending(c.array).sha512Digest,h=new k(l.array.slice(0,32),l.array.slice(32,48)),u=r.from(h.encrypt(r.from(e,"utf8").array)),p=new DataView(n.hash(l.array).array.buffer).getUint32(0,!0);return P.from({from:t.toPublic(),nonce:o,ciphertext:u,checksum:p})}(e.encode(!0,!1),u,p),this.metadata={...h||{},timeout:this.timeout,name:this.channel.name},this.serialize=()=>({type:"channel",data:t,metadata:this.metadata})}onSuccess(e,t){this.link.transport.onSuccess&&this.link.transport.onSuccess(e,t)}onFailure(e,t){this.link.transport.onFailure&&this.link.transport.onFailure(e,t)}onRequest(e,t){const s=I.from({expiration:new Date(Date.now()+this.timeout).toISOString().slice(0,-1)});this.link.transport.onSessionRequest&&this.link.transport.onSessionRequest(this,e,t),setTimeout(()=>{t(new q("Wallet did not respond in time","E_TIMEOUT"))},this.timeout+500),e.setInfoKey("link",s),O(this.channel.url,{method:"POST",headers:{"X-Buoy-Wait":(this.timeout/1e3).toFixed(0)},body:i.encode({object:this.encrypt(e)}).array}).then(e=>{200!==e.status&&t(new q("Unable to push message","E_DELIVERY"))}).catch(e=>{t(new q(`Unable to reach link service (${e.message||String(e)})`,"E_DELIVERY"))})}prepare(e){return this.link.transport.prepare?this.link.transport.prepare(e,this):Promise.resolve(e)}showLoading(){if(this.link.transport.showLoading)return this.link.transport.showLoading()}makeSignatureProvider(){return this.link.makeSignatureProvider([this.publicKey.toString()],this)}transact(e,t){return this.link.transact(e,t,this)}}class T extends R{constructor(e,t,s){super(),this.type="fallback",this.link=e,this.auth=a.from(t.auth),this.publicKey=o.from(t.publicKey),this.metadata=s||{},this.identifier=c.from(t.identifier),this.serialize=()=>({type:this.type,data:t,metadata:this.metadata})}onSuccess(e,t){this.link.transport.onSuccess&&this.link.transport.onSuccess(e,t)}onFailure(e,t){this.link.transport.onFailure&&this.link.transport.onFailure(e,t)}onRequest(e,t){this.link.transport.onSessionRequest?this.link.transport.onSessionRequest(this,e,t):this.link.transport.onRequest(e,t)}prepare(e){return this.link.transport.prepare?this.link.transport.prepare(e,this):Promise.resolve(e)}showLoading(){if(this.link.transport.showLoading)return this.link.transport.showLoading()}makeSignatureProvider(){return this.link.makeSignatureProvider([this.publicKey.toString()],this)}transact(e,t){return this.link.transact(e,t,this)}}class U{constructor(e){this.address=e.trim().replace(/\/$/,"")}create(){const e=`${this.address}/${b()}`;return new $(e)}}class ${constructor(e){this.url=e,this.ctx={}}wait(){return e=this.url,t=this.ctx,new Promise((s,i)=>{let r=!0,n=0;const a=e.replace(/^http/,"ws"),o=e=>{try{s(JSON.parse(e))}catch(e){e.message="Unable to parse callback JSON: "+e.message,i(e)}},c=()=>{const e=new S(a);t.cancel=()=>{r=!1,e.readyState!==S.OPEN&&e.readyState!==S.CONNECTING||e.close()},e.onmessage=t=>{if(r=!1,e.readyState===S.OPEN&&e.close(),"undefined"!=typeof Blob&&t.data instanceof Blob){const e=new FileReader;e.onload=()=>{o(e.result)},e.onerror=e=>{i(e)},e.readAsText(t.data)}else o("string"==typeof t.data?t.data:t.data.toString())},e.onopen=()=>{n=0},e.onclose=()=>{var e;r&&setTimeout(c,(e=n++,Math.min(Math.pow(10*e,2),1e4)))}};c()});var e,t}cancel(){this.ctx.cancel&&this.ctx.cancel()}}class j{constructor(t){if(this.abiCache=new Map,this.pendingAbis=new Map,"object"!=typeof t)throw new TypeError("Missing options object");if(!t.transport)throw new TypeError("options.transport is required, see https://github.com/greymass/anchor-link#transports");this.client=void 0===t.client||"string"==typeof t.client?new h({url:t.client||x.defaults.client}):t.client,this.chainId=d.from(t.chainId||x.defaults.chainId),this.callbackService=void 0===t.service||"string"==typeof t.service?new U(t.service||x.defaults.service):t.service,this.transport=t.transport,null!==t.storage&&(this.storage=t.storage||this.transport.storage),this.requestOptions={abiProvider:this,zlib:e}}async getAbi(e){const t=e.toString();let s=this.abiCache.get(t);if(!s){let i=this.pendingAbis.get(t);i||(i=this.client.v1.chain.get_abi(e),this.pendingAbis.set(t,i)),s=(await i).abi,this.pendingAbis.delete(t),s&&this.abiCache.set(t,s)}return s}async createRequest(e,t){const s=t||this.transport;let i=await f.create({...e,chainId:this.chainId.toString(),broadcast:!1},this.requestOptions);s.prepare&&(i=await s.prepare(i));const r=this.callbackService.create();return i.setCallback(r.url,!0),{request:i,callback:r}}async sendRequest(e,t,s,i=!1){const r=s||this.transport;try{if(e.data.callback!==t.url)throw new Error("Invalid request callback");if(!0===e.data.flags.broadcast||!1===e.data.flags.background)throw new Error("Invalid request flags");const s=new Promise((s,i)=>{r.onRequest(e,e=>{t.cancel(),i("string"==typeof e?new v(e):e)})}),n=await Promise.race([t.wait(),s]),o=a.from({actor:n.sa,permission:n.sp}),c=Object.keys(n).filter(e=>e.startsWith("sig")&&"sig0"!==e).map(e=>u.from(n[e])),l=await m.fromPayload(n,this.requestOptions),h=l.request.getInfoKey("fuel_sig","string");h&&c.unshift(u.from(h));const d={request:l.request,transaction:l.transaction,resolvedTransaction:l.resolvedTransaction,signatures:c,payload:n,signer:o};if(i){const e=p.from({...l.transaction,signatures:c}),t=await this.client.v1.chain.push_transaction(e);d.processed=t.processed}return r.onSuccess&&r.onSuccess(e,d),d}catch(t){throw r.onFailure&&r.onFailure(e,t),t}}async transact(e,t,s){const i=s||this.transport,r=!t||!1!==t.broadcast;i&&i.showLoading&&i.showLoading();const n=e;e.actions&&(n.expiration||n.ref_block_num||n.ref_block_prefix||n.max_net_usage_words||n.max_cpu_usage_ms||n.delay_sec)&&(e={transaction:{expiration:"1970-01-01T00:00:00",ref_block_num:0,ref_block_prefix:0,max_net_usage_words:0,max_cpu_usage_ms:0,delay_sec:0,...n}});const{request:a,callback:o}=await this.createRequest(e,i);return await this.sendRequest(a,o,i,r)}async identify(e){const{request:t,callback:s}=await this.createRequest({identity:{permission:e.requestPermission,scope:e.scope},info:e.info}),i=await this.sendRequest(t,s);if(!i.request.isIdentity())throw new _("Unexpected response");const r=i.transaction.signingDigest(t.getChainId()),n=i.signatures[0].recoverDigest(r),{signer:o}=i,c=await this.client.v1.chain.get_account(o.actor.toString());if(!c)throw new _("Signature from unknown account: "+o.actor);const l=c.permissions.find(({perm_name:e})=>o.permission.equals(e));if(!l)throw new _(`${o.actor} signed for unknown permission: ${o.permission}`);const h=l.required_auth,u=h.keys.find(({key:e})=>n.equals(e));if(!u)throw new _(D(o)+" has no key matching id signature");if(h.threshold>u.weight)throw new _(D(o)+" signature does not reach auth threshold");if(e.requestPermission){const t=a.from(e.requestPermission);if(!t.actor.equals(g)&&!t.actor.equals(o.actor)||!t.permission.equals(y)&&!t.permission.equals(o.permission))throw new _(`Unexpected identity proof from ${D(o)}, expected ${D(t)} `)}return{...i,account:c,signerKey:n}}async login(e){const t=l.generate("K1"),s=t.toPublic(),i=K.from({session_name:e,request_key:s}),r=await this.identify({scope:e,info:{link:i,scope:e}}),n={sameDevice:void 0!==r.request.getRawInfo().return_path};let a;return a=r.payload.link_ch&&r.payload.link_key&&r.payload.link_name?new N(this,{identifier:e,auth:r.signer,publicKey:r.signerKey,channel:{url:r.payload.link_ch,key:r.payload.link_key,name:r.payload.link_name},requestKey:t},n):new T(this,{identifier:e,auth:r.signer,publicKey:r.signerKey},n),this.storage&&await this.storeSession(e,a),{...r,session:a}}async restoreSession(e,t){if(!this.storage)throw new Error("Unable to restore session: No storage adapter configured");let s;if(t)s=this.sessionKey(e,D(t));else{const t=(await this.listSessions(e))[0];if(!t)return null;s=this.sessionKey(e,D(t))}const i=await this.storage.read(s);if(!i)return null;let r;try{r=JSON.parse(i)}catch(e){throw new Error(`Unable to restore session: Stored JSON invalid (${e.message||String(e)})`)}const n=R.restore(this,r);return t&&await this.touchSession(e,t),n}async listSessions(e){if(!this.storage)throw new Error("Unable to list sessions: No storage adapter configured");const t=this.sessionKey(e,"list");let s;try{s=JSON.parse(await this.storage.read(t)||"[]")}catch(e){throw new Error(`Unable to list sessions: Stored JSON invalid (${e.message||String(e)})`)}return s}async removeSession(e,t){if(!this.storage)throw new Error("Unable to remove session: No storage adapter configured");const s=this.sessionKey(e,D(t));await this.storage.remove(s),await this.touchSession(e,t,!0)}async clearSessions(e){if(!this.storage)throw new Error("Unable to clear sessions: No storage adapter configured");for(const t of await this.listSessions(e))await this.removeSession(e,t)}makeSignatureProvider(e,t){var s=this;return{getAvailableKeys:async function(){return e},sign:async function(e){const r=t||s.transport;let n=f.fromTransaction(e.chainId,e.serializedTransaction,s.requestOptions);const a=s.callbackService.create();n.setCallback(a.url,!0),n.setBroadcast(!1),r.prepare&&(n=await r.prepare(n));const{transaction:o,signatures:c}=await s.sendRequest(n,a,r),l=i.encode({object:o});return{...e,serializedTransaction:l,signatures:c}}}}async touchSession(e,t,s=!1){const i=await this.listSessions(e),r=D(t),n=i.findIndex(e=>D(e)===r);n>=0&&i.splice(n,1),!1===s&&i.unshift(t);const a=this.sessionKey(e,"list");await this.storage.write(a,JSON.stringify(i))}async storeSession(e,t){const s=this.sessionKey(e,D(t.auth)),i=JSON.stringify(t.serialize());await this.storage.write(s,i),await this.touchSession(e,t.auth)}sessionKey(e,t){return[this.chainId.toString(),c.from(e).toString(),t].join("-")}}function D(e){const t=a.from(e),s=t.actor.equals(g)?"<any>":String(t.actor);let i;return i=t.permission.equals(g)||t.permission.equals(y)?"<any>":String(t.permission),`${s}@${i}`}export default j;export{v as CancelError,_ as IdentityError,j as Link,N as LinkChannelSession,T as LinkFallbackSession,x as LinkOptions,R as LinkSession,q as SessionError};
function E(e,t,s,i){var r,n=arguments.length,a=n<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,s):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,s,i);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(n<3?r(a):n>3?r(t,s,a):r(t,s))||a);return n>3&&a&&Object.defineProperty(t,s,a),a}!function(e){e.defaults={chainId:"aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906",client:"https://eos.greymass.com",service:"https://cb.anchor.link"}}(x||(x={}));let P=class extends t{};E([t.field("public_key")],P.prototype,"from",void 0),E([t.field("uint64")],P.prototype,"nonce",void 0),E([t.field("bytes")],P.prototype,"ciphertext",void 0),E([t.field("uint32")],P.prototype,"checksum",void 0),P=E([t.type("sealed_message")],P);let K=class extends t{};E([t.field("name")],K.prototype,"session_name",void 0),E([t.field("public_key")],K.prototype,"request_key",void 0),K=E([t.type("link_create")],K);let I=class extends t{};E([t.field("time_point_sec")],I.prototype,"expiration",void 0),I=E([t.type("link_info")],I);const O=w().fetch;class R{async remove(){this.link.storage&&await this.link.removeSession(this.identifier,this.auth)}static restore(e,t){switch(t.type){case"channel":return new N(e,t.data,t.metadata);case"fallback":return new T(e,t.data,t.metadata);default:throw new Error("Unable to restore, session data invalid")}}}class N extends R{constructor(e,t,h){super(),this.type="channel",this.timeout=12e4,this.link=e,this.auth=a.from(t.auth),this.publicKey=o.from(t.publicKey),this.channel=t.channel,this.identifier=c.from(t.identifier);const u=l.from(t.requestKey),p=o.from(t.channel.key);this.encrypt=e=>function(e,t,a,o){const c=t.sharedSecret(a);o||(o=s.random());const l=i.encode({object:o}).appending(c.array).sha512Digest,h=new k(l.array.slice(0,32),l.array.slice(32,48)),u=r.from(h.encrypt(r.from(e,"utf8").array)),p=new DataView(n.hash(l.array).array.buffer).getUint32(0,!0);return P.from({from:t.toPublic(),nonce:o,ciphertext:u,checksum:p})}(e.encode(!0,!1),u,p),this.metadata={...h||{},timeout:this.timeout,name:this.channel.name},this.serialize=()=>({type:"channel",data:t,metadata:this.metadata})}onSuccess(e,t){this.link.transport.onSuccess&&this.link.transport.onSuccess(e,t)}onFailure(e,t){this.link.transport.onFailure&&this.link.transport.onFailure(e,t)}onRequest(e,t){const s=I.from({expiration:new Date(Date.now()+this.timeout).toISOString().slice(0,-1)});this.link.transport.onSessionRequest&&this.link.transport.onSessionRequest(this,e,t),setTimeout(()=>{t(new q("Wallet did not respond in time","E_TIMEOUT"))},this.timeout+500),e.setInfoKey("link",s),O(this.channel.url,{method:"POST",headers:{"X-Buoy-Wait":(this.timeout/1e3).toFixed(0)},body:i.encode({object:this.encrypt(e)}).array}).then(e=>{200!==e.status&&t(new q("Unable to push message","E_DELIVERY"))}).catch(e=>{t(new q(`Unable to reach link service (${e.message||String(e)})`,"E_DELIVERY"))})}prepare(e){return this.link.transport.prepare?this.link.transport.prepare(e,this):Promise.resolve(e)}showLoading(){if(this.link.transport.showLoading)return this.link.transport.showLoading()}makeSignatureProvider(){return this.link.makeSignatureProvider([this.publicKey.toString()],this)}transact(e,t){return this.link.transact(e,t,this)}}class T extends R{constructor(e,t,s){super(),this.type="fallback",this.link=e,this.auth=a.from(t.auth),this.publicKey=o.from(t.publicKey),this.metadata=s||{},this.identifier=c.from(t.identifier),this.serialize=()=>({type:this.type,data:t,metadata:this.metadata})}onSuccess(e,t){this.link.transport.onSuccess&&this.link.transport.onSuccess(e,t)}onFailure(e,t){this.link.transport.onFailure&&this.link.transport.onFailure(e,t)}onRequest(e,t){this.link.transport.onSessionRequest?this.link.transport.onSessionRequest(this,e,t):this.link.transport.onRequest(e,t)}prepare(e){return this.link.transport.prepare?this.link.transport.prepare(e,this):Promise.resolve(e)}showLoading(){if(this.link.transport.showLoading)return this.link.transport.showLoading()}makeSignatureProvider(){return this.link.makeSignatureProvider([this.publicKey.toString()],this)}transact(e,t){return this.link.transact(e,t,this)}}class U{constructor(e){this.address=e.trim().replace(/\/$/,"")}create(){const e=`${this.address}/${b()}`;return new $(e)}}class ${constructor(e){this.url=e,this.ctx={}}wait(){return e=this.url,t=this.ctx,new Promise((s,i)=>{let r=!0,n=0;const a=e.replace(/^http/,"ws"),o=e=>{try{s(JSON.parse(e))}catch(e){e.message="Unable to parse callback JSON: "+e.message,i(e)}},c=()=>{const e=new S(a);t.cancel=()=>{r=!1,e.readyState!==S.OPEN&&e.readyState!==S.CONNECTING||e.close()},e.onmessage=t=>{if(r=!1,e.readyState===S.OPEN&&e.close(),"undefined"!=typeof Blob&&t.data instanceof Blob){const e=new FileReader;e.onload=()=>{o(e.result)},e.onerror=e=>{i(e)},e.readAsText(t.data)}else o("string"==typeof t.data?t.data:t.data.toString())},e.onopen=()=>{n=0},e.onclose=()=>{var e;r&&setTimeout(c,(e=n++,Math.min(Math.pow(10*e,2),1e4)))}};c()});var e,t}cancel(){this.ctx.cancel&&this.ctx.cancel()}}class j{constructor(t){if(this.abiCache=new Map,this.pendingAbis=new Map,"object"!=typeof t)throw new TypeError("Missing options object");if(!t.transport)throw new TypeError("options.transport is required, see https://github.com/greymass/anchor-link#transports");this.client=void 0===t.client||"string"==typeof t.client?new h({url:t.client||x.defaults.client}):t.client,this.chainId=d.from(t.chainId||x.defaults.chainId),this.callbackService=void 0===t.service||"string"==typeof t.service?new U(t.service||x.defaults.service):t.service,this.transport=t.transport,null!==t.storage&&(this.storage=t.storage||this.transport.storage),this.requestOptions={abiProvider:this,zlib:e}}async getAbi(e){const t=e.toString();let s=this.abiCache.get(t);if(!s){let i=this.pendingAbis.get(t);i||(i=this.client.v1.chain.get_abi(e),this.pendingAbis.set(t,i)),s=(await i).abi,this.pendingAbis.delete(t),s&&this.abiCache.set(t,s)}return s}async createRequest(e,t){const s=t||this.transport;let i=await f.create({...e,chainId:this.chainId.toString(),broadcast:!1},this.requestOptions);s.prepare&&(i=await s.prepare(i));const r=this.callbackService.create();return i.setCallback(r.url,!0),{request:i,callback:r}}async sendRequest(e,t,s,i=!1){const r=s||this.transport;try{if(e.data.callback!==t.url)throw new Error("Invalid request callback");if(!0===e.data.flags.broadcast||!1===e.data.flags.background)throw new Error("Invalid request flags");const s=new Promise((s,i)=>{r.onRequest(e,e=>{t.cancel(),i("string"==typeof e?new v(e):e)})}),n=await Promise.race([t.wait(),s]),o=a.from({actor:n.sa,permission:n.sp}),c=Object.keys(n).filter(e=>e.startsWith("sig")&&"sig0"!==e).map(e=>u.from(n[e])),l=await m.fromPayload(n,this.requestOptions),h=l.request.getInfoKey("fuel_sig","string");h&&c.unshift(u.from(h));const d={request:l.request,transaction:l.transaction,resolvedTransaction:l.resolvedTransaction,signatures:c,payload:n,signer:o};if(i){const e=p.from({...l.transaction,signatures:c}),t=await this.client.v1.chain.push_transaction(e);d.processed=t.processed}return r.onSuccess&&r.onSuccess(e,d),d}catch(t){throw r.onFailure&&r.onFailure(e,t),t}}async transact(e,t,s){const i=s||this.transport,r=!t||!1!==t.broadcast;i&&i.showLoading&&i.showLoading();const n=e;e.actions&&(n.expiration||n.ref_block_num||n.ref_block_prefix||n.max_net_usage_words||n.max_cpu_usage_ms||n.delay_sec)&&(e={transaction:{expiration:"1970-01-01T00:00:00",ref_block_num:0,ref_block_prefix:0,max_net_usage_words:0,max_cpu_usage_ms:0,delay_sec:0,...n}});const{request:a,callback:o}=await this.createRequest(e,i);return await this.sendRequest(a,o,i,r)}async identify(e){const{request:t,callback:s}=await this.createRequest({identity:{permission:e.requestPermission,scope:e.scope},info:e.info}),i=await this.sendRequest(t,s);if(!i.request.isIdentity())throw new _("Unexpected response");const r=i.transaction.signingDigest(t.getChainId()),n=i.signatures[0].recoverDigest(r),{signer:o}=i,c=await this.client.v1.chain.get_account(o.actor);if(!c)throw new _("Signature from unknown account: "+o.actor);const l=c.permissions.find(({perm_name:e})=>o.permission.equals(e));if(!l)throw new _(`${o.actor} signed for unknown permission: ${o.permission}`);const h=l.required_auth,u=h.keys.find(({key:e})=>n.equals(e));if(!u)throw new _(`${D(o)} has no key matching id signature (${n})`);if(h.threshold>u.weight)throw new _(D(o)+" signature does not reach auth threshold");if(e.requestPermission){const t=a.from(e.requestPermission);if(!t.actor.equals(g)&&!t.actor.equals(o.actor)||!t.permission.equals(y)&&!t.permission.equals(o.permission))throw new _(`Unexpected identity proof from ${D(o)}, expected ${D(t)} `)}return{...i,account:c,signerKey:n}}async login(e){const t=l.generate("K1"),s=t.toPublic(),i=K.from({session_name:e,request_key:s}),r=await this.identify({scope:e,info:{link:i,scope:e}}),n={sameDevice:void 0!==r.request.getRawInfo().return_path};let a;return a=r.payload.link_ch&&r.payload.link_key&&r.payload.link_name?new N(this,{identifier:e,auth:r.signer,publicKey:r.signerKey,channel:{url:r.payload.link_ch,key:r.payload.link_key,name:r.payload.link_name},requestKey:t},n):new T(this,{identifier:e,auth:r.signer,publicKey:r.signerKey},n),this.storage&&await this.storeSession(e,a),{...r,session:a}}async restoreSession(e,t){if(!this.storage)throw new Error("Unable to restore session: No storage adapter configured");let s;if(t)s=this.sessionKey(e,D(t));else{const t=(await this.listSessions(e))[0];if(!t)return null;s=this.sessionKey(e,D(t))}const i=await this.storage.read(s);if(!i)return null;let r;try{r=JSON.parse(i)}catch(e){throw new Error(`Unable to restore session: Stored JSON invalid (${e.message||String(e)})`)}const n=R.restore(this,r);return t&&await this.touchSession(e,t),n}async listSessions(e){if(!this.storage)throw new Error("Unable to list sessions: No storage adapter configured");const t=this.sessionKey(e,"list");let s;try{s=JSON.parse(await this.storage.read(t)||"[]")}catch(e){throw new Error(`Unable to list sessions: Stored JSON invalid (${e.message||String(e)})`)}return s}async removeSession(e,t){if(!this.storage)throw new Error("Unable to remove session: No storage adapter configured");const s=this.sessionKey(e,D(t));await this.storage.remove(s),await this.touchSession(e,t,!0)}async clearSessions(e){if(!this.storage)throw new Error("Unable to clear sessions: No storage adapter configured");for(const t of await this.listSessions(e))await this.removeSession(e,t)}makeSignatureProvider(e,t){var s=this;return{getAvailableKeys:async function(){return e},sign:async function(e){const r=t||s.transport;let n=f.fromTransaction(e.chainId,e.serializedTransaction,s.requestOptions);const a=s.callbackService.create();n.setCallback(a.url,!0),n.setBroadcast(!1),r.prepare&&(n=await r.prepare(n));const{transaction:o,signatures:c}=await s.sendRequest(n,a,r),l=i.encode({object:o});return{...e,serializedTransaction:l,signatures:c}}}}async touchSession(e,t,s=!1){const i=await this.listSessions(e),r=D(t),n=i.findIndex(e=>D(e)===r);n>=0&&i.splice(n,1),!1===s&&i.unshift(t);const a=this.sessionKey(e,"list");await this.storage.write(a,JSON.stringify(i))}async storeSession(e,t){const s=this.sessionKey(e,D(t.auth)),i=JSON.stringify(t.serialize());await this.storage.write(s,i),await this.touchSession(e,t.auth)}sessionKey(e,t){return[this.chainId.toString(),c.from(e).toString(),t].join("-")}}function D(e){const t=a.from(e),s=t.actor.equals(g)?"<any>":String(t.actor);let i;return i=t.permission.equals(g)||t.permission.equals(y)?"<any>":String(t.permission),`${s}@${i}`}export default j;export{v as CancelError,_ as IdentityError,j as Link,N as LinkChannelSession,T as LinkFallbackSession,x as LinkOptions,R as LinkSession,q as SessionError};
//# sourceMappingURL=index.esm.js.map

@@ -16,3 +16,3 @@ function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var t=e(require("pako")),r=require("@greymass/eosio"),n=require("eosio-signing-request"),i=e(require("fetch-ponyfill")),o=require("asmcrypto.js"),s=require("uuid"),a=e(require("isomorphic-ws"));function c(){return(c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function u(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function l(e){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function f(e,t){return(f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}function p(e,t,r){return(p=h()?Reflect.construct:function(e,t,r){var n=[null];n.push.apply(n,t);var i=new(Function.bind.apply(e,n));return r&&f(i,r.prototype),i}).apply(null,arguments)}function d(e){var t="function"==typeof Map?new Map:void 0;return(d=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return p(e,arguments,l(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),f(r,e)})(e)}var v,m=function(e){function t(t){var r;return(r=e.call(this,"User canceled request "+(t?"("+t+")":""))||this).code="E_CANCEL",r}return u(t,e),t}(d(Error)),y=function(e){function t(t){var r;return(r=e.call(this,"Unable to verify identity "+(t?"("+t+")":""))||this).code="E_IDENTITY",r}return u(t,e),t}(d(Error)),g=function(e){function t(t,r){var n;return(n=e.call(this,t)||this).code=r,n}return u(t,e),t}(d(Error));

***************************************************************************** */
function b(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s}!function(e){e.defaults={chainId:"aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906",client:"https://eos.greymass.com",service:"https://cb.anchor.link"}}(v||(v={}));var P=function(e){function t(){return e.apply(this,arguments)||this}return u(t,e),t}(r.Struct);b([r.Struct.field("public_key")],P.prototype,"from",void 0),b([r.Struct.field("uint64")],P.prototype,"nonce",void 0),b([r.Struct.field("bytes")],P.prototype,"ciphertext",void 0),b([r.Struct.field("uint32")],P.prototype,"checksum",void 0),P=b([r.Struct.type("sealed_message")],P);var S=function(e){function t(){return e.apply(this,arguments)||this}return u(t,e),t}(r.Struct);b([r.Struct.field("name")],S.prototype,"session_name",void 0),b([r.Struct.field("public_key")],S.prototype,"request_key",void 0),S=b([r.Struct.type("link_create")],S);var w=function(e){function t(){return e.apply(this,arguments)||this}return u(t,e),t}(r.Struct);b([r.Struct.field("time_point_sec")],w.prototype,"expiration",void 0),w=b([r.Struct.type("link_info")],w);var k=i().fetch,_=function(){function e(){}return e.prototype.remove=function(){try{var e=this,t=function(){if(e.link.storage)return Promise.resolve(e.link.removeSession(e.identifier,e.auth)).then(function(){})}();return Promise.resolve(t&&t.then?t.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},e.restore=function(e,t){switch(t.type){case"channel":return new q(e,t.data,t.metadata);case"fallback":return new O(e,t.data,t.metadata);default:throw new Error("Unable to restore, session data invalid")}},e}(),q=function(e){function t(t,n,i){var s;(s=e.call(this)||this).type="channel",s.timeout=12e4,s.link=t,s.auth=r.PermissionLevel.from(n.auth),s.publicKey=r.PublicKey.from(n.publicKey),s.channel=n.channel,s.identifier=r.Name.from(n.identifier);var a=r.PrivateKey.from(n.requestKey),u=r.PublicKey.from(n.channel.key);return s.encrypt=function(e){return function(e,t,n,i){var s=t.sharedSecret(n);i||(i=r.UInt64.random());var a=r.Serializer.encode({object:i}).appending(s.array).sha512Digest,c=new o.AES_CBC(a.array.slice(0,32),a.array.slice(32,48)),u=r.Bytes.from(c.encrypt(r.Bytes.from(e,"utf8").array)),l=new DataView(r.Checksum256.hash(a.array).array.buffer).getUint32(0,!0);return P.from({from:t.toPublic(),nonce:i,ciphertext:u,checksum:l})}(e.encode(!0,!1),a,u)},s.metadata=c({},i||{},{timeout:s.timeout,name:s.channel.name}),s.serialize=function(){return{type:"channel",data:n,metadata:s.metadata}},s}u(t,e);var n=t.prototype;return n.onSuccess=function(e,t){this.link.transport.onSuccess&&this.link.transport.onSuccess(e,t)},n.onFailure=function(e,t){this.link.transport.onFailure&&this.link.transport.onFailure(e,t)},n.onRequest=function(e,t){var n=w.from({expiration:new Date(Date.now()+this.timeout).toISOString().slice(0,-1)});this.link.transport.onSessionRequest&&this.link.transport.onSessionRequest(this,e,t),setTimeout(function(){t(new g("Wallet did not respond in time","E_TIMEOUT"))},this.timeout+500),e.setInfoKey("link",n),k(this.channel.url,{method:"POST",headers:{"X-Buoy-Wait":(this.timeout/1e3).toFixed(0)},body:r.Serializer.encode({object:this.encrypt(e)}).array}).then(function(e){200!==e.status&&t(new g("Unable to push message","E_DELIVERY"))}).catch(function(e){t(new g("Unable to reach link service ("+(e.message||String(e))+")","E_DELIVERY"))})},n.prepare=function(e){return this.link.transport.prepare?this.link.transport.prepare(e,this):Promise.resolve(e)},n.showLoading=function(){if(this.link.transport.showLoading)return this.link.transport.showLoading()},n.makeSignatureProvider=function(){return this.link.makeSignatureProvider([this.publicKey.toString()],this)},n.transact=function(e,t){return this.link.transact(e,t,this)},t}(_),O=function(e){function t(t,n,i){var o;return(o=e.call(this)||this).type="fallback",o.link=t,o.auth=r.PermissionLevel.from(n.auth),o.publicKey=r.PublicKey.from(n.publicKey),o.metadata=i||{},o.identifier=r.Name.from(n.identifier),o.serialize=function(){return{type:o.type,data:n,metadata:o.metadata}},o}u(t,e);var n=t.prototype;return n.onSuccess=function(e,t){this.link.transport.onSuccess&&this.link.transport.onSuccess(e,t)},n.onFailure=function(e,t){this.link.transport.onFailure&&this.link.transport.onFailure(e,t)},n.onRequest=function(e,t){this.link.transport.onSessionRequest?this.link.transport.onSessionRequest(this,e,t):this.link.transport.onRequest(e,t)},n.prepare=function(e){return this.link.transport.prepare?this.link.transport.prepare(e,this):Promise.resolve(e)},n.showLoading=function(){if(this.link.transport.showLoading)return this.link.transport.showLoading()},n.makeSignatureProvider=function(){return this.link.makeSignatureProvider([this.publicKey.toString()],this)},n.transact=function(e,t){return this.link.transact(e,t,this)},t}(_),j=function(){function e(e){this.address=e.trim().replace(/\/$/,"")}return e.prototype.create=function(){var e=this.address+"/"+s.v4();return new E(e)},e}(),E=function(){function e(e){this.url=e,this.ctx={}}var t=e.prototype;return t.wait=function(){return e=this.url,t=this.ctx,new Promise(function(r,n){var i=!0,o=0,s=e.replace(/^http/,"ws"),c=function(e){try{r(JSON.parse(e))}catch(e){e.message="Unable to parse callback JSON: "+e.message,n(e)}};!function e(){var r=new a(s);t.cancel=function(){i=!1,r.readyState!==a.OPEN&&r.readyState!==a.CONNECTING||r.close()},r.onmessage=function(e){if(i=!1,r.readyState===a.OPEN&&r.close(),"undefined"!=typeof Blob&&e.data instanceof Blob){var t=new FileReader;t.onload=function(){c(t.result)},t.onerror=function(e){n(e)},t.readAsText(e.data)}else c("string"==typeof e.data?e.data:e.data.toString())},r.onopen=function(){o=0},r.onclose=function(){var t;i&&setTimeout(e,(t=o++,Math.min(Math.pow(10*t,2),1e4)))}}()});var e,t},t.cancel=function(){this.ctx.cancel&&this.ctx.cancel()},e}();function R(e,t){try{var r=e()}catch(e){return t(e)}return r&&r.then?r.then(void 0,t):r}var K="undefined"!=typeof Symbol?Symbol.iterator||(Symbol.iterator=Symbol("Symbol.iterator")):"@@iterator";function x(e,t,r){if(!e.s){if(r instanceof I){if(!r.s)return void(r.o=x.bind(null,e,t));1&t&&(t=r.s),r=r.v}if(r&&r.then)return void r.then(x.bind(null,e,t),x.bind(null,e,2));e.s=t,e.v=r;var n=e.o;n&&n(e)}}var I=function(){function e(){}return e.prototype.then=function(t,r){var n=new e,i=this.s;if(i){var o=1&i?t:r;if(o){try{x(n,1,o(this.v))}catch(e){x(n,2,e)}return n}return this}return this.o=function(e){try{var i=e.v;1&e.s?x(n,1,t?t(i):i):r?x(n,1,r(i)):x(n,2,i)}catch(e){x(n,2,e)}},n},e}();function N(e){return e instanceof I&&1&e.s}var L=function(){function e(e){if(this.abiCache=new Map,this.pendingAbis=new Map,"object"!=typeof e)throw new TypeError("Missing options object");if(!e.transport)throw new TypeError("options.transport is required, see https://github.com/greymass/anchor-link#transports");this.client=void 0===e.client||"string"==typeof e.client?new r.APIClient({url:e.client||v.defaults.client}):e.client,this.chainId=n.ChainId.from(e.chainId||v.defaults.chainId),this.callbackService=void 0===e.service||"string"==typeof e.service?new j(e.service||v.defaults.service):e.service,this.transport=e.transport,null!==e.storage&&(this.storage=e.storage||this.transport.storage),this.requestOptions={abiProvider:this,zlib:t}}var i=e.prototype;return i.getAbi=function(e){try{var t=this,r=e.toString(),n=t.abiCache.get(r),i=function(){if(!n){var i=t.pendingAbis.get(r);return i||(i=t.client.v1.chain.get_abi(e),t.pendingAbis.set(r,i)),Promise.resolve(i).then(function(e){n=e.abi,t.pendingAbis.delete(r),n&&t.abiCache.set(r,n)})}}();return Promise.resolve(i&&i.then?i.then(function(){return n}):n)}catch(e){return Promise.reject(e)}},i.createRequest=function(e,t){try{var r=this,i=t||r.transport;return Promise.resolve(n.SigningRequest.create(c({},e,{chainId:r.chainId.toString(),broadcast:!1}),r.requestOptions)).then(function(e){function t(){var t=r.callbackService.create();return e.setCallback(t.url,!0),{request:e,callback:t}}var n=function(){if(i.prepare)return Promise.resolve(i.prepare(e)).then(function(t){e=t})}();return n&&n.then?n.then(t):t()})}catch(e){return Promise.reject(e)}},i.sendRequest=function(e,t,i,o){void 0===o&&(o=!1);try{var s=this,a=i||s.transport;return Promise.resolve(R(function(){if(e.data.callback!==t.url)throw new Error("Invalid request callback");if(!0===e.data.flags.broadcast||!1===e.data.flags.background)throw new Error("Invalid request flags");var i=new Promise(function(r,n){a.onRequest(e,function(e){t.cancel(),n("string"==typeof e?new m(e):e)})});return Promise.resolve(Promise.race([t.wait(),i])).then(function(t){var i=r.PermissionLevel.from({actor:t.sa,permission:t.sp}),u=Object.keys(t).filter(function(e){return e.startsWith("sig")&&"sig0"!==e}).map(function(e){return r.Signature.from(t[e])});return Promise.resolve(n.ResolvedSigningRequest.fromPayload(t,s.requestOptions)).then(function(n){function l(){return a.onSuccess&&a.onSuccess(e,h),h}var f=n.request.getInfoKey("fuel_sig","string");f&&u.unshift(r.Signature.from(f));var h={request:n.request,transaction:n.transaction,resolvedTransaction:n.resolvedTransaction,signatures:u,payload:t,signer:i},p=function(){if(o){var e=r.SignedTransaction.from(c({},n.transaction,{signatures:u}));return Promise.resolve(s.client.v1.chain.push_transaction(e)).then(function(e){h.processed=e.processed})}}();return p&&p.then?p.then(l):l()})})},function(t){throw a.onFailure&&a.onFailure(e,t),t}))}catch(e){return Promise.reject(e)}},i.transact=function(e,t,r){try{var n=this,i=r||n.transport,o=!t||!1!==t.broadcast;return i&&i.showLoading&&i.showLoading(),e.actions&&(e.expiration||e.ref_block_num||e.ref_block_prefix||e.max_net_usage_words||e.max_cpu_usage_ms||e.delay_sec)&&(e={transaction:c({expiration:"1970-01-01T00:00:00",ref_block_num:0,ref_block_prefix:0,max_net_usage_words:0,max_cpu_usage_ms:0,delay_sec:0},e)}),Promise.resolve(n.createRequest(e,i)).then(function(e){return Promise.resolve(n.sendRequest(e.request,e.callback,i,o))})}catch(e){return Promise.reject(e)}},i.identify=function(e){try{var t=this;return Promise.resolve(t.createRequest({identity:{permission:e.requestPermission,scope:e.scope},info:e.info})).then(function(i){var o=i.request;return Promise.resolve(t.sendRequest(o,i.callback)).then(function(i){if(!i.request.isIdentity())throw new y("Unexpected response");var s=i.transaction.signingDigest(o.getChainId()),a=i.signatures[0].recoverDigest(s),u=i.signer;return Promise.resolve(t.client.v1.chain.get_account(u.actor.toString())).then(function(t){if(!t)throw new y("Signature from unknown account: "+u.actor);var o=t.permissions.find(function(e){return u.permission.equals(e.perm_name)});if(!o)throw new y(u.actor+" signed for unknown permission: "+u.permission);var s=o.required_auth,l=s.keys.find(function(e){return a.equals(e.key)});if(!l)throw new y(T(u)+" has no key matching id signature");if(s.threshold>l.weight)throw new y(T(u)+" signature does not reach auth threshold");if(e.requestPermission){var f=r.PermissionLevel.from(e.requestPermission);if(!f.actor.equals(n.PlaceholderName)&&!f.actor.equals(u.actor)||!f.permission.equals(n.PlaceholderPermission)&&!f.permission.equals(u.permission))throw new y("Unexpected identity proof from "+T(u)+", expected "+T(f)+" ")}return c({},i,{account:t,signerKey:a})})})})}catch(e){return Promise.reject(e)}},i.login=function(e){try{var t=this,n=r.PrivateKey.generate("K1"),i=n.toPublic(),o=S.from({session_name:e,request_key:i});return Promise.resolve(t.identify({scope:e,info:{link:o,scope:e}})).then(function(r){function i(){return c({},r,{session:o})}var o,s={sameDevice:void 0!==r.request.getRawInfo().return_path};o=r.payload.link_ch&&r.payload.link_key&&r.payload.link_name?new q(t,{identifier:e,auth:r.signer,publicKey:r.signerKey,channel:{url:r.payload.link_ch,key:r.payload.link_key,name:r.payload.link_name},requestKey:n},s):new O(t,{identifier:e,auth:r.signer,publicKey:r.signerKey},s);var a=function(){if(t.storage)return Promise.resolve(t.storeSession(e,o)).then(function(){})}();return a&&a.then?a.then(i):i()})}catch(e){return Promise.reject(e)}},i.restoreSession=function(e,t){try{var r,n,i=function(i){return r?i:Promise.resolve(o.storage.read(n)).then(function(r){if(!r)return null;var n;try{n=JSON.parse(r)}catch(e){throw new Error("Unable to restore session: Stored JSON invalid ("+(e.message||String(e))+")")}var i=_.restore(o,n),s=function(){if(t)return Promise.resolve(o.touchSession(e,t)).then(function(){})}();return s&&s.then?s.then(function(){return i}):i})},o=this;if(!o.storage)throw new Error("Unable to restore session: No storage adapter configured");var s=function(){if(!t)return Promise.resolve(o.listSessions(e)).then(function(t){var i=t[0];if(!i)return r=1,null;n=o.sessionKey(e,T(i))});n=o.sessionKey(e,T(t))}();return Promise.resolve(s&&s.then?s.then(i):i(s))}catch(e){return Promise.reject(e)}},i.listSessions=function(e){try{var t=this;if(!t.storage)throw new Error("Unable to list sessions: No storage adapter configured");var r,n=t.sessionKey(e,"list"),i=R(function(){return Promise.resolve(t.storage.read(n)).then(function(e){r=JSON.parse(e||"[]")})},function(e){throw new Error("Unable to list sessions: Stored JSON invalid ("+(e.message||String(e))+")")});return Promise.resolve(i&&i.then?i.then(function(e){return r}):r)}catch(e){return Promise.reject(e)}},i.removeSession=function(e,t){try{var r=this;if(!r.storage)throw new Error("Unable to remove session: No storage adapter configured");var n=r.sessionKey(e,T(t));return Promise.resolve(r.storage.remove(n)).then(function(){return Promise.resolve(r.touchSession(e,t,!0)).then(function(){})})}catch(e){return Promise.reject(e)}},i.clearSessions=function(e){try{var t=this;if(!t.storage)throw new Error("Unable to clear sessions: No storage adapter configured");return Promise.resolve(t.listSessions(e)).then(function(r){var n=function(e,t,r){if("function"==typeof e[K]){var n,i,o,s=e[K]();if(function e(r){try{for(;!(n=s.next()).done;)if((r=t(n.value))&&r.then){if(!N(r))return void r.then(e,o||(o=x.bind(null,i=new I,2)));r=r.v}i?x(i,1,r):i=r}catch(e){x(i||(i=new I),2,e)}}(),s.return){var a=function(e){try{n.done||s.return()}catch(e){}return e};if(i&&i.then)return i.then(a,function(e){throw a(e)});a()}return i}if(!("length"in e))throw new TypeError("Object is not iterable");for(var c=[],u=0;u<e.length;u++)c.push(e[u]);return function(e,t,r){var n,i,o=-1;return function r(s){try{for(;++o<e.length;)if((s=t(o))&&s.then){if(!N(s))return void s.then(r,i||(i=x.bind(null,n=new I,2)));s=s.v}n?x(n,1,s):n=s}catch(e){x(n||(n=new I),2,e)}}(),n}(c,function(e){return t(c[e])})}(r,function(r){return Promise.resolve(t.removeSession(e,r)).then(function(){})});if(n&&n.then)return n.then(function(){})})}catch(e){return Promise.reject(e)}},i.makeSignatureProvider=function(e,t){var i=this;return{getAvailableKeys:function(){return Promise.resolve(e)},sign:function(e){try{var o=function(){return Promise.resolve(i.sendRequest(a,u,s)).then(function(t){var n=t.signatures,i=r.Serializer.encode({object:t.transaction});return c({},e,{serializedTransaction:i,signatures:n})})},s=t||i.transport,a=n.SigningRequest.fromTransaction(e.chainId,e.serializedTransaction,i.requestOptions),u=i.callbackService.create();a.setCallback(u.url,!0),a.setBroadcast(!1);var l=function(){if(s.prepare)return Promise.resolve(s.prepare(a)).then(function(e){a=e})}();return Promise.resolve(l&&l.then?l.then(o):o())}catch(e){return Promise.reject(e)}}}},i.touchSession=function(e,t,r){void 0===r&&(r=!1);try{var n=this;return Promise.resolve(n.listSessions(e)).then(function(i){var o=T(t),s=i.findIndex(function(e){return T(e)===o});s>=0&&i.splice(s,1),!1===r&&i.unshift(t);var a=n.sessionKey(e,"list");return Promise.resolve(n.storage.write(a,JSON.stringify(i))).then(function(){})})}catch(e){return Promise.reject(e)}},i.storeSession=function(e,t){try{var r=this,n=r.sessionKey(e,T(t.auth)),i=JSON.stringify(t.serialize());return Promise.resolve(r.storage.write(n,i)).then(function(){return Promise.resolve(r.touchSession(e,t.auth)).then(function(){})})}catch(e){return Promise.reject(e)}},i.sessionKey=function(e,t){return[this.chainId.toString(),r.Name.from(e).toString(),t].join("-")},e}();function T(e){var t=r.PermissionLevel.from(e);return(t.actor.equals(n.PlaceholderName)?"<any>":String(t.actor))+"@"+(t.permission.equals(n.PlaceholderName)||t.permission.equals(n.PlaceholderPermission)?"<any>":String(t.permission))}for(var C={__proto__:null,default:L,get LinkOptions(){return v},PlaceholderAuth:n.PlaceholderAuth,PlaceholderName:n.PlaceholderName,PlaceholderPermission:n.PlaceholderPermission,Link:L,LinkSession:_,LinkChannelSession:q,LinkFallbackSession:O,CancelError:m,IdentityError:y,SessionError:g},U=L,D=0,F=Object.keys(C);D<F.length;D++){var A=F[D];"default"!==A&&(U[A]=C[A])}module.exports=U;
function b(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s}!function(e){e.defaults={chainId:"aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906",client:"https://eos.greymass.com",service:"https://cb.anchor.link"}}(v||(v={}));var P=function(e){function t(){return e.apply(this,arguments)||this}return u(t,e),t}(r.Struct);b([r.Struct.field("public_key")],P.prototype,"from",void 0),b([r.Struct.field("uint64")],P.prototype,"nonce",void 0),b([r.Struct.field("bytes")],P.prototype,"ciphertext",void 0),b([r.Struct.field("uint32")],P.prototype,"checksum",void 0),P=b([r.Struct.type("sealed_message")],P);var S=function(e){function t(){return e.apply(this,arguments)||this}return u(t,e),t}(r.Struct);b([r.Struct.field("name")],S.prototype,"session_name",void 0),b([r.Struct.field("public_key")],S.prototype,"request_key",void 0),S=b([r.Struct.type("link_create")],S);var w=function(e){function t(){return e.apply(this,arguments)||this}return u(t,e),t}(r.Struct);b([r.Struct.field("time_point_sec")],w.prototype,"expiration",void 0),w=b([r.Struct.type("link_info")],w);var k=i().fetch,_=function(){function e(){}return e.prototype.remove=function(){try{var e=this,t=function(){if(e.link.storage)return Promise.resolve(e.link.removeSession(e.identifier,e.auth)).then(function(){})}();return Promise.resolve(t&&t.then?t.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},e.restore=function(e,t){switch(t.type){case"channel":return new q(e,t.data,t.metadata);case"fallback":return new O(e,t.data,t.metadata);default:throw new Error("Unable to restore, session data invalid")}},e}(),q=function(e){function t(t,n,i){var s;(s=e.call(this)||this).type="channel",s.timeout=12e4,s.link=t,s.auth=r.PermissionLevel.from(n.auth),s.publicKey=r.PublicKey.from(n.publicKey),s.channel=n.channel,s.identifier=r.Name.from(n.identifier);var a=r.PrivateKey.from(n.requestKey),u=r.PublicKey.from(n.channel.key);return s.encrypt=function(e){return function(e,t,n,i){var s=t.sharedSecret(n);i||(i=r.UInt64.random());var a=r.Serializer.encode({object:i}).appending(s.array).sha512Digest,c=new o.AES_CBC(a.array.slice(0,32),a.array.slice(32,48)),u=r.Bytes.from(c.encrypt(r.Bytes.from(e,"utf8").array)),l=new DataView(r.Checksum256.hash(a.array).array.buffer).getUint32(0,!0);return P.from({from:t.toPublic(),nonce:i,ciphertext:u,checksum:l})}(e.encode(!0,!1),a,u)},s.metadata=c({},i||{},{timeout:s.timeout,name:s.channel.name}),s.serialize=function(){return{type:"channel",data:n,metadata:s.metadata}},s}u(t,e);var n=t.prototype;return n.onSuccess=function(e,t){this.link.transport.onSuccess&&this.link.transport.onSuccess(e,t)},n.onFailure=function(e,t){this.link.transport.onFailure&&this.link.transport.onFailure(e,t)},n.onRequest=function(e,t){var n=w.from({expiration:new Date(Date.now()+this.timeout).toISOString().slice(0,-1)});this.link.transport.onSessionRequest&&this.link.transport.onSessionRequest(this,e,t),setTimeout(function(){t(new g("Wallet did not respond in time","E_TIMEOUT"))},this.timeout+500),e.setInfoKey("link",n),k(this.channel.url,{method:"POST",headers:{"X-Buoy-Wait":(this.timeout/1e3).toFixed(0)},body:r.Serializer.encode({object:this.encrypt(e)}).array}).then(function(e){200!==e.status&&t(new g("Unable to push message","E_DELIVERY"))}).catch(function(e){t(new g("Unable to reach link service ("+(e.message||String(e))+")","E_DELIVERY"))})},n.prepare=function(e){return this.link.transport.prepare?this.link.transport.prepare(e,this):Promise.resolve(e)},n.showLoading=function(){if(this.link.transport.showLoading)return this.link.transport.showLoading()},n.makeSignatureProvider=function(){return this.link.makeSignatureProvider([this.publicKey.toString()],this)},n.transact=function(e,t){return this.link.transact(e,t,this)},t}(_),O=function(e){function t(t,n,i){var o;return(o=e.call(this)||this).type="fallback",o.link=t,o.auth=r.PermissionLevel.from(n.auth),o.publicKey=r.PublicKey.from(n.publicKey),o.metadata=i||{},o.identifier=r.Name.from(n.identifier),o.serialize=function(){return{type:o.type,data:n,metadata:o.metadata}},o}u(t,e);var n=t.prototype;return n.onSuccess=function(e,t){this.link.transport.onSuccess&&this.link.transport.onSuccess(e,t)},n.onFailure=function(e,t){this.link.transport.onFailure&&this.link.transport.onFailure(e,t)},n.onRequest=function(e,t){this.link.transport.onSessionRequest?this.link.transport.onSessionRequest(this,e,t):this.link.transport.onRequest(e,t)},n.prepare=function(e){return this.link.transport.prepare?this.link.transport.prepare(e,this):Promise.resolve(e)},n.showLoading=function(){if(this.link.transport.showLoading)return this.link.transport.showLoading()},n.makeSignatureProvider=function(){return this.link.makeSignatureProvider([this.publicKey.toString()],this)},n.transact=function(e,t){return this.link.transact(e,t,this)},t}(_),j=function(){function e(e){this.address=e.trim().replace(/\/$/,"")}return e.prototype.create=function(){var e=this.address+"/"+s.v4();return new E(e)},e}(),E=function(){function e(e){this.url=e,this.ctx={}}var t=e.prototype;return t.wait=function(){return e=this.url,t=this.ctx,new Promise(function(r,n){var i=!0,o=0,s=e.replace(/^http/,"ws"),c=function(e){try{r(JSON.parse(e))}catch(e){e.message="Unable to parse callback JSON: "+e.message,n(e)}};!function e(){var r=new a(s);t.cancel=function(){i=!1,r.readyState!==a.OPEN&&r.readyState!==a.CONNECTING||r.close()},r.onmessage=function(e){if(i=!1,r.readyState===a.OPEN&&r.close(),"undefined"!=typeof Blob&&e.data instanceof Blob){var t=new FileReader;t.onload=function(){c(t.result)},t.onerror=function(e){n(e)},t.readAsText(e.data)}else c("string"==typeof e.data?e.data:e.data.toString())},r.onopen=function(){o=0},r.onclose=function(){var t;i&&setTimeout(e,(t=o++,Math.min(Math.pow(10*t,2),1e4)))}}()});var e,t},t.cancel=function(){this.ctx.cancel&&this.ctx.cancel()},e}();function R(e,t){try{var r=e()}catch(e){return t(e)}return r&&r.then?r.then(void 0,t):r}var K="undefined"!=typeof Symbol?Symbol.iterator||(Symbol.iterator=Symbol("Symbol.iterator")):"@@iterator";function x(e,t,r){if(!e.s){if(r instanceof I){if(!r.s)return void(r.o=x.bind(null,e,t));1&t&&(t=r.s),r=r.v}if(r&&r.then)return void r.then(x.bind(null,e,t),x.bind(null,e,2));e.s=t,e.v=r;var n=e.o;n&&n(e)}}var I=function(){function e(){}return e.prototype.then=function(t,r){var n=new e,i=this.s;if(i){var o=1&i?t:r;if(o){try{x(n,1,o(this.v))}catch(e){x(n,2,e)}return n}return this}return this.o=function(e){try{var i=e.v;1&e.s?x(n,1,t?t(i):i):r?x(n,1,r(i)):x(n,2,i)}catch(e){x(n,2,e)}},n},e}();function N(e){return e instanceof I&&1&e.s}var L=function(){function e(e){if(this.abiCache=new Map,this.pendingAbis=new Map,"object"!=typeof e)throw new TypeError("Missing options object");if(!e.transport)throw new TypeError("options.transport is required, see https://github.com/greymass/anchor-link#transports");this.client=void 0===e.client||"string"==typeof e.client?new r.APIClient({url:e.client||v.defaults.client}):e.client,this.chainId=n.ChainId.from(e.chainId||v.defaults.chainId),this.callbackService=void 0===e.service||"string"==typeof e.service?new j(e.service||v.defaults.service):e.service,this.transport=e.transport,null!==e.storage&&(this.storage=e.storage||this.transport.storage),this.requestOptions={abiProvider:this,zlib:t}}var i=e.prototype;return i.getAbi=function(e){try{var t=this,r=e.toString(),n=t.abiCache.get(r),i=function(){if(!n){var i=t.pendingAbis.get(r);return i||(i=t.client.v1.chain.get_abi(e),t.pendingAbis.set(r,i)),Promise.resolve(i).then(function(e){n=e.abi,t.pendingAbis.delete(r),n&&t.abiCache.set(r,n)})}}();return Promise.resolve(i&&i.then?i.then(function(){return n}):n)}catch(e){return Promise.reject(e)}},i.createRequest=function(e,t){try{var r=this,i=t||r.transport;return Promise.resolve(n.SigningRequest.create(c({},e,{chainId:r.chainId.toString(),broadcast:!1}),r.requestOptions)).then(function(e){function t(){var t=r.callbackService.create();return e.setCallback(t.url,!0),{request:e,callback:t}}var n=function(){if(i.prepare)return Promise.resolve(i.prepare(e)).then(function(t){e=t})}();return n&&n.then?n.then(t):t()})}catch(e){return Promise.reject(e)}},i.sendRequest=function(e,t,i,o){void 0===o&&(o=!1);try{var s=this,a=i||s.transport;return Promise.resolve(R(function(){if(e.data.callback!==t.url)throw new Error("Invalid request callback");if(!0===e.data.flags.broadcast||!1===e.data.flags.background)throw new Error("Invalid request flags");var i=new Promise(function(r,n){a.onRequest(e,function(e){t.cancel(),n("string"==typeof e?new m(e):e)})});return Promise.resolve(Promise.race([t.wait(),i])).then(function(t){var i=r.PermissionLevel.from({actor:t.sa,permission:t.sp}),u=Object.keys(t).filter(function(e){return e.startsWith("sig")&&"sig0"!==e}).map(function(e){return r.Signature.from(t[e])});return Promise.resolve(n.ResolvedSigningRequest.fromPayload(t,s.requestOptions)).then(function(n){function l(){return a.onSuccess&&a.onSuccess(e,h),h}var f=n.request.getInfoKey("fuel_sig","string");f&&u.unshift(r.Signature.from(f));var h={request:n.request,transaction:n.transaction,resolvedTransaction:n.resolvedTransaction,signatures:u,payload:t,signer:i},p=function(){if(o){var e=r.SignedTransaction.from(c({},n.transaction,{signatures:u}));return Promise.resolve(s.client.v1.chain.push_transaction(e)).then(function(e){h.processed=e.processed})}}();return p&&p.then?p.then(l):l()})})},function(t){throw a.onFailure&&a.onFailure(e,t),t}))}catch(e){return Promise.reject(e)}},i.transact=function(e,t,r){try{var n=this,i=r||n.transport,o=!t||!1!==t.broadcast;return i&&i.showLoading&&i.showLoading(),e.actions&&(e.expiration||e.ref_block_num||e.ref_block_prefix||e.max_net_usage_words||e.max_cpu_usage_ms||e.delay_sec)&&(e={transaction:c({expiration:"1970-01-01T00:00:00",ref_block_num:0,ref_block_prefix:0,max_net_usage_words:0,max_cpu_usage_ms:0,delay_sec:0},e)}),Promise.resolve(n.createRequest(e,i)).then(function(e){return Promise.resolve(n.sendRequest(e.request,e.callback,i,o))})}catch(e){return Promise.reject(e)}},i.identify=function(e){try{var t=this;return Promise.resolve(t.createRequest({identity:{permission:e.requestPermission,scope:e.scope},info:e.info})).then(function(i){var o=i.request;return Promise.resolve(t.sendRequest(o,i.callback)).then(function(i){if(!i.request.isIdentity())throw new y("Unexpected response");var s=i.transaction.signingDigest(o.getChainId()),a=i.signatures[0].recoverDigest(s),u=i.signer;return Promise.resolve(t.client.v1.chain.get_account(u.actor)).then(function(t){if(!t)throw new y("Signature from unknown account: "+u.actor);var o=t.permissions.find(function(e){return u.permission.equals(e.perm_name)});if(!o)throw new y(u.actor+" signed for unknown permission: "+u.permission);var s=o.required_auth,l=s.keys.find(function(e){return a.equals(e.key)});if(!l)throw new y(T(u)+" has no key matching id signature ("+a+")");if(s.threshold>l.weight)throw new y(T(u)+" signature does not reach auth threshold");if(e.requestPermission){var f=r.PermissionLevel.from(e.requestPermission);if(!f.actor.equals(n.PlaceholderName)&&!f.actor.equals(u.actor)||!f.permission.equals(n.PlaceholderPermission)&&!f.permission.equals(u.permission))throw new y("Unexpected identity proof from "+T(u)+", expected "+T(f)+" ")}return c({},i,{account:t,signerKey:a})})})})}catch(e){return Promise.reject(e)}},i.login=function(e){try{var t=this,n=r.PrivateKey.generate("K1"),i=n.toPublic(),o=S.from({session_name:e,request_key:i});return Promise.resolve(t.identify({scope:e,info:{link:o,scope:e}})).then(function(r){function i(){return c({},r,{session:o})}var o,s={sameDevice:void 0!==r.request.getRawInfo().return_path};o=r.payload.link_ch&&r.payload.link_key&&r.payload.link_name?new q(t,{identifier:e,auth:r.signer,publicKey:r.signerKey,channel:{url:r.payload.link_ch,key:r.payload.link_key,name:r.payload.link_name},requestKey:n},s):new O(t,{identifier:e,auth:r.signer,publicKey:r.signerKey},s);var a=function(){if(t.storage)return Promise.resolve(t.storeSession(e,o)).then(function(){})}();return a&&a.then?a.then(i):i()})}catch(e){return Promise.reject(e)}},i.restoreSession=function(e,t){try{var r,n,i=function(i){return r?i:Promise.resolve(o.storage.read(n)).then(function(r){if(!r)return null;var n;try{n=JSON.parse(r)}catch(e){throw new Error("Unable to restore session: Stored JSON invalid ("+(e.message||String(e))+")")}var i=_.restore(o,n),s=function(){if(t)return Promise.resolve(o.touchSession(e,t)).then(function(){})}();return s&&s.then?s.then(function(){return i}):i})},o=this;if(!o.storage)throw new Error("Unable to restore session: No storage adapter configured");var s=function(){if(!t)return Promise.resolve(o.listSessions(e)).then(function(t){var i=t[0];if(!i)return r=1,null;n=o.sessionKey(e,T(i))});n=o.sessionKey(e,T(t))}();return Promise.resolve(s&&s.then?s.then(i):i(s))}catch(e){return Promise.reject(e)}},i.listSessions=function(e){try{var t=this;if(!t.storage)throw new Error("Unable to list sessions: No storage adapter configured");var r,n=t.sessionKey(e,"list"),i=R(function(){return Promise.resolve(t.storage.read(n)).then(function(e){r=JSON.parse(e||"[]")})},function(e){throw new Error("Unable to list sessions: Stored JSON invalid ("+(e.message||String(e))+")")});return Promise.resolve(i&&i.then?i.then(function(e){return r}):r)}catch(e){return Promise.reject(e)}},i.removeSession=function(e,t){try{var r=this;if(!r.storage)throw new Error("Unable to remove session: No storage adapter configured");var n=r.sessionKey(e,T(t));return Promise.resolve(r.storage.remove(n)).then(function(){return Promise.resolve(r.touchSession(e,t,!0)).then(function(){})})}catch(e){return Promise.reject(e)}},i.clearSessions=function(e){try{var t=this;if(!t.storage)throw new Error("Unable to clear sessions: No storage adapter configured");return Promise.resolve(t.listSessions(e)).then(function(r){var n=function(e,t,r){if("function"==typeof e[K]){var n,i,o,s=e[K]();if(function e(r){try{for(;!(n=s.next()).done;)if((r=t(n.value))&&r.then){if(!N(r))return void r.then(e,o||(o=x.bind(null,i=new I,2)));r=r.v}i?x(i,1,r):i=r}catch(e){x(i||(i=new I),2,e)}}(),s.return){var a=function(e){try{n.done||s.return()}catch(e){}return e};if(i&&i.then)return i.then(a,function(e){throw a(e)});a()}return i}if(!("length"in e))throw new TypeError("Object is not iterable");for(var c=[],u=0;u<e.length;u++)c.push(e[u]);return function(e,t,r){var n,i,o=-1;return function r(s){try{for(;++o<e.length;)if((s=t(o))&&s.then){if(!N(s))return void s.then(r,i||(i=x.bind(null,n=new I,2)));s=s.v}n?x(n,1,s):n=s}catch(e){x(n||(n=new I),2,e)}}(),n}(c,function(e){return t(c[e])})}(r,function(r){return Promise.resolve(t.removeSession(e,r)).then(function(){})});if(n&&n.then)return n.then(function(){})})}catch(e){return Promise.reject(e)}},i.makeSignatureProvider=function(e,t){var i=this;return{getAvailableKeys:function(){return Promise.resolve(e)},sign:function(e){try{var o=function(){return Promise.resolve(i.sendRequest(a,u,s)).then(function(t){var n=t.signatures,i=r.Serializer.encode({object:t.transaction});return c({},e,{serializedTransaction:i,signatures:n})})},s=t||i.transport,a=n.SigningRequest.fromTransaction(e.chainId,e.serializedTransaction,i.requestOptions),u=i.callbackService.create();a.setCallback(u.url,!0),a.setBroadcast(!1);var l=function(){if(s.prepare)return Promise.resolve(s.prepare(a)).then(function(e){a=e})}();return Promise.resolve(l&&l.then?l.then(o):o())}catch(e){return Promise.reject(e)}}}},i.touchSession=function(e,t,r){void 0===r&&(r=!1);try{var n=this;return Promise.resolve(n.listSessions(e)).then(function(i){var o=T(t),s=i.findIndex(function(e){return T(e)===o});s>=0&&i.splice(s,1),!1===r&&i.unshift(t);var a=n.sessionKey(e,"list");return Promise.resolve(n.storage.write(a,JSON.stringify(i))).then(function(){})})}catch(e){return Promise.reject(e)}},i.storeSession=function(e,t){try{var r=this,n=r.sessionKey(e,T(t.auth)),i=JSON.stringify(t.serialize());return Promise.resolve(r.storage.write(n,i)).then(function(){return Promise.resolve(r.touchSession(e,t.auth)).then(function(){})})}catch(e){return Promise.reject(e)}},i.sessionKey=function(e,t){return[this.chainId.toString(),r.Name.from(e).toString(),t].join("-")},e}();function T(e){var t=r.PermissionLevel.from(e);return(t.actor.equals(n.PlaceholderName)?"<any>":String(t.actor))+"@"+(t.permission.equals(n.PlaceholderName)||t.permission.equals(n.PlaceholderPermission)?"<any>":String(t.permission))}for(var C={__proto__:null,default:L,get LinkOptions(){return v},PlaceholderAuth:n.PlaceholderAuth,PlaceholderName:n.PlaceholderName,PlaceholderPermission:n.PlaceholderPermission,Link:L,LinkSession:_,LinkChannelSession:q,LinkFallbackSession:O,CancelError:m,IdentityError:y,SessionError:g},U=L,D=0,F=Object.keys(C);D<F.length;D++){var A=F[D];"default"!==A&&(U[A]=C[A])}module.exports=U;
//# sourceMappingURL=index.js.map

@@ -16,3 +16,3 @@ import e from"pako";import{Struct as t,UInt64 as r,Serializer as n,Bytes as i,Checksum256 as o,PermissionLevel as s,PublicKey as a,Name as c,PrivateKey as u,Signature as f,SignedTransaction as l,APIClient as h}from"@greymass/eosio";import{SigningRequest as p,ResolvedSigningRequest as d,PlaceholderName as m,PlaceholderPermission as v,ChainId as y}from"eosio-signing-request";export{PlaceholderAuth,PlaceholderName,PlaceholderPermission}from"eosio-signing-request";import g from"fetch-ponyfill";import{AES_CBC as b}from"asmcrypto.js";import{v4 as w}from"uuid";import k from"isomorphic-ws";function P(){return(P=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function S(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function _(e){return(_=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function q(e,t){return(q=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function O(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}function j(e,t,r){return(j=O()?Reflect.construct:function(e,t,r){var n=[null];n.push.apply(n,t);var i=new(Function.bind.apply(e,n));return r&&q(i,r.prototype),i}).apply(null,arguments)}function E(e){var t="function"==typeof Map?new Map:void 0;return(E=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return j(e,arguments,_(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),q(r,e)})(e)}var x,R=function(e){function t(t){var r;return(r=e.call(this,"User canceled request "+(t?"("+t+")":""))||this).code="E_CANCEL",r}return S(t,e),t}(E(Error)),K=function(e){function t(t){var r;return(r=e.call(this,"Unable to verify identity "+(t?"("+t+")":""))||this).code="E_IDENTITY",r}return S(t,e),t}(E(Error)),I=function(e){function t(t,r){var n;return(n=e.call(this,t)||this).code=r,n}return S(t,e),t}(E(Error));

***************************************************************************** */
function N(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s}!function(e){e.defaults={chainId:"aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906",client:"https://eos.greymass.com",service:"https://cb.anchor.link"}}(x||(x={}));var T=function(e){function t(){return e.apply(this,arguments)||this}return S(t,e),t}(t);N([t.field("public_key")],T.prototype,"from",void 0),N([t.field("uint64")],T.prototype,"nonce",void 0),N([t.field("bytes")],T.prototype,"ciphertext",void 0),N([t.field("uint32")],T.prototype,"checksum",void 0),T=N([t.type("sealed_message")],T);var U=function(e){function t(){return e.apply(this,arguments)||this}return S(t,e),t}(t);N([t.field("name")],U.prototype,"session_name",void 0),N([t.field("public_key")],U.prototype,"request_key",void 0),U=N([t.type("link_create")],U);var D=function(e){function t(){return e.apply(this,arguments)||this}return S(t,e),t}(t);N([t.field("time_point_sec")],D.prototype,"expiration",void 0),D=N([t.type("link_info")],D);var F=g().fetch,L=function(){function e(){}return e.prototype.remove=function(){try{var e=this,t=function(){if(e.link.storage)return Promise.resolve(e.link.removeSession(e.identifier,e.auth)).then(function(){})}();return Promise.resolve(t&&t.then?t.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},e.restore=function(e,t){switch(t.type){case"channel":return new C(e,t.data,t.metadata);case"fallback":return new A(e,t.data,t.metadata);default:throw new Error("Unable to restore, session data invalid")}},e}(),C=function(e){function t(t,f,l){var h;(h=e.call(this)||this).type="channel",h.timeout=12e4,h.link=t,h.auth=s.from(f.auth),h.publicKey=a.from(f.publicKey),h.channel=f.channel,h.identifier=c.from(f.identifier);var p=u.from(f.requestKey),d=a.from(f.channel.key);return h.encrypt=function(e){return function(e,t,s,a){var c=t.sharedSecret(s);a||(a=r.random());var u=n.encode({object:a}).appending(c.array).sha512Digest,f=new b(u.array.slice(0,32),u.array.slice(32,48)),l=i.from(f.encrypt(i.from(e,"utf8").array)),h=new DataView(o.hash(u.array).array.buffer).getUint32(0,!0);return T.from({from:t.toPublic(),nonce:a,ciphertext:l,checksum:h})}(e.encode(!0,!1),p,d)},h.metadata=P({},l||{},{timeout:h.timeout,name:h.channel.name}),h.serialize=function(){return{type:"channel",data:f,metadata:h.metadata}},h}S(t,e);var f=t.prototype;return f.onSuccess=function(e,t){this.link.transport.onSuccess&&this.link.transport.onSuccess(e,t)},f.onFailure=function(e,t){this.link.transport.onFailure&&this.link.transport.onFailure(e,t)},f.onRequest=function(e,t){var r=D.from({expiration:new Date(Date.now()+this.timeout).toISOString().slice(0,-1)});this.link.transport.onSessionRequest&&this.link.transport.onSessionRequest(this,e,t),setTimeout(function(){t(new I("Wallet did not respond in time","E_TIMEOUT"))},this.timeout+500),e.setInfoKey("link",r),F(this.channel.url,{method:"POST",headers:{"X-Buoy-Wait":(this.timeout/1e3).toFixed(0)},body:n.encode({object:this.encrypt(e)}).array}).then(function(e){200!==e.status&&t(new I("Unable to push message","E_DELIVERY"))}).catch(function(e){t(new I("Unable to reach link service ("+(e.message||String(e))+")","E_DELIVERY"))})},f.prepare=function(e){return this.link.transport.prepare?this.link.transport.prepare(e,this):Promise.resolve(e)},f.showLoading=function(){if(this.link.transport.showLoading)return this.link.transport.showLoading()},f.makeSignatureProvider=function(){return this.link.makeSignatureProvider([this.publicKey.toString()],this)},f.transact=function(e,t){return this.link.transact(e,t,this)},t}(L),A=function(e){function t(t,r,n){var i;return(i=e.call(this)||this).type="fallback",i.link=t,i.auth=s.from(r.auth),i.publicKey=a.from(r.publicKey),i.metadata=n||{},i.identifier=c.from(r.identifier),i.serialize=function(){return{type:i.type,data:r,metadata:i.metadata}},i}S(t,e);var r=t.prototype;return r.onSuccess=function(e,t){this.link.transport.onSuccess&&this.link.transport.onSuccess(e,t)},r.onFailure=function(e,t){this.link.transport.onFailure&&this.link.transport.onFailure(e,t)},r.onRequest=function(e,t){this.link.transport.onSessionRequest?this.link.transport.onSessionRequest(this,e,t):this.link.transport.onRequest(e,t)},r.prepare=function(e){return this.link.transport.prepare?this.link.transport.prepare(e,this):Promise.resolve(e)},r.showLoading=function(){if(this.link.transport.showLoading)return this.link.transport.showLoading()},r.makeSignatureProvider=function(){return this.link.makeSignatureProvider([this.publicKey.toString()],this)},r.transact=function(e,t){return this.link.transact(e,t,this)},t}(L),J=function(){function e(e){this.address=e.trim().replace(/\/$/,"")}return e.prototype.create=function(){var e=this.address+"/"+w();return new M(e)},e}(),M=function(){function e(e){this.url=e,this.ctx={}}var t=e.prototype;return t.wait=function(){return e=this.url,t=this.ctx,new Promise(function(r,n){var i=!0,o=0,s=e.replace(/^http/,"ws"),a=function(e){try{r(JSON.parse(e))}catch(e){e.message="Unable to parse callback JSON: "+e.message,n(e)}};!function e(){var r=new k(s);t.cancel=function(){i=!1,r.readyState!==k.OPEN&&r.readyState!==k.CONNECTING||r.close()},r.onmessage=function(e){if(i=!1,r.readyState===k.OPEN&&r.close(),"undefined"!=typeof Blob&&e.data instanceof Blob){var t=new FileReader;t.onload=function(){a(t.result)},t.onerror=function(e){n(e)},t.readAsText(e.data)}else a("string"==typeof e.data?e.data:e.data.toString())},r.onopen=function(){o=0},r.onclose=function(){var t;i&&setTimeout(e,(t=o++,Math.min(Math.pow(10*t,2),1e4)))}}()});var e,t},t.cancel=function(){this.ctx.cancel&&this.ctx.cancel()},e}();function z(e,t){try{var r=e()}catch(e){return t(e)}return r&&r.then?r.then(void 0,t):r}var B="undefined"!=typeof Symbol?Symbol.iterator||(Symbol.iterator=Symbol("Symbol.iterator")):"@@iterator";function V(e,t,r){if(!e.s){if(r instanceof W){if(!r.s)return void(r.o=V.bind(null,e,t));1&t&&(t=r.s),r=r.v}if(r&&r.then)return void r.then(V.bind(null,e,t),V.bind(null,e,2));e.s=t,e.v=r;var n=e.o;n&&n(e)}}var W=function(){function e(){}return e.prototype.then=function(t,r){var n=new e,i=this.s;if(i){var o=1&i?t:r;if(o){try{V(n,1,o(this.v))}catch(e){V(n,2,e)}return n}return this}return this.o=function(e){try{var i=e.v;1&e.s?V(n,1,t?t(i):i):r?V(n,1,r(i)):V(n,2,i)}catch(e){V(n,2,e)}},n},e}();function Y(e){return e instanceof W&&1&e.s}var G=function(){function t(t){if(this.abiCache=new Map,this.pendingAbis=new Map,"object"!=typeof t)throw new TypeError("Missing options object");if(!t.transport)throw new TypeError("options.transport is required, see https://github.com/greymass/anchor-link#transports");this.client=void 0===t.client||"string"==typeof t.client?new h({url:t.client||x.defaults.client}):t.client,this.chainId=y.from(t.chainId||x.defaults.chainId),this.callbackService=void 0===t.service||"string"==typeof t.service?new J(t.service||x.defaults.service):t.service,this.transport=t.transport,null!==t.storage&&(this.storage=t.storage||this.transport.storage),this.requestOptions={abiProvider:this,zlib:e}}var r=t.prototype;return r.getAbi=function(e){try{var t=this,r=e.toString(),n=t.abiCache.get(r),i=function(){if(!n){var i=t.pendingAbis.get(r);return i||(i=t.client.v1.chain.get_abi(e),t.pendingAbis.set(r,i)),Promise.resolve(i).then(function(e){n=e.abi,t.pendingAbis.delete(r),n&&t.abiCache.set(r,n)})}}();return Promise.resolve(i&&i.then?i.then(function(){return n}):n)}catch(e){return Promise.reject(e)}},r.createRequest=function(e,t){try{var r=this,n=t||r.transport;return Promise.resolve(p.create(P({},e,{chainId:r.chainId.toString(),broadcast:!1}),r.requestOptions)).then(function(e){function t(){var t=r.callbackService.create();return e.setCallback(t.url,!0),{request:e,callback:t}}var i=function(){if(n.prepare)return Promise.resolve(n.prepare(e)).then(function(t){e=t})}();return i&&i.then?i.then(t):t()})}catch(e){return Promise.reject(e)}},r.sendRequest=function(e,t,r,n){void 0===n&&(n=!1);try{var i=this,o=r||i.transport;return Promise.resolve(z(function(){if(e.data.callback!==t.url)throw new Error("Invalid request callback");if(!0===e.data.flags.broadcast||!1===e.data.flags.background)throw new Error("Invalid request flags");var r=new Promise(function(r,n){o.onRequest(e,function(e){t.cancel(),n("string"==typeof e?new R(e):e)})});return Promise.resolve(Promise.race([t.wait(),r])).then(function(t){var r=s.from({actor:t.sa,permission:t.sp}),a=Object.keys(t).filter(function(e){return e.startsWith("sig")&&"sig0"!==e}).map(function(e){return f.from(t[e])});return Promise.resolve(d.fromPayload(t,i.requestOptions)).then(function(s){function c(){return o.onSuccess&&o.onSuccess(e,h),h}var u=s.request.getInfoKey("fuel_sig","string");u&&a.unshift(f.from(u));var h={request:s.request,transaction:s.transaction,resolvedTransaction:s.resolvedTransaction,signatures:a,payload:t,signer:r},p=function(){if(n){var e=l.from(P({},s.transaction,{signatures:a}));return Promise.resolve(i.client.v1.chain.push_transaction(e)).then(function(e){h.processed=e.processed})}}();return p&&p.then?p.then(c):c()})})},function(t){throw o.onFailure&&o.onFailure(e,t),t}))}catch(e){return Promise.reject(e)}},r.transact=function(e,t,r){try{var n=this,i=r||n.transport,o=!t||!1!==t.broadcast;return i&&i.showLoading&&i.showLoading(),e.actions&&(e.expiration||e.ref_block_num||e.ref_block_prefix||e.max_net_usage_words||e.max_cpu_usage_ms||e.delay_sec)&&(e={transaction:P({expiration:"1970-01-01T00:00:00",ref_block_num:0,ref_block_prefix:0,max_net_usage_words:0,max_cpu_usage_ms:0,delay_sec:0},e)}),Promise.resolve(n.createRequest(e,i)).then(function(e){return Promise.resolve(n.sendRequest(e.request,e.callback,i,o))})}catch(e){return Promise.reject(e)}},r.identify=function(e){try{var t=this;return Promise.resolve(t.createRequest({identity:{permission:e.requestPermission,scope:e.scope},info:e.info})).then(function(r){var n=r.request;return Promise.resolve(t.sendRequest(n,r.callback)).then(function(r){if(!r.request.isIdentity())throw new K("Unexpected response");var i=r.transaction.signingDigest(n.getChainId()),o=r.signatures[0].recoverDigest(i),a=r.signer;return Promise.resolve(t.client.v1.chain.get_account(a.actor.toString())).then(function(t){if(!t)throw new K("Signature from unknown account: "+a.actor);var n=t.permissions.find(function(e){return a.permission.equals(e.perm_name)});if(!n)throw new K(a.actor+" signed for unknown permission: "+a.permission);var i=n.required_auth,c=i.keys.find(function(e){return o.equals(e.key)});if(!c)throw new K(X(a)+" has no key matching id signature");if(i.threshold>c.weight)throw new K(X(a)+" signature does not reach auth threshold");if(e.requestPermission){var u=s.from(e.requestPermission);if(!u.actor.equals(m)&&!u.actor.equals(a.actor)||!u.permission.equals(v)&&!u.permission.equals(a.permission))throw new K("Unexpected identity proof from "+X(a)+", expected "+X(u)+" ")}return P({},r,{account:t,signerKey:o})})})})}catch(e){return Promise.reject(e)}},r.login=function(e){try{var t=this,r=u.generate("K1"),n=r.toPublic(),i=U.from({session_name:e,request_key:n});return Promise.resolve(t.identify({scope:e,info:{link:i,scope:e}})).then(function(n){function i(){return P({},n,{session:o})}var o,s={sameDevice:void 0!==n.request.getRawInfo().return_path};o=n.payload.link_ch&&n.payload.link_key&&n.payload.link_name?new C(t,{identifier:e,auth:n.signer,publicKey:n.signerKey,channel:{url:n.payload.link_ch,key:n.payload.link_key,name:n.payload.link_name},requestKey:r},s):new A(t,{identifier:e,auth:n.signer,publicKey:n.signerKey},s);var a=function(){if(t.storage)return Promise.resolve(t.storeSession(e,o)).then(function(){})}();return a&&a.then?a.then(i):i()})}catch(e){return Promise.reject(e)}},r.restoreSession=function(e,t){try{var r,n,i=function(i){return r?i:Promise.resolve(o.storage.read(n)).then(function(r){if(!r)return null;var n;try{n=JSON.parse(r)}catch(e){throw new Error("Unable to restore session: Stored JSON invalid ("+(e.message||String(e))+")")}var i=L.restore(o,n),s=function(){if(t)return Promise.resolve(o.touchSession(e,t)).then(function(){})}();return s&&s.then?s.then(function(){return i}):i})},o=this;if(!o.storage)throw new Error("Unable to restore session: No storage adapter configured");var s=function(){if(!t)return Promise.resolve(o.listSessions(e)).then(function(t){var i=t[0];if(!i)return r=1,null;n=o.sessionKey(e,X(i))});n=o.sessionKey(e,X(t))}();return Promise.resolve(s&&s.then?s.then(i):i(s))}catch(e){return Promise.reject(e)}},r.listSessions=function(e){try{var t=this;if(!t.storage)throw new Error("Unable to list sessions: No storage adapter configured");var r,n=t.sessionKey(e,"list"),i=z(function(){return Promise.resolve(t.storage.read(n)).then(function(e){r=JSON.parse(e||"[]")})},function(e){throw new Error("Unable to list sessions: Stored JSON invalid ("+(e.message||String(e))+")")});return Promise.resolve(i&&i.then?i.then(function(e){return r}):r)}catch(e){return Promise.reject(e)}},r.removeSession=function(e,t){try{var r=this;if(!r.storage)throw new Error("Unable to remove session: No storage adapter configured");var n=r.sessionKey(e,X(t));return Promise.resolve(r.storage.remove(n)).then(function(){return Promise.resolve(r.touchSession(e,t,!0)).then(function(){})})}catch(e){return Promise.reject(e)}},r.clearSessions=function(e){try{var t=this;if(!t.storage)throw new Error("Unable to clear sessions: No storage adapter configured");return Promise.resolve(t.listSessions(e)).then(function(r){var n=function(e,t,r){if("function"==typeof e[B]){var n,i,o,s=e[B]();if(function e(r){try{for(;!(n=s.next()).done;)if((r=t(n.value))&&r.then){if(!Y(r))return void r.then(e,o||(o=V.bind(null,i=new W,2)));r=r.v}i?V(i,1,r):i=r}catch(e){V(i||(i=new W),2,e)}}(),s.return){var a=function(e){try{n.done||s.return()}catch(e){}return e};if(i&&i.then)return i.then(a,function(e){throw a(e)});a()}return i}if(!("length"in e))throw new TypeError("Object is not iterable");for(var c=[],u=0;u<e.length;u++)c.push(e[u]);return function(e,t,r){var n,i,o=-1;return function r(s){try{for(;++o<e.length;)if((s=t(o))&&s.then){if(!Y(s))return void s.then(r,i||(i=V.bind(null,n=new W,2)));s=s.v}n?V(n,1,s):n=s}catch(e){V(n||(n=new W),2,e)}}(),n}(c,function(e){return t(c[e])})}(r,function(r){return Promise.resolve(t.removeSession(e,r)).then(function(){})});if(n&&n.then)return n.then(function(){})})}catch(e){return Promise.reject(e)}},r.makeSignatureProvider=function(e,t){var r=this;return{getAvailableKeys:function(){return Promise.resolve(e)},sign:function(e){try{var i=function(){return Promise.resolve(r.sendRequest(s,a,o)).then(function(t){var r=t.signatures,i=n.encode({object:t.transaction});return P({},e,{serializedTransaction:i,signatures:r})})},o=t||r.transport,s=p.fromTransaction(e.chainId,e.serializedTransaction,r.requestOptions),a=r.callbackService.create();s.setCallback(a.url,!0),s.setBroadcast(!1);var c=function(){if(o.prepare)return Promise.resolve(o.prepare(s)).then(function(e){s=e})}();return Promise.resolve(c&&c.then?c.then(i):i())}catch(e){return Promise.reject(e)}}}},r.touchSession=function(e,t,r){void 0===r&&(r=!1);try{var n=this;return Promise.resolve(n.listSessions(e)).then(function(i){var o=X(t),s=i.findIndex(function(e){return X(e)===o});s>=0&&i.splice(s,1),!1===r&&i.unshift(t);var a=n.sessionKey(e,"list");return Promise.resolve(n.storage.write(a,JSON.stringify(i))).then(function(){})})}catch(e){return Promise.reject(e)}},r.storeSession=function(e,t){try{var r=this,n=r.sessionKey(e,X(t.auth)),i=JSON.stringify(t.serialize());return Promise.resolve(r.storage.write(n,i)).then(function(){return Promise.resolve(r.touchSession(e,t.auth)).then(function(){})})}catch(e){return Promise.reject(e)}},r.sessionKey=function(e,t){return[this.chainId.toString(),c.from(e).toString(),t].join("-")},t}();function X(e){var t=s.from(e);return(t.actor.equals(m)?"<any>":String(t.actor))+"@"+(t.permission.equals(m)||t.permission.equals(v)?"<any>":String(t.permission))}export default G;export{R as CancelError,K as IdentityError,G as Link,C as LinkChannelSession,A as LinkFallbackSession,x as LinkOptions,L as LinkSession,I as SessionError};
function N(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s}!function(e){e.defaults={chainId:"aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906",client:"https://eos.greymass.com",service:"https://cb.anchor.link"}}(x||(x={}));var T=function(e){function t(){return e.apply(this,arguments)||this}return S(t,e),t}(t);N([t.field("public_key")],T.prototype,"from",void 0),N([t.field("uint64")],T.prototype,"nonce",void 0),N([t.field("bytes")],T.prototype,"ciphertext",void 0),N([t.field("uint32")],T.prototype,"checksum",void 0),T=N([t.type("sealed_message")],T);var U=function(e){function t(){return e.apply(this,arguments)||this}return S(t,e),t}(t);N([t.field("name")],U.prototype,"session_name",void 0),N([t.field("public_key")],U.prototype,"request_key",void 0),U=N([t.type("link_create")],U);var D=function(e){function t(){return e.apply(this,arguments)||this}return S(t,e),t}(t);N([t.field("time_point_sec")],D.prototype,"expiration",void 0),D=N([t.type("link_info")],D);var F=g().fetch,L=function(){function e(){}return e.prototype.remove=function(){try{var e=this,t=function(){if(e.link.storage)return Promise.resolve(e.link.removeSession(e.identifier,e.auth)).then(function(){})}();return Promise.resolve(t&&t.then?t.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},e.restore=function(e,t){switch(t.type){case"channel":return new C(e,t.data,t.metadata);case"fallback":return new A(e,t.data,t.metadata);default:throw new Error("Unable to restore, session data invalid")}},e}(),C=function(e){function t(t,f,l){var h;(h=e.call(this)||this).type="channel",h.timeout=12e4,h.link=t,h.auth=s.from(f.auth),h.publicKey=a.from(f.publicKey),h.channel=f.channel,h.identifier=c.from(f.identifier);var p=u.from(f.requestKey),d=a.from(f.channel.key);return h.encrypt=function(e){return function(e,t,s,a){var c=t.sharedSecret(s);a||(a=r.random());var u=n.encode({object:a}).appending(c.array).sha512Digest,f=new b(u.array.slice(0,32),u.array.slice(32,48)),l=i.from(f.encrypt(i.from(e,"utf8").array)),h=new DataView(o.hash(u.array).array.buffer).getUint32(0,!0);return T.from({from:t.toPublic(),nonce:a,ciphertext:l,checksum:h})}(e.encode(!0,!1),p,d)},h.metadata=P({},l||{},{timeout:h.timeout,name:h.channel.name}),h.serialize=function(){return{type:"channel",data:f,metadata:h.metadata}},h}S(t,e);var f=t.prototype;return f.onSuccess=function(e,t){this.link.transport.onSuccess&&this.link.transport.onSuccess(e,t)},f.onFailure=function(e,t){this.link.transport.onFailure&&this.link.transport.onFailure(e,t)},f.onRequest=function(e,t){var r=D.from({expiration:new Date(Date.now()+this.timeout).toISOString().slice(0,-1)});this.link.transport.onSessionRequest&&this.link.transport.onSessionRequest(this,e,t),setTimeout(function(){t(new I("Wallet did not respond in time","E_TIMEOUT"))},this.timeout+500),e.setInfoKey("link",r),F(this.channel.url,{method:"POST",headers:{"X-Buoy-Wait":(this.timeout/1e3).toFixed(0)},body:n.encode({object:this.encrypt(e)}).array}).then(function(e){200!==e.status&&t(new I("Unable to push message","E_DELIVERY"))}).catch(function(e){t(new I("Unable to reach link service ("+(e.message||String(e))+")","E_DELIVERY"))})},f.prepare=function(e){return this.link.transport.prepare?this.link.transport.prepare(e,this):Promise.resolve(e)},f.showLoading=function(){if(this.link.transport.showLoading)return this.link.transport.showLoading()},f.makeSignatureProvider=function(){return this.link.makeSignatureProvider([this.publicKey.toString()],this)},f.transact=function(e,t){return this.link.transact(e,t,this)},t}(L),A=function(e){function t(t,r,n){var i;return(i=e.call(this)||this).type="fallback",i.link=t,i.auth=s.from(r.auth),i.publicKey=a.from(r.publicKey),i.metadata=n||{},i.identifier=c.from(r.identifier),i.serialize=function(){return{type:i.type,data:r,metadata:i.metadata}},i}S(t,e);var r=t.prototype;return r.onSuccess=function(e,t){this.link.transport.onSuccess&&this.link.transport.onSuccess(e,t)},r.onFailure=function(e,t){this.link.transport.onFailure&&this.link.transport.onFailure(e,t)},r.onRequest=function(e,t){this.link.transport.onSessionRequest?this.link.transport.onSessionRequest(this,e,t):this.link.transport.onRequest(e,t)},r.prepare=function(e){return this.link.transport.prepare?this.link.transport.prepare(e,this):Promise.resolve(e)},r.showLoading=function(){if(this.link.transport.showLoading)return this.link.transport.showLoading()},r.makeSignatureProvider=function(){return this.link.makeSignatureProvider([this.publicKey.toString()],this)},r.transact=function(e,t){return this.link.transact(e,t,this)},t}(L),J=function(){function e(e){this.address=e.trim().replace(/\/$/,"")}return e.prototype.create=function(){var e=this.address+"/"+w();return new M(e)},e}(),M=function(){function e(e){this.url=e,this.ctx={}}var t=e.prototype;return t.wait=function(){return e=this.url,t=this.ctx,new Promise(function(r,n){var i=!0,o=0,s=e.replace(/^http/,"ws"),a=function(e){try{r(JSON.parse(e))}catch(e){e.message="Unable to parse callback JSON: "+e.message,n(e)}};!function e(){var r=new k(s);t.cancel=function(){i=!1,r.readyState!==k.OPEN&&r.readyState!==k.CONNECTING||r.close()},r.onmessage=function(e){if(i=!1,r.readyState===k.OPEN&&r.close(),"undefined"!=typeof Blob&&e.data instanceof Blob){var t=new FileReader;t.onload=function(){a(t.result)},t.onerror=function(e){n(e)},t.readAsText(e.data)}else a("string"==typeof e.data?e.data:e.data.toString())},r.onopen=function(){o=0},r.onclose=function(){var t;i&&setTimeout(e,(t=o++,Math.min(Math.pow(10*t,2),1e4)))}}()});var e,t},t.cancel=function(){this.ctx.cancel&&this.ctx.cancel()},e}();function z(e,t){try{var r=e()}catch(e){return t(e)}return r&&r.then?r.then(void 0,t):r}var B="undefined"!=typeof Symbol?Symbol.iterator||(Symbol.iterator=Symbol("Symbol.iterator")):"@@iterator";function V(e,t,r){if(!e.s){if(r instanceof W){if(!r.s)return void(r.o=V.bind(null,e,t));1&t&&(t=r.s),r=r.v}if(r&&r.then)return void r.then(V.bind(null,e,t),V.bind(null,e,2));e.s=t,e.v=r;var n=e.o;n&&n(e)}}var W=function(){function e(){}return e.prototype.then=function(t,r){var n=new e,i=this.s;if(i){var o=1&i?t:r;if(o){try{V(n,1,o(this.v))}catch(e){V(n,2,e)}return n}return this}return this.o=function(e){try{var i=e.v;1&e.s?V(n,1,t?t(i):i):r?V(n,1,r(i)):V(n,2,i)}catch(e){V(n,2,e)}},n},e}();function Y(e){return e instanceof W&&1&e.s}var G=function(){function t(t){if(this.abiCache=new Map,this.pendingAbis=new Map,"object"!=typeof t)throw new TypeError("Missing options object");if(!t.transport)throw new TypeError("options.transport is required, see https://github.com/greymass/anchor-link#transports");this.client=void 0===t.client||"string"==typeof t.client?new h({url:t.client||x.defaults.client}):t.client,this.chainId=y.from(t.chainId||x.defaults.chainId),this.callbackService=void 0===t.service||"string"==typeof t.service?new J(t.service||x.defaults.service):t.service,this.transport=t.transport,null!==t.storage&&(this.storage=t.storage||this.transport.storage),this.requestOptions={abiProvider:this,zlib:e}}var r=t.prototype;return r.getAbi=function(e){try{var t=this,r=e.toString(),n=t.abiCache.get(r),i=function(){if(!n){var i=t.pendingAbis.get(r);return i||(i=t.client.v1.chain.get_abi(e),t.pendingAbis.set(r,i)),Promise.resolve(i).then(function(e){n=e.abi,t.pendingAbis.delete(r),n&&t.abiCache.set(r,n)})}}();return Promise.resolve(i&&i.then?i.then(function(){return n}):n)}catch(e){return Promise.reject(e)}},r.createRequest=function(e,t){try{var r=this,n=t||r.transport;return Promise.resolve(p.create(P({},e,{chainId:r.chainId.toString(),broadcast:!1}),r.requestOptions)).then(function(e){function t(){var t=r.callbackService.create();return e.setCallback(t.url,!0),{request:e,callback:t}}var i=function(){if(n.prepare)return Promise.resolve(n.prepare(e)).then(function(t){e=t})}();return i&&i.then?i.then(t):t()})}catch(e){return Promise.reject(e)}},r.sendRequest=function(e,t,r,n){void 0===n&&(n=!1);try{var i=this,o=r||i.transport;return Promise.resolve(z(function(){if(e.data.callback!==t.url)throw new Error("Invalid request callback");if(!0===e.data.flags.broadcast||!1===e.data.flags.background)throw new Error("Invalid request flags");var r=new Promise(function(r,n){o.onRequest(e,function(e){t.cancel(),n("string"==typeof e?new R(e):e)})});return Promise.resolve(Promise.race([t.wait(),r])).then(function(t){var r=s.from({actor:t.sa,permission:t.sp}),a=Object.keys(t).filter(function(e){return e.startsWith("sig")&&"sig0"!==e}).map(function(e){return f.from(t[e])});return Promise.resolve(d.fromPayload(t,i.requestOptions)).then(function(s){function c(){return o.onSuccess&&o.onSuccess(e,h),h}var u=s.request.getInfoKey("fuel_sig","string");u&&a.unshift(f.from(u));var h={request:s.request,transaction:s.transaction,resolvedTransaction:s.resolvedTransaction,signatures:a,payload:t,signer:r},p=function(){if(n){var e=l.from(P({},s.transaction,{signatures:a}));return Promise.resolve(i.client.v1.chain.push_transaction(e)).then(function(e){h.processed=e.processed})}}();return p&&p.then?p.then(c):c()})})},function(t){throw o.onFailure&&o.onFailure(e,t),t}))}catch(e){return Promise.reject(e)}},r.transact=function(e,t,r){try{var n=this,i=r||n.transport,o=!t||!1!==t.broadcast;return i&&i.showLoading&&i.showLoading(),e.actions&&(e.expiration||e.ref_block_num||e.ref_block_prefix||e.max_net_usage_words||e.max_cpu_usage_ms||e.delay_sec)&&(e={transaction:P({expiration:"1970-01-01T00:00:00",ref_block_num:0,ref_block_prefix:0,max_net_usage_words:0,max_cpu_usage_ms:0,delay_sec:0},e)}),Promise.resolve(n.createRequest(e,i)).then(function(e){return Promise.resolve(n.sendRequest(e.request,e.callback,i,o))})}catch(e){return Promise.reject(e)}},r.identify=function(e){try{var t=this;return Promise.resolve(t.createRequest({identity:{permission:e.requestPermission,scope:e.scope},info:e.info})).then(function(r){var n=r.request;return Promise.resolve(t.sendRequest(n,r.callback)).then(function(r){if(!r.request.isIdentity())throw new K("Unexpected response");var i=r.transaction.signingDigest(n.getChainId()),o=r.signatures[0].recoverDigest(i),a=r.signer;return Promise.resolve(t.client.v1.chain.get_account(a.actor)).then(function(t){if(!t)throw new K("Signature from unknown account: "+a.actor);var n=t.permissions.find(function(e){return a.permission.equals(e.perm_name)});if(!n)throw new K(a.actor+" signed for unknown permission: "+a.permission);var i=n.required_auth,c=i.keys.find(function(e){return o.equals(e.key)});if(!c)throw new K(X(a)+" has no key matching id signature ("+o+")");if(i.threshold>c.weight)throw new K(X(a)+" signature does not reach auth threshold");if(e.requestPermission){var u=s.from(e.requestPermission);if(!u.actor.equals(m)&&!u.actor.equals(a.actor)||!u.permission.equals(v)&&!u.permission.equals(a.permission))throw new K("Unexpected identity proof from "+X(a)+", expected "+X(u)+" ")}return P({},r,{account:t,signerKey:o})})})})}catch(e){return Promise.reject(e)}},r.login=function(e){try{var t=this,r=u.generate("K1"),n=r.toPublic(),i=U.from({session_name:e,request_key:n});return Promise.resolve(t.identify({scope:e,info:{link:i,scope:e}})).then(function(n){function i(){return P({},n,{session:o})}var o,s={sameDevice:void 0!==n.request.getRawInfo().return_path};o=n.payload.link_ch&&n.payload.link_key&&n.payload.link_name?new C(t,{identifier:e,auth:n.signer,publicKey:n.signerKey,channel:{url:n.payload.link_ch,key:n.payload.link_key,name:n.payload.link_name},requestKey:r},s):new A(t,{identifier:e,auth:n.signer,publicKey:n.signerKey},s);var a=function(){if(t.storage)return Promise.resolve(t.storeSession(e,o)).then(function(){})}();return a&&a.then?a.then(i):i()})}catch(e){return Promise.reject(e)}},r.restoreSession=function(e,t){try{var r,n,i=function(i){return r?i:Promise.resolve(o.storage.read(n)).then(function(r){if(!r)return null;var n;try{n=JSON.parse(r)}catch(e){throw new Error("Unable to restore session: Stored JSON invalid ("+(e.message||String(e))+")")}var i=L.restore(o,n),s=function(){if(t)return Promise.resolve(o.touchSession(e,t)).then(function(){})}();return s&&s.then?s.then(function(){return i}):i})},o=this;if(!o.storage)throw new Error("Unable to restore session: No storage adapter configured");var s=function(){if(!t)return Promise.resolve(o.listSessions(e)).then(function(t){var i=t[0];if(!i)return r=1,null;n=o.sessionKey(e,X(i))});n=o.sessionKey(e,X(t))}();return Promise.resolve(s&&s.then?s.then(i):i(s))}catch(e){return Promise.reject(e)}},r.listSessions=function(e){try{var t=this;if(!t.storage)throw new Error("Unable to list sessions: No storage adapter configured");var r,n=t.sessionKey(e,"list"),i=z(function(){return Promise.resolve(t.storage.read(n)).then(function(e){r=JSON.parse(e||"[]")})},function(e){throw new Error("Unable to list sessions: Stored JSON invalid ("+(e.message||String(e))+")")});return Promise.resolve(i&&i.then?i.then(function(e){return r}):r)}catch(e){return Promise.reject(e)}},r.removeSession=function(e,t){try{var r=this;if(!r.storage)throw new Error("Unable to remove session: No storage adapter configured");var n=r.sessionKey(e,X(t));return Promise.resolve(r.storage.remove(n)).then(function(){return Promise.resolve(r.touchSession(e,t,!0)).then(function(){})})}catch(e){return Promise.reject(e)}},r.clearSessions=function(e){try{var t=this;if(!t.storage)throw new Error("Unable to clear sessions: No storage adapter configured");return Promise.resolve(t.listSessions(e)).then(function(r){var n=function(e,t,r){if("function"==typeof e[B]){var n,i,o,s=e[B]();if(function e(r){try{for(;!(n=s.next()).done;)if((r=t(n.value))&&r.then){if(!Y(r))return void r.then(e,o||(o=V.bind(null,i=new W,2)));r=r.v}i?V(i,1,r):i=r}catch(e){V(i||(i=new W),2,e)}}(),s.return){var a=function(e){try{n.done||s.return()}catch(e){}return e};if(i&&i.then)return i.then(a,function(e){throw a(e)});a()}return i}if(!("length"in e))throw new TypeError("Object is not iterable");for(var c=[],u=0;u<e.length;u++)c.push(e[u]);return function(e,t,r){var n,i,o=-1;return function r(s){try{for(;++o<e.length;)if((s=t(o))&&s.then){if(!Y(s))return void s.then(r,i||(i=V.bind(null,n=new W,2)));s=s.v}n?V(n,1,s):n=s}catch(e){V(n||(n=new W),2,e)}}(),n}(c,function(e){return t(c[e])})}(r,function(r){return Promise.resolve(t.removeSession(e,r)).then(function(){})});if(n&&n.then)return n.then(function(){})})}catch(e){return Promise.reject(e)}},r.makeSignatureProvider=function(e,t){var r=this;return{getAvailableKeys:function(){return Promise.resolve(e)},sign:function(e){try{var i=function(){return Promise.resolve(r.sendRequest(s,a,o)).then(function(t){var r=t.signatures,i=n.encode({object:t.transaction});return P({},e,{serializedTransaction:i,signatures:r})})},o=t||r.transport,s=p.fromTransaction(e.chainId,e.serializedTransaction,r.requestOptions),a=r.callbackService.create();s.setCallback(a.url,!0),s.setBroadcast(!1);var c=function(){if(o.prepare)return Promise.resolve(o.prepare(s)).then(function(e){s=e})}();return Promise.resolve(c&&c.then?c.then(i):i())}catch(e){return Promise.reject(e)}}}},r.touchSession=function(e,t,r){void 0===r&&(r=!1);try{var n=this;return Promise.resolve(n.listSessions(e)).then(function(i){var o=X(t),s=i.findIndex(function(e){return X(e)===o});s>=0&&i.splice(s,1),!1===r&&i.unshift(t);var a=n.sessionKey(e,"list");return Promise.resolve(n.storage.write(a,JSON.stringify(i))).then(function(){})})}catch(e){return Promise.reject(e)}},r.storeSession=function(e,t){try{var r=this,n=r.sessionKey(e,X(t.auth)),i=JSON.stringify(t.serialize());return Promise.resolve(r.storage.write(n,i)).then(function(){return Promise.resolve(r.touchSession(e,t.auth)).then(function(){})})}catch(e){return Promise.reject(e)}},r.sessionKey=function(e,t){return[this.chainId.toString(),c.from(e).toString(),t].join("-")},t}();function X(e){var t=s.from(e);return(t.actor.equals(m)?"<any>":String(t.actor))+"@"+(t.permission.equals(m)||t.permission.equals(v)?"<any>":String(t.permission))}export default G;export{R as CancelError,K as IdentityError,G as Link,C as LinkChannelSession,A as LinkFallbackSession,x as LinkOptions,L as LinkSession,I as SessionError};
//# sourceMappingURL=index.m.js.map
{
"name": "anchor-link",
"version": "3.0.0-beta3",
"version": "3.0.0-beta4",
"description": "Library for authenticating and signing transactions using the Anchor Link protocol",

@@ -36,3 +36,3 @@ "license": "MIT",

"asmcrypto.js": "^2.3.2",
"eosio-signing-request": "next",
"eosio-signing-request": "^2.0.0-beta4",
"fetch-ponyfill": "^6.1.0",

@@ -39,0 +39,0 @@ "isomorphic-ws": "^4.0.1",

@@ -364,3 +364,3 @@ import zlib from 'pako'

const account = await this.client.v1.chain.get_account(signer.actor.toString()) // TODO: get_account should accept NameType
const account = await this.client.v1.chain.get_account(signer.actor)
if (!account) {

@@ -380,3 +380,5 @@ throw new IdentityError(`Signature from unknown account: ${signer.actor}`)

if (!keyAuth) {
throw new IdentityError(`${formatAuth(signer)} has no key matching id signature`)
throw new IdentityError(
`${formatAuth(signer)} has no key matching id signature (${signerKey})`
)
}

@@ -383,0 +385,0 @@ if (auth.threshold > keyAuth.weight) {

Sorry, the diff of this file is too big to display

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

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc