ATLYSS TechPendium

Viewing old revision of Module:Utils

You are viewing an old revision of this page from 2/8/2026, 3:37:20 PM.

View latest version
This Module contains Internal Wiki logic and must be loaded using require keyword inside other logic modules.
Note that require supports only static imports.
This module can't be {{#invoke}}-ed.
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, version) {
    const versionsModuleName = test ? `TEST/Versions` : `Versions`;
    const Versions = await requireData(versionsModuleName);
    const LatestGameVersion = Versions.latest;
    const VersionEntries = Versions.versions || [];

    if (version) {
        const forcedName = test ? `TEST/${moduleName}/data/${version}` : `${moduleName}/data/${version}`;

        if (!availablePages.has(`Module:${forcedName}`)) return { data: {}, version: null };

        return { data: await requireData(forcedName), version }
    }

    const requireName = test ? `TEST/${moduleName}/data/${LatestGameVersion}` : `${moduleName}/data/${LatestGameVersion}`;
    if (availablePages.has(`Module:${requireName}`)) return { data: await requireData(requireName), version: LatestGameVersion };

    // Fallback: iterate versions list in order
    for (const entry of VersionEntries) {
        const v = entry.id;
        const candidateName = test ? `TEST/${moduleName}/data/${v}` : `${moduleName}/data/${v}`
        if (availablePages.has(`Module:${candidateName}`)) return { data: await requireData(candidateName), version: v };
    }

    return { data: {}, version: null };
}

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,
    arrayIncludes
}
Last Edited by LiveGobe on 2/8/2026, 3:37:20 PM

This page categories: