UNPKG

spa_codegenerator

Version:

NPM:

136 lines (113 loc) 5.44 kB
const generateCode = require('./functions/generateCode'); const _findCode = require('./functions/findCode'); const fs = require('fs'); let config = {}; class createBASE { constructor(BASE_NAME, options = { codesLength: Number, // Longitud del código que se generará. generateInUTF8: Boolean, // Si el código será generato con caracteres. TRUE = Caracteres, false = Números insertSomething: { string: String, // La cadena que será insertada cada cierta longitud. eachString: Number, // La longitud que se debe repetir hasta insertar otra cadena. }, deepSave: Boolean // Si el código será guardado en ".../node_modules/spa_codegenerator/data" }) { if(!BASE_NAME) throw new Error('BASE_NAME: No se ha especificado el nombre de la base.'); if(!options.codesLength) options.codesLength = Math.floor(Math.random() * 9 + 1); if(typeof options.codesLength != 'number') options.codesLength = Math.floor(Math.random() * 9 + 1); if(!options.generateInUTF8) options.generateInUTF8 = false; if(typeof options.generateInUTF8 != 'boolean') options.generateInUTF8 = false; if(!options.insertSomething) options.insertSomething = { string: 1, eachString: 'ESTÁ ALTERADO, NO TOCAR' }; if(options.insertSomething && options.insertSomething.string && !options.insertSomething.string) options.insertSomething.string = '.'; if(typeof options.insertSomething.string != 'string') options.insertSomething.string = '.'; if(options.insertSomething && options.insertSomething.eachString && !options.insertSomething.eachString) options.insertSomething.eachString = Math.floor(Math.random() * 9 + 1); if(typeof options.insertSomething.eachString != 'number') options.insertSomething.eachString = Math.floor(Math.random() * 9 + 1); if(!options.deepSave) options.deepSave = false; if(typeof options.deepSave != 'boolean') options.deepSave = false; options.insertSomething.eachString--; options.BASE_NAME = BASE_NAME; fs.readdir(__dirname + '/BASES/', function (err, files) { if (err) throw new Error(`No se ha podido escanear el directorio '${__dirname}/BASES/'.`); if(files.includes(`${config.BASE_NAME}.json`))return; fs.writeFile(__dirname + `/BASES/${BASE_NAME}.json`, `{\n "codes": []\n}`, function(err) { if(err) throw new Error(err); }); }); config = options; } async generateCode(amount, codeEndAtString) { if(!amount) amount = 1; if(!codeEndAtString) codeEndAtString = false; let returned = await generateCode(amount, config, codeEndAtString); fs.readdir(__dirname + '/BASES/', function (err, files) { if(!files.includes(`${config.BASE_NAME}.json`) || config.deepSave == false)return; let deep = require(`./BASES/${config.BASE_NAME}.json`); let newArrayCodes = []; for(let n = 0; n < deep.codes.length; n++) { newArrayCodes.push(`"${deep.codes[n]}"`); } for(let n = 0; n < returned.length; n++) { newArrayCodes.push(`"${returned[n]}"`); } fs.writeFile(__dirname + `/BASES/${config.BASE_NAME}.json`, `{\n "codes": [${newArrayCodes}]\n}`, function(err) { if(err) throw new Error(err); }); }); return returned; } async findCode(code) { fs.readdir(__dirname + '/BASES/', function (err, files) { if(!files.includes(`${config.BASE_NAME}.json`) || config.deepSave == false)return undefined; }); return await _findCode(code, config); } async findCodeAndUpdate(code, newCode) { if(!newCode) throw new Error('No se ha especificado el nuevo valor.'); let _code = await findCode(code, config); if(_code) { let deep = require(`./BASES/${config.BASE_NAME}.json`); let newArray = []; newArray = await pulk(deep.codes, code); newArray.push(`"${newCode}"`); fs.writeFile(__dirname + `/BASES/${config.BASE_NAME}.json`, `{\n "codes": [${newArray}]\n}`, function(err) { if(err) throw new Error(err); }); return true; } } async findCodeAndDelete(code) { let _code = await findCode(code, config); if(_code) { let deep = require(`./BASES/${config.BASE_NAME}.json`); let newArray = []; newArray = await pulk(deep.codes, code); fs.writeFile(__dirname + `/BASES/${config.BASE_NAME}.json`, `{\n "codes": [${newArray}]\n}`, function(err) { if(err) throw new Error(err); }); return true; } } async getAllCodes() { let deep = require(`./BASES/${config.BASE_NAME}.json`); return deep.codes; } } async function pulk(array, object) { let newArray = []; for(x of array) { if(x != object) { newArray.push(x); } } return newArray; } module.exports = { createBASE }