@sankhyalabs/core 0.0.0-bugfix-dev-KB-6165.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.
- package/.docs/.nojekyll +1 -0
- package/.docs/README.md +63 -0
- package/.docs/classes/ApplicationContext.md +90 -0
- package/.docs/classes/ArrayUtils.md +99 -0
- package/.docs/classes/AuthorizedServiceCaller.md +76 -0
- package/.docs/classes/Change.md +190 -0
- package/.docs/classes/DataUnit.md +2453 -0
- package/.docs/classes/DataUnitAction.md +96 -0
- package/.docs/classes/DataUnitStorage.md +116 -0
- package/.docs/classes/DateUtils.md +327 -0
- package/.docs/classes/ElementIDUtils.md +308 -0
- package/.docs/classes/ErrorException.md +214 -0
- package/.docs/classes/ErrorTracking.md +62 -0
- package/.docs/classes/FloatingManager.md +530 -0
- package/.docs/classes/HTMLBuilder.md +45 -0
- package/.docs/classes/HttpProvider.md +96 -0
- package/.docs/classes/JSUtils.md +115 -0
- package/.docs/classes/MaskFormatter-1.md +347 -0
- package/.docs/classes/NumberUtils.md +335 -0
- package/.docs/classes/ObjectUtils.md +160 -0
- package/.docs/classes/OnboardingUtils.md +126 -0
- package/.docs/classes/PromiseSync.md +91 -0
- package/.docs/classes/ReadyUtil.md +115 -0
- package/.docs/classes/RequestMetadata.md +84 -0
- package/.docs/classes/SelectionInfo.md +168 -0
- package/.docs/classes/SkwHttpProvider.md +109 -0
- package/.docs/classes/StringUtils.md +562 -0
- package/.docs/classes/TimeFormatter.md +98 -0
- package/.docs/classes/UserAgentUtils.md +58 -0
- package/.docs/classes/VersionUtils.md +42 -0
- package/.docs/classes/WaitingChangeException.md +200 -0
- package/.docs/classes/WarningException.md +214 -0
- package/.docs/enums/Action.md +294 -0
- package/.docs/enums/ChangeOperation.md +52 -0
- package/.docs/enums/DataType.md +63 -0
- package/.docs/enums/DependencyType.md +41 -0
- package/.docs/enums/SelectionMode.md +30 -0
- package/.docs/enums/SortMode.md +30 -0
- package/.docs/enums/UserInterface.md +195 -0
- package/.docs/interfaces/ChildDescriptor.md +41 -0
- package/.docs/interfaces/ChildLink.md +30 -0
- package/.docs/interfaces/DUActionInterceptor.md +29 -0
- package/.docs/interfaces/ExecutionContext.md +58 -0
- package/.docs/interfaces/FieldDescriptor.md +140 -0
- package/.docs/interfaces/Filter.md +41 -0
- package/.docs/interfaces/IElementIDInfo.md +30 -0
- package/.docs/interfaces/LoadDataRequest.md +101 -0
- package/.docs/interfaces/LoadDataResponse.md +36 -0
- package/.docs/interfaces/PageRequest.md +41 -0
- package/.docs/interfaces/PaginationInfo.md +75 -0
- package/.docs/interfaces/PromiseSyncCallback.md +39 -0
- package/.docs/interfaces/QuickFilter.md +41 -0
- package/.docs/interfaces/Record.md +62 -0
- package/.docs/interfaces/SavedRecord.md +85 -0
- package/.docs/interfaces/Sort.md +41 -0
- package/.docs/interfaces/SortingProvider.md +29 -0
- package/.docs/interfaces/UnitMetadata.md +52 -0
- package/.docs/interfaces/WaitingChange.md +41 -0
- package/.docs/modules/MaskFormatter.md +37 -0
- package/.docs/modules.md +74 -0
- package/.docs/package.json +15 -0
- package/.eslintignore +2 -0
- package/.eslintrc.cjs +35 -0
- package/.husky/commit-msg +4 -0
- package/.releaserc +58 -0
- package/README.md +62 -0
- package/commitlint.config.cjs +14 -0
- package/dist/async/PromiseSync.d.ts +29 -0
- package/dist/async/PromiseSync.js +31 -0
- package/dist/async/PromiseSync.js.map +1 -0
- package/dist/dataunit/DataUnit.d.ts +924 -0
- package/dist/dataunit/DataUnit.js +1621 -0
- package/dist/dataunit/DataUnit.js.map +1 -0
- package/dist/dataunit/DataUnitStorage.d.ts +24 -0
- package/dist/dataunit/DataUnitStorage.js +39 -0
- package/dist/dataunit/DataUnitStorage.js.map +1 -0
- package/dist/dataunit/formatting/PrettyFormatter.d.ts +2 -0
- package/dist/dataunit/formatting/PrettyFormatter.js +94 -0
- package/dist/dataunit/formatting/PrettyFormatter.js.map +1 -0
- package/dist/dataunit/loading/LoadDataRequest.d.ts +19 -0
- package/dist/dataunit/loading/LoadDataRequest.js +2 -0
- package/dist/dataunit/loading/LoadDataRequest.js.map +1 -0
- package/dist/dataunit/loading/LoadDataResponse.d.ts +9 -0
- package/dist/dataunit/loading/LoadDataResponse.js +2 -0
- package/dist/dataunit/loading/LoadDataResponse.js.map +1 -0
- package/dist/dataunit/loading/PaginationInfo.d.ts +13 -0
- package/dist/dataunit/loading/PaginationInfo.js +2 -0
- package/dist/dataunit/loading/PaginationInfo.js.map +1 -0
- package/dist/dataunit/metadata/DataType.d.ts +54 -0
- package/dist/dataunit/metadata/DataType.js +124 -0
- package/dist/dataunit/metadata/DataType.js.map +1 -0
- package/dist/dataunit/metadata/UnitMetadata.d.ts +88 -0
- package/dist/dataunit/metadata/UnitMetadata.js +36 -0
- package/dist/dataunit/metadata/UnitMetadata.js.map +1 -0
- package/dist/dataunit/state/HistReducer.d.ts +10 -0
- package/dist/dataunit/state/HistReducer.js +28 -0
- package/dist/dataunit/state/HistReducer.js.map +1 -0
- package/dist/dataunit/state/StateManager.d.ts +57 -0
- package/dist/dataunit/state/StateManager.js +97 -0
- package/dist/dataunit/state/StateManager.js.map +1 -0
- package/dist/dataunit/state/action/DataUnitAction.d.ts +40 -0
- package/dist/dataunit/state/action/DataUnitAction.js +42 -0
- package/dist/dataunit/state/action/DataUnitAction.js.map +1 -0
- package/dist/dataunit/state/slice/AddedRecordsSlice.d.ts +12 -0
- package/dist/dataunit/state/slice/AddedRecordsSlice.js +30 -0
- package/dist/dataunit/state/slice/AddedRecordsSlice.js.map +1 -0
- package/dist/dataunit/state/slice/ChangesSlice.d.ts +13 -0
- package/dist/dataunit/state/slice/ChangesSlice.js +105 -0
- package/dist/dataunit/state/slice/ChangesSlice.js.map +1 -0
- package/dist/dataunit/state/slice/InvalidFieldsSlice.d.ts +10 -0
- package/dist/dataunit/state/slice/InvalidFieldsSlice.js +66 -0
- package/dist/dataunit/state/slice/InvalidFieldsSlice.js.map +1 -0
- package/dist/dataunit/state/slice/LoadingControlSlice.d.ts +19 -0
- package/dist/dataunit/state/slice/LoadingControlSlice.js +45 -0
- package/dist/dataunit/state/slice/LoadingControlSlice.js.map +1 -0
- package/dist/dataunit/state/slice/RecordsSlice.d.ts +11 -0
- package/dist/dataunit/state/slice/RecordsSlice.js +62 -0
- package/dist/dataunit/state/slice/RecordsSlice.js.map +1 -0
- package/dist/dataunit/state/slice/RemovedRecordsSlice.d.ts +9 -0
- package/dist/dataunit/state/slice/RemovedRecordsSlice.js +25 -0
- package/dist/dataunit/state/slice/RemovedRecordsSlice.js.map +1 -0
- package/dist/dataunit/state/slice/SelectionSlice.d.ts +19 -0
- package/dist/dataunit/state/slice/SelectionSlice.js +155 -0
- package/dist/dataunit/state/slice/SelectionSlice.js.map +1 -0
- package/dist/dataunit/state/slice/SnapshotSlice.d.ts +19 -0
- package/dist/dataunit/state/slice/SnapshotSlice.js +106 -0
- package/dist/dataunit/state/slice/SnapshotSlice.js.map +1 -0
- package/dist/dataunit/state/slice/UnitMetadataSlice.d.ts +11 -0
- package/dist/dataunit/state/slice/UnitMetadataSlice.js +21 -0
- package/dist/dataunit/state/slice/UnitMetadataSlice.js.map +1 -0
- package/dist/dataunit/state/slice/WaitingChangesSlice.d.ts +12 -0
- package/dist/dataunit/state/slice/WaitingChangesSlice.js +56 -0
- package/dist/dataunit/state/slice/WaitingChangesSlice.js.map +1 -0
- package/dist/exceptions/ErrorException.d.ts +14 -0
- package/dist/exceptions/ErrorException.js +13 -0
- package/dist/exceptions/ErrorException.js.map +1 -0
- package/dist/exceptions/WaitingChangeException.d.ts +12 -0
- package/dist/exceptions/WaitingChangeException.js +12 -0
- package/dist/exceptions/WaitingChangeException.js.map +1 -0
- package/dist/exceptions/WarningException.d.ts +14 -0
- package/dist/exceptions/WarningException.js +13 -0
- package/dist/exceptions/WarningException.js.map +1 -0
- package/dist/html/HTMLBuilder.d.ts +3 -0
- package/dist/html/HTMLBuilder.js +9 -0
- package/dist/html/HTMLBuilder.js.map +1 -0
- package/dist/http/AuthorizedServiceCaller.d.ts +11 -0
- package/dist/http/AuthorizedServiceCaller.js +54 -0
- package/dist/http/AuthorizedServiceCaller.js.map +1 -0
- package/dist/http/HttpProvider.d.ts +25 -0
- package/dist/http/HttpProvider.js +74 -0
- package/dist/http/HttpProvider.js.map +1 -0
- package/dist/http/RequestMetadata.d.ts +30 -0
- package/dist/http/RequestMetadata.js +25 -0
- package/dist/http/RequestMetadata.js.map +1 -0
- package/dist/http/SkwHttpProvider.d.ts +9 -0
- package/dist/http/SkwHttpProvider.js +67 -0
- package/dist/http/SkwHttpProvider.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/traking/ErrorTraking.d.ts +19 -0
- package/dist/traking/ErrorTraking.js +34 -0
- package/dist/traking/ErrorTraking.js.map +1 -0
- package/dist/ui/FloatingManager.d.ts +164 -0
- package/dist/ui/FloatingManager.js +358 -0
- package/dist/ui/FloatingManager.js.map +1 -0
- package/dist/utils/ApplicationContext.d.ts +26 -0
- package/dist/utils/ApplicationContext.js +38 -0
- package/dist/utils/ApplicationContext.js.map +1 -0
- package/dist/utils/ArrayUtils.d.ts +29 -0
- package/dist/utils/ArrayUtils.js +57 -0
- package/dist/utils/ArrayUtils.js.map +1 -0
- package/dist/utils/CriteriaModel.d.ts +107 -0
- package/dist/utils/CriteriaModel.js +172 -0
- package/dist/utils/CriteriaModel.js.map +1 -0
- package/dist/utils/CriteriaParameter.d.ts +69 -0
- package/dist/utils/CriteriaParameter.js +83 -0
- package/dist/utils/CriteriaParameter.js.map +1 -0
- package/dist/utils/DateUtils.d.ts +97 -0
- package/dist/utils/DateUtils.js +171 -0
- package/dist/utils/DateUtils.js.map +1 -0
- package/dist/utils/ElementIDUtils.d.ts +72 -0
- package/dist/utils/ElementIDUtils.js +161 -0
- package/dist/utils/ElementIDUtils.js.map +1 -0
- package/dist/utils/JSUtils.d.ts +36 -0
- package/dist/utils/JSUtils.js +66 -0
- package/dist/utils/JSUtils.js.map +1 -0
- package/dist/utils/MaskFormatter.d.ts +148 -0
- package/dist/utils/MaskFormatter.js +356 -0
- package/dist/utils/MaskFormatter.js.map +1 -0
- package/dist/utils/NumberUtils.d.ts +127 -0
- package/dist/utils/NumberUtils.js +245 -0
- package/dist/utils/NumberUtils.js.map +1 -0
- package/dist/utils/ObjectUtils.d.ts +47 -0
- package/dist/utils/ObjectUtils.js +68 -0
- package/dist/utils/ObjectUtils.js.map +1 -0
- package/dist/utils/OnboardingUtils.d.ts +17 -0
- package/dist/utils/OnboardingUtils.js +41 -0
- package/dist/utils/OnboardingUtils.js.map +1 -0
- package/dist/utils/ReadyUtil.d.ts +24 -0
- package/dist/utils/ReadyUtil.js +41 -0
- package/dist/utils/ReadyUtil.js.map +1 -0
- package/dist/utils/StringUtils.d.ts +167 -0
- package/dist/utils/StringUtils.js +328 -0
- package/dist/utils/StringUtils.js.map +1 -0
- package/dist/utils/TimeFormatter.d.ts +33 -0
- package/dist/utils/TimeFormatter.js +98 -0
- package/dist/utils/TimeFormatter.js.map +1 -0
- package/dist/utils/UserAgentUtils/index.d.ts +15 -0
- package/dist/utils/UserAgentUtils/index.js +48 -0
- package/dist/utils/UserAgentUtils/index.js.map +1 -0
- package/dist/utils/UserAgentUtils/navigatorAgentList.d.ts +17 -0
- package/dist/utils/UserAgentUtils/navigatorAgentList.js +40 -0
- package/dist/utils/UserAgentUtils/navigatorAgentList.js.map +1 -0
- package/dist/utils/VersionUtils.d.ts +7 -0
- package/dist/utils/VersionUtils.js +31 -0
- package/dist/utils/VersionUtils.js.map +1 -0
- package/jest.config.ts +17 -0
- package/mock/http/XMLHttpRequest-mock.js +26 -0
- package/package.json +52 -0
- package/scripts/runlink.bat +1 -0
- package/scripts/runlink.sh +1 -0
- package/src/async/PromiseSync.ts +49 -0
- package/src/dataunit/DataUnit.ts +1835 -0
- package/src/dataunit/DataUnitStorage.ts +43 -0
- package/src/dataunit/formatting/PrettyFormatter.ts +113 -0
- package/src/dataunit/loading/LoadDataRequest.ts +26 -0
- package/src/dataunit/loading/LoadDataResponse.ts +11 -0
- package/src/dataunit/loading/PaginationInfo.ts +18 -0
- package/src/dataunit/metadata/DataType.ts +127 -0
- package/src/dataunit/metadata/UnitMetadata.ts +102 -0
- package/src/dataunit/state/HistReducer.ts +34 -0
- package/src/dataunit/state/StateManager.ts +142 -0
- package/src/dataunit/state/action/DataUnitAction.ts +67 -0
- package/src/dataunit/state/slice/AddedRecordsSlice.ts +48 -0
- package/src/dataunit/state/slice/ChangesSlice.ts +125 -0
- package/src/dataunit/state/slice/InvalidFieldsSlice.ts +85 -0
- package/src/dataunit/state/slice/LoadingControlSlice.ts +60 -0
- package/src/dataunit/state/slice/RecordsSlice.ts +74 -0
- package/src/dataunit/state/slice/RemovedRecordsSlice.ts +30 -0
- package/src/dataunit/state/slice/SelectionSlice.ts +193 -0
- package/src/dataunit/state/slice/SnapshotSlice.ts +139 -0
- package/src/dataunit/state/slice/UnitMetadataSlice.ts +30 -0
- package/src/dataunit/state/slice/WaitingChangesSlice.ts +74 -0
- package/src/exceptions/ErrorException.ts +25 -0
- package/src/exceptions/WaitingChangeException.ts +21 -0
- package/src/exceptions/WarningException.ts +26 -0
- package/src/html/HTMLBuilder.ts +8 -0
- package/src/http/AuthorizedServiceCaller.ts +58 -0
- package/src/http/HttpProvider.ts +94 -0
- package/src/http/RequestMetadata.ts +42 -0
- package/src/http/SkwHttpProvider.ts +78 -0
- package/src/index.ts +93 -0
- package/src/traking/ErrorTraking.ts +37 -0
- package/src/ui/FloatingManager.ts +417 -0
- package/src/utils/ApplicationContext.ts +42 -0
- package/src/utils/ArrayUtils.ts +61 -0
- package/src/utils/CriteriaModel.ts +205 -0
- package/src/utils/CriteriaParameter.ts +108 -0
- package/src/utils/DateUtils.ts +195 -0
- package/src/utils/ElementIDUtils.ts +184 -0
- package/src/utils/JSUtils.ts +69 -0
- package/src/utils/MaskFormatter.ts +407 -0
- package/src/utils/NumberUtils.ts +283 -0
- package/src/utils/ObjectUtils.ts +76 -0
- package/src/utils/OnboardingUtils.ts +46 -0
- package/src/utils/ReadyUtil.ts +45 -0
- package/src/utils/StringUtils.ts +359 -0
- package/src/utils/TimeFormatter.ts +98 -0
- package/src/utils/UserAgentUtils/index.ts +62 -0
- package/src/utils/UserAgentUtils/navigatorAgentList.ts +39 -0
- package/src/utils/VersionUtils.ts +37 -0
- package/test/http/HttpProvider.spec.ts +35 -0
- package/test/http/SkwHttpProvider.ts.spec.ts +34 -0
- package/test/util/CriteriaModel.spec.ts +232 -0
- package/test/util/CriteriaParameter.spec.ts +52 -0
- package/test/util/DataUnitStorage.spec.ts +63 -0
- package/test/util/ElementIDUtils.spec.ts +272 -0
- package/test/util/MaskFormatter.spec.ts +138 -0
- package/test/util/NumberUtils.spec.ts +182 -0
- package/test/util/StringUtils.spec.ts +51 -0
- package/test/util/TimeFormatter.spec.ts +26 -0
- package/tsconfig.json +16 -0
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
import { v4 as uuid } from "uuid";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* `StringUtils`: Utilizado para manipulação de Strings.
|
|
5
|
+
*/
|
|
6
|
+
export class StringUtils {
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Retorna se a string está vazia.
|
|
10
|
+
* Valores null e undefined são considerados como vazio.
|
|
11
|
+
*
|
|
12
|
+
* @param value - String para ser validada.
|
|
13
|
+
* @returns - Verdadeiro caso a string não contenha informação.
|
|
14
|
+
*
|
|
15
|
+
*/
|
|
16
|
+
static isEmpty(value: any): Boolean {
|
|
17
|
+
|
|
18
|
+
if (value == undefined || value === null) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
value = value.toString();
|
|
23
|
+
value = value.trim();
|
|
24
|
+
|
|
25
|
+
if (value.length === 0) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Remove acentos de vogais maiúsculas
|
|
34
|
+
*
|
|
35
|
+
* @param text String para ser transformada.
|
|
36
|
+
* @example entrada: "ÁÊÇÒ" // retorno: "AECO"
|
|
37
|
+
*/
|
|
38
|
+
static replaceAccentuatedCharsUpper(text: string): string {
|
|
39
|
+
return text.replace(/[ÀÁÂÃÄÅÆ]/g, 'A')
|
|
40
|
+
.replace(/[ÈÉÊË]/g, 'E')
|
|
41
|
+
.replace(/[ÌÍÎÏ]/g, 'I')
|
|
42
|
+
.replace(/[ÒÓÔÕÖØ]/g, 'O')
|
|
43
|
+
.replace(/[ÙÚÛÜ]/g, 'U')
|
|
44
|
+
.replace(/[ÝŸ]/g, 'Y')
|
|
45
|
+
.replace(/[Ñ]/g, 'N')
|
|
46
|
+
.replace(/[Ç]/g, 'C');
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Converte todas as entidades HTML de um texto
|
|
51
|
+
*
|
|
52
|
+
* @param text String para ser transformada.
|
|
53
|
+
* @example entrada: "<Teste>" // retorno: "<Teste>"
|
|
54
|
+
*/
|
|
55
|
+
static decodeHtmlEntities(text: string): string {
|
|
56
|
+
if(!text){
|
|
57
|
+
return text;
|
|
58
|
+
}
|
|
59
|
+
const entities = [
|
|
60
|
+
['amp', '&'],
|
|
61
|
+
['apos', '\''],
|
|
62
|
+
['#x27', '\''],
|
|
63
|
+
['#x2F', '/'],
|
|
64
|
+
['#39', '\''],
|
|
65
|
+
['#47', '/'],
|
|
66
|
+
['lt', '<'],
|
|
67
|
+
['gt', '>'],
|
|
68
|
+
['nbsp', ' '],
|
|
69
|
+
['quot', '"']
|
|
70
|
+
];
|
|
71
|
+
|
|
72
|
+
for(let entity of entities) {
|
|
73
|
+
text = text.replace(new RegExp(`&${entity[0]};`), entity[1]);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return text;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Remove acentos de vogais minúsculas.
|
|
81
|
+
*
|
|
82
|
+
* @param text String para ser transformada.
|
|
83
|
+
* @example entrada: "áêçò" // retorno: "aeco"
|
|
84
|
+
*/
|
|
85
|
+
static replaceAccentuatedCharsLower(text: string): string {
|
|
86
|
+
return text.replace(/[àáâãäåæ]/g, 'a')
|
|
87
|
+
.replace(/[èéêë]/g, 'e')
|
|
88
|
+
.replace(/[ìíîï]/g, 'i')
|
|
89
|
+
.replace(/[òóôõöø]/g, 'o')
|
|
90
|
+
.replace(/[ùúûü]/g, 'u')
|
|
91
|
+
.replace(/[ýÿ]/g, 'y')
|
|
92
|
+
.replace(/[ñ]/g, 'n')
|
|
93
|
+
.replace(/[ç]/g, 'c');
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Remove acentuação de vogais e de caracteres especiais que não sejam letras ou numeral.
|
|
98
|
+
*
|
|
99
|
+
* @param text String para ser transformada.
|
|
100
|
+
* @param removeSpecialChars Remove outros caracteres especiais que não sejam letras e números.
|
|
101
|
+
* @example
|
|
102
|
+
* entrada: "á@Êç#Ò", false // retorno: "a@Ec#O"
|
|
103
|
+
* entrada: "á@Êç#Ò", true // retorno: "aEcO"
|
|
104
|
+
*/
|
|
105
|
+
static replaceAccentuatedChars(text: string, removeSpecialChars: boolean = true): string {
|
|
106
|
+
|
|
107
|
+
text = StringUtils.replaceAccentuatedCharsLower(text);
|
|
108
|
+
text = StringUtils.replaceAccentuatedCharsUpper(text);
|
|
109
|
+
|
|
110
|
+
if(removeSpecialChars){
|
|
111
|
+
text = text.replace(/[^a-z0-9]/gi, "");
|
|
112
|
+
}
|
|
113
|
+
return text;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Remove acentos de vogais, substitui Ç por c e retorna a string em caixa alta mantendo espaços e símbolos.
|
|
118
|
+
* @param text - Texto para ser transformado.
|
|
119
|
+
* @returns - Texto sem acentuação e caixa alta, mantendo espaços e símbolos.
|
|
120
|
+
*/
|
|
121
|
+
static replaceAccentuatedCharsKeepSymbols(text: string): string {
|
|
122
|
+
return text.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toUpperCase();
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Calcula um código hash para uma string.
|
|
127
|
+
* @param value String que será gerado o hash code.
|
|
128
|
+
* @returns - Um hash calculado com base no valor informado.
|
|
129
|
+
* @example
|
|
130
|
+
* Informado: '123456' | Retorna: 1450575459
|
|
131
|
+
*/
|
|
132
|
+
static hashCode(value: string): string {
|
|
133
|
+
let hash = 0, i, chr;
|
|
134
|
+
if (value.length === 0) return hash.toString();
|
|
135
|
+
for (i = 0; i < value.length; i++) {
|
|
136
|
+
chr = value.charCodeAt(i);
|
|
137
|
+
hash = ((hash << 5) - hash) + chr;
|
|
138
|
+
hash |= 0; // Convert to 32bit integer
|
|
139
|
+
}
|
|
140
|
+
return hash.toString();
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Converte um texto do tipo string para um booleano.
|
|
145
|
+
*
|
|
146
|
+
* @param value Valor a ser convertido.
|
|
147
|
+
* @param defaultValue Valor padrão.
|
|
148
|
+
* @returns - Texto convertido.
|
|
149
|
+
* @example
|
|
150
|
+
* Informado: 'true' | Retorna: true
|
|
151
|
+
* Informado: 'false' | Retorna: false
|
|
152
|
+
*/
|
|
153
|
+
static getBooleanValue(value:string, defaultValue:boolean = false): boolean {
|
|
154
|
+
if([true, "true", "S"].includes(value)) {
|
|
155
|
+
return true;
|
|
156
|
+
|
|
157
|
+
} else if([false, "false", "N"].includes(value)) {
|
|
158
|
+
return false;
|
|
159
|
+
|
|
160
|
+
} else {
|
|
161
|
+
return defaultValue;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
*
|
|
167
|
+
* Adiciona caracteres à esquerda caso texto seja menor que o valor do parâmetro len passado.
|
|
168
|
+
*
|
|
169
|
+
* @param str - Texto para ser ajustado.
|
|
170
|
+
* @param len - Tamanho desejado do texto.
|
|
171
|
+
* @param pad - Caractere a ser adicionado a esquerda caso o texto menor que o tamanho passado.
|
|
172
|
+
* @returns - Texto passado se este for maior que o len.
|
|
173
|
+
* Ou retorna o texto com os caracteres adicionados na esquerda.
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* padStart('SANKHYA', 8,'.') | Retorna: '...SANKHYA'
|
|
177
|
+
* @example
|
|
178
|
+
* padStart('SANKHYA', 5,'A') | Retorna: 'SANKHYA'
|
|
179
|
+
*
|
|
180
|
+
*
|
|
181
|
+
*/
|
|
182
|
+
static padStart(str: string, len: number, pad: string = " "): string {
|
|
183
|
+
str = str != undefined ? str : "";
|
|
184
|
+
while (str.length < len) {
|
|
185
|
+
str = pad + str;
|
|
186
|
+
}
|
|
187
|
+
return str;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
*
|
|
192
|
+
* Adiciona caracteres à direita caso texto seja menor que o valor do parâmetro len passado.
|
|
193
|
+
*
|
|
194
|
+
* @param str - Texto para ser ajustado.
|
|
195
|
+
* @param len - Tamanho desejado do texto.
|
|
196
|
+
* @param pad - Caractere a ser adicionado a direita caso o texto menor que o tamanho passado.
|
|
197
|
+
* @returns - Texto passado se este for maior que o len.
|
|
198
|
+
* Ou retorna o texto com os caracteres adicionados na direita.
|
|
199
|
+
*
|
|
200
|
+
* @example
|
|
201
|
+
* padStart('SANKHYA', 8,'.') | Retorna: 'SANKHYA...'
|
|
202
|
+
* @example
|
|
203
|
+
* padStart('SANKHYA', 5,'A') | Retorna: 'SANKHYA'
|
|
204
|
+
*
|
|
205
|
+
*
|
|
206
|
+
*/
|
|
207
|
+
static padEnd(str: string, len: number, pad: string = " "): string {
|
|
208
|
+
str = str != undefined ? str : "";
|
|
209
|
+
while (str.length < len) {
|
|
210
|
+
str = str + pad;
|
|
211
|
+
}
|
|
212
|
+
return str;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Determina a ordem de strings.
|
|
218
|
+
*
|
|
219
|
+
* @param a - Primeira string para comparação.
|
|
220
|
+
* @param b - Segunda string para comparação.
|
|
221
|
+
* @returns - Um numeral negativo se o primeiro argumento é menor que o segundo, zero se os dois são iguais e um numeral positivo quando o primeiro é maior que o segundo.
|
|
222
|
+
*/
|
|
223
|
+
static compare(a: string, b: string): number{
|
|
224
|
+
|
|
225
|
+
if(a === undefined){
|
|
226
|
+
return b === undefined ? 0 : 1;
|
|
227
|
+
} else if(b === undefined){
|
|
228
|
+
return -1;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
if(a === null){
|
|
232
|
+
return b === null ? 0 : 1;
|
|
233
|
+
} else if(b === null){
|
|
234
|
+
return -1;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
return a.localeCompare(b);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Converte string em camelCase.
|
|
242
|
+
* Combina palavras compostas ou frases, alterando a inicial de cada uma, a partir da primeira, para maiúscula e unidas sem espaços.
|
|
243
|
+
* @param value String a ser convertida.
|
|
244
|
+
* @returns String convertida em camelCase.
|
|
245
|
+
*
|
|
246
|
+
* @example
|
|
247
|
+
* toCamelCase('Exemplo de uso') | Retorna: 'exemploDeUso'
|
|
248
|
+
*/
|
|
249
|
+
static toCamelCase(value: string): string {
|
|
250
|
+
if(!value) return "";
|
|
251
|
+
if (value.match(/^[a-z]+[A-Z]/) || value.includes(".")) {
|
|
252
|
+
return value;
|
|
253
|
+
}
|
|
254
|
+
return value
|
|
255
|
+
.toLowerCase()
|
|
256
|
+
.replace(/^([A-Z])|[\s-_](\w)/g, (_, p1, p2) => p2?.toUpperCase() || p1.toLowerCase());
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Converte string para PascalCase.
|
|
261
|
+
* @param value String a ser convertida.
|
|
262
|
+
* @returns String convertida em PascalCase.
|
|
263
|
+
*/
|
|
264
|
+
static toPascalCase(value: string): string{
|
|
265
|
+
return value
|
|
266
|
+
.toLowerCase()
|
|
267
|
+
.replace(/(?:^|\s)\w/g, (match: string) => match.toUpperCase())
|
|
268
|
+
.replace(/[\s-_]/g,'');
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Utilitário para converter string em snake_case.
|
|
273
|
+
* @param value String a ser convertida.
|
|
274
|
+
* @returns String convertida em snake_case.
|
|
275
|
+
*/
|
|
276
|
+
static toSnakeCase(value: string): string{
|
|
277
|
+
return value
|
|
278
|
+
.toLowerCase()
|
|
279
|
+
.replace(/[A-Z]/g, (match: string) => `_${match.toLowerCase()}`)
|
|
280
|
+
.replace(/[\s-]/g, '_')
|
|
281
|
+
.replace(/^_/, "");
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* Utilitário para converter string em kebab-case.
|
|
286
|
+
* @param value String a ser convertida.
|
|
287
|
+
* @returns String convertida em KebabCase.
|
|
288
|
+
*/
|
|
289
|
+
static toKebabCase(value: string): string{
|
|
290
|
+
return value.replace(/([a-z])([A-Z])/g, '$1-$2').replace(/[\s_]+/g, '-').toLowerCase();
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Utilitário para remover caracteres em branco da string.
|
|
295
|
+
* @param value String a ser removido os espaços.
|
|
296
|
+
* @returns String sem espaços em branco.
|
|
297
|
+
*/
|
|
298
|
+
static replaceBlankCharacters(value: string): string{
|
|
299
|
+
return (value || "").replace(/ /g, "");
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Utilitário para formatar bytes em string legível, convertendo para
|
|
304
|
+
* múltiplos maiores caso necessário.
|
|
305
|
+
* @param byte quantidade de bytes a serem representados.
|
|
306
|
+
* @returns string formatada de acordo com a unidade.
|
|
307
|
+
*/
|
|
308
|
+
static formatBytes(bytes: number): string {
|
|
309
|
+
const units = ["B", "KB", "MB", "GB"];
|
|
310
|
+
let unit: string, value: string, base: number;
|
|
311
|
+
|
|
312
|
+
if (bytes < 1024) {
|
|
313
|
+
return `${bytes.toString()}B`;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
base = Math.log(bytes) / Math.log(1024);
|
|
317
|
+
const offSet = Math.floor(base);
|
|
318
|
+
if (offSet >= units.length) {
|
|
319
|
+
return `${bytes.toString()}B`;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
value = this.prettyPrecision(Math.pow(1024, base - offSet).toFixed(2).toString());
|
|
323
|
+
unit = units[offSet];
|
|
324
|
+
|
|
325
|
+
return `${value}${unit}`;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Método interno. Remove zeros depois da vírgula diminuindo o tamanho
|
|
330
|
+
* da string.
|
|
331
|
+
* @param strNumber representação textual do número a ser ajustado.
|
|
332
|
+
* @returns simplificação do strNumber, sem os zeros à direita depois do ponto.
|
|
333
|
+
*/
|
|
334
|
+
private static prettyPrecision(strNumber: string): string {
|
|
335
|
+
const parts = strNumber.split(".");
|
|
336
|
+
if (parts.length > 1) {
|
|
337
|
+
const lastPart = parts.length - 1;
|
|
338
|
+
let lastPartStr = parts[lastPart];
|
|
339
|
+
while (lastPartStr.length > 0 && lastPartStr[lastPartStr.length - 1] === "0") {
|
|
340
|
+
lastPartStr = lastPartStr.slice(0, lastPartStr.length - 1);
|
|
341
|
+
}
|
|
342
|
+
if (lastPartStr) {
|
|
343
|
+
parts[lastPart] = lastPartStr;
|
|
344
|
+
} else {
|
|
345
|
+
parts.pop();
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
return parts.join(".");
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Método utilizado para gerar IDs únicos.
|
|
353
|
+
* @returns id único randômico.
|
|
354
|
+
*/
|
|
355
|
+
static generateUUID():string {
|
|
356
|
+
return uuid();
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { MaskFormatter } from "./MaskFormatter.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* `TimeFormatter`: Utilizado para formatar horas.
|
|
5
|
+
*/
|
|
6
|
+
export class TimeFormatter {
|
|
7
|
+
|
|
8
|
+
static _maskFormatter: MaskFormatter = new MaskFormatter("##:##");
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Converte um texto para o formato de hora.
|
|
12
|
+
*
|
|
13
|
+
* @param value - Texto não formatado.
|
|
14
|
+
* @param showSeconds - Se será validado os segundos.
|
|
15
|
+
* @returns - Texto em formato de hora.
|
|
16
|
+
*
|
|
17
|
+
* @Exemples
|
|
18
|
+
* @"1012" | "10:12"
|
|
19
|
+
* @"10:12" | "10:12:00"
|
|
20
|
+
* @"100112" | "10:01:12"
|
|
21
|
+
*/
|
|
22
|
+
static prepareValue(value: string, showSeconds: boolean): string {
|
|
23
|
+
if (value && value.length > 0 && value != "NaN") {
|
|
24
|
+
let validationValue = value.replace(/:/g, "");
|
|
25
|
+
if (showSeconds) {
|
|
26
|
+
this._maskFormatter.mask = "##:##:##"
|
|
27
|
+
if (validationValue.length < 6) {
|
|
28
|
+
while (validationValue.length < 6) {
|
|
29
|
+
validationValue = "0".concat(validationValue);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
} else {
|
|
33
|
+
this._maskFormatter.mask = "##:##";
|
|
34
|
+
if (validationValue.length < 4) {
|
|
35
|
+
while (validationValue.length < 4) {
|
|
36
|
+
validationValue = "0".concat(validationValue);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (this._maskFormatter) {
|
|
41
|
+
try {
|
|
42
|
+
value = this._maskFormatter.format(validationValue);
|
|
43
|
+
return value;
|
|
44
|
+
} catch (e:any) {
|
|
45
|
+
throw new Error(e.message);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return '';
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Retorna se o texto está no formato de hora.
|
|
54
|
+
*
|
|
55
|
+
* @param value - Texto a ser validado.
|
|
56
|
+
* @param showSeconds - Se será validado os segundos.
|
|
57
|
+
* @returns - Verdadeiro para valores no formato de hora e False para formatos diferentes.
|
|
58
|
+
*
|
|
59
|
+
* @Exemples
|
|
60
|
+
* @"1012" | true
|
|
61
|
+
* @"14e4" | false
|
|
62
|
+
* @"2624" | false
|
|
63
|
+
*/
|
|
64
|
+
static validateTime(value: string, showSeconds: boolean) {
|
|
65
|
+
let isValid: boolean = true;
|
|
66
|
+
if (value) {
|
|
67
|
+
const validationValue = value.replace(/:/g, "");
|
|
68
|
+
if (showSeconds) {
|
|
69
|
+
if (!["1", "2", "0"].includes(validationValue[0])) {
|
|
70
|
+
isValid = false;
|
|
71
|
+
}
|
|
72
|
+
if (!["0", "1", "2", "3", "4", "5"].includes(validationValue[2])) {
|
|
73
|
+
isValid = false;
|
|
74
|
+
}
|
|
75
|
+
if (!["0", "1", "2", "3", "4", "5"].includes(validationValue[4])) {
|
|
76
|
+
isValid = false;
|
|
77
|
+
}
|
|
78
|
+
if (validationValue[0] == "2" && !["0", "1", "2", "3"].includes(validationValue[1])) {
|
|
79
|
+
isValid = false;
|
|
80
|
+
}
|
|
81
|
+
} else {
|
|
82
|
+
if (!["1", "2", "0"].includes(validationValue[0])) {
|
|
83
|
+
isValid = false;
|
|
84
|
+
}
|
|
85
|
+
if (!["0", "1", "2", "3", "4", "5"].includes(validationValue[2])) {
|
|
86
|
+
isValid = false;
|
|
87
|
+
}
|
|
88
|
+
if (validationValue[0] == "2" && !["0", "1", "2", "3"].includes(validationValue[1])) {
|
|
89
|
+
isValid = false;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}else{
|
|
93
|
+
isValid = false;
|
|
94
|
+
}
|
|
95
|
+
return isValid;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import AGENT_LIST from "./navigatorAgentList.js"
|
|
2
|
+
import { NumberUtils } from "../NumberUtils.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* `UserAgentUtils`: Utilitario para tratativas relacionadas ao navegador.
|
|
6
|
+
*/
|
|
7
|
+
export class UserAgentUtils {
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Obtém se o navegador do usuário é o firefox.
|
|
11
|
+
* @returns Verdadeiro se o navegador do usuário for o firefox.
|
|
12
|
+
*/
|
|
13
|
+
public static isFirefox() {
|
|
14
|
+
const browser = this.getBrowserInfo();
|
|
15
|
+
return !!browser.firefox;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Obtém nome e versão do navegador que está sendo utilizado.
|
|
20
|
+
* @returns Objeto com o nome e versão do navegador.
|
|
21
|
+
*/
|
|
22
|
+
public static getBrowserInfo(): any {
|
|
23
|
+
const userAgent = window.navigator.userAgent;
|
|
24
|
+
let browser = { name: '', version: '' } as any;
|
|
25
|
+
let result: RegExpExecArray | null;
|
|
26
|
+
|
|
27
|
+
AGENT_LIST.every(({ name, type, regexp, simpleVersionRegExp }) => {
|
|
28
|
+
let hasFound = false;
|
|
29
|
+
|
|
30
|
+
regexp.every((reg) => {
|
|
31
|
+
if (reg.test(userAgent)) {
|
|
32
|
+
hasFound = true;
|
|
33
|
+
result = reg.exec(userAgent);
|
|
34
|
+
let simpleVersion = 0;
|
|
35
|
+
|
|
36
|
+
try {
|
|
37
|
+
if (simpleVersionRegExp && simpleVersionRegExp.test(userAgent)) {
|
|
38
|
+
const simpleExec = simpleVersionRegExp.exec(userAgent);
|
|
39
|
+
simpleVersion = NumberUtils.stringToNumber(simpleExec?.[1] || "0")
|
|
40
|
+
}
|
|
41
|
+
} catch (e) {
|
|
42
|
+
//ignored
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
browser = {
|
|
46
|
+
...browser,
|
|
47
|
+
name,
|
|
48
|
+
version: result?.[1] || "",
|
|
49
|
+
simpleVersion,
|
|
50
|
+
...(Array.isArray(type) ? type.reduce((acc, val) => ({ ...acc, [val]: true}), {}) : { [type]: true })
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return !hasFound;
|
|
54
|
+
}
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
return !hasFound;
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
return browser;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export default [
|
|
2
|
+
{
|
|
3
|
+
name: "Electron",
|
|
4
|
+
type: "electron",
|
|
5
|
+
regexp: [ new RegExp('Electron\\/([0-9\\.]*)') ]
|
|
6
|
+
}, {
|
|
7
|
+
name: "Internet Explorer",
|
|
8
|
+
type: "ie",
|
|
9
|
+
regexp: [
|
|
10
|
+
new RegExp('MSIE.([0-9\\.]*)'),
|
|
11
|
+
new RegExp('Trident.([0-9\\.]*)')
|
|
12
|
+
]
|
|
13
|
+
}, {
|
|
14
|
+
name: "Edge",
|
|
15
|
+
type: "edge",
|
|
16
|
+
regexp: [ new RegExp('Edge.([0-9\\.]*)') ]
|
|
17
|
+
}, {
|
|
18
|
+
name: "Chrome",
|
|
19
|
+
type: "chrome",
|
|
20
|
+
regexp: [ new RegExp('Chrome\\/([0-9\\.]*)') ]
|
|
21
|
+
}, {
|
|
22
|
+
name: "Safari",
|
|
23
|
+
type: "safari",
|
|
24
|
+
regexp: [ new RegExp('safari\\/([\\d\\.]*)') ]
|
|
25
|
+
}, {
|
|
26
|
+
name: "Apple Web Kit",
|
|
27
|
+
type: "safari",
|
|
28
|
+
regexp: [ new RegExp('AppleWebKit\\/([\\d\\.]*)') ],
|
|
29
|
+
simpleVersionRegExp: new RegExp('Version\\/([\\d]*)')
|
|
30
|
+
}, {
|
|
31
|
+
name: "Firefox",
|
|
32
|
+
type: ["firefox", "mozilla"],
|
|
33
|
+
regexp: [ new RegExp('Fire[Ff]ox.([0-9\\.]*)') ]
|
|
34
|
+
}, {
|
|
35
|
+
name: "",
|
|
36
|
+
type: "mozilla",
|
|
37
|
+
regexp: [ new RegExp('gecko') ]
|
|
38
|
+
}
|
|
39
|
+
]
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { StringUtils } from "./StringUtils.js";
|
|
2
|
+
|
|
3
|
+
export default class VersionUtils {
|
|
4
|
+
/**
|
|
5
|
+
* Verifica se a versão do backend (SankhyaOM) é maior ou igual a uma determinada versão.
|
|
6
|
+
* @param executionCtx - Contexto de execução da inserção do dado no DataUnit.
|
|
7
|
+
*/
|
|
8
|
+
public static isRequiredVersion(currentVersion: string, requiredVersion:string): boolean {
|
|
9
|
+
|
|
10
|
+
if(StringUtils.isEmpty(requiredVersion) || StringUtils.isEmpty(currentVersion)){
|
|
11
|
+
return true
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const regexNumericPart = /\d+/g;
|
|
15
|
+
|
|
16
|
+
const currentVersionParts = currentVersion.match(regexNumericPart)?.map(Number) || [];
|
|
17
|
+
const requiredVersionParts = requiredVersion.match(regexNumericPart)?.map(Number) || [];
|
|
18
|
+
|
|
19
|
+
const maxParts = Math.max(currentVersionParts.length, requiredVersionParts.length);
|
|
20
|
+
|
|
21
|
+
for (let i = 0; i < maxParts; i++) {
|
|
22
|
+
const currentPart = currentVersionParts[i] || 0;
|
|
23
|
+
const requiredPart = requiredVersionParts[i] || 0;
|
|
24
|
+
|
|
25
|
+
if (currentPart < requiredPart) return false;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (requiredVersion.includes('b')) {
|
|
29
|
+
const alphaPartCurrent = currentVersion.replace(regexNumericPart, '');
|
|
30
|
+
const alphaPartRequired = requiredVersion.replace(regexNumericPart, '');
|
|
31
|
+
|
|
32
|
+
if (alphaPartCurrent < alphaPartRequired) return false;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/*"Este utilitário deverá ser uma abstração do XMLHttpRequest, deverá ter como métodos publicos (construtor, get, post, put, delete).
|
|
2
|
+
-> Promisse<JSON> get(url);
|
|
3
|
+
-> Promisse<JSON> post(url, JSON);
|
|
4
|
+
-> Promisse<JSON> put(url, JSON);
|
|
5
|
+
-> Promisse<JSON> delete(url);
|
|
6
|
+
Em vários casos pode ser necessário fazer algumas mudanças no comportamento padrão do provider, para isso podemos utilizar o principio do OCP(Open Closed Principle)
|
|
7
|
+
através da criação de uma interface (IHttpProviderDecorator) que pode ser passada como argumento no construtor de HttpProvider, quando esse objeto existir o HttpProvider
|
|
8
|
+
irá chama-lo em alguns momentos do cliclo de vida do objeto alguns métodos que podem existir na interface (beforeSend(HttpRequest), afterSend(HttpRequest), onStatateChange(Enum.STATE), resolveBaseUrl() ).
|
|
9
|
+
A ideia é que esse utilitário seja agnostico ao backend, posteriormente podemos criar factory's para cada aplicação, por exemplo, HttpSnkOmFactory, esse factory já entregaria um
|
|
10
|
+
HttpProvider com o IHttpProviderDecorator registrado especificico para o SankhyaOm."*/
|
|
11
|
+
|
|
12
|
+
// import { HttpProvider } from '../../src/http/HttpProvider';
|
|
13
|
+
// import '../../mock/http/XMLHttpRequest-mock.js'
|
|
14
|
+
|
|
15
|
+
describe('HttpProvider', () => {
|
|
16
|
+
|
|
17
|
+
it('Metodo GET', (async () => {
|
|
18
|
+
|
|
19
|
+
// const compareTo = {
|
|
20
|
+
// "data": { "A": "B" },
|
|
21
|
+
// "dataAsString": "{\"A\":\"B\"}",
|
|
22
|
+
// "status": 200,
|
|
23
|
+
// "statusText": "OK"
|
|
24
|
+
// };
|
|
25
|
+
|
|
26
|
+
// HttpProvider.get('get')
|
|
27
|
+
// expect(HttpProvider.get("get")).resolves.toEqual(compareTo);
|
|
28
|
+
// expect(HttpProvider.post("post", { "AB": "CD" })).resolves.toEqual(expect.objectContaining({ ...compareTo, data: { "AB": "CD" }, dataAsString: "{\"AB\":\"CD\"}" }));
|
|
29
|
+
|
|
30
|
+
// /*expect(HttpProvider.put("put")).resolves.toEqual(expect.objectContaining(compareTo));
|
|
31
|
+
|
|
32
|
+
// expect(HttpProvider.delete("delete")).resolves.toEqual(expect.objectContaining(compareTo));*/
|
|
33
|
+
|
|
34
|
+
}));
|
|
35
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*"Este utilitário deverá ser uma abstração do XMLHttpRequest, deverá ter como métodos publicos (construtor, get, post, put, delete).
|
|
2
|
+
-> Promisse<JSON> get(url);
|
|
3
|
+
-> Promisse<JSON> post(url, JSON);
|
|
4
|
+
-> Promisse<JSON> put(url, JSON);
|
|
5
|
+
-> Promisse<JSON> delete(url);
|
|
6
|
+
Em vários casos pode ser necessário fazer algumas mudanças no comportamento padrão do provider, para isso podemos utilizar o principio do OCP(Open Closed Principle)
|
|
7
|
+
através da criação de uma interface (IHttpProviderDecorator) que pode ser passada como argumento no construtor de HttpProvider, quando esse objeto existir o HttpProvider
|
|
8
|
+
irá chama-lo em alguns momentos do cliclo de vida do objeto alguns métodos que podem existir na interface (beforeSend(HttpRequest), afterSend(HttpRequest), onStatateChange(Enum.STATE), resolveBaseUrl() ).
|
|
9
|
+
A ideia é que esse utilitário seja agnostico ao backend, posteriormente podemos criar factory's para cada aplicação, por exemplo, HttpSnkOmFactory, esse factory já entregaria um
|
|
10
|
+
HttpProvider com o IHttpProviderDecorator registrado especificico para o SankhyaOm."*/
|
|
11
|
+
|
|
12
|
+
// import { HttpProvider } from '../../src/http/HttpProvider';
|
|
13
|
+
|
|
14
|
+
describe('HttpProvider', () => {
|
|
15
|
+
|
|
16
|
+
it('Metodo POST', (async () => {
|
|
17
|
+
|
|
18
|
+
// const compareTo = {
|
|
19
|
+
// "data": { "A": "B" },
|
|
20
|
+
// "dataAsString": "{\"A\":\"B\"}",
|
|
21
|
+
// "status": 200,
|
|
22
|
+
// "statusText": "OK"
|
|
23
|
+
// };
|
|
24
|
+
|
|
25
|
+
// HttpProvider.get('get')
|
|
26
|
+
// expect(HttpProvider.get("get")).resolves.toEqual(compareTo);
|
|
27
|
+
// expect(HttpProvider.post("post", { "AB": "CD" })).resolves.toEqual(expect.objectContaining({ ...compareTo, data: { "AB": "CD" }, dataAsString: "{\"AB\":\"CD\"}" }));
|
|
28
|
+
|
|
29
|
+
// /*expect(HttpProvider.put("put")).resolves.toEqual(expect.objectContaining(compareTo));
|
|
30
|
+
|
|
31
|
+
// expect(HttpProvider.delete("delete")).resolves.toEqual(expect.objectContaining(compareTo));*/
|
|
32
|
+
|
|
33
|
+
}));
|
|
34
|
+
});
|