ATLYSS TechPendium

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.
class Cache {
    get(namespace, key) {
        return frame[namespace]?.[key];
    }
    
    getAll(namespace) {
    	return Object.values(frame[namespace] ?? {});
	}
    
    getAllBySuffix(suffix) {
    	const result = [];

    	for (const namespace in frame) {
        	if (!namespace.endsWith(suffix)) continue;

        	const entries = frame[namespace];
        	if (!entries) continue;

    	    result.push(...Object.values(entries));
	    }

    	return result;
	}

    set(namespace, key, value) {
        frame[namespace] ??= {};
        frame[namespace][key] = value;
    }

    has(namespace, key) {
        return key in (frame[namespace] ?? {});
    }

    delete(namespace, key) {
        if (this.has(namespace, key)) {
            delete frame[namespace][key];
        }
    }

    clear(namespace) {
        if (frame[namespace]) {
            delete frame[namespace];
        }
    }
}

exports = new Cache();
Last Edited by LiveGobe on 5/19/2026, 2:55:10 PM

This page categories: