@saberhq/sail
Version:
Account caching and batched loading for React-based Solana applications.
37 lines • 1.4 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeListMemoKey = exports.uniqKeys = exports.serializeKeys = exports.accountsEqual = void 0;
const tslib_1 = require("tslib");
const solana_contrib_1 = require("@saberhq/solana-contrib");
const web3_js_1 = require("@solana/web3.js");
const lodash_uniq_1 = tslib_1.__importDefault(require("lodash.uniq"));
tslib_1.__exportStar(require("./falsy"), exports);
tslib_1.__exportStar(require("./fetchNullable"), exports);
const accountsEqual = (a, b) => {
if (a && b) {
return a.accountInfo.data.equals(b.accountInfo.data);
}
return false;
};
exports.accountsEqual = accountsEqual;
const serializeKeys = (keys) => {
return keys.map((k) => (k ? k.toString() : k));
};
exports.serializeKeys = serializeKeys;
/**
* Generates a list of unique {@link PublicKey}s.
* @param keys
* @returns
*/
const uniqKeys = (keys) => (0, lodash_uniq_1.default)(keys.map((key) => key.toString())).map((key) => new web3_js_1.PublicKey(key));
exports.uniqKeys = uniqKeys;
/**
* Makes a memo key for a list of strings.
* @param list
* @returns
*/
const makeListMemoKey = (list) => {
return (0, solana_contrib_1.mapSome)(list, (ms) => JSON.stringify(ms.map((mint) => (0, solana_contrib_1.mapSome)(mint, (m) => m.toString()))));
};
exports.makeListMemoKey = makeListMemoKey;
//# sourceMappingURL=index.js.map
;