@galoymoney/client
Advanced tools
Comparing version 0.1.23 to 0.1.24
@@ -8,4 +8,4 @@ "use strict"; | ||
var client_1 = require("@apollo/client"); | ||
var transactionListFragment = (0, client_1.gql)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n fragment TransactionList on TransactionConnection {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n edges {\n cursor\n node {\n __typename\n id\n status\n direction\n memo\n createdAt\n\n settlementAmount\n settlementFee\n settlementPrice {\n base\n offset\n currencyUnit\n formattedAmount\n }\n\n initiationVia {\n __typename\n ... on InitiationViaIntraLedger {\n counterPartyWalletId\n counterPartyUsername\n }\n ... on InitiationViaLn {\n paymentHash\n }\n ... on InitiationViaOnChain {\n address\n }\n }\n settlementVia {\n __typename\n ... on SettlementViaIntraLedger {\n counterPartyWalletId\n counterPartyUsername\n }\n ... on SettlementViaLn {\n paymentSecret\n }\n ... on SettlementViaOnChain {\n transactionHash\n }\n }\n }\n }\n }\n"], ["\n fragment TransactionList on TransactionConnection {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n edges {\n cursor\n node {\n __typename\n id\n status\n direction\n memo\n createdAt\n\n settlementAmount\n settlementFee\n settlementPrice {\n base\n offset\n currencyUnit\n formattedAmount\n }\n\n initiationVia {\n __typename\n ... on InitiationViaIntraLedger {\n counterPartyWalletId\n counterPartyUsername\n }\n ... on InitiationViaLn {\n paymentHash\n }\n ... on InitiationViaOnChain {\n address\n }\n }\n settlementVia {\n __typename\n ... on SettlementViaIntraLedger {\n counterPartyWalletId\n counterPartyUsername\n }\n ... on SettlementViaLn {\n paymentSecret\n }\n ... on SettlementViaOnChain {\n transactionHash\n }\n }\n }\n }\n }\n"]))); | ||
var transactionListFragment = (0, client_1.gql)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n fragment TransactionList on TransactionConnection {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n edges {\n cursor\n node {\n __typename\n id\n status\n direction\n memo\n createdAt\n\n settlementAmount\n settlementFee\n settlementCurrency\n settlementPrice {\n base\n offset\n currencyUnit\n formattedAmount\n }\n\n initiationVia {\n __typename\n ... on InitiationViaIntraLedger {\n counterPartyWalletId\n counterPartyUsername\n }\n ... on InitiationViaLn {\n paymentHash\n }\n ... on InitiationViaOnChain {\n address\n }\n }\n settlementVia {\n __typename\n ... on SettlementViaIntraLedger {\n counterPartyWalletId\n counterPartyUsername\n }\n ... on SettlementViaLn {\n paymentSecret\n }\n ... on SettlementViaOnChain {\n transactionHash\n }\n }\n }\n }\n }\n"], ["\n fragment TransactionList on TransactionConnection {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n edges {\n cursor\n node {\n __typename\n id\n status\n direction\n memo\n createdAt\n\n settlementAmount\n settlementFee\n settlementCurrency\n settlementPrice {\n base\n offset\n currencyUnit\n formattedAmount\n }\n\n initiationVia {\n __typename\n ... on InitiationViaIntraLedger {\n counterPartyWalletId\n counterPartyUsername\n }\n ... on InitiationViaLn {\n paymentHash\n }\n ... on InitiationViaOnChain {\n address\n }\n }\n settlementVia {\n __typename\n ... on SettlementViaIntraLedger {\n counterPartyWalletId\n counterPartyUsername\n }\n ... on SettlementViaLn {\n paymentSecret\n }\n ... on SettlementViaOnChain {\n transactionHash\n }\n }\n }\n }\n }\n"]))); | ||
exports.default = transactionListFragment; | ||
var templateObject_1; |
@@ -14,2 +14,3 @@ import { QueryResult, QueryHookOptions } from "@apollo/client"; | ||
transactionList: import("@apollo/client").DocumentNode; | ||
transactionListForDefaultAccount: import("@apollo/client").DocumentNode; | ||
usernameAvailable: import("@apollo/client").DocumentNode; | ||
@@ -47,2 +48,8 @@ }; | ||
}>> | undefined) => QueryResult<GaloyGQL.TransactionListForContactQuery, GaloyGQL.TransactionListForContactQueryVariables> & QueryHelpers; | ||
transactionListForDefaultAccount: (config?: QueryHookOptions<GaloyGQL.TransactionListForDefaultAccountQuery, GaloyGQL.Exact<{ | ||
first?: GaloyGQL.InputMaybe<number> | undefined; | ||
after?: GaloyGQL.InputMaybe<string> | undefined; | ||
last?: GaloyGQL.InputMaybe<number> | undefined; | ||
before?: GaloyGQL.InputMaybe<string> | undefined; | ||
}>> | undefined) => QueryResult<GaloyGQL.TransactionListForDefaultAccountQuery> & QueryHelpers; | ||
}; | ||
@@ -49,0 +56,0 @@ export declare const useDelayedQuery: { |
@@ -66,2 +66,3 @@ "use strict"; | ||
var transaction_list_1 = __importDefault(require("./queries/transaction-list")); | ||
var transaction_list_for_default_account_1 = __importDefault(require("./queries/transaction-list-for-default-account")); | ||
var username_available_1 = __importDefault(require("./queries/username-available")); | ||
@@ -80,2 +81,3 @@ var index_1 = require("../index"); | ||
transactionList: transaction_list_1.default, | ||
transactionListForDefaultAccount: transaction_list_for_default_account_1.default, | ||
usernameAvailable: username_available_1.default, | ||
@@ -100,2 +102,5 @@ }; | ||
}; | ||
var transactionListForDefaultAccountQuery = function (config) { | ||
return useQueryWrapper("transactionListForDefaultAccount", config); | ||
}; | ||
var contactsQuery = function (config) { | ||
@@ -113,2 +118,3 @@ return useQueryWrapper("contacts", config); | ||
transactionListForContact: transactionListForContactQuery, | ||
transactionListForDefaultAccount: transactionListForDefaultAccountQuery, | ||
}; | ||
@@ -115,0 +121,0 @@ // ********** DELAYED QUERIES ********** // |
@@ -46,107 +46,136 @@ "use strict"; | ||
}; | ||
var parsePaymentDestination = function (_a) { | ||
var _b, _c, _d; | ||
var destination = _a.destination, network = _a.network, pubKey = _a.pubKey; | ||
if (!destination) { | ||
return { valid: false }; | ||
} | ||
var inputDataToObject = function (data) { | ||
return url_1.default.parse(data, true); | ||
}; | ||
var getLNParam = function (data) { | ||
var _a, _b; | ||
return (_b = (_a = inputDataToObject(data)) === null || _a === void 0 ? void 0 : _a.query) === null || _b === void 0 ? void 0 : _b.lightning; | ||
}; | ||
var getProtocolAndData = function (destination) { | ||
var _a; | ||
// input might start with 'lightning:', 'bitcoin:' | ||
var split = destination.split(":"); | ||
var protocol = split[0].toLocaleLowerCase(); | ||
var destinationText = (_b = split[1]) !== null && _b !== void 0 ? _b : split[0]; | ||
var destinationText = (_a = split[1]) !== null && _a !== void 0 ? _a : split[0]; | ||
return { protocol: protocol, destinationText: destinationText }; | ||
}; | ||
var getPaymentType = function (_a) { | ||
var protocol = _a.protocol, destinationText = _a.destinationText; | ||
if (destinationText.match(/^lnurl/iu)) { | ||
return "lnurl"; | ||
} | ||
if (protocol === "lightning" || | ||
destinationText.match(/^ln(bc|tb).{50,}/iu) || | ||
(destinationText && getLNParam(destinationText) !== undefined)) { | ||
return "lightning"; | ||
} | ||
if (protocol === "onchain" || destinationText.match(/^(1|3|bc1|tb1|bcrt1)/iu)) { | ||
return "onchain"; | ||
} | ||
return "intraledger"; | ||
}; | ||
var getLNURLPayResponse = function (_a) { | ||
var destinationText = _a.destinationText; | ||
return { | ||
valid: true, | ||
paymentType: "lnurl", | ||
lnurl: destinationText, | ||
}; | ||
}; | ||
var getLightningPayResponse = function (_a) { | ||
var _b, _c; | ||
var destination = _a.destination, network = _a.network, pubKey = _a.pubKey; | ||
var paymentType = "lightning"; | ||
var _d = getProtocolAndData(destination), protocol = _d.protocol, destinationText = _d.destinationText; | ||
var lnProtocol = (_b = getLNParam(destination)) !== null && _b !== void 0 ? _b : (protocol.toLowerCase() === "lightning" ? destinationText : protocol).toLowerCase(); | ||
if ((network === "mainnet" && | ||
!(lnProtocol.match(/^lnbc/iu) && !lnProtocol.match(/^lnbcrt/iu))) || | ||
(network === "testnet" && !lnProtocol.match(/^lntb/iu)) || | ||
(network === "regtest" && !lnProtocol.match(/^lnbcrt/iu))) { | ||
return { | ||
valid: true, | ||
paymentType: "lnurl", | ||
lnurl: destinationText, | ||
valid: false, | ||
paymentType: paymentType, | ||
paymentRequest: destinationText, | ||
errorMessage: "Invalid lightning invoice for ".concat(network, " network"), | ||
}; | ||
} | ||
if (protocol === "lightning" || destinationText.match(/^ln(bc|tb).{50,}/iu)) { | ||
if ((network === "mainnet" && !destinationText.match(/^lnbc/iu)) || | ||
(network === "testnet" && !destinationText.match(/^lntb/iu)) || | ||
(network === "regtest" && !destinationText.match(/^lnbcrt/iu))) { | ||
return { | ||
valid: false, | ||
paymentType: "lightning", | ||
paymentRequest: destinationText, | ||
errorMessage: "Invalid lightning invoice for ".concat(network, " network"), | ||
}; | ||
} | ||
var payReq = undefined; | ||
try { | ||
payReq = bolt11_1.default.decode(destinationText); | ||
} | ||
catch (err) { | ||
console.debug("[Parse error: decode]:", err); | ||
return { | ||
valid: false, | ||
paymentType: "lightning", | ||
paymentRequest: destinationText, | ||
errorMessage: err instanceof Error ? err.message : "Invalid lightning invoice", | ||
}; | ||
} | ||
var sameNode = pubKey === (0, exports.getDestination)(payReq); | ||
var amount = payReq.satoshis || payReq.millisatoshis | ||
? (_c = payReq.satoshis) !== null && _c !== void 0 ? _c : Number(payReq.millisatoshis) / 1000 | ||
: undefined; | ||
if ((0, exports.lightningInvoiceHasExpired)(payReq)) { | ||
return { | ||
valid: false, | ||
paymentType: "lightning", | ||
sameNode: sameNode, | ||
amount: amount, | ||
paymentRequest: destinationText, | ||
errorMessage: "invoice has expired", | ||
}; | ||
} | ||
var memo = (0, exports.getDescription)(payReq); | ||
var payReq = undefined; | ||
try { | ||
payReq = bolt11_1.default.decode(lnProtocol); | ||
} | ||
catch (err) { | ||
return { | ||
valid: true, | ||
valid: false, | ||
paymentType: paymentType, | ||
paymentRequest: destinationText, | ||
errorMessage: err instanceof Error ? err.message : "Invalid lightning invoice", | ||
}; | ||
} | ||
var sameNode = pubKey === (0, exports.getDestination)(payReq); | ||
var amount = payReq.satoshis || payReq.millisatoshis | ||
? (_c = payReq.satoshis) !== null && _c !== void 0 ? _c : Number(payReq.millisatoshis) / 1000 | ||
: undefined; | ||
if ((0, exports.lightningInvoiceHasExpired)(payReq)) { | ||
return { | ||
valid: false, | ||
paymentType: paymentType, | ||
sameNode: sameNode, | ||
amount: amount, | ||
memo: memo, | ||
paymentType: "lightning", | ||
paymentRequest: destinationText, | ||
errorMessage: "invoice has expired", | ||
}; | ||
} | ||
if (protocol === "onchain" || destinationText.match(/^(1|3|bc1|tb1|bcrt1)/iu)) { | ||
var memo = (0, exports.getDescription)(payReq); | ||
return { | ||
valid: true, | ||
paymentRequest: destinationText, | ||
sameNode: sameNode, | ||
amount: amount, | ||
memo: memo, | ||
paymentType: paymentType, | ||
}; | ||
}; | ||
var getOnChainPayResponse = function (_a) { | ||
var _b; | ||
var destinationText = _a.destinationText, network = _a.network; | ||
try { | ||
var decodedData = inputDataToObject(destinationText); | ||
// some apps encode addresses in UPPERCASE | ||
var path = decodedData === null || decodedData === void 0 ? void 0 : decodedData.pathname; | ||
if (!path) { | ||
throw new Error("No address detected in decoded destination"); | ||
} | ||
var amount = undefined; | ||
try { | ||
var decodedData = url_1.default.parse(destinationText, true); | ||
// some apps encode addresses in UPPERCASE | ||
var path = decodedData === null || decodedData === void 0 ? void 0 : decodedData.pathname; | ||
if (!path) { | ||
throw new Error("No address detected in decoded destination"); | ||
} | ||
var amount = undefined; | ||
try { | ||
amount = ((_d = decodedData === null || decodedData === void 0 ? void 0 : decodedData.query) === null || _d === void 0 ? void 0 : _d.amount) | ||
? parseAmount(decodedData.query.amount) | ||
: undefined; | ||
} | ||
catch (err) { | ||
console.debug("[Parse error: amount]:", err); | ||
return { | ||
valid: false, | ||
address: path, | ||
errorMessage: "Invalid amount in payment destination", | ||
}; | ||
} | ||
// will throw if address is not valid | ||
bitcoinjs_lib_1.address.toOutputScript(path, bitcoinjs_lib_1.networks[network === "mainnet" ? "bitcoin" : network]); | ||
return { | ||
valid: true, | ||
paymentType: "onchain", | ||
address: path, | ||
amount: amount, | ||
}; | ||
amount = ((_b = decodedData === null || decodedData === void 0 ? void 0 : decodedData.query) === null || _b === void 0 ? void 0 : _b.amount) | ||
? parseAmount(decodedData.query.amount) | ||
: undefined; | ||
} | ||
catch (err) { | ||
console.debug("[Parse error: onchain]:", err); | ||
console.debug("[Parse error: amount]:", err); | ||
return { | ||
valid: false, | ||
errorMessage: "Invalid bitcoin address", | ||
address: path, | ||
errorMessage: "Invalid amount in payment destination", | ||
}; | ||
} | ||
// will throw if address is not valid | ||
bitcoinjs_lib_1.address.toOutputScript(path, bitcoinjs_lib_1.networks[network === "mainnet" ? "bitcoin" : network]); | ||
return { | ||
valid: true, | ||
paymentType: "onchain", | ||
address: path, | ||
amount: amount, | ||
}; | ||
} | ||
// No payment type detected, assume intraledger | ||
catch (err) { | ||
console.debug("[Parse error: onchain]:", err); | ||
return { | ||
valid: false, | ||
errorMessage: "Invalid bitcoin address", | ||
}; | ||
} | ||
}; | ||
var getIntraLedgerPayResponse = function (_a) { | ||
var protocol = _a.protocol, destinationText = _a.destinationText; | ||
var handle = protocol.match(/^(http|\/\/)/iu) | ||
@@ -167,2 +196,20 @@ ? destinationText.split("/").at(-1) | ||
}; | ||
var parsePaymentDestination = function (_a) { | ||
var destination = _a.destination, network = _a.network, pubKey = _a.pubKey; | ||
if (!destination) { | ||
return { valid: false }; | ||
} | ||
var _b = getProtocolAndData(destination), protocol = _b.protocol, destinationText = _b.destinationText; | ||
var paymentType = getPaymentType({ protocol: protocol, destinationText: destinationText }); | ||
switch (paymentType) { | ||
case "lnurl": | ||
return getLNURLPayResponse({ destinationText: destinationText }); | ||
case "lightning": | ||
return getLightningPayResponse({ destination: destination, network: network, pubKey: pubKey }); | ||
case "onchain": | ||
return getOnChainPayResponse({ destinationText: destinationText, network: network }); | ||
case "intraledger": | ||
return getIntraLedgerPayResponse({ protocol: protocol, destinationText: destinationText }); | ||
} | ||
}; | ||
exports.parsePaymentDestination = parsePaymentDestination; |
{ | ||
"name": "@galoymoney/client", | ||
"main": "dist/index.js", | ||
"version": "0.1.23", | ||
"version": "0.1.24", | ||
"license": "MIT", | ||
@@ -6,0 +6,0 @@ "repository": "https://github.com/galoymoney/galoy-client", |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
506497
157
9261