@trezor/blockchain-link-utils
Advanced tools
Comparing version 1.0.9 to 1.0.10
@@ -0,1 +1,8 @@ | ||
# 1.0.10 | ||
- fix(blockchain-link): add solana vout for self txs (ab6f0acf0) | ||
- chore(connect): use `tslib` as dependency in all public libs (606ecc63b) | ||
- chore(repo): update tsx (53de3e3a8) | ||
- feat(suite): add Solana support (f2a89b34f) | ||
# 1.0.9 | ||
@@ -2,0 +9,0 @@ |
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.transformAccountUtxo = exports.transformAccountInfo = exports.transformAddresses = exports.transformTokenInfo = exports.transformTransaction = exports.isTxFailed = exports.filterEthereumInternalTransfers = exports.filterTokenTransfers = exports.transformServerInfo = void 0; | ||
const bignumber_js_1 = __importDefault(require("bignumber.js")); | ||
const tslib_1 = require("tslib"); | ||
const bignumber_js_1 = tslib_1.__importDefault(require("bignumber.js")); | ||
const utils_1 = require("./utils"); | ||
@@ -9,0 +7,0 @@ const transformServerInfo = (payload) => { |
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.transformAccountInfo = exports.transformTransaction = exports.filterTokenTransfers = exports.transformInputOutput = exports.transformTokenInfo = exports.parseAsset = exports.getSubtype = exports.transformUtxos = void 0; | ||
const bignumber_js_1 = __importDefault(require("bignumber.js")); | ||
const tslib_1 = require("tslib"); | ||
const bignumber_js_1 = tslib_1.__importDefault(require("bignumber.js")); | ||
const utils_1 = require("./utils"); | ||
@@ -9,0 +7,0 @@ const transformUtxos = (utxos) => { |
"use strict"; | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
var desc = Object.getOwnPropertyDescriptor(m, k); | ||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
desc = { enumerable: true, get: function() { return m[k]; } }; | ||
} | ||
Object.defineProperty(o, k2, desc); | ||
}) : (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
o[k2] = m[k]; | ||
})); | ||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
}) : function(o, v) { | ||
o["default"] = v; | ||
}); | ||
var __exportStar = (this && this.__exportStar) || function(m, exports) { | ||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); | ||
}; | ||
var __importStar = (this && this.__importStar) || function (mod) { | ||
if (mod && mod.__esModule) return mod; | ||
var result = {}; | ||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||
__setModuleDefault(result, mod); | ||
return result; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.solanaUtils = exports.blockfrostUtils = exports.blockbookUtils = void 0; | ||
__exportStar(require("./utils"), exports); | ||
exports.blockbookUtils = __importStar(require("./blockbook")); | ||
exports.blockfrostUtils = __importStar(require("./blockfrost")); | ||
exports.solanaUtils = __importStar(require("./solana")); | ||
const tslib_1 = require("tslib"); | ||
tslib_1.__exportStar(require("./utils"), exports); | ||
exports.blockbookUtils = tslib_1.__importStar(require("./blockbook")); | ||
exports.blockfrostUtils = tslib_1.__importStar(require("./blockfrost")); | ||
exports.solanaUtils = tslib_1.__importStar(require("./solana")); | ||
//# sourceMappingURL=index.js.map |
@@ -12,3 +12,4 @@ import BigNumber from 'bignumber.js'; | ||
export declare const SYSTEM_PROGRAM_PUBLIC_KEY = "11111111111111111111111111111111"; | ||
export declare const WSOL_MINT_LOWERCASE: string; | ||
export declare const WSOL_MINT = "So11111111111111111111111111111111111111112"; | ||
export declare const getTokenMetadata: () => Promise<TokenDetailByMint>; | ||
export declare const getTokenNameAndSymbol: (mint: string, tokenDetailByMint: TokenDetailByMint) => { | ||
@@ -30,7 +31,7 @@ name: string; | ||
export declare const getTxType: (transaction: ParsedTransactionWithMeta, effects: TransactionEffect[], accountAddress: string, tokenTransfers: TokenTransfer[]) => Transaction['type']; | ||
export declare const getDetails: (transaction: ParsedTransactionWithMeta, effects: TransactionEffect[], accountAddress: string) => Transaction['details']; | ||
export declare const getDetails: (transaction: ParsedTransactionWithMeta, effects: TransactionEffect[], accountAddress: string, txType: Transaction['type']) => Transaction['details']; | ||
export declare const getAmount: (accountEffect: TransactionEffect | undefined, txType: Transaction['type']) => string; | ||
export declare const getTokens: (tx: ParsedTransactionWithMeta, accountAddress: string) => TokenTransfer[]; | ||
export declare const transformTransaction: (tx: SolanaValidParsedTxWithMeta, accountAddress: string, slotToBlockHeightMapping: Record<number, number | null>) => Transaction; | ||
export declare const getTokens: (tx: ParsedTransactionWithMeta, accountAddress: string, tokenDetailByMint: TokenDetailByMint) => TokenTransfer[]; | ||
export declare const transformTransaction: (tx: SolanaValidParsedTxWithMeta, accountAddress: string) => Promise<Transaction>; | ||
export {}; | ||
//# sourceMappingURL=solana.d.ts.map |
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.transformTransaction = exports.getTokens = exports.getAmount = exports.getDetails = exports.getTxType = exports.getTargets = exports.getNativeEffects = exports.extractAccountBalanceDiff = exports.transformTokenInfo = exports.getTokenNameAndSymbol = exports.WSOL_MINT_LOWERCASE = exports.SYSTEM_PROGRAM_PUBLIC_KEY = exports.ASSOCIATED_TOKEN_PROGRAM_PUBLIC_KEY = exports.TOKEN_PROGRAM_PUBLIC_KEY = void 0; | ||
exports.transformTransaction = exports.getTokens = exports.getAmount = exports.getDetails = exports.getTxType = exports.getTargets = exports.getNativeEffects = exports.extractAccountBalanceDiff = exports.transformTokenInfo = exports.getTokenNameAndSymbol = exports.getTokenMetadata = exports.WSOL_MINT = exports.SYSTEM_PROGRAM_PUBLIC_KEY = exports.ASSOCIATED_TOKEN_PROGRAM_PUBLIC_KEY = exports.TOKEN_PROGRAM_PUBLIC_KEY = void 0; | ||
const tslib_1 = require("tslib"); | ||
const ts_belt_1 = require("@mobily/ts-belt"); | ||
const bignumber_js_1 = __importDefault(require("bignumber.js")); | ||
const bignumber_js_1 = tslib_1.__importDefault(require("bignumber.js")); | ||
const utils_1 = require("@trezor/utils"); | ||
@@ -13,6 +11,16 @@ exports.TOKEN_PROGRAM_PUBLIC_KEY = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'; | ||
exports.SYSTEM_PROGRAM_PUBLIC_KEY = '11111111111111111111111111111111'; | ||
const WSOL_MINT = 'So11111111111111111111111111111111111111112'; | ||
exports.WSOL_MINT_LOWERCASE = WSOL_MINT.toLowerCase(); | ||
exports.WSOL_MINT = 'So11111111111111111111111111111111111111112'; | ||
const solanaTokenListUrl = 'https://cdn.jsdelivr.net/gh/viaprotocol/tokenlists/all_tokens/solana.json'; | ||
const getTokenMetadata = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { | ||
const tokenListResult = yield (yield fetch(solanaTokenListUrl)).json(); | ||
const tokenMap = tokenListResult.reduce((acc, token) => (Object.assign({ [token.address]: { | ||
name: token.name, | ||
symbol: token.symbol, | ||
} }, acc)), {}); | ||
tokenMap[exports.WSOL_MINT].symbol = 'WSOL'; | ||
return tokenMap; | ||
}); | ||
exports.getTokenMetadata = getTokenMetadata; | ||
const getTokenNameAndSymbol = (mint, tokenDetailByMint) => { | ||
const tokenDetail = tokenDetailByMint[mint.toLowerCase()]; | ||
const tokenDetail = tokenDetailByMint[mint]; | ||
return tokenDetail | ||
@@ -79,3 +87,3 @@ ? { name: tokenDetail.name, symbol: tokenDetail.symbol } | ||
exports.extractAccountBalanceDiff = extractAccountBalanceDiff; | ||
const isWSolTransfer = (ixs) => ixs.find(ix => { var _a; return 'parsed' in ix && ((_a = ix.parsed.info) === null || _a === void 0 ? void 0 : _a.mint) === WSOL_MINT; }); | ||
const isWSolTransfer = (ixs) => ixs.find(ix => { var _a; return 'parsed' in ix && ((_a = ix.parsed.info) === null || _a === void 0 ? void 0 : _a.mint) === exports.WSOL_MINT; }); | ||
function getNativeEffects(transaction) { | ||
@@ -173,15 +181,20 @@ const wSolTransferInstruction = isWSolTransfer(transaction.transaction.message.instructions || []); | ||
exports.getTxType = getTxType; | ||
const getDetails = (transaction, effects, accountAddress) => { | ||
const getDetails = (transaction, effects, accountAddress, txType) => { | ||
var _a; | ||
const senders = effects.filter(({ amount }) => amount.isNegative()); | ||
const receivers = effects.filter(({ amount }) => amount.isPositive()); | ||
const getVin = (effect, i) => ({ | ||
const getVin = ({ address, amount }, i) => ({ | ||
txid: transaction.transaction.signatures[0].toString(), | ||
version: transaction.version, | ||
isAddress: true, | ||
isAccountOwned: effect.address === accountAddress, | ||
isAccountOwned: address === accountAddress, | ||
n: i, | ||
value: effect.amount.abs().toString(), | ||
addresses: [effect.address], | ||
value: amount === null || amount === void 0 ? void 0 : amount.abs().toString(), | ||
addresses: [address], | ||
}); | ||
const vin = senders.map((sender, i) => getVin(sender, i)); | ||
const vout = receivers.map((receiver, i) => getVin(receiver, i)); | ||
if (txType === 'self') { | ||
vout.push(getVin({ address: accountAddress }, vout.length)); | ||
} | ||
return { | ||
@@ -195,4 +208,4 @@ size: ((_a = transaction.meta) === null || _a === void 0 ? void 0 : _a.computeUnitsConsumed) || 0, | ||
.toString(), | ||
vin: senders.map((sender, i) => getVin(sender, i)), | ||
vout: receivers.map((receiver, i) => getVin(receiver, i)), | ||
vin, | ||
vout, | ||
}; | ||
@@ -212,3 +225,3 @@ }; | ||
exports.getAmount = getAmount; | ||
const getTokens = (tx, accountAddress) => { | ||
const getTokens = (tx, accountAddress, tokenDetailByMint) => { | ||
const effects = tx.transaction.message.instructions | ||
@@ -222,13 +235,3 @@ .filter((ix) => 'parsed' in ix) | ||
const uiType = parsed.info.authority === accountAddress ? 'sent' : 'recv'; | ||
return { | ||
type: uiType, | ||
standard: 'SPL', | ||
from: parsed.info.authority, | ||
to: parsed.info.destination, | ||
contract: parsed.info.mint, | ||
decimals: ((_a = parsed.info.tokenAmount) === null || _a === void 0 ? void 0 : _a.decimals) || 0, | ||
name: parsed.info.mint, | ||
symbol: `${parsed.info.mint.slice(0, 3)}...`, | ||
amount: ((_b = parsed.info.tokenAmount) === null || _b === void 0 ? void 0 : _b.amount) || '-1', | ||
}; | ||
return Object.assign(Object.assign({ type: uiType, standard: 'SPL', from: parsed.info.authority, to: parsed.info.destination, contract: parsed.info.mint, decimals: ((_a = parsed.info.tokenAmount) === null || _a === void 0 ? void 0 : _a.decimals) || 0 }, (0, exports.getTokenNameAndSymbol)(parsed.info.mint, tokenDetailByMint)), { amount: ((_b = parsed.info.tokenAmount) === null || _b === void 0 ? void 0 : _b.amount) || '-1' }); | ||
}); | ||
@@ -238,9 +241,10 @@ return effects; | ||
exports.getTokens = getTokens; | ||
const transformTransaction = (tx, accountAddress, slotToBlockHeightMapping) => { | ||
const transformTransaction = (tx, accountAddress) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { | ||
const tokenDetailByMint = yield (0, exports.getTokenMetadata)(); | ||
const nativeEffects = getNativeEffects(tx); | ||
const tokens = (0, exports.getTokens)(tx, accountAddress); | ||
const tokens = (0, exports.getTokens)(tx, accountAddress, tokenDetailByMint); | ||
const type = (0, exports.getTxType)(tx, nativeEffects, accountAddress, tokens); | ||
const targets = (0, exports.getTargets)(nativeEffects, type, accountAddress); | ||
const amount = (0, exports.getAmount)(nativeEffects.find(({ address }) => address === accountAddress), type); | ||
const details = (0, exports.getDetails)(tx, nativeEffects, accountAddress); | ||
const details = (0, exports.getDetails)(tx, nativeEffects, accountAddress, type); | ||
return { | ||
@@ -256,7 +260,9 @@ type, | ||
details, | ||
blockHeight: slotToBlockHeightMapping[tx.slot] || undefined, | ||
blockHash: tx.transaction.message.recentBlockhash, | ||
solanaSpecific: { | ||
status: 'confirmed', | ||
}, | ||
}; | ||
}; | ||
}); | ||
exports.transformTransaction = transformTransaction; | ||
//# sourceMappingURL=solana.js.map |
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.sortTxsFromLatest = exports.transformTarget = exports.sumVinVout = exports.enhanceVinVout = exports.filterTargets = exports.isAccountOwned = void 0; | ||
const bignumber_js_1 = __importDefault(require("bignumber.js")); | ||
const tslib_1 = require("tslib"); | ||
const bignumber_js_1 = tslib_1.__importDefault(require("bignumber.js")); | ||
const utils_1 = require("@trezor/utils"); | ||
@@ -9,0 +7,0 @@ const isAccountOwned = (addresses) => (vinVout) => Array.isArray(vinVout === null || vinVout === void 0 ? void 0 : vinVout.addresses) && vinVout.addresses.some(a => addresses.includes(a)); |
{ | ||
"name": "@trezor/blockchain-link-utils", | ||
"version": "1.0.9", | ||
"version": "1.0.10", | ||
"license": "See LICENSE.md in repo root", | ||
@@ -22,13 +22,16 @@ "sideEffects": false, | ||
"@solana/web3.js": "^1.87.6", | ||
"@trezor/utils": "9.0.15", | ||
"@trezor/utils": "9.0.16", | ||
"bignumber.js": "^9.1.1" | ||
}, | ||
"devDependencies": { | ||
"@trezor/blockchain-link-types": "1.0.8", | ||
"@trezor/blockchain-link-types": "1.0.9", | ||
"@trezor/type-utils": "1.0.2", | ||
"jest": "29.5.0", | ||
"rimraf": "^5.0.5", | ||
"tsx": "^3.14.0", | ||
"tsx": "^4.6.2", | ||
"typescript": "5.3.2" | ||
}, | ||
"peerDependencies": { | ||
"tslib": "^2.6.2" | ||
} | ||
} |
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
Network access
Supply chain riskThis module accesses the network.
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
49884
5
1062
1
+ Added@trezor/utils@9.0.16(transitive)
- Removed@trezor/utils@9.0.15(transitive)
Updated@trezor/utils@9.0.16