investira.sdk 2.3.1 → 2.3.3
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/.vscode/launch.json +12 -2
- package/CHANGELOG.md +8 -0
- package/lib/tests/test_strings.js +3 -0
- package/lib/utils/dates.js +17 -2
- package/lib/utils/strings.js +62 -18
- package/lib/utils/validators.js +2 -1
- package/nodemon.json +1 -1
- package/package.json +5 -5
package/.vscode/launch.json
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -458,3 +458,11 @@ O contrutor para a criação das mensagem foi alterado.
|
|
|
458
458
|
# 2.3.1
|
|
459
459
|
|
|
460
460
|
- [investira.data] Atualização do investira.data
|
|
461
|
+
|
|
462
|
+
# 2.3.2
|
|
463
|
+
|
|
464
|
+
- [dates] Nova função setIntervalAfterRun
|
|
465
|
+
|
|
466
|
+
# 2.3.3
|
|
467
|
+
|
|
468
|
+
- [strings] Orimização da função toTitleCase
|
|
@@ -31,6 +31,9 @@ test('\ntoTitleCase', t => {
|
|
|
31
31
|
t.deepEqual(strings.toTitleCase('maRtin lutHer king III'), 'Martin Luther King III');
|
|
32
32
|
t.deepEqual(strings.toTitleCase('maRtin lutHer king iv'), 'Martin Luther King IV');
|
|
33
33
|
t.deepEqual(strings.toTitleCase('joão adalberto da silva álves'), 'João Adalberto da Silva Álves');
|
|
34
|
+
t.deepEqual(strings.toTitleCase("Alberto D'avila"), "Alberto D'Avila");
|
|
35
|
+
t.deepEqual(strings.toTitleCase('Alberto D`avila'), 'Alberto D`Avila');
|
|
36
|
+
t.deepEqual(strings.toTitleCase('F.a.e.'), 'F.A.E.');
|
|
34
37
|
t.end();
|
|
35
38
|
});
|
|
36
39
|
|
package/lib/utils/dates.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const { dataHolidays } = require('investira.data');
|
|
2
2
|
const moment = require('moment/min/moment-with-locales');
|
|
3
3
|
const numbers = require('../utils/numbers');
|
|
4
|
-
const { isEmpty, isNull, isNumber, isDate } = require('./validators');
|
|
4
|
+
const { isEmpty, isNull, isNumber, isDate, isFunction } = require('./validators');
|
|
5
5
|
const { seekDate } = require('./arrays');
|
|
6
6
|
|
|
7
7
|
const HOLIDAY_FORMAT = 'YYYY-MM-DD';
|
|
@@ -543,7 +543,7 @@ const dates = {
|
|
|
543
543
|
* @returns {Date}
|
|
544
544
|
*/
|
|
545
545
|
addWorkingDays: (pDate, pDays) => {
|
|
546
|
-
//Força para procurar o próximo dia útil
|
|
546
|
+
//Força para procurar o próximo dia útil se dia atual for feriado
|
|
547
547
|
if ((isNull(pDays) || pDays === 0) && !dates.isWorkingDay(pDate)) {
|
|
548
548
|
pDays = 1;
|
|
549
549
|
}
|
|
@@ -689,6 +689,21 @@ const dates = {
|
|
|
689
689
|
}
|
|
690
690
|
return /^([01]\d|2[0-3]):?([0-5]\d)$/.test(pTime);
|
|
691
691
|
},
|
|
692
|
+
|
|
693
|
+
/**
|
|
694
|
+
* Configura setInterval após executa imediatamente a função informada
|
|
695
|
+
*
|
|
696
|
+
* @param {function} pFunction
|
|
697
|
+
* @param {number} pInterval
|
|
698
|
+
* @return {*}
|
|
699
|
+
*/
|
|
700
|
+
setIntervalAfterRun: (pFunction, pInterval) => {
|
|
701
|
+
if (!isFunction(pFunction)) {
|
|
702
|
+
return null;
|
|
703
|
+
}
|
|
704
|
+
pFunction();
|
|
705
|
+
return setInterval(pFunction, pInterval);
|
|
706
|
+
},
|
|
692
707
|
/**
|
|
693
708
|
* Agenda execução da função para a data e hora informada
|
|
694
709
|
*
|
package/lib/utils/strings.js
CHANGED
|
@@ -3,9 +3,31 @@ const { isString, isEmpty } = require('./validators');
|
|
|
3
3
|
const { toArray } = require('./arrays');
|
|
4
4
|
|
|
5
5
|
const { InvalidData } = require('../messages/DataErrors');
|
|
6
|
-
const toTitleCaseIgnore = ['
|
|
7
|
-
const toTitleCaseFullUpperCase = [
|
|
6
|
+
const toTitleCaseIgnore = ['de', 'da', 'do', 'd', 'e', 'of', 'for', 'and'];
|
|
7
|
+
const toTitleCaseFullUpperCase = [
|
|
8
|
+
'i',
|
|
9
|
+
'ii',
|
|
10
|
+
'iii',
|
|
11
|
+
'iv',
|
|
12
|
+
'v',
|
|
13
|
+
'vi',
|
|
14
|
+
'vii',
|
|
15
|
+
'viii',
|
|
16
|
+
'ix',
|
|
17
|
+
'x',
|
|
18
|
+
'xi',
|
|
19
|
+
'xii',
|
|
20
|
+
'xiii',
|
|
21
|
+
'xiv',
|
|
22
|
+
'xv',
|
|
23
|
+
'xvi',
|
|
24
|
+
'xvii',
|
|
25
|
+
'xviii',
|
|
26
|
+
'xix',
|
|
27
|
+
'xx'
|
|
28
|
+
];
|
|
8
29
|
|
|
30
|
+
const toTitleCaseSeparators = ["'", '`', '.', '-', '(', ')', ':', ',', ';'];
|
|
9
31
|
const strings = {
|
|
10
32
|
/**
|
|
11
33
|
* Substitui a ocorrência de uma string por outra
|
|
@@ -76,7 +98,7 @@ const strings = {
|
|
|
76
98
|
},
|
|
77
99
|
|
|
78
100
|
/**
|
|
79
|
-
* Retorna string formatada como nome próprio
|
|
101
|
+
* Retorna uma string formatada como nome próprio, ou seja, com a primeira letra de cada palavra em maiúscula e as outras letras em minúscula, exceto palavras especiais que devem ser mantidas maiúsculas.
|
|
80
102
|
*
|
|
81
103
|
* @param {string} pString
|
|
82
104
|
* @returns
|
|
@@ -88,22 +110,11 @@ const strings = {
|
|
|
88
110
|
if (!isString(pString)) {
|
|
89
111
|
throw new InvalidData('[spellChecker.checkTitleCase] is not a string [' + JSON.stringify(pString) + ']');
|
|
90
112
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
// });
|
|
95
|
-
let xLista = pString.split(' ');
|
|
96
|
-
let xResult = '';
|
|
97
|
-
for (let xPalavra of xLista) {
|
|
98
|
-
if (toTitleCaseIgnore.includes(xPalavra)) {
|
|
99
|
-
xResult += xPalavra + ' ';
|
|
100
|
-
} else if (toTitleCaseFullUpperCase.includes(xPalavra)) {
|
|
101
|
-
xResult += xPalavra.toUpperCase() + ' ';
|
|
102
|
-
} else {
|
|
103
|
-
xResult += xPalavra.charAt(0).toUpperCase() + xPalavra.slice(1).toLowerCase() + ' ';
|
|
104
|
-
}
|
|
113
|
+
let xString = pvtoTitleCase(pString);
|
|
114
|
+
for (const xSepatator of toTitleCaseSeparators) {
|
|
115
|
+
xString = pvtoTitleCase(xString, xSepatator);
|
|
105
116
|
}
|
|
106
|
-
return
|
|
117
|
+
return xString;
|
|
107
118
|
},
|
|
108
119
|
/**
|
|
109
120
|
* Retorna um objeto com os paramentos da querystring
|
|
@@ -188,3 +199,36 @@ const strings = {
|
|
|
188
199
|
};
|
|
189
200
|
|
|
190
201
|
module.exports = strings;
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Retorna uma string formatada como nome próprio, ou seja, com a primeira letra de cada palavra em maiúscula e as outras letras em minúscula, exceto palavras especiais que devem ser mantidas maiúsculas.
|
|
205
|
+
*
|
|
206
|
+
* @param {string} pString - A string a ser formatada.
|
|
207
|
+
* @param {string} [pSplit=' '] - O separador utilizado para dividir a string em palavras. Por padrão, é um espaço em branco.
|
|
208
|
+
* @returns {string} - A string formatada como nome próprio.
|
|
209
|
+
*/
|
|
210
|
+
const pvtoTitleCase = (pString, pSplit) => {
|
|
211
|
+
// Define o separador padrão e converte a string para minúsculas, se o separador não foi especificado
|
|
212
|
+
if (!pSplit) {
|
|
213
|
+
pSplit = ' ';
|
|
214
|
+
pString = pString.toLocaleLowerCase();
|
|
215
|
+
}
|
|
216
|
+
// Divide a string em palavras e separa a primeira palavra da lista
|
|
217
|
+
const xPalavras = pString.split(pSplit);
|
|
218
|
+
const xPrimeira = xPalavras.shift();
|
|
219
|
+
// Formata as palavras restantes e as une em uma única string
|
|
220
|
+
const xPalavrasFormatadas = xPalavras.map(pWord => {
|
|
221
|
+
if (pSplit === ' ' && toTitleCaseIgnore.includes(pWord)) {
|
|
222
|
+
// Mantém a palavra em minúsculas, se for uma palavra ignorada no início de uma frase
|
|
223
|
+
return pWord;
|
|
224
|
+
} else if (toTitleCaseFullUpperCase.includes(pWord)) {
|
|
225
|
+
// Mantém a palavra em maiúsculas, se for uma palavra especial
|
|
226
|
+
return pWord.toUpperCase();
|
|
227
|
+
} else {
|
|
228
|
+
// Formata a palavra normalmente
|
|
229
|
+
return pWord.charAt(0).toUpperCase() + pWord.slice(1);
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
// Retorna a primeira palavra formatada e as palavras restantes unidas em uma única string, separadas pelo separador especificado
|
|
233
|
+
return [xPrimeira.charAt(0).toUpperCase() + xPrimeira.slice(1), ...xPalavrasFormatadas].join(pSplit);
|
|
234
|
+
};
|
package/lib/utils/validators.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
const EMAIL_REGEX =
|
|
1
|
+
const EMAIL_REGEX =
|
|
2
|
+
/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
|
2
3
|
|
|
3
4
|
const validators = {
|
|
4
5
|
/**
|
package/nodemon.json
CHANGED
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "investira.sdk",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.3",
|
|
4
4
|
"author": "Investira",
|
|
5
5
|
"description": "Investira SDK",
|
|
6
6
|
"main": "index.js",
|
|
7
7
|
"type": "commonjs",
|
|
8
8
|
"registry": true,
|
|
9
|
-
"raw": "investira.sdk@2.3.
|
|
9
|
+
"raw": "investira.sdk@2.3.3",
|
|
10
10
|
"escapedName": "investira.sdk",
|
|
11
|
-
"rawSpec": "2.3.
|
|
11
|
+
"rawSpec": "2.3.3",
|
|
12
12
|
"saveSpec": null,
|
|
13
|
-
"fetchSpec": "2.3.
|
|
13
|
+
"fetchSpec": "2.3.3",
|
|
14
14
|
"homepage": "https://investira.com.br/",
|
|
15
15
|
"engines": {
|
|
16
16
|
"node": ">=11.11.0 <=18.12",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"axios": "0.25.0",
|
|
39
39
|
"deep-diff": "1.0.2",
|
|
40
40
|
"flatted": "3.2.2",
|
|
41
|
-
"investira.data": "^1.
|
|
41
|
+
"investira.data": "^1.3.0",
|
|
42
42
|
"moment": "^2.29.4"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|