ATLYSS TechPendium

No documentation subpage (/doc) found for this module.
function resolveArgs(args) {
    if (typeof args == "string") return { "0": args };
    return args;
}

function isModuleEmpty(mod) {
    return !mod || Object.keys(mod).length === 0;
}

async function resolveData(moduleName, test = false) {
    const versionsModuleName = test ? `TEST/Versions` : `Versions`;
    const Versions = await requireData(versionsModuleName);
    const LatestGameVersion = Versions.latest;
    const VersionEntries = Versions.versions || [];

    const requireName = test ? `TEST/${moduleName}/data/${LatestGameVersion}` : `${moduleName}/data/${LatestGameVersion}`;
    let DATA = await requireData(requireName);
    let usedVersion = LatestGameVersion;

    // Fallback: iterate versions list in order
    if (isModuleEmpty(DATA)) {
        for (const entry of VersionEntries) {
            const v = entry.id;
            const candidateName = test ? `TEST/${moduleName}/data/${v}` : `${moduleName}/data/${v}`
            const candidate = await requireData(candidateName);

            if (!isModuleEmpty(candidate)) {
                DATA = candidate;
                usedVersion = v;
                break;
            }
        }
    }

    return { data: DATA, version: usedVersion };
}

function sortObjectByKey(obj) {
    return Object.keys(obj).sort().reduce((result, key) => {
        result[key] = obj[key];
        return result;
    }, {});
}

function filterObjectByProperty(obj, key, value) {
    return Object.fromEntries(
        Object.entries(obj).filter(([_, v]) => v[key] === value)
    );
}

function sortObject(obj, compareFunction) {
    // Turn the object into an array of objects
    const entries = Object.entries(obj);

    // Sort the array using the provided compare function
    entries.sort((a, b) => compareFunction(a[1], b[1]));

    // Convert the sorted array back into an object
    return Object.fromEntries(entries);
}

function findByProperty(obj, key, value) {
    return Object.values(obj).find(item => item[key] === value);
}

exports = {
  resolveArgs,
  isModuleEmpty,
  resolveData,
  sortObjectByKey,
  filterObjectByProperty,
  sortObject,
  findByProperty
}
Last Edited by LiveGobe on 2/7/2026, 12:15:18 AM