61 lines
2.3 KiB
JavaScript
61 lines
2.3 KiB
JavaScript
// Generated, do not edit. sha256:3babd66c28c9f09e458e639e8c0ca81825c815be279b32e296b0e13ec48e11ca
|
|||
|
|
import { services } from '../../server/registers.mjs';
|
||
|
|
|
||
|
|
function pubkeyUit(uri) {
|
||
|
|
const m = /^nostr\+?walletconnect:\/\/([^?/]+)/i.exec(String(uri || '').trim());
|
||
|
|
if (!m) throw new Error('Ongeldige NWC-URI (verwacht nostr+walletconnect://…?relay=…&secret=…).');
|
||
|
|
return m[1].toLowerCase();
|
||
|
|
}
|
||
|
|
|
||
|
|
export function createNwcApiFake() {
|
||
|
|
const opslag = new Map();
|
||
|
|
const calls = { setUri: [], purgeUri: [], validateUri: [], call: [] };
|
||
|
|
const fout = { setUri: null, purgeUri: null };
|
||
|
|
|
||
|
|
const exports = {
|
||
|
|
async validateNwcUri(uri) {
|
||
|
|
calls.validateUri.push(uri);
|
||
|
|
return { walletPubkey: pubkeyUit(uri), relays: ['wss://relay.test'] };
|
||
|
|
},
|
||
|
|
async setNwcUri(sourceId, uri) {
|
||
|
|
calls.setUri.push([Number(sourceId), uri]);
|
||
|
|
if (fout.setUri) throw new Error(fout.setUri);
|
||
|
|
const walletPubkey = pubkeyUit(uri);
|
||
|
|
opslag.set(Number(sourceId), String(uri));
|
||
|
|
return { source: Number(sourceId), uri_set: true, walletPubkey };
|
||
|
|
},
|
||
|
|
async deleteNwcUri(sourceId) {
|
||
|
|
calls.purgeUri.push(Number(sourceId));
|
||
|
|
if (fout.purgeUri) throw new Error(fout.purgeUri);
|
||
|
|
opslag.delete(Number(sourceId));
|
||
|
|
return { source: Number(sourceId), deleted: true };
|
||
|
|
},
|
||
|
|
async nwcStatus(sourceId) {
|
||
|
|
const uri = opslag.get(Number(sourceId));
|
||
|
|
return { source: Number(sourceId), uri_set: !!uri, walletPubkey: uri ? pubkeyUit(uri) : '' };
|
||
|
|
},
|
||
|
|
async nwcCall() { throw new Error('nwc-api-fake: een relay-call hoort niet in een datalaag-test.'); },
|
||
|
|
async getInfo() { return exports.nwcCall(); },
|
||
|
|
async getBalance() { return exports.nwcCall(); },
|
||
|
|
async listTransactions() { return exports.nwcCall(); },
|
||
|
|
async testNwc() { return exports.nwcCall(); },
|
||
|
|
};
|
||
|
|
|
||
|
|
const api = {
|
||
|
|
exports,
|
||
|
|
calls,
|
||
|
|
registreer() {
|
||
|
|
services.register({ id: 'nwc', feature: 'lightning', setNwcUri: exports.setNwcUri, deleteNwcUri: exports.deleteNwcUri });
|
||
|
|
return api;
|
||
|
|
},
|
||
|
|
fout,
|
||
|
|
geheim: sourceId => opslag.get(Number(sourceId)) ?? null,
|
||
|
|
get ids() { return [...opslag.keys()]; },
|
||
|
|
leeg() {
|
||
|
|
opslag.clear();
|
||
|
|
calls.setUri.length = 0; calls.purgeUri.length = 0; calls.validateUri.length = 0;
|
||
|
|
fout.setUri = null; fout.purgeUri = null;
|
||
|
|
},
|
||
|
|
};
|
||
|
|
return api;
|
||
|
|
}
|