UNPKG

@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
"use strict"; 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}`); } }