@alchemy/aa-core
Version:
viem based SDK that enables interactions with ERC-4337 Smart Accounts. ABIs are based off the definitions generated in @account-abstraction/contracts
127 lines • 4.77 kB
JavaScript
;
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 __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;
};
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);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.toRecord = exports.conditionalReturn = exports.allEqual = exports.pick = exports.filterUndefined = exports.defineReadOnly = exports.deepHexlify = exports.resolveProperties = exports.asyncPipe = exports.getChain = exports.AlchemyChainMap = void 0;
const viem_1 = require("viem");
const chains = __importStar(require("viem/chains"));
const alchemyChains = __importStar(require("../chains/index.js"));
exports.AlchemyChainMap = new Map(Object.values(alchemyChains).map((c) => [c.id, c]));
const getChain = (chainId) => {
for (const chain of Object.values(chains)) {
if (chain.id === chainId) {
return exports.AlchemyChainMap.get(chain.id) ?? chain;
}
}
throw new Error("could not find chain");
};
exports.getChain = getChain;
const asyncPipe = (...fns) => async (s, o, f) => {
let result = s;
for (const fn of fns) {
result = await fn(result, o, f);
}
return result;
};
exports.asyncPipe = asyncPipe;
async function resolveProperties(object) {
const promises = Object.keys(object).map((key) => {
const value = object[key];
return Promise.resolve(value).then((v) => ({ key: key, value: v }));
});
const results = await Promise.all(promises);
return filterUndefined(results.reduce((accum, curr) => {
accum[curr.key] = curr.value;
return accum;
}, {}));
}
exports.resolveProperties = resolveProperties;
function deepHexlify(obj) {
if (typeof obj === "function") {
return undefined;
}
if (obj == null || typeof obj === "string" || typeof obj === "boolean") {
return obj;
}
else if (typeof obj === "bigint") {
return (0, viem_1.toHex)(obj);
}
else if (obj._isBigNumber != null || typeof obj !== "object") {
return (0, viem_1.toHex)(obj).replace(/^0x0/, "0x");
}
if (Array.isArray(obj)) {
return obj.map((member) => deepHexlify(member));
}
return Object.keys(obj).reduce((set, key) => ({
...set,
[key]: deepHexlify(obj[key]),
}), {});
}
exports.deepHexlify = deepHexlify;
function defineReadOnly(object, key, value) {
Object.defineProperty(object, key, {
enumerable: true,
value: value,
writable: false,
});
}
exports.defineReadOnly = defineReadOnly;
function filterUndefined(obj) {
for (const key in obj) {
if (obj[key] == null) {
delete obj[key];
}
}
return obj;
}
exports.filterUndefined = filterUndefined;
function pick(obj, keys) {
return Object.keys(obj)
.filter((k) => keys.includes(k))
.reduce((res, k) => Object.assign(res, { [k]: obj[k] }), {});
}
exports.pick = pick;
const allEqual = (...params) => {
if (params.length === 0) {
throw new Error("no values passed in");
}
return params.every((v) => v === params[0]);
};
exports.allEqual = allEqual;
const conditionalReturn = (condition, value) => condition.then((t) => (t ? value() : undefined));
exports.conditionalReturn = conditionalReturn;
const toRecord = (array, selector, fn) => array.reduce((acc, item) => {
acc[item[selector]] = fn(item);
return acc;
}, {});
exports.toRecord = toRecord;
__exportStar(require("./bigint.js"), exports);
__exportStar(require("./bytes.js"), exports);
__exportStar(require("./defaults.js"), exports);
__exportStar(require("./schema.js"), exports);
__exportStar(require("./userop.js"), exports);
//# sourceMappingURL=index.js.map