@wowok/wowok 2.3.15 → 2.3.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/{Transaction-B_HAG_T7.mjs → Transaction-CzqJDezj.mjs} +1 -1
- package/dist/esm/{arb-Cs1RQFrB.mjs → arb-CCG4h3Tt.mjs} +1 -1
- package/dist/esm/{base-DNb4ZGE-.mjs → base-CDujg0CW.mjs} +1 -1
- package/dist/esm/bcs/index.mjs +1 -1
- package/dist/esm/{bcs-DDXHXJXy.mjs → bcs-BrmSFFhn.mjs} +1 -1
- package/dist/esm/call-CjiutK7n.mjs +1 -0
- package/dist/esm/client/index.d.mts +2 -2
- package/dist/esm/client/index.mjs +1 -1
- package/dist/esm/{client-BQ4xeDS9.mjs → client-rikC538P.mjs} +1 -1
- package/dist/esm/{common-CQggZ8z4.mjs → common-D8TcHVCJ.mjs} +1 -1
- package/dist/esm/{config-Bdlw4pMJ.d.mts → config-CPqpYYLT.d.mts} +6 -1
- package/dist/esm/cryptography/index.d.mts +1 -1
- package/dist/esm/cryptography/index.mjs +1 -1
- package/dist/esm/{ed25519-BrJWQ45w.mjs → ed25519-LQZKHVDN.mjs} +1 -1
- package/dist/esm/{evm-account-DMl7wn2f.d.mts → evm-account-D-9b2P5o.d.mts} +11 -2
- package/dist/esm/exception-CkI_xPvd.mjs +1 -0
- package/dist/esm/{falcon512-B4y-EH2f.mjs → falcon512-Be5BlPLD.mjs} +1 -1
- package/dist/esm/graphql/index.d.mts +1 -1
- package/dist/esm/graphql/index.mjs +1 -1
- package/dist/esm/{graphql-DO9FSljL.mjs → graphql-DS8RUdlp.mjs} +1 -1
- package/dist/esm/grpc/index.d.mts +1 -1
- package/dist/esm/grpc/index.mjs +1 -1
- package/dist/esm/{grpc-CtkzBzxW.mjs → grpc-BcOvQ6pC.mjs} +1 -1
- package/dist/esm/{index-BYeMK_wO.d.mts → index-C8LSh5DK.d.mts} +1 -1
- package/dist/esm/{index-C7hBsiex.d.mts → index-fGNIZdBz.d.mts} +239 -20
- package/dist/esm/index.d.mts +9 -9
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/jsonRpc/index.d.mts +1 -1
- package/dist/esm/jsonRpc/index.mjs +1 -1
- package/dist/esm/{keypair-1v1DkI3F.mjs → keypair-BqNhxtoP.mjs} +1 -1
- package/dist/esm/keypairs/ed25519/index.d.mts +1 -1
- package/dist/esm/keypairs/ed25519/index.mjs +1 -1
- package/dist/esm/keypairs/falcon512/index.d.mts +1 -1
- package/dist/esm/keypairs/falcon512/index.mjs +1 -1
- package/dist/esm/keypairs/passkey/index.d.mts +1 -1
- package/dist/esm/keypairs/passkey/index.mjs +1 -1
- package/dist/esm/keypairs/secp256k1/index.d.mts +1 -1
- package/dist/esm/keypairs/secp256k1/index.mjs +1 -1
- package/dist/esm/keypairs/secp256r1/index.d.mts +1 -1
- package/dist/esm/keypairs/secp256r1/index.mjs +1 -1
- package/dist/esm/{local-CtSmnSPu.d.mts → local-CnxBimye.d.mts} +12 -3
- package/dist/esm/logger-Cs5Mf7Mf.mjs +1 -0
- package/dist/esm/messenger-Bj7TtF3B.mjs +1 -0
- package/dist/esm/messenger-api-DhHcvqz2.mjs +1 -0
- package/dist/esm/multisig/index.d.mts +1 -1
- package/dist/esm/multisig/index.mjs +1 -1
- package/dist/esm/network-CeDd07Hg.mjs +1 -1
- package/dist/esm/{networks-DjNV6z1E.d.mts → networks-Cab2UR8C.d.mts} +5 -0
- package/dist/esm/{object-HkVaWf0g.mjs → object-B-eGy8U5.mjs} +1 -1
- package/dist/esm/{passkey-D0XCtEYg.mjs → passkey-CS2Qexll.mjs} +1 -1
- package/dist/esm/{proof-fUaUX3Lq.mjs → proof-Ck9Bu-Jx.mjs} +1 -1
- package/dist/esm/{publickey-qLbcTInT.mjs → publickey-5xoCmE9g.mjs} +1 -1
- package/dist/esm/{publickey-CltJ4l8n.mjs → publickey-BzPz9Uwr.mjs} +1 -1
- package/dist/esm/{publickey-BPT9QiGv.mjs → publickey-C9TocS69.mjs} +1 -1
- package/dist/esm/{publickey-C6fyN2VZ.mjs → publickey-CQWQyM6S.mjs} +1 -1
- package/dist/esm/{publickey-Bkjn-YAu.mjs → publickey-CvCDfw_N.mjs} +1 -1
- package/dist/esm/{publickey-zB4h0HOi.mjs → publickey-DhiTZPiB.mjs} +1 -1
- package/dist/esm/{query-D8GdqXf4.mjs → query-DIsbjIQ7.mjs} +1 -1
- package/dist/esm/{received-BoWuifKq.mjs → received-CrZF7nTR.mjs} +1 -1
- package/dist/esm/{secp256k1-B-8mI0dI.mjs → secp256k1-DhrvBMbI.mjs} +1 -1
- package/dist/esm/{secp256r1-B3O6jSlP.mjs → secp256r1-BCaQWLGZ.mjs} +1 -1
- package/dist/esm/{secure-storage-Dkh4Oioi.d.mts → secure-storage-D4X3f-9t.d.mts} +29 -6
- package/dist/esm/{service-BHYLhpzY.mjs → service-Fh_GX6lR.mjs} +1 -1
- package/dist/esm/{storage-0OmomSuj.d.mts → storage-D6ZEdlgz.d.mts} +4 -0
- package/dist/esm/storage-UnD4qWaK.mjs +1 -0
- package/dist/esm/transactions/index.d.mts +1 -1
- package/dist/esm/transactions/index.mjs +1 -1
- package/dist/esm/{transactions-rYyItYOR.mjs → transactions-CkMcWBKS.mjs} +1 -1
- package/dist/esm/util-D-TSMMSN.mjs +1 -0
- package/dist/esm/utils/index.d.mts +1 -1
- package/dist/esm/utils/index.mjs +1 -1
- package/dist/esm/{utils-IlS3fpdQ.mjs → utils-npJYSbqk.mjs} +1 -1
- package/dist/esm/verify/index.d.mts +1 -1
- package/dist/esm/verify/index.mjs +1 -1
- package/dist/esm/w/call/allocation.d.mts +1 -1
- package/dist/esm/w/call/allocation.mjs +1 -1
- package/dist/esm/w/call/arbitration.d.mts +1 -1
- package/dist/esm/w/call/arbitration.mjs +1 -1
- package/dist/esm/w/call/base.d.mts +1 -1
- package/dist/esm/w/call/base.mjs +1 -1
- package/dist/esm/w/call/demand.d.mts +1 -1
- package/dist/esm/w/call/demand.mjs +1 -1
- package/dist/esm/w/call/guard.d.mts +1 -1
- package/dist/esm/w/call/guard.mjs +1 -1
- package/dist/esm/w/call/index.d.mts +2 -2
- package/dist/esm/w/call/index.mjs +1 -1
- package/dist/esm/w/call/machine.d.mts +1 -1
- package/dist/esm/w/call/machine.mjs +1 -1
- package/dist/esm/w/call/passport.d.mts +1 -1
- package/dist/esm/w/call/passport.mjs +1 -1
- package/dist/esm/w/call/payment.d.mts +1 -1
- package/dist/esm/w/call/payment.mjs +1 -1
- package/dist/esm/w/call/permission.d.mts +1 -1
- package/dist/esm/w/call/permission.mjs +1 -1
- package/dist/esm/w/call/progress.d.mts +1 -1
- package/dist/esm/w/call/progress.mjs +1 -1
- package/dist/esm/w/call/repository.d.mts +1 -1
- package/dist/esm/w/call/repository.mjs +1 -1
- package/dist/esm/w/call/reward.d.mts +2 -2
- package/dist/esm/w/call/reward.mjs +1 -1
- package/dist/esm/w/call/service.d.mts +1 -1
- package/dist/esm/w/call/service.mjs +1 -1
- package/dist/esm/w/call/treasury.d.mts +1 -1
- package/dist/esm/w/call/treasury.mjs +1 -1
- package/dist/esm/w/common.d.mts +1 -1
- package/dist/esm/w/common.mjs +1 -1
- package/dist/esm/w/index.d.mts +8 -8
- package/dist/esm/w/index.mjs +1 -1
- package/dist/esm/w/local/account.d.mts +2 -2
- package/dist/esm/w/local/account.mjs +1 -1
- package/dist/esm/w/local/cache.mjs +1 -1
- package/dist/esm/w/local/config.d.mts +1 -1
- package/dist/esm/w/local/config.mjs +1 -1
- package/dist/esm/w/local/evm/networks.d.mts +1 -1
- package/dist/esm/w/local/evm/networks.mjs +1 -1
- package/dist/esm/w/local/evm-account.d.mts +1 -1
- package/dist/esm/w/local/evm-account.mjs +1 -1
- package/dist/esm/w/local/index.d.mts +7 -7
- package/dist/esm/w/local/index.mjs +1 -1
- package/dist/esm/w/local/local.d.mts +1 -1
- package/dist/esm/w/local/local.mjs +1 -1
- package/dist/esm/w/local/secure-storage.d.mts +1 -1
- package/dist/esm/w/local/secure-storage.mjs +1 -1
- package/dist/esm/w/local/storage.d.mts +1 -1
- package/dist/esm/w/local/storage.mjs +1 -1
- package/dist/esm/w/local/token.d.mts +1 -1
- package/dist/esm/w/local/token.mjs +1 -1
- package/dist/esm/w/local/util.mjs +1 -1
- package/dist/esm/w/local/wip.mjs +1 -1
- package/dist/esm/w/messenger/index.d.mts +1 -1
- package/dist/esm/w/messenger/index.mjs +1 -1
- package/dist/esm/w/messenger/messenger-api.d.mts +1 -1
- package/dist/esm/w/messenger/messenger-api.mjs +1 -1
- package/dist/esm/w/messenger/messenger.d.mts +1 -1
- package/dist/esm/w/messenger/messenger.mjs +1 -1
- package/dist/esm/w/messenger/pq/crypto.mjs +1 -1
- package/dist/esm/w/messenger/storage.d.mts +1 -1
- package/dist/esm/w/messenger/storage.mjs +1 -1
- package/dist/esm/w/messenger/types.d.mts +1 -1
- package/dist/esm/w/query/index.d.mts +1 -1
- package/dist/esm/w/query/index.mjs +1 -1
- package/dist/esm/w/query/object.d.mts +1 -1
- package/dist/esm/w/query/object.mjs +1 -1
- package/dist/esm/w-D7BssNyx.mjs +1 -0
- package/package.json +1 -1
- package/dist/esm/call-7-ua3nJj.mjs +0 -1
- package/dist/esm/exception--UEPnygY.mjs +0 -1
- package/dist/esm/messenger-api-BljlMqMC.mjs +0 -1
- package/dist/esm/messenger-uSvD3cWJ.mjs +0 -1
- package/dist/esm/util-CMtnxhJ-.mjs +0 -1
- package/dist/esm/w-C77c6iBV.mjs +0 -1
- /package/dist/esm/{sui-types-CuBKFvrd.mjs → wow-types-DcqbnAaK.mjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as a74a}from'../../sui-types-CuBKFvrd.mjs';import{t as a74b}from'../../client-BQ4xeDS9.mjs';import{t as a74c}from'../../Transaction-B_HAG_T7.mjs';import{n as a74d}from'../../network-CeDd07Hg.mjs';import{c as a74e}from'../../keypair-1v1DkI3F.mjs';import{n as a74f,r as a74g}from'../../faucet-RNvBvVJf.mjs';import{n as a74h}from'../../falcon512-B4y-EH2f.mjs';import{L as a74i,U as a74j}from'../../common-CQggZ8z4.mjs';import{o as a74k}from'../../exception--UEPnygY.mjs';import{SQLiteAccountStorage}from'./storage.mjs';import{Config}from'./config.mjs';import{SecureAccountStorage}from'./secure-storage.mjs';import{sha256}from'@noble/hashes/sha2.js';import{x25519}from'@noble/curves/ed25519.js';import{hkdf}from'@noble/hashes/hkdf.js';const DEFAULT_ACCOUNT_NAME='',MAX_MESSENGER_ACCOUNTS=0x3e8;var AsyncLock=class{constructor(){this['_locked']=![],this['_queue']=[];}async['acquire'](){if(!this['_locked']){this['_locked']=!![];return;}return new Promise(a=>{this['_queue']['push'](a);});}['release'](){if(this['_queue']['length']>0x0)this['_queue']['shift']()();else this['_locked']=![];}async['run'](a){await this['acquire']();try{return await a();}finally{this['release']();}}},Account=class Account{constructor(){this['balance']=async(b,c,d)=>{const e=await this['get'](c);b=b??'0x2::wow::WOW';if(e){const f=await Config['Instance']()['network_get'](d);return new a74b({'url':a74d(f),'network':f})['getBalance']({'owner':e['address'],'coinType':b});}},this['coin']=async(b,c,d,e,f)=>{const g=await this['get'](e);b=b??'0x2::wow::WOW';if(g){const h=await Config['Instance']()['network_get'](f);return new a74b({'url':a74d(h),'network':h})['getCoins']({'owner':g['address'],'coinType':b,'cursor':c,'limit':d});}},this['get_coin_object']=async(c,d,e,f,g)=>{const h=await this['get'](f);if(h){const j=BigInt(d),k=await Config['Instance']()['network_get'](g),l=new a74b({'url':a74d(k),'network':k});if(j>=BigInt(0x0)){if(!e||a74i(e))return c['splitCoins'](c['gas'],[j]);else{const m=await l['getCoins']({'owner':h['address'],'coinType':e}),n=[],o=new Set();let p=BigInt(0x0);for(let q=0x0;q<m['data']['length'];++q){const s=m['data'][q]['coinObjectId'];if(o['has'](s))continue;o['add'](s),p+=BigInt(m['data'][q]['balance']),n['push'](s);if(p>=j)break;}if(n['length']===0x0)return;if(n['length']===0x1)return c['splitCoins'](n[0x0],[j]);else{const t=n['pop']();return c['mergeCoins'](t,n),c['splitCoins'](t,[j]);}}}}},this['get_many_coin_object']=async(a,b,c,d,e)=>{const f=[];for(const g of b){const h=await this['get_coin_object'](a,g,d,c,e);if(!h)a74k('invalid\x20parameter','Invalid\x20coin\x20object:\x20'+g);else f['push'](h);}return a['makeMoveVec']({'elements':f});},this['coinObject_with_balance']=async(b,c,d,e)=>{const f=await this['get_imp'](d);if(!f)return void 0x0;const g=a74h['fromSecretKey'](f['secret']);if(!g)return void 0x0;const h=new a74c(),i=await this['get_coin_object'](h,b,c,d,e);if(i){h['transferObjects']([i],f['address']);const j=await Config['Instance']()['network_get'](e),k=await new a74b({'url':a74d(j),'network':j})['signAndExecuteTransaction']({'transaction':h,'signer':g,'options':{'showObjectChanges':!![]}}),l=c??'0x2::wow::WOW';return(k?.['objectChanges']?.['find'](m=>m?.['type']==='created'&&(m?.['objectType'])['includes'](l)))?.['objectId'];}};}static{this['_lock']=new AsyncLock();}['setStorage'](a){Account['storage']=a;}['setEncryptedStorage'](a){Account['storage']=new SecureAccountStorage(a);}async['getStorage'](){if(!Account['storage'])Account['storage']=new SecureAccountStorage(new SQLiteAccountStorage());return Account['storage'];}async['unlock'](a){const b=await this['getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');b['setSessionPassword'](a),await b['get']();}async['lock'](){const a=await this['getStorage']();if(a instanceof SecureAccountStorage)a['setSessionPassword'](void 0x0);}async['setEncryptionPassword'](a){const b=await this['getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await b['setPassword'](a);}async['changeEncryptionPassword'](a,b){const c=await this['getStorage']();if(!(c instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await c['changePassword'](a,b);}async['removeEncryptionPassword'](a){const b=await this['getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await b['removePassword'](a);}static['Instance'](){if(!Account['_instance'])Account['_instance']=new Account();return Account['_instance'];}['accountData'](a,b=![]){if(!a||!a['secret'])return void 0x0;if(b)a['pubkey']=a74h['fromSecretKey'](a['secret'])['getPublicKey']()['toWowPublicKey']();a['secret']=void 0x0;if(a['name']===void 0x0)a['name']='';return a;}static['nameMatch'](a,b){if(a==null)return![];return a['toLowerCase']()===b['toLowerCase']();}async['gen'](a,b,c,d=![]){return Account['_lock']['run'](async()=>{a=this['name_resolve'](a);if(a&&!a74j(a))a74k('invalid\x20name','Name\x20'+a+'\x20is\x20exceeds\x20max\x2064');if(c&&!a74j(c))a74k('invalid\x20name','Messenger\x20name\x20'+c+'\x20is\x20exceeds\x20max\x2064');const e=a74h['generate']()['getSecretKey'](),f=a74h['fromSecretKey'](e)['getPublicKey']()['toWowAddress'](),g=Date['now'](),h={'name':a,'address':f,'secret':e,'m':c||void 0x0,'createdAt':g,'updatedAt':g},i=await this['getStorage'](),j=await i['get'](),k=j?JSON['parse'](j):[],l=k['findIndex'](n=>Account['nameMatch'](n['name'],a));if(l!==-0x1){if(b)k[l]['name']=void 0x0;else a74k('account\x20name\x20exist','Name\x20'+(a||'')+'\x20already\x20exist');}if(c){const n=k['filter'](o=>o['m']!=null&&!o['suspended'])['length'];if(n>=0x3e8)a74k('invalid\x20parameter','Maximum\x20'+MAX_MESSENGER_ACCOUNTS+'\x20messenger\x20accounts\x20allowed,\x20current\x20count:\x20'+n);}return k['push'](h),await i['put'](JSON['stringify'](k)),this['accountData'](h,d);});}async['default'](a=![]){return this['accountData'](await this['get_imp'](''),a);}async['get'](a,b,c=![]){if(!b)return this['accountData'](await this['get_imp'](a),c);return this['gen'](a);}async['get_address'](a){if(a&&a74a(a))return a['toLowerCase']();return(await this['get_imp'](a))?.['address'];}async['get_many_address'](a){const b=await(await this['getStorage']())['get']();if(b){const c=JSON['parse'](b);return a['map'](d=>{if(d&&a74a(d))return d['toLowerCase']();const e=this['name_resolve'](d);return c['find'](f=>f['address']['toLowerCase']()===e['toLowerCase']()||Account['nameMatch'](f['name'],e))?.['address'];});}return a['map'](d=>d&&a74a(d)?d['toLowerCase']():void 0x0);}async['get_imp'](a){a=this['name_resolve'](a);const b=await(await this['getStorage']())['get']();if(b){const c=a['toLowerCase']();return JSON['parse'](b)['find'](e=>Account['nameMatch'](e['name'],a)||e['address']['toLowerCase']()===c);}}['name_resolve'](a){return a||'';}async['get_many'](a,b=![]){return this['get_many_imp'](a,b);}async['get_many_imp'](a,b=![]){const c=await(await this['getStorage']())['get']();if(c){const d=JSON['parse'](c);return a['map'](e=>{const f=this['name_resolve'](e),g=d['find'](h=>h['address']['toLowerCase']()===f['toLowerCase']()||Account['nameMatch'](h['name'],f));if(!g)return void 0x0;if(b){const h=a74h['fromSecretKey'](g['secret']),j={...g,'pubkey':h['getPublicKey']()['toWowPublicKey']()};return delete j['secret'],j;}return g;});}return a['map'](e=>void 0x0);}async['swap_name'](a,b){return Account['_lock']['run'](async()=>{a=this['name_resolve'](a),b=this['name_resolve'](b);if(this['name_resolve'](a)===this['name_resolve'](b))return!![];if(a&&!a74j(a))a74k('invalid\x20name','Name\x20'+(a||'')+'\x20is\x20exceeds\x20max\x2064');if(b&&!a74j(b))a74k('invalid\x20name','Name\x20'+(b||'')+'\x20is\x20exceeds\x20max\x2064');const c=await this['getStorage'](),d=await c['get']();if(!d)return![];const e=JSON['parse'](d),f=e['find'](i=>Account['nameMatch'](i['name'],a)),g=e['find'](i=>Account['nameMatch'](i['name'],b));if(!f||!g)return![];const h=Date['now']();return f['name']=b,f['updatedAt']=h,g['name']=a,g['updatedAt']=h,await c['put'](JSON['stringify'](e)),!![];});}async['rename'](a,b){return Account['_lock']['run'](async()=>{if(b&&!a74j(b))a74k('invalid\x20name','Invalid\x20new\x20name:\x20\x22'+(b||'')+'\x22.\x20Must\x20be\x20a\x20valid\x20name\x20(not\x20an\x20address)');const c=this['name_resolve'](a);if(c===b)return!![];const d=await this['getStorage'](),e=await d['get']();if(e){const g=JSON['parse'](e);if(g['find'](j=>Account['nameMatch'](j['name'],b)))a74k('invalid\x20name','New\x20name\x20\x22'+(b||'')+'\x22\x20already\x20exists');const h=g['find'](j=>Account['nameMatch'](j['name'],c)||j['address']['toLowerCase']()===c['toLowerCase']());if(!h)a74k('account\x20not\x20found','Source\x20account\x20\x22'+(a||'')+'\x22\x20not\x20found');const i=Date['now']();return h['name']=b,h['updatedAt']=i,await d['put'](JSON['stringify'](g)),!![];}return![];});}async['list'](a){const b=await(await this['getStorage']())['get']();if(b){let c=JSON['parse'](b);if(a?.['suspended']!==void 0x0)c=c['filter'](d=>a['suspended']?d['suspended']===!![]:!d['suspended']);else c=c['filter'](d=>!d['suspended']);if(a?.['hasMessenger']!==void 0x0)c=c['filter'](d=>a['hasMessenger']?d['m']!=null:d['m']==null);if(a?.['m']!=null)c=c['filter'](d=>d['m']!=null);if(a?.['createdAt']){if(a['createdAt']['gte']!==void 0x0)c=c['filter'](d=>d['createdAt']&&d['createdAt']>=a['createdAt']['gte']);if(a['createdAt']['lte']!==void 0x0)c=c['filter'](d=>d['createdAt']&&d['createdAt']<=a['createdAt']['lte']);}if(a?.['updatedAt']){if(a['updatedAt']['gte']!==void 0x0)c=c['filter'](d=>d['updatedAt']&&d['updatedAt']>=a['updatedAt']['gte']);if(a['updatedAt']['lte']!==void 0x0)c=c['filter'](d=>d['updatedAt']&&d['updatedAt']<=a['updatedAt']['lte']);}if(a?.['name']!=null||a?.['address']||a?.['m']!=null)c=c['map'](d=>{let e=0x0;if(a?.['name']!=null){const f=d['name']?.['toLowerCase']()||'',g=a['name']['toLowerCase']();if(f===g)e+=0x64;else{if(f['startsWith'](g))e+=0x32;else{if(f['includes'](g))e+=0x19;}}}if(a?.['address']){const h=d['address']['toLowerCase'](),i=a['address']['toLowerCase']();if(h===i)e+=0x64;else{if(h['startsWith'](i))e+=0x32;else{if(h['includes'](i))e+=0x19;}}}if(a?.['m']!=null&&d['m']!=null){const j=d['m']['toLowerCase'](),k=a['m']['toLowerCase']();if(j===k)e+=0x64;else{if(j['startsWith'](k))e+=0x32;else{if(j['includes'](k))e+=0x19;}}}if((a?.['name']||a?.['address']||a?.['m']!=null)&&e===0x0)e=-0x1;return{'account':d,'score':e};})['filter'](({score:d})=>d>=0x0)['sort']((d,e)=>e['score']-d['score'])['map'](({account:d})=>d);return c['map'](d=>this['accountData'](d,a?.['includePubkey']))['filter'](d=>d!==void 0x0);}return[];}async['suspend'](a){return Account['_lock']['run'](async()=>{a=this['name_resolve'](a);const b=await this['getStorage'](),c=await b['get']();if(c){const d=JSON['parse'](c),e=d['find'](g=>g['address']['toLowerCase']()===a['toLowerCase']()||Account['nameMatch'](g['name'],a));if(e){const g=Date['now']();return e['suspended']=!![],e['name']=void 0x0,e['m']=void 0x0,e['updatedAt']=g,await b['put'](JSON['stringify'](d)),!![];}}return![];});}async['suspend_many'](a){return Account['_lock']['run'](async()=>{const b=await this['getStorage'](),c=await b['get'](),d={'success':[],'failed':[]};if(c){const e=JSON['parse'](c),g=Date['now']();let h=![];for(const i of a){const j=this['name_resolve'](i),k=e['find'](l=>l['address']['toLowerCase']()===j['toLowerCase']()||Account['nameMatch'](l['name'],j));if(k)k['suspended']=!![],k['name']=void 0x0,k['m']=void 0x0,k['updatedAt']=g,d['success']['push'](i),h=!![];else d['failed']['push'](i);}if(h)await b['put'](JSON['stringify'](e));}else d['failed']=[...a];return d;});}async['resume'](a,b){return Account['_lock']['run'](async()=>{b=this['name_resolve'](b),a=a['toLowerCase']();if(b&&!a74j(b))a74k('invalid\x20name','Name\x20'+b+'\x20is\x20exceeds\x20max\x2064');const c=await this['getStorage'](),d=await c['get']();if(d){const e=JSON['parse'](d);if(e['find'](h=>Account['nameMatch'](h['name'],b)))a74k('invalid\x20name','Name\x20\x22'+(b||'')+'\x22\x20already\x20exists');const g=e['find'](h=>h['address']['toLowerCase']()===a['toLowerCase']());if(g){const h=Date['now']();return g['suspended']=![],g['name']=b,g['updatedAt']=h,await c['put'](JSON['stringify'](e)),!![];}}return![];});}async['faucet'](b,c){const d=await this['get_imp'](b);if(!d)throw new Error('Faucet\x20request\x20failed:\x20account\x20\x22'+(b??'<default>')+'\x22\x20not\x20found');return(await a74g({'host':a74f(c),'recipient':d['address']}))['coins_sent']||[];}async['sign_and_commit'](b,c,d){const e=await this['get_imp'](c);if(e){const f=a74h['fromSecretKey'](e['secret']);if(f){const g=await Config['Instance']()['network_get'](d);return new a74b({'url':a74d(g),'network':g})['signAndExecuteTransaction']({'transaction':b,'signer':f,'options':{'showObjectChanges':!![],'showEffects':!![],'showEvents':!![]}});}}}async['refund_coin'](a,b,c){const d=await this['get_address'](c);if(!d)a74k('invalid\x20parameter','Invalid\x20to\x20address\x20or\x20name\x20'+c);a['transferObjects']([b],a['pure']['address'](d));}async['transfer'](a,b,c,d,e){const [f,g]=await this['get_many_imp']([d,c]);if(!f)a74k('invalid\x20parameter','Invalid\x20from\x20address\x20or\x20name\x20'+d);const h=g?.['address']??c;if(!h)a74k('invalid\x20parameter','Invalid\x20to\x20address\x20or\x20name\x20'+c);const i=a74h['fromSecretKey'](f['secret']);if(i){const j=new a74c(),k=await this['get_coin_object'](j,a,b,d,e);if(k){j['transferObjects']([k],h);const l=await Config['Instance']()['network_get'](e);return new a74b({'url':a74d(l),'network':l})['signAndExecuteTransaction']({'transaction':j,'signer':i,'options':{'showObjectChanges':!![]}});}}}async['sign'](a,b){const c=await this['get_imp'](a);if(!c?.['secret'])a74k('invalid\x20parameter','Account\x20not\x20found\x20or\x20no\x20secret\x20key:\x20'+a);const d=a74h['fromSecretKey'](c['secret']),e=typeof b==='string'?new TextEncoder()['encode'](b):b,f=await d['sign'](e);return'0x'+Buffer['from'](f)['toString']('hex');}async['signData'](a,b){const c=await this['get_imp'](a);if(!c?.['secret'])a74k('invalid\x20parameter','Account\x20not\x20found\x20or\x20no\x20secret\x20key:\x20'+a);const d=a74h['fromSecretKey'](c['secret']),e=typeof b==='string'?new TextEncoder()['encode'](b):b,f=await d['sign'](e);return{'signature':'0x'+Buffer['from'](f)['toString']('hex'),'publicKey':d['getPublicKey']()['toWowPublicKey'](),'address':c['address']};}async['deriveX25519Identity'](a){const b=await this['get_imp'](a);if(!b?.['secret'])a74k('invalid\x20parameter','Account\x20not\x20found\x20or\x20no\x20secret\x20key:\x20'+a);const c=a74e(b['secret'])['secretKey'],d=a74h['fromSecretKey'](b['secret'])['getPublicKey']()['toRawBytes'](),e=new TextEncoder()['encode']('WowokX25519IdentityDerivation'),f=hkdf(sha256,sha256(c),new Uint8Array(0x0),e,0x20);f[0x0]&=0xf8,f[0x1f]&=0x7f,f[0x1f]|=0x40;const g=x25519['getPublicKey'](f),h=g[0x0]<<0x8|g[0x1];return{'x25519KeyPair':{'publicKey':g,'privateKey':f},'falcon512KeyPair':{'publicKey':d,'privateKey':c},'registrationId':h===0x0?0x1:h};}async['set_messenger'](a,b){return Account['_lock']['run'](async()=>{const c=this['name_resolve'](a),d=await this['getStorage'](),e=await d['get']();if(!e)return![];const g=JSON['parse'](e),h=g['find'](k=>k['address']['toLowerCase']()===c['toLowerCase']()||Account['nameMatch'](k['name'],c));if(!h)return![];if(!b){const k=Date['now']();return h['m']=void 0x0,h['updatedAt']=k,await d['put'](JSON['stringify'](g)),!![];}if(!a74j(b))a74k('invalid\x20name','Messenger\x20name\x20'+b+'\x20is\x20exceeds\x20max\x2064');const i=g['filter'](l=>l['m']!=null&&!l['suspended']&&l['address']!==h['address'])['length'];if(i>=0x3e8)a74k('invalid\x20parameter','Maximum\x20'+MAX_MESSENGER_ACCOUNTS+'\x20messenger\x20accounts\x20allowed,\x20current\x20count:\x20'+i);const j=Date['now']();return h['m']=b,h['updatedAt']=j,await d['put'](JSON['stringify'](g)),!![];});}async['list_messenger_accounts'](){return this['list']({'hasMessenger':!![]});}async['count_messenger_accounts'](){const a=await(await this['getStorage']())['get']();if(!a)return 0x0;return JSON['parse'](a)['filter'](b=>b['m']!=null&&!b['suspended'])['length'];}};export{Account,DEFAULT_ACCOUNT_NAME,MAX_MESSENGER_ACCOUNTS};
|
|
1
|
+
import{a as a75a}from'../../wow-types-DcqbnAaK.mjs';import{t as a75b}from'../../client-rikC538P.mjs';import{t as a75c}from'../../Transaction-CzqJDezj.mjs';import{n as a75d}from'../../network-CeDd07Hg.mjs';import{c as a75e}from'../../keypair-BqNhxtoP.mjs';import{n as a75f,r as a75g}from'../../faucet-RNvBvVJf.mjs';import{n as a75h}from'../../falcon512-Be5BlPLD.mjs';import{L as a75i,U as a75j}from'../../common-D8TcHVCJ.mjs';import{o as a75k}from'../../exception-CkI_xPvd.mjs';import{n as a75l,u as a75m}from'../../storage-UnD4qWaK.mjs';import{Config}from'./config.mjs';import{SecureAccountStorage}from'./secure-storage.mjs';import{sha256}from'@noble/hashes/sha2.js';import{x25519}from'@noble/curves/ed25519.js';import{hkdf}from'@noble/hashes/hkdf.js';const DEFAULT_ACCOUNT_NAME='',MAX_MESSENGER_ACCOUNTS=0x64;var Account=class Account{constructor(){this['balance']=async(b,c,d)=>{const e=await this['get'](c);b=b??'0x2::wow::WOW';if(e){const f=await Config['Instance']()['network_get'](d);return new a75b({'url':a75d(f),'network':f})['getBalance']({'owner':e['address'],'coinType':b});}},this['coin']=async(b,c,d,e,f)=>{const g=await this['get'](e);b=b??'0x2::wow::WOW';if(g){const h=await Config['Instance']()['network_get'](f);return new a75b({'url':a75d(h),'network':h})['getCoins']({'owner':g['address'],'coinType':b,'cursor':c,'limit':d});}},this['get_coin_object']=async(c,d,e,f,g)=>{const h=await this['get'](f);if(h){const j=BigInt(d),k=await Config['Instance']()['network_get'](g),l=new a75b({'url':a75d(k),'network':k});if(j>=BigInt(0x0)){if(!e||a75i(e))return c['splitCoins'](c['gas'],[j]);else{const m=await l['getCoins']({'owner':h['address'],'coinType':e}),n=[],o=new Set();let p=BigInt(0x0);for(let q=0x0;q<m['data']['length'];++q){const s=m['data'][q]['coinObjectId'];if(o['has'](s))continue;o['add'](s),p+=BigInt(m['data'][q]['balance']),n['push'](s);if(p>=j)break;}if(n['length']===0x0)return;if(n['length']===0x1)return c['splitCoins'](n[0x0],[j]);else{const t=n['pop']();return c['mergeCoins'](t,n),c['splitCoins'](t,[j]);}}}}},this['get_many_coin_object']=async(a,b,c,d,e)=>{const f=[];for(const g of b){const h=await this['get_coin_object'](a,g,d,c,e);if(!h)a75k('invalid\x20parameter','Invalid\x20coin\x20object:\x20'+g);else f['push'](h);}return a['makeMoveVec']({'elements':f});},this['coinObject_with_balance']=async(b,c,d,e)=>{const f=await this['get_imp'](d);if(!f)return void 0x0;const g=a75h['fromSecretKey'](f['secret']);if(!g)return void 0x0;const h=new a75c(),i=await this['get_coin_object'](h,b,c,d,e);if(i){h['transferObjects']([i],f['address']);const j=await Config['Instance']()['network_get'](e),k=await new a75b({'url':a75d(j),'network':j})['signAndExecuteTransaction']({'transaction':h,'signer':g,'options':{'showObjectChanges':!![],'showEffects':!![],'showEvents':!![]}}),l=c??'0x2::wow::WOW';return(k?.['objectChanges']?.['find'](m=>m?.['type']==='created'&&(m?.['objectType'])['includes'](l)))?.['objectId'];}};}static{this['_dataLock']=new a75m();}static{this['_storageLock']=new a75m();}['setStorage'](a){Account['storage']=a;}['setEncryptedStorage'](a){Account['storage']=new SecureAccountStorage(a);}async['getStorage'](){if(Account['storage'])return Account['storage'];return Account['_storageLock']['run'](async()=>{if(!Account['storage'])Account['storage']=new SecureAccountStorage(new a75l());return Account['storage'];});}async['unlock'](a){const b=await this['getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');b['setSessionPassword'](a),await b['get']();}async['lock'](){const a=await this['getStorage']();if(a instanceof SecureAccountStorage)a['setSessionPassword'](void 0x0);}async['setEncryptionPassword'](a){const b=await this['getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await b['setPassword'](a);}async['changeEncryptionPassword'](a,b){const c=await this['getStorage']();if(!(c instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await c['changePassword'](a,b);}async['removeEncryptionPassword'](a){const b=await this['getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await b['removePassword'](a);}static['Instance'](){if(Account['_instance'])return Account['_instance'];if(!Account['_instance'])Account['_instance']=new Account();return Account['_instance'];}['accountData'](a,b=![]){if(!a||!a['secret'])return void 0x0;if(b)a['pubkey']=a75h['fromSecretKey'](a['secret'])['getPublicKey']()['toWowPublicKey']();a['secret']=void 0x0;if(a['name']===void 0x0)a['name']='';return a;}static['nameMatch'](a,b){if(a==null)return![];return a['toLowerCase']()===b['toLowerCase']();}async['gen'](a,b,c,d=![]){return Account['_dataLock']['run'](async()=>{a=this['name_resolve'](a);if(a&&!a75j(a))a75k('invalid\x20name','Name\x20'+a+'\x20is\x20exceeds\x20max\x2064');if(c&&!a75j(c))a75k('invalid\x20name','Messenger\x20name\x20'+c+'\x20is\x20exceeds\x20max\x2064');const e=a75h['generate']()['getSecretKey'](),f=a75h['fromSecretKey'](e)['getPublicKey']()['toWowAddress'](),g=Date['now'](),h={'name':a,'address':f,'secret':e,'m':c||void 0x0,'createdAt':g,'updatedAt':g},i=await this['getStorage'](),j=await i['get'](),k=j?JSON['parse'](j):[],l=k['findIndex'](n=>Account['nameMatch'](n['name'],a));if(l!==-0x1){if(b)k[l]['name']=void 0x0;else a75k('account\x20name\x20exist','Name\x20'+(a||'')+'\x20already\x20exist');}if(c){const n=k['filter'](o=>o['m']!=null&&!o['suspended'])['length'];if(n>=0x64)a75k('invalid\x20parameter','Maximum\x20100\x20messenger\x20accounts\x20allowed,\x20current\x20count:\x20'+n);}return k['push'](h),await i['put'](JSON['stringify'](k)),this['accountData'](h,d);});}async['default'](a=![]){return this['accountData'](await this['get_imp'](''),a);}async['get'](a,b,c=![]){if(!b)return this['accountData'](await this['get_imp'](a),c);return this['gen'](a);}async['get_address'](a){if(a&&a75a(a))return a['toLowerCase']();return(await this['get_imp'](a))?.['address'];}async['get_many_address'](a){const b=await(await this['getStorage']())['get']();if(b){const c=JSON['parse'](b);return a['map'](d=>{if(d&&a75a(d))return d['toLowerCase']();const e=this['name_resolve'](d);return c['find'](f=>f['address']['toLowerCase']()===e['toLowerCase']()||Account['nameMatch'](f['name'],e))?.['address'];});}return a['map'](d=>d&&a75a(d)?d['toLowerCase']():void 0x0);}async['get_imp'](a){a=this['name_resolve'](a);const b=await(await this['getStorage']())['get']();if(b){const c=a['toLowerCase']();return JSON['parse'](b)['find'](e=>Account['nameMatch'](e['name'],a)||e['address']['toLowerCase']()===c);}}['name_resolve'](a){return a||'';}async['get_many'](a,b=![]){return this['get_many_imp'](a,b);}async['get_many_imp'](a,b=![]){const c=await(await this['getStorage']())['get']();if(c){const d=JSON['parse'](c);return a['map'](e=>{const f=this['name_resolve'](e),g=d['find'](h=>h['address']['toLowerCase']()===f['toLowerCase']()||Account['nameMatch'](h['name'],f));if(!g)return void 0x0;if(b){const h=a75h['fromSecretKey'](g['secret']),j={...g,'pubkey':h['getPublicKey']()['toWowPublicKey']()};return delete j['secret'],j;}return g;});}return a['map'](e=>void 0x0);}async['swap_name'](a,b){return Account['_dataLock']['run'](async()=>{a=this['name_resolve'](a),b=this['name_resolve'](b);if(this['name_resolve'](a)===this['name_resolve'](b))return!![];if(a&&!a75j(a))a75k('invalid\x20name','Name\x20'+(a||'')+'\x20is\x20exceeds\x20max\x2064');if(b&&!a75j(b))a75k('invalid\x20name','Name\x20'+(b||'')+'\x20is\x20exceeds\x20max\x2064');const c=await this['getStorage'](),d=await c['get']();if(!d)return![];const e=JSON['parse'](d),f=e['find'](i=>Account['nameMatch'](i['name'],a)),g=e['find'](i=>Account['nameMatch'](i['name'],b));if(!f||!g)return![];const h=Date['now']();return f['name']=b,f['updatedAt']=h,g['name']=a,g['updatedAt']=h,await c['put'](JSON['stringify'](e)),!![];});}async['rename'](a,b){return Account['_dataLock']['run'](async()=>{if(b&&!a75j(b))a75k('invalid\x20name','Invalid\x20new\x20name:\x20\x22'+(b||'')+'\x22.\x20Must\x20be\x20a\x20valid\x20name\x20(not\x20an\x20address)');const c=this['name_resolve'](a);if(c===b)return!![];const d=await this['getStorage'](),e=await d['get']();if(e){const g=JSON['parse'](e);if(g['find'](j=>Account['nameMatch'](j['name'],b)))a75k('invalid\x20name','New\x20name\x20\x22'+(b||'')+'\x22\x20already\x20exists');const h=g['find'](j=>Account['nameMatch'](j['name'],c)||j['address']['toLowerCase']()===c['toLowerCase']());if(!h)a75k('account\x20not\x20found','Source\x20account\x20\x22'+(a||'')+'\x22\x20not\x20found');const i=Date['now']();return h['name']=b,h['updatedAt']=i,await d['put'](JSON['stringify'](g)),!![];}return![];});}async['list'](a){const b=await(await this['getStorage']())['get']();if(b){let c=JSON['parse'](b);if(a?.['suspended']!==void 0x0)c=c['filter'](d=>a['suspended']?d['suspended']===!![]:!d['suspended']);else c=c['filter'](d=>!d['suspended']);if(a?.['hasMessenger']!==void 0x0)c=c['filter'](d=>a['hasMessenger']?d['m']!=null:d['m']==null);if(a?.['m']!=null)c=c['filter'](d=>d['m']!=null);if(a?.['createdAt']){if(a['createdAt']['gte']!==void 0x0)c=c['filter'](d=>d['createdAt']&&d['createdAt']>=a['createdAt']['gte']);if(a['createdAt']['lte']!==void 0x0)c=c['filter'](d=>d['createdAt']&&d['createdAt']<=a['createdAt']['lte']);}if(a?.['updatedAt']){if(a['updatedAt']['gte']!==void 0x0)c=c['filter'](d=>d['updatedAt']&&d['updatedAt']>=a['updatedAt']['gte']);if(a['updatedAt']['lte']!==void 0x0)c=c['filter'](d=>d['updatedAt']&&d['updatedAt']<=a['updatedAt']['lte']);}if(a?.['name']!=null||a?.['address']||a?.['m']!=null)c=c['map'](d=>{let e=0x0;if(a?.['name']!=null){const f=d['name']?.['toLowerCase']()||'',g=a['name']['toLowerCase']();if(f===g)e+=0x64;else{if(f['startsWith'](g))e+=0x32;else{if(f['includes'](g))e+=0x19;}}}if(a?.['address']){const h=d['address']['toLowerCase'](),i=a['address']['toLowerCase']();if(h===i)e+=0x64;else{if(h['startsWith'](i))e+=0x32;else{if(h['includes'](i))e+=0x19;}}}if(a?.['m']!=null&&d['m']!=null){const j=d['m']['toLowerCase'](),k=a['m']['toLowerCase']();if(j===k)e+=0x64;else{if(j['startsWith'](k))e+=0x32;else{if(j['includes'](k))e+=0x19;}}}if((a?.['name']||a?.['address']||a?.['m']!=null)&&e===0x0)e=-0x1;return{'account':d,'score':e};})['filter'](({score:d})=>d>=0x0)['sort']((d,e)=>e['score']-d['score'])['map'](({account:d})=>d);return c['map'](d=>this['accountData'](d,a?.['includePubkey']))['filter'](d=>d!==void 0x0);}return[];}async['suspend'](a){return Account['_dataLock']['run'](async()=>{a=this['name_resolve'](a);const b=await this['getStorage'](),c=await b['get']();if(c){const d=JSON['parse'](c),e=d['find'](g=>g['address']['toLowerCase']()===a['toLowerCase']()||Account['nameMatch'](g['name'],a));if(e){const g=Date['now']();return e['suspended']=!![],e['name']=void 0x0,e['m']=void 0x0,e['updatedAt']=g,await b['put'](JSON['stringify'](d)),!![];}}return![];});}async['suspend_many'](a){return Account['_dataLock']['run'](async()=>{const b=await this['getStorage'](),c=await b['get'](),d={'success':[],'failed':[]};if(c){const e=JSON['parse'](c),g=Date['now']();let h=![];for(const i of a){const j=this['name_resolve'](i),k=e['find'](l=>l['address']['toLowerCase']()===j['toLowerCase']()||Account['nameMatch'](l['name'],j));if(k)k['suspended']=!![],k['name']=void 0x0,k['m']=void 0x0,k['updatedAt']=g,d['success']['push'](i),h=!![];else d['failed']['push'](i);}if(h)await b['put'](JSON['stringify'](e));}else d['failed']=[...a];return d;});}async['resume'](a,b){return Account['_dataLock']['run'](async()=>{b=this['name_resolve'](b),a=a['toLowerCase']();if(b&&!a75j(b))a75k('invalid\x20name','Name\x20'+b+'\x20is\x20exceeds\x20max\x2064');const c=await this['getStorage'](),d=await c['get']();if(d){const e=JSON['parse'](d);if(e['find'](h=>Account['nameMatch'](h['name'],b)))a75k('invalid\x20name','Name\x20\x22'+(b||'')+'\x22\x20already\x20exists');const g=e['find'](h=>h['address']['toLowerCase']()===a['toLowerCase']());if(g){const h=Date['now']();return g['suspended']=![],g['name']=b,g['updatedAt']=h,await c['put'](JSON['stringify'](e)),!![];}}return![];});}async['faucet'](b,c){const d=await this['get_imp'](b);if(!d)throw new Error('Faucet\x20request\x20failed:\x20account\x20\x22'+(b??'<default>')+'\x22\x20not\x20found');return(await a75g({'host':a75f(c),'recipient':d['address']}))['coins_sent']||[];}async['sign_and_commit'](b,c,d){const e=await this['get_imp'](c);if(e){const f=a75h['fromSecretKey'](e['secret']);if(f){const g=await Config['Instance']()['network_get'](d);return new a75b({'url':a75d(g),'network':g})['signAndExecuteTransaction']({'transaction':b,'signer':f,'options':{'showObjectChanges':!![],'showEffects':!![],'showEvents':!![]}});}}}async['refund_coin'](a,b,c){const d=await this['get_address'](c);if(!d)a75k('invalid\x20parameter','Invalid\x20to\x20address\x20or\x20name\x20'+c);a['transferObjects']([b],a['pure']['address'](d));}async['transfer'](a,b,c,d,e){const [f,g]=await this['get_many_imp']([d,c]);if(!f)a75k('invalid\x20parameter','Invalid\x20from\x20address\x20or\x20name\x20'+d);const h=g?.['address']??c;if(!h)a75k('invalid\x20parameter','Invalid\x20to\x20address\x20or\x20name\x20'+c);const i=a75h['fromSecretKey'](f['secret']);if(i){const j=new a75c(),k=await this['get_coin_object'](j,a,b,d,e);if(k){j['transferObjects']([k],h);const l=await Config['Instance']()['network_get'](e);return new a75b({'url':a75d(l),'network':l})['signAndExecuteTransaction']({'transaction':j,'signer':i,'options':{'showObjectChanges':!![],'showEffects':!![],'showEvents':!![]}});}}}async['sign'](a,b){const c=await this['get_imp'](a);if(!c?.['secret'])a75k('invalid\x20parameter','Account\x20not\x20found\x20or\x20no\x20secret\x20key:\x20'+a);const d=a75h['fromSecretKey'](c['secret']),e=typeof b==='string'?new TextEncoder()['encode'](b):b,f=await d['sign'](e);return'0x'+Buffer['from'](f)['toString']('hex');}async['signData'](a,b){const c=await this['get_imp'](a);if(!c?.['secret'])a75k('invalid\x20parameter','Account\x20not\x20found\x20or\x20no\x20secret\x20key:\x20'+a);const d=a75h['fromSecretKey'](c['secret']),e=typeof b==='string'?new TextEncoder()['encode'](b):b,f=await d['sign'](e);return{'signature':'0x'+Buffer['from'](f)['toString']('hex'),'publicKey':d['getPublicKey']()['toWowPublicKey'](),'address':c['address']};}async['deriveX25519Identity'](a){const b=await this['get_imp'](a);if(!b?.['secret'])a75k('invalid\x20parameter','Account\x20not\x20found\x20or\x20no\x20secret\x20key:\x20'+a);const c=a75e(b['secret'])['secretKey'],d=a75h['fromSecretKey'](b['secret'])['getPublicKey']()['toRawBytes'](),e=new TextEncoder()['encode']('WowokX25519IdentityDerivation'),f=hkdf(sha256,sha256(c),new Uint8Array(0x0),e,0x20);f[0x0]&=0xf8,f[0x1f]&=0x7f,f[0x1f]|=0x40;const g=x25519['getPublicKey'](f),h=g[0x0]<<0x8|g[0x1];return{'x25519KeyPair':{'publicKey':g,'privateKey':f},'falcon512KeyPair':{'publicKey':d,'privateKey':c},'registrationId':h===0x0?0x1:h};}async['set_messenger'](a,b){return Account['_dataLock']['run'](async()=>{const c=this['name_resolve'](a),d=await this['getStorage'](),e=await d['get']();if(!e)return![];const g=JSON['parse'](e),h=g['find'](k=>k['address']['toLowerCase']()===c['toLowerCase']()||Account['nameMatch'](k['name'],c));if(!h)return![];if(!b){const k=Date['now']();return h['m']=void 0x0,h['updatedAt']=k,await d['put'](JSON['stringify'](g)),!![];}if(!a75j(b))a75k('invalid\x20name','Messenger\x20name\x20'+b+'\x20is\x20exceeds\x20max\x2064');const i=g['filter'](l=>l['m']!=null&&!l['suspended']&&l['address']!==h['address'])['length'];if(i>=0x64)a75k('invalid\x20parameter','Maximum\x20100\x20messenger\x20accounts\x20allowed,\x20current\x20count:\x20'+i);const j=Date['now']();return h['m']=b,h['updatedAt']=j,await d['put'](JSON['stringify'](g)),!![];});}async['list_messenger_accounts'](){return this['list']({'hasMessenger':!![]});}async['count_messenger_accounts'](){const a=await(await this['getStorage']())['get']();if(!a)return 0x0;return JSON['parse'](a)['filter'](b=>b['m']!=null&&!b['suspended'])['length'];}};export{Account,DEFAULT_ACCOUNT_NAME,MAX_MESSENGER_ACCOUNTS};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{r as a76a}from'../../storage-UnD4qWaK.mjs';let CachePrefix=function(a){return a['token']='token',a['object']='object',a['personal']='personal',a['table']='table',a['config']='config',a['local_mark']='mark',a['local_info']='info',a['event']='event',a;}({});var Cache=class Cache{static{this['memory']=new Map();}static['setStorage'](a){Cache['storage']=a;}static['hasStorage'](){return Cache['storage']!==void 0x0&&Cache['storage']!==null;}static['initDefaultStorage'](){Cache['storage']=new a76a();}static{Cache['initDefaultStorage']();}static['notExpired'](a){if(!a?.['expire'])return![];if(a['expire']==='INFINITE')return!![];return a['expire']>Date['now']();}static{this['DefaultExpireTime']=a=>{if(a)return'INFINITE';return Date['now']()+0x1d4c0;};}static async['storeData'](a,b){if(Cache['hasStorage']())await Cache['storage']['put'](a,JSON['stringify'](b));Cache['memory']['set'](a,b);}static async['read'](a,b,c){const d=a['join'](':');if(!c){if(Cache['memory']['has'](d)){const f=Cache['memory']['get'](d);if(Cache['notExpired'](f))return f;}if(Cache['hasStorage']()){const g=await Cache['storage']['get'](d);if(g){const h=JSON['parse'](g);if(Cache['notExpired'](h))return Cache['memory']['set'](d,h),h;}}}const e=b(a);if(typeof e==='object'&&e!==null&&'then'in e)return e['then'](async i=>{if(!i)return void 0x0;return await Cache['storeData'](d,i),i;})['catch'](i=>{throw i;});if(e)await Cache['storeData'](d,e);return e;}static async['read_many'](a,b,c,d){if(!b||b['length']===0x0)return[];const f=new Array(b['length']),g=[],h=[];for(let j=0x0;j<b['length'];j++){const k=a+':'+b[j];let l;if(!d){if(Cache['memory']['has'](k)){const m=Cache['memory']['get'](k);if(Cache['notExpired'](m))l=m;}if(!l&&Cache['hasStorage']())try{const n=await Cache['storage']['get'](k);if(n){const o=JSON['parse'](n);Cache['notExpired'](o)&&(l=o,Cache['memory']['set'](k,o));}}catch(p){}}if(l)f[j]=l;else g['push'](b[j]),h['push'](j);}if(g['length']>0x0)try{const q=await c(a,g);if(q&&q['length']>0x0)for(let r=0x0;r<q['length'];r++){const s=q[r],t=a+':'+g[r],u=h[r];s&&(await Cache['storeData'](t,s),Cache['memory']['set'](t,s),f[u]=s);}}catch(v){}return f['filter'](w=>w!==void 0x0);}static async['del'](a){const b=a['join'](':');Cache['memory']['delete'](b);if(Cache['hasStorage']())await Cache['storage']['del'](b);}static async['del_many'](a,b){if(!b||b['length']===0x0)return;for(const c of b){const d=a+':'+c;Cache['memory']['delete'](d);if(Cache['hasStorage']())await Cache['storage']['del'](d);}}static['clear'](){if(Cache['hasStorage']())Cache['storage']['clear']();else Cache['memory']['clear']();}};export{Cache,CachePrefix};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as ConfigData, t as Config } from "../../config-
|
|
1
|
+
import { n as ConfigData, t as Config } from "../../config-CPqpYYLT.mjs";
|
|
2
2
|
export { Config, ConfigData };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import'../../network-CeDd07Hg.mjs';import{Cache}from'./cache.mjs';var Config=class Config{constructor(){this['cacheKey']=['config'];}static['Instance'](){if(!Config['_instance'])Config['_instance']=new Config();return Config['_instance'];}async['network_get'](a){if(a)return await this['network_set'](a),a;return(await Cache['read'](this['cacheKey'],async b=>{return{'expire':'INFINITE','data':{'network':'testnet'}};}))?.['data']?.['network'];}async['network_set'](a){await Cache['read'](['config'],async b=>{return{'expire':'INFINITE','data':{'network':a}};},!![]);}async['list'](){return(await Cache['read'](this['cacheKey'],async a=>{return{'expire':'INFINITE','data':{'network':'testnet'}};}))?.['data'];}};export{Config};
|
|
1
|
+
import'../../network-CeDd07Hg.mjs';import{u as a77a}from'../../storage-UnD4qWaK.mjs';import{Cache}from'./cache.mjs';var Config=class Config{constructor(){this['cacheKey']=['config'];}static{this['_instanceLock']=new a77a();}static['Instance'](){if(Config['_instance'])return Config['_instance'];if(!Config['_instance'])Config['_instance']=new Config();return Config['_instance'];}async['network_get'](a){if(a)return await this['network_set'](a),a;return(await Cache['read'](this['cacheKey'],async b=>{return{'expire':'INFINITE','data':{'network':'testnet'}};}))?.['data']?.['network'];}async['network_set'](a){await Cache['read'](['config'],async b=>{return{'expire':'INFINITE','data':{'network':a}};},!![]);}async['list'](){return(await Cache['read'](this['cacheKey'],async a=>{return{'expire':'INFINITE','data':{'network':'testnet'}};}))?.['data'];}};export{Config};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as registerBridgeEvmNetworks, n as EvmNetworkConfig, r as EvmNetworkRegistry, t as ETH_MAINNET } from "../../../networks-
|
|
1
|
+
import { i as registerBridgeEvmNetworks, n as EvmNetworkConfig, r as EvmNetworkRegistry, t as ETH_MAINNET } from "../../../networks-Cab2UR8C.mjs";
|
|
2
2
|
export { ETH_MAINNET, EvmNetworkConfig, EvmNetworkRegistry, registerBridgeEvmNetworks };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{n as a78a,u as a78b}from'../../../storage-UnD4qWaK.mjs';const ETH_MAINNET={'name':'mainnet','chainId':0x1,'rpcUrls':['https://ethereum-rpc.publicnode.com','https://eth.drpc.org','https://eth.llamarpc.com','https://rpc.mevblocker.io','https://rpc.flashbots.net','https://cloudflare-eth.com','https://ethereum.blockpi.network/v1/rpc/public','https://eth.merkle.io','https://0xrpc.io/eth','https://api.zan.top/eth/mainnet'],'explorerUrl':'https://etherscan.io','confirmations':0x1,'gasLimitMultiplier':1.2,'minPriorityFee':0x3b9aca00n,'rpcTimeoutMs':0x7530,'txConfirmTimeoutMs':0x1d4c0,'pollIntervalMs':0xbb8};var EvmNetworkRegistry=class EvmNetworkRegistry{static{this['_instanceLock']=new a78b();}static{this['DEFAULT_UNHEALTHY_RETRY_MS']=0x5*0xea60;}constructor(){this['byChainId']=new Map(),this['byName']=new Map(),this['chainIdCache']=new Map(),this['unhealthyRpc']=new Map(),this['unhealthyCounter']=new Map(),this['register'](ETH_MAINNET),this['defaultChainId']=ETH_MAINNET['chainId'],this['_loadAllRpcs']();}static['Instance'](){if(EvmNetworkRegistry['_instance'])return EvmNetworkRegistry['_instance'];if(!EvmNetworkRegistry['_instance'])EvmNetworkRegistry['_instance']=new EvmNetworkRegistry();return EvmNetworkRegistry['_instance'];}['register'](a){const b=a['name']['toLowerCase']();this['byChainId']['set'](a['chainId'],a),this['byName']['set'](b,a);}['unregister'](a){const b=this['get'](a);if(!b)return;this['byChainId']['delete'](b['chainId']),this['byName']['delete'](b['name']['toLowerCase']());if(this['defaultChainId']===b['chainId'])this['defaultChainId']=this['byChainId']['size']>0x0?this['byChainId']['keys']()['next']()['value']:void 0x0;}['setDefault'](a){const b=this['get'](a);if(!b)throw new Error('EVM\x20network\x20not\x20found:\x20'+a);this['defaultChainId']=b['chainId'];}['get'](a){if(a===void 0x0||a===null)return this['defaultChainId']!==void 0x0?this['byChainId']['get'](this['defaultChainId']):void 0x0;if(typeof a==='number')return this['byChainId']['get'](a);return this['byName']['get'](a['toLowerCase']());}['list'](){return Array['from'](this['byChainId']['values']());}['getDefault'](){const a=this['get'](this['defaultChainId']);if(!a)throw new Error('No\x20default\x20EVM\x20network\x20registered.\x20Call\x20register()\x20and\x20setDefault()\x20first.');return a;}async['resolve'](a){if(typeof a==='number'){const b=this['byChainId']['get'](a);if(b)return b;throw new Error('EVM\x20network\x20not\x20registered\x20for\x20chainId\x20'+a);}if(typeof a==='string'){const c=this['byName']['get'](a['toLowerCase']());if(c)return c;const d=await this['queryChainIdFromRpc'](a),e=this['byChainId']['get'](d);if(e)return e;return this['buildTempConfig'](a,d);}return this['getDefault']();}['pickHealthyRpc'](a){const b=Date['now'](),c=a['rpcUrls']['map'](e=>{const f=this['unhealthyRpc']['get'](e),g=this['unhealthyCounter']['get'](e)??0x0,h=f===void 0x0||f<b;if(f!==void 0x0&&f<b)this['unhealthyRpc']['delete'](e);return{'url':e,'isExpired':h,'failCount':g};}),d=c['filter'](e=>e['isExpired']);if(d['length']>0x0)return d['sort']((e,f)=>e['failCount']-f['failCount']),d[0x0]['url'];return c['sort']((e,f)=>e['failCount']-f['failCount']),c[0x0]['url'];}['markUnhealthy'](a,b){const c=(this['unhealthyCounter']['get'](a)??0x0)+0x1;this['unhealthyCounter']['set'](a,c);const d=b??(c<=0x1?0x5*0xea60:c===0x2?0xf*0xea60:c===0x3?0x1e*0xea60:0x3c*0xea60);this['unhealthyRpc']['set'](a,Date['now']()+d);}['markHealthy'](a){this['unhealthyRpc']['delete'](a),this['unhealthyCounter']['delete'](a);}['isUnhealthy'](a){const b=this['unhealthyRpc']['get'](a);if(b===void 0x0)return![];if(b<Date['now']())return this['unhealthyRpc']['delete'](a),![];return!![];}['listRpcStatus'](a){const b=this['get'](a);if(!b)return[];const c=Date['now']();return b['rpcUrls']['map'](d=>{const e=this['unhealthyRpc']['get'](d),f=this['unhealthyCounter']['get'](d)??0x0;if(e===void 0x0||e<c){if(e!==void 0x0&&e<c)this['unhealthyRpc']['delete'](d);return{'url':d,'healthy':!![],'failCount':f};}return{'url':d,'healthy':![],'retryInMs':e-c,'failCount':f};});}['addRpc'](a,b){const c=this['get'](a);if(!c)return![];if(c['rpcUrls']['includes'](b))return![];return c['rpcUrls']['unshift'](b),this['_saveAllRpcs'](),!![];}['removeRpc'](a,b){const c=this['get'](a);if(!c)return![];if(c['rpcUrls']['length']<=0x1)return![];const d=c['rpcUrls']['indexOf'](b);if(d===-0x1)return![];return c['rpcUrls']['splice'](d,0x1),this['unhealthyRpc']['delete'](b),this['_saveAllRpcs'](),!![];}['setRpcs'](a,b){if(!b||b['length']===0x0)return![];const c=this['get'](a);if(!c)return![];for(const d of c['rpcUrls'])this['unhealthyRpc']['delete'](d);return c['rpcUrls']=[...new Set(b)],this['_saveAllRpcs'](),!![];}async['ping'](a,b=0x1388){try{const c=new AbortController(),d=setTimeout(()=>c['abort'](),b),e=await fetch(a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x1,'method':'eth_chainId','params':[]}),'signal':c['signal']});return clearTimeout(d),e['ok'];}catch{return![];}}async['queryChainIdFromRpc'](a){const b=this['chainIdCache']['get'](a);if(b!==void 0x0)return b;const c=await(await fetch(a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x1,'method':'eth_chainId','params':[]})}))['json']();if(c['error'])throw new Error('RPC\x20error:\x20'+c['error']['message']);const d=parseInt(c['result'],0x10);return this['chainIdCache']['set'](a,d),d;}['clearChainIdCache'](){this['chainIdCache']['clear']();}['_getPersistStore'](){if(!this['_persistStore'])this['_persistStore']=new a78a(void 0x0,'evm_network_rpcs');return this['_persistStore'];}async['_saveAllRpcs'](){try{const a={};for(const [b,c]of this['byChainId']['entries']())a[String(b)]=c['rpcUrls'];await this['_getPersistStore']()['put'](JSON['stringify'](a));}catch{}}async['_loadAllRpcs'](){try{const a=await this['_getPersistStore']()['get']();if(!a)return;const b=JSON['parse'](a);for(const [c,d]of Object['entries'](b)){const e=Number(c),f=this['byChainId']['get'](e);if(f&&Array['isArray'](d)&&d['length']>0x0)f['rpcUrls']=d;}}catch{}}['addRpcs'](a,b){const c=this['get'](a);if(!c)return 0x0;let d=0x0;for(const e of b['slice']()['reverse']())!c['rpcUrls']['includes'](e)&&(c['rpcUrls']['unshift'](e),d++);if(d>0x0)this['_saveAllRpcs']();return d;}['removeRpcs'](a,b){const c=this['get'](a);if(!c)return 0x0;let d=0x0;for(const e of b){const f=c['rpcUrls']['indexOf'](e);f!==-0x1&&c['rpcUrls']['length']>0x1&&(c['rpcUrls']['splice'](f,0x1),this['unhealthyRpc']['delete'](e),d++);}if(d>0x0)this['_saveAllRpcs']();return d;}['buildTempConfig'](a,b){return{'name':'chain-'+b,'chainId':b,'rpcUrls':[a],'confirmations':0x1,'gasLimitMultiplier':1.2,'minPriorityFee':0x3b9aca00n,'rpcTimeoutMs':0x7530,'txConfirmTimeoutMs':0x1d4c0,'pollIntervalMs':0xbb8};}};function registerBridgeEvmNetworks(a){const b=EvmNetworkRegistry['Instance'](),c=b['get'](a['evmChain']['chainId']);if(c){if(a['evmChain']['rpcUrl']&&!c['rpcUrls']['includes'](a['evmChain']['rpcUrl']))c['rpcUrls']['unshift'](a['evmChain']['rpcUrl']);if(a['setAsDefault'])b['setDefault'](c['chainId']);return c;}const d={'name':(a['name']??'chain-'+a['evmChain']['chainId'])['toLowerCase'](),'chainId':a['evmChain']['chainId'],'rpcUrls':a['evmChain']['rpcUrl']?[a['evmChain']['rpcUrl']]:[],'confirmations':0x1,'gasLimitMultiplier':1.2,'minPriorityFee':0x3b9aca00n,'rpcTimeoutMs':0x7530,'txConfirmTimeoutMs':0x1d4c0,'pollIntervalMs':0xbb8};b['register'](d);if(a['setAsDefault'])b['setDefault'](d['chainId']);return d;}export{ETH_MAINNET,EvmNetworkRegistry,registerBridgeEvmNetworks};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { _ as toChecksumAddress, c as bytesToHex, d as hexToBytes, g as signLegacy, h as signEIP1559, m as privateKeyToAddress, p as isValidEvmAddress, s as bytesToBigInt } from "../../rlp-Do3rPWRV.mjs";
|
|
2
|
-
import { a as EvmTransactionRequest, i as EvmTransactionReceipt, n as EvmAccountData, r as EvmLog, t as EvmAccount } from "../../evm-account-
|
|
2
|
+
import { a as EvmTransactionRequest, i as EvmTransactionReceipt, n as EvmAccountData, r as EvmLog, t as EvmAccount } from "../../evm-account-D-9b2P5o.mjs";
|
|
3
3
|
export { EvmAccount, EvmAccountData, EvmLog, EvmTransactionReceipt, EvmTransactionRequest, bytesToBigInt, bytesToHex, hexToBytes, isValidEvmAddress, privateKeyToAddress, signEIP1559, signLegacy, toChecksumAddress };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as a79a}from'../../exception--UEPnygY.mjs';import{SQLiteAccountStorage}from'./storage.mjs';import{SecureAccountStorage}from'./secure-storage.mjs';import{bytesToBigInt,bytesToHex,hexToBytes,isValidEvmAddress,privateKeyToAddress,signEIP1559,signLegacy,toChecksumAddress}from'./evm/rlp.mjs';import{EvmNetworkRegistry}from'./evm/networks.mjs';import{secp256k1}from'@noble/curves/secp256k1.js';import{keccak_256}from'@noble/hashes/sha3.js';var AsyncLock=class{constructor(){this['_locked']=![],this['_queue']=[];}async['acquire'](){if(!this['_locked']){this['_locked']=!![];return;}return new Promise(a=>{this['_queue']['push'](a);});}['release'](){if(this['_queue']['length']>0x0)this['_queue']['shift']()();else this['_locked']=![];}async['run'](a){await this['acquire']();try{return await a();}finally{this['release']();}}};let rpcRequestId=0x0;async function ethRpcWithAbort(a,b,c,d){const e={'jsonrpc':'2.0','id':++rpcRequestId,'method':b,'params':c},f=await fetch(a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](e),'signal':d});if(!f['ok'])throw new Error('EVM\x20RPC\x20HTTP\x20'+f['status']+':\x20'+await f['text']());const g=await f['json']();if(g['error'])throw new Error('EVM\x20RPC\x20error:\x20'+g['error']['message']+'\x20(code\x20'+g['error']['code']+')');return g['result'];}var EvmAccount=class EvmAccount{static{this['_lock']=new AsyncLock();}['setStorage'](a){EvmAccount['storage']=a;}['setEncryptedStorage'](a){EvmAccount['storage']=new SecureAccountStorage(a);}async['_getStorage'](){if(!EvmAccount['storage'])EvmAccount['storage']=new SecureAccountStorage(new SQLiteAccountStorage(void 0x0,'evm_accounts'));return EvmAccount['storage'];}async['unlock'](a){const b=await this['_getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');b['setSessionPassword'](a),await b['get']();}async['lock'](){const a=await this['_getStorage']();if(a instanceof SecureAccountStorage)a['setSessionPassword'](void 0x0);}async['setEncryptionPassword'](a){const b=await this['_getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await b['setPassword'](a);}async['changeEncryptionPassword'](a,b){const c=await this['_getStorage']();if(!(c instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await c['changePassword'](a,b);}async['removeEncryptionPassword'](a){const b=await this['_getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await b['removePassword'](a);}static['Instance'](){if(!EvmAccount['_instance'])EvmAccount['_instance']=new EvmAccount();return EvmAccount['_instance'];}async['_get'](a=![]){const b=await this['_getStorage'](),c=await b['get']();if(!c)return void 0x0;const d=JSON['parse'](c);if(Array['isArray'](d)){const g=d,h=g['find'](i=>!i['suspended'])||g[0x0];if(h){const i={'address':h['address'],'pubkey':h['pubkey'],'secret':h['secret'],'createdAt':h['createdAt'],'updatedAt':h['updatedAt']};await b['put'](JSON['stringify'](i));const {secret:j,...k}=i;if(!a){const {pubkey:l,...m}=k;return m;}return k;}return;}const {secret:e,...f}=d;if(!a){const {pubkey:n,...o}=f;return o;}return f;}async['_getWithSecret'](){const a=await this['_getStorage'](),b=await a['get']();if(!b)a79a('account\x20not\x20found','No\x20active\x20EVM\x20account.\x20Call\x20active()\x20first\x20to\x20auto-generate\x20one.');const c=JSON['parse'](b);if(Array['isArray'](c)){const e=c,f=e['find'](h=>!h['suspended'])||e[0x0];if(!f||!f['secret'])a79a('account\x20not\x20found','No\x20active\x20EVM\x20account\x20with\x20secret\x20found\x20in\x20storage.');const g={'address':f['address'],'pubkey':f['pubkey'],'secret':f['secret'],'createdAt':f['createdAt'],'updatedAt':f['updatedAt']};return await a['put'](JSON['stringify'](g)),g;}const d=c;if(!d['secret'])a79a('account\x20not\x20found','EVM\x20account\x20found\x20but\x20has\x20no\x20secret.');return d;}async['_save'](a){await(await this['_getStorage']())['put'](JSON['stringify'](a));}async['resolveNetwork'](a,b){const c=EvmNetworkRegistry['Instance']();if(b){const e=await c['resolve'](b);return{'cfg':e,'url':c['pickHealthyRpc'](e)||b};}const d=await c['resolve'](a);return{'cfg':d,'url':c['pickHealthyRpc'](d)};}async['rpcWithFailover'](a,b,c){const d=EvmNetworkRegistry['Instance']();let f;const g=a['rpcTimeoutMs']??0x2710;for(const h of a['rpcUrls'])try{const i=new AbortController(),j=setTimeout(()=>i['abort'](),g);try{const k=await ethRpcWithAbort(h,b,c,i['signal']);return d['markHealthy'](h),k;}finally{clearTimeout(j);}}catch(l){f=l,d['markUnhealthy'](h);}throw f instanceof Error?f:new Error('All\x20RPCs\x20failed\x20for\x20'+b);}async['gen'](a=![]){return EvmAccount['_lock']['run'](async()=>{const b=secp256k1['utils']['randomSecretKey'](),c='0x'+bytesToHex(b),d=privateKeyToAddress(b),e=Date['now'](),f={'address':d,'secret':c,'createdAt':e,'updatedAt':e};if(a)f['pubkey']='0x'+bytesToHex(secp256k1['getPublicKey'](b,!![]));await this['_save'](f);const {secret:g,...h}=f;return h;});}async['importPrivateKey'](a,b=![]){return EvmAccount['_lock']['run'](async()=>{const c=a['startsWith']('0x')?a['slice'](0x2):a;if(c['length']!==0x40)a79a('invalid\x20parameter','Private\x20key\x20must\x20be\x2032\x20bytes\x20(64\x20hex\x20chars),\x20got\x20'+c['length']+'\x20chars');const d='0x'+c,e=hexToBytes(d),f=privateKeyToAddress(e),g=Date['now'](),h={'address':f,'secret':d,'createdAt':g,'updatedAt':g};if(b)h['pubkey']='0x'+bytesToHex(secp256k1['getPublicKey'](e,!![]));await this['_save'](h);const {secret:i,...j}=h;return j;});}async['active'](a=![]){const b=await this['_get'](a);if(b)return b;return this['gen'](a);}async['balance'](b,c){const d=await this['_get']();if(!d)return void 0x0;const {cfg:e}=await this['resolveNetwork'](b,c),f=await this['rpcWithFailover'](e,'eth_getBalance',[d['address'],'latest']);return BigInt(f);}async['balanceOf'](b,c,d){const e=await this['_get']();if(!e)return void 0x0;const {cfg:f}=await this['resolveNetwork'](c,d),g='0x70a08231'+e['address']['slice'](0x2)['toLowerCase']()['padStart'](0x40,'0'),h=await this['rpcWithFailover'](f,'eth_call',[{'to':b,'data':g},'latest']);return BigInt(h);}async['getNonce'](b,c){const d=await this['_get']();if(!d)return void 0x0;const {cfg:e}=await this['resolveNetwork'](b,c),f=await this['rpcWithFailover'](e,'eth_getTransactionCount',[d['address'],'pending']);return parseInt(f,0x10);}async['getChainId'](a,b){const {cfg:c}=await this['resolveNetwork'](a,b),d=await this['rpcWithFailover'](c,'eth_chainId',[]);return parseInt(d,0x10);}async['getBlockNumber'](a,b){const {cfg:c}=await this['resolveNetwork'](a,b),d=await this['rpcWithFailover'](c,'eth_blockNumber',[]);return BigInt(d);}async['ethCall'](b,c,d){const e=await this['_get']();if(!e)a79a('account\x20not\x20found','No\x20active\x20EVM\x20account');const f=b['network']??c,{cfg:g}=await this['resolveNetwork'](f,d??b['rpcUrl']);return await this['rpcWithFailover'](g,'eth_call',[{'from':e['address'],'to':b['to'],'data':b['data']??'0x','value':'0x'+(b['value']??0x0n)['toString'](0x10)},'latest']);}['guessGasLimit'](a){const b=a['data']??'';if(b['startsWith']('0x9c3ecefb'))return 0x927c0n;if(b['startsWith']('0x095ea7b3'))return 0x186a0n;if(b['startsWith']('0xb4b7068c'))return 0x3d090n;if(b['startsWith']('0x0bdba58b'))return 0x493e0n;return 0x61a80n;}async['estimateGas'](b,c,d){const e=await this['_get']();if(!e)a79a('account\x20not\x20found','No\x20active\x20EVM\x20account');const f=b['network']??c,{cfg:g}=await this['resolveNetwork'](f,d??b['rpcUrl']),h=await this['rpcWithFailover'](g,'eth_estimateGas',[{'from':e['address'],'to':b['to'],'data':b['data']??'0x','value':'0x'+(b['value']??0x0n)['toString'](0x10)}]);return BigInt(h);}async['safeEstimateGas'](a){if(!await this['_get']())a79a('account\x20not\x20found','No\x20active\x20EVM\x20account');const {cfg:b}=await this['resolveNetwork'](a['network'],a['rpcUrl']);let c;try{await this['ethCall'](a);}catch(d){return c=extractRevertReason(d),{'gasLimit':this['guessGasLimit'](a),'revertReason':c||'eth_call\x20failed'};}try{const f=await this['estimateGas'](a),g=b['gasLimitMultiplier']??1.2;return{'gasLimit':BigInt(Math['ceil'](Number(f)*g))};}catch(h){return c=extractRevertReason(h),console['warn']('[safeEstimateGas]\x20estimateGas\x20failed,\x20using\x20fallback\x20gasLimit='+this['guessGasLimit'](a),c?'revert:\x20'+c:''),{'gasLimit':this['guessGasLimit'](a),'revertReason':c};}}async['getFeeData'](a,b){const {cfg:c}=await this['resolveNetwork'](a,b),d=await this['rpcWithFailover'](c,'eth_feeHistory',['0x5','latest',[0x32]]),e=BigInt(d['baseFeePerGas'][0x0]),f=BigInt(d['reward'][0x0][0x0]),g=c['minPriorityFee']??0x0n,h=f<g?g:f;return{'maxFeePerGas':e*0x2n+h,'maxPriorityFeePerGas':h};}async['sign_and_send'](b,c){const d=await this['_getWithSecret']();if(!d||!d['secret'])a79a('account\x20not\x20found','No\x20active\x20EVM\x20account\x20with\x20secret');const {cfg:e,url:f}=await this['resolveNetwork'](b['network'],c??b['rpcUrl']),g=b['chainId']??e['chainId'],h=hexToBytes(d['secret']['slice'](0x2)),i=b['nonce']??await this['getNonce'](e['chainId'],f);let {maxFeePerGas:j,maxPriorityFeePerGas:k,gasPrice:l}=b;e['useLegacy']&&!l&&(l=(await this['getFeeData'](e['chainId'],f))['maxFeePerGas'],j=void 0x0,k=void 0x0);if(!j&&!k&&!l){const r=await this['getFeeData'](e['chainId'],f);j=r['maxFeePerGas'],k=r['maxPriorityFeePerGas'];}let m=b['gasLimit'];if(!m){const s=await this['safeEstimateGas'](b);m=s['gasLimit'],s['revertReason'];}const n=hexToBytes(b['to']['slice'](0x2)),o=b['data']?hexToBytes(b['data']['slice'](0x2)):new Uint8Array(0x0);let p;if(l)p=signLegacy({'to':n,'data':o,'value':b['value']??0x0n,'nonce':i,'chainId':g,'gasPrice':l,'gasLimit':m},h);else p=signEIP1559({'to':n,'data':o,'value':b['value']??0x0n,'nonce':i,'chainId':g,'maxFeePerGas':j,'maxPriorityFeePerGas':k,'gasLimit':m},h);const q=await this['rpcWithFailover'](e,'eth_sendRawTransaction',[p]);return await this['waitForReceipt'](q,e['chainId'],f);}async['waitForReceipt'](a,b,c,d){const {cfg:e,url:f}=await this['resolveNetwork'](b,c),g=d??e['txConfirmTimeoutMs']??0x1d4c0,h=e['pollIntervalMs']??0xbb8,i=Date['now']()+g;while(Date['now']()<i){const j=await this['rpcWithFailover'](e,'eth_getTransactionReceipt',[a]);if(j)return this['parseReceipt'](j);await new Promise(k=>setTimeout(k,h));}a79a('fail','Transaction\x20'+a+'\x20not\x20confirmed\x20within\x20'+g+'ms');}['parseReceipt'](a){return{'transactionHash':a['transactionHash'],'blockNumber':BigInt(a['blockNumber']),'blockHash':a['blockHash'],'status':a['status']??'0x0','gasUsed':BigInt(a['gasUsed']),'effectiveGasPrice':BigInt(a['effectiveGasPrice']),'from':a['from'],'to':a['to'],'contractAddress':a['contractAddress']??void 0x0,'logs':(a['logs']??[])['map'](b=>({'address':b['address'],'topics':b['topics']??[],'data':b['data']??'0x','blockNumber':BigInt(b['blockNumber']),'transactionHash':b['transactionHash'],'transactionIndex':b['transactionIndex'],'logIndex':b['logIndex'],'removed':b['removed']??![]}))};}async['signData'](a){const b=await this['_getWithSecret'](),c=hexToBytes(b['secret']['slice'](0x2)),d=typeof a==='string'?new TextEncoder()['encode'](a):a,e='\x19Ethereum\x20Signed\x20Message:\x0a'+d['length'],f=new Uint8Array(e['length']+d['length']);f['set'](new TextEncoder()['encode'](e),0x0),f['set'](d,e['length']);const g=keccak_256(f),h=secp256k1['sign'](g,c,{'format':'recovered','prehash':![]}),i=0x1b+h[0x0],j=new Uint8Array(0x41);j['set'](h['subarray'](0x1,0x21),0x0),j['set'](h['subarray'](0x21,0x41),0x20),j[0x40]=i;const k=secp256k1['getPublicKey'](c,!![]);return{'signature':'0x'+bytesToHex(j),'publicKey':'0x'+bytesToHex(k),'address':b['address']};}async['transfer'](a){await this['_getWithSecret']();if(!isValidEvmAddress(a['to']))a79a('invalid\x20parameter','Invalid\x20EVM\x20recipient\x20address:\x20'+a['to']);if(a['amount']<=0x0n)a79a('invalid\x20parameter','amount\x20must\x20be\x20positive');const b=!!a['tokenAddress'];if(b){const e=await this['balanceOf'](a['tokenAddress'],a['network'],a['rpcUrl']);if(e===void 0x0||e<a['amount'])a79a('fail','Insufficient\x20ERC20\x20balance:\x20have\x20'+(e??0x0n)+',\x20need\x20'+a['amount']);}else{const f=await this['balance'](a['network'],a['rpcUrl']);if(f===void 0x0||f<a['amount'])a79a('fail','Insufficient\x20ETH\x20balance:\x20have\x20'+(f??0x0n)+',\x20need\x20'+a['amount']);}let c;if(b){const g='0xa9059cbb'+a['to']['slice'](0x2)['toLowerCase']()['padStart'](0x40,'0')+a['amount']['toString'](0x10)['padStart'](0x40,'0');c={'to':a['tokenAddress'],'value':0x0n,'data':g,'network':a['network'],'rpcUrl':a['rpcUrl']};}else c={'to':a['to'],'value':a['amount'],'data':'0x','network':a['network'],'rpcUrl':a['rpcUrl']};const d=await this['sign_and_send'](c,a['rpcUrl']);if(d['status']!=='0x1')a79a('fail','EVM\x20transfer\x20reverted:\x20txHash='+d['transactionHash']);return d;}async['withdrawFromActive'](a){return this['transfer']({...a});}};function extractRevertReason(a){if(!a)return void 0x0;const b=typeof a==='string'?a:a?.['message']??a?.['toString']?.()??'',c=b['match'](/execution reverted:\s*(.+?)(?:\.|$)/i);if(c)return c[0x1]['trim']();const d=b['match'](/reverted with reason string\s*'([^']+)'/i);if(d)return d[0x1];const e=b['match'](/reverted with panic code\s*(0x[0-9a-f]+)/i);if(e)return'panic:\x20'+e[0x1];if(/stack underflow/i['test'](b))return'stack\x20underflow\x20(calldata\x20encoding\x20error)';if(/stack overflow/i['test'](b))return'stack\x20overflow';if(/out of gas/i['test'](b))return'out\x20of\x20gas';return b['length']>0xc8?b['slice'](0x0,0xc8)+'...':b;}export{EvmAccount,bytesToBigInt,bytesToHex,hexToBytes,isValidEvmAddress,privateKeyToAddress,signEIP1559,signLegacy,toChecksumAddress};
|
|
1
|
+
import{o as a80a}from'../../exception-CkI_xPvd.mjs';import{n as a80b,u as a80c}from'../../storage-UnD4qWaK.mjs';import{SecureAccountStorage}from'./secure-storage.mjs';import{bytesToBigInt,bytesToHex,hexToBytes,isValidEvmAddress,privateKeyToAddress,signEIP1559,signLegacy,toChecksumAddress}from'./evm/rlp.mjs';import{EvmNetworkRegistry}from'./evm/networks.mjs';import{secp256k1}from'@noble/curves/secp256k1.js';import{keccak_256}from'@noble/hashes/sha3.js';let rpcRequestId=0x0;async function ethRpcWithAbort(a,b,c,d){const e={'jsonrpc':'2.0','id':++rpcRequestId,'method':b,'params':c},f=await fetch(a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](e),'signal':d});if(!f['ok'])throw new Error('EVM\x20RPC\x20HTTP\x20'+f['status']+':\x20'+await f['text']());const g=await f['json']();if(g['error'])throw new Error('EVM\x20RPC\x20error:\x20'+g['error']['message']+'\x20(code\x20'+g['error']['code']+')');return g['result'];}var EvmAccount=class EvmAccount{static{this['_dataLock']=new a80c();}static{this['_storageLock']=new a80c();}['setStorage'](a){EvmAccount['storage']=a;}['setEncryptedStorage'](a){EvmAccount['storage']=new SecureAccountStorage(a);}async['_getStorage'](){if(EvmAccount['storage'])return EvmAccount['storage'];return EvmAccount['_storageLock']['run'](async()=>{if(!EvmAccount['storage'])EvmAccount['storage']=new SecureAccountStorage(new a80b(void 0x0,'evm_accounts'));return EvmAccount['storage'];});}async['unlock'](a){const b=await this['_getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');b['setSessionPassword'](a),await b['get']();}async['lock'](){const a=await this['_getStorage']();if(a instanceof SecureAccountStorage)a['setSessionPassword'](void 0x0);}async['setEncryptionPassword'](a){const b=await this['_getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await b['setPassword'](a);}async['changeEncryptionPassword'](a,b){const c=await this['_getStorage']();if(!(c instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await c['changePassword'](a,b);}async['removeEncryptionPassword'](a){const b=await this['_getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await b['removePassword'](a);}static['Instance'](){if(EvmAccount['_instance'])return EvmAccount['_instance'];if(!EvmAccount['_instance'])EvmAccount['_instance']=new EvmAccount();return EvmAccount['_instance'];}async['_get'](a=![]){const b=await this['_getStorage'](),c=await b['get']();if(!c)return void 0x0;const d=JSON['parse'](c);if(Array['isArray'](d)){const g=d,h=g['find'](i=>!i['suspended'])||g[0x0];if(h){const i={'address':h['address'],'pubkey':h['pubkey'],'secret':h['secret'],'createdAt':h['createdAt'],'updatedAt':h['updatedAt']};await b['put'](JSON['stringify'](i));const {secret:j,...k}=i;if(!a){const {pubkey:l,...m}=k;return m;}return k;}return;}const {secret:e,...f}=d;if(!a){const {pubkey:n,...o}=f;return o;}return f;}async['_getWithSecret'](){const a=await this['_getStorage'](),b=await a['get']();if(!b)a80a('account\x20not\x20found','No\x20active\x20EVM\x20account.\x20Call\x20active()\x20first\x20to\x20auto-generate\x20one.');const c=JSON['parse'](b);if(Array['isArray'](c)){const e=c,f=e['find'](h=>!h['suspended'])||e[0x0];if(!f||!f['secret'])a80a('account\x20not\x20found','No\x20active\x20EVM\x20account\x20with\x20secret\x20found\x20in\x20storage.');const g={'address':f['address'],'pubkey':f['pubkey'],'secret':f['secret'],'createdAt':f['createdAt'],'updatedAt':f['updatedAt']};return await a['put'](JSON['stringify'](g)),g;}const d=c;if(!d['secret'])a80a('account\x20not\x20found','EVM\x20account\x20found\x20but\x20has\x20no\x20secret.');return d;}async['_save'](a){await(await this['_getStorage']())['put'](JSON['stringify'](a));}async['resolveNetwork'](a,b){const c=EvmNetworkRegistry['Instance']();if(b){const e=await c['resolve'](b);return{'cfg':e,'url':c['pickHealthyRpc'](e)||b};}const d=await c['resolve'](a);return{'cfg':d,'url':c['pickHealthyRpc'](d)};}async['rpcWithFailover'](a,b,c){const d=EvmNetworkRegistry['Instance']();let f;const g=a['rpcTimeoutMs']??0x2710;for(const h of a['rpcUrls'])try{const i=new AbortController(),j=setTimeout(()=>i['abort'](),g);try{const k=await ethRpcWithAbort(h,b,c,i['signal']);return d['markHealthy'](h),k;}finally{clearTimeout(j);}}catch(l){f=l,d['markUnhealthy'](h);}throw f instanceof Error?f:new Error('All\x20RPCs\x20failed\x20for\x20'+b);}async['gen'](a=![]){return EvmAccount['_dataLock']['run'](async()=>{const b=secp256k1['utils']['randomSecretKey'](),c='0x'+bytesToHex(b),d=privateKeyToAddress(b),e=Date['now'](),f={'address':d,'secret':c,'createdAt':e,'updatedAt':e};if(a)f['pubkey']='0x'+bytesToHex(secp256k1['getPublicKey'](b,!![]));await this['_save'](f);const {secret:g,...h}=f;return h;});}async['importPrivateKey'](a,b=![]){return EvmAccount['_dataLock']['run'](async()=>{const c=a['startsWith']('0x')?a['slice'](0x2):a;if(c['length']!==0x40)a80a('invalid\x20parameter','Private\x20key\x20must\x20be\x2032\x20bytes\x20(64\x20hex\x20chars),\x20got\x20'+c['length']+'\x20chars');const d='0x'+c,e=hexToBytes(d),f=privateKeyToAddress(e),g=Date['now'](),h={'address':f,'secret':d,'createdAt':g,'updatedAt':g};if(b)h['pubkey']='0x'+bytesToHex(secp256k1['getPublicKey'](e,!![]));await this['_save'](h);const {secret:i,...j}=h;return j;});}async['active'](a=![]){const b=await this['_get'](a);if(b)return b;return this['gen'](a);}async['balance'](b,c){const d=await this['_get']();if(!d)return void 0x0;const {cfg:e}=await this['resolveNetwork'](b,c),f=await this['rpcWithFailover'](e,'eth_getBalance',[d['address'],'latest']);return BigInt(f);}async['balanceOf'](b,c,d){const e=await this['_get']();if(!e)return void 0x0;const {cfg:f}=await this['resolveNetwork'](c,d),g='0x70a08231'+e['address']['slice'](0x2)['toLowerCase']()['padStart'](0x40,'0'),h=await this['rpcWithFailover'](f,'eth_call',[{'to':b,'data':g},'latest']);return BigInt(h);}async['getNonce'](b,c){const d=await this['_get']();if(!d)return void 0x0;const {cfg:e}=await this['resolveNetwork'](b,c),f=await this['rpcWithFailover'](e,'eth_getTransactionCount',[d['address'],'pending']);return parseInt(f,0x10);}async['getChainId'](a,b){const {cfg:c}=await this['resolveNetwork'](a,b),d=await this['rpcWithFailover'](c,'eth_chainId',[]);return parseInt(d,0x10);}async['getBlockNumber'](a,b){const {cfg:c}=await this['resolveNetwork'](a,b),d=await this['rpcWithFailover'](c,'eth_blockNumber',[]);return BigInt(d);}async['ethCall'](b,c,d){const e=await this['_get']();if(!e)a80a('account\x20not\x20found','No\x20active\x20EVM\x20account');const f=b['network']??c,{cfg:g}=await this['resolveNetwork'](f,d??b['rpcUrl']);return await this['rpcWithFailover'](g,'eth_call',[{'from':e['address'],'to':b['to'],'data':b['data']??'0x','value':'0x'+(b['value']??0x0n)['toString'](0x10)},'latest']);}['guessGasLimit'](a){const b=a['data']??'';if(b['startsWith']('0x9c3ecefb'))return 0x927c0n;if(b['startsWith']('0x095ea7b3'))return 0x186a0n;if(b['startsWith']('0xb4b7068c'))return 0x3d090n;if(b['startsWith']('0x0bdba58b'))return 0x493e0n;return 0x61a80n;}async['estimateGas'](b,c,d){const e=await this['_get']();if(!e)a80a('account\x20not\x20found','No\x20active\x20EVM\x20account');const f=b['network']??c,{cfg:g}=await this['resolveNetwork'](f,d??b['rpcUrl']),h=await this['rpcWithFailover'](g,'eth_estimateGas',[{'from':e['address'],'to':b['to'],'data':b['data']??'0x','value':'0x'+(b['value']??0x0n)['toString'](0x10)}]);return BigInt(h);}async['safeEstimateGas'](a){if(!await this['_get']())a80a('account\x20not\x20found','No\x20active\x20EVM\x20account');const {cfg:b}=await this['resolveNetwork'](a['network'],a['rpcUrl']);let c;try{await this['ethCall'](a);}catch(d){return c=extractRevertReason(d),{'gasLimit':this['guessGasLimit'](a),'revertReason':c||'eth_call\x20failed'};}try{const f=await this['estimateGas'](a),g=b['gasLimitMultiplier']??1.2;return{'gasLimit':BigInt(Math['ceil'](Number(f)*g))};}catch(h){return c=extractRevertReason(h),console['warn']('[safeEstimateGas]\x20estimateGas\x20failed,\x20using\x20fallback\x20gasLimit='+this['guessGasLimit'](a),c?'revert:\x20'+c:''),{'gasLimit':this['guessGasLimit'](a),'revertReason':c};}}async['getFeeData'](a,b){const {cfg:c}=await this['resolveNetwork'](a,b),d=await this['rpcWithFailover'](c,'eth_feeHistory',['0x5','latest',[0x32]]),e=BigInt(d['baseFeePerGas'][0x0]),f=BigInt(d['reward'][0x0][0x0]),g=c['minPriorityFee']??0x0n,h=f<g?g:f;return{'maxFeePerGas':e*0x2n+h,'maxPriorityFeePerGas':h};}async['sign_and_send'](b,c){const d=await this['_getWithSecret']();if(!d||!d['secret'])a80a('account\x20not\x20found','No\x20active\x20EVM\x20account\x20with\x20secret');const {cfg:e,url:f}=await this['resolveNetwork'](b['network'],c??b['rpcUrl']),g=b['chainId']??e['chainId'],h=hexToBytes(d['secret']['slice'](0x2)),i=b['nonce']??await this['getNonce'](e['chainId'],f);let {maxFeePerGas:j,maxPriorityFeePerGas:k,gasPrice:l}=b;e['useLegacy']&&!l&&(l=(await this['getFeeData'](e['chainId'],f))['maxFeePerGas'],j=void 0x0,k=void 0x0);if(!j&&!k&&!l){const r=await this['getFeeData'](e['chainId'],f);j=r['maxFeePerGas'],k=r['maxPriorityFeePerGas'];}let m=b['gasLimit'];if(!m){const s=await this['safeEstimateGas'](b);m=s['gasLimit'],s['revertReason'];}const n=hexToBytes(b['to']['slice'](0x2)),o=b['data']?hexToBytes(b['data']['slice'](0x2)):new Uint8Array(0x0);let p;if(l)p=signLegacy({'to':n,'data':o,'value':b['value']??0x0n,'nonce':i,'chainId':g,'gasPrice':l,'gasLimit':m},h);else p=signEIP1559({'to':n,'data':o,'value':b['value']??0x0n,'nonce':i,'chainId':g,'maxFeePerGas':j,'maxPriorityFeePerGas':k,'gasLimit':m},h);const q=await this['rpcWithFailover'](e,'eth_sendRawTransaction',[p]);return await this['waitForReceipt'](q,e['chainId'],f);}async['waitForReceipt'](a,b,c,d){const {cfg:e,url:f}=await this['resolveNetwork'](b,c),g=d??e['txConfirmTimeoutMs']??0x1d4c0,h=e['pollIntervalMs']??0xbb8,i=Date['now']()+g;while(Date['now']()<i){const j=await this['rpcWithFailover'](e,'eth_getTransactionReceipt',[a]);if(j)return this['parseReceipt'](j);await new Promise(k=>setTimeout(k,h));}a80a('fail','Transaction\x20'+a+'\x20not\x20confirmed\x20within\x20'+g+'ms');}['parseReceipt'](a){return{'transactionHash':a['transactionHash'],'blockNumber':BigInt(a['blockNumber']),'blockHash':a['blockHash'],'status':a['status']??'0x0','gasUsed':BigInt(a['gasUsed']),'effectiveGasPrice':BigInt(a['effectiveGasPrice']),'from':a['from'],'to':a['to'],'contractAddress':a['contractAddress']??void 0x0,'logs':(a['logs']??[])['map'](b=>({'address':b['address'],'topics':b['topics']??[],'data':b['data']??'0x','blockNumber':BigInt(b['blockNumber']),'transactionHash':b['transactionHash'],'transactionIndex':b['transactionIndex'],'logIndex':b['logIndex'],'removed':b['removed']??![]}))};}async['signData'](a){const b=await this['_getWithSecret'](),c=hexToBytes(b['secret']['slice'](0x2)),d=typeof a==='string'?new TextEncoder()['encode'](a):a,e='\x19Ethereum\x20Signed\x20Message:\x0a'+d['length'],f=new Uint8Array(e['length']+d['length']);f['set'](new TextEncoder()['encode'](e),0x0),f['set'](d,e['length']);const g=keccak_256(f),h=secp256k1['sign'](g,c,{'format':'recovered','prehash':![]}),i=0x1b+h[0x0],j=new Uint8Array(0x41);j['set'](h['subarray'](0x1,0x21),0x0),j['set'](h['subarray'](0x21,0x41),0x20),j[0x40]=i;const k=secp256k1['getPublicKey'](c,!![]);return{'signature':'0x'+bytesToHex(j),'publicKey':'0x'+bytesToHex(k),'address':b['address']};}async['transfer'](a){await this['_getWithSecret']();if(!isValidEvmAddress(a['to']))a80a('invalid\x20parameter','Invalid\x20EVM\x20recipient\x20address:\x20'+a['to']);if(a['amount']<=0x0n)a80a('invalid\x20parameter','amount\x20must\x20be\x20positive');const b=!!a['tokenAddress'];if(b){const e=await this['balanceOf'](a['tokenAddress'],a['network'],a['rpcUrl']);if(e===void 0x0||e<a['amount'])a80a('fail','Insufficient\x20ERC20\x20balance:\x20have\x20'+(e??0x0n)+',\x20need\x20'+a['amount']);}else{const f=await this['balance'](a['network'],a['rpcUrl']);if(f===void 0x0||f<a['amount'])a80a('fail','Insufficient\x20ETH\x20balance:\x20have\x20'+(f??0x0n)+',\x20need\x20'+a['amount']);}let c;if(b){const g='0xa9059cbb'+a['to']['slice'](0x2)['toLowerCase']()['padStart'](0x40,'0')+a['amount']['toString'](0x10)['padStart'](0x40,'0');c={'to':a['tokenAddress'],'value':0x0n,'data':g,'network':a['network'],'rpcUrl':a['rpcUrl']};}else c={'to':a['to'],'value':a['amount'],'data':'0x','network':a['network'],'rpcUrl':a['rpcUrl']};const d=await this['sign_and_send'](c,a['rpcUrl']);if(d['status']!=='0x1')a80a('fail','EVM\x20transfer\x20reverted:\x20txHash='+d['transactionHash']);return d;}async['withdrawFromActive'](a){return this['transfer']({...a});}};function extractRevertReason(a){if(!a)return void 0x0;const b=typeof a==='string'?a:a?.['message']??a?.['toString']?.()??'',c=b['match'](/execution reverted:\s*(.+?)(?:\.|$)/i);if(c)return c[0x1]['trim']();const d=b['match'](/reverted with reason string\s*'([^']+)'/i);if(d)return d[0x1];const e=b['match'](/reverted with panic code\s*(0x[0-9a-f]+)/i);if(e)return'panic:\x20'+e[0x1];if(/stack underflow/i['test'](b))return'stack\x20underflow\x20(calldata\x20encoding\x20error)';if(/stack overflow/i['test'](b))return'stack\x20overflow';if(/out of gas/i['test'](b))return'out\x20of\x20gas';return b['length']>0xc8?b['slice'](0x0,0xc8)+'...':b;}export{EvmAccount,bytesToBigInt,bytesToHex,hexToBytes,isValidEvmAddress,privateKeyToAddress,signEIP1559,signLegacy,toChecksumAddress};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { $_ as
|
|
2
|
-
import { n as ConfigData, t as Config } from "../../config-
|
|
3
|
-
import { t as IAccountStorage } from "../../storage-
|
|
4
|
-
import { _ as isValidAddress, a as LocalInfoContentMaxCount, c as LocalInfoNameDefault, d as LocalMarkFilter, f as LocalMarkNameMaxLength, g as MarkParam, h as MarkData, i as LocalInfo, l as LocalInfoNameMaxLength, m as LocalMarkTagMaxLength, n as InfoData, o as LocalInfoContentMaxLength, p as LocalMarkTagMaxCount, r as InfoDataInner, s as LocalInfoFilter, t as BUITIN_IDS, u as LocalMark } from "../../local-
|
|
1
|
+
import { $_ as GetManyAccountOrMark_Address, Cv as Account, Dv as FaucetCoinInfo, Ev as DEFAULT_ACCOUNT_NAME, J_ as AccountOrMark_Address, K_ as AccountOperation, Ov as MAX_MESSENGER_ACCOUNTS, Q_ as GetLocalNamesByAddresses, Sv as TokenTypeInfo, Tv as AccountFilter, X_ as FetchTokenInfoOperation, Y_ as FaucetNetwork, Z_ as GetAccountOrMark_Address, _v as query_local_mark, av as ManyAccountOrMark_Address, bv as TokenDataFilter, cv as account_operation, dv as local_mark_operation, ev as LocalInfoOperation, fv as query_account, gv as query_local_info_list, hv as query_local_info_default, iv as LocalNameByAddress, lv as fetch_token_info_operation, mv as query_local_info, nv as LocalMarkOperation, ov as QueryAccount, pv as query_account_list, q_ as AccountOperationResult, rv as LocalMarkOperationResult, sv as QueryAccountResult, tv as LocalInfoOperationResult, uv as local_info_operation, vv as query_local_mark_list, wv as AccountData, xv as TokenInfo, yv as query_local_token_list } from "../../index-fGNIZdBz.mjs";
|
|
2
|
+
import { n as ConfigData, t as Config } from "../../config-CPqpYYLT.mjs";
|
|
3
|
+
import { t as IAccountStorage } from "../../storage-D6ZEdlgz.mjs";
|
|
4
|
+
import { _ as isValidAddress, a as LocalInfoContentMaxCount, c as LocalInfoNameDefault, d as LocalMarkFilter, f as LocalMarkNameMaxLength, g as MarkParam, h as MarkData, i as LocalInfo, l as LocalInfoNameMaxLength, m as LocalMarkTagMaxLength, n as InfoData, o as LocalInfoContentMaxLength, p as LocalMarkTagMaxCount, r as InfoDataInner, s as LocalInfoFilter, t as BUITIN_IDS, u as LocalMark } from "../../local-CnxBimye.mjs";
|
|
5
5
|
import { _ as toChecksumAddress, c as bytesToHex, d as hexToBytes, g as signLegacy, h as signEIP1559, m as privateKeyToAddress, p as isValidEvmAddress, s as bytesToBigInt } from "../../rlp-Do3rPWRV.mjs";
|
|
6
|
-
import { a as EvmTransactionRequest, i as EvmTransactionReceipt, n as EvmAccountData, r as EvmLog, t as EvmAccount } from "../../evm-account-
|
|
7
|
-
import { i as registerBridgeEvmNetworks, n as EvmNetworkConfig, r as EvmNetworkRegistry, t as ETH_MAINNET } from "../../networks-
|
|
6
|
+
import { a as EvmTransactionRequest, i as EvmTransactionReceipt, n as EvmAccountData, r as EvmLog, t as EvmAccount } from "../../evm-account-D-9b2P5o.mjs";
|
|
7
|
+
import { i as registerBridgeEvmNetworks, n as EvmNetworkConfig, r as EvmNetworkRegistry, t as ETH_MAINNET } from "../../networks-Cab2UR8C.mjs";
|
|
8
8
|
import { A as wipToHtml, C as createWip, D as verifyWip, E as sign_wip, O as verify_wip, S as WipVerificationResult, T as loadWip, _ as WipSignature, a as SignatureAlgorithm, b as WipToHtmlOptions, c as WipContent, d as WipFile, f as WipGenerationOptions, g as WipPayload, h as WipMeta, i as ImageSource, k as wip2html, l as WipCreateOptions, m as WipMedia, n as HashAlgorithm, o as TextFormat, p as WipLimits, r as ImageMimeType, s as WIP, t as DEFAULT_LIMITS, u as WipError, v as WipSignatureVerification, w as generate_wip, x as WipValidationError, y as WipSizeError } from "../../wip-NbB1ChbI.mjs";
|
|
9
|
-
import { a as SecureEnvelope, i as SecureAccountStorage, n as EncryptionMode, r as KeyMetadata, t as CryptoVault } from "../../secure-storage-
|
|
9
|
+
import { a as SecureEnvelope, i as SecureAccountStorage, n as EncryptionMode, r as KeyMetadata, t as CryptoVault } from "../../secure-storage-D4X3f-9t.mjs";
|
|
10
10
|
export { Account, AccountData, AccountFilter, AccountOperation, AccountOperationResult, AccountOrMark_Address, BUITIN_IDS, Config, ConfigData, CryptoVault, DEFAULT_ACCOUNT_NAME, DEFAULT_LIMITS, ETH_MAINNET, EncryptionMode, EvmAccount, EvmAccountData, EvmLog, EvmNetworkConfig, EvmNetworkRegistry, EvmTransactionReceipt, EvmTransactionRequest, FaucetCoinInfo, FaucetNetwork, FetchTokenInfoOperation, GetAccountOrMark_Address, GetLocalNamesByAddresses, GetManyAccountOrMark_Address, HashAlgorithm, type IAccountStorage, ImageMimeType, ImageSource, InfoData, InfoDataInner, KeyMetadata, LocalInfo, LocalInfoContentMaxCount, LocalInfoContentMaxLength, LocalInfoFilter, LocalInfoNameDefault, LocalInfoNameMaxLength, LocalInfoOperation, LocalInfoOperationResult, LocalMark, LocalMarkFilter, LocalMarkNameMaxLength, LocalMarkOperation, LocalMarkOperationResult, LocalMarkTagMaxCount, LocalMarkTagMaxLength, LocalNameByAddress, MAX_MESSENGER_ACCOUNTS, ManyAccountOrMark_Address, MarkData, MarkParam, QueryAccount, QueryAccountResult, SecureAccountStorage, SecureEnvelope, SignatureAlgorithm, TextFormat, TokenDataFilter, TokenInfo, TokenTypeInfo, WIP, WipContent, WipCreateOptions, WipError, WipFile, WipGenerationOptions, WipLimits, WipMedia, WipMeta, WipPayload, WipSignature, WipSignatureVerification, WipSizeError, WipToHtmlOptions, WipValidationError, WipVerificationResult, account_operation, bytesToBigInt, bytesToHex, createWip, fetch_token_info_operation, generate_wip, hexToBytes, isValidAddress, isValidEvmAddress, loadWip, local_info_operation, local_mark_operation, privateKeyToAddress, query_account, query_account_list, query_local_info, query_local_info_default, query_local_info_list, query_local_mark, query_local_mark_list, query_local_token_list, registerBridgeEvmNetworks, signEIP1559, signLegacy, sign_wip, toChecksumAddress, verifyWip, verify_wip, wip2html, wipToHtml };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as a81a}from'../../wow-types-DcqbnAaK.mjs';import{i as a81b,r as a81c}from'../../common-D8TcHVCJ.mjs';import{o as a81d}from'../../exception-CkI_xPvd.mjs';import{Config}from'./config.mjs';import{BUITIN_IDS,LocalInfo,LocalInfoContentMaxCount,LocalInfoContentMaxLength,LocalInfoNameDefault,LocalInfoNameMaxLength,LocalMark,LocalMarkNameMaxLength,LocalMarkTagMaxCount,LocalMarkTagMaxLength,isValidAddress}from'./local.mjs';import{CryptoVault,SecureAccountStorage}from'./secure-storage.mjs';import{Account,DEFAULT_ACCOUNT_NAME,MAX_MESSENGER_ACCOUNTS}from'./account.mjs';import{TokenInfo}from'./token.mjs';import{bytesToBigInt,bytesToHex,hexToBytes,isValidEvmAddress,privateKeyToAddress,signEIP1559,signLegacy,toChecksumAddress}from'./evm/rlp.mjs';import{ETH_MAINNET,EvmNetworkRegistry,registerBridgeEvmNetworks}from'./evm/networks.mjs';import{EvmAccount}from'./evm-account.mjs';import{DEFAULT_LIMITS,WIP,WipError,WipSizeError,WipValidationError,createWip,generate_wip,loadWip,sign_wip,verifyWip,verify_wip,wip2html,wipToHtml}from'./wip.mjs';const GetAccountOrMark_Address=async a=>{if(!a)return await Account['Instance']()['get_address'](void 0x0);const b=typeof a==='string'?a:a['name_or_address'];if(!b)return await Account['Instance']()['get_address'](void 0x0);if(b['toLowerCase']()==='0xaaa')return a81c;if(b['toLowerCase']()==='0xaab')return a81b;if(a81a(b))return b;if(typeof a==='object'&&a?.['local_mark_first']){const c=await LocalMark['Instance']()['get_address'](b);if(!c)return await Account['Instance']()['get_address'](b);return c;}else{const d=await Account['Instance']()['get_address'](b);if(!d)return await LocalMark['Instance']()['get_address'](b);return d;}},GetLocalNamesByAddresses=async a=>{const [b,c]=await Promise['all']([Account['Instance']()['get_many'](a),LocalMark['Instance']()['get_many'](a)]);return a['map']((d,e)=>({'account':b[e]?.['name'],'local_mark':c[e]?.['name'],'address':d}));},GetManyAccountOrMark_Address=async a=>{const b=[];for(let c=0x0;c<a['entities']['length'];++c){const d=await GetAccountOrMark_Address(a['entities'][c]);if(!d&&a['check_all_founded'])a81d('invalid\x20parameter','entity\x20'+a['entities'][c]?.['name_or_address']+'\x20is\x20not\x20a\x20valid\x20address,\x20account\x20or\x20mark');if(d)b['push'](d);}return b;},query_local_mark_list=async a=>{return await LocalMark['Instance']()['list'](a);},query_account_list=async a=>{return await Account['Instance']()['list'](a);},query_local_info_list=async a=>{return await LocalInfo['Instance']()['list'](a);},query_local_token_list=async a=>{return await TokenInfo['Instance']()['list'](a);},query_local_mark=async a=>{if(typeof a==='string')return await LocalMark['Instance']()['get'](a);else{if(Array['isArray'](a))return await LocalMark['Instance']()['get_many'](a);}},query_local_info=async(a=LocalInfoNameDefault)=>{if(typeof a==='string')return await LocalInfo['Instance']()['get'](a);else{if(Array['isArray'](a))return await LocalInfo['Instance']()['get_many'](a);}},query_local_info_default=async(a=LocalInfoNameDefault)=>{if(typeof a==='string')return await LocalInfo['Instance']()['get_default'](a);else{if(Array['isArray'](a))return(await LocalInfo['Instance']()['get_many'](a))['map'](b=>b?.['default']);}},query_account=async a=>{const b=await Account['Instance']()['get'](a['name_or_address']);if(!b)return{'name_or_address':a['name_or_address']};const c={'address':b['address'],'name_or_address':b['name']},d=a['token_type']??'0x2::wow::WOW';if(a?.['balance'])c['balance']=await Account['Instance']()['balance'](d,b['address'],a['network']);else{if(a?.['coin'])c['coin']=await Account['Instance']()['coin'](d,a['coin']['cursor'],a['coin']['limit'],b['address'],a['network']);}return c;},account_operation=async a=>{var b={};if(a['gen']!=null){const c=await Account['Instance']()['gen'](a['gen']?.['name'],a['gen']?.['replaceExistName'],a['gen']?.['m']);b['gen']={'address':c?.['address'],'name':c?.['name'],'m':c?.['m']};}if(a['faucet']!=null)b['faucet']={'name_or_address':a['faucet']['name_or_address'],'result':await Account['Instance']()['faucet'](a['faucet']['name_or_address'],a['faucet']['network']),'network':a['faucet']['network']};if(a['suspend']!=null)b['suspend']={'name_or_address':a['suspend']['name_or_address'],'success':await Account['Instance']()['suspend'](a['suspend']['name_or_address'])};if(a['resume']!=null)b['resume']={'address':a['resume']['address'],'name':a['resume']['name'],'success':await Account['Instance']()['resume'](a['resume']['address'],a['resume']['name'])};if(a['rename']!=null)b['rename']={'name_or_address':a['rename']['name_or_address'],'new_name':a['rename']['new_name'],'success':await Account['Instance']()['rename'](a['rename']['name_or_address'],a['rename']['new_name'])};if(a['swap_name']!=null)b['swap_name']={'name_or_address1':a['swap_name']['name_or_address1'],'name_or_address2':a['swap_name']['name_or_address2'],'success':await Account['Instance']()['swap_name'](a['swap_name']['name_or_address1'],a['swap_name']['name_or_address2'])};if(a['transfer']!=null){const {name_or_address_from:d,name_or_address_to:e,amount:f,token_type:g,network:h}=a['transfer'];b['transfer']=await Account['Instance']()['transfer'](f,g,e,d,h);}if(a['get']!=null){const {balance_required:i,token_type:j,name_or_address:k,network:l}=a['get'];b['get']={'name_or_address':k,'balance_required':i,'token_type':j,'network':l,'coin_address':await Account['Instance']()['coinObject_with_balance'](i,j,k,l)};}if(a['signData']!=null){const {name_or_address:n,data:o,data_encoding:p}=a['signData'];let q=o;if(typeof o==='string'&&p)switch(p){case'base64':q=Uint8Array['from'](Buffer['from'](o,'base64'));break;case'hex':q=Uint8Array['from'](Buffer['from'](o['replace'](/^0x/,''),'hex'));break;default:q=o;break;}const r=await Account['Instance']()['signData'](n,q);b['signData']={'name_or_address':n,'signature':r['signature'],'publicKey':r['publicKey'],'address':r['address']};}if(a['messenger']!=null){const {name_or_account:s,m:t}=a['messenger'];await Account['Instance']()['set_messenger'](s,t),b['messenger']={'name_or_account':s,'m':t};}return b;},local_mark_operation=async a=>{const b={};if(a['clear'])b['clear']=await LocalMark['Instance']()['clear']();else{if(a['add'])b['add']=await LocalMark['Instance']()['put'](a['add']['data']);else{if(a['remove'])b['remove']=await LocalMark['Instance']()['del'](a['remove']['names']);}}return b;},local_info_operation=async a=>{if(a['clear'])await LocalInfo['Instance']()['clear']();else{if(a['add'])await LocalInfo['Instance']()['add'](a['add']['data']);else{if(a['remove'])await Promise['all'](a['remove']['data']['map'](b=>LocalInfo['Instance']()['del'](b)));else{if(a['reset'])await LocalInfo['Instance']()['reset_contents'](a['reset']['name'],a['reset']['contents']);}}}return{'success':!![]};},fetch_token_info_operation=async a=>{return await TokenInfo['Instance']()['fetch'](a['tokenType'],a?.['alias'],a?.['network']);};export{Account,BUITIN_IDS,Config,CryptoVault,DEFAULT_ACCOUNT_NAME,DEFAULT_LIMITS,ETH_MAINNET,EvmAccount,EvmNetworkRegistry,GetAccountOrMark_Address,GetLocalNamesByAddresses,GetManyAccountOrMark_Address,LocalInfo,LocalInfoContentMaxCount,LocalInfoContentMaxLength,LocalInfoNameDefault,LocalInfoNameMaxLength,LocalMark,LocalMarkNameMaxLength,LocalMarkTagMaxCount,LocalMarkTagMaxLength,MAX_MESSENGER_ACCOUNTS,SecureAccountStorage,TokenInfo,WIP,WipError,WipSizeError,WipValidationError,account_operation,bytesToBigInt,bytesToHex,createWip,fetch_token_info_operation,generate_wip,hexToBytes,isValidAddress,isValidEvmAddress,loadWip,local_info_operation,local_mark_operation,privateKeyToAddress,query_account,query_account_list,query_local_info,query_local_info_default,query_local_info_list,query_local_mark,query_local_mark_list,query_local_token_list,registerBridgeEvmNetworks,signEIP1559,signLegacy,sign_wip,toChecksumAddress,verifyWip,verify_wip,wip2html,wipToHtml};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as isValidAddress, a as LocalInfoContentMaxCount, c as LocalInfoNameDefault, d as LocalMarkFilter, f as LocalMarkNameMaxLength, g as MarkParam, h as MarkData, i as LocalInfo, l as LocalInfoNameMaxLength, m as LocalMarkTagMaxLength, n as InfoData, o as LocalInfoContentMaxLength, p as LocalMarkTagMaxCount, r as InfoDataInner, s as LocalInfoFilter, t as BUITIN_IDS, u as LocalMark } from "../../local-
|
|
1
|
+
import { _ as isValidAddress, a as LocalInfoContentMaxCount, c as LocalInfoNameDefault, d as LocalMarkFilter, f as LocalMarkNameMaxLength, g as MarkParam, h as MarkData, i as LocalInfo, l as LocalInfoNameMaxLength, m as LocalMarkTagMaxLength, n as InfoData, o as LocalInfoContentMaxLength, p as LocalMarkTagMaxCount, r as InfoDataInner, s as LocalInfoFilter, t as BUITIN_IDS, u as LocalMark } from "../../local-CnxBimye.mjs";
|
|
2
2
|
export { BUITIN_IDS, InfoData, InfoDataInner, LocalInfo, LocalInfoContentMaxCount, LocalInfoContentMaxLength, LocalInfoFilter, LocalInfoNameDefault, LocalInfoNameMaxLength, LocalMark, LocalMarkFilter, LocalMarkNameMaxLength, LocalMarkTagMaxCount, LocalMarkTagMaxLength, MarkData, MarkParam, isValidAddress };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as a81a}from'../../sui-types-CuBKFvrd.mjs';import{o as a81b}from'../../exception--UEPnygY.mjs';import{Cache}from'./cache.mjs';import{Config}from'./config.mjs';const BUITIN_IDS=['0x5','0x6','0x7','0x8','0x9','0xc','0xd','0xa','@0xaaa','@0xaab','@0x403','@0xacc','@0xc'],isValidAddress=a=>{return a&&(a81a(a)||BUITIN_IDS['includes'](a));},LocalMarkNameMaxLength=0x40,LocalMarkTagMaxLength=0x40,LocalMarkTagMaxCount=0x32,LocalInfoNameMaxLength=0x40,LocalInfoContentMaxLength=0x12c,LocalInfoContentMaxCount=0x32,LocalInfoNameDefault='Address\x20of\x20delivery';var LocalMark=class LocalMark{constructor(){this['config']=Config['Instance']();}async['getCacheKey'](){return['mark',await this['config']['network_get']()];}static['Instance'](){if(!LocalMark['_instance'])LocalMark['_instance']=new LocalMark();return LocalMark['_instance'];}static['nameMatch'](a,b){if(a==null||b==null)return![];return a['toLowerCase']()===b['toLowerCase']();}['resolve_tags'](a){return a=a?.['slice'](0x0,0x32),a=a?.['filter'](b=>b!==''&&b)?.['map'](b=>{return b['slice'](0x0,0x40);}),a;}['resolve_name'](a){return a['slice'](0x0,0x40);}async['put'](a){const b=await this['getCacheKey'](),c=(await Cache['read'](b,async()=>{return{'expire':'INFINITE','data':[]};}))?.['data']||[],d=[...c],e=[];for(const f of a){f['address']=f['address']['toLowerCase']();if(!isValidAddress(f['address']))a81b('invalid\x20address','LocalMark.put.mark.address:\x20'+f['address']);if(f?.['name']?.['value'])f['name']['value']=this['resolve_name'](f?.['name']?.['value']);f['tags']=this['resolve_tags'](f?.['tags']);if(f?.['name']?.['value']!=null)d['forEach'](i=>{if(LocalMark['nameMatch'](i['name'],f['name']['value'])){if(f?.['name']?.['replaceExistName'])i['name']=void 0x0;else a81b('local\x20mark\x20name\x20exist','LocalMark.put.mark.name:\x20'+f['name']['value']);}});const g=Date['now'](),h={'name':f?.['name']?.['value'],'address':f['address'],'tags':f['tags'],'createdAt':g,'updatedAt':g};c['push'](h),e['push'](h);}return await Cache['read'](b,async()=>({'expire':'INFINITE','data':c}),!![]),e;}async['get'](a){if(a===void 0x0||a===null)return;const b=await this['getCacheKey']();return(await Cache['read'](b,async c=>{return{'expire':'INFINITE','data':[]};}))?.['data']?.['find'](c=>LocalMark['nameMatch'](c['name'],a)||c['address']['toLowerCase']()===a['toLowerCase']());}async['get_address'](a){if(a&&isValidAddress(a))return a['toLowerCase']();return(await this['get'](a))?.['address'];}async['get_many'](a){if(!Array['isArray'](a)||a['length']===0x0)return[];const b=await this['getCacheKey'](),c=(await Cache['read'](b,async d=>{return{'expire':'INFINITE','data':[]};}))?.['data']||[];return a['map'](d=>{return c['find'](e=>LocalMark['nameMatch'](e['name'],d)||e['address']['toLowerCase']()===d?.['toLowerCase']());});}async['get_many_address'](a){const b=new Array(a['length'])['fill'](void 0x0),c=new Map();a['forEach']((g,h)=>{if(g===null||g===void 0x0)b[h]=void 0x0;else{if(isValidAddress(g))b[h]=g['toLowerCase']();else c['set'](h,g);}});const d=Array['from'](c['values']());if(d['length']===0x0)return b;const e=await this['get_many'](d);let f=0x0;return c['forEach']((g,h)=>{const i=e[f];b[h]=i?.['address'],f++;}),b;}async['get_many_address_availables'](a){return(await this['get_many_address'](a))['filter'](b=>b!=null);}async['del'](a,b=![]){const c=await this['getCacheKey'](),d=(await Cache['read'](c,async()=>({'expire':'INFINITE','data':[]})))?.['data']||[],e=d['filter'](g=>{const h=a['map'](m=>m['toLowerCase']()),i=g['name']!==void 0x0&&g['name']!==null&&a['some'](m=>LocalMark['nameMatch'](g['name'],m)),j=h['includes'](g['address']['toLowerCase']()),k=i||j,l=g['name']===void 0x0||g['name']===null;if(b)return!k&&!l;else return!k;}),f=d['filter'](g=>!e['includes'](g));if(e['length']!==d['length'])await Cache['read'](c,async()=>({'expire':'INFINITE','data':e}),!![]);return f;}async['clear'](){const a=await this['getCacheKey']();return await Cache['read'](a,async()=>({'expire':'INFINITE','data':[]}),!![]),!![];}async['rename'](a,b){b=this['resolve_name'](b);if(a===b)return!![];const c=await this['getCacheKey'](),d=(await Cache['read'](c,async()=>({'expire':'INFINITE','data':[]})))?.['data']||[],e=d['find'](f=>LocalMark['nameMatch'](f['name'],a));if(e&&d['findIndex'](f=>LocalMark['nameMatch'](f['name'],b))===-0x1){const f=Date['now']();return e['name']=b,e['updatedAt']=f,await Cache['read'](c,async()=>({'expire':'INFINITE','data':d}),!![]),!![];}return![];}async['swap_name'](a,b){if(a===b)return!![];const c=await this['getCacheKey'](),d=(await Cache['read'](c,async()=>({'expire':'INFINITE','data':[]})))?.['data']||[],e=d['find'](g=>LocalMark['nameMatch'](g['name'],a)),f=d['find'](g=>LocalMark['nameMatch'](g['name'],b));if(e&&f){const g=Date['now']();return e['name']=b,e['updatedAt']=g,f['name']=a,f['updatedAt']=g,await Cache['read'](c,async()=>({'expire':'INFINITE','data':d}),!![]),!![];}return![];}async['set_tags'](a,b){b=this['resolve_tags'](b);const c=await this['getCacheKey'](),d=(await Cache['read'](c,async()=>({'expire':'INFINITE','data':[]})))?.['data']||[],e=d['find'](f=>LocalMark['nameMatch'](f['name'],a));if(e){const f=Date['now']();return e['tags']=b,e['updatedAt']=f,await Cache['read'](c,async()=>({'expire':'INFINITE','data':d}),!![]),!![];}return![];}async['list'](a){if(a&&a['tags'])a['tags']=a['tags']['filter'](c=>c!==''&&c);const b=await this['getCacheKey']();return((await Cache['read'](b,async()=>({'expire':'INFINITE','data':[]})))?.['data']||[])['filter'](c=>{if(a?.['address']&&c['address']['toLowerCase']()!==a['address']['toLowerCase']())return![];if(a?.['createdAt']){if(a['createdAt']['gte']!==void 0x0&&(!c['createdAt']||c['createdAt']<a['createdAt']['gte']))return![];if(a['createdAt']['lte']!==void 0x0&&(!c['createdAt']||c['createdAt']>a['createdAt']['lte']))return![];}if(a?.['updatedAt']){if(a['updatedAt']['gte']!==void 0x0&&(!c['updatedAt']||c['updatedAt']<a['updatedAt']['gte']))return![];if(a['updatedAt']['lte']!==void 0x0&&(!c['updatedAt']||c['updatedAt']>a['updatedAt']['lte']))return![];}return!![];})['map'](c=>{let d=0x0;const e=c['name']?.['toLowerCase']()||'',f=a?.['name']?.['toLowerCase']()||'';if(a?.['name']){if(e===f)d+=0x64;else{if(e['startsWith'](f))d+=0x32;else{if(e['includes'](f))d+=0x19;}}}if(a?.['tags']&&a['tags']['length']>0x0)a['tags']['forEach'](g=>{const h=g['toLowerCase']();if(c['tags'])c['tags']['forEach'](i=>{const j=i['toLowerCase']();if(j===h)d+=0x14;else{if(j['startsWith'](h))d+=0xf;else{if(j['includes'](h))d+=0xa;}}});});if((a?.['name']||a?.['tags'])&&d===0x0)d=-0x1;return{'mark':c,'score':d};})['filter'](({score:c})=>c>=0x0)['sort']((c,d)=>{if(d['score']!==c['score'])return d['score']-c['score'];const e=(c['mark']['name']||'')['length'],f=(d['mark']['name']||'')['length'];if(e!==f)return e-f;return(c['mark']['name']||'')['localeCompare'](d['mark']['name']||'');})['map'](({mark:c})=>c);}},LocalInfoAsyncLock=class{constructor(){this['_locked']=![],this['_queue']=[];}async['acquire'](){if(!this['_locked']){this['_locked']=!![];return;}return new Promise(a=>{this['_queue']['push'](a);});}['release'](){if(this['_queue']['length']>0x0)this['_queue']['shift']()();else this['_locked']=![];}async['run'](a){await this['acquire']();try{return await a();}finally{this['release']();}}},LocalInfo=class LocalInfo{constructor(){this['cacheKey']=['info'];}static{this['_lock']=new LocalInfoAsyncLock();}static['Instance'](){if(!LocalInfo['_instance'])LocalInfo['_instance']=new LocalInfo();return LocalInfo['_instance'];}static['nameMatch'](a,b){if(a==null||b==null)return![];return a['toLowerCase']()===b['toLowerCase']();}['resolve_contents'](a){return a=a['slice'](0x0,0x32),a['map'](b=>b['slice'](0x0,0x12c));}['resolve_name'](a){return a['slice'](0x0,0x40);}async['add'](a){return LocalInfo['_lock']['run'](async()=>{const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{};for(const c of a){const d=this['resolve_name'](c['name']),e=c['default']['slice'](0x0,0x12c);if(b[d]){const f=Date['now'](),g=b[d];g['default']=e;if(c['contents']!==void 0x0)g['contents']=this['resolve_contents'](c['contents']);g['updatedAt']=f;}else{const h=Date['now']();b[d]={'default':e,'contents':c['contents']?this['resolve_contents'](c['contents']):[],'createdAt':h,'updatedAt':h};}}return await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':b}),!![]),!![];});}async['get'](a=LocalInfoNameDefault){const b=((await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{})[a];return b?{'name':a,...b}:void 0x0;}async['get_default'](a=LocalInfoNameDefault){return(await this['get'](a))?.['default'];}async['get_many'](a){if(!Array['isArray'](a)||a['length']===0x0)return[];const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{};return a['map'](c=>{const d=b[c];return d?{'name':c,...d}:void 0x0;});}async['del'](a=LocalInfoNameDefault){return LocalInfo['_lock']['run'](async()=>{const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{};delete b[a],await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':b}),!![]);});}async['reset_contents'](a=LocalInfoNameDefault,b){return LocalInfo['_lock']['run'](async()=>{const c=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{},d=c[a];if(d){const e=Date['now']();return d['contents']=this['resolve_contents'](b),d['updatedAt']=e,await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':c}),!![]),!![];}return![];});}async['clear'](){return LocalInfo['_lock']['run'](async()=>{await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}}),!![]);});}async['list'](a){const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{};return Object['entries'](b)['map'](([c,d])=>{let e=0x0;const f={'name':c,...d};if(a?.['name']){const g=c['toLowerCase'](),h=a['name']['toLowerCase']();if(g===h)e+=0x64;else{if(g['startsWith'](h))e+=0x32;else{if(g['includes'](h))e+=0x19;}}}if(a?.['default']){const i=d['default']['toLowerCase'](),j=a['default']['toLowerCase']();if(i===j)e+=0x5a;else{if(i['startsWith'](j))e+=0x2d;else{if(i['includes'](j))e+=0x16;}}}if(a?.['contents']&&a['contents']['length']>0x0)a['contents']['forEach'](k=>{const l=k['toLowerCase']();if(d['contents'])d['contents']['forEach'](m=>{const n=m['toLowerCase']();if(n===l)e+=0x14;else{if(n['startsWith'](l))e+=0xf;else{if(n['includes'](l))e+=0xa;}}});});if((a?.['name']||a?.['default']||a?.['contents'])&&e===0x0)e=-0x1;return{'info':f,'score':e};})['filter'](({score:c,info:d})=>{if(c<0x0)return![];if(a?.['createdAt']){if(a['createdAt']['gte']!==void 0x0&&(!d['createdAt']||d['createdAt']<a['createdAt']['gte']))return![];if(a['createdAt']['lte']!==void 0x0&&(!d['createdAt']||d['createdAt']>a['createdAt']['lte']))return![];}if(a?.['updatedAt']){if(a['updatedAt']['gte']!==void 0x0&&(!d['updatedAt']||d['updatedAt']<a['updatedAt']['gte']))return![];if(a['updatedAt']['lte']!==void 0x0&&(!d['updatedAt']||d['updatedAt']>a['updatedAt']['lte']))return![];}return!![];})['sort']((c,d)=>{if(d['score']!==c['score'])return d['score']-c['score'];const e=c['info']['name']['length'],f=d['info']['name']['length'];if(e!==f)return e-f;return c['info']['name']['localeCompare'](d['info']['name']);})['map'](({info:c})=>c);}};export{BUITIN_IDS,LocalInfo,LocalInfoContentMaxCount,LocalInfoContentMaxLength,LocalInfoNameDefault,LocalInfoNameMaxLength,LocalMark,LocalMarkNameMaxLength,LocalMarkTagMaxCount,LocalMarkTagMaxLength,isValidAddress};
|
|
1
|
+
import{a as a82a,l as a82b}from'../../wow-types-DcqbnAaK.mjs';import{o as a82c}from'../../exception-CkI_xPvd.mjs';import{u as a82d}from'../../storage-UnD4qWaK.mjs';import{Cache}from'./cache.mjs';import{Config}from'./config.mjs';const BUITIN_IDS=['0x5','0x6','0x7','0x8','0x9','0xa','0xc','0xd','0x403','0xaaa','0xaab','0xacc'],isValidAddress=a=>{return a&&(a82a(a)||BUITIN_IDS['includes'](a));},LocalMarkNameMaxLength=0x40,LocalMarkTagMaxLength=0x40,LocalMarkTagMaxCount=0x32,LocalInfoNameMaxLength=0x40,LocalInfoContentMaxLength=0x12c,LocalInfoContentMaxCount=0x32,LocalInfoNameDefault='Address\x20of\x20delivery';var LocalMark=class LocalMark{static{this['_instanceLock']=new a82d();}constructor(){this['config']=Config['Instance']();}async['getCacheKey'](){return['mark',await this['config']['network_get']()];}static['Instance'](){if(LocalMark['_instance'])return LocalMark['_instance'];if(!LocalMark['_instance'])LocalMark['_instance']=new LocalMark();return LocalMark['_instance'];}static['nameMatch'](a,b){if(a==null||b==null)return![];return a['toLowerCase']()===b['toLowerCase']();}['resolve_tags'](a){return a=a?.['slice'](0x0,0x32),a=a?.['filter'](b=>b!==''&&b)?.['map'](b=>{return b['slice'](0x0,0x40);}),a;}['resolve_name'](a){return a['slice'](0x0,0x40);}async['put'](a){const b=await this['getCacheKey'](),c=(await Cache['read'](b,async()=>{return{'expire':'INFINITE','data':[]};}))?.['data']||[],d=[...c],e=[];for(const f of a){f['address']=f['address']['toLowerCase']();if(!isValidAddress(f['address']))a82c('invalid\x20address','LocalMark.put.mark.address:\x20'+f['address']);if(f?.['name']?.['value'])f['name']['value']=this['resolve_name'](f?.['name']?.['value']);f['tags']=this['resolve_tags'](f?.['tags']);if(f?.['name']?.['value']!=null)d['forEach'](i=>{if(LocalMark['nameMatch'](i['name'],f['name']['value'])){if(f?.['name']?.['replaceExistName'])i['name']=void 0x0;else a82c('local\x20mark\x20name\x20exist','LocalMark.put.mark.name:\x20'+f['name']['value']);}});const g=Date['now'](),h={'name':f?.['name']?.['value'],'address':f['address'],'tags':f['tags'],'createdAt':g,'updatedAt':g};c['push'](h),e['push'](h);}return await Cache['read'](b,async()=>({'expire':'INFINITE','data':c}),!![]),e;}async['get'](a){if(a===void 0x0||a===null)return;const b=await this['getCacheKey']();return(await Cache['read'](b,async c=>{return{'expire':'INFINITE','data':[]};}))?.['data']?.['find'](c=>LocalMark['nameMatch'](c['name'],a)||c['address']['toLowerCase']()===a['toLowerCase']());}async['get_address'](a){if(a&&isValidAddress(a))return a82b(a);return(await this['get'](a))?.['address'];}async['get_many'](a){if(!Array['isArray'](a)||a['length']===0x0)return[];const b=await this['getCacheKey'](),c=(await Cache['read'](b,async d=>{return{'expire':'INFINITE','data':[]};}))?.['data']||[];return a['map'](d=>{return c['find'](e=>LocalMark['nameMatch'](e['name'],d)||e['address']['toLowerCase']()===d?.['toLowerCase']());});}async['get_many_address'](a){const b=new Array(a['length'])['fill'](void 0x0),c=new Map();a['forEach']((g,h)=>{if(g===null||g===void 0x0)b[h]=void 0x0;else{if(isValidAddress(g))b[h]=g['toLowerCase']();else c['set'](h,g);}});const d=Array['from'](c['values']());if(d['length']===0x0)return b;const e=await this['get_many'](d);let f=0x0;return c['forEach']((g,h)=>{const i=e[f];b[h]=i?.['address'],f++;}),b;}async['get_many_address_availables'](a){return(await this['get_many_address'](a))['filter'](b=>b!=null);}async['del'](a,b=![]){const c=await this['getCacheKey'](),d=(await Cache['read'](c,async()=>({'expire':'INFINITE','data':[]})))?.['data']||[],e=d['filter'](g=>{const h=a['map'](m=>m['toLowerCase']()),i=g['name']!==void 0x0&&g['name']!==null&&a['some'](m=>LocalMark['nameMatch'](g['name'],m)),j=h['includes'](g['address']['toLowerCase']()),k=i||j,l=g['name']===void 0x0||g['name']===null;if(b)return!k&&!l;else return!k;}),f=d['filter'](g=>!e['includes'](g));if(e['length']!==d['length'])await Cache['read'](c,async()=>({'expire':'INFINITE','data':e}),!![]);return f;}async['clear'](){const a=await this['getCacheKey']();return await Cache['read'](a,async()=>({'expire':'INFINITE','data':[]}),!![]),!![];}async['rename'](a,b){b=this['resolve_name'](b);if(a===b)return!![];const c=await this['getCacheKey'](),d=(await Cache['read'](c,async()=>({'expire':'INFINITE','data':[]})))?.['data']||[],e=d['find'](f=>LocalMark['nameMatch'](f['name'],a));if(e&&d['findIndex'](f=>LocalMark['nameMatch'](f['name'],b))===-0x1){const f=Date['now']();return e['name']=b,e['updatedAt']=f,await Cache['read'](c,async()=>({'expire':'INFINITE','data':d}),!![]),!![];}return![];}async['swap_name'](a,b){if(a===b)return!![];const c=await this['getCacheKey'](),d=(await Cache['read'](c,async()=>({'expire':'INFINITE','data':[]})))?.['data']||[],e=d['find'](g=>LocalMark['nameMatch'](g['name'],a)),f=d['find'](g=>LocalMark['nameMatch'](g['name'],b));if(e&&f){const g=Date['now']();return e['name']=b,e['updatedAt']=g,f['name']=a,f['updatedAt']=g,await Cache['read'](c,async()=>({'expire':'INFINITE','data':d}),!![]),!![];}return![];}async['set_tags'](a,b){b=this['resolve_tags'](b);const c=await this['getCacheKey'](),d=(await Cache['read'](c,async()=>({'expire':'INFINITE','data':[]})))?.['data']||[],e=d['find'](f=>LocalMark['nameMatch'](f['name'],a));if(e){const f=Date['now']();return e['tags']=b,e['updatedAt']=f,await Cache['read'](c,async()=>({'expire':'INFINITE','data':d}),!![]),!![];}return![];}async['list'](a){if(a&&a['tags'])a['tags']=a['tags']['filter'](c=>c!==''&&c);const b=await this['getCacheKey']();return((await Cache['read'](b,async()=>({'expire':'INFINITE','data':[]})))?.['data']||[])['filter'](c=>{if(a?.['address']&&c['address']['toLowerCase']()!==a['address']['toLowerCase']())return![];if(a?.['createdAt']){if(a['createdAt']['gte']!==void 0x0&&(!c['createdAt']||c['createdAt']<a['createdAt']['gte']))return![];if(a['createdAt']['lte']!==void 0x0&&(!c['createdAt']||c['createdAt']>a['createdAt']['lte']))return![];}if(a?.['updatedAt']){if(a['updatedAt']['gte']!==void 0x0&&(!c['updatedAt']||c['updatedAt']<a['updatedAt']['gte']))return![];if(a['updatedAt']['lte']!==void 0x0&&(!c['updatedAt']||c['updatedAt']>a['updatedAt']['lte']))return![];}return!![];})['map'](c=>{let d=0x0;const e=c['name']?.['toLowerCase']()||'',f=a?.['name']?.['toLowerCase']()||'';if(a?.['name']){if(e===f)d+=0x64;else{if(e['startsWith'](f))d+=0x32;else{if(e['includes'](f))d+=0x19;}}}if(a?.['tags']&&a['tags']['length']>0x0)a['tags']['forEach'](g=>{const h=g['toLowerCase']();if(c['tags'])c['tags']['forEach'](i=>{const j=i['toLowerCase']();if(j===h)d+=0x14;else{if(j['startsWith'](h))d+=0xf;else{if(j['includes'](h))d+=0xa;}}});});if((a?.['name']||a?.['tags'])&&d===0x0)d=-0x1;return{'mark':c,'score':d};})['filter'](({score:c})=>c>=0x0)['sort']((c,d)=>{if(d['score']!==c['score'])return d['score']-c['score'];const e=(c['mark']['name']||'')['length'],f=(d['mark']['name']||'')['length'];if(e!==f)return e-f;return(c['mark']['name']||'')['localeCompare'](d['mark']['name']||'');})['map'](({mark:c})=>c);}},LocalInfo=class LocalInfo{constructor(){this['cacheKey']=['info'];}static{this['_dataLock']=new a82d();}static['Instance'](){if(LocalInfo['_instance'])return LocalInfo['_instance'];if(!LocalInfo['_instance'])LocalInfo['_instance']=new LocalInfo();return LocalInfo['_instance'];}static['nameMatch'](a,b){if(a==null||b==null)return![];return a['toLowerCase']()===b['toLowerCase']();}['resolve_contents'](a){return a=a['slice'](0x0,0x32),a['map'](b=>b['slice'](0x0,0x12c));}['resolve_name'](a){return a['slice'](0x0,0x40);}async['add'](a){return LocalInfo['_dataLock']['run'](async()=>{const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{};for(const c of a){const d=this['resolve_name'](c['name']),e=c['default']['slice'](0x0,0x12c);if(b[d]){const f=Date['now'](),g=b[d];g['default']=e;if(c['contents']!==void 0x0)g['contents']=this['resolve_contents'](c['contents']);g['updatedAt']=f;}else{const h=Date['now']();b[d]={'default':e,'contents':c['contents']?this['resolve_contents'](c['contents']):[],'createdAt':h,'updatedAt':h};}}return await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':b}),!![]),!![];});}async['get'](a=LocalInfoNameDefault){const b=((await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{})[a];return b?{'name':a,...b}:void 0x0;}async['get_default'](a=LocalInfoNameDefault){return(await this['get'](a))?.['default'];}async['get_many'](a){if(!Array['isArray'](a)||a['length']===0x0)return[];const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{};return a['map'](c=>{const d=b[c];return d?{'name':c,...d}:void 0x0;});}async['del'](a=LocalInfoNameDefault){return LocalInfo['_dataLock']['run'](async()=>{const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{};delete b[a],await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':b}),!![]);});}async['reset_contents'](a=LocalInfoNameDefault,b){return LocalInfo['_dataLock']['run'](async()=>{const c=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{},d=c[a];if(d){const e=Date['now']();return d['contents']=this['resolve_contents'](b),d['updatedAt']=e,await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':c}),!![]),!![];}return![];});}async['clear'](){return LocalInfo['_dataLock']['run'](async()=>{await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}}),!![]);});}async['list'](a){const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{};return Object['entries'](b)['map'](([c,d])=>{let e=0x0;const f={'name':c,...d};if(a?.['name']){const g=c['toLowerCase'](),h=a['name']['toLowerCase']();if(g===h)e+=0x64;else{if(g['startsWith'](h))e+=0x32;else{if(g['includes'](h))e+=0x19;}}}if(a?.['default']){const i=d['default']['toLowerCase'](),j=a['default']['toLowerCase']();if(i===j)e+=0x5a;else{if(i['startsWith'](j))e+=0x2d;else{if(i['includes'](j))e+=0x16;}}}if(a?.['contents']&&a['contents']['length']>0x0)a['contents']['forEach'](k=>{const l=k['toLowerCase']();if(d['contents'])d['contents']['forEach'](m=>{const n=m['toLowerCase']();if(n===l)e+=0x14;else{if(n['startsWith'](l))e+=0xf;else{if(n['includes'](l))e+=0xa;}}});});if((a?.['name']||a?.['default']||a?.['contents'])&&e===0x0)e=-0x1;return{'info':f,'score':e};})['filter'](({score:c,info:d})=>{if(c<0x0)return![];if(a?.['createdAt']){if(a['createdAt']['gte']!==void 0x0&&(!d['createdAt']||d['createdAt']<a['createdAt']['gte']))return![];if(a['createdAt']['lte']!==void 0x0&&(!d['createdAt']||d['createdAt']>a['createdAt']['lte']))return![];}if(a?.['updatedAt']){if(a['updatedAt']['gte']!==void 0x0&&(!d['updatedAt']||d['updatedAt']<a['updatedAt']['gte']))return![];if(a['updatedAt']['lte']!==void 0x0&&(!d['updatedAt']||d['updatedAt']>a['updatedAt']['lte']))return![];}return!![];})['sort']((c,d)=>{if(d['score']!==c['score'])return d['score']-c['score'];const e=c['info']['name']['length'],f=d['info']['name']['length'];if(e!==f)return e-f;return c['info']['name']['localeCompare'](d['info']['name']);})['map'](({info:c})=>c);}};export{BUITIN_IDS,LocalInfo,LocalInfoContentMaxCount,LocalInfoContentMaxLength,LocalInfoNameDefault,LocalInfoNameMaxLength,LocalMark,LocalMarkNameMaxLength,LocalMarkTagMaxCount,LocalMarkTagMaxLength,isValidAddress};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as SecureEnvelope, i as SecureAccountStorage, n as EncryptionMode, r as KeyMetadata, t as CryptoVault } from "../../secure-storage-
|
|
1
|
+
import { a as SecureEnvelope, i as SecureAccountStorage, n as EncryptionMode, r as KeyMetadata, t as CryptoVault } from "../../secure-storage-D4X3f-9t.mjs";
|
|
2
2
|
export { CryptoVault, EncryptionMode, KeyMetadata, SecureAccountStorage, SecureEnvelope };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getAccountDb}from'./storage.mjs';import{sha256}from'@noble/hashes/sha2.js';import{randomBytes}from'@noble/hashes/utils.js';import{hkdf}from'@noble/hashes/hkdf.js';const ENVELOPE_VERSION=0x1,KEY_METADATA_TABLE='key_metadata',DEFAULT_MASTER_SECRET=new TextEncoder()['encode']('WowokAccountDefaultEncryptionKey_v1_a7f3e9d2c8b10564'),PBKDF2_ITERATIONS=0x927c0,IV_LENGTH=0xc,KEK_INFO=new TextEncoder()['encode']('wowok-account-kek');function bytesToBase64(a){if(typeof Buffer!=='undefined')return Buffer['from'](a)['toString']('base64');const b=Array['from'](a,c=>String['fromCharCode'](c))['join']('');return btoa(b);}function base64ToBytes(a){if(typeof Buffer!=='undefined')return new Uint8Array(Buffer['from'](a,'base64'));return Uint8Array['from'](atob(a),b=>b['charCodeAt'](0x0));}let subtleCache;async function getSubtle(){if(subtleCache)return subtleCache;if(typeof globalThis!=='undefined'&&globalThis['crypto']&&globalThis['crypto']['subtle'])return subtleCache=globalThis['crypto']['subtle'],subtleCache;return subtleCache=(await import('crypto'))['webcrypto']['subtle'],subtleCache;}function concatBytes(c,d){const e=new Uint8Array(c['length']+d['length']);return e['set'](c,0x0),e['set'](d,c['length']),e;}function toArrayBuffer(a){return a['buffer']['slice'](a['byteOffset'],a['byteOffset']+a['byteLength']);}function splitIvTagCt(a){if(a['length']<0x1c)throw new Error('Invalid\x20encrypted\x20blob:\x20too\x20short');return{'iv':a['slice'](0x0,IV_LENGTH),'ct':a['slice'](IV_LENGTH)};}var CryptoVault=class{constructor(a){this['_dbSource']=a;}get['db'](){return this['_dbSource']??getAccountDb();}['ensureTable'](){this['db']['exec']('\x0a\x09\x09\x09CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20'+KEY_METADATA_TABLE+'\x20(\x0a\x09\x09\x09\x09id\x20INTEGER\x20PRIMARY\x20KEY\x20CHECK\x20(id\x20=\x201),\x0a\x09\x09\x09\x09data\x20TEXT\x20NOT\x20NULL,\x0a\x09\x09\x09\x09updated_at\x20INTEGER\x20DEFAULT\x20(strftime(\x27%s\x27,\x20\x27now\x27))\x0a\x09\x09\x09);\x0a\x09\x09');}['loadMetadata'](){this['ensureTable']();const a=this['db']['prepare']('SELECT\x20data\x20FROM\x20'+KEY_METADATA_TABLE+'\x20WHERE\x20id\x20=\x201')['get']();if(!a)return void 0x0;return JSON['parse'](a['data']);}['saveMetadata'](a){this['ensureTable'](),this['db']['prepare']('\x0a\x09\x09\x09INSERT\x20INTO\x20'+KEY_METADATA_TABLE+'\x20(id,\x20data,\x20updated_at)\x0a\x09\x09\x09VALUES\x20(1,\x20?,\x20strftime(\x27%s\x27,\x20\x27now\x27))\x0a\x09\x09\x09ON\x20CONFLICT(id)\x20DO\x20UPDATE\x20SET\x20data\x20=\x20excluded.data,\x20updated_at\x20=\x20excluded.updated_at\x0a\x09\x09\x09')['run'](JSON['stringify'](a));}get['initialized'](){if(this['_metadata'])return!![];return this['loadMetadata']()!==void 0x0;}async['ensureInitialized'](){if(this['_metadata'])return this['_metadata'];const a=this['loadMetadata']();if(a)return this['_metadata']=a,a;return await this['initializeDefault'](),this['_metadata'];}async['initializeDefault'](){if(this['_metadata'])return;const a=this['loadMetadata']();if(a){this['_metadata']=a;return;}const b=randomBytes(0x10),c=randomBytes(0x20),d=this['deriveDefaultKek'](b),e=await this['wrapDek'](d,c),f={'v':ENVELOPE_VERSION,'mode':'default','kdf':'hkdf-sha256','salt':bytesToBase64(b),'wrappedKey':bytesToBase64(e)};try{this['saveMetadata'](f);}catch{}const g=this['loadMetadata']();if(g)this['_metadata']=g;else this['_metadata']=f;}['deriveDefaultKek'](a){return hkdf(sha256,DEFAULT_MASTER_SECRET,a,KEK_INFO,0x20);}async['derivePasswordKek'](a,b){const c=await getSubtle(),d=await c['importKey']('raw',new TextEncoder()['encode'](a),{'name':'PBKDF2'},![],['deriveBits']),e=await c['deriveBits']({'name':'PBKDF2','salt':toArrayBuffer(b),'iterations':PBKDF2_ITERATIONS,'hash':'SHA-256'},d,0x100);return new Uint8Array(e);}async['wrapDek'](a,b){const c=await getSubtle(),d=crypto['getRandomValues'](new Uint8Array(IV_LENGTH)),e=await c['importKey']('raw',toArrayBuffer(a),{'name':'AES-GCM'},![],['encrypt']);return concatBytes(d,new Uint8Array(await c['encrypt']({'name':'AES-GCM','iv':toArrayBuffer(d)},e,toArrayBuffer(b))));}async['unwrapDek'](a,b){const c=await getSubtle(),{iv:d,ct:e}=splitIvTagCt(b),f=await c['importKey']('raw',toArrayBuffer(a),{'name':'AES-GCM'},![],['decrypt']),g=await c['decrypt']({'name':'AES-GCM','iv':toArrayBuffer(d)},f,toArrayBuffer(e));return new Uint8Array(g);}async['getDek'](a){if(this['_dek'])return this['_dek'];const b=await this['ensureInitialized'](),c=base64ToBytes(b['salt']);let d;if(b['mode']==='password'){if(!a)throw new Error('Account\x20data\x20is\x20protected\x20by\x20a\x20password.\x20Please\x20set\x20the\x20encryption\x20password\x20first.');d=await this['derivePasswordKek'](a,c);}else{if(a)d=await this['derivePasswordKek'](a,c);else d=this['deriveDefaultKek'](c);}const e=base64ToBytes(b['wrappedKey']),f=await this['unwrapDek'](d,e),g=await getSubtle();return this['_dek']=await g['importKey']('raw',toArrayBuffer(f),{'name':'AES-GCM'},![],['encrypt','decrypt']),this['_dek'];}['clearDekCache'](){this['_dek']=void 0x0;}async['encrypt'](a,b){const c=await this['ensureInitialized'](),d=await this['getDek'](b),e=await getSubtle(),f=crypto['getRandomValues'](new Uint8Array(IV_LENGTH)),g=new Uint8Array(await e['encrypt']({'name':'AES-GCM','iv':toArrayBuffer(f)},d,toArrayBuffer(new TextEncoder()['encode'](a))));return{'v':ENVELOPE_VERSION,'mode':c['mode'],'kdf':c['kdf'],'salt':c['salt'],'iterations':c['iterations'],'wrappedKey':c['wrappedKey'],'iv':bytesToBase64(f),'ct':bytesToBase64(g)};}async['decrypt'](a,b){const c=await this['getDek'](b),d=await getSubtle(),e=base64ToBytes(a['iv']),f=base64ToBytes(a['ct']),g=await d['decrypt']({'name':'AES-GCM','iv':toArrayBuffer(e)},c,toArrayBuffer(f));return new TextDecoder()['decode'](g);}['getMode'](){if(this['_metadata'])return this['_metadata']['mode'];return this['loadMetadata']()?.['mode'];}async['setPassword'](a){const b=await this['ensureInitialized'](),c=await this['unwrapDek'](this['deriveDefaultKek'](base64ToBytes(b['salt'])),base64ToBytes(b['wrappedKey'])),d=randomBytes(0x10),e=await this['derivePasswordKek'](a,d),f=await this['wrapDek'](e,c),g={'v':ENVELOPE_VERSION,'mode':'password','kdf':'pbkdf2-sha256','salt':bytesToBase64(d),'iterations':PBKDF2_ITERATIONS,'wrappedKey':bytesToBase64(f)};this['saveMetadata'](g),this['_metadata']=g,this['clearDekCache']();}async['changePassword'](a,b){const c=await this['ensureInitialized']();if(c['mode']!=='password')throw new Error('Account\x20data\x20is\x20not\x20protected\x20by\x20a\x20password.\x20Call\x20setPassword\x20first.');const d=await this['derivePasswordKek'](a,base64ToBytes(c['salt'])),e=await this['unwrapDek'](d,base64ToBytes(c['wrappedKey'])),f=randomBytes(0x10),g=await this['derivePasswordKek'](b,f),h=await this['wrapDek'](g,e),i={'v':ENVELOPE_VERSION,'mode':'password','kdf':'pbkdf2-sha256','salt':bytesToBase64(f),'iterations':PBKDF2_ITERATIONS,'wrappedKey':bytesToBase64(h)};this['saveMetadata'](i),this['_metadata']=i,this['clearDekCache']();}async['removePassword'](a){const b=await this['ensureInitialized']();if(b['mode']!=='password')throw new Error('Account\x20data\x20is\x20already\x20in\x20default\x20encryption\x20mode.');const c=await this['derivePasswordKek'](a,base64ToBytes(b['salt'])),d=await this['unwrapDek'](c,base64ToBytes(b['wrappedKey'])),e=randomBytes(0x10),f=this['deriveDefaultKek'](e),g=await this['wrapDek'](f,d),h={'v':ENVELOPE_VERSION,'mode':'default','kdf':'hkdf-sha256','salt':bytesToBase64(e),'wrappedKey':bytesToBase64(g)};this['saveMetadata'](h),this['_metadata']=h,this['clearDekCache']();}},SecureAccountStorage=class{constructor(a,b){this['_backend']=a,this['_vault']=b??new CryptoVault();}['setSessionPassword'](a){this['_sessionPassword']=a,this['_vault']['clearDekCache']();}['getSessionPassword'](){return this['_sessionPassword'];}['isSecureEnvelope'](a){return a&&typeof a==='object'&&a['v']===ENVELOPE_VERSION&&typeof a['ct']==='string'&&typeof a['wrappedKey']==='string'&&(a['kdf']==='hkdf-sha256'||a['kdf']==='pbkdf2-sha256');}async['get'](){const a=await this['_backend']['get']();if(!a)return void 0x0;let b;try{b=JSON['parse'](a);}catch{return a;}if(this['isSecureEnvelope'](b))return this['_vault']['decrypt'](b,this['_sessionPassword']);return a;}async['put'](a){const b=await this['_vault']['encrypt'](a,this['_sessionPassword']);await this['_backend']['put'](JSON['stringify'](b));}async['clear'](){await this['_backend']['clear']();}['getMode'](){return this['_vault']['getMode']();}async['setPassword'](a){await this['_vault']['setPassword'](a),this['_sessionPassword']=a;if(await this['_backend']['get']()){const b=await this['get']();if(b!==void 0x0)await this['put'](b);}}async['changePassword'](a,b){await this['_vault']['changePassword'](a,b),this['_sessionPassword']=b;if(await this['_backend']['get']()){const c=await this['get']();if(c!==void 0x0)await this['put'](c);}}async['removePassword'](a){await this['_vault']['removePassword'](a),this['_sessionPassword']=void 0x0;if(await this['_backend']['get']()){const b=await this['get']();if(b!==void 0x0)await this['put'](b);}}};export{CryptoVault,SecureAccountStorage};
|
|
1
|
+
import{s as a83a,u as a83b}from'../../storage-UnD4qWaK.mjs';import{sha256}from'@noble/hashes/sha2.js';import{randomBytes}from'@noble/hashes/utils.js';import{hkdf}from'@noble/hashes/hkdf.js';const ENVELOPE_VERSION=0x1,KEY_METADATA_TABLE='key_metadata',DEFAULT_MASTER_SECRET=new TextEncoder()['encode']('WowokAccountDefaultEncryptionKey_v1_a7f3e9d2c8b10564'),PBKDF2_ITERATIONS=0x927c0,IV_LENGTH=0xc,KEK_INFO=new TextEncoder()['encode']('wowok-account-kek');function bytesToBase64(a){if(typeof Buffer!=='undefined')return Buffer['from'](a)['toString']('base64');const b=Array['from'](a,c=>String['fromCharCode'](c))['join']('');return btoa(b);}function base64ToBytes(a){if(typeof Buffer!=='undefined')return new Uint8Array(Buffer['from'](a,'base64'));return Uint8Array['from'](atob(a),b=>b['charCodeAt'](0x0));}let subtleCache;async function getSubtle(){if(subtleCache)return subtleCache;if(typeof globalThis!=='undefined'&&globalThis['crypto']&&globalThis['crypto']['subtle'])return subtleCache=globalThis['crypto']['subtle'],subtleCache;return subtleCache=(await import('crypto'))['webcrypto']['subtle'],subtleCache;}function concatBytes(c,d){const e=new Uint8Array(c['length']+d['length']);return e['set'](c,0x0),e['set'](d,c['length']),e;}function toArrayBuffer(a){return a['buffer']['slice'](a['byteOffset'],a['byteOffset']+a['byteLength']);}function splitIvTagCt(a){if(a['length']<0x1c)throw new Error('Invalid\x20encrypted\x20blob:\x20too\x20short');return{'iv':a['slice'](0x0,IV_LENGTH),'ct':a['slice'](IV_LENGTH)};}var CryptoVault=class{constructor(a){this['_dbSource']=a,this['_initLock']=new a83b(),this['_writeLock']=new a83b();}get['db'](){return this['_dbSource']??a83a();}['ensureTable'](){this['db']['exec']('\x0a\x09\x09\x09CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20'+KEY_METADATA_TABLE+'\x20(\x0a\x09\x09\x09\x09id\x20INTEGER\x20PRIMARY\x20KEY\x20CHECK\x20(id\x20=\x201),\x0a\x09\x09\x09\x09data\x20TEXT\x20NOT\x20NULL,\x0a\x09\x09\x09\x09updated_at\x20INTEGER\x20DEFAULT\x20(strftime(\x27%s\x27,\x20\x27now\x27))\x0a\x09\x09\x09);\x0a\x09\x09');}['loadMetadata'](){this['ensureTable']();const a=this['db']['prepare']('SELECT\x20data\x20FROM\x20'+KEY_METADATA_TABLE+'\x20WHERE\x20id\x20=\x201')['get']();if(!a)return void 0x0;return JSON['parse'](a['data']);}['saveMetadata'](a){this['ensureTable'](),this['db']['prepare']('\x0a\x09\x09\x09INSERT\x20INTO\x20'+KEY_METADATA_TABLE+'\x20(id,\x20data,\x20updated_at)\x0a\x09\x09\x09VALUES\x20(1,\x20?,\x20strftime(\x27%s\x27,\x20\x27now\x27))\x0a\x09\x09\x09ON\x20CONFLICT(id)\x20DO\x20UPDATE\x20SET\x20data\x20=\x20excluded.data,\x20updated_at\x20=\x20excluded.updated_at\x0a\x09\x09\x09')['run'](JSON['stringify'](a));}get['initialized'](){if(this['_metadata'])return!![];return this['loadMetadata']()!==void 0x0;}async['ensureInitialized'](){if(this['_metadata'])return this['_metadata'];return this['_initLock']['run'](async()=>{if(this['_metadata'])return this['_metadata'];const a=this['loadMetadata']();if(a)return this['_metadata']=a,a;return await this['_initializeDefaultLocked'](),this['_metadata'];});}async['initializeDefault'](){if(this['_metadata'])return;await this['_initLock']['run'](async()=>{if(this['_metadata'])return;await this['_initializeDefaultLocked']();});}async['_initializeDefaultLocked'](){const a=this['loadMetadata']();if(a){this['_metadata']=a;return;}const b=randomBytes(0x10),c=randomBytes(0x20),d=this['deriveDefaultKek'](b),e=await this['wrapDek'](d,c),f={'v':ENVELOPE_VERSION,'mode':'default','kdf':'hkdf-sha256','salt':bytesToBase64(b),'wrappedKey':bytesToBase64(e)};try{this['db']['transaction'](()=>{const g=this['db']['prepare']('SELECT\x20data\x20FROM\x20'+KEY_METADATA_TABLE+'\x20WHERE\x20id\x20=\x201')['get']();if(g){this['_metadata']=JSON['parse'](g['data']);return;}this['db']['prepare']('\x0a\x09\x09\x09\x09\x09INSERT\x20INTO\x20'+KEY_METADATA_TABLE+'\x20(id,\x20data,\x20updated_at)\x0a\x09\x09\x09\x09\x09VALUES\x20(1,\x20?,\x20strftime(\x27%s\x27,\x20\x27now\x27))\x0a\x09\x09\x09\x09')['run'](JSON['stringify'](f)),this['_metadata']=f;})();}catch{const g=this['loadMetadata']();if(g)this['_metadata']=g;}if(!this['_metadata']){const h=this['loadMetadata']();if(h)this['_metadata']=h;}}['deriveDefaultKek'](a){return hkdf(sha256,DEFAULT_MASTER_SECRET,a,KEK_INFO,0x20);}async['derivePasswordKek'](a,b){const c=await getSubtle(),d=await c['importKey']('raw',new TextEncoder()['encode'](a),{'name':'PBKDF2'},![],['deriveBits']),e=await c['deriveBits']({'name':'PBKDF2','salt':toArrayBuffer(b),'iterations':PBKDF2_ITERATIONS,'hash':'SHA-256'},d,0x100);return new Uint8Array(e);}async['wrapDek'](a,b){const c=await getSubtle(),d=crypto['getRandomValues'](new Uint8Array(IV_LENGTH)),e=await c['importKey']('raw',toArrayBuffer(a),{'name':'AES-GCM'},![],['encrypt']);return concatBytes(d,new Uint8Array(await c['encrypt']({'name':'AES-GCM','iv':toArrayBuffer(d)},e,toArrayBuffer(b))));}async['unwrapDek'](a,b){const c=await getSubtle(),{iv:d,ct:e}=splitIvTagCt(b),f=await c['importKey']('raw',toArrayBuffer(a),{'name':'AES-GCM'},![],['decrypt']),g=await c['decrypt']({'name':'AES-GCM','iv':toArrayBuffer(d)},f,toArrayBuffer(e));return new Uint8Array(g);}async['getDek'](a){if(this['_dek'])return this['_dek'];const b=await this['ensureInitialized'](),c=base64ToBytes(b['salt']);let d;if(b['mode']==='password'){if(!a)throw new Error('Account\x20data\x20is\x20protected\x20by\x20a\x20password.\x20Please\x20set\x20the\x20encryption\x20password\x20first.');d=await this['derivePasswordKek'](a,c);}else{if(a)d=await this['derivePasswordKek'](a,c);else d=this['deriveDefaultKek'](c);}const e=base64ToBytes(b['wrappedKey']),f=await this['unwrapDek'](d,e),g=await getSubtle();return this['_dek']=await g['importKey']('raw',toArrayBuffer(f),{'name':'AES-GCM'},![],['encrypt','decrypt']),this['_dek'];}['clearDekCache'](){this['_dek']=void 0x0;}async['encrypt'](a,b){const c=await this['ensureInitialized'](),d=await this['getDek'](b),e=await getSubtle(),f=crypto['getRandomValues'](new Uint8Array(IV_LENGTH)),g=new Uint8Array(await e['encrypt']({'name':'AES-GCM','iv':toArrayBuffer(f)},d,toArrayBuffer(new TextEncoder()['encode'](a))));return{'v':ENVELOPE_VERSION,'mode':c['mode'],'kdf':c['kdf'],'salt':c['salt'],'iterations':c['iterations'],'wrappedKey':c['wrappedKey'],'iv':bytesToBase64(f),'ct':bytesToBase64(g)};}async['decrypt'](a,b){const c=await this['getDek'](b),d=await getSubtle(),e=base64ToBytes(a['iv']),f=base64ToBytes(a['ct']),g=await d['decrypt']({'name':'AES-GCM','iv':toArrayBuffer(e)},c,toArrayBuffer(f));return new TextDecoder()['decode'](g);}['getMode'](){if(this['_metadata'])return this['_metadata']['mode'];return this['loadMetadata']()?.['mode'];}async['setPassword'](a){return this['_writeLock']['run'](async()=>{const b=await this['ensureInitialized'](),c=await this['unwrapDek'](this['deriveDefaultKek'](base64ToBytes(b['salt'])),base64ToBytes(b['wrappedKey'])),d=randomBytes(0x10),e=await this['derivePasswordKek'](a,d),f=await this['wrapDek'](e,c),g={'v':ENVELOPE_VERSION,'mode':'password','kdf':'pbkdf2-sha256','salt':bytesToBase64(d),'iterations':PBKDF2_ITERATIONS,'wrappedKey':bytesToBase64(f)};this['saveMetadata'](g),this['_metadata']=g,this['clearDekCache']();});}async['changePassword'](a,b){return this['_writeLock']['run'](async()=>{const c=await this['ensureInitialized']();if(c['mode']!=='password')throw new Error('Account\x20data\x20is\x20not\x20protected\x20by\x20a\x20password.\x20Call\x20setPassword\x20first.');const d=await this['derivePasswordKek'](a,base64ToBytes(c['salt'])),e=await this['unwrapDek'](d,base64ToBytes(c['wrappedKey'])),f=randomBytes(0x10),g=await this['derivePasswordKek'](b,f),h=await this['wrapDek'](g,e),i={'v':ENVELOPE_VERSION,'mode':'password','kdf':'pbkdf2-sha256','salt':bytesToBase64(f),'iterations':PBKDF2_ITERATIONS,'wrappedKey':bytesToBase64(h)};this['saveMetadata'](i),this['_metadata']=i,this['clearDekCache']();});}async['removePassword'](a){return this['_writeLock']['run'](async()=>{const b=await this['ensureInitialized']();if(b['mode']!=='password')throw new Error('Account\x20data\x20is\x20already\x20in\x20default\x20encryption\x20mode.');const c=await this['derivePasswordKek'](a,base64ToBytes(b['salt'])),d=await this['unwrapDek'](c,base64ToBytes(b['wrappedKey'])),e=randomBytes(0x10),f=this['deriveDefaultKek'](e),g=await this['wrapDek'](f,d),h={'v':ENVELOPE_VERSION,'mode':'default','kdf':'hkdf-sha256','salt':bytesToBase64(e),'wrappedKey':bytesToBase64(g)};this['saveMetadata'](h),this['_metadata']=h,this['clearDekCache']();});}},SecureAccountStorage=class{constructor(a,b){this['_backend']=a,this['_vault']=b??new CryptoVault();}['setSessionPassword'](a){this['_sessionPassword']=a,this['_vault']['clearDekCache']();}['getSessionPassword'](){return this['_sessionPassword'];}['isSecureEnvelope'](a){return a&&typeof a==='object'&&a['v']===ENVELOPE_VERSION&&typeof a['ct']==='string'&&typeof a['wrappedKey']==='string'&&(a['kdf']==='hkdf-sha256'||a['kdf']==='pbkdf2-sha256');}async['get'](){const a=await this['_backend']['get']();if(!a)return void 0x0;let b;try{b=JSON['parse'](a);}catch{return a;}if(this['isSecureEnvelope'](b))return this['_vault']['decrypt'](b,this['_sessionPassword']);return a;}async['put'](a){const b=await this['_vault']['encrypt'](a,this['_sessionPassword']);await this['_backend']['put'](JSON['stringify'](b));}async['clear'](){await this['_backend']['clear']();}['getMode'](){return this['_vault']['getMode']();}async['setPassword'](a){await this['_vault']['setPassword'](a),this['_sessionPassword']=a;if(await this['_backend']['get']()){const b=await this['get']();if(b!==void 0x0)await this['put'](b);}}async['changePassword'](a,b){await this['_vault']['changePassword'](a,b),this['_sessionPassword']=b;if(await this['_backend']['get']()){const c=await this['get']();if(c!==void 0x0)await this['put'](c);}}async['removePassword'](a){await this['_vault']['removePassword'](a),this['_sessionPassword']=void 0x0;if(await this['_backend']['get']()){const b=await this['get']();if(b!==void 0x0)await this['put'](b);}}};export{CryptoVault,SecureAccountStorage};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as SQLiteStorage, c as defaultStorage, d as resetAllStorage, i as SQLiteAccountStorage, l as getAccountDb, n as IStorage, o as clearKeyMetadata, r as KEY_METADATA_TABLE, s as defaultAccountStorage, t as IAccountStorage, u as resetAllDbConnections } from "../../storage-
|
|
1
|
+
import { a as SQLiteStorage, c as defaultStorage, d as resetAllStorage, i as SQLiteAccountStorage, l as getAccountDb, n as IStorage, o as clearKeyMetadata, r as KEY_METADATA_TABLE, s as defaultAccountStorage, t as IAccountStorage, u as resetAllDbConnections } from "../../storage-D6ZEdlgz.mjs";
|
|
2
2
|
export { IAccountStorage, IStorage, KEY_METADATA_TABLE, SQLiteAccountStorage, SQLiteStorage, clearKeyMetadata, defaultAccountStorage, defaultStorage, getAccountDb, resetAllDbConnections, resetAllStorage };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{a as a84a,c as a84b,i as a84c,l as a84d,n as a84e,o as a84f,r as a84g,s as a84h,t as a84i}from'../../storage-UnD4qWaK.mjs';export{a84i as KEY_METADATA_TABLE,a84e as SQLiteAccountStorage,a84g as SQLiteStorage,a84c as clearKeyMetadata,a84a as defaultAccountStorage,a84f as defaultStorage,a84h as getAccountDb,a84b as resetAllDbConnections,a84d as resetAllStorage};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Sv as TokenTypeInfo, bv as TokenDataFilter, xv as TokenInfo } from "../../index-fGNIZdBz.mjs";
|
|
2
2
|
export { TokenDataFilter, TokenInfo, TokenTypeInfo };
|