a46f81f1e1
* Use same naming scheme between ln containers and env vars * Add router_lnd container * Only open channels to router_lnd * Use 1sat base fee and 0ppm fee rate * Add script to test routing * Also fund router_lnd wallet * Receiver fallbacks * Rename to predecessorId * Remove useless wallet table join * Missing renaming to predecessor * Fix payment stuck on sender error We want to await the invoice poll promise so we can check for receiver errors, but in case of sender errors, the promise will never settle. * Don't log failed forwards as sender errors * fix check for receiver error --------- Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com> Co-authored-by: k00b <k00b@stacker.news>
96 lines
2.6 KiB
JavaScript
96 lines
2.6 KiB
JavaScript
export class InvoiceCanceledError extends Error {
|
|
constructor (invoice, actionError) {
|
|
super(actionError ?? `invoice canceled: ${invoice.hash}`)
|
|
this.name = 'InvoiceCanceledError'
|
|
this.invoice = invoice
|
|
this.actionError = actionError
|
|
}
|
|
}
|
|
|
|
export class InvoiceExpiredError extends Error {
|
|
constructor (invoice) {
|
|
super(`invoice expired: ${invoice.hash}`)
|
|
this.name = 'InvoiceExpiredError'
|
|
this.invoice = invoice
|
|
}
|
|
}
|
|
|
|
export class WalletError extends Error {}
|
|
export class WalletPaymentError extends WalletError {}
|
|
export class WalletConfigurationError extends WalletError {}
|
|
|
|
export class WalletNotEnabledError extends WalletConfigurationError {
|
|
constructor (name) {
|
|
super(`wallet is not enabled: ${name}`)
|
|
this.name = 'WalletNotEnabledError'
|
|
this.wallet = name
|
|
this.reason = 'wallet is not enabled'
|
|
}
|
|
}
|
|
|
|
export class WalletSendNotConfiguredError extends WalletConfigurationError {
|
|
constructor (name) {
|
|
super(`wallet send is not configured: ${name}`)
|
|
this.name = 'WalletSendNotConfiguredError'
|
|
this.wallet = name
|
|
this.reason = 'wallet send is not configured'
|
|
}
|
|
}
|
|
|
|
export class WalletSenderError extends WalletPaymentError {
|
|
constructor (name, invoice, message) {
|
|
super(`${name} failed to pay invoice ${invoice.hash}: ${message}`)
|
|
this.name = 'WalletSenderError'
|
|
this.wallet = name
|
|
this.invoice = invoice
|
|
this.reason = message
|
|
}
|
|
}
|
|
|
|
export class WalletReceiverError extends WalletPaymentError {
|
|
constructor (invoice) {
|
|
super(`payment forwarding failed for invoice ${invoice.hash}`)
|
|
this.name = 'WalletReceiverError'
|
|
this.invoice = invoice
|
|
}
|
|
}
|
|
|
|
export class WalletsNotAvailableError extends WalletConfigurationError {
|
|
constructor () {
|
|
super('no wallet available')
|
|
this.name = 'WalletsNotAvailableError'
|
|
}
|
|
}
|
|
|
|
export class WalletAggregateError extends WalletError {
|
|
constructor (errors, invoice) {
|
|
super('WalletAggregateError')
|
|
this.name = 'WalletAggregateError'
|
|
this.errors = errors.reduce((acc, e) => {
|
|
if (Array.isArray(e?.errors)) {
|
|
acc.push(...e.errors)
|
|
} else {
|
|
acc.push(e)
|
|
}
|
|
return acc
|
|
}, [])
|
|
this.invoice = invoice
|
|
}
|
|
}
|
|
|
|
export class WalletPaymentAggregateError extends WalletPaymentError {
|
|
constructor (errors, invoice) {
|
|
super('WalletPaymentAggregateError')
|
|
this.name = 'WalletPaymentAggregateError'
|
|
this.errors = errors.reduce((acc, e) => {
|
|
if (Array.isArray(e?.errors)) {
|
|
acc.push(...e.errors)
|
|
} else {
|
|
acc.push(e)
|
|
}
|
|
return acc
|
|
}, []).filter(e => e instanceof WalletPaymentError)
|
|
this.invoice = invoice
|
|
}
|
|
}
|