@dschu012/casclib
Version:
CascLib node bindings
44 lines • 1.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const addon = require('../build/Release/casclib-native');
exports.LOCALES = Object.keys(addon.locales);
function localeMaskToList(localeMask) {
return Object.entries(addon.locales)
.filter(([name, mask]) => name !== 'ALL' && (localeMask & mask) !== 0)
.map(([name, mask]) => name);
}
function localesToMask(locales) {
let mask = 0;
locales.forEach(name => mask |= addon.locales[name]);
return mask;
}
function openStorageSync(path, locales = ['ALL']) {
return addon.openCascStorageSync(path, localesToMask(locales));
}
exports.openStorageSync = openStorageSync;
function openStorage(path, localesOrCallback = ['ALL'], callback) {
let locales = ['ALL'];
if (Array.isArray(localesOrCallback)) {
locales = localesOrCallback;
}
else {
callback = localesOrCallback;
}
return addon.openCascStorage(path, localesToMask(locales), callback);
}
exports.openStorage = openStorage;
function getStorageInfo(storageHandle) {
const info = addon.getCascStorageInfo(storageHandle);
return {
fileCount: info.fileCount,
gameName: info.gameName,
gameBuild: info.gameBuild,
installedLocales: localeMaskToList(info.installedLocales),
};
}
exports.getStorageInfo = getStorageInfo;
function closeStorage(storageHandle) {
addon.closeCascStorage(storageHandle);
}
exports.closeStorage = closeStorage;
//# sourceMappingURL=storage.js.map