Comparing version 1.1.27 to 1.1.28
{ | ||
"name": "libcip54", | ||
"version": "1.1.27", | ||
"version": "1.1.28", | ||
"description": "Cardano Smart NFT Library", | ||
@@ -5,0 +5,0 @@ "main": "lib/src/index.js", |
@@ -16,6 +16,14 @@ import pgCon from 'pg'; | ||
}, walletAddr: string): Promise<object>; | ||
export declare function getTokensFromStake(stakeAddress: string, page?: number): Promise<{ | ||
export declare function getTokensFromAny(address: string, page?: number): Promise<{ | ||
unit: string; | ||
quantity: number; | ||
}[] | null>; | ||
export declare function getTokensFromStake(stakeAddress: string, page?: number, policies?: boolean): Promise<{ | ||
unit: string; | ||
quantity: number; | ||
}[]>; | ||
export declare function getUniquePoliciesFromStake(stakeAddress: string, page?: number): Promise<{ | ||
unit: string; | ||
quantity: number; | ||
}[]>; | ||
export declare function getTokensFromPolicy(policyId: string, page?: number): Promise<any>; | ||
@@ -22,0 +30,0 @@ export declare function getPolicyHolders(policyId: string | string[], page?: number): Promise<any>; |
@@ -29,3 +29,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.crc8 = exports.fromHex = exports.fromLabel = exports.toLabel = exports.fromUnit = exports.toUnit = exports.labelIsCIP68 = exports.addressType = exports.validBech32Address = exports.validAddress = exports.getBaseAddress = exports.getStakeFromAny = exports.getStake = exports.getSmartImports = exports.getAddresses = exports.getFile = exports.getFileFromSrc = exports.getFilesFromArray = exports.getDataURLFromBlob = exports.getURLEncodedDataURLFromBlob = exports.getFiles = exports.getCIP68Metadata = exports.getMintTx = exports.getMetadata = exports.getLibraries = exports.getUTXOsFromEither = exports.getUTXOsFromAddr = exports.getUTXOsFromStake = exports.getUTXOs = exports.getTokenHolders = exports.getPolicyHolders = exports.getTokensFromPolicy = exports.getTokensFromStake = exports.getTokens = exports.getAdaHandleFromAddress = exports.getTransactionsFromStake = exports.getTransactions = exports.init = exports.CIP25_LABEL = exports.USER_TOKEN_LABEL = exports.REFERENCE_TOKEN_LABEL = void 0; | ||
exports.crc8 = exports.fromHex = exports.fromLabel = exports.toLabel = exports.fromUnit = exports.toUnit = exports.labelIsCIP68 = exports.addressType = exports.validBech32Address = exports.validAddress = exports.getBaseAddress = exports.getStakeFromAny = exports.getStake = exports.getSmartImports = exports.getAddresses = exports.getFile = exports.getFileFromSrc = exports.getFilesFromArray = exports.getDataURLFromBlob = exports.getURLEncodedDataURLFromBlob = exports.getFiles = exports.getCIP68Metadata = exports.getMintTx = exports.getMetadata = exports.getLibraries = exports.getUTXOsFromEither = exports.getUTXOsFromAddr = exports.getUTXOsFromStake = exports.getUTXOs = exports.getTokenHolders = exports.getPolicyHolders = exports.getTokensFromPolicy = exports.getUniquePoliciesFromStake = exports.getTokensFromStake = exports.getTokensFromAny = exports.getTokens = exports.getAdaHandleFromAddress = exports.getTransactionsFromStake = exports.getTransactions = exports.init = exports.CIP25_LABEL = exports.USER_TOKEN_LABEL = exports.REFERENCE_TOKEN_LABEL = void 0; | ||
const axios_1 = __importDefault(require("axios")); | ||
@@ -269,3 +269,12 @@ const punycode_1 = __importDefault(require("punycode")); | ||
// Todo - detect full addresses rather than stake addresses and do a slightly different query for them | ||
async function getTokensFromStake(stakeAddress, page = 0) { | ||
async function getTokensFromAny(address, page = 0) { | ||
let stakeAddress = address; | ||
stakeAddress = getStakeFromAny(stakeAddress); | ||
if (stakeAddress) { | ||
return await getTokensFromStake(stakeAddress, page); | ||
} | ||
return null; | ||
} | ||
exports.getTokensFromAny = getTokensFromAny; | ||
async function getTokensFromStake(stakeAddress, page = 0, policies = false) { | ||
ensureInit(); | ||
@@ -275,7 +284,15 @@ if (!_pgClient) | ||
let cresult; | ||
if ((cresult = await checkCache('getTokensFromStake:' + page + ':' + stakeAddress))) | ||
let defaultGroup = "GROUP BY concat(encode(multi_asset.policy, 'hex'), encode(multi_asset.name, 'hex'))"; | ||
let defaultSelect = "concat(encode(multi_asset.policy, 'hex'), encode(multi_asset.name, 'hex')) AS unit"; | ||
let defaultCache = 'getTokensFromStake'; | ||
if (policies) { | ||
defaultGroup = "GROUP BY encode(multi_asset.policy, 'hex')"; | ||
defaultSelect = "encode(multi_asset.policy, 'hex') AS UNIT"; | ||
defaultCache = 'getUniquePoliciesFromStake'; | ||
} | ||
if ((cresult = await checkCache(defaultCache + ':' + page + ':' + stakeAddress))) | ||
return cresult; | ||
let assets = await _pgClient.query(` | ||
SELECT | ||
concat(encode(multi_asset.policy, 'hex'), encode(multi_asset.name, 'hex')) AS unit, | ||
${defaultSelect}, | ||
sum(ma_tx_out.quantity) as quantity | ||
@@ -290,9 +307,13 @@ FROM multi_asset | ||
AND tx.valid_contract = 'true' | ||
GROUP BY concat(encode(multi_asset.policy, 'hex'), encode(multi_asset.name, 'hex')) | ||
${defaultGroup} | ||
`, [stakeAddress]); | ||
assets = assets.rows; | ||
await doCache('getTokensFromStake:' + page + ':' + stakeAddress, assets); | ||
await doCache(defaultCache + ':' + page + ':' + stakeAddress, assets); | ||
return assets; | ||
} | ||
exports.getTokensFromStake = getTokensFromStake; | ||
async function getUniquePoliciesFromStake(stakeAddress, page = 0) { | ||
return await getTokensFromStake(stakeAddress, page, true); | ||
} | ||
exports.getUniquePoliciesFromStake = getUniquePoliciesFromStake; | ||
async function getTokensFromPolicy(policyId, page = 0) { | ||
@@ -299,0 +320,0 @@ ensureInit(); |
{ | ||
"name": "libcip54", | ||
"version": "1.1.27", | ||
"version": "1.1.28", | ||
"description": "Cardano Smart NFT Library", | ||
@@ -5,0 +5,0 @@ "main": "lib/src/index.js", |
63485
1373