@cognima/banners 0.0.1-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/fonts/Manrope/Manrope-Bold.ttf +0 -0
- package/assets/fonts/Manrope/Manrope-Regular.ttf +0 -0
- package/assets/fonts/Others/AbyssinicaSIL-Regular.ttf +0 -0
- package/assets/fonts/Others/ChirpRegular.ttf +0 -0
- package/assets/fonts/Poppins/Poppins-Bold.ttf +0 -0
- package/assets/fonts/Poppins/Poppins-Medium.ttf +0 -0
- package/assets/fonts/Poppins/Poppins-Regular.ttf +0 -0
- package/assets/placeholders/album_art.png +0 -0
- package/assets/placeholders/avatar.png +0 -0
- package/assets/placeholders/badge.jpg +0 -0
- package/assets/placeholders/badge.png +0 -0
- package/assets/placeholders/badge_2.jpg +0 -0
- package/assets/placeholders/badge_3.jpg +0 -0
- package/assets/placeholders/badge_4.jpg +0 -0
- package/assets/placeholders/badge_5.jpg +0 -0
- package/assets/placeholders/banner.jpeg +0 -0
- package/assets/placeholders/images.jpeg +0 -0
- package/index.js +153 -0
- package/package.json +34 -0
- package/src/animation-effects.js +631 -0
- package/src/cache-manager.js +258 -0
- package/src/community-banner.js +1536 -0
- package/src/constants.js +208 -0
- package/src/discord-profile.js +584 -0
- package/src/e-commerce-banner.js +1214 -0
- package/src/effects.js +355 -0
- package/src/error-handler.js +305 -0
- package/src/event-banner.js +1319 -0
- package/src/facebook-post.js +679 -0
- package/src/gradient-welcome.js +430 -0
- package/src/image-filters.js +1034 -0
- package/src/image-processor.js +1014 -0
- package/src/instagram-post.js +504 -0
- package/src/interactive-elements.js +1208 -0
- package/src/linkedin-post.js +658 -0
- package/src/marketing-banner.js +1089 -0
- package/src/minimalist-banner.js +892 -0
- package/src/modern-profile.js +755 -0
- package/src/performance-optimizer.js +216 -0
- package/src/telegram-header.js +544 -0
- package/src/test-runner.js +645 -0
- package/src/tiktok-post.js +713 -0
- package/src/twitter-header.js +604 -0
- package/src/validator.js +442 -0
- package/src/welcome-leave.js +445 -0
- package/src/whatsapp-status.js +386 -0
- package/src/youtube-thumbnail.js +681 -0
- package/utils.js +710 -0
package/src/validator.js
ADDED
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Módulo de Validação
|
|
5
|
+
*
|
|
6
|
+
* Este módulo fornece funcionalidades para validação de parâmetros
|
|
7
|
+
* e entradas no módulo de banners.
|
|
8
|
+
*
|
|
9
|
+
* @author Cognima Team (melhorado)
|
|
10
|
+
* @version 2.0.0
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Classe para validação de parâmetros
|
|
17
|
+
*/
|
|
18
|
+
class Validator {
|
|
19
|
+
/**
|
|
20
|
+
* Cria uma nova instância do validador
|
|
21
|
+
*/
|
|
22
|
+
constructor() {
|
|
23
|
+
this.errors = [];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Limpa os erros acumulados
|
|
28
|
+
*/
|
|
29
|
+
clearErrors() {
|
|
30
|
+
this.errors = [];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Obtém os erros acumulados
|
|
35
|
+
* @returns {Array<Object>} - Lista de erros
|
|
36
|
+
*/
|
|
37
|
+
getErrors() {
|
|
38
|
+
return [...this.errors];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Verifica se há erros acumulados
|
|
43
|
+
* @returns {boolean} - Se há erros
|
|
44
|
+
*/
|
|
45
|
+
hasErrors() {
|
|
46
|
+
return this.errors.length > 0;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Adiciona um erro
|
|
51
|
+
* @param {string} field - Campo com erro
|
|
52
|
+
* @param {string} message - Mensagem de erro
|
|
53
|
+
* @param {*} value - Valor inválido
|
|
54
|
+
*/
|
|
55
|
+
addError(field, message, value = undefined) {
|
|
56
|
+
this.errors.push({
|
|
57
|
+
field,
|
|
58
|
+
message,
|
|
59
|
+
value: value !== undefined ? String(value) : undefined
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Valida se um valor é obrigatório
|
|
65
|
+
* @param {*} value - Valor a ser validado
|
|
66
|
+
* @param {string} field - Nome do campo
|
|
67
|
+
* @returns {boolean} - Se o valor é válido
|
|
68
|
+
*/
|
|
69
|
+
required(value, field) {
|
|
70
|
+
if (value === undefined || value === null || value === "") {
|
|
71
|
+
this.addError(field, `O campo ${field} é obrigatório.`);
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Valida se um valor é uma string
|
|
79
|
+
* @param {*} value - Valor a ser validado
|
|
80
|
+
* @param {string} field - Nome do campo
|
|
81
|
+
* @returns {boolean} - Se o valor é válido
|
|
82
|
+
*/
|
|
83
|
+
isString(value, field) {
|
|
84
|
+
if (value !== undefined && value !== null && typeof value !== "string") {
|
|
85
|
+
this.addError(field, `O campo ${field} deve ser uma string.`, value);
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Valida se um valor é um número
|
|
93
|
+
* @param {*} value - Valor a ser validado
|
|
94
|
+
* @param {string} field - Nome do campo
|
|
95
|
+
* @returns {boolean} - Se o valor é válido
|
|
96
|
+
*/
|
|
97
|
+
isNumber(value, field) {
|
|
98
|
+
if (value !== undefined && value !== null && typeof value !== "number") {
|
|
99
|
+
this.addError(field, `O campo ${field} deve ser um número.`, value);
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Valida se um valor é um booleano
|
|
107
|
+
* @param {*} value - Valor a ser validado
|
|
108
|
+
* @param {string} field - Nome do campo
|
|
109
|
+
* @returns {boolean} - Se o valor é válido
|
|
110
|
+
*/
|
|
111
|
+
isBoolean(value, field) {
|
|
112
|
+
if (value !== undefined && value !== null && typeof value !== "boolean") {
|
|
113
|
+
this.addError(field, `O campo ${field} deve ser um booleano.`, value);
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Valida se um valor é um objeto
|
|
121
|
+
* @param {*} value - Valor a ser validado
|
|
122
|
+
* @param {string} field - Nome do campo
|
|
123
|
+
* @returns {boolean} - Se o valor é válido
|
|
124
|
+
*/
|
|
125
|
+
isObject(value, field) {
|
|
126
|
+
if (value !== undefined && value !== null && (typeof value !== "object" || Array.isArray(value))) {
|
|
127
|
+
this.addError(field, `O campo ${field} deve ser um objeto.`, value);
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Valida se um valor é um array
|
|
135
|
+
* @param {*} value - Valor a ser validado
|
|
136
|
+
* @param {string} field - Nome do campo
|
|
137
|
+
* @returns {boolean} - Se o valor é válido
|
|
138
|
+
*/
|
|
139
|
+
isArray(value, field) {
|
|
140
|
+
if (value !== undefined && value !== null && !Array.isArray(value)) {
|
|
141
|
+
this.addError(field, `O campo ${field} deve ser um array.`, value);
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Valida se um valor está dentro de um intervalo
|
|
149
|
+
* @param {number} value - Valor a ser validado
|
|
150
|
+
* @param {number} min - Valor mínimo
|
|
151
|
+
* @param {number} max - Valor máximo
|
|
152
|
+
* @param {string} field - Nome do campo
|
|
153
|
+
* @returns {boolean} - Se o valor é válido
|
|
154
|
+
*/
|
|
155
|
+
inRange(value, min, max, field) {
|
|
156
|
+
if (value !== undefined && value !== null) {
|
|
157
|
+
if (typeof value !== "number") {
|
|
158
|
+
this.addError(field, `O campo ${field} deve ser um número.`, value);
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if (value < min || value > max) {
|
|
163
|
+
this.addError(field, `O campo ${field} deve estar entre ${min} e ${max}.`, value);
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Valida se um valor tem um comprimento dentro de um intervalo
|
|
172
|
+
* @param {string|Array} value - Valor a ser validado
|
|
173
|
+
* @param {number} min - Comprimento mínimo
|
|
174
|
+
* @param {number} max - Comprimento máximo
|
|
175
|
+
* @param {string} field - Nome do campo
|
|
176
|
+
* @returns {boolean} - Se o valor é válido
|
|
177
|
+
*/
|
|
178
|
+
lengthInRange(value, min, max, field) {
|
|
179
|
+
if (value !== undefined && value !== null) {
|
|
180
|
+
if (typeof value !== "string" && !Array.isArray(value)) {
|
|
181
|
+
this.addError(field, `O campo ${field} deve ser uma string ou um array.`, value);
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
if (value.length < min || value.length > max) {
|
|
186
|
+
this.addError(field, `O campo ${field} deve ter entre ${min} e ${max} caracteres.`, value);
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return true;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Valida se um valor está em uma lista de valores permitidos
|
|
195
|
+
* @param {*} value - Valor a ser validado
|
|
196
|
+
* @param {Array} allowedValues - Lista de valores permitidos
|
|
197
|
+
* @param {string} field - Nome do campo
|
|
198
|
+
* @returns {boolean} - Se o valor é válido
|
|
199
|
+
*/
|
|
200
|
+
oneOf(value, allowedValues, field) {
|
|
201
|
+
if (value !== undefined && value !== null && !allowedValues.includes(value)) {
|
|
202
|
+
this.addError(field, `O campo ${field} deve ser um dos seguintes valores: ${allowedValues.join(", ")}.`, value);
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Valida se um valor é uma cor hexadecimal válida
|
|
210
|
+
* @param {string} value - Valor a ser validado
|
|
211
|
+
* @param {string} field - Nome do campo
|
|
212
|
+
* @returns {boolean} - Se o valor é válido
|
|
213
|
+
*/
|
|
214
|
+
isHexColor(value, field) {
|
|
215
|
+
if (value !== undefined && value !== null) {
|
|
216
|
+
if (typeof value !== "string") {
|
|
217
|
+
this.addError(field, `O campo ${field} deve ser uma string.`, value);
|
|
218
|
+
return false;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
const hexColorRegex = /^#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{6})$/;
|
|
222
|
+
|
|
223
|
+
if (!hexColorRegex.test(value)) {
|
|
224
|
+
this.addError(field, `O campo ${field} deve ser uma cor hexadecimal válida (ex: #FFF ou #FFFFFF).`, value);
|
|
225
|
+
return false;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return true;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Valida se um valor é uma URL válida
|
|
233
|
+
* @param {string} value - Valor a ser validado
|
|
234
|
+
* @param {string} field - Nome do campo
|
|
235
|
+
* @returns {boolean} - Se o valor é válido
|
|
236
|
+
*/
|
|
237
|
+
isUrl(value, field) {
|
|
238
|
+
if (value !== undefined && value !== null) {
|
|
239
|
+
if (typeof value !== "string") {
|
|
240
|
+
this.addError(field, `O campo ${field} deve ser uma string.`, value);
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
try {
|
|
245
|
+
new URL(value);
|
|
246
|
+
return true;
|
|
247
|
+
} catch (err) {
|
|
248
|
+
this.addError(field, `O campo ${field} deve ser uma URL válida.`, value);
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return true;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Valida se um valor é um caminho de arquivo válido
|
|
257
|
+
* @param {string} value - Valor a ser validado
|
|
258
|
+
* @param {string} field - Nome do campo
|
|
259
|
+
* @returns {boolean} - Se o valor é válido
|
|
260
|
+
*/
|
|
261
|
+
isFilePath(value, field) {
|
|
262
|
+
if (value !== undefined && value !== null) {
|
|
263
|
+
if (typeof value !== "string") {
|
|
264
|
+
this.addError(field, `O campo ${field} deve ser uma string.`, value);
|
|
265
|
+
return false;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
// Validação básica de caminho de arquivo
|
|
269
|
+
const invalidChars = /[<>:"|?*\x00-\x1F]/g;
|
|
270
|
+
|
|
271
|
+
if (invalidChars.test(value)) {
|
|
272
|
+
this.addError(field, `O campo ${field} contém caracteres inválidos para um caminho de arquivo.`, value);
|
|
273
|
+
return false;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return true;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Valida se um valor corresponde a um padrão regex
|
|
281
|
+
* @param {string} value - Valor a ser validado
|
|
282
|
+
* @param {RegExp} pattern - Padrão regex
|
|
283
|
+
* @param {string} field - Nome do campo
|
|
284
|
+
* @param {string} message - Mensagem de erro personalizada
|
|
285
|
+
* @returns {boolean} - Se o valor é válido
|
|
286
|
+
*/
|
|
287
|
+
matches(value, pattern, field, message = null) {
|
|
288
|
+
if (value !== undefined && value !== null) {
|
|
289
|
+
if (typeof value !== "string") {
|
|
290
|
+
this.addError(field, `O campo ${field} deve ser uma string.`, value);
|
|
291
|
+
return false;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
if (!pattern.test(value)) {
|
|
295
|
+
this.addError(field, message || `O campo ${field} não corresponde ao padrão esperado.`, value);
|
|
296
|
+
return false;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
return true;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Valida se um objeto tem uma estrutura específica
|
|
304
|
+
* @param {Object} value - Objeto a ser validado
|
|
305
|
+
* @param {Object} schema - Esquema de validação
|
|
306
|
+
* @param {string} field - Nome do campo
|
|
307
|
+
* @returns {boolean} - Se o objeto é válido
|
|
308
|
+
*/
|
|
309
|
+
validateObject(value, schema, field) {
|
|
310
|
+
if (value !== undefined && value !== null) {
|
|
311
|
+
if (typeof value !== "object" || Array.isArray(value)) {
|
|
312
|
+
this.addError(field, `O campo ${field} deve ser um objeto.`, value);
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
let isValid = true;
|
|
317
|
+
|
|
318
|
+
for (const key in schema) {
|
|
319
|
+
const subField = field ? `${field}.${key}` : key;
|
|
320
|
+
const validator = schema[key];
|
|
321
|
+
|
|
322
|
+
if (typeof validator === "function") {
|
|
323
|
+
isValid = validator.call(this, value[key], subField) && isValid;
|
|
324
|
+
} else if (typeof validator === "object" && !Array.isArray(validator)) {
|
|
325
|
+
isValid = this.validateObject(value[key], validator, subField) && isValid;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
return isValid;
|
|
330
|
+
}
|
|
331
|
+
return true;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* Valida se um array tem itens válidos
|
|
336
|
+
* @param {Array} value - Array a ser validado
|
|
337
|
+
* @param {Function} itemValidator - Função de validação para cada item
|
|
338
|
+
* @param {string} field - Nome do campo
|
|
339
|
+
* @returns {boolean} - Se o array é válido
|
|
340
|
+
*/
|
|
341
|
+
validateArray(value, itemValidator, field) {
|
|
342
|
+
if (value !== undefined && value !== null) {
|
|
343
|
+
if (!Array.isArray(value)) {
|
|
344
|
+
this.addError(field, `O campo ${field} deve ser um array.`, value);
|
|
345
|
+
return false;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
let isValid = true;
|
|
349
|
+
|
|
350
|
+
for (let i = 0; i < value.length; i++) {
|
|
351
|
+
const subField = `${field}[${i}]`;
|
|
352
|
+
isValid = itemValidator.call(this, value[i], subField) && isValid;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
return isValid;
|
|
356
|
+
}
|
|
357
|
+
return true;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* Valida um conjunto de parâmetros
|
|
362
|
+
* @param {Object} params - Parâmetros a serem validados
|
|
363
|
+
* @param {Object} rules - Regras de validação
|
|
364
|
+
* @returns {boolean} - Se os parâmetros são válidos
|
|
365
|
+
*/
|
|
366
|
+
validate(params, rules) {
|
|
367
|
+
this.clearErrors();
|
|
368
|
+
|
|
369
|
+
let isValid = true;
|
|
370
|
+
|
|
371
|
+
for (const field in rules) {
|
|
372
|
+
const value = params[field];
|
|
373
|
+
const fieldRules = rules[field];
|
|
374
|
+
|
|
375
|
+
for (const rule of fieldRules) {
|
|
376
|
+
const { type, ...options } = rule;
|
|
377
|
+
|
|
378
|
+
switch (type) {
|
|
379
|
+
case "required":
|
|
380
|
+
isValid = this.required(value, field) && isValid;
|
|
381
|
+
break;
|
|
382
|
+
case "string":
|
|
383
|
+
isValid = this.isString(value, field) && isValid;
|
|
384
|
+
break;
|
|
385
|
+
case "number":
|
|
386
|
+
isValid = this.isNumber(value, field) && isValid;
|
|
387
|
+
break;
|
|
388
|
+
case "boolean":
|
|
389
|
+
isValid = this.isBoolean(value, field) && isValid;
|
|
390
|
+
break;
|
|
391
|
+
case "object":
|
|
392
|
+
isValid = this.isObject(value, field) && isValid;
|
|
393
|
+
break;
|
|
394
|
+
case "array":
|
|
395
|
+
isValid = this.isArray(value, field) && isValid;
|
|
396
|
+
break;
|
|
397
|
+
case "range":
|
|
398
|
+
isValid = this.inRange(value, options.min, options.max, field) && isValid;
|
|
399
|
+
break;
|
|
400
|
+
case "length":
|
|
401
|
+
isValid = this.lengthInRange(value, options.min, options.max, field) && isValid;
|
|
402
|
+
break;
|
|
403
|
+
case "oneOf":
|
|
404
|
+
isValid = this.oneOf(value, options.values, field) && isValid;
|
|
405
|
+
break;
|
|
406
|
+
case "hexColor":
|
|
407
|
+
isValid = this.isHexColor(value, field) && isValid;
|
|
408
|
+
break;
|
|
409
|
+
case "url":
|
|
410
|
+
isValid = this.isUrl(value, field) && isValid;
|
|
411
|
+
break;
|
|
412
|
+
case "filePath":
|
|
413
|
+
isValid = this.isFilePath(value, field) && isValid;
|
|
414
|
+
break;
|
|
415
|
+
case "regex":
|
|
416
|
+
isValid = this.matches(value, options.pattern, field, options.message) && isValid;
|
|
417
|
+
break;
|
|
418
|
+
case "custom":
|
|
419
|
+
if (typeof options.validator === "function") {
|
|
420
|
+
const result = options.validator(value, field);
|
|
421
|
+
|
|
422
|
+
if (result !== true) {
|
|
423
|
+
this.addError(field, options.message || result || `O campo ${field} é inválido.`, value);
|
|
424
|
+
isValid = false;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
break;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
// Se o campo é obrigatório e inválido, não continua validando
|
|
431
|
+
if (rule.type === "required" && !isValid) {
|
|
432
|
+
break;
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
return isValid;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
module.exports = Validator;
|
|
442
|
+
|