Update nwcjs.js
This commit is contained in:
1 parent
490755a6e3
commit
c54d6b17ef
1 file changed
+100
-40
@@ -3,7 +3,7 @@
|
||||
// https://bundle.run/noble-secp256k1@1.2.14
|
||||
// https://bundle.run/bech32@2.0.0
|
||||
var nwcjs = {
|
||||
nwc_objs: [],
|
||||
nwc_infos: [],
|
||||
response: null,
|
||||
hexToBytes: hex => Uint8Array.from( hex.match( /.{1,2}/g ).map( byte => parseInt( byte, 16 ) ) ),
|
||||
bytesToHex: bytes => bytes.reduce( ( str, byte ) => str + byte.toString( 16 ).padStart( 2, "0" ), "" ),
|
||||
@@ -34,7 +34,7 @@ var nwcjs = {
|
||||
arr2.forEach( ( item, index ) => {if ( index % 2 ) {obj[ arr2[ index - 1 ] ] = item;}});
|
||||
obj[ "app_pubkey" ] = nobleSecp256k1.getPublicKey( obj[ "app_privkey" ], true ).substring( 2 );
|
||||
obj[ "relay" ] = obj[ "relay" ].replaceAll( "%3A", ":" ).replaceAll( "%2F", "/" );
|
||||
nwcjs.nwc_objs.push( obj );
|
||||
nwcjs.nwc_infos.push( obj );
|
||||
return obj;
|
||||
},
|
||||
getSignedEvent: async ( event, privateKey ) => {
|
||||
@@ -98,16 +98,16 @@ var nwcjs = {
|
||||
}
|
||||
return await loop();
|
||||
},
|
||||
getResponse: async ( nwc_obj, event_id, seconds_of_delay_tolerable = 3 ) => {
|
||||
getResponse: async ( nwc_info, event_id, seconds_of_delay_tolerable = 3 ) => {
|
||||
nwcjs.response = null;
|
||||
var relay = nwc_obj[ "relay" ];
|
||||
var relay = nwc_info[ "relay" ];
|
||||
var ids = null;
|
||||
var kinds = [ 23195 ];
|
||||
var until = null;
|
||||
var since = null;
|
||||
var limit = 1;
|
||||
var etags = [ event_id ];
|
||||
var ptags = [ nwc_obj[ "app_pubkey" ] ];
|
||||
var ptags = [ nwc_info[ "app_pubkey" ] ];
|
||||
var events = await nwcjs.getEvents( relay, ids, kinds, until, since, limit, etags, ptags, seconds_of_delay_tolerable );
|
||||
if ( !events.length ) {
|
||||
nwcjs.response = {
|
||||
@@ -115,30 +115,27 @@ var nwcjs = {
|
||||
}
|
||||
return;
|
||||
}
|
||||
var dmsg = nwcjs.decrypt( nwc_obj[ "app_privkey" ], events[ 0 ].pubkey, events[ 0 ].content );
|
||||
var dmsg = nwcjs.decrypt( nwc_info[ "app_privkey" ], events[ 0 ].pubkey, events[ 0 ].content );
|
||||
nwcjs.response = JSON.parse( dmsg );
|
||||
},
|
||||
makeInvoice: async ( nwc_obj, amt, desc, seconds_of_delay_tolerable = 3 ) => {
|
||||
getInfo: async ( nwc_info, seconds_of_delay_tolerable = 3 ) => {
|
||||
var msg = JSON.stringify({
|
||||
method: "make_invoice",
|
||||
params: {
|
||||
amount: amt * 1000,
|
||||
description: desc,
|
||||
}
|
||||
method: "get_info",
|
||||
params: {}
|
||||
});
|
||||
var emsg = nwcjs.encrypt( nwc_obj[ "app_privkey" ], nwc_obj[ "wallet_pubkey" ], msg );
|
||||
var emsg = nwcjs.encrypt( nwc_info[ "app_privkey" ], nwc_info[ "wallet_pubkey" ], msg );
|
||||
var obj = {
|
||||
kind: 23194,
|
||||
content: emsg,
|
||||
tags: [ [ "p", nwc_obj[ "wallet_pubkey" ] ] ],
|
||||
tags: [ [ "p", nwc_info[ "wallet_pubkey" ] ] ],
|
||||
created_at: Math.floor( Date.now() / 1000 ),
|
||||
pubkey: nwc_obj[ "app_pubkey" ],
|
||||
pubkey: nwc_info[ "app_pubkey" ],
|
||||
}
|
||||
var event = await nwcjs.getSignedEvent( obj, nwc_obj[ "app_privkey" ] );
|
||||
var event = await nwcjs.getSignedEvent( obj, nwc_info[ "app_privkey" ] );
|
||||
var id = event.id;
|
||||
nwcjs.getResponse( nwc_obj, id, seconds_of_delay_tolerable );
|
||||
nwcjs.getResponse( nwc_info, id, seconds_of_delay_tolerable );
|
||||
await nwcjs.waitSomeSeconds( 1 );
|
||||
var relay = nwc_obj[ "relay" ];
|
||||
var relay = nwc_info[ "relay" ];
|
||||
nwcjs.sendEvent( event, relay );
|
||||
var loop = async () => {
|
||||
await nwcjs.waitSomeSeconds( 1 );
|
||||
@@ -147,7 +144,36 @@ var nwcjs = {
|
||||
}
|
||||
return await loop();
|
||||
},
|
||||
checkInvoice: async ( nwc_obj, invoice, seconds_of_delay_tolerable = 3 ) => {
|
||||
makeInvoice: async ( nwc_info, amt, desc, seconds_of_delay_tolerable = 3 ) => {
|
||||
var msg = JSON.stringify({
|
||||
method: "make_invoice",
|
||||
params: {
|
||||
amount: amt * 1000,
|
||||
description: desc,
|
||||
}
|
||||
});
|
||||
var emsg = nwcjs.encrypt( nwc_info[ "app_privkey" ], nwc_info[ "wallet_pubkey" ], msg );
|
||||
var obj = {
|
||||
kind: 23194,
|
||||
content: emsg,
|
||||
tags: [ [ "p", nwc_info[ "wallet_pubkey" ] ] ],
|
||||
created_at: Math.floor( Date.now() / 1000 ),
|
||||
pubkey: nwc_info[ "app_pubkey" ],
|
||||
}
|
||||
var event = await nwcjs.getSignedEvent( obj, nwc_info[ "app_privkey" ] );
|
||||
var id = event.id;
|
||||
nwcjs.getResponse( nwc_info, id, seconds_of_delay_tolerable );
|
||||
await nwcjs.waitSomeSeconds( 1 );
|
||||
var relay = nwc_info[ "relay" ];
|
||||
nwcjs.sendEvent( event, relay );
|
||||
var loop = async () => {
|
||||
await nwcjs.waitSomeSeconds( 1 );
|
||||
if ( !nwcjs.response ) return await loop();
|
||||
return nwcjs.response;
|
||||
}
|
||||
return await loop();
|
||||
},
|
||||
checkInvoice: async ( nwc_info, invoice, seconds_of_delay_tolerable = 3 ) => {
|
||||
var msg = JSON.stringify({
|
||||
method: "lookup_invoice",
|
||||
params: {
|
||||
@@ -155,19 +181,19 @@ var nwcjs = {
|
||||
bolt11: invoice,
|
||||
}
|
||||
});
|
||||
var emsg = nwcjs.encrypt( nwc_obj[ "app_privkey" ], nwc_obj[ "wallet_pubkey" ], msg );
|
||||
var emsg = nwcjs.encrypt( nwc_info[ "app_privkey" ], nwc_info[ "wallet_pubkey" ], msg );
|
||||
var obj = {
|
||||
kind: 23194,
|
||||
content: emsg,
|
||||
tags: [ [ "p", nwc_obj[ "wallet_pubkey" ] ] ],
|
||||
tags: [ [ "p", nwc_info[ "wallet_pubkey" ] ] ],
|
||||
created_at: Math.floor( Date.now() / 1000 ),
|
||||
pubkey: nwc_obj[ "app_pubkey" ],
|
||||
pubkey: nwc_info[ "app_pubkey" ],
|
||||
}
|
||||
var event = await nwcjs.getSignedEvent( obj, nwc_obj[ "app_privkey" ] );
|
||||
var event = await nwcjs.getSignedEvent( obj, nwc_info[ "app_privkey" ] );
|
||||
var id = event.id;
|
||||
nwcjs.getResponse( nwc_obj, id, seconds_of_delay_tolerable );
|
||||
nwcjs.getResponse( nwc_info, id, seconds_of_delay_tolerable );
|
||||
await nwcjs.waitSomeSeconds( 1 );
|
||||
var relay = nwc_obj[ "relay" ];
|
||||
var relay = nwc_info[ "relay" ];
|
||||
nwcjs.sendEvent( event, relay );
|
||||
var loop = async () => {
|
||||
await nwcjs.waitSomeSeconds( 1 );
|
||||
@@ -178,13 +204,13 @@ var nwcjs = {
|
||||
// an error looks like this:
|
||||
// {error: {code: "INTERNAL", message: "Something went wrong while looking up invoice: "}, result_type: "lookup_invoice"}
|
||||
},
|
||||
didPaymentSucceed: async ( nwc_obj, invoice, seconds_of_delay_tolerable = 3 ) => {
|
||||
var invoice_info = await nwcjs.checkInvoice( nwc_obj, invoice, seconds_of_delay_tolerable );
|
||||
didPaymentSucceed: async ( nwc_info, invoice, seconds_of_delay_tolerable = 3 ) => {
|
||||
var invoice_info = await nwcjs.checkInvoice( nwc_info, invoice, seconds_of_delay_tolerable );
|
||||
if ( invoice_info && "result" in invoice_info && "preimage" in invoice_info[ "result" ] && invoice_info[ "result" ][ "preimage" ] )
|
||||
return invoice_info[ "result" ][ "preimage" ];
|
||||
return false;
|
||||
},
|
||||
tryToPayInvoice: async ( nwc_obj, invoice, amnt ) => {
|
||||
tryToPayInvoice: async ( nwc_info, invoice, amnt ) => {
|
||||
var msg = {
|
||||
method: "pay_invoice",
|
||||
params: {
|
||||
@@ -193,38 +219,72 @@ var nwcjs = {
|
||||
}
|
||||
if ( amnt ) msg[ "params" ][ "amount" ] = amnt;
|
||||
msg = JSON.stringify( msg );
|
||||
var emsg = nwcjs.encrypt( nwc_obj[ "app_privkey" ], nwc_obj[ "wallet_pubkey" ], msg );
|
||||
var emsg = nwcjs.encrypt( nwc_info[ "app_privkey" ], nwc_info[ "wallet_pubkey" ], msg );
|
||||
var obj = {
|
||||
kind: 23194,
|
||||
content: emsg,
|
||||
tags: [ [ "p", nwc_obj[ "wallet_pubkey" ] ] ],
|
||||
tags: [ [ "p", nwc_info[ "wallet_pubkey" ] ] ],
|
||||
created_at: Math.floor( Date.now() / 1000 ),
|
||||
pubkey: nwc_obj[ "app_pubkey" ],
|
||||
pubkey: nwc_info[ "app_pubkey" ],
|
||||
}
|
||||
var event = await nwcjs.getSignedEvent( obj, nwc_obj[ "app_privkey" ] );
|
||||
var event = await nwcjs.getSignedEvent( obj, nwc_info[ "app_privkey" ] );
|
||||
var id = event.id;
|
||||
var relay = nwc_obj[ "relay" ];
|
||||
var relay = nwc_info[ "relay" ];
|
||||
nwcjs.sendEvent( event, relay );
|
||||
},
|
||||
getBalance: async ( nwc_obj, seconds_of_delay_tolerable ) => {
|
||||
getBalance: async ( nwc_info, seconds_of_delay_tolerable = 3 ) => {
|
||||
var msg = {
|
||||
method: "get_balance",
|
||||
params: {}
|
||||
}
|
||||
msg = JSON.stringify( msg );
|
||||
var emsg = nwcjs.encrypt( nwc_obj[ "app_privkey" ], nwc_obj[ "wallet_pubkey" ], msg );
|
||||
var emsg = nwcjs.encrypt( nwc_info[ "app_privkey" ], nwc_info[ "wallet_pubkey" ], msg );
|
||||
var obj = {
|
||||
kind: 23194,
|
||||
content: emsg,
|
||||
tags: [ [ "p", nwc_obj[ "wallet_pubkey" ] ] ],
|
||||
tags: [ [ "p", nwc_info[ "wallet_pubkey" ] ] ],
|
||||
created_at: Math.floor( Date.now() / 1000 ),
|
||||
pubkey: nwc_obj[ "app_pubkey" ],
|
||||
pubkey: nwc_info[ "app_pubkey" ],
|
||||
}
|
||||
var event = await nwcjs.getSignedEvent( obj, nwc_obj[ "app_privkey" ] );
|
||||
var event = await nwcjs.getSignedEvent( obj, nwc_info[ "app_privkey" ] );
|
||||
var id = event.id;
|
||||
nwcjs.getResponse( nwc_obj, id, seconds_of_delay_tolerable );
|
||||
nwcjs.getResponse( nwc_info, id, seconds_of_delay_tolerable );
|
||||
await nwcjs.waitSomeSeconds( 1 );
|
||||
var relay = nwc_obj[ "relay" ];
|
||||
var relay = nwc_info[ "relay" ];
|
||||
nwcjs.sendEvent( event, relay );
|
||||
var loop = async () => {
|
||||
await nwcjs.waitSomeSeconds( 1 );
|
||||
if ( !nwcjs.response ) return await loop();
|
||||
return nwcjs.response;
|
||||
}
|
||||
return await loop();
|
||||
},
|
||||
listTransactions: async ( nwc_info, from = null, until = null, limit = null, offset = null, unpaid = null, type = undefined, seconds_of_delay_tolerable = 3 ) => {
|
||||
var msg = {
|
||||
method: "list_transactions",
|
||||
params: {}
|
||||
}
|
||||
if ( from ) msg.params.from = from;
|
||||
if ( until ) msg.params.until = until;
|
||||
if ( limit ) msg.params.limit = limit;
|
||||
if ( offset ) msg.params.offset = offset;
|
||||
if ( unpaid ) msg.params.unpaid = unpaid;
|
||||
if ( type ) msg.params.type = type;
|
||||
msg = JSON.stringify( msg );
|
||||
console.log( msg );
|
||||
var emsg = nwcjs.encrypt( nwc_info[ "app_privkey" ], nwc_info[ "wallet_pubkey" ], msg );
|
||||
var obj = {
|
||||
kind: 23194,
|
||||
content: emsg,
|
||||
tags: [ [ "p", nwc_info[ "wallet_pubkey" ] ] ],
|
||||
created_at: Math.floor( Date.now() / 1000 ),
|
||||
pubkey: nwc_info[ "app_pubkey" ],
|
||||
}
|
||||
var event = await nwcjs.getSignedEvent( obj, nwc_info[ "app_privkey" ] );
|
||||
var id = event.id;
|
||||
nwcjs.getResponse( nwc_info, id, seconds_of_delay_tolerable );
|
||||
await nwcjs.waitSomeSeconds( 1 );
|
||||
var relay = nwc_info[ "relay" ];
|
||||
nwcjs.sendEvent( event, relay );
|
||||
var loop = async () => {
|
||||
await nwcjs.waitSomeSeconds( 1 );
|
||||
|
||||
Reference in new issue
Block a user