@bck-inc/nsl-core
Version:
SDK officiel pour l'API NSL (Néon Spinellia LuckyScale) - 100 % fetch natif
42 lines (41 loc) • 1.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.assertIsNSLData = assertIsNSLData;
exports.assertIsModuleArray = assertIsModuleArray;
// guards.ts ─ 0 dépendance, 100 % TS/JS
const types_1 = require("./types");
/** Mini‑helper utilitaire */
function isObj(x) {
return typeof x === 'object' && x !== null;
}
/**
* Vérifie qu’un objet correspond à { rep:{ message, code }, data?: any }.
* Lance une erreur descriptive si quelque chose manque ou n’est pas du bon type.
*/
function assertIsNSLData(x) {
if (!isObj(x))
throw new Error('réponse NSL : attendu un objet');
const rep = x.rep;
if (!isObj(rep))
throw new Error('réponse NSL : rep manquant');
if (typeof rep.message !== 'string')
throw new Error('réponse NSL : rep.message doit être une string');
if (!Object.values(types_1.NSLCodes).includes(rep.code))
throw new Error(`réponse NSL : rep.code invalide → ${rep.code}`);
}
/**
* Vérifie que data est un tableau de modules minimalistes.
* Ici on contrôle simplement module_name + state, mais tu peux allonger la liste.
*/
function assertIsModuleArray(data) {
if (!Array.isArray(data))
throw new Error('data: attendu un tableau');
for (const [i, mod] of data.entries()) {
if (!isObj(mod))
throw new Error(`data[${i}] : attendu objet`);
if (typeof mod.module_name !== 'string')
throw new Error(`data[${i}].module_name doit être string`);
if (!Object.values(types_1.NSLState).includes(mod.state))
throw new Error(`data[${i}].state invalide → ${mod.state}`);
}
}