ngx-lift 0.4.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/LICENSE +21 -0
- package/README.md +56 -0
- package/esm2022/lib/const.mjs +5 -0
- package/esm2022/lib/models/async-state.model.mjs +2 -0
- package/esm2022/lib/models/index.mjs +2 -0
- package/esm2022/lib/operators/combine-latest-eager.operator.mjs +48 -0
- package/esm2022/lib/operators/create-async-state.operator.mjs +52 -0
- package/esm2022/lib/operators/distinct-on-change.operator.mjs +80 -0
- package/esm2022/lib/operators/index.mjs +8 -0
- package/esm2022/lib/operators/logger.operator.mjs +21 -0
- package/esm2022/lib/operators/poll.operator.mjs +32 -0
- package/esm2022/lib/operators/start-with-tap.operator.mjs +15 -0
- package/esm2022/lib/operators/switch-map-with-async-state.operator.mjs +33 -0
- package/esm2022/lib/pipes/array-join.pipe.mjs +21 -0
- package/esm2022/lib/pipes/byte-converter.pipe.mjs +159 -0
- package/esm2022/lib/pipes/index.mjs +5 -0
- package/esm2022/lib/pipes/is-https.pipe.mjs +18 -0
- package/esm2022/lib/pipes/mask.pipe.mjs +36 -0
- package/esm2022/lib/utils/form.util.mjs +56 -0
- package/esm2022/lib/utils/index.mjs +5 -0
- package/esm2022/lib/utils/is-empty.util.mjs +17 -0
- package/esm2022/lib/utils/is-equal.util.mjs +24 -0
- package/esm2022/lib/utils/pick-by.util.mjs +16 -0
- package/esm2022/lib/validators/index.mjs +3 -0
- package/esm2022/lib/validators/unique.validator.mjs +64 -0
- package/esm2022/lib/validators/url.validator.mjs +14 -0
- package/esm2022/ngx-lift.mjs +5 -0
- package/esm2022/public-api.mjs +10 -0
- package/fesm2022/ngx-lift.mjs +707 -0
- package/fesm2022/ngx-lift.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/const.d.ts +3 -0
- package/lib/models/async-state.model.d.ts +22 -0
- package/lib/models/index.d.ts +1 -0
- package/lib/operators/combine-latest-eager.operator.d.ts +7 -0
- package/lib/operators/create-async-state.operator.d.ts +49 -0
- package/lib/operators/distinct-on-change.operator.d.ts +55 -0
- package/lib/operators/index.d.ts +7 -0
- package/lib/operators/logger.operator.d.ts +11 -0
- package/lib/operators/poll.operator.d.ts +18 -0
- package/lib/operators/start-with-tap.operator.d.ts +10 -0
- package/lib/operators/switch-map-with-async-state.operator.d.ts +31 -0
- package/lib/pipes/array-join.pipe.d.ts +7 -0
- package/lib/pipes/byte-converter.pipe.d.ts +39 -0
- package/lib/pipes/index.d.ts +4 -0
- package/lib/pipes/is-https.pipe.d.ts +7 -0
- package/lib/pipes/mask.pipe.d.ts +19 -0
- package/lib/utils/form.util.d.ts +18 -0
- package/lib/utils/index.d.ts +4 -0
- package/lib/utils/is-empty.util.d.ts +6 -0
- package/lib/utils/is-equal.util.d.ts +7 -0
- package/lib/utils/pick-by.util.d.ts +7 -0
- package/lib/validators/index.d.ts +2 -0
- package/lib/validators/unique.validator.d.ts +18 -0
- package/lib/validators/url.validator.d.ts +3 -0
- package/package.json +28 -0
- package/public-api.d.ts +5 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { Inject, LOCALE_ID, Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* import { LOCALE_ID, NgModule } from '@angular/core';
|
|
5
|
+
* import { BrowserModule } from '@angular/platform-browser';
|
|
6
|
+
* import { AppComponent } from './app.component';
|
|
7
|
+
* import { registerLocaleData } from '@angular/common';
|
|
8
|
+
*
|
|
9
|
+
* import localeEn from '@angular/common/locales/en';
|
|
10
|
+
* import localeFr from '@angular/common/locales/fr';
|
|
11
|
+
*
|
|
12
|
+
* // Register locales
|
|
13
|
+
* registerLocaleData(localeEn);
|
|
14
|
+
* registerLocaleData(localeFr);
|
|
15
|
+
*
|
|
16
|
+
* @NgModule({
|
|
17
|
+
* declarations: [AppComponent],
|
|
18
|
+
* imports: [BrowserModule],
|
|
19
|
+
* providers: [
|
|
20
|
+
* {
|
|
21
|
+
* provide: LOCALE_ID,
|
|
22
|
+
* useFactory: () => {
|
|
23
|
+
* // Use the browser's language or a default language
|
|
24
|
+
* return navigator.language || 'en';
|
|
25
|
+
* },
|
|
26
|
+
* },
|
|
27
|
+
* ],
|
|
28
|
+
* bootstrap: [AppComponent],
|
|
29
|
+
* })
|
|
30
|
+
* export class AppModule {}
|
|
31
|
+
*/
|
|
32
|
+
export class ByteConverterPipe {
|
|
33
|
+
constructor(locale) {
|
|
34
|
+
this.locale = locale;
|
|
35
|
+
}
|
|
36
|
+
// If using navigator.language directly in the pipe, this approach directly uses the browser's language at the moment the ByteConverterPipe is constructed. If the user changes the language while using the application, it won't be automatically reflected. If dynamic language changes are a requirement, using the LOCALE_ID provider as demonstrated in the AppModule is a more Angular-centric approach.
|
|
37
|
+
// private locale: string;
|
|
38
|
+
// constructor() {
|
|
39
|
+
// // Use navigator.language as the default locale
|
|
40
|
+
// this.locale = navigator.language || 'en';
|
|
41
|
+
// }
|
|
42
|
+
transform(value) {
|
|
43
|
+
if (value === null || value === undefined || isNaN(value)) {
|
|
44
|
+
return '-';
|
|
45
|
+
}
|
|
46
|
+
const units = ['BYTE', 'KB', 'MB', 'GB', 'TB'];
|
|
47
|
+
let unitIndex = 0;
|
|
48
|
+
while (value >= 1024 && unitIndex < units.length - 1) {
|
|
49
|
+
value /= 1024;
|
|
50
|
+
unitIndex++;
|
|
51
|
+
}
|
|
52
|
+
const translationObject = translations[this.locale] || translations['en'];
|
|
53
|
+
const key = units[unitIndex];
|
|
54
|
+
return this.formatNumber(value) + ' ' + translationObject[key];
|
|
55
|
+
}
|
|
56
|
+
formatNumber(value) {
|
|
57
|
+
return new Intl.NumberFormat(this.locale, { maximumFractionDigits: 2 }).format(value);
|
|
58
|
+
}
|
|
59
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ByteConverterPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
60
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: ByteConverterPipe, isStandalone: true, name: "byteConverter" }); }
|
|
61
|
+
}
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ByteConverterPipe, decorators: [{
|
|
63
|
+
type: Pipe,
|
|
64
|
+
args: [{
|
|
65
|
+
name: 'byteConverter',
|
|
66
|
+
standalone: true,
|
|
67
|
+
}]
|
|
68
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
69
|
+
type: Inject,
|
|
70
|
+
args: [LOCALE_ID]
|
|
71
|
+
}] }] });
|
|
72
|
+
const translations = {
|
|
73
|
+
en: {
|
|
74
|
+
BYTE: 'B',
|
|
75
|
+
KB: 'KB',
|
|
76
|
+
MB: 'MB',
|
|
77
|
+
GB: 'GB',
|
|
78
|
+
TB: 'TB',
|
|
79
|
+
},
|
|
80
|
+
'en-US': {
|
|
81
|
+
// You can provide specific variations for en-US if needed
|
|
82
|
+
BYTE: 'B',
|
|
83
|
+
KB: 'KB',
|
|
84
|
+
MB: 'MB',
|
|
85
|
+
GB: 'GB',
|
|
86
|
+
TB: 'TB',
|
|
87
|
+
},
|
|
88
|
+
de: {
|
|
89
|
+
BYTE: 'B',
|
|
90
|
+
KB: 'KB',
|
|
91
|
+
MB: 'MB',
|
|
92
|
+
GB: 'GB',
|
|
93
|
+
TB: 'TB',
|
|
94
|
+
},
|
|
95
|
+
es: {
|
|
96
|
+
BYTE: 'B',
|
|
97
|
+
KB: 'KB',
|
|
98
|
+
MB: 'MB',
|
|
99
|
+
GB: 'GB',
|
|
100
|
+
TB: 'TB',
|
|
101
|
+
},
|
|
102
|
+
fr: {
|
|
103
|
+
BYTE: 'o',
|
|
104
|
+
KB: 'Ko',
|
|
105
|
+
MB: 'Mo',
|
|
106
|
+
GB: 'Go',
|
|
107
|
+
TB: 'To',
|
|
108
|
+
},
|
|
109
|
+
it: {
|
|
110
|
+
BYTE: 'B',
|
|
111
|
+
KB: 'KB',
|
|
112
|
+
MB: 'MB',
|
|
113
|
+
GB: 'GB',
|
|
114
|
+
TB: 'TB',
|
|
115
|
+
},
|
|
116
|
+
ja: {
|
|
117
|
+
BYTE: 'B',
|
|
118
|
+
KB: 'KB',
|
|
119
|
+
MB: 'MB',
|
|
120
|
+
GB: 'GB',
|
|
121
|
+
TB: 'TB',
|
|
122
|
+
},
|
|
123
|
+
ko: {
|
|
124
|
+
BYTE: 'B',
|
|
125
|
+
KB: 'KB',
|
|
126
|
+
MB: 'MB',
|
|
127
|
+
GB: 'GB',
|
|
128
|
+
TB: 'TB',
|
|
129
|
+
},
|
|
130
|
+
'pt-BR': {
|
|
131
|
+
BYTE: 'B',
|
|
132
|
+
KB: 'KB',
|
|
133
|
+
MB: 'MB',
|
|
134
|
+
GB: 'GB',
|
|
135
|
+
TB: 'TB',
|
|
136
|
+
},
|
|
137
|
+
'zh-CN': {
|
|
138
|
+
BYTE: '字节',
|
|
139
|
+
KB: '千字节',
|
|
140
|
+
MB: '兆字节',
|
|
141
|
+
GB: '千兆字节',
|
|
142
|
+
TB: '太字节',
|
|
143
|
+
},
|
|
144
|
+
'zh-TW': {
|
|
145
|
+
BYTE: '位元組',
|
|
146
|
+
KB: '千位元組',
|
|
147
|
+
MB: '兆位元組',
|
|
148
|
+
GB: '千兆位元組',
|
|
149
|
+
TB: '太位元組',
|
|
150
|
+
},
|
|
151
|
+
ru: {
|
|
152
|
+
BYTE: 'Б',
|
|
153
|
+
KB: 'КБ',
|
|
154
|
+
MB: 'МБ',
|
|
155
|
+
GB: 'ГБ',
|
|
156
|
+
TB: 'ТБ',
|
|
157
|
+
},
|
|
158
|
+
};
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnl0ZS1jb252ZXJ0ZXIucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWZ0L3NyYy9saWIvcGlwZXMvYnl0ZS1jb252ZXJ0ZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDOztBQUVyRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCRztBQU1ILE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFBdUMsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7SUFBRyxDQUFDO0lBRXpELCtZQUErWTtJQUMvWSwwQkFBMEI7SUFDMUIsa0JBQWtCO0lBQ2xCLG9EQUFvRDtJQUNwRCw4Q0FBOEM7SUFDOUMsSUFBSTtJQUVKLFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6RCxPQUFPLEdBQUcsQ0FBQztTQUNaO1FBRUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0MsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRWxCLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDcEQsS0FBSyxJQUFJLElBQUksQ0FBQztZQUNkLFNBQVMsRUFBRSxDQUFDO1NBQ2I7UUFFRCxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFFLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBYTtRQUNoQyxPQUFPLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUMscUJBQXFCLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEYsQ0FBQzs4R0EvQlUsaUJBQWlCLGtCQUNSLFNBQVM7NEdBRGxCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFKN0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsZUFBZTtvQkFDckIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkFFYyxNQUFNOzJCQUFDLFNBQVM7O0FBaUMvQixNQUFNLFlBQVksR0FBMkM7SUFDM0QsRUFBRSxFQUFFO1FBQ0YsSUFBSSxFQUFFLEdBQUc7UUFDVCxFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsSUFBSTtLQUNUO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsMERBQTBEO1FBQzFELElBQUksRUFBRSxHQUFHO1FBQ1QsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLElBQUk7S0FDVDtJQUNELEVBQUUsRUFBRTtRQUNGLElBQUksRUFBRSxHQUFHO1FBQ1QsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLElBQUk7S0FDVDtJQUNELEVBQUUsRUFBRTtRQUNGLElBQUksRUFBRSxHQUFHO1FBQ1QsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLElBQUk7S0FDVDtJQUNELEVBQUUsRUFBRTtRQUNGLElBQUksRUFBRSxHQUFHO1FBQ1QsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLElBQUk7S0FDVDtJQUNELEVBQUUsRUFBRTtRQUNGLElBQUksRUFBRSxHQUFHO1FBQ1QsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLElBQUk7S0FDVDtJQUNELEVBQUUsRUFBRTtRQUNGLElBQUksRUFBRSxHQUFHO1FBQ1QsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLElBQUk7S0FDVDtJQUNELEVBQUUsRUFBRTtRQUNGLElBQUksRUFBRSxHQUFHO1FBQ1QsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLElBQUk7S0FDVDtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxHQUFHO1FBQ1QsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLElBQUk7S0FDVDtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxJQUFJO1FBQ1YsRUFBRSxFQUFFLEtBQUs7UUFDVCxFQUFFLEVBQUUsS0FBSztRQUNULEVBQUUsRUFBRSxNQUFNO1FBQ1YsRUFBRSxFQUFFLEtBQUs7S0FDVjtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxLQUFLO1FBQ1gsRUFBRSxFQUFFLE1BQU07UUFDVixFQUFFLEVBQUUsTUFBTTtRQUNWLEVBQUUsRUFBRSxPQUFPO1FBQ1gsRUFBRSxFQUFFLE1BQU07S0FDWDtJQUNELEVBQUUsRUFBRTtRQUNGLElBQUksRUFBRSxHQUFHO1FBQ1QsRUFBRSxFQUFFLElBQUk7UUFDUixFQUFFLEVBQUUsSUFBSTtRQUNSLEVBQUUsRUFBRSxJQUFJO1FBQ1IsRUFBRSxFQUFFLElBQUk7S0FDVDtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgTE9DQUxFX0lELCBQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBpbXBvcnQgeyBMT0NBTEVfSUQsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4gKiBpbXBvcnQgeyBCcm93c2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG4gKiBpbXBvcnQgeyBBcHBDb21wb25lbnQgfSBmcm9tICcuL2FwcC5jb21wb25lbnQnO1xuICogaW1wb3J0IHsgcmVnaXN0ZXJMb2NhbGVEYXRhIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbiAqXG4gKiBpbXBvcnQgbG9jYWxlRW4gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZW4nO1xuICogaW1wb3J0IGxvY2FsZUZyIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2ZyJztcbiAqXG4gKiAvLyBSZWdpc3RlciBsb2NhbGVzXG4gKiByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlRW4pO1xuICogcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZUZyKTtcbiAqXG4gKiBATmdNb2R1bGUoe1xuICogICBkZWNsYXJhdGlvbnM6IFtBcHBDb21wb25lbnRdLFxuICogICBpbXBvcnRzOiBbQnJvd3Nlck1vZHVsZV0sXG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIHtcbiAqICAgICAgIHByb3ZpZGU6IExPQ0FMRV9JRCxcbiAqICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcbiAqICAgICAgICAgLy8gVXNlIHRoZSBicm93c2VyJ3MgbGFuZ3VhZ2Ugb3IgYSBkZWZhdWx0IGxhbmd1YWdlXG4gKiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgJ2VuJztcbiAqICAgICAgIH0sXG4gKiAgICAgfSxcbiAqICAgXSxcbiAqICAgYm9vdHN0cmFwOiBbQXBwQ29tcG9uZW50XSxcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHt9XG4gKi9cblxuQFBpcGUoe1xuICBuYW1lOiAnYnl0ZUNvbnZlcnRlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEJ5dGVDb252ZXJ0ZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTE9DQUxFX0lEKSBwcml2YXRlIGxvY2FsZTogc3RyaW5nKSB7fVxuXG4gIC8vIElmIHVzaW5nIG5hdmlnYXRvci5sYW5ndWFnZSBkaXJlY3RseSBpbiB0aGUgcGlwZSwgdGhpcyBhcHByb2FjaCBkaXJlY3RseSB1c2VzIHRoZSBicm93c2VyJ3MgbGFuZ3VhZ2UgYXQgdGhlIG1vbWVudCB0aGUgQnl0ZUNvbnZlcnRlclBpcGUgaXMgY29uc3RydWN0ZWQuIElmIHRoZSB1c2VyIGNoYW5nZXMgdGhlIGxhbmd1YWdlIHdoaWxlIHVzaW5nIHRoZSBhcHBsaWNhdGlvbiwgaXQgd29uJ3QgYmUgYXV0b21hdGljYWxseSByZWZsZWN0ZWQuIElmIGR5bmFtaWMgbGFuZ3VhZ2UgY2hhbmdlcyBhcmUgYSByZXF1aXJlbWVudCwgdXNpbmcgdGhlIExPQ0FMRV9JRCBwcm92aWRlciBhcyBkZW1vbnN0cmF0ZWQgaW4gdGhlIEFwcE1vZHVsZSBpcyBhIG1vcmUgQW5ndWxhci1jZW50cmljIGFwcHJvYWNoLlxuICAvLyBwcml2YXRlIGxvY2FsZTogc3RyaW5nO1xuICAvLyBjb25zdHJ1Y3RvcigpIHtcbiAgLy8gICAvLyBVc2UgbmF2aWdhdG9yLmxhbmd1YWdlIGFzIHRoZSBkZWZhdWx0IGxvY2FsZVxuICAvLyAgIHRoaXMubG9jYWxlID0gbmF2aWdhdG9yLmxhbmd1YWdlIHx8ICdlbic7XG4gIC8vIH1cblxuICB0cmFuc2Zvcm0odmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgaXNOYU4odmFsdWUpKSB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH1cblxuICAgIGNvbnN0IHVuaXRzID0gWydCWVRFJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJ107XG4gICAgbGV0IHVuaXRJbmRleCA9IDA7XG5cbiAgICB3aGlsZSAodmFsdWUgPj0gMTAyNCAmJiB1bml0SW5kZXggPCB1bml0cy5sZW5ndGggLSAxKSB7XG4gICAgICB2YWx1ZSAvPSAxMDI0O1xuICAgICAgdW5pdEluZGV4Kys7XG4gICAgfVxuXG4gICAgY29uc3QgdHJhbnNsYXRpb25PYmplY3QgPSB0cmFuc2xhdGlvbnNbdGhpcy5sb2NhbGVdIHx8IHRyYW5zbGF0aW9uc1snZW4nXTtcbiAgICBjb25zdCBrZXkgPSB1bml0c1t1bml0SW5kZXhdO1xuXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0TnVtYmVyKHZhbHVlKSArICcgJyArIHRyYW5zbGF0aW9uT2JqZWN0W2tleV07XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdE51bWJlcih2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCB7bWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyfSkuZm9ybWF0KHZhbHVlKTtcbiAgfVxufVxuXG5jb25zdCB0cmFuc2xhdGlvbnM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0ge1xuICBlbjoge1xuICAgIEJZVEU6ICdCJyxcbiAgICBLQjogJ0tCJyxcbiAgICBNQjogJ01CJyxcbiAgICBHQjogJ0dCJyxcbiAgICBUQjogJ1RCJyxcbiAgfSxcbiAgJ2VuLVVTJzoge1xuICAgIC8vIFlvdSBjYW4gcHJvdmlkZSBzcGVjaWZpYyB2YXJpYXRpb25zIGZvciBlbi1VUyBpZiBuZWVkZWRcbiAgICBCWVRFOiAnQicsXG4gICAgS0I6ICdLQicsXG4gICAgTUI6ICdNQicsXG4gICAgR0I6ICdHQicsXG4gICAgVEI6ICdUQicsXG4gIH0sXG4gIGRlOiB7XG4gICAgQllURTogJ0InLFxuICAgIEtCOiAnS0InLFxuICAgIE1COiAnTUInLFxuICAgIEdCOiAnR0InLFxuICAgIFRCOiAnVEInLFxuICB9LFxuICBlczoge1xuICAgIEJZVEU6ICdCJyxcbiAgICBLQjogJ0tCJyxcbiAgICBNQjogJ01CJyxcbiAgICBHQjogJ0dCJyxcbiAgICBUQjogJ1RCJyxcbiAgfSxcbiAgZnI6IHtcbiAgICBCWVRFOiAnbycsXG4gICAgS0I6ICdLbycsXG4gICAgTUI6ICdNbycsXG4gICAgR0I6ICdHbycsXG4gICAgVEI6ICdUbycsXG4gIH0sXG4gIGl0OiB7XG4gICAgQllURTogJ0InLFxuICAgIEtCOiAnS0InLFxuICAgIE1COiAnTUInLFxuICAgIEdCOiAnR0InLFxuICAgIFRCOiAnVEInLFxuICB9LFxuICBqYToge1xuICAgIEJZVEU6ICdCJyxcbiAgICBLQjogJ0tCJyxcbiAgICBNQjogJ01CJyxcbiAgICBHQjogJ0dCJyxcbiAgICBUQjogJ1RCJyxcbiAgfSxcbiAga286IHtcbiAgICBCWVRFOiAnQicsXG4gICAgS0I6ICdLQicsXG4gICAgTUI6ICdNQicsXG4gICAgR0I6ICdHQicsXG4gICAgVEI6ICdUQicsXG4gIH0sXG4gICdwdC1CUic6IHtcbiAgICBCWVRFOiAnQicsXG4gICAgS0I6ICdLQicsXG4gICAgTUI6ICdNQicsXG4gICAgR0I6ICdHQicsXG4gICAgVEI6ICdUQicsXG4gIH0sXG4gICd6aC1DTic6IHtcbiAgICBCWVRFOiAn5a2X6IqCJyxcbiAgICBLQjogJ+WNg+Wtl+iKgicsXG4gICAgTUI6ICflhYblrZfoioInLFxuICAgIEdCOiAn5Y2D5YWG5a2X6IqCJyxcbiAgICBUQjogJ+WkquWtl+iKgicsXG4gIH0sXG4gICd6aC1UVyc6IHtcbiAgICBCWVRFOiAn5L2N5YWD57WEJyxcbiAgICBLQjogJ+WNg+S9jeWFg+e1hCcsXG4gICAgTUI6ICflhYbkvY3lhYPntYQnLFxuICAgIEdCOiAn5Y2D5YWG5L2N5YWD57WEJyxcbiAgICBUQjogJ+WkquS9jeWFg+e1hCcsXG4gIH0sXG4gIHJ1OiB7XG4gICAgQllURTogJ9CRJyxcbiAgICBLQjogJ9Ca0JEnLFxuICAgIE1COiAn0JzQkScsXG4gICAgR0I6ICfQk9CRJyxcbiAgICBUQjogJ9Ci0JEnLFxuICB9LFxufTtcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './array-join.pipe';
|
|
2
|
+
export * from './byte-converter.pipe';
|
|
3
|
+
export * from './is-https.pipe';
|
|
4
|
+
export * from './mask.pipe';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGlmdC9zcmMvbGliL3BpcGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hcnJheS1qb2luLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9ieXRlLWNvbnZlcnRlci5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vaXMtaHR0cHMucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL21hc2sucGlwZSc7XG4iXX0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import { httpsPattern } from '../const';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class IsHttpsPipe {
|
|
5
|
+
transform(value) {
|
|
6
|
+
return httpsPattern.test(value);
|
|
7
|
+
}
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IsHttpsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
9
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: IsHttpsPipe, isStandalone: true, name: "isHttps" }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IsHttpsPipe, decorators: [{
|
|
12
|
+
type: Pipe,
|
|
13
|
+
args: [{
|
|
14
|
+
name: 'isHttps',
|
|
15
|
+
standalone: true,
|
|
16
|
+
}]
|
|
17
|
+
}] });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtaHR0cHMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWZ0L3NyYy9saWIvcGlwZXMvaXMtaHR0cHMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sVUFBVSxDQUFDOztBQU10QyxNQUFNLE9BQU8sV0FBVztJQUN0QixTQUFTLENBQUMsS0FBYTtRQUNyQixPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQzs4R0FIVSxXQUFXOzRHQUFYLFdBQVc7OzJGQUFYLFdBQVc7a0JBSnZCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFNBQVM7b0JBQ2YsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtodHRwc1BhdHRlcm59IGZyb20gJy4uL2NvbnN0JztcblxuQFBpcGUoe1xuICBuYW1lOiAnaXNIdHRwcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIElzSHR0cHNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGh0dHBzUGF0dGVybi50ZXN0KHZhbHVlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
const unmaskNumber = 6;
|
|
4
|
+
const maskChar = '*';
|
|
5
|
+
export class MaskPipe {
|
|
6
|
+
/**
|
|
7
|
+
* Transforms the input string by masking characters based on the provided options.
|
|
8
|
+
*
|
|
9
|
+
* @param {string} value - The input string to be masked.
|
|
10
|
+
* @param {MaskOptions} [options={}] - Options for customizing the masking behavior.
|
|
11
|
+
* @returns {string} - The masked string.
|
|
12
|
+
*/
|
|
13
|
+
transform(value, options = {}) {
|
|
14
|
+
const { unmaskedPrefixLength = unmaskNumber, unmaskedSuffixLength = unmaskNumber, masked = true } = options;
|
|
15
|
+
if (value.length <= unmaskedPrefixLength + unmaskedSuffixLength ||
|
|
16
|
+
unmaskedPrefixLength < 0 ||
|
|
17
|
+
unmaskedSuffixLength < 0 ||
|
|
18
|
+
!masked) {
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
return value
|
|
22
|
+
.split('')
|
|
23
|
+
.map((char, i) => (i < unmaskedPrefixLength || i > value.length - unmaskedSuffixLength - 1 ? char : maskChar))
|
|
24
|
+
.join('');
|
|
25
|
+
}
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MaskPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
27
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: MaskPipe, isStandalone: true, name: "mask" }); }
|
|
28
|
+
}
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MaskPipe, decorators: [{
|
|
30
|
+
type: Pipe,
|
|
31
|
+
args: [{
|
|
32
|
+
name: 'mask',
|
|
33
|
+
standalone: true,
|
|
34
|
+
}]
|
|
35
|
+
}] });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpZnQvc3JjL2xpYi9waXBlcy9tYXNrLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7O0FBRWxELE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQztBQUN2QixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFZckIsTUFBTSxPQUFPLFFBQVE7SUFDbkI7Ozs7OztPQU1HO0lBQ0gsU0FBUyxDQUFDLEtBQWEsRUFBRSxVQUF1QixFQUFFO1FBQ2hELE1BQU0sRUFBQyxvQkFBb0IsR0FBRyxZQUFZLEVBQUUsb0JBQW9CLEdBQUcsWUFBWSxFQUFFLE1BQU0sR0FBRyxJQUFJLEVBQUMsR0FBRyxPQUFPLENBQUM7UUFFMUcsSUFDRSxLQUFLLENBQUMsTUFBTSxJQUFJLG9CQUFvQixHQUFHLG9CQUFvQjtZQUMzRCxvQkFBb0IsR0FBRyxDQUFDO1lBQ3hCLG9CQUFvQixHQUFHLENBQUM7WUFDeEIsQ0FBQyxNQUFNLEVBQ1A7WUFDQSxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsT0FBTyxLQUFLO2FBQ1QsS0FBSyxDQUFDLEVBQUUsQ0FBQzthQUNULEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLG9CQUFvQixJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM3RyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDZCxDQUFDOzhHQXhCVSxRQUFROzRHQUFSLFFBQVE7OzJGQUFSLFFBQVE7a0JBSnBCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLE1BQU07b0JBQ1osVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuY29uc3QgdW5tYXNrTnVtYmVyID0gNjtcbmNvbnN0IG1hc2tDaGFyID0gJyonO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1hc2tPcHRpb25zIHtcbiAgdW5tYXNrZWRQcmVmaXhMZW5ndGg/OiBudW1iZXI7XG4gIHVubWFza2VkU3VmZml4TGVuZ3RoPzogbnVtYmVyO1xuICBtYXNrZWQ/OiBib29sZWFuO1xufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdtYXNrJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTWFza1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgdGhlIGlucHV0IHN0cmluZyBieSBtYXNraW5nIGNoYXJhY3RlcnMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIG9wdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIFRoZSBpbnB1dCBzdHJpbmcgdG8gYmUgbWFza2VkLlxuICAgKiBAcGFyYW0ge01hc2tPcHRpb25zfSBbb3B0aW9ucz17fV0gLSBPcHRpb25zIGZvciBjdXN0b21pemluZyB0aGUgbWFza2luZyBiZWhhdmlvci5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgbWFza2VkIHN0cmluZy5cbiAgICovXG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBvcHRpb25zOiBNYXNrT3B0aW9ucyA9IHt9KTogc3RyaW5nIHtcbiAgICBjb25zdCB7dW5tYXNrZWRQcmVmaXhMZW5ndGggPSB1bm1hc2tOdW1iZXIsIHVubWFza2VkU3VmZml4TGVuZ3RoID0gdW5tYXNrTnVtYmVyLCBtYXNrZWQgPSB0cnVlfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAoXG4gICAgICB2YWx1ZS5sZW5ndGggPD0gdW5tYXNrZWRQcmVmaXhMZW5ndGggKyB1bm1hc2tlZFN1ZmZpeExlbmd0aCB8fFxuICAgICAgdW5tYXNrZWRQcmVmaXhMZW5ndGggPCAwIHx8XG4gICAgICB1bm1hc2tlZFN1ZmZpeExlbmd0aCA8IDAgfHxcbiAgICAgICFtYXNrZWRcbiAgICApIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVcbiAgICAgIC5zcGxpdCgnJylcbiAgICAgIC5tYXAoKGNoYXIsIGkpID0+IChpIDwgdW5tYXNrZWRQcmVmaXhMZW5ndGggfHwgaSA+IHZhbHVlLmxlbmd0aCAtIHVubWFza2VkU3VmZml4TGVuZ3RoIC0gMSA/IGNoYXIgOiBtYXNrQ2hhcikpXG4gICAgICAuam9pbignJyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Validators } from '@angular/forms';
|
|
2
|
+
import { of } from 'rxjs';
|
|
3
|
+
/**
|
|
4
|
+
* Provides a conditional validator that applies the specified validator functions only if the condition is met.
|
|
5
|
+
*
|
|
6
|
+
* @param condition A function that determines whether the validators should be applied.
|
|
7
|
+
* @param trueValidatorFn The validator function or an array of validator functions to be applied when the condition is true.
|
|
8
|
+
* @param falseValidatorFn Optional. The validator function or an array of validator functions to be applied when the condition is false.
|
|
9
|
+
* @returns A validator function that can be used with Angular Reactive Forms.
|
|
10
|
+
*/
|
|
11
|
+
export function ifValidator(condition, trueValidatorFn, falseValidatorFn) {
|
|
12
|
+
/**
|
|
13
|
+
* @param control The AbstractControl to validate.
|
|
14
|
+
* @returns Validation errors if the condition is met; otherwise, null.
|
|
15
|
+
*/
|
|
16
|
+
return (control) => {
|
|
17
|
+
if (!trueValidatorFn || !condition(control)) {
|
|
18
|
+
return composeValidators(control, falseValidatorFn);
|
|
19
|
+
}
|
|
20
|
+
return composeValidators(control, trueValidatorFn);
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Provides a conditional async validator that applies the specified async validator function only if the condition is met.
|
|
25
|
+
*
|
|
26
|
+
* @param condition A function that determines whether the async validator should be applied.
|
|
27
|
+
* @param validatorFn The async validator function to be applied conditionally.
|
|
28
|
+
* @returns An async validator function that can be used with Angular Reactive Forms.
|
|
29
|
+
*/
|
|
30
|
+
export function ifAsyncValidator(condition, validatorFn) {
|
|
31
|
+
/**
|
|
32
|
+
* @param control The AbstractControl to validate asynchronously.
|
|
33
|
+
* @returns An observable that emits validation errors if the condition is met; otherwise, emits null.
|
|
34
|
+
*/
|
|
35
|
+
return (control) => {
|
|
36
|
+
if (!validatorFn || !condition(control)) {
|
|
37
|
+
return of(null);
|
|
38
|
+
}
|
|
39
|
+
return validatorFn(control);
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Composes and applies the provided validators to the given AbstractControl.
|
|
44
|
+
*
|
|
45
|
+
* @param control The AbstractControl to validate.
|
|
46
|
+
* @param validatorFn The validator function or an array of validator functions to be applied.
|
|
47
|
+
* @returns Validation errors if the validators are applicable; otherwise, null.
|
|
48
|
+
*/
|
|
49
|
+
function composeValidators(control, validatorFn) {
|
|
50
|
+
if (!validatorFn) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
const validatorFns = Array.isArray(validatorFn) ? validatorFn : [validatorFn];
|
|
54
|
+
return Validators.compose(validatorFns)?.(control) || null;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpZnQvc3JjL2xpYi91dGlscy9mb3JtLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpRCxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQUMsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXhCOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUN6QixTQUFnRCxFQUNoRCxlQUE0QyxFQUM1QyxnQkFBOEM7SUFFOUM7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLE9BQXdCLEVBQXFCLEVBQUU7UUFDckQsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMzQyxPQUFPLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsT0FBTyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsU0FBZ0QsRUFDaEQsV0FBNkI7SUFFN0I7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLE9BQXdCLEVBQUUsRUFBRTtRQUNsQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3ZDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pCO1FBRUQsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQVMsaUJBQWlCLENBQ3hCLE9BQXdCLEVBQ3hCLFdBQW9EO0lBRXBELElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDaEIsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5RSxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvckZuLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtvZn0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogUHJvdmlkZXMgYSBjb25kaXRpb25hbCB2YWxpZGF0b3IgdGhhdCBhcHBsaWVzIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGZ1bmN0aW9ucyBvbmx5IGlmIHRoZSBjb25kaXRpb24gaXMgbWV0LlxuICpcbiAqIEBwYXJhbSBjb25kaXRpb24gQSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgdmFsaWRhdG9ycyBzaG91bGQgYmUgYXBwbGllZC5cbiAqIEBwYXJhbSB0cnVlVmFsaWRhdG9yRm4gVGhlIHZhbGlkYXRvciBmdW5jdGlvbiBvciBhbiBhcnJheSBvZiB2YWxpZGF0b3IgZnVuY3Rpb25zIHRvIGJlIGFwcGxpZWQgd2hlbiB0aGUgY29uZGl0aW9uIGlzIHRydWUuXG4gKiBAcGFyYW0gZmFsc2VWYWxpZGF0b3JGbiBPcHRpb25hbC4gVGhlIHZhbGlkYXRvciBmdW5jdGlvbiBvciBhbiBhcnJheSBvZiB2YWxpZGF0b3IgZnVuY3Rpb25zIHRvIGJlIGFwcGxpZWQgd2hlbiB0aGUgY29uZGl0aW9uIGlzIGZhbHNlLlxuICogQHJldHVybnMgQSB2YWxpZGF0b3IgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB3aXRoIEFuZ3VsYXIgUmVhY3RpdmUgRm9ybXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpZlZhbGlkYXRvcihcbiAgY29uZGl0aW9uOiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiBib29sZWFuLFxuICB0cnVlVmFsaWRhdG9yRm46IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXSxcbiAgZmFsc2VWYWxpZGF0b3JGbj86IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXSxcbik6IFZhbGlkYXRvckZuIHtcbiAgLyoqXG4gICAqIEBwYXJhbSBjb250cm9sIFRoZSBBYnN0cmFjdENvbnRyb2wgdG8gdmFsaWRhdGUuXG4gICAqIEByZXR1cm5zIFZhbGlkYXRpb24gZXJyb3JzIGlmIHRoZSBjb25kaXRpb24gaXMgbWV0OyBvdGhlcndpc2UsIG51bGwuXG4gICAqL1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRvcnMgfCBudWxsID0+IHtcbiAgICBpZiAoIXRydWVWYWxpZGF0b3JGbiB8fCAhY29uZGl0aW9uKGNvbnRyb2wpKSB7XG4gICAgICByZXR1cm4gY29tcG9zZVZhbGlkYXRvcnMoY29udHJvbCwgZmFsc2VWYWxpZGF0b3JGbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBvc2VWYWxpZGF0b3JzKGNvbnRyb2wsIHRydWVWYWxpZGF0b3JGbik7XG4gIH07XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYSBjb25kaXRpb25hbCBhc3luYyB2YWxpZGF0b3IgdGhhdCBhcHBsaWVzIHRoZSBzcGVjaWZpZWQgYXN5bmMgdmFsaWRhdG9yIGZ1bmN0aW9uIG9ubHkgaWYgdGhlIGNvbmRpdGlvbiBpcyBtZXQuXG4gKlxuICogQHBhcmFtIGNvbmRpdGlvbiBBIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBhc3luYyB2YWxpZGF0b3Igc2hvdWxkIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gdmFsaWRhdG9yRm4gVGhlIGFzeW5jIHZhbGlkYXRvciBmdW5jdGlvbiB0byBiZSBhcHBsaWVkIGNvbmRpdGlvbmFsbHkuXG4gKiBAcmV0dXJucyBBbiBhc3luYyB2YWxpZGF0b3IgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB3aXRoIEFuZ3VsYXIgUmVhY3RpdmUgRm9ybXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpZkFzeW5jVmFsaWRhdG9yKFxuICBjb25kaXRpb246IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IGJvb2xlYW4sXG4gIHZhbGlkYXRvckZuOiBBc3luY1ZhbGlkYXRvckZuLFxuKTogQXN5bmNWYWxpZGF0b3JGbiB7XG4gIC8qKlxuICAgKiBAcGFyYW0gY29udHJvbCBUaGUgQWJzdHJhY3RDb250cm9sIHRvIHZhbGlkYXRlIGFzeW5jaHJvbm91c2x5LlxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdmFsaWRhdGlvbiBlcnJvcnMgaWYgdGhlIGNvbmRpdGlvbiBpcyBtZXQ7IG90aGVyd2lzZSwgZW1pdHMgbnVsbC5cbiAgICovXG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgaWYgKCF2YWxpZGF0b3JGbiB8fCAhY29uZGl0aW9uKGNvbnRyb2wpKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRvckZuKGNvbnRyb2wpO1xuICB9O1xufVxuXG4vKipcbiAqIENvbXBvc2VzIGFuZCBhcHBsaWVzIHRoZSBwcm92aWRlZCB2YWxpZGF0b3JzIHRvIHRoZSBnaXZlbiBBYnN0cmFjdENvbnRyb2wuXG4gKlxuICogQHBhcmFtIGNvbnRyb2wgVGhlIEFic3RyYWN0Q29udHJvbCB0byB2YWxpZGF0ZS5cbiAqIEBwYXJhbSB2YWxpZGF0b3JGbiBUaGUgdmFsaWRhdG9yIGZ1bmN0aW9uIG9yIGFuIGFycmF5IG9mIHZhbGlkYXRvciBmdW5jdGlvbnMgdG8gYmUgYXBwbGllZC5cbiAqIEByZXR1cm5zIFZhbGlkYXRpb24gZXJyb3JzIGlmIHRoZSB2YWxpZGF0b3JzIGFyZSBhcHBsaWNhYmxlOyBvdGhlcndpc2UsIG51bGwuXG4gKi9cbmZ1bmN0aW9uIGNvbXBvc2VWYWxpZGF0b3JzKFxuICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsXG4gIHZhbGlkYXRvckZuOiBWYWxpZGF0b3JGbiB8IFZhbGlkYXRvckZuW10gfCB1bmRlZmluZWQsXG4pOiBWYWxpZGF0b3JzIHwgbnVsbCB7XG4gIGlmICghdmFsaWRhdG9yRm4pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHZhbGlkYXRvckZucyA9IEFycmF5LmlzQXJyYXkodmFsaWRhdG9yRm4pID8gdmFsaWRhdG9yRm4gOiBbdmFsaWRhdG9yRm5dO1xuICByZXR1cm4gVmFsaWRhdG9ycy5jb21wb3NlKHZhbGlkYXRvckZucyk/Lihjb250cm9sKSB8fCBudWxsO1xufVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './form.util';
|
|
2
|
+
export * from './is-empty.util';
|
|
3
|
+
export * from './is-equal.util';
|
|
4
|
+
export * from './pick-by.util';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGlmdC9zcmMvbGliL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9mb3JtLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9pcy1lbXB0eS51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vaXMtZXF1YWwudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3BpY2stYnkudXRpbCc7XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if a value is empty.
|
|
3
|
+
* @param {T | undefined | null} value - The value to check for emptiness.
|
|
4
|
+
* @returns {boolean} - Returns true if the value is empty, otherwise false.
|
|
5
|
+
*/
|
|
6
|
+
export function isEmpty(value) {
|
|
7
|
+
if (value == null)
|
|
8
|
+
return true;
|
|
9
|
+
if (typeof value === 'string' || Array.isArray(value)) {
|
|
10
|
+
return value.length === 0;
|
|
11
|
+
}
|
|
12
|
+
if (typeof value === 'object') {
|
|
13
|
+
return Object.keys(value).length === 0;
|
|
14
|
+
}
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZW1wdHkudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWZ0L3NyYy9saWIvdXRpbHMvaXMtZW1wdHkudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FBNkMsS0FBMkI7SUFDN0YsSUFBSSxLQUFLLElBQUksSUFBSTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRS9CLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDckQsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztLQUMzQjtJQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFnQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztLQUNuRTtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBlbXB0eS5cbiAqIEBwYXJhbSB7VCB8IHVuZGVmaW5lZCB8IG51bGx9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrIGZvciBlbXB0aW5lc3MuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBSZXR1cm5zIHRydWUgaWYgdGhlIHZhbHVlIGlzIGVtcHR5LCBvdGhlcndpc2UgZmFsc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VtcHR5PFQgZXh0ZW5kcyBvYmplY3QgfCBzdHJpbmcgfCBBcnJheTx1bmtub3duPj4odmFsdWU6IFQgfCB1bmRlZmluZWQgfCBudWxsKTogdmFsdWUgaXMgbnVsbCB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gdHJ1ZTtcblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPT09IDA7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if two values are deeply equal.
|
|
3
|
+
* @param {T} value1 - The first value to compare.
|
|
4
|
+
* @param {T} value2 - The second value to compare.
|
|
5
|
+
* @returns {boolean} - Returns true if the values are deeply equal, otherwise false.
|
|
6
|
+
*/
|
|
7
|
+
export function isEqual(value1, value2) {
|
|
8
|
+
if (value1 === value2)
|
|
9
|
+
return true;
|
|
10
|
+
if (typeof value1 !== 'object' || typeof value2 !== 'object' || value1 === null || value2 === null) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
const keys1 = Object.keys(value1);
|
|
14
|
+
const keys2 = Object.keys(value2);
|
|
15
|
+
if (keys1.length !== keys2.length)
|
|
16
|
+
return false;
|
|
17
|
+
for (const key of keys1) {
|
|
18
|
+
if (!keys2.includes(key) || !isEqual(value1[key], value2[key])) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZXF1YWwudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWZ0L3NyYy9saWIvdXRpbHMvaXMtZXF1YWwudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxPQUFPLENBQUksTUFBUyxFQUFFLE1BQVM7SUFDN0MsSUFBSSxNQUFNLEtBQUssTUFBTTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRW5DLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7UUFDbEcsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFtQixDQUFDO0lBQ3BELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFtQixDQUFDO0lBRXBELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRWhELEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxFQUFFO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUM5RCxPQUFPLEtBQUssQ0FBQztTQUNkO0tBQ0Y7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENoZWNrIGlmIHR3byB2YWx1ZXMgYXJlIGRlZXBseSBlcXVhbC5cbiAqIEBwYXJhbSB7VH0gdmFsdWUxIC0gVGhlIGZpcnN0IHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge1R9IHZhbHVlMiAtIFRoZSBzZWNvbmQgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgdmFsdWVzIGFyZSBkZWVwbHkgZXF1YWwsIG90aGVyd2lzZSBmYWxzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRXF1YWw8VD4odmFsdWUxOiBULCB2YWx1ZTI6IFQpOiBib29sZWFuIHtcbiAgaWYgKHZhbHVlMSA9PT0gdmFsdWUyKSByZXR1cm4gdHJ1ZTtcblxuICBpZiAodHlwZW9mIHZhbHVlMSAhPT0gJ29iamVjdCcgfHwgdHlwZW9mIHZhbHVlMiAhPT0gJ29iamVjdCcgfHwgdmFsdWUxID09PSBudWxsIHx8IHZhbHVlMiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGtleXMxID0gT2JqZWN0LmtleXModmFsdWUxKSBhcyBBcnJheTxrZXlvZiBUPjtcbiAgY29uc3Qga2V5czIgPSBPYmplY3Qua2V5cyh2YWx1ZTIpIGFzIEFycmF5PGtleW9mIFQ+O1xuXG4gIGlmIChrZXlzMS5sZW5ndGggIT09IGtleXMyLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMxKSB7XG4gICAgaWYgKCFrZXlzMi5pbmNsdWRlcyhrZXkpIHx8ICFpc0VxdWFsKHZhbHVlMVtrZXldLCB2YWx1ZTJba2V5XSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create an object composed of object properties that satisfy a given condition.
|
|
3
|
+
* @param {T} source - The object to pick properties from.
|
|
4
|
+
* @param {(value: T[keyof T], key: string) => boolean} predicate - The function invoked per property.
|
|
5
|
+
* @returns {Partial<T>} - Returns the new object.
|
|
6
|
+
*/
|
|
7
|
+
export function pickBy(source, predicate) {
|
|
8
|
+
const result = {};
|
|
9
|
+
for (const key in source) {
|
|
10
|
+
if (Object.prototype.hasOwnProperty.call(source, key) && predicate(source[key], key)) {
|
|
11
|
+
result[key] = source[key];
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGljay1ieS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpZnQvc3JjL2xpYi91dGlscy9waWNrLWJ5LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFJLE1BQVMsRUFBRSxTQUFzRDtJQUN6RixNQUFNLE1BQU0sR0FBZSxFQUFFLENBQUM7SUFFOUIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUU7UUFDeEIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDcEYsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMzQjtLQUNGO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlYXRlIGFuIG9iamVjdCBjb21wb3NlZCBvZiBvYmplY3QgcHJvcGVydGllcyB0aGF0IHNhdGlzZnkgYSBnaXZlbiBjb25kaXRpb24uXG4gKiBAcGFyYW0ge1R9IHNvdXJjZSAtIFRoZSBvYmplY3QgdG8gcGljayBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0geyh2YWx1ZTogVFtrZXlvZiBUXSwga2V5OiBzdHJpbmcpID0+IGJvb2xlYW59IHByZWRpY2F0ZSAtIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIHtQYXJ0aWFsPFQ+fSAtIFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwaWNrQnk8VD4oc291cmNlOiBULCBwcmVkaWNhdGU6ICh2YWx1ZTogVFtrZXlvZiBUXSwga2V5OiBzdHJpbmcpID0+IGJvb2xlYW4pOiBQYXJ0aWFsPFQ+IHtcbiAgY29uc3QgcmVzdWx0OiBQYXJ0aWFsPFQ+ID0ge307XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gc291cmNlKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkgJiYgcHJlZGljYXRlKHNvdXJjZVtrZXldLCBrZXkpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './unique.validator';
|
|
2
|
+
export * from './url.validator';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGlmdC9zcmMvbGliL3ZhbGlkYXRvcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi91bmlxdWUudmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdXJsLnZhbGlkYXRvcic7XG4iXX0=
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { FormArray } from '@angular/forms';
|
|
2
|
+
/**
|
|
3
|
+
* Validator for checking uniqueness across multiple fields in a FormArray or FormGroup.
|
|
4
|
+
*
|
|
5
|
+
* This validator can be applied to a FormArray or FormGroup containing the controls to be validated.
|
|
6
|
+
* It ensures that each control's value is unique among all other controls within the array or group.
|
|
7
|
+
*/
|
|
8
|
+
export class UniqueValidator {
|
|
9
|
+
/**
|
|
10
|
+
* Validator function to be attached to a FormArray or FormGroup.
|
|
11
|
+
*
|
|
12
|
+
* This validator checks for uniqueness of each control's value within the array or group.
|
|
13
|
+
*
|
|
14
|
+
* @param keySelector A function to select the key control for comparison (default is the control itself).
|
|
15
|
+
* @typeparam T The type of the control value.
|
|
16
|
+
*/
|
|
17
|
+
static unique(keySelector = (control) => control) {
|
|
18
|
+
return (formArray) => {
|
|
19
|
+
if (!(formArray instanceof FormArray)) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
const targetControls = formArray.controls.map(keySelector);
|
|
23
|
+
const valueControlMap = new Map();
|
|
24
|
+
const invalidControls = [];
|
|
25
|
+
for (const control of targetControls) {
|
|
26
|
+
const value = control.value;
|
|
27
|
+
if (value == null || String(value) === '' || String(value) === 'NaN') {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
const controlInMap = valueControlMap.get(value);
|
|
31
|
+
if (controlInMap) {
|
|
32
|
+
if (!invalidControls.includes(controlInMap)) {
|
|
33
|
+
invalidControls.push(controlInMap);
|
|
34
|
+
}
|
|
35
|
+
invalidControls.push(control);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
valueControlMap.set(value, control);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const notUniqueError = { notUnique: true };
|
|
42
|
+
// set errors manually for target controls
|
|
43
|
+
for (const control of targetControls) {
|
|
44
|
+
const errors = control.errors;
|
|
45
|
+
if (invalidControls.includes(control)) {
|
|
46
|
+
// set not unique error for invalid controls
|
|
47
|
+
control.setErrors(errors === null ? notUniqueError : { ...errors, ...notUniqueError });
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// remove not unique errors for valid controls
|
|
51
|
+
if (errors === null) {
|
|
52
|
+
control.setErrors(null);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
delete errors['notUnique'];
|
|
56
|
+
control.setErrors(Object.keys(errors).length > 0 ? errors : null);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return invalidControls.length > 0 ? notUniqueError : null;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcXVlLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWZ0L3NyYy9saWIvdmFsaWRhdG9ycy91bmlxdWUudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0IsU0FBUyxFQUFnQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpGOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFDMUI7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQ1gsY0FBZ0UsQ0FBQyxPQUEyQixFQUFFLEVBQUUsQ0FBQyxPQUFPO1FBRXhHLE9BQU8sQ0FBQyxTQUEwQixFQUEyQixFQUFFO1lBQzdELElBQUksQ0FBQyxDQUFDLFNBQVMsWUFBWSxTQUFTLENBQUMsRUFBRTtnQkFDckMsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNELE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1lBQ3pELE1BQU0sZUFBZSxHQUF5QixFQUFFLENBQUM7WUFFakQsS0FBSyxNQUFNLE9BQU8sSUFBSSxjQUFjLEVBQUU7Z0JBQ3BDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBRTVCLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLEVBQUU7b0JBQ3BFLFNBQVM7aUJBQ1Y7Z0JBRUQsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFaEQsSUFBSSxZQUFZLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFO3dCQUMzQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO3FCQUNwQztvQkFFRCxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUMvQjtxQkFBTTtvQkFDTCxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztpQkFDckM7YUFDRjtZQUVELE1BQU0sY0FBYyxHQUFHLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDO1lBRXpDLDBDQUEwQztZQUMxQyxLQUFLLE1BQU0sT0FBTyxJQUFJLGNBQWMsRUFBRTtnQkFDcEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFFOUIsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNyQyw0Q0FBNEM7b0JBQzVDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsTUFBTSxFQUFFLEdBQUcsY0FBYyxFQUFDLENBQUMsQ0FBQztpQkFDdEY7cUJBQU07b0JBQ0wsOENBQThDO29CQUM5QyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7d0JBQ25CLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ3pCO3lCQUFNO3dCQUNMLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO3dCQUMzQixPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDbkU7aUJBQ0Y7YUFDRjtZQUVELE9BQU8sZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzVELENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8qKlxuICogVmFsaWRhdG9yIGZvciBjaGVja2luZyB1bmlxdWVuZXNzIGFjcm9zcyBtdWx0aXBsZSBmaWVsZHMgaW4gYSBGb3JtQXJyYXkgb3IgRm9ybUdyb3VwLlxuICpcbiAqIFRoaXMgdmFsaWRhdG9yIGNhbiBiZSBhcHBsaWVkIHRvIGEgRm9ybUFycmF5IG9yIEZvcm1Hcm91cCBjb250YWluaW5nIHRoZSBjb250cm9scyB0byBiZSB2YWxpZGF0ZWQuXG4gKiBJdCBlbnN1cmVzIHRoYXQgZWFjaCBjb250cm9sJ3MgdmFsdWUgaXMgdW5pcXVlIGFtb25nIGFsbCBvdGhlciBjb250cm9scyB3aXRoaW4gdGhlIGFycmF5IG9yIGdyb3VwLlxuICovXG5leHBvcnQgY2xhc3MgVW5pcXVlVmFsaWRhdG9yIHtcbiAgLyoqXG4gICAqIFZhbGlkYXRvciBmdW5jdGlvbiB0byBiZSBhdHRhY2hlZCB0byBhIEZvcm1BcnJheSBvciBGb3JtR3JvdXAuXG4gICAqXG4gICAqIFRoaXMgdmFsaWRhdG9yIGNoZWNrcyBmb3IgdW5pcXVlbmVzcyBvZiBlYWNoIGNvbnRyb2wncyB2YWx1ZSB3aXRoaW4gdGhlIGFycmF5IG9yIGdyb3VwLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5U2VsZWN0b3IgQSBmdW5jdGlvbiB0byBzZWxlY3QgdGhlIGtleSBjb250cm9sIGZvciBjb21wYXJpc29uIChkZWZhdWx0IGlzIHRoZSBjb250cm9sIGl0c2VsZikuXG4gICAqIEB0eXBlcGFyYW0gVCBUaGUgdHlwZSBvZiB0aGUgY29udHJvbCB2YWx1ZS5cbiAgICovXG4gIHN0YXRpYyB1bmlxdWU8VD4oXG4gICAga2V5U2VsZWN0b3I6IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IEFic3RyYWN0Q29udHJvbDxUPiA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2w8VD4pID0+IGNvbnRyb2wsXG4gICk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGZvcm1BcnJheTogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgaWYgKCEoZm9ybUFycmF5IGluc3RhbmNlb2YgRm9ybUFycmF5KSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFyZ2V0Q29udHJvbHMgPSBmb3JtQXJyYXkuY29udHJvbHMubWFwKGtleVNlbGVjdG9yKTtcbiAgICAgIGNvbnN0IHZhbHVlQ29udHJvbE1hcCA9IG5ldyBNYXA8VCwgQWJzdHJhY3RDb250cm9sPFQ+PigpO1xuICAgICAgY29uc3QgaW52YWxpZENvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2w8VD5bXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGFyZ2V0Q29udHJvbHMpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IFN0cmluZyh2YWx1ZSkgPT09ICcnIHx8IFN0cmluZyh2YWx1ZSkgPT09ICdOYU4nKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb250cm9sSW5NYXAgPSB2YWx1ZUNvbnRyb2xNYXAuZ2V0KHZhbHVlKTtcblxuICAgICAgICBpZiAoY29udHJvbEluTWFwKSB7XG4gICAgICAgICAgaWYgKCFpbnZhbGlkQ29udHJvbHMuaW5jbHVkZXMoY29udHJvbEluTWFwKSkge1xuICAgICAgICAgICAgaW52YWxpZENvbnRyb2xzLnB1c2goY29udHJvbEluTWFwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpbnZhbGlkQ29udHJvbHMucHVzaChjb250cm9sKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWx1ZUNvbnRyb2xNYXAuc2V0KHZhbHVlLCBjb250cm9sKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBub3RVbmlxdWVFcnJvciA9IHtub3RVbmlxdWU6IHRydWV9O1xuXG4gICAgICAvLyBzZXQgZXJyb3JzIG1hbnVhbGx5IGZvciB0YXJnZXQgY29udHJvbHNcbiAgICAgIGZvciAoY29uc3QgY29udHJvbCBvZiB0YXJnZXRDb250cm9scykge1xuICAgICAgICBjb25zdCBlcnJvcnMgPSBjb250cm9sLmVycm9ycztcblxuICAgICAgICBpZiAoaW52YWxpZENvbnRyb2xzLmluY2x1ZGVzKGNvbnRyb2wpKSB7XG4gICAgICAgICAgLy8gc2V0IG5vdCB1bmlxdWUgZXJyb3IgZm9yIGludmFsaWQgY29udHJvbHNcbiAgICAgICAgICBjb250cm9sLnNldEVycm9ycyhlcnJvcnMgPT09IG51bGwgPyBub3RVbmlxdWVFcnJvciA6IHsuLi5lcnJvcnMsIC4uLm5vdFVuaXF1ZUVycm9yfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIG5vdCB1bmlxdWUgZXJyb3JzIGZvciB2YWxpZCBjb250cm9sc1xuICAgICAgICAgIGlmIChlcnJvcnMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgZXJyb3JzWydub3RVbmlxdWUnXTtcbiAgICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKE9iamVjdC5rZXlzKGVycm9ycykubGVuZ3RoID4gMCA/IGVycm9ycyA6IG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW52YWxpZENvbnRyb2xzLmxlbmd0aCA+IDAgPyBub3RVbmlxdWVFcnJvciA6IG51bGw7XG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { httpsPattern, urlPattern } from '../const';
|
|
2
|
+
export function urlValidator(control) {
|
|
3
|
+
if (!urlPattern.test(control.value)) {
|
|
4
|
+
return { invalidUrl: true };
|
|
5
|
+
}
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
export function httpsValidator(control) {
|
|
9
|
+
if (!httpsPattern.test(control.value)) {
|
|
10
|
+
return { invalidUrl: true };
|
|
11
|
+
}
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWZ0L3NyYy9saWIvdmFsaWRhdG9ycy91cmwudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRWxELE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBd0I7SUFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ25DLE9BQU8sRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFDLENBQUM7S0FDM0I7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE9BQXdCO0lBQ3JELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNyQyxPQUFPLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBQyxDQUFDO0tBQzNCO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtodHRwc1BhdHRlcm4sIHVybFBhdHRlcm59IGZyb20gJy4uL2NvbnN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIHVybFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghdXJsUGF0dGVybi50ZXN0KGNvbnRyb2wudmFsdWUpKSB7XG4gICAgcmV0dXJuIHtpbnZhbGlkVXJsOiB0cnVlfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh0dHBzVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFodHRwc1BhdHRlcm4udGVzdChjb250cm9sLnZhbHVlKSkge1xuICAgIHJldHVybiB7aW52YWxpZFVybDogdHJ1ZX07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWxpZnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGlmdC9zcmMvbmd4LWxpZnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of ngx-lift
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/models';
|
|
5
|
+
export * from './lib/operators';
|
|
6
|
+
export * from './lib/pipes';
|
|
7
|
+
export * from './lib/utils';
|
|
8
|
+
export * from './lib/validators';
|
|
9
|
+
// export * from './lib/signals';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1saWZ0L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGlDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LWxpZnRcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvb3BlcmF0b3JzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZhbGlkYXRvcnMnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvc2lnbmFscyc7XG4iXX0=
|