@kiroboio/fct-core
Version:
Kirobo.io FCT Core library
78 lines • 3.68 kB
JavaScript
import { BackOutputVariableBaseAddress, BackOutputVariableBaseBytes32, ComputedBaseAddress, ComputedBaseBytes32, ExternalVariableBaseAddress, ExternalVariableBaseBytes32, OutputVariableBaseAddress, OutputVariableBaseBytes32, } from "../constants";
import { InstanceOf } from "../helpers";
import { globalVariables, globalVariablesBytes } from "./globalVariables";
export function isExternalVariable(value) {
if (InstanceOf.Variable(value)) {
return value.type === "external";
}
if (typeof value === "string" && (value.length === 42 || value.length === 66)) {
const hexString = value.toLowerCase();
const base = value.length === 42 ? ExternalVariableBaseAddress.toLowerCase() : ExternalVariableBaseBytes32.toLowerCase();
return hexString.slice(0, -4) === base.slice(0, -4);
}
return false;
}
export function isComputedVariable({ value, id, index, strict = false }) {
if (InstanceOf.CoreVariable(value)) {
const idCheck = id ? value.id === id : true;
return value.type === "computed" && idCheck;
}
if (typeof value === "string" && (value.length === 42 || value.length === 66)) {
const hexString = value.toLowerCase();
const base = value.length === 42 ? ComputedBaseAddress.toLowerCase() : ComputedBaseBytes32.toLowerCase();
if (hexString.slice(0, -4) === base.slice(0, -4)) {
if (!strict)
return true;
const parsedIndex = parseInt(hexString.slice(-4), 16).toString();
return parsedIndex === (index + 1).toString();
}
}
return false;
}
export function isOutputVariable({ value, index, strict = false, }) {
if (InstanceOf.Variable(value)) {
return value.type === "output";
}
if (typeof value === "string" && (value.length === 42 || value.length === 66)) {
const hexString = value.toLowerCase();
const base = value.length === 42 ? OutputVariableBaseAddress.toLowerCase() : OutputVariableBaseBytes32.toLowerCase();
const backBase = value.length === 42 ? BackOutputVariableBaseAddress.toLowerCase() : BackOutputVariableBaseBytes32.toLowerCase();
if (hexString.slice(0, -8) === base.slice(0, -8)) {
if (!strict)
return true;
const parsedIndex = parseInt(hexString.slice(-4), 16).toString();
return parsedIndex === (index + 1).toString();
}
if (hexString.slice(0, -8) === backBase.slice(0, -8)) {
if (!strict)
return true;
const parsedIndex = parseInt(hexString.slice(-4), 16).toString();
return parsedIndex === (index + 1).toString();
}
}
return false;
}
export function isGlobalVariable(value) {
if (InstanceOf.Variable(value)) {
return value.type === "global";
}
if (typeof value === "string" && (value.length === 42 || value.length === 66)) {
if (value.length === 42) {
const setOfGlobalVars = Object.values(globalVariables);
const valHexString = value.toLowerCase();
return setOfGlobalVars.some((variable) => variable.toLowerCase().slice(0, -4) === valHexString.slice(0, -4));
}
else {
const setOfGlobalVars = Object.values(globalVariablesBytes);
const valHexString = value.toLowerCase();
return setOfGlobalVars.some((variable) => variable.toLowerCase().slice(0, -4) === valHexString.slice(0, -4));
}
}
return false;
}
export function isConstantVariable(value) {
if (InstanceOf.Variable(value)) {
return value.type === "constants";
}
}
//# sourceMappingURL=isVariable.js.map