monkey-front-core 0.0.27 → 0.0.28
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/bundles/monkey-front-core.umd.js +213 -6
- package/bundles/monkey-front-core.umd.js.map +1 -1
- package/esm2015/lib/core/utils/index.js +2 -1
- package/esm2015/lib/core/utils/validators.js +194 -0
- package/fesm2015/monkey-front-core.js +199 -7
- package/fesm2015/monkey-front-core.js.map +1 -1
- package/lib/core/utils/index.d.ts +1 -0
- package/lib/core/utils/validators.d.ts +27 -0
- package/monkey-front-core-0.0.28.tgz +0 -0
- package/package.json +1 -1
- package/monkey-front-core-0.0.27.tgz +0 -0
|
@@ -4,4 +4,5 @@ import * as ValidateUtils from './validate-utils';
|
|
|
4
4
|
import * as DecoratorsUtils from './decorators-utils';
|
|
5
5
|
import * as Statics from './statics';
|
|
6
6
|
export { MonkeyEcxUtils, ValidateUtils, DecoratorsUtils, Statics };
|
|
7
|
-
|
|
7
|
+
export * from './validators';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktZnJvbnQtY29yZS9zcmMvbGliL2NvcmUvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUNBQXlDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekMsT0FBTyxLQUFLLGFBQWEsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEtBQUssZUFBZSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxPQUFPLE1BQU0sV0FBVyxDQUFDO0FBRXJDLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUNuRSxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG9iamVjdC1jdXJseS1uZXdsaW5lICovXG5pbXBvcnQgeyBNb25rZXlFY3hVdGlscyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0ICogYXMgVmFsaWRhdGVVdGlscyBmcm9tICcuL3ZhbGlkYXRlLXV0aWxzJztcbmltcG9ydCAqIGFzIERlY29yYXRvcnNVdGlscyBmcm9tICcuL2RlY29yYXRvcnMtdXRpbHMnO1xuaW1wb3J0ICogYXMgU3RhdGljcyBmcm9tICcuL3N0YXRpY3MnO1xuXG5leHBvcnQgeyBNb25rZXlFY3hVdGlscywgVmFsaWRhdGVVdGlscywgRGVjb3JhdG9yc1V0aWxzLCBTdGF0aWNzIH07XG5leHBvcnQgKiBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuIl19
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import * as moment_ from 'moment';
|
|
2
|
+
import { MonkeyEcxUtils } from './utils';
|
|
3
|
+
const moment = moment_;
|
|
4
|
+
// eslint-disable-next-line max-len
|
|
5
|
+
const EMAIL_REGEXP = /^(?=.{1,254}$)(?=.{1,64}@)([A-Za-z0-9_\-.])+@([A-Za-z0-9])+\.([A-Za-z]{1,61})$/;
|
|
6
|
+
function isEmptyInputValue(value) {
|
|
7
|
+
return value == null || value.length === 0;
|
|
8
|
+
}
|
|
9
|
+
export function emailValidator(control) {
|
|
10
|
+
if (!control.parent || !control || isEmptyInputValue(control.value)) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
const test = EMAIL_REGEXP.test(control.value);
|
|
14
|
+
if (test)
|
|
15
|
+
return null;
|
|
16
|
+
return {
|
|
17
|
+
email: true
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function dateRangeValidator(control) {
|
|
21
|
+
if (!control.parent || !control || isEmptyInputValue(control.value)) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
const dates = control.parent.get('dates').value;
|
|
25
|
+
if (dates &&
|
|
26
|
+
(!MonkeyEcxUtils.persistNullEmptyUndefined(dates === null || dates === void 0 ? void 0 : dates.startDate) ||
|
|
27
|
+
!MonkeyEcxUtils.persistNullEmptyUndefined(dates === null || dates === void 0 ? void 0 : dates.endDate))) {
|
|
28
|
+
return {
|
|
29
|
+
dateRange: true
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
export function registerValidator(control, type) {
|
|
35
|
+
if (!control.parent || !control || isEmptyInputValue(control.value)) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
if (control && control.value !== `#MONKEY${type}`.toUpperCase()) {
|
|
39
|
+
return {
|
|
40
|
+
invalidUnlockRegister: true
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
export function dateStartEndValidator(control) {
|
|
46
|
+
if (!control.parent || !control) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
const { parent } = control;
|
|
50
|
+
const valueStart = parent.get('dateStart').value;
|
|
51
|
+
const valueEnd = parent.get('dateEnd').value;
|
|
52
|
+
let dateStart;
|
|
53
|
+
let dateEnd;
|
|
54
|
+
if (valueStart) {
|
|
55
|
+
dateStart = new Date(valueStart);
|
|
56
|
+
}
|
|
57
|
+
if (valueEnd) {
|
|
58
|
+
dateEnd = new Date(valueEnd);
|
|
59
|
+
}
|
|
60
|
+
if (!dateEnd || !dateStart)
|
|
61
|
+
return null;
|
|
62
|
+
if (dateStart > dateEnd) {
|
|
63
|
+
return {
|
|
64
|
+
dateStartMustBeLessThanAnd: true
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
export function urlValidator(control) {
|
|
70
|
+
if (!control.parent || !control || isEmptyInputValue(control.value))
|
|
71
|
+
return null;
|
|
72
|
+
if (!MonkeyEcxUtils.isValidUrl(control.value)) {
|
|
73
|
+
return {
|
|
74
|
+
url: true
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
export function passwordConfirmValidator(control) {
|
|
80
|
+
if (!control.parent || !control || isEmptyInputValue(control.value))
|
|
81
|
+
return null;
|
|
82
|
+
const { parent } = control;
|
|
83
|
+
const password = parent.get('password').value;
|
|
84
|
+
const passwordConfirm = parent.get('passwordConfirm').value;
|
|
85
|
+
if (!password || !passwordConfirm)
|
|
86
|
+
return null;
|
|
87
|
+
if (password === passwordConfirm)
|
|
88
|
+
return null;
|
|
89
|
+
return {
|
|
90
|
+
passwordsNotMatching: true
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export function trueValidator(control) {
|
|
94
|
+
if (!control.parent || !control)
|
|
95
|
+
return null;
|
|
96
|
+
if (control && control.value !== false)
|
|
97
|
+
return null;
|
|
98
|
+
return {
|
|
99
|
+
invalidTrue: true
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
export function comboValidator(control) {
|
|
103
|
+
if (!control.parent || !control)
|
|
104
|
+
return null;
|
|
105
|
+
if (control && control.value !== '0')
|
|
106
|
+
return null;
|
|
107
|
+
return {
|
|
108
|
+
invalidCombo: true
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
export function zipCodeValidator(control) {
|
|
112
|
+
if (!control.parent || !control || isEmptyInputValue(control.value))
|
|
113
|
+
return null;
|
|
114
|
+
if (control && control.value) {
|
|
115
|
+
if (!MonkeyEcxUtils.isValidZipCode(control.value)) {
|
|
116
|
+
return {
|
|
117
|
+
invalidZipCode: true
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
export function documentValidator(control, country) {
|
|
124
|
+
if (!control.parent || !control || isEmptyInputValue(control.value))
|
|
125
|
+
return null;
|
|
126
|
+
if (country === 'BR') {
|
|
127
|
+
if (!MonkeyEcxUtils.isCPFCNPJValid(control.value)) {
|
|
128
|
+
return {
|
|
129
|
+
invalidCpfCnpj: true
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else if (country === 'CL') {
|
|
134
|
+
if (!MonkeyEcxUtils.isValidRUT(control.value)) {
|
|
135
|
+
return {
|
|
136
|
+
invalidRut: true
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
export function dateValidator(control) {
|
|
143
|
+
if (!control.parent || !control || isEmptyInputValue(control.value))
|
|
144
|
+
return null;
|
|
145
|
+
const dateFormat = 'MM-DD-YYYY';
|
|
146
|
+
if (!moment(moment(control.value).format(dateFormat), ['DD/MM/YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD'], true).isValid()) {
|
|
147
|
+
return {
|
|
148
|
+
invalidDate: true
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
export class Validators {
|
|
154
|
+
static email(control) {
|
|
155
|
+
return emailValidator(control);
|
|
156
|
+
}
|
|
157
|
+
static dateRange(control) {
|
|
158
|
+
return dateRangeValidator(control);
|
|
159
|
+
}
|
|
160
|
+
static unlockSponsorRegister(control) {
|
|
161
|
+
return registerValidator(control, 'sponsor');
|
|
162
|
+
}
|
|
163
|
+
static unlockBuyerRegister(control) {
|
|
164
|
+
return registerValidator(control, 'buyer');
|
|
165
|
+
}
|
|
166
|
+
static dateStartEnd(control) {
|
|
167
|
+
return dateStartEndValidator(control);
|
|
168
|
+
}
|
|
169
|
+
static url(control) {
|
|
170
|
+
return urlValidator(control);
|
|
171
|
+
}
|
|
172
|
+
static passwordConfirm(control) {
|
|
173
|
+
return passwordConfirmValidator(control);
|
|
174
|
+
}
|
|
175
|
+
static true(control) {
|
|
176
|
+
return trueValidator(control);
|
|
177
|
+
}
|
|
178
|
+
static combo(control) {
|
|
179
|
+
return comboValidator(control);
|
|
180
|
+
}
|
|
181
|
+
static zipCode(control) {
|
|
182
|
+
return zipCodeValidator(control);
|
|
183
|
+
}
|
|
184
|
+
static documentBR(control) {
|
|
185
|
+
return documentValidator(control, 'BR');
|
|
186
|
+
}
|
|
187
|
+
static documentCL(control) {
|
|
188
|
+
return documentValidator(control, 'CL');
|
|
189
|
+
}
|
|
190
|
+
static date(control) {
|
|
191
|
+
return dateValidator(control);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1mcm9udC1jb3JlL3NyYy9saWIvY29yZS91dGlscy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFekMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDO0FBRXZCLG1DQUFtQztBQUNuQyxNQUFNLFlBQVksR0FBRyxnRkFBZ0YsQ0FBQztBQUV0RyxTQUFTLGlCQUFpQixDQUFDLEtBQVU7SUFDbkMsT0FBTyxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE9BQXdCO0lBQ3JELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxJQUFJLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNuRSxPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsSUFBSSxJQUFJO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDdEIsT0FBTztRQUNMLEtBQUssRUFBRSxJQUFJO0tBQ1osQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBd0I7SUFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLElBQUksaUJBQWlCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ25FLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxD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QyxDQUFDO0lBQzFDLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQXdCO1FBQ3hDLE9BQU8saUJBQWlCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQXdCO1FBQ2xDLE9BQU8sYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IE1vbmtleUVjeFV0aWxzIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IG1vbWVudCA9IG1vbWVudF87XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG5jb25zdCBFTUFJTF9SRUdFWFAgPSAvXig/PS57MSwyNTR9JCkoPz0uezEsNjR9QCkoW0EtWmEtejAtOV9cXC0uXSkrQChbQS1aYS16MC05XSkrXFwuKFtBLVphLXpdezEsNjF9KSQvO1xuXG5mdW5jdGlvbiBpc0VtcHR5SW5wdXRWYWx1ZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlLmxlbmd0aCA9PT0gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVtYWlsVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHRlc3QgPSBFTUFJTF9SRUdFWFAudGVzdChjb250cm9sLnZhbHVlKTtcbiAgaWYgKHRlc3QpIHJldHVybiBudWxsO1xuICByZXR1cm4ge1xuICAgIGVtYWlsOiB0cnVlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlUmFuZ2VWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sIHx8IGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBkYXRlcyA9IGNvbnRyb2wucGFyZW50LmdldCgnZGF0ZXMnKS52YWx1ZTtcbiAgaWYgKFxuICAgIGRhdGVzICYmXG4gICAgKCFNb25rZXlFY3hVdGlscy5wZXJzaXN0TnVsbEVtcHR5VW5kZWZpbmVkKGRhdGVzPy5zdGFydERhdGUpIHx8XG4gICAgICAhTW9ua2V5RWN4VXRpbHMucGVyc2lzdE51bGxFbXB0eVVuZGVmaW5lZChkYXRlcz8uZW5kRGF0ZSkpXG4gICkge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRlUmFuZ2U6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHR5cGU6IHN0cmluZyk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGNvbnRyb2wgJiYgY29udHJvbC52YWx1ZSAhPT0gYCNNT05LRVkke3R5cGV9YC50b1VwcGVyQ2FzZSgpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGludmFsaWRVbmxvY2tSZWdpc3RlcjogdHJ1ZVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVTdGFydEVuZFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHsgcGFyZW50IH0gPSBjb250cm9sO1xuXG4gIGNvbnN0IHZhbHVlU3RhcnQgPSBwYXJlbnQuZ2V0KCdkYXRlU3RhcnQnKS52YWx1ZTtcbiAgY29uc3QgdmFsdWVFbmQgPSBwYXJlbnQuZ2V0KCdkYXRlRW5kJykudmFsdWU7XG4gIGxldCBkYXRlU3RhcnQ6IERhdGU7XG4gIGxldCBkYXRlRW5kOiBEYXRlO1xuICBpZiAodmFsdWVTdGFydCkge1xuICAgIGRhdGVTdGFydCA9IG5ldyBEYXRlKHZhbHVlU3RhcnQpO1xuICB9XG4gIGlmICh2YWx1ZUVuZCkge1xuICAgIGRhdGVFbmQgPSBuZXcgRGF0ZSh2YWx1ZUVuZCk7XG4gIH1cblxuICBpZiAoIWRhdGVFbmQgfHwgIWRhdGVTdGFydCkgcmV0dXJuIG51bGw7XG4gIGlmIChkYXRlU3RhcnQgPiBkYXRlRW5kKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGVTdGFydE11c3RCZUxlc3NUaGFuQW5kOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXJsVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkgcmV0dXJuIG51bGw7XG5cbiAgaWYgKCFNb25rZXlFY3hVdGlscy5pc1ZhbGlkVXJsKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVybDogdHJ1ZVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhc3N3b3JkQ29uZmlybVZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wgfHwgaXNFbXB0eUlucHV0VmFsdWUoY29udHJvbC52YWx1ZSkpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHsgcGFyZW50IH0gPSBjb250cm9sO1xuICBjb25zdCBwYXNzd29yZCA9IHBhcmVudC5nZXQoJ3Bhc3N3b3JkJykudmFsdWU7XG4gIGNvbnN0IHBhc3N3b3JkQ29uZmlybSA9IHBhcmVudC5nZXQoJ3Bhc3N3b3JkQ29uZmlybScpLnZhbHVlO1xuICBpZiAoIXBhc3N3b3JkIHx8ICFwYXNzd29yZENvbmZpcm0pIHJldHVybiBudWxsO1xuICBpZiAocGFzc3dvcmQgPT09IHBhc3N3b3JkQ29uZmlybSkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHtcbiAgICBwYXNzd29yZHNOb3RNYXRjaGluZzogdHJ1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJ1ZVZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHJldHVybiBudWxsO1xuICBpZiAoY29udHJvbCAmJiBjb250cm9sLnZhbHVlICE9PSBmYWxzZSkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHtcbiAgICBpbnZhbGlkVHJ1ZTogdHJ1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYm9WYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sKSByZXR1cm4gbnVsbDtcbiAgaWYgKGNvbnRyb2wgJiYgY29udHJvbC52YWx1ZSAhPT0gJzAnKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4ge1xuICAgIGludmFsaWRDb21ibzogdHJ1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gemlwQ29kZVZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wgfHwgaXNFbXB0eUlucHV0VmFsdWUoY29udHJvbC52YWx1ZSkpIHJldHVybiBudWxsO1xuICBpZiAoY29udHJvbCAmJiBjb250cm9sLnZhbHVlKSB7XG4gICAgaWYgKCFNb25rZXlFY3hVdGlscy5pc1ZhbGlkWmlwQ29kZShjb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW52YWxpZFppcENvZGU6IHRydWVcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkb2N1bWVudFZhbGlkYXRvcihcbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxuICBjb3VudHJ5OiBzdHJpbmdcbik6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkgcmV0dXJuIG51bGw7XG4gIGlmIChjb3VudHJ5ID09PSAnQlInKSB7XG4gICAgaWYgKCFNb25rZXlFY3hVdGlscy5pc0NQRkNOUEpWYWxpZChjb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW52YWxpZENwZkNucGo6IHRydWVcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKGNvdW50cnkgPT09ICdDTCcpIHtcbiAgICBpZiAoIU1vbmtleUVjeFV0aWxzLmlzVmFsaWRSVVQoY29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGludmFsaWRSdXQ6IHRydWVcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgZGF0ZUZvcm1hdCA9ICdNTS1ERC1ZWVlZJztcbiAgaWYgKFxuICAgICFtb21lbnQoXG4gICAgICBtb21lbnQoY29udHJvbC52YWx1ZSkuZm9ybWF0KGRhdGVGb3JtYXQpLFxuICAgICAgWydERC9NTS9ZWVlZJywgJ01NLURELVlZWVknLCAnWVlZWS1NTS1ERCddLFxuICAgICAgdHJ1ZVxuICAgICkuaXNWYWxpZCgpXG4gICkge1xuICAgIHJldHVybiB7XG4gICAgICBpbnZhbGlkRGF0ZTogdHJ1ZVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBWYWxpZGF0b3JzIHtcbiAgc3RhdGljIGVtYWlsKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gZW1haWxWYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgZGF0ZVJhbmdlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gZGF0ZVJhbmdlVmFsaWRhdG9yKGNvbnRyb2wpO1xuICB9XG5cbiAgc3RhdGljIHVubG9ja1Nwb25zb3JSZWdpc3Rlcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHJlZ2lzdGVyVmFsaWRhdG9yKGNvbnRyb2wsICdzcG9uc29yJyk7XG4gIH1cblxuICBzdGF0aWMgdW5sb2NrQnV5ZXJSZWdpc3Rlcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHJlZ2lzdGVyVmFsaWRhdG9yKGNvbnRyb2wsICdidXllcicpO1xuICB9XG5cbiAgc3RhdGljIGRhdGVTdGFydEVuZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIGRhdGVTdGFydEVuZFZhbGlkYXRvcihjb250cm9sKTtcbiAgfVxuXG4gIHN0YXRpYyB1cmwoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiB1cmxWYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgcGFzc3dvcmRDb25maXJtKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gcGFzc3dvcmRDb25maXJtVmFsaWRhdG9yKGNvbnRyb2wpO1xuICB9XG5cbiAgc3RhdGljIHRydWUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiB0cnVlVmFsaWRhdG9yKGNvbnRyb2wpO1xuICB9XG5cbiAgc3RhdGljIGNvbWJvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gY29tYm9WYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgemlwQ29kZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHppcENvZGVWYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgZG9jdW1lbnRCUihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIGRvY3VtZW50VmFsaWRhdG9yKGNvbnRyb2wsICdCUicpO1xuICB9XG5cbiAgc3RhdGljIGRvY3VtZW50Q0woY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiBkb2N1bWVudFZhbGlkYXRvcihjb250cm9sLCAnQ0wnKTtcbiAgfVxuXG4gIHN0YXRpYyBkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gZGF0ZVZhbGlkYXRvcihjb250cm9sKTtcbiAgfVxufVxuIl19
|
|
@@ -240,7 +240,7 @@ class MonkeyEcxUtils {
|
|
|
240
240
|
}
|
|
241
241
|
}
|
|
242
242
|
|
|
243
|
-
const moment$
|
|
243
|
+
const moment$2 = moment_;
|
|
244
244
|
class MonkeyEcxFormatDateTimelapsePipe {
|
|
245
245
|
constructor() {
|
|
246
246
|
// not todo
|
|
@@ -252,16 +252,16 @@ class MonkeyEcxFormatDateTimelapsePipe {
|
|
|
252
252
|
if (!format) {
|
|
253
253
|
format = '- HH:mm';
|
|
254
254
|
}
|
|
255
|
-
let stillUtc = moment$
|
|
255
|
+
let stillUtc = moment$2.utc(date).toDate();
|
|
256
256
|
if (!useUtc)
|
|
257
|
-
stillUtc = moment$
|
|
257
|
+
stillUtc = moment$2(date).toDate();
|
|
258
258
|
if (((_a = date.toString()) === null || _a === void 0 ? void 0 : _a.indexOf(':')) <= -1) {
|
|
259
259
|
stillUtc = date;
|
|
260
260
|
showTime = false;
|
|
261
261
|
}
|
|
262
262
|
const formatFrom = `YYYY/MM/DD${showTime ? ` ${format}` : ''}`;
|
|
263
263
|
const formatTo = `DD/MM/YYYY${showTime ? ` ${format}` : ''}`;
|
|
264
|
-
return `${moment$
|
|
264
|
+
return `${moment$2(stillUtc, formatFrom).format(formatTo)}`;
|
|
265
265
|
}
|
|
266
266
|
}
|
|
267
267
|
MonkeyEcxFormatDateTimelapsePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: MonkeyEcxFormatDateTimelapsePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
@@ -726,14 +726,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
|
|
|
726
726
|
}] });
|
|
727
727
|
|
|
728
728
|
/* eslint-disable max-classes-per-file */
|
|
729
|
-
const moment = moment_;
|
|
729
|
+
const moment$1 = moment_;
|
|
730
730
|
class DateValidator {
|
|
731
731
|
static do(control) {
|
|
732
732
|
if (!control.parent || !control)
|
|
733
733
|
return null;
|
|
734
734
|
if (control && control.value) {
|
|
735
735
|
const dateFormat = 'MM-DD-YYYY';
|
|
736
|
-
if (!moment(moment(control.value).format(dateFormat), ['DD/MM/YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD'], true).isValid()) {
|
|
736
|
+
if (!moment$1(moment$1(control.value).format(dateFormat), ['DD/MM/YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD'], true).isValid()) {
|
|
737
737
|
return {
|
|
738
738
|
invalidDate: true
|
|
739
739
|
};
|
|
@@ -1034,6 +1034,198 @@ var decoratorsUtils = /*#__PURE__*/Object.freeze({
|
|
|
1034
1034
|
hasMonkeyEcxServiceAndHandlingProperties: hasMonkeyEcxServiceAndHandlingProperties
|
|
1035
1035
|
});
|
|
1036
1036
|
|
|
1037
|
+
const moment = moment_;
|
|
1038
|
+
// eslint-disable-next-line max-len
|
|
1039
|
+
const EMAIL_REGEXP = /^(?=.{1,254}$)(?=.{1,64}@)([A-Za-z0-9_\-.])+@([A-Za-z0-9])+\.([A-Za-z]{1,61})$/;
|
|
1040
|
+
function isEmptyInputValue(value) {
|
|
1041
|
+
return value == null || value.length === 0;
|
|
1042
|
+
}
|
|
1043
|
+
function emailValidator(control) {
|
|
1044
|
+
if (!control.parent || !control || isEmptyInputValue(control.value)) {
|
|
1045
|
+
return null;
|
|
1046
|
+
}
|
|
1047
|
+
const test = EMAIL_REGEXP.test(control.value);
|
|
1048
|
+
if (test)
|
|
1049
|
+
return null;
|
|
1050
|
+
return {
|
|
1051
|
+
email: true
|
|
1052
|
+
};
|
|
1053
|
+
}
|
|
1054
|
+
function dateRangeValidator(control) {
|
|
1055
|
+
if (!control.parent || !control || isEmptyInputValue(control.value)) {
|
|
1056
|
+
return null;
|
|
1057
|
+
}
|
|
1058
|
+
const dates = control.parent.get('dates').value;
|
|
1059
|
+
if (dates &&
|
|
1060
|
+
(!MonkeyEcxUtils.persistNullEmptyUndefined(dates === null || dates === void 0 ? void 0 : dates.startDate) ||
|
|
1061
|
+
!MonkeyEcxUtils.persistNullEmptyUndefined(dates === null || dates === void 0 ? void 0 : dates.endDate))) {
|
|
1062
|
+
return {
|
|
1063
|
+
dateRange: true
|
|
1064
|
+
};
|
|
1065
|
+
}
|
|
1066
|
+
return null;
|
|
1067
|
+
}
|
|
1068
|
+
function registerValidator(control, type) {
|
|
1069
|
+
if (!control.parent || !control || isEmptyInputValue(control.value)) {
|
|
1070
|
+
return null;
|
|
1071
|
+
}
|
|
1072
|
+
if (control && control.value !== `#MONKEY${type}`.toUpperCase()) {
|
|
1073
|
+
return {
|
|
1074
|
+
invalidUnlockRegister: true
|
|
1075
|
+
};
|
|
1076
|
+
}
|
|
1077
|
+
return null;
|
|
1078
|
+
}
|
|
1079
|
+
function dateStartEndValidator(control) {
|
|
1080
|
+
if (!control.parent || !control) {
|
|
1081
|
+
return null;
|
|
1082
|
+
}
|
|
1083
|
+
const { parent } = control;
|
|
1084
|
+
const valueStart = parent.get('dateStart').value;
|
|
1085
|
+
const valueEnd = parent.get('dateEnd').value;
|
|
1086
|
+
let dateStart;
|
|
1087
|
+
let dateEnd;
|
|
1088
|
+
if (valueStart) {
|
|
1089
|
+
dateStart = new Date(valueStart);
|
|
1090
|
+
}
|
|
1091
|
+
if (valueEnd) {
|
|
1092
|
+
dateEnd = new Date(valueEnd);
|
|
1093
|
+
}
|
|
1094
|
+
if (!dateEnd || !dateStart)
|
|
1095
|
+
return null;
|
|
1096
|
+
if (dateStart > dateEnd) {
|
|
1097
|
+
return {
|
|
1098
|
+
dateStartMustBeLessThanAnd: true
|
|
1099
|
+
};
|
|
1100
|
+
}
|
|
1101
|
+
return null;
|
|
1102
|
+
}
|
|
1103
|
+
function urlValidator(control) {
|
|
1104
|
+
if (!control.parent || !control || isEmptyInputValue(control.value))
|
|
1105
|
+
return null;
|
|
1106
|
+
if (!MonkeyEcxUtils.isValidUrl(control.value)) {
|
|
1107
|
+
return {
|
|
1108
|
+
url: true
|
|
1109
|
+
};
|
|
1110
|
+
}
|
|
1111
|
+
return null;
|
|
1112
|
+
}
|
|
1113
|
+
function passwordConfirmValidator(control) {
|
|
1114
|
+
if (!control.parent || !control || isEmptyInputValue(control.value))
|
|
1115
|
+
return null;
|
|
1116
|
+
const { parent } = control;
|
|
1117
|
+
const password = parent.get('password').value;
|
|
1118
|
+
const passwordConfirm = parent.get('passwordConfirm').value;
|
|
1119
|
+
if (!password || !passwordConfirm)
|
|
1120
|
+
return null;
|
|
1121
|
+
if (password === passwordConfirm)
|
|
1122
|
+
return null;
|
|
1123
|
+
return {
|
|
1124
|
+
passwordsNotMatching: true
|
|
1125
|
+
};
|
|
1126
|
+
}
|
|
1127
|
+
function trueValidator(control) {
|
|
1128
|
+
if (!control.parent || !control)
|
|
1129
|
+
return null;
|
|
1130
|
+
if (control && control.value !== false)
|
|
1131
|
+
return null;
|
|
1132
|
+
return {
|
|
1133
|
+
invalidTrue: true
|
|
1134
|
+
};
|
|
1135
|
+
}
|
|
1136
|
+
function comboValidator(control) {
|
|
1137
|
+
if (!control.parent || !control)
|
|
1138
|
+
return null;
|
|
1139
|
+
if (control && control.value !== '0')
|
|
1140
|
+
return null;
|
|
1141
|
+
return {
|
|
1142
|
+
invalidCombo: true
|
|
1143
|
+
};
|
|
1144
|
+
}
|
|
1145
|
+
function zipCodeValidator(control) {
|
|
1146
|
+
if (!control.parent || !control || isEmptyInputValue(control.value))
|
|
1147
|
+
return null;
|
|
1148
|
+
if (control && control.value) {
|
|
1149
|
+
if (!MonkeyEcxUtils.isValidZipCode(control.value)) {
|
|
1150
|
+
return {
|
|
1151
|
+
invalidZipCode: true
|
|
1152
|
+
};
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
return null;
|
|
1156
|
+
}
|
|
1157
|
+
function documentValidator(control, country) {
|
|
1158
|
+
if (!control.parent || !control || isEmptyInputValue(control.value))
|
|
1159
|
+
return null;
|
|
1160
|
+
if (country === 'BR') {
|
|
1161
|
+
if (!MonkeyEcxUtils.isCPFCNPJValid(control.value)) {
|
|
1162
|
+
return {
|
|
1163
|
+
invalidCpfCnpj: true
|
|
1164
|
+
};
|
|
1165
|
+
}
|
|
1166
|
+
}
|
|
1167
|
+
else if (country === 'CL') {
|
|
1168
|
+
if (!MonkeyEcxUtils.isValidRUT(control.value)) {
|
|
1169
|
+
return {
|
|
1170
|
+
invalidRut: true
|
|
1171
|
+
};
|
|
1172
|
+
}
|
|
1173
|
+
}
|
|
1174
|
+
return null;
|
|
1175
|
+
}
|
|
1176
|
+
function dateValidator(control) {
|
|
1177
|
+
if (!control.parent || !control || isEmptyInputValue(control.value))
|
|
1178
|
+
return null;
|
|
1179
|
+
const dateFormat = 'MM-DD-YYYY';
|
|
1180
|
+
if (!moment(moment(control.value).format(dateFormat), ['DD/MM/YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD'], true).isValid()) {
|
|
1181
|
+
return {
|
|
1182
|
+
invalidDate: true
|
|
1183
|
+
};
|
|
1184
|
+
}
|
|
1185
|
+
return null;
|
|
1186
|
+
}
|
|
1187
|
+
class Validators {
|
|
1188
|
+
static email(control) {
|
|
1189
|
+
return emailValidator(control);
|
|
1190
|
+
}
|
|
1191
|
+
static dateRange(control) {
|
|
1192
|
+
return dateRangeValidator(control);
|
|
1193
|
+
}
|
|
1194
|
+
static unlockSponsorRegister(control) {
|
|
1195
|
+
return registerValidator(control, 'sponsor');
|
|
1196
|
+
}
|
|
1197
|
+
static unlockBuyerRegister(control) {
|
|
1198
|
+
return registerValidator(control, 'buyer');
|
|
1199
|
+
}
|
|
1200
|
+
static dateStartEnd(control) {
|
|
1201
|
+
return dateStartEndValidator(control);
|
|
1202
|
+
}
|
|
1203
|
+
static url(control) {
|
|
1204
|
+
return urlValidator(control);
|
|
1205
|
+
}
|
|
1206
|
+
static passwordConfirm(control) {
|
|
1207
|
+
return passwordConfirmValidator(control);
|
|
1208
|
+
}
|
|
1209
|
+
static true(control) {
|
|
1210
|
+
return trueValidator(control);
|
|
1211
|
+
}
|
|
1212
|
+
static combo(control) {
|
|
1213
|
+
return comboValidator(control);
|
|
1214
|
+
}
|
|
1215
|
+
static zipCode(control) {
|
|
1216
|
+
return zipCodeValidator(control);
|
|
1217
|
+
}
|
|
1218
|
+
static documentBR(control) {
|
|
1219
|
+
return documentValidator(control, 'BR');
|
|
1220
|
+
}
|
|
1221
|
+
static documentCL(control) {
|
|
1222
|
+
return documentValidator(control, 'CL');
|
|
1223
|
+
}
|
|
1224
|
+
static date(control) {
|
|
1225
|
+
return dateValidator(control);
|
|
1226
|
+
}
|
|
1227
|
+
}
|
|
1228
|
+
|
|
1037
1229
|
/* eslint-disable object-curly-newline */
|
|
1038
1230
|
|
|
1039
1231
|
function MonkeyEcxCoreServiceConstructor() {
|
|
@@ -3696,5 +3888,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
|
|
|
3696
3888
|
* Generated bundle index. Do not edit.
|
|
3697
3889
|
*/
|
|
3698
3890
|
|
|
3699
|
-
export { ClosedToMaintenanceComponent, ClosedToMaintenanceModule, decoratorsUtils as DecoratorsUtils, MonkeyEcxAuthGuard, MonkeyEcxAuthGuardLogin, MonkeyEcxAuthenticationService, MonkeyEcxCommonsService, MonkeyEcxConfigModule, MonkeyEcxConfigService, MonkeyEcxCookieStorageService, MonkeyEcxCoreClearDecorators, MonkeyEcxCoreLog, MonkeyEcxCoreService, MonkeyEcxCoreServiceConstructor, MonkeyEcxCoreServicePaged, MonkeyEcxCoreServiceQueue, MonkeyEcxDirectivesModule, MonkeyEcxDiscoveryParamsService, MonkeyEcxDisplayFirstNamePipe, MonkeyEcxDocumentTypePipe, MonkeyEcxDragDropDirective, MonkeyEcxErrorHandlingModule, MonkeyEcxErrorHandlingService, MonkeyEcxFeatureToggleService, MonkeyEcxFormatCurrency, MonkeyEcxFormatCurrencyPipe, MonkeyEcxFormatDateTimelapsePipe, MonkeyEcxFormatDocumentPipe, MonkeyEcxFormatNumber, MonkeyEcxFormatSizePipe, MonkeyEcxFormatUpper, MonkeyEcxFormatValue, MonkeyEcxFormatZipCodePipe, MonkeyEcxHandlingService, MonkeyEcxHttpConfigErrorInterceptor, MonkeyEcxHttpConfigHeaderInterceptor, MonkeyEcxHttpConfigInterceptorModule, MonkeyEcxHttpConfigLoadingInProgressInterceptor, MonkeyEcxHttpConfigQueueInterceptor, MonkeyEcxHttpErrorHandlingService, MonkeyEcxLoggedHandlingService, MonkeyEcxLogsConfigService, MonkeyEcxMaintenanceConfigService, MonkeyEcxModel, MonkeyEcxOnlyAlphaNumericDirective, MonkeyEcxOnlyNumbersDirective, MonkeyEcxOthersErrorsHandlingService, MonkeyEcxPipesModule, MonkeyEcxProgressBarComponent, MonkeyEcxProgressBarModule, MonkeyEcxProgressBarService, MonkeyEcxRequestDownloadHandlingService, MonkeyEcxRequestDownloadedHandlingService, MonkeyEcxRequestPagedHandling, MonkeyEcxRequestQueueHandlingService, MonkeyEcxRequestQueueModalHandlingService, MonkeyEcxRequestScheduleService, MonkeyEcxSecurityConsoleConfigService, MonkeyEcxSecurityDirective, MonkeyEcxService, MonkeyEcxServiceDownload, MonkeyEcxServiceUpload, MonkeyEcxServiceWorkerConfigService, MonkeyEcxSpecificationSearch, MonkeyEcxTextTruncatePipe, MonkeyEcxTokenStorageService, MonkeyEcxTooltipDirective, MonkeyEcxTruncateQtdPipe, MonkeyEcxUtils, MonkeyEcxi18nConfigService, MonkeyFrontCoreModuleModule, OpSearch, statics as Statics, validateUtils as ValidateUtils, VersionChangedComponent, VersionChangedModule };
|
|
3891
|
+
export { ClosedToMaintenanceComponent, ClosedToMaintenanceModule, decoratorsUtils as DecoratorsUtils, MonkeyEcxAuthGuard, MonkeyEcxAuthGuardLogin, MonkeyEcxAuthenticationService, MonkeyEcxCommonsService, MonkeyEcxConfigModule, MonkeyEcxConfigService, MonkeyEcxCookieStorageService, MonkeyEcxCoreClearDecorators, MonkeyEcxCoreLog, MonkeyEcxCoreService, MonkeyEcxCoreServiceConstructor, MonkeyEcxCoreServicePaged, MonkeyEcxCoreServiceQueue, MonkeyEcxDirectivesModule, MonkeyEcxDiscoveryParamsService, MonkeyEcxDisplayFirstNamePipe, MonkeyEcxDocumentTypePipe, MonkeyEcxDragDropDirective, MonkeyEcxErrorHandlingModule, MonkeyEcxErrorHandlingService, MonkeyEcxFeatureToggleService, MonkeyEcxFormatCurrency, MonkeyEcxFormatCurrencyPipe, MonkeyEcxFormatDateTimelapsePipe, MonkeyEcxFormatDocumentPipe, MonkeyEcxFormatNumber, MonkeyEcxFormatSizePipe, MonkeyEcxFormatUpper, MonkeyEcxFormatValue, MonkeyEcxFormatZipCodePipe, MonkeyEcxHandlingService, MonkeyEcxHttpConfigErrorInterceptor, MonkeyEcxHttpConfigHeaderInterceptor, MonkeyEcxHttpConfigInterceptorModule, MonkeyEcxHttpConfigLoadingInProgressInterceptor, MonkeyEcxHttpConfigQueueInterceptor, MonkeyEcxHttpErrorHandlingService, MonkeyEcxLoggedHandlingService, MonkeyEcxLogsConfigService, MonkeyEcxMaintenanceConfigService, MonkeyEcxModel, MonkeyEcxOnlyAlphaNumericDirective, MonkeyEcxOnlyNumbersDirective, MonkeyEcxOthersErrorsHandlingService, MonkeyEcxPipesModule, MonkeyEcxProgressBarComponent, MonkeyEcxProgressBarModule, MonkeyEcxProgressBarService, MonkeyEcxRequestDownloadHandlingService, MonkeyEcxRequestDownloadedHandlingService, MonkeyEcxRequestPagedHandling, MonkeyEcxRequestQueueHandlingService, MonkeyEcxRequestQueueModalHandlingService, MonkeyEcxRequestScheduleService, MonkeyEcxSecurityConsoleConfigService, MonkeyEcxSecurityDirective, MonkeyEcxService, MonkeyEcxServiceDownload, MonkeyEcxServiceUpload, MonkeyEcxServiceWorkerConfigService, MonkeyEcxSpecificationSearch, MonkeyEcxTextTruncatePipe, MonkeyEcxTokenStorageService, MonkeyEcxTooltipDirective, MonkeyEcxTruncateQtdPipe, MonkeyEcxUtils, MonkeyEcxi18nConfigService, MonkeyFrontCoreModuleModule, OpSearch, statics as Statics, validateUtils as ValidateUtils, Validators, VersionChangedComponent, VersionChangedModule, comboValidator, dateRangeValidator, dateStartEndValidator, dateValidator, documentValidator, emailValidator, passwordConfirmValidator, registerValidator, trueValidator, urlValidator, zipCodeValidator };
|
|
3700
3892
|
//# sourceMappingURL=monkey-front-core.js.map
|