ATLYSS TechPendium

Viewing old revision of Module:Utils

You are viewing an old revision of this page from 1/27/2026, 10:17:38 AM.

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

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

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

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

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

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

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

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

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

exports.sortObject = function (obj, compareFunction) {
    return Object.entries(obj).sort(compareFunction).reduce((result, [key, value]) => {
        result[key] = value;
        return result;
    }, {});
}
Last Edited by LiveGobe on 1/27/2026, 10:17:38 AM