Skip to content

Commit d410041

Browse files
authored
Merge pull request #10 from OrcaPracticas/add/tools
⚙️ Integración de Tools
2 parents 7e589f5 + 22e88b1 commit d410041

5 files changed

Lines changed: 140 additions & 4 deletions

File tree

.babelrc.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ module.exports = {
44
presets: ["@babel/preset-env"],
55
plugins: [
66
"inline-json-import",
7+
"@babel/plugin-proposal-class-properties",
78
[
89
"module-resolver",
910
{

app/src/server/index.js

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@ import Helmet, { frameguard } from "helmet";
66
import Path from "path";
77

88
import ApiRouter from "./router";
9-
9+
import Tools from "Tools/Helpers";
1010
// ======================== CONSTANTES ======================== //
1111

1212
const APP_PORT = process.env.PORT;
1313
const ROOT_PATH = Path.join(__dirname, "../../");
14+
const Helpers = Tools.instance;
1415
const Server = Express();
1516

1617
// ==================== COMNFIGURACIONES ==================== //
@@ -29,18 +30,33 @@ Server.use(BodyParser.json());
2930

3031
// ==================== ARCHIVOS STATICOS ==================== //
3132

32-
Server.use("/", Statics(`${ROOT_PATH}/public/`));
33+
Server.use("/", Statics(`${ROOT_PATH}/public/`, {
34+
setHeaders(response) {
35+
Helpers.getTimeToLive(response, 31536000, "assets");
36+
}
37+
}));
3338

3439
// ===================== MANEJO DE RUTAS ====================== //
3540

3641
Server.use(ApiRouter(Router));
3742

3843
// ====================== ESTABLECIENDO CONEXIÓN ====================== //
3944

45+
/**
46+
* Inicializacion del servidor.
47+
*
48+
* @param {Number} PORT Puerto por el que estara escuhcando el server.
49+
* @param {Function} Callback Permite identificar el estado del proceso.
50+
*
51+
* return void.
52+
*/
4053
Server.listen(APP_PORT, (error) => {
54+
Helpers.messages("Iniciando el Servidor", "i");
4155
if (error) {
42-
console.log(error);
56+
Helpers.messages("Problemas al inicar el servidor", "e");
57+
console.log(error); // eslint-disable-line
58+
process.exit(1);
4359
} else {
44-
console.log(`Servidro listo ${APP_PORT}`);
60+
Helpers.messages(`🚀 Servidor listo en el puerto ${APP_PORT}`, "s");
4561
}
4662
});

app/src/tools/Helpers.js

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
import Colors from "cli-color";
2+
3+
class Helper {
4+
// Propiedad privada
5+
static #instanceClass = null;
6+
7+
/**
8+
* Permite limpiar y formatear una cadena
9+
*
10+
* @param {string} string Cadena a limpiar.
11+
* @param {string} union Cararter con el que sera unida.
12+
*
13+
* @retur {string}
14+
*/
15+
formatString(string = "", union = "") {
16+
let ascii = 0;
17+
let char = "";
18+
let newString = "";
19+
const STRING = string.toLowerCase();
20+
const SPECIAL = {
21+
á: "a",
22+
é: "e",
23+
í: "i",
24+
ó: "o",
25+
ú: "u",
26+
ñ: "n",
27+
"♀": "f",
28+
"♂": "m",
29+
};
30+
31+
for (let i = 0; i < STRING.length; i += 1) {
32+
char = STRING[i];
33+
char = (typeof SPECIAL[char] !== "undefined") ? SPECIAL[char] : char;
34+
if (typeof char !== "function") {
35+
ascii = char.charCodeAt();
36+
newString += (ascii === 32 || (ascii >= 48 && ascii <= 57) || (ascii >= 97 && ascii <= 122)) ? char : "";
37+
}
38+
}
39+
newString = newString.split(" ").filter(Boolean);
40+
return newString.join(union);
41+
}
42+
43+
/**
44+
* Permite el seteo de las metas de cache.
45+
*
46+
* @param {express} response Respuesta de express.
47+
* @param {Number} ttl Tiempo de vida de elemento.
48+
* @param {String} type Tipo de elemento.
49+
*
50+
* @return {void}
51+
*/
52+
getTimeToLive(response, ttl = 100, type = "generic") {
53+
const EDGE_VALUE = `API_${type}`.toUpperCase();
54+
response.setHeader("Edge-Control", `!no-store, cache-maxage=${ttl}s`);
55+
response.setHeader("Edge-Cache-Tag", EDGE_VALUE);
56+
response.setHeader("Cache-Control", `max-age=${ttl}`);
57+
}
58+
59+
/**
60+
* Permite el envio de mensajes
61+
*
62+
* @param String text Mensaje que se desea mostrar.
63+
* @param String type (Optional) Tipo de mensaje
64+
*
65+
* e = error
66+
* s = succses
67+
* w = warning
68+
* t = tracking
69+
* default = info
70+
*
71+
* @return void.
72+
*/
73+
messages(text, type = "") {
74+
let log = "";
75+
let msg = "";
76+
let auxText = typeof text === "object" ? JSON.stringify(text) : text;
77+
const lon = (auxText.length < 90) ? (100 - auxText.length) : 0;
78+
switch (type) {
79+
case "e":
80+
log = Colors.xterm(15).bgXterm(124).bold;
81+
msg = " 🚨 ERROR ";
82+
break;
83+
case "s":
84+
log = Colors.xterm(15).bgXterm(34).bold;
85+
msg = " 🙌 SUCCESS ";
86+
break;
87+
case "w":
88+
log = Colors.xterm(232).bgXterm(214).bold;
89+
msg = " ⚠️ WARNING ";
90+
break;
91+
case "t":
92+
log = Colors.xterm(15).bgXterm(90).bold;
93+
msg = " 🔎 TRACKING ";
94+
break;
95+
default:
96+
log = Colors.xterm(15).bgXterm(12).bold;
97+
msg = " ℹ️ INFO ";
98+
break;
99+
}
100+
for (let i = 0; i < lon; i += 1) { auxText += " "; }
101+
console.log(log(` [${msg}] => ${auxText}`));
102+
}
103+
104+
/**
105+
* Permite conseguir una instancia de la clase.
106+
*
107+
* @returns {Helper}
108+
*/
109+
static get instance() {
110+
if (!Helper.#instanceClass) {
111+
Helper.#instanceClass = new Helper();
112+
}
113+
return Helper.#instanceClass;
114+
}
115+
}
116+
117+
export default Helper;

app/src/tools/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { default } from "./Helpers";

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
"@babel/cli": "7.10.3",
3232
"@babel/core": "7.10.3",
3333
"@babel/node": "7.10.3",
34+
"@babel/plugin-proposal-class-properties": "^7.10.1",
3435
"@babel/preset-env": "7.10.3",
3536
"@babel/register": "7.10.3",
3637
"babel-eslint": "10.1.0",

0 commit comments

Comments
 (0)