@sankhyalabs/core 2.8.0 → 2.9.0
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.
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
### Methods
|
|
14
14
|
|
|
15
15
|
- [applyStringFilter](ArrayUtils.md#applystringfilter)
|
|
16
|
+
- [applyStringFilterRecursively](ArrayUtils.md#applystringfilterrecursively)
|
|
16
17
|
- [normalizeSearchString](ArrayUtils.md#normalizesearchstring)
|
|
17
18
|
- [sortAlphabetically](ArrayUtils.md#sortalphabetically)
|
|
18
19
|
|
|
@@ -47,7 +48,37 @@ Filtra um array a partir de um critério textual.
|
|
|
47
48
|
|
|
48
49
|
#### Defined in
|
|
49
50
|
|
|
50
|
-
src/utils/ArrayUtils.ts:
|
|
51
|
+
src/utils/ArrayUtils.ts:24
|
|
52
|
+
|
|
53
|
+
___
|
|
54
|
+
|
|
55
|
+
### applyStringFilterRecursively
|
|
56
|
+
|
|
57
|
+
▸ `Static` **applyStringFilterRecursively**<`ListType`\>(`«destructured»`): `ListType`[]
|
|
58
|
+
|
|
59
|
+
Filtra um array a partir de um critério textual.
|
|
60
|
+
|
|
61
|
+
#### Type parameters
|
|
62
|
+
|
|
63
|
+
| Name |
|
|
64
|
+
| :------ |
|
|
65
|
+
| `ListType` |
|
|
66
|
+
|
|
67
|
+
#### Parameters
|
|
68
|
+
|
|
69
|
+
| Name | Type |
|
|
70
|
+
| :------ | :------ |
|
|
71
|
+
| `«destructured»` | `FilterRecursivelyParams`<`ListType`\> |
|
|
72
|
+
|
|
73
|
+
#### Returns
|
|
74
|
+
|
|
75
|
+
`ListType`[]
|
|
76
|
+
|
|
77
|
+
- Uma lista recursivamente filtrada e ordenado conforme necessidade..
|
|
78
|
+
|
|
79
|
+
#### Defined in
|
|
80
|
+
|
|
81
|
+
src/utils/ArrayUtils.ts:56
|
|
51
82
|
|
|
52
83
|
___
|
|
53
84
|
|
|
@@ -71,7 +102,7 @@ Converte texto para caixa alta e substitui caracteres acentuados.
|
|
|
71
102
|
|
|
72
103
|
#### Defined in
|
|
73
104
|
|
|
74
|
-
src/utils/ArrayUtils.ts:
|
|
105
|
+
src/utils/ArrayUtils.ts:42
|
|
75
106
|
|
|
76
107
|
___
|
|
77
108
|
|
|
@@ -96,4 +127,4 @@ Ordena valores de um array alfabeticamente.
|
|
|
96
127
|
|
|
97
128
|
#### Defined in
|
|
98
129
|
|
|
99
|
-
src/utils/ArrayUtils.ts:
|
|
130
|
+
src/utils/ArrayUtils.ts:80
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
type FilterRecursivelyParams<T> = {
|
|
2
|
+
query: string;
|
|
3
|
+
list: T[];
|
|
4
|
+
fieldName: string;
|
|
5
|
+
key: string;
|
|
6
|
+
sortAlphabetically?: boolean;
|
|
7
|
+
};
|
|
1
8
|
/**
|
|
2
9
|
* `ArrayUtils`: Utilitário com a responsabilidade de manipular Arrays.
|
|
3
10
|
*/
|
|
@@ -19,6 +26,17 @@ export default class ArrayUtils {
|
|
|
19
26
|
* @returns - Texto com as letras acentuadas sem os acentos e em caixa alta.
|
|
20
27
|
*/
|
|
21
28
|
private static normalizeSearchString;
|
|
29
|
+
/**
|
|
30
|
+
* Filtra um array a partir de um critério textual.
|
|
31
|
+
*
|
|
32
|
+
* @param {string} options.query - Texto a ser usado no filtro.
|
|
33
|
+
* @param {Object[]} options.list - Lista a ser filtrada.
|
|
34
|
+
* @param {string} options.fieldName - Nome do campo onde irá ser feito a busca a partir do parâmetro `query`.
|
|
35
|
+
* @param {string} options.key - Nome do atributo onde conterá outros atributos filhos.
|
|
36
|
+
* @param {boolean} [options.sortAlphabetically=true] - Determina se o resultado deve ser ordenado ou mantido na ordem original. Por padrão ordena.
|
|
37
|
+
* @returns - Uma lista recursivamente filtrada e ordenado conforme necessidade..
|
|
38
|
+
*/
|
|
39
|
+
static applyStringFilterRecursively<ListType>({ query, list, fieldName, key, sortAlphabetically }: FilterRecursivelyParams<ListType>): ListType[];
|
|
22
40
|
/**
|
|
23
41
|
* Ordena valores de um array alfabeticamente.
|
|
24
42
|
*
|
|
@@ -27,3 +45,4 @@ export default class ArrayUtils {
|
|
|
27
45
|
*/
|
|
28
46
|
static sortAlphabetically(originalArray: Array<any>, fieldName?: string): Array<any>;
|
|
29
47
|
}
|
|
48
|
+
export {};
|
package/dist/utils/ArrayUtils.js
CHANGED
|
@@ -32,6 +32,32 @@ export default class ArrayUtils {
|
|
|
32
32
|
static normalizeSearchString(original) {
|
|
33
33
|
return StringUtils.replaceAccentuatedCharsKeepSymbols(original.toUpperCase());
|
|
34
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Filtra um array a partir de um critério textual.
|
|
37
|
+
*
|
|
38
|
+
* @param {string} options.query - Texto a ser usado no filtro.
|
|
39
|
+
* @param {Object[]} options.list - Lista a ser filtrada.
|
|
40
|
+
* @param {string} options.fieldName - Nome do campo onde irá ser feito a busca a partir do parâmetro `query`.
|
|
41
|
+
* @param {string} options.key - Nome do atributo onde conterá outros atributos filhos.
|
|
42
|
+
* @param {boolean} [options.sortAlphabetically=true] - Determina se o resultado deve ser ordenado ou mantido na ordem original. Por padrão ordena.
|
|
43
|
+
* @returns - Uma lista recursivamente filtrada e ordenado conforme necessidade..
|
|
44
|
+
*/
|
|
45
|
+
static applyStringFilterRecursively({ query, list, fieldName, key, sortAlphabetically = true }) {
|
|
46
|
+
const normalizedArgument = ArrayUtils.normalizeSearchString(query);
|
|
47
|
+
const alphabeticalSortingList = sortAlphabetically ? ArrayUtils.sortAlphabetically(list, fieldName) : list;
|
|
48
|
+
const recursiveReducer = (initialList, item) => {
|
|
49
|
+
const itemValue = ArrayUtils.normalizeSearchString(item[fieldName]);
|
|
50
|
+
if (itemValue.includes(normalizedArgument)) {
|
|
51
|
+
initialList.push(item);
|
|
52
|
+
return initialList;
|
|
53
|
+
}
|
|
54
|
+
item[key] = Array.isArray(item[key]) ? item[key].reduce(recursiveReducer, []) : [];
|
|
55
|
+
if (item[key].length)
|
|
56
|
+
initialList.push(Object.assign(Object.assign({}, item), { [key]: item[key] }));
|
|
57
|
+
return initialList;
|
|
58
|
+
};
|
|
59
|
+
return alphabeticalSortingList.reduce(recursiveReducer, []);
|
|
60
|
+
}
|
|
35
61
|
/**
|
|
36
62
|
* Ordena valores de um array alfabeticamente.
|
|
37
63
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArrayUtils.js","sourceRoot":"","sources":["../../src/utils/ArrayUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ArrayUtils.js","sourceRoot":"","sources":["../../src/utils/ArrayUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAU/C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAU;IAC3B;;;;;;;;OAQG;IACH,MAAM,CAAC,iBAAiB,CAAC,QAAgB,EAAE,aAAyB,EAAE,sBAA+B,IAAI,EAAE,YAAoB,OAAO;QACnI,IAAG,CAAC,QAAQ,EAAC;YACR,OAAO,aAAa,CAAC;SACxB;QACD,MAAM,kBAAkB,GAAG,UAAU,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACtE,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YAC9C,MAAM,SAAS,GAAW,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAC5E,OAAO,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QACH,OAAO,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;IACzG,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,qBAAqB,CAAC,QAAe;QAChD,OAAO,WAAW,CAAC,kCAAkC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAClF,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,4BAA4B,CAAW,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,kBAAkB,GAAG,IAAI,EAAqC;QACvI,MAAM,kBAAkB,GAAG,UAAU,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,uBAAuB,GAAG,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE3G,MAAM,gBAAgB,GAAG,CAAC,WAAuB,EAAE,IAAS,EAAE,EAAE;YAC5D,MAAM,SAAS,GAAG,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACpE,IAAI,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;gBACxC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvB,OAAO,WAAW,CAAC;aACtB;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM;gBAAE,WAAW,CAAC,IAAI,iCAAM,IAAI,KAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAG,CAAC;YACtE,OAAO,WAAW,CAAC;QACvB,CAAC,CAAA;QAED,OAAO,uBAAuB,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IAChE,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CAAC,aAAyB,EAAE,YAAoB,OAAO;QAC5E,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7G,CAAC;CACJ"}
|
package/package.json
CHANGED
package/src/utils/ArrayUtils.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import { StringUtils } from "./StringUtils.js";
|
|
2
|
+
|
|
3
|
+
type FilterRecursivelyParams<T> = {
|
|
4
|
+
query: string;
|
|
5
|
+
list: T[];
|
|
6
|
+
fieldName: string;
|
|
7
|
+
key: string;
|
|
8
|
+
sortAlphabetically?: boolean;
|
|
9
|
+
}
|
|
10
|
+
|
|
2
11
|
/**
|
|
3
12
|
* `ArrayUtils`: Utilitário com a responsabilidade de manipular Arrays.
|
|
4
13
|
*/
|
|
@@ -33,6 +42,34 @@ export default class ArrayUtils {
|
|
|
33
42
|
private static normalizeSearchString(original:string ): string{
|
|
34
43
|
return StringUtils.replaceAccentuatedCharsKeepSymbols(original.toUpperCase());
|
|
35
44
|
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Filtra um array a partir de um critério textual.
|
|
48
|
+
*
|
|
49
|
+
* @param {string} options.query - Texto a ser usado no filtro.
|
|
50
|
+
* @param {Object[]} options.list - Lista a ser filtrada.
|
|
51
|
+
* @param {string} options.fieldName - Nome do campo onde irá ser feito a busca a partir do parâmetro `query`.
|
|
52
|
+
* @param {string} options.key - Nome do atributo onde conterá outros atributos filhos.
|
|
53
|
+
* @param {boolean} [options.sortAlphabetically=true] - Determina se o resultado deve ser ordenado ou mantido na ordem original. Por padrão ordena.
|
|
54
|
+
* @returns - Uma lista recursivamente filtrada e ordenado conforme necessidade..
|
|
55
|
+
*/
|
|
56
|
+
static applyStringFilterRecursively<ListType>({ query, list, fieldName, key, sortAlphabetically = true }: FilterRecursivelyParams<ListType>): ListType[] {
|
|
57
|
+
const normalizedArgument = ArrayUtils.normalizeSearchString(query);
|
|
58
|
+
const alphabeticalSortingList = sortAlphabetically ? ArrayUtils.sortAlphabetically(list, fieldName) : list;
|
|
59
|
+
|
|
60
|
+
const recursiveReducer = (initialList: ListType[], item: any) => {
|
|
61
|
+
const itemValue = ArrayUtils.normalizeSearchString(item[fieldName]);
|
|
62
|
+
if (itemValue.includes(normalizedArgument)) {
|
|
63
|
+
initialList.push(item);
|
|
64
|
+
return initialList;
|
|
65
|
+
}
|
|
66
|
+
item[key] = Array.isArray(item[key]) ? item[key].reduce(recursiveReducer, []) : [];
|
|
67
|
+
if (item[key].length) initialList.push({ ...item, [key]: item[key] });
|
|
68
|
+
return initialList;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return alphabeticalSortingList.reduce(recursiveReducer, []);
|
|
72
|
+
}
|
|
36
73
|
|
|
37
74
|
/**
|
|
38
75
|
* Ordena valores de um array alfabeticamente.
|