@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:15
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:33
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:43
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 {};
@@ -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;AAC/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;;;;;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"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sankhyalabs/core",
3
- "version": "2.8.0",
3
+ "version": "2.9.0",
4
4
  "description": "Modulo core JavaScript da Sankhya.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -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.