@dcspark/cip34-js
Version:
A Javascript library reference implementation for CIP34
87 lines (86 loc) • 3.15 kB
JavaScript
;
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var esm_exports = {};
__export(esm_exports, {
Errors: () => Errors,
fromChainId: () => fromChainId,
registry: () => import_registry.default,
toChainId: () => toChainId,
validateNetworkId: () => validateNetworkId,
validateNetworkMagic: () => validateNetworkMagic
});
module.exports = __toCommonJS(esm_exports);
var import_registry = __toESM(require("./registry.js"));
function toChainId(data) {
if (!validateNetworkId(data.networkId))
throw new Error(Errors.NetworkIdRange(data.networkId));
if (!validateNetworkMagic(data.networkMagic))
throw new Error(Errors.NetworkMagicRange(data.networkMagic));
return `cip34:${data.networkId}-${data.networkMagic}`;
}
function fromChainId(chainId) {
const regex = /^cip34:([0-9]{1,2})-([0-9]{1,10})$/g;
const match = regex.exec(chainId);
if (match == null || match.length < 2) {
throw new Error(Errors.NoMatch(chainId));
}
const networkId = Number.parseInt(match[1], 10);
const networkMagic = Number.parseInt(match[2], 10);
if (!validateNetworkId(networkId))
throw new Error(Errors.NetworkIdRange(networkId));
if (!validateNetworkMagic(networkMagic))
throw new Error(Errors.NetworkMagicRange(networkMagic));
return {
networkMagic,
networkId
};
}
const Errors = {
NetworkIdRange: (networkId) => `Network ID out of range [0, 16). Got ${networkId}`,
NetworkMagicRange: (networkMagic) => `Network magic out of range [0, 4_294_967_295). Got ${networkMagic}`,
NoMatch: (chainId) => `Provided chain ID did not match required format. Got ${chainId}`
};
function validateNetworkId(networkId) {
if (networkId >= 16 || networkId < 0) {
return false;
}
return true;
}
function validateNetworkMagic(networkMagic) {
if (networkMagic >= 4294967295 || networkMagic < 0) {
return false;
}
return true;
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
Errors,
fromChainId,
registry,
toChainId,
validateNetworkId,
validateNetworkMagic
});
//# sourceMappingURL=index.js.map