ngx-lift 1.10.2 → 19.0.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/README.md +5 -1
- package/fesm2022/ngx-lift.mjs +738 -194
- package/fesm2022/ngx-lift.mjs.map +1 -1
- package/index.d.ts +1638 -3
- package/package.json +6 -6
- package/esm2022/lib/const.mjs +0 -10
- package/esm2022/lib/models/async-state.model.mjs +0 -2
- package/esm2022/lib/models/index.mjs +0 -6
- package/esm2022/lib/models/kubernetes-list.model.mjs +0 -2
- package/esm2022/lib/models/kubernetes-object-condition.model.mjs +0 -2
- package/esm2022/lib/models/kubernetes-object-meta.model.mjs +0 -2
- package/esm2022/lib/models/kubernetes-object.model.mjs +0 -2
- package/esm2022/lib/operators/combine-latest-eager.operator.mjs +0 -48
- package/esm2022/lib/operators/create-async-state.operator.mjs +0 -61
- package/esm2022/lib/operators/distinct-on-change.operator.mjs +0 -80
- package/esm2022/lib/operators/index.mjs +0 -9
- package/esm2022/lib/operators/kubernetes-pagination.operator.mjs +0 -71
- package/esm2022/lib/operators/logger.operator.mjs +0 -21
- package/esm2022/lib/operators/poll.operator.mjs +0 -39
- package/esm2022/lib/operators/start-with-tap.operator.mjs +0 -15
- package/esm2022/lib/operators/switch-map-with-async-state.operator.mjs +0 -33
- package/esm2022/lib/pipes/array-join.pipe.mjs +0 -21
- package/esm2022/lib/pipes/byte-converter.pipe.mjs +0 -150
- package/esm2022/lib/pipes/index.mjs +0 -6
- package/esm2022/lib/pipes/is-https.pipe.mjs +0 -18
- package/esm2022/lib/pipes/mask.pipe.mjs +0 -36
- package/esm2022/lib/pipes/range.pipe.mjs +0 -19
- package/esm2022/lib/signals/combine-from.mjs +0 -81
- package/esm2022/lib/signals/computed-async.mjs +0 -63
- package/esm2022/lib/signals/create-trigger.mjs +0 -11
- package/esm2022/lib/signals/index.mjs +0 -7
- package/esm2022/lib/signals/inject-params.mjs +0 -35
- package/esm2022/lib/signals/inject-query-params.mjs +0 -53
- package/esm2022/lib/signals/merge-from.mjs +0 -71
- package/esm2022/lib/utils/difference-in-days.util.mjs +0 -25
- package/esm2022/lib/utils/form.util.mjs +0 -56
- package/esm2022/lib/utils/idle-detection/idle-detection.config.mjs +0 -7
- package/esm2022/lib/utils/idle-detection/idle-detection.module.mjs +0 -25
- package/esm2022/lib/utils/idle-detection/idle-detection.service.mjs +0 -190
- package/esm2022/lib/utils/idle-detection/index.mjs +0 -4
- package/esm2022/lib/utils/index.mjs +0 -10
- package/esm2022/lib/utils/internal.util.mjs +0 -13
- package/esm2022/lib/utils/is-empty.util.mjs +0 -49
- package/esm2022/lib/utils/is-equal.util.mjs +0 -24
- package/esm2022/lib/utils/is-promise.util.mjs +0 -5
- package/esm2022/lib/utils/omit-by.util.mjs +0 -12
- package/esm2022/lib/utils/pick-by.util.mjs +0 -16
- package/esm2022/lib/utils/range.util.mjs +0 -28
- package/esm2022/lib/utils/url.util.mjs +0 -34
- package/esm2022/lib/validators/date-range.validator.mjs +0 -58
- package/esm2022/lib/validators/index.mjs +0 -5
- package/esm2022/lib/validators/intersection.validator.mjs +0 -34
- package/esm2022/lib/validators/unique.validator.mjs +0 -64
- package/esm2022/lib/validators/url.validator.mjs +0 -14
- package/esm2022/ngx-lift.mjs +0 -5
- package/esm2022/public-api.mjs +0 -10
- package/lib/const.d.ts +0 -5
- package/lib/models/async-state.model.d.ts +0 -22
- package/lib/models/index.d.ts +0 -5
- package/lib/models/kubernetes-list.model.d.ts +0 -10
- package/lib/models/kubernetes-object-condition.model.d.ts +0 -28
- package/lib/models/kubernetes-object-meta.model.d.ts +0 -38
- package/lib/models/kubernetes-object.model.d.ts +0 -8
- package/lib/operators/combine-latest-eager.operator.d.ts +0 -7
- package/lib/operators/create-async-state.operator.d.ts +0 -64
- package/lib/operators/distinct-on-change.operator.d.ts +0 -55
- package/lib/operators/index.d.ts +0 -8
- package/lib/operators/kubernetes-pagination.operator.d.ts +0 -30
- package/lib/operators/logger.operator.d.ts +0 -11
- package/lib/operators/poll.operator.d.ts +0 -39
- package/lib/operators/start-with-tap.operator.d.ts +0 -10
- package/lib/operators/switch-map-with-async-state.operator.d.ts +0 -31
- package/lib/pipes/array-join.pipe.d.ts +0 -7
- package/lib/pipes/byte-converter.pipe.d.ts +0 -40
- package/lib/pipes/index.d.ts +0 -5
- package/lib/pipes/is-https.pipe.d.ts +0 -7
- package/lib/pipes/mask.pipe.d.ts +0 -19
- package/lib/pipes/range.pipe.d.ts +0 -10
- package/lib/signals/combine-from.d.ts +0 -25
- package/lib/signals/computed-async.d.ts +0 -29
- package/lib/signals/create-trigger.d.ts +0 -4
- package/lib/signals/index.d.ts +0 -6
- package/lib/signals/inject-params.d.ts +0 -63
- package/lib/signals/inject-query-params.d.ts +0 -71
- package/lib/signals/merge-from.d.ts +0 -13
- package/lib/utils/difference-in-days.util.d.ts +0 -19
- package/lib/utils/form.util.d.ts +0 -18
- package/lib/utils/idle-detection/idle-detection.config.d.ts +0 -5
- package/lib/utils/idle-detection/idle-detection.module.d.ts +0 -13
- package/lib/utils/idle-detection/idle-detection.service.d.ts +0 -119
- package/lib/utils/idle-detection/index.d.ts +0 -3
- package/lib/utils/index.d.ts +0 -9
- package/lib/utils/internal.util.d.ts +0 -4
- package/lib/utils/is-empty.util.d.ts +0 -10
- package/lib/utils/is-equal.util.d.ts +0 -7
- package/lib/utils/is-promise.util.d.ts +0 -1
- package/lib/utils/omit-by.util.d.ts +0 -7
- package/lib/utils/pick-by.util.d.ts +0 -7
- package/lib/utils/range.util.d.ts +0 -12
- package/lib/utils/url.util.d.ts +0 -24
- package/lib/validators/date-range.validator.d.ts +0 -19
- package/lib/validators/index.d.ts +0 -4
- package/lib/validators/intersection.validator.d.ts +0 -9
- package/lib/validators/unique.validator.d.ts +0 -18
- package/lib/validators/url.validator.d.ts +0 -3
- package/public-api.d.ts +0 -6
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { fqdnRegex, httpsPattern, ipRegex, urlPattern } from '../const';
|
|
2
|
-
/**
|
|
3
|
-
* Check if hostname is IP
|
|
4
|
-
* @param hostname new URL(your-url).hostname
|
|
5
|
-
* @returns true if hostname is a IP
|
|
6
|
-
*/
|
|
7
|
-
export function isIP(hostname) {
|
|
8
|
-
return ipRegex.test(hostname);
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Check if hostname is FQDN
|
|
12
|
-
* @param hostname new URL(your-url).hostname
|
|
13
|
-
* @returns true if hostname is a FQDN
|
|
14
|
-
*/
|
|
15
|
-
export function isFQDN(hostname) {
|
|
16
|
-
return fqdnRegex.test(hostname);
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Check if url is valid
|
|
20
|
-
* @param url
|
|
21
|
-
* @returns true if valid
|
|
22
|
-
*/
|
|
23
|
-
export function isURL(url) {
|
|
24
|
-
return urlPattern.test(url);
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Check if a url starts with https, the url must be a valid url.
|
|
28
|
-
* @param url
|
|
29
|
-
* @returns true if it's a https valid url
|
|
30
|
-
*/
|
|
31
|
-
export function isHttps(url) {
|
|
32
|
-
return httpsPattern.test(url);
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGlmdC9zcmMvbGliL3V0aWxzL3VybC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFdEU7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxJQUFJLENBQUMsUUFBZ0I7SUFDbkMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxRQUFnQjtJQUNyQyxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsS0FBSyxDQUFDLEdBQVc7SUFDL0IsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FBQyxHQUFXO0lBQ2pDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtmcWRuUmVnZXgsIGh0dHBzUGF0dGVybiwgaXBSZWdleCwgdXJsUGF0dGVybn0gZnJvbSAnLi4vY29uc3QnO1xuXG4vKipcbiAqIENoZWNrIGlmIGhvc3RuYW1lIGlzIElQXG4gKiBAcGFyYW0gaG9zdG5hbWUgbmV3IFVSTCh5b3VyLXVybCkuaG9zdG5hbWVcbiAqIEByZXR1cm5zIHRydWUgaWYgaG9zdG5hbWUgaXMgYSBJUFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJUChob3N0bmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBpcFJlZ2V4LnRlc3QoaG9zdG5hbWUpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGhvc3RuYW1lIGlzIEZRRE5cbiAqIEBwYXJhbSBob3N0bmFtZSBuZXcgVVJMKHlvdXItdXJsKS5ob3N0bmFtZVxuICogQHJldHVybnMgdHJ1ZSBpZiBob3N0bmFtZSBpcyBhIEZRRE5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRlFETihob3N0bmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBmcWRuUmVnZXgudGVzdChob3N0bmFtZSk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdXJsIGlzIHZhbGlkXG4gKiBAcGFyYW0gdXJsXG4gKiBAcmV0dXJucyB0cnVlIGlmIHZhbGlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1VSTCh1cmw6IHN0cmluZykge1xuICByZXR1cm4gdXJsUGF0dGVybi50ZXN0KHVybCk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB1cmwgc3RhcnRzIHdpdGggaHR0cHMsIHRoZSB1cmwgbXVzdCBiZSBhIHZhbGlkIHVybC5cbiAqIEBwYXJhbSB1cmxcbiAqIEByZXR1cm5zIHRydWUgaWYgaXQncyBhIGh0dHBzIHZhbGlkIHVybFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNIdHRwcyh1cmw6IHN0cmluZykge1xuICByZXR1cm4gaHR0cHNQYXR0ZXJuLnRlc3QodXJsKTtcbn1cbiJdfQ==
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { differenceInDays } from '../utils/difference-in-days.util';
|
|
2
|
-
/**
|
|
3
|
-
* Validates a date against a specified date range.
|
|
4
|
-
*
|
|
5
|
-
* @param {DateRangeOptions} options - The options for the date range validation.
|
|
6
|
-
* @returns {ValidatorFn} A function that validates a FormControl and returns an error if the date is out of range.
|
|
7
|
-
*/
|
|
8
|
-
export function dateRangeValidator(options) {
|
|
9
|
-
return (control) => {
|
|
10
|
-
// if control doesn't have any value, pass validation. Developer should use Angular required validator.
|
|
11
|
-
if (!control.value) {
|
|
12
|
-
return null;
|
|
13
|
-
}
|
|
14
|
-
// Parse the selected date from the control value
|
|
15
|
-
const selectedDate = new Date(control.value);
|
|
16
|
-
if (isNaN(selectedDate.getTime())) {
|
|
17
|
-
return { invalidDate: true };
|
|
18
|
-
}
|
|
19
|
-
const minDate = options.minDate ? new Date(options.minDate) : null;
|
|
20
|
-
const maxDate = options.maxDate ? new Date(options.maxDate) : null;
|
|
21
|
-
if (minDate) {
|
|
22
|
-
let errorCondition = false;
|
|
23
|
-
if (options.compareTime) {
|
|
24
|
-
errorCondition = options.minInclusive
|
|
25
|
-
? selectedDate.getTime() < minDate.getTime()
|
|
26
|
-
: selectedDate.getTime() <= minDate.getTime();
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
const diff = differenceInDays(selectedDate, minDate);
|
|
30
|
-
errorCondition = options.minInclusive ? diff < 0 : diff <= 0;
|
|
31
|
-
}
|
|
32
|
-
if (errorCondition) {
|
|
33
|
-
return {
|
|
34
|
-
minDate: minDate.toISOString(),
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
if (maxDate) {
|
|
39
|
-
let errorCondition = false;
|
|
40
|
-
if (options.compareTime) {
|
|
41
|
-
errorCondition = options.maxInclusive
|
|
42
|
-
? selectedDate.getTime() > maxDate.getTime()
|
|
43
|
-
: selectedDate.getTime() >= maxDate.getTime();
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
const diff = differenceInDays(selectedDate, maxDate);
|
|
47
|
-
errorCondition = options.maxInclusive ? diff > 0 : diff >= 0;
|
|
48
|
-
}
|
|
49
|
-
if (errorCondition) {
|
|
50
|
-
return {
|
|
51
|
-
maxDate: maxDate.toISOString(),
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return null;
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGlmdC9zcmMvbGliL3ZhbGlkYXRvcnMvZGF0ZS1yYW5nZS52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFhbEU7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBeUI7SUFDMUQsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7UUFDM0QsdUdBQXVHO1FBQ3ZHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsaURBQWlEO1FBQ2pELE1BQU0sWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3QyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFDLENBQUM7UUFDN0IsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ25FLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRW5FLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFFM0IsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3hCLGNBQWMsR0FBRyxPQUFPLENBQUMsWUFBWTtvQkFDbkMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFO29CQUM1QyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNyRCxjQUFjLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztZQUMvRCxDQUFDO1lBRUQsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDbkIsT0FBTztvQkFDTCxPQUFPLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRTtpQkFDL0IsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQztZQUUzQixJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDeEIsY0FBYyxHQUFHLE9BQU8sQ0FBQyxZQUFZO29CQUNuQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUU7b0JBQzVDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xELENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3JELGNBQWMsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO1lBQy9ELENBQUM7WUFFRCxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixPQUFPO29CQUNMLE9BQU8sRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFO2lCQUMvQixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtkaWZmZXJlbmNlSW5EYXlzfSBmcm9tICcuLi91dGlscy9kaWZmZXJlbmNlLWluLWRheXMudXRpbCc7XG5cbi8qKlxuICogSW50ZXJmYWNlIGRlZmluaW5nIHRoZSBvcHRpb25zIGZvciB0aGUgZGF0ZSByYW5nZSB2YWxpZGF0b3IuXG4gKi9cbmludGVyZmFjZSBEYXRlUmFuZ2VPcHRpb25zIHtcbiAgbWluRGF0ZT86IERhdGUgfCBzdHJpbmc7IC8vIE1pbmltdW0gYWxsb3dlZCBkYXRlXG4gIG1heERhdGU/OiBEYXRlIHwgc3RyaW5nOyAvLyBNYXhpbXVtIGFsbG93ZWQgZGF0ZVxuICBtaW5JbmNsdXNpdmU/OiBib29sZWFuOyAvLyBXaGV0aGVyIHRoZSBjb21wYXJpc29uIGZvciB0aGUgbWluaW11bSBkYXRlIGNhbiBpbmNsdWRlIHRoZSBleGFjdCBkYXRlXG4gIG1heEluY2x1c2l2ZT86IGJvb2xlYW47IC8vIFdoZXRoZXIgdGhlIGNvbXBhcmlzb24gZm9yIHRoZSBtYXhpbXVtIGRhdGUgY2FuIGluY2x1ZGUgdGhlIGV4YWN0IGRhdGVcbiAgY29tcGFyZVRpbWU/OiBib29sZWFuOyAvLyBXaGV0aGVyIHRvIGNvbXBhcmUgdGhlIHRpbWUgYXMgd2VsbC4gSWYgdHJ1ZSwgY29tcGFyaXNvbnMgd2lsbCBpbmNsdWRlIERhdGUgdGltZSBjb21wb25lbnRzOyBpZiBmYWxzZSwgdGltZSBwYXJ0cyB3aWxsIGJlIGlnbm9yZWRcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBkYXRlIGFnYWluc3QgYSBzcGVjaWZpZWQgZGF0ZSByYW5nZS5cbiAqXG4gKiBAcGFyYW0ge0RhdGVSYW5nZU9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGRhdGUgcmFuZ2UgdmFsaWRhdGlvbi5cbiAqIEByZXR1cm5zIHtWYWxpZGF0b3JGbn0gQSBmdW5jdGlvbiB0aGF0IHZhbGlkYXRlcyBhIEZvcm1Db250cm9sIGFuZCByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSBkYXRlIGlzIG91dCBvZiByYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGVSYW5nZVZhbGlkYXRvcihvcHRpb25zOiBEYXRlUmFuZ2VPcHRpb25zKTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAvLyBpZiBjb250cm9sIGRvZXNuJ3QgaGF2ZSBhbnkgdmFsdWUsIHBhc3MgdmFsaWRhdGlvbi4gRGV2ZWxvcGVyIHNob3VsZCB1c2UgQW5ndWxhciByZXF1aXJlZCB2YWxpZGF0b3IuXG4gICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBQYXJzZSB0aGUgc2VsZWN0ZWQgZGF0ZSBmcm9tIHRoZSBjb250cm9sIHZhbHVlXG4gICAgY29uc3Qgc2VsZWN0ZWREYXRlID0gbmV3IERhdGUoY29udHJvbC52YWx1ZSk7XG5cbiAgICBpZiAoaXNOYU4oc2VsZWN0ZWREYXRlLmdldFRpbWUoKSkpIHtcbiAgICAgIHJldHVybiB7aW52YWxpZERhdGU6IHRydWV9O1xuICAgIH1cblxuICAgIGNvbnN0IG1pbkRhdGUgPSBvcHRpb25zLm1pbkRhdGUgPyBuZXcgRGF0ZShvcHRpb25zLm1pbkRhdGUpIDogbnVsbDtcbiAgICBjb25zdCBtYXhEYXRlID0gb3B0aW9ucy5tYXhEYXRlID8gbmV3IERhdGUob3B0aW9ucy5tYXhEYXRlKSA6IG51bGw7XG5cbiAgICBpZiAobWluRGF0ZSkge1xuICAgICAgbGV0IGVycm9yQ29uZGl0aW9uID0gZmFsc2U7XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbXBhcmVUaW1lKSB7XG4gICAgICAgIGVycm9yQ29uZGl0aW9uID0gb3B0aW9ucy5taW5JbmNsdXNpdmVcbiAgICAgICAgICA/IHNlbGVjdGVkRGF0ZS5nZXRUaW1lKCkgPCBtaW5EYXRlLmdldFRpbWUoKVxuICAgICAgICAgIDogc2VsZWN0ZWREYXRlLmdldFRpbWUoKSA8PSBtaW5EYXRlLmdldFRpbWUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRpZmYgPSBkaWZmZXJlbmNlSW5EYXlzKHNlbGVjdGVkRGF0ZSwgbWluRGF0ZSk7XG4gICAgICAgIGVycm9yQ29uZGl0aW9uID0gb3B0aW9ucy5taW5JbmNsdXNpdmUgPyBkaWZmIDwgMCA6IGRpZmYgPD0gMDtcbiAgICAgIH1cblxuICAgICAgaWYgKGVycm9yQ29uZGl0aW9uKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWluRGF0ZTogbWluRGF0ZS50b0lTT1N0cmluZygpLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtYXhEYXRlKSB7XG4gICAgICBsZXQgZXJyb3JDb25kaXRpb24gPSBmYWxzZTtcblxuICAgICAgaWYgKG9wdGlvbnMuY29tcGFyZVRpbWUpIHtcbiAgICAgICAgZXJyb3JDb25kaXRpb24gPSBvcHRpb25zLm1heEluY2x1c2l2ZVxuICAgICAgICAgID8gc2VsZWN0ZWREYXRlLmdldFRpbWUoKSA+IG1heERhdGUuZ2V0VGltZSgpXG4gICAgICAgICAgOiBzZWxlY3RlZERhdGUuZ2V0VGltZSgpID49IG1heERhdGUuZ2V0VGltZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZGlmZiA9IGRpZmZlcmVuY2VJbkRheXMoc2VsZWN0ZWREYXRlLCBtYXhEYXRlKTtcbiAgICAgICAgZXJyb3JDb25kaXRpb24gPSBvcHRpb25zLm1heEluY2x1c2l2ZSA/IGRpZmYgPiAwIDogZGlmZiA+PSAwO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXJyb3JDb25kaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtYXhEYXRlOiBtYXhEYXRlLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG59XG4iXX0=
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export * from './date-range.validator';
|
|
2
|
-
export * from './intersection.validator';
|
|
3
|
-
export * from './unique.validator';
|
|
4
|
-
export * from './url.validator';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGlmdC9zcmMvbGliL3ZhbGlkYXRvcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGF0ZS1yYW5nZS52YWxpZGF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcnNlY3Rpb24udmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdW5pcXVlLnZhbGlkYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3VybC52YWxpZGF0b3InO1xuIl19
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A custom validator function that checks for intersection between two form controls. The two controls' values must be arrays.
|
|
3
|
-
*
|
|
4
|
-
* @param {string} controlName1 - The name of the first form control.
|
|
5
|
-
* @param {string} controlName2 - The name of the second form control.
|
|
6
|
-
* @returns {ValidatorFn} A function that validates the form group and returns an error if there is an intersection.
|
|
7
|
-
*/
|
|
8
|
-
export function intersectionValidator(controlName1, controlName2) {
|
|
9
|
-
return (formGroup) => {
|
|
10
|
-
const control1 = formGroup.get(controlName1);
|
|
11
|
-
const control2 = formGroup.get(controlName2);
|
|
12
|
-
if (!control1 || !control2) {
|
|
13
|
-
return null; // If either control is undefined or null
|
|
14
|
-
}
|
|
15
|
-
const value1 = control1.value;
|
|
16
|
-
const value2 = control2.value;
|
|
17
|
-
// Assuming both values are arrays
|
|
18
|
-
if (!Array.isArray(value1) || !Array.isArray(value2)) {
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
const intersection = value1.filter((value) => value2.includes(value));
|
|
22
|
-
if (intersection.length > 0) {
|
|
23
|
-
control1.setErrors({ intersection: true });
|
|
24
|
-
control2.setErrors({ intersection: true });
|
|
25
|
-
return { intersection: true };
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
control1.setErrors(null);
|
|
29
|
-
control2.setErrors(null);
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJzZWN0aW9uLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWZ0L3NyYy9saWIvdmFsaWRhdG9ycy9pbnRlcnNlY3Rpb24udmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBYSxZQUFvQixFQUFFLFlBQW9CO0lBQzFGLE9BQU8sQ0FBQyxTQUEwQixFQUEyQixFQUFFO1FBQzdELE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0MsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsQ0FBQyx5Q0FBeUM7UUFDeEQsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDOUIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUU5QixrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDckQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQVEsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXpFLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QixRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUMsWUFBWSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7WUFDekMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFDLFlBQVksRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sRUFBQyxZQUFZLEVBQUUsSUFBSSxFQUFDLENBQUM7UUFDOUIsQ0FBQzthQUFNLENBQUM7WUFDTixRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKipcbiAqIEEgY3VzdG9tIHZhbGlkYXRvciBmdW5jdGlvbiB0aGF0IGNoZWNrcyBmb3IgaW50ZXJzZWN0aW9uIGJldHdlZW4gdHdvIGZvcm0gY29udHJvbHMuIFRoZSB0d28gY29udHJvbHMnIHZhbHVlcyBtdXN0IGJlIGFycmF5cy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udHJvbE5hbWUxIC0gVGhlIG5hbWUgb2YgdGhlIGZpcnN0IGZvcm0gY29udHJvbC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250cm9sTmFtZTIgLSBUaGUgbmFtZSBvZiB0aGUgc2Vjb25kIGZvcm0gY29udHJvbC5cbiAqIEByZXR1cm5zIHtWYWxpZGF0b3JGbn0gQSBmdW5jdGlvbiB0aGF0IHZhbGlkYXRlcyB0aGUgZm9ybSBncm91cCBhbmQgcmV0dXJucyBhbiBlcnJvciBpZiB0aGVyZSBpcyBhbiBpbnRlcnNlY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnRlcnNlY3Rpb25WYWxpZGF0b3I8VCA9IHN0cmluZz4oY29udHJvbE5hbWUxOiBzdHJpbmcsIGNvbnRyb2xOYW1lMjogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGZvcm1Hcm91cDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGNvbnN0IGNvbnRyb2wxID0gZm9ybUdyb3VwLmdldChjb250cm9sTmFtZTEpO1xuICAgIGNvbnN0IGNvbnRyb2wyID0gZm9ybUdyb3VwLmdldChjb250cm9sTmFtZTIpO1xuXG4gICAgaWYgKCFjb250cm9sMSB8fCAhY29udHJvbDIpIHtcbiAgICAgIHJldHVybiBudWxsOyAvLyBJZiBlaXRoZXIgY29udHJvbCBpcyB1bmRlZmluZWQgb3IgbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlMSA9IGNvbnRyb2wxLnZhbHVlO1xuICAgIGNvbnN0IHZhbHVlMiA9IGNvbnRyb2wyLnZhbHVlO1xuXG4gICAgLy8gQXNzdW1pbmcgYm90aCB2YWx1ZXMgYXJlIGFycmF5c1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZTEpIHx8ICFBcnJheS5pc0FycmF5KHZhbHVlMikpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGludGVyc2VjdGlvbiA9IHZhbHVlMS5maWx0ZXIoKHZhbHVlOiBUKSA9PiB2YWx1ZTIuaW5jbHVkZXModmFsdWUpKTtcblxuICAgIGlmIChpbnRlcnNlY3Rpb24ubGVuZ3RoID4gMCkge1xuICAgICAgY29udHJvbDEuc2V0RXJyb3JzKHtpbnRlcnNlY3Rpb246IHRydWV9KTtcbiAgICAgIGNvbnRyb2wyLnNldEVycm9ycyh7aW50ZXJzZWN0aW9uOiB0cnVlfSk7XG4gICAgICByZXR1cm4ge2ludGVyc2VjdGlvbjogdHJ1ZX07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRyb2wxLnNldEVycm9ycyhudWxsKTtcbiAgICAgIGNvbnRyb2wyLnNldEVycm9ycyhudWxsKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1,64 +0,0 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcXVlLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWZ0L3NyYy9saWIvdmFsaWRhdG9ycy91bmlxdWUudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0IsU0FBUyxFQUFnQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpGOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFDMUI7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQ1gsY0FBZ0UsQ0FBQyxPQUEyQixFQUFFLEVBQUUsQ0FBQyxPQUFPO1FBRXhHLE9BQU8sQ0FBQyxTQUEwQixFQUEyQixFQUFFO1lBQzdELElBQUksQ0FBQyxDQUFDLFNBQVMsWUFBWSxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUN0QyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFFRCxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMzRCxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztZQUN6RCxNQUFNLGVBQWUsR0FBeUIsRUFBRSxDQUFDO1lBRWpELEtBQUssTUFBTSxPQUFPLElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQ3JDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBRTVCLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDckUsU0FBUztnQkFDWCxDQUFDO2dCQUVELE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRWhELElBQUksWUFBWSxFQUFFLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7d0JBQzVDLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ3JDLENBQUM7b0JBRUQsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDaEMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUN0QyxDQUFDO1lBQ0gsQ0FBQztZQUVELE1BQU0sY0FBYyxHQUFHLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDO1lBRXpDLDBDQUEwQztZQUMxQyxLQUFLLE1BQU0sT0FBTyxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUU5QixJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDdEMsNENBQTRDO29CQUM1QyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLGNBQWMsRUFBQyxDQUFDLENBQUM7Z0JBQ3ZGLENBQUM7cUJBQU0sQ0FBQztvQkFDTiw4Q0FBOEM7b0JBQzlDLElBQUksTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO3dCQUNwQixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMxQixDQUFDO3lCQUFNLENBQUM7d0JBQ04sT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7d0JBQzNCLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNwRSxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDNUQsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiBWYWxpZGF0b3IgZm9yIGNoZWNraW5nIHVuaXF1ZW5lc3MgYWNyb3NzIG11bHRpcGxlIGZpZWxkcyBpbiBhIEZvcm1BcnJheSBvciBGb3JtR3JvdXAuXG4gKlxuICogVGhpcyB2YWxpZGF0b3IgY2FuIGJlIGFwcGxpZWQgdG8gYSBGb3JtQXJyYXkgb3IgRm9ybUdyb3VwIGNvbnRhaW5pbmcgdGhlIGNvbnRyb2xzIHRvIGJlIHZhbGlkYXRlZC5cbiAqIEl0IGVuc3VyZXMgdGhhdCBlYWNoIGNvbnRyb2wncyB2YWx1ZSBpcyB1bmlxdWUgYW1vbmcgYWxsIG90aGVyIGNvbnRyb2xzIHdpdGhpbiB0aGUgYXJyYXkgb3IgZ3JvdXAuXG4gKi9cbmV4cG9ydCBjbGFzcyBVbmlxdWVWYWxpZGF0b3Ige1xuICAvKipcbiAgICogVmFsaWRhdG9yIGZ1bmN0aW9uIHRvIGJlIGF0dGFjaGVkIHRvIGEgRm9ybUFycmF5IG9yIEZvcm1Hcm91cC5cbiAgICpcbiAgICogVGhpcyB2YWxpZGF0b3IgY2hlY2tzIGZvciB1bmlxdWVuZXNzIG9mIGVhY2ggY29udHJvbCdzIHZhbHVlIHdpdGhpbiB0aGUgYXJyYXkgb3IgZ3JvdXAuXG4gICAqXG4gICAqIEBwYXJhbSBrZXlTZWxlY3RvciBBIGZ1bmN0aW9uIHRvIHNlbGVjdCB0aGUga2V5IGNvbnRyb2wgZm9yIGNvbXBhcmlzb24gKGRlZmF1bHQgaXMgdGhlIGNvbnRyb2wgaXRzZWxmKS5cbiAgICogQHR5cGVwYXJhbSBUIFRoZSB0eXBlIG9mIHRoZSBjb250cm9sIHZhbHVlLlxuICAgKi9cbiAgc3RhdGljIHVuaXF1ZTxUPihcbiAgICBrZXlTZWxlY3RvcjogKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4gQWJzdHJhY3RDb250cm9sPFQ+ID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxUPikgPT4gY29udHJvbCxcbiAgKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoZm9ybUFycmF5OiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBpZiAoIShmb3JtQXJyYXkgaW5zdGFuY2VvZiBGb3JtQXJyYXkpKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXJnZXRDb250cm9scyA9IGZvcm1BcnJheS5jb250cm9scy5tYXAoa2V5U2VsZWN0b3IpO1xuICAgICAgY29uc3QgdmFsdWVDb250cm9sTWFwID0gbmV3IE1hcDxULCBBYnN0cmFjdENvbnRyb2w8VD4+KCk7XG4gICAgICBjb25zdCBpbnZhbGlkQ29udHJvbHM6IEFic3RyYWN0Q29udHJvbDxUPltdID0gW107XG5cbiAgICAgIGZvciAoY29uc3QgY29udHJvbCBvZiB0YXJnZXRDb250cm9scykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwgfHwgU3RyaW5nKHZhbHVlKSA9PT0gJycgfHwgU3RyaW5nKHZhbHVlKSA9PT0gJ05hTicpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbnRyb2xJbk1hcCA9IHZhbHVlQ29udHJvbE1hcC5nZXQodmFsdWUpO1xuXG4gICAgICAgIGlmIChjb250cm9sSW5NYXApIHtcbiAgICAgICAgICBpZiAoIWludmFsaWRDb250cm9scy5pbmNsdWRlcyhjb250cm9sSW5NYXApKSB7XG4gICAgICAgICAgICBpbnZhbGlkQ29udHJvbHMucHVzaChjb250cm9sSW5NYXApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGludmFsaWRDb250cm9scy5wdXNoKGNvbnRyb2wpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlQ29udHJvbE1hcC5zZXQodmFsdWUsIGNvbnRyb2wpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5vdFVuaXF1ZUVycm9yID0ge25vdFVuaXF1ZTogdHJ1ZX07XG5cbiAgICAgIC8vIHNldCBlcnJvcnMgbWFudWFsbHkgZm9yIHRhcmdldCBjb250cm9sc1xuICAgICAgZm9yIChjb25zdCBjb250cm9sIG9mIHRhcmdldENvbnRyb2xzKSB7XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IGNvbnRyb2wuZXJyb3JzO1xuXG4gICAgICAgIGlmIChpbnZhbGlkQ29udHJvbHMuaW5jbHVkZXMoY29udHJvbCkpIHtcbiAgICAgICAgICAvLyBzZXQgbm90IHVuaXF1ZSBlcnJvciBmb3IgaW52YWxpZCBjb250cm9sc1xuICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKGVycm9ycyA9PT0gbnVsbCA/IG5vdFVuaXF1ZUVycm9yIDogey4uLmVycm9ycywgLi4ubm90VW5pcXVlRXJyb3J9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyByZW1vdmUgbm90IHVuaXF1ZSBlcnJvcnMgZm9yIHZhbGlkIGNvbnRyb2xzXG4gICAgICAgICAgaWYgKGVycm9ycyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgY29udHJvbC5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSBlcnJvcnNbJ25vdFVuaXF1ZSddO1xuICAgICAgICAgICAgY29udHJvbC5zZXRFcnJvcnMoT2JqZWN0LmtleXMoZXJyb3JzKS5sZW5ndGggPiAwID8gZXJyb3JzIDogbnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbnZhbGlkQ29udHJvbHMubGVuZ3RoID4gMCA/IG5vdFVuaXF1ZUVycm9yIDogbnVsbDtcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -1,14 +0,0 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWZ0L3NyYy9saWIvdmFsaWRhdG9ycy91cmwudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRWxELE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBd0I7SUFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDcEMsT0FBTyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUM1QixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUF3QjtJQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0QyxPQUFPLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBQyxDQUFDO0lBQzVCLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge2h0dHBzUGF0dGVybiwgdXJsUGF0dGVybn0gZnJvbSAnLi4vY29uc3QnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXJsVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCF1cmxQYXR0ZXJuLnRlc3QoY29udHJvbC52YWx1ZSkpIHtcbiAgICByZXR1cm4ge2ludmFsaWRVcmw6IHRydWV9O1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHR0cHNWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWh0dHBzUGF0dGVybi50ZXN0KGNvbnRyb2wudmFsdWUpKSB7XG4gICAgcmV0dXJuIHtpbnZhbGlkVXJsOiB0cnVlfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbiJdfQ==
|
package/esm2022/ngx-lift.mjs
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWxpZnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGlmdC9zcmMvbmd4LWxpZnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
package/esm2022/public-api.mjs
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
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/signals';
|
|
8
|
-
export * from './lib/utils';
|
|
9
|
-
export * from './lib/validators';
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1saWZ0L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3gtbGlmdFxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9vcGVyYXRvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2lnbmFscyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92YWxpZGF0b3JzJztcbiJdfQ==
|
package/lib/const.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { HttpErrorResponse } from '@angular/common/http';
|
|
2
|
-
/**
|
|
3
|
-
* Represents the state of an asynchronous operation, including loading, error, and data.
|
|
4
|
-
* @template T - The type of the data in the response.
|
|
5
|
-
* @template E - The type of the error response, defaulting to `HttpErrorResponse`.
|
|
6
|
-
*/
|
|
7
|
-
export interface AsyncState<T, E = HttpErrorResponse> {
|
|
8
|
-
/**
|
|
9
|
-
* Indicates whether the asynchronous operation is in progress.
|
|
10
|
-
*/
|
|
11
|
-
loading: boolean;
|
|
12
|
-
/**
|
|
13
|
-
* Represents any error that occurred during the asynchronous operation.
|
|
14
|
-
* Null if no error occurred.
|
|
15
|
-
*/
|
|
16
|
-
error: E | null;
|
|
17
|
-
/**
|
|
18
|
-
* The data resulting from the asynchronous operation.
|
|
19
|
-
* Null if the operation has not completed successfully.
|
|
20
|
-
*/
|
|
21
|
-
data: T | null;
|
|
22
|
-
}
|
package/lib/models/index.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
export interface KubernetesObjectCondition<T = string, R = string> {
|
|
2
|
-
/**
|
|
3
|
-
* lastTransitionTime is a string representing the last time the condition transitioned from one status to another.
|
|
4
|
-
* If the underlying condition change is unknown, the time when the API field changed is used.
|
|
5
|
-
*/
|
|
6
|
-
lastTransitionTime: string;
|
|
7
|
-
/**
|
|
8
|
-
* message is a string providing a human - readable message about the transition. It can be an empty string.
|
|
9
|
-
*/
|
|
10
|
-
message: string;
|
|
11
|
-
/**
|
|
12
|
-
* reason is a string containing a programmatic identifier indicating the reason for the condition's last transition.
|
|
13
|
-
* Producers of specific condition types may define expected values and meanings for this field.
|
|
14
|
-
*/
|
|
15
|
-
reason: R;
|
|
16
|
-
/**
|
|
17
|
-
* status is an enum with possible values 'True', 'False', or 'Unknown' representing the current status of the condition.
|
|
18
|
-
*/
|
|
19
|
-
status: 'True' | 'False' | 'Unknown';
|
|
20
|
-
/**
|
|
21
|
-
* type is a string representing the type of condition in CamelCase or in foo.example.com/CamelCase format.
|
|
22
|
-
*/
|
|
23
|
-
type: T;
|
|
24
|
-
/**
|
|
25
|
-
* observedGeneration is an integer representing the.metadata.generation that the condition was set based upon.
|
|
26
|
-
*/
|
|
27
|
-
observedGeneration?: number;
|
|
28
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#objectmeta-v1-meta
|
|
3
|
-
*/
|
|
4
|
-
export interface KubernetesObjectMetaV1 {
|
|
5
|
-
name: string;
|
|
6
|
-
namespace?: string;
|
|
7
|
-
selfLink?: string;
|
|
8
|
-
uid?: string;
|
|
9
|
-
resourceVersion?: string;
|
|
10
|
-
generation?: number;
|
|
11
|
-
creationTimestamp?: string;
|
|
12
|
-
deletionTimestamp?: string;
|
|
13
|
-
deletionGracePeriodSeconds?: number;
|
|
14
|
-
labels?: Record<string, string>;
|
|
15
|
-
annotations?: Record<string, string>;
|
|
16
|
-
ownerReferences?: OwnerReference[];
|
|
17
|
-
finalizers?: string[];
|
|
18
|
-
clusterName?: string;
|
|
19
|
-
managedFields?: ManagedField[];
|
|
20
|
-
}
|
|
21
|
-
interface OwnerReference {
|
|
22
|
-
apiVersion: string;
|
|
23
|
-
kind: string;
|
|
24
|
-
name: string;
|
|
25
|
-
uid: string;
|
|
26
|
-
controller: boolean;
|
|
27
|
-
blockOwnerDeletion?: boolean;
|
|
28
|
-
}
|
|
29
|
-
interface ManagedField {
|
|
30
|
-
apiVersion: string;
|
|
31
|
-
fieldsType: string;
|
|
32
|
-
fieldsV1: Record<string, unknown>;
|
|
33
|
-
manager: string;
|
|
34
|
-
operation: string;
|
|
35
|
-
subresource?: string;
|
|
36
|
-
time: string;
|
|
37
|
-
}
|
|
38
|
-
export {};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
|
-
export declare function combineLatestEager<T extends Observable<unknown>[]>(sources: T, startWithNullForAll?: boolean): Observable<{
|
|
3
|
-
[K in keyof T]: T[K] extends Observable<infer U> ? U | null : never;
|
|
4
|
-
}>;
|
|
5
|
-
export declare function combineLatestEager<T extends Record<string, Observable<unknown>>>(sources: T, startWithNullForAll?: boolean): Observable<{
|
|
6
|
-
[K in keyof T]: T[K] extends Observable<infer U> ? U | null : never;
|
|
7
|
-
}>;
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { HttpErrorResponse } from '@angular/common/http';
|
|
2
|
-
import { Observable, TapObserver, UnaryFunction } from 'rxjs';
|
|
3
|
-
import { AsyncState } from '../models/async-state.model';
|
|
4
|
-
/**
|
|
5
|
-
* createAsyncState transforms an Observable of type T into an Observable of AsyncState<T>.
|
|
6
|
-
* AsyncState<T> represents the loading, error, and data states for asynchronous operations.
|
|
7
|
-
*
|
|
8
|
-
* @template T - The type of the data in the observable.
|
|
9
|
-
* @template E - The type of the error that can occur.
|
|
10
|
-
*
|
|
11
|
-
* @param {Partial<Observer<T>> | ((value: T) => void)} [observerOrNextForOrigin] -
|
|
12
|
-
* An optional parameter that can be a partial TapObserver<T> or a function to handle the next value or error in the original Observable.
|
|
13
|
-
*
|
|
14
|
-
* @returns {UnaryFunction<Observable<T>, Observable<AsyncState<T, E>>>} -
|
|
15
|
-
* A function that transforms an observable stream into an asynchronous state.
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* Usage 1: Simple request
|
|
19
|
-
* data$ = this.shopService.products$.pipe(
|
|
20
|
-
* createAsyncState({
|
|
21
|
-
* next: res => console.log('Side effect if success: ' + res),
|
|
22
|
-
* error: error => console.error('Side effect if error: ' + error.message)
|
|
23
|
-
* })
|
|
24
|
-
* );
|
|
25
|
-
*
|
|
26
|
-
* Usage 2: Dependent requests
|
|
27
|
-
* data$ = firstCall$.pipe(
|
|
28
|
-
* switchMap(() => this.shopService.products$),
|
|
29
|
-
* createAsyncState()
|
|
30
|
-
* );
|
|
31
|
-
*
|
|
32
|
-
* Another implementation thought when refreshing the data: instead of startWith, `merge of` emit as the trigger
|
|
33
|
-
*
|
|
34
|
-
* subject.pipe(
|
|
35
|
-
* switchMap(() => merge(
|
|
36
|
-
* of({ loading: true, error: null, data: null }),
|
|
37
|
-
* this.service.apiCall().pipe(
|
|
38
|
-
* map(data => ({ loading: false, error: null, data })),
|
|
39
|
-
* tap({
|
|
40
|
-
* next: res => callback?.(res.data),
|
|
41
|
-
* error: err => errorCallback?.(err),
|
|
42
|
-
* }),
|
|
43
|
-
* catchError(error => of({ loading: false, error, data: null })),
|
|
44
|
-
* ),
|
|
45
|
-
* ))
|
|
46
|
-
* )
|
|
47
|
-
*
|
|
48
|
-
* Usage 3: provide initialValue
|
|
49
|
-
*
|
|
50
|
-
* import {createAsyncState} from 'ngx-lift';
|
|
51
|
-
* import {noop} from 'rxjs';
|
|
52
|
-
*
|
|
53
|
-
* private userService = inject(UserService);
|
|
54
|
-
* private location = inject(Location);
|
|
55
|
-
*
|
|
56
|
-
* userState$ = this.userService
|
|
57
|
-
* .getUserById(1)
|
|
58
|
-
* .pipe(createAsyncState<User>(noop, {loading: false, error: null, data: this.location.getState()}));
|
|
59
|
-
*/
|
|
60
|
-
export declare function createAsyncState<T, E = HttpErrorResponse>(observerOrNextForOrigin?: Partial<TapObserver<T>> | ((value: T) => void), initialValue?: {
|
|
61
|
-
loading: boolean;
|
|
62
|
-
error: E | null;
|
|
63
|
-
data: T | null;
|
|
64
|
-
}): UnaryFunction<Observable<T>, Observable<AsyncState<T, E>>>;
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { OperatorFunction } from 'rxjs';
|
|
2
|
-
/**
|
|
3
|
-
* Creates an operator function for RxJS Observables that filters out consecutive
|
|
4
|
-
* values that are considered equal according to a provided comparator function,
|
|
5
|
-
* and invokes a callback when a distinct value is encountered.
|
|
6
|
-
*
|
|
7
|
-
* @template T - The type of elements emitted by the observable.
|
|
8
|
-
* @param {(previousValue: T, currentValue: T) => void} onChangeCallback
|
|
9
|
-
* A callback function that will be invoked when a distinct value is encountered.
|
|
10
|
-
* It receives the previous distinct value and the current value.
|
|
11
|
-
* @param {(previousValue: T, currentValue: T) => boolean} [comparator]
|
|
12
|
-
* A function that determines if two values are considered equal.
|
|
13
|
-
* Defaults to a function that performs strict equality (===) comparison.
|
|
14
|
-
* @returns {OperatorFunction<T, T>} - The RxJS operator function.
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* Example 1:
|
|
18
|
-
* const source$ = new Observable<number>((observer) => {
|
|
19
|
-
* observer.next(1);
|
|
20
|
-
* observer.next(2);
|
|
21
|
-
* observer.next(2);
|
|
22
|
-
* observer.next(3);
|
|
23
|
-
* observer.next(3);
|
|
24
|
-
* observer.next(4);
|
|
25
|
-
* observer.next(5);
|
|
26
|
-
* observer.complete();
|
|
27
|
-
* });
|
|
28
|
-
*
|
|
29
|
-
* const distinctOnChange$ = source$.pipe(
|
|
30
|
-
* distinctOnChange(
|
|
31
|
-
* (prev, curr) => console.log(`Value changed from ${prev} to: ${curr}`),
|
|
32
|
-
* (prev, curr) => prev === curr,
|
|
33
|
-
* ),
|
|
34
|
-
* );
|
|
35
|
-
* distinctOnChange$.subscribe((res) => console.log(res));
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* Example 2:
|
|
39
|
-
* distinctOnChange<RDEValue<OseInstance>[]>(
|
|
40
|
-
* () => {
|
|
41
|
-
* this.store.dispatch(
|
|
42
|
-
* addToast({
|
|
43
|
-
* toast: {
|
|
44
|
-
* type: ToastType.SUCCESS,
|
|
45
|
-
* title: this.l10nService.getMessage('STATUS_CHANGE'),
|
|
46
|
-
* description: this.l10nService.getMessage('STATUS_CHANGE_DESC'),
|
|
47
|
-
* },
|
|
48
|
-
* }),
|
|
49
|
-
* );
|
|
50
|
-
* },
|
|
51
|
-
* (prev, current) =>
|
|
52
|
-
* prev.every((prevInstance, index) => instanceComparator(prevInstance.entity, current[index].entity)),
|
|
53
|
-
* );
|
|
54
|
-
*/
|
|
55
|
-
export declare function distinctOnChange<T>(onChangeCallback: (previousValue: T, currentValue: T) => void, comparator?: (previousValue: T, currentValue: T) => boolean): OperatorFunction<T, T>;
|
package/lib/operators/index.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export * from './combine-latest-eager.operator';
|
|
2
|
-
export * from './create-async-state.operator';
|
|
3
|
-
export * from './distinct-on-change.operator';
|
|
4
|
-
export * from './kubernetes-pagination.operator';
|
|
5
|
-
export * from './logger.operator';
|
|
6
|
-
export * from './poll.operator';
|
|
7
|
-
export * from './start-with-tap.operator';
|
|
8
|
-
export * from './switch-map-with-async-state.operator';
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { Observable, OperatorFunction } from 'rxjs';
|
|
3
|
-
import { KubernetesList, KubernetesObject } from '../models';
|
|
4
|
-
/**
|
|
5
|
-
* Fetches paginated Kubernetes resources by continually making requests
|
|
6
|
-
* until all pages have been retrieved, and aggregates the items from all pages
|
|
7
|
-
* into a single KubernetesList.
|
|
8
|
-
*
|
|
9
|
-
* @template T The type of the items contained within the KubernetesList.
|
|
10
|
-
* @param http The HttpClient instance used to make the HTTP requests.
|
|
11
|
-
* @param endpoint The API endpoint to fetch the resources from.
|
|
12
|
-
* @param initialParams Optional initial parameters to include in the request.
|
|
13
|
-
* Can include query parameters like filters and pagination settings.
|
|
14
|
-
* `limit` and `continue` parameters are parameters for kubernetes
|
|
15
|
-
* @returns An observable that emits a single KubernetesList containing all items from all pages.
|
|
16
|
-
*/
|
|
17
|
-
export declare function aggregatePaginatedKubernetesResources<T extends KubernetesObject>(http: HttpClient, endpoint: string, initialParams?: Record<string, string | number | boolean | (string | number | boolean)[]>): OperatorFunction<KubernetesList<T>, KubernetesList<T>>;
|
|
18
|
-
/**
|
|
19
|
-
* Fetches paginated Kubernetes resources by continually making requests
|
|
20
|
-
* until all pages have been retrieved.
|
|
21
|
-
*
|
|
22
|
-
* @template T The type of the items contained within the KubernetesList.
|
|
23
|
-
* @param http The HttpClient instance used to make the HTTP requests.
|
|
24
|
-
* @param endpoint The API endpoint to fetch the resources from.
|
|
25
|
-
* @param initialParams Optional initial parameters to include in the request.
|
|
26
|
-
* Can include query parameters like filters and pagination settings.
|
|
27
|
-
* `limit` and `continue` parameters are parameters for kubernetes
|
|
28
|
-
* @returns An observable that emits a single KubernetesList containing all items from all pages.
|
|
29
|
-
*/
|
|
30
|
-
export declare function fetchPaginatedKubernetesResources<T extends KubernetesObject>(http: HttpClient, endpoint: string, initialParams?: Record<string, string | number | boolean | (string | number | boolean)[]>): Observable<KubernetesList<T>>;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { OperatorFunction } from 'rxjs';
|
|
2
|
-
type LoggerType = 'count' | 'debug' | 'dir' | 'log' | 'table';
|
|
3
|
-
/**
|
|
4
|
-
* Logger operator for RxJS observables.
|
|
5
|
-
*
|
|
6
|
-
* @param loggerType The type of logger to be used: 'count', 'debug', 'dir', 'log', 'table'.
|
|
7
|
-
* Defaults to 'log' if not provided or if an unknown type is specified.
|
|
8
|
-
* @returns An RxJS operator function that logs values using the specified console function.
|
|
9
|
-
*/
|
|
10
|
-
export declare const logger: <T>(loggerType?: LoggerType) => OperatorFunction<T, T>;
|
|
11
|
-
export {};
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { Signal } from '@angular/core';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { AsyncState } from '../models';
|
|
4
|
-
/**
|
|
5
|
-
* Polls data at a specified interval and can be triggered manually, and returns an observable that
|
|
6
|
-
* emits the result of the poll as an `AsyncState` object.
|
|
7
|
-
*
|
|
8
|
-
* @template Data - The type of the data emitted by the polling function.
|
|
9
|
-
* @template Input - The type of the input parameter used to build polling parameters.
|
|
10
|
-
* @param options.interval - The interval in milliseconds between each poll.
|
|
11
|
-
* @param options.pollingFn - A function that returns an Observable, Promise, or primitive value.
|
|
12
|
-
* @param options.forceRefresh - An optional Observable or Signal that triggers a manual refresh of the polling function.
|
|
13
|
-
* @param options.paramsBuilder - An optional function that builds parameters for the polling function based on the input. The value emitted by the forceRefresh observable will serve as the parameter.
|
|
14
|
-
* @param options.initialValue - An initial value to return before the first poll.
|
|
15
|
-
* @param options.delay - An optional delay, in milliseconds, to wait before starting the first poll.
|
|
16
|
-
*
|
|
17
|
-
* @returns An observable that emits the result of the poll as an `AsyncState` object.
|
|
18
|
-
*/
|
|
19
|
-
export declare function poll<Data>(options: {
|
|
20
|
-
interval: number;
|
|
21
|
-
pollingFn: (params: any) => Observable<Data> | Promise<Data> | Data;
|
|
22
|
-
initialValue?: AsyncState<Data>;
|
|
23
|
-
delay?: number;
|
|
24
|
-
}): Observable<AsyncState<Data>>;
|
|
25
|
-
export declare function poll<Data, Input>(options: {
|
|
26
|
-
interval: number;
|
|
27
|
-
pollingFn: (params: Input) => Observable<Data> | Promise<Data> | Data;
|
|
28
|
-
forceRefresh: Observable<Input> | Signal<Input>;
|
|
29
|
-
initialValue?: AsyncState<Data>;
|
|
30
|
-
delay?: number;
|
|
31
|
-
}): Observable<AsyncState<Data>>;
|
|
32
|
-
export declare function poll<Data, Input>(options: {
|
|
33
|
-
interval: number;
|
|
34
|
-
pollingFn: (params: any) => Observable<Data> | Promise<Data> | Data;
|
|
35
|
-
forceRefresh: Observable<Input> | Signal<Input>;
|
|
36
|
-
paramsBuilder: (input: Input) => any;
|
|
37
|
-
initialValue?: AsyncState<Data>;
|
|
38
|
-
delay?: number;
|
|
39
|
-
}): Observable<AsyncState<Data>>;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
|
-
/**
|
|
3
|
-
* Operator that taps into a callback before the source Observable starts emitting values.
|
|
4
|
-
*
|
|
5
|
-
* This operator is useful for triggering a side effect before the main Observable starts emitting.
|
|
6
|
-
*
|
|
7
|
-
* @param callback A function to be executed before the source Observable emits its first value.
|
|
8
|
-
* @returns An RxJS operator function that taps into the callback and then switchMaps to the source Observable.
|
|
9
|
-
*/
|
|
10
|
-
export declare function startWithTap<T>(callback: () => void): (source: Observable<T>) => Observable<T>;
|