@tethys/cdk 15.0.0-next.2 → 15.0.0-next.4
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/behaviors/error-handler.d.ts +3 -0
- package/behaviors/index.d.ts +1 -0
- package/behaviors/types.d.ts +2 -0
- package/behaviors/use-action.d.ts +3 -1
- package/esm2020/behaviors/error-handler.mjs +8 -0
- package/esm2020/behaviors/index.mjs +2 -1
- package/esm2020/behaviors/types.mjs +2 -0
- package/esm2020/behaviors/use-action.mjs +13 -4
- package/esm2020/behaviors/use-async.mjs +4 -1
- package/fesm2015/tethys-cdk-behaviors.mjs +23 -6
- package/fesm2015/tethys-cdk-behaviors.mjs.map +1 -1
- package/fesm2020/tethys-cdk-behaviors.mjs +22 -4
- package/fesm2020/tethys-cdk-behaviors.mjs.map +1 -1
- package/package.json +1 -1
package/behaviors/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
|
+
import { ExtractObservableValue } from './types';
|
|
2
3
|
export interface ActionBehaviorContext<T> {
|
|
3
4
|
success?: (result: T) => void;
|
|
4
5
|
error?: (error: Error) => void;
|
|
@@ -11,6 +12,7 @@ declare class ActionBehavior<T, A extends (...args: any) => Observable<T>> {
|
|
|
11
12
|
execute(...params: Parameters<A>): void;
|
|
12
13
|
success(successFn: (result: T) => void): this;
|
|
13
14
|
error(errorFn: (error: Error) => void): this;
|
|
15
|
+
private handleError;
|
|
14
16
|
}
|
|
15
|
-
export declare function useAction<T
|
|
17
|
+
export declare function useAction<T extends (...args: any) => Observable<any> = (...args: any) => Observable<any>>(action: T, context?: ActionBehaviorContext<ExtractObservableValue<ReturnType<T>>>): ActionBehavior<ExtractObservableValue<ReturnType<T>>, T>;
|
|
16
18
|
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
let _defaultErrorHandler = (error) => { };
|
|
2
|
+
export function setDefaultErrorHandler(defaultErrorHandler) {
|
|
3
|
+
_defaultErrorHandler = defaultErrorHandler;
|
|
4
|
+
}
|
|
5
|
+
export function getDefaultErrorHandler() {
|
|
6
|
+
return _defaultErrorHandler;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2Nkay9iZWhhdmlvcnMvZXJyb3ItaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxJQUFJLG9CQUFvQixHQUF3QixDQUFDLEtBQVksRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBRXJFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxtQkFBd0M7SUFDM0Usb0JBQW9CLEdBQUcsbUJBQW1CLENBQUM7QUFDL0MsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0I7SUFDbEMsT0FBTyxvQkFBb0IsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRGVmYXVsdEVycm9ySGFuZGxlciA9IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG5cbmxldCBfZGVmYXVsdEVycm9ySGFuZGxlcjogRGVmYXVsdEVycm9ySGFuZGxlciA9IChlcnJvcjogRXJyb3IpID0+IHt9O1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0RGVmYXVsdEVycm9ySGFuZGxlcihkZWZhdWx0RXJyb3JIYW5kbGVyOiBEZWZhdWx0RXJyb3JIYW5kbGVyKSB7XG4gICAgX2RlZmF1bHRFcnJvckhhbmRsZXIgPSBkZWZhdWx0RXJyb3JIYW5kbGVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdEVycm9ySGFuZGxlcigpIHtcbiAgICByZXR1cm4gX2RlZmF1bHRFcnJvckhhbmRsZXI7XG59XG4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './run-in-zone';
|
|
2
2
|
export * from './use-async';
|
|
3
3
|
export * from './use-action';
|
|
4
|
-
|
|
4
|
+
export * from './error-handler';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jZGsvYmVoYXZpb3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3J1bi1pbi16b25lJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlLWFzeW5jJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlLWFjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9yLWhhbmRsZXInO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jZGsvYmVoYXZpb3JzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIEV4dHJhY3RPYnNlcnZhYmxlVmFsdWU8VD4gPSBUIGV4dGVuZHMgT2JzZXJ2YWJsZTxpbmZlciBWPiA/IFYgOiBUO1xuIl19
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { finalize, tap } from 'rxjs/operators';
|
|
2
|
+
import { getDefaultErrorHandler } from './error-handler';
|
|
2
3
|
class ActionBehavior {
|
|
3
4
|
constructor(action, context) {
|
|
4
5
|
this.action = action;
|
|
@@ -16,20 +17,19 @@ class ActionBehavior {
|
|
|
16
17
|
.pipe(finalize(() => {
|
|
17
18
|
this.saving = false;
|
|
18
19
|
}), tap(value => {
|
|
19
|
-
debugger;
|
|
20
20
|
this.saving = false;
|
|
21
21
|
}))
|
|
22
22
|
.subscribe({
|
|
23
23
|
next: this.context?.success,
|
|
24
24
|
error: (error) => {
|
|
25
25
|
this.saving = false;
|
|
26
|
-
this.
|
|
26
|
+
this.handleError(error);
|
|
27
27
|
}
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
30
|
catch (error) {
|
|
31
31
|
this.saving = false;
|
|
32
|
-
this.
|
|
32
|
+
this.handleError(error);
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
success(successFn) {
|
|
@@ -40,8 +40,17 @@ class ActionBehavior {
|
|
|
40
40
|
this.context.error = errorFn;
|
|
41
41
|
return this;
|
|
42
42
|
}
|
|
43
|
+
handleError(error) {
|
|
44
|
+
const defaultErrorHandler = getDefaultErrorHandler();
|
|
45
|
+
if (this.context.error) {
|
|
46
|
+
this.context.error(error);
|
|
47
|
+
}
|
|
48
|
+
else if (defaultErrorHandler) {
|
|
49
|
+
defaultErrorHandler(error);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
43
52
|
}
|
|
44
53
|
export function useAction(action, context = {}) {
|
|
45
54
|
return new ActionBehavior(action, context);
|
|
46
55
|
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2Nkay9iZWhhdmlvcnMvdXNlLWFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBUXpELE1BQU0sY0FBYztJQUdoQixZQUFvQixNQUFTLEVBQVUsT0FBaUM7UUFBcEQsV0FBTSxHQUFOLE1BQU0sQ0FBRztRQUFVLFlBQU8sR0FBUCxPQUFPLENBQTBCO1FBRnhFLFdBQU0sR0FBRyxLQUFLLENBQUM7SUFFNEQsQ0FBQztJQUU1RSxPQUFPLENBQUMsR0FBRyxNQUFxQjtRQUM1QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJO1lBQ0EsT0FBTyxJQUFJLENBQUMsTUFBTTtpQkFDYixLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztpQkFDbkIsSUFBSSxDQUNELFFBQVEsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDeEIsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNSLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUNMO2lCQUNBLFNBQVMsQ0FBQztnQkFDUCxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPO2dCQUMzQixLQUFLLEVBQUUsQ0FBQyxLQUFZLEVBQUUsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLENBQUM7YUFDSixDQUFDLENBQUM7U0FDVjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzQjtJQUNMLENBQUM7SUFFRCxPQUFPLENBQUMsU0FBOEI7UUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBK0I7UUFDakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBWTtRQUM1QixNQUFNLG1CQUFtQixHQUFHLHNCQUFzQixFQUFFLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtZQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjthQUFNLElBQUksbUJBQW1CLEVBQUU7WUFDNUIsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUNyQixNQUFTLEVBQ1QsVUFBd0UsRUFBRTtJQUUxRSxPQUFPLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXREZWZhdWx0RXJyb3JIYW5kbGVyIH0gZnJvbSAnLi9lcnJvci1oYW5kbGVyJztcbmltcG9ydCB7IEV4dHJhY3RPYnNlcnZhYmxlVmFsdWUgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25CZWhhdmlvckNvbnRleHQ8VD4ge1xuICAgIHN1Y2Nlc3M/OiAocmVzdWx0OiBUKSA9PiB2b2lkO1xuICAgIGVycm9yPzogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbn1cblxuY2xhc3MgQWN0aW9uQmVoYXZpb3I8VCwgQSBleHRlbmRzICguLi5hcmdzOiBhbnkpID0+IE9ic2VydmFibGU8VD4+IHtcbiAgICBzYXZpbmcgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aW9uOiBBLCBwcml2YXRlIGNvbnRleHQ6IEFjdGlvbkJlaGF2aW9yQ29udGV4dDxUPikge31cblxuICAgIGV4ZWN1dGUoLi4ucGFyYW1zOiBQYXJhbWV0ZXJzPEE+KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNhdmluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFjdGlvblxuICAgICAgICAgICAgICAgIC5hcHBseShudWxsLCBwYXJhbXMpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICB0YXAodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgICAgIG5leHQ6IHRoaXMuY29udGV4dD8uc3VjY2VzcyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3VjY2VzcyhzdWNjZXNzRm46IChyZXN1bHQ6IFQpID0+IHZvaWQpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LnN1Y2Nlc3MgPSBzdWNjZXNzRm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGVycm9yKGVycm9yRm46IChlcnJvcjogRXJyb3IpID0+IHZvaWQpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmVycm9yID0gZXJyb3JGbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogRXJyb3IpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdEVycm9ySGFuZGxlciA9IGdldERlZmF1bHRFcnJvckhhbmRsZXIoKTtcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dC5lcnJvcikge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmVycm9yKGVycm9yKTtcbiAgICAgICAgfSBlbHNlIGlmIChkZWZhdWx0RXJyb3JIYW5kbGVyKSB7XG4gICAgICAgICAgICBkZWZhdWx0RXJyb3JIYW5kbGVyKGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGlvbjxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+ID0gKC4uLmFyZ3M6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+PihcbiAgICBhY3Rpb246IFQsXG4gICAgY29udGV4dDogQWN0aW9uQmVoYXZpb3JDb250ZXh0PEV4dHJhY3RPYnNlcnZhYmxlVmFsdWU8UmV0dXJuVHlwZTxUPj4+ID0ge31cbikge1xuICAgIHJldHVybiBuZXcgQWN0aW9uQmVoYXZpb3IoYWN0aW9uLCBjb250ZXh0KTtcbn1cbiJdfQ==
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { finalize, tap, catchError } from 'rxjs/operators';
|
|
2
|
+
import { getDefaultErrorHandler } from './error-handler';
|
|
2
3
|
class AsyncBehavior {
|
|
3
4
|
constructor(action) {
|
|
4
5
|
this.action = action;
|
|
@@ -13,6 +14,8 @@ class AsyncBehavior {
|
|
|
13
14
|
}), catchError(error => {
|
|
14
15
|
this.state = 'error';
|
|
15
16
|
this.error = error;
|
|
17
|
+
const defaultErrorHandler = getDefaultErrorHandler();
|
|
18
|
+
defaultErrorHandler && defaultErrorHandler(error);
|
|
16
19
|
throw error;
|
|
17
20
|
}), tap(value => {
|
|
18
21
|
this.value = value;
|
|
@@ -23,4 +26,4 @@ class AsyncBehavior {
|
|
|
23
26
|
export function useAsync(action) {
|
|
24
27
|
return new AsyncBehavior(action);
|
|
25
28
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWFzeW5jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY2RrL2JlaGF2aW9ycy91c2UtYXN5bmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsTUFBTSxhQUFhO0lBU2YsWUFBb0IsTUFBUztRQUFULFdBQU0sR0FBTixNQUFNLENBQUc7UUFSN0IsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFJcEIsVUFBSyxHQUFnRCxTQUFTLENBQUM7SUFJL0IsQ0FBQztJQUVqQyxPQUFPLENBQUMsR0FBRyxNQUFxQjtRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQzVDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUM1QixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztZQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixNQUFNLG1CQUFtQixHQUFHLHNCQUFzQixFQUFFLENBQUM7WUFDckQsbUJBQW1CLElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEQsTUFBTSxLQUFLLENBQUM7UUFDaEIsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFVLENBQUM7WUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7Q0FDSjtBQUVELE1BQU0sVUFBVSxRQUFRLENBQStDLE1BQVM7SUFDNUUsT0FBTyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbmFsaXplLCB0YXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXREZWZhdWx0RXJyb3JIYW5kbGVyIH0gZnJvbSAnLi9lcnJvci1oYW5kbGVyJztcblxuY2xhc3MgQXN5bmNCZWhhdmlvcjxULCBBIGV4dGVuZHMgKC4uLmFyZ3M6IGFueSkgPT4gT2JzZXJ2YWJsZTxUPj4ge1xuICAgIGxvYWRpbmdEb25lID0gZmFsc2U7XG5cbiAgICB2YWx1ZTogVDtcblxuICAgIHN0YXRlOiAncGVuZGluZycgfCAnbG9hZGluZycgfCAnc3VjY2VzcycgfCAnZXJyb3InID0gJ3BlbmRpbmcnO1xuXG4gICAgZXJyb3I/OiBFcnJvcjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aW9uOiBBKSB7fVxuXG4gICAgZXhlY3V0ZSguLi5wYXJhbXM6IFBhcmFtZXRlcnM8QT4pOiBSZXR1cm5UeXBlPEE+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nRG9uZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2xvYWRpbmcnO1xuICAgICAgICByZXR1cm4gdGhpcy5hY3Rpb24uYXBwbHkodW5kZWZpbmVkLCBwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nRG9uZSA9IHRydWU7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSAnZXJyb3InO1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0RXJyb3JIYW5kbGVyID0gZ2V0RGVmYXVsdEVycm9ySGFuZGxlcigpO1xuICAgICAgICAgICAgICAgIGRlZmF1bHRFcnJvckhhbmRsZXIgJiYgZGVmYXVsdEVycm9ySGFuZGxlcihlcnJvcik7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlIGFzIFQ7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9ICdzdWNjZXNzJztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQXN5bmM8VCwgQSBleHRlbmRzICguLi5hcmdzOiBhbnkpID0+IE9ic2VydmFibGU8VD4+KGFjdGlvbjogQSkge1xuICAgIHJldHVybiBuZXcgQXN5bmNCZWhhdmlvcihhY3Rpb24pO1xufVxuIl19
|
|
@@ -16,6 +16,14 @@ function runInZone(zone) {
|
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
let _defaultErrorHandler = (error) => { };
|
|
20
|
+
function setDefaultErrorHandler(defaultErrorHandler) {
|
|
21
|
+
_defaultErrorHandler = defaultErrorHandler;
|
|
22
|
+
}
|
|
23
|
+
function getDefaultErrorHandler() {
|
|
24
|
+
return _defaultErrorHandler;
|
|
25
|
+
}
|
|
26
|
+
|
|
19
27
|
class AsyncBehavior {
|
|
20
28
|
constructor(action) {
|
|
21
29
|
this.action = action;
|
|
@@ -30,6 +38,8 @@ class AsyncBehavior {
|
|
|
30
38
|
}), catchError(error => {
|
|
31
39
|
this.state = 'error';
|
|
32
40
|
this.error = error;
|
|
41
|
+
const defaultErrorHandler = getDefaultErrorHandler();
|
|
42
|
+
defaultErrorHandler && defaultErrorHandler(error);
|
|
33
43
|
throw error;
|
|
34
44
|
}), tap(value => {
|
|
35
45
|
this.value = value;
|
|
@@ -48,7 +58,7 @@ class ActionBehavior {
|
|
|
48
58
|
this.saving = false;
|
|
49
59
|
}
|
|
50
60
|
execute(...params) {
|
|
51
|
-
var _a
|
|
61
|
+
var _a;
|
|
52
62
|
if (this.saving) {
|
|
53
63
|
return;
|
|
54
64
|
}
|
|
@@ -59,21 +69,19 @@ class ActionBehavior {
|
|
|
59
69
|
.pipe(finalize(() => {
|
|
60
70
|
this.saving = false;
|
|
61
71
|
}), tap(value => {
|
|
62
|
-
debugger;
|
|
63
72
|
this.saving = false;
|
|
64
73
|
}))
|
|
65
74
|
.subscribe({
|
|
66
75
|
next: (_a = this.context) === null || _a === void 0 ? void 0 : _a.success,
|
|
67
76
|
error: (error) => {
|
|
68
|
-
var _a;
|
|
69
77
|
this.saving = false;
|
|
70
|
-
|
|
78
|
+
this.handleError(error);
|
|
71
79
|
}
|
|
72
80
|
});
|
|
73
81
|
}
|
|
74
82
|
catch (error) {
|
|
75
83
|
this.saving = false;
|
|
76
|
-
|
|
84
|
+
this.handleError(error);
|
|
77
85
|
}
|
|
78
86
|
}
|
|
79
87
|
success(successFn) {
|
|
@@ -84,6 +92,15 @@ class ActionBehavior {
|
|
|
84
92
|
this.context.error = errorFn;
|
|
85
93
|
return this;
|
|
86
94
|
}
|
|
95
|
+
handleError(error) {
|
|
96
|
+
const defaultErrorHandler = getDefaultErrorHandler();
|
|
97
|
+
if (this.context.error) {
|
|
98
|
+
this.context.error(error);
|
|
99
|
+
}
|
|
100
|
+
else if (defaultErrorHandler) {
|
|
101
|
+
defaultErrorHandler(error);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
87
104
|
}
|
|
88
105
|
function useAction(action, context = {}) {
|
|
89
106
|
return new ActionBehavior(action, context);
|
|
@@ -93,5 +110,5 @@ function useAction(action, context = {}) {
|
|
|
93
110
|
* Generated bundle index. Do not edit.
|
|
94
111
|
*/
|
|
95
112
|
|
|
96
|
-
export { runInZone, useAction, useAsync };
|
|
113
|
+
export { getDefaultErrorHandler, runInZone, setDefaultErrorHandler, useAction, useAsync };
|
|
97
114
|
//# sourceMappingURL=tethys-cdk-behaviors.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tethys-cdk-behaviors.mjs","sources":["../../../cdk/behaviors/run-in-zone.ts","../../../cdk/behaviors/use-async.ts","../../../cdk/behaviors/use-action.ts","../../../cdk/behaviors/tethys-cdk-behaviors.ts"],"sourcesContent":["import { NgZone } from '@angular/core';\nimport { Observable, OperatorFunction } from 'rxjs';\n\nexport function runInZone<T>(zone: NgZone): OperatorFunction<T, T> {\n return source => {\n return new Observable(observer => {\n const onNext = (value: T) => zone.run(() => observer.next(value));\n const onError = (e: Error) => zone.run(() => observer.error(e));\n const onComplete = () => zone.run(() => observer.complete());\n return source.subscribe({\n next: onNext,\n error: onError,\n complete: onComplete\n });\n });\n };\n}\n","import { Observable, of } from 'rxjs';\nimport { finalize, tap, catchError } from 'rxjs/operators';\n\nclass AsyncBehavior<T, A extends (...args: any) => Observable<T>> {\n loadingDone = false;\n\n value: T;\n\n state: 'pending' | 'loading' | 'success' | 'error' = 'pending';\n\n error?: Error;\n\n constructor(private action: A) {}\n\n execute(...params: Parameters<A>): ReturnType<A> {\n this.loadingDone = false;\n this.state = 'loading';\n return this.action.apply(undefined, params).pipe(\n finalize(() => {\n this.loadingDone = true;\n }),\n catchError(error => {\n this.state = 'error';\n this.error = error;\n throw error;\n }),\n tap(value => {\n this.value = value as T;\n this.state = 'success';\n })\n );\n }\n}\n\nexport function useAsync<T, A extends (...args: any) => Observable<T>>(action: A) {\n return new AsyncBehavior(action);\n}\n","import { Observable, of, throwError } from 'rxjs';\nimport { catchError, finalize, tap } from 'rxjs/operators';\n\nexport interface ActionBehaviorContext<T> {\n success?: (result: T) => void;\n error?: (error: Error) => void;\n}\n\nclass ActionBehavior<T, A extends (...args: any) => Observable<T>> {\n saving = false;\n\n constructor(private action: A, private context: ActionBehaviorContext<T>) {}\n\n execute(...params: Parameters<A>): void {\n if (this.saving) {\n return;\n }\n this.saving = true;\n try {\n return this.action\n .apply(null, params)\n .pipe(\n finalize(() => {\n this.saving = false;\n }),\n tap(value => {\n
|
|
1
|
+
{"version":3,"file":"tethys-cdk-behaviors.mjs","sources":["../../../cdk/behaviors/run-in-zone.ts","../../../cdk/behaviors/error-handler.ts","../../../cdk/behaviors/use-async.ts","../../../cdk/behaviors/use-action.ts","../../../cdk/behaviors/tethys-cdk-behaviors.ts"],"sourcesContent":["import { NgZone } from '@angular/core';\nimport { Observable, OperatorFunction } from 'rxjs';\n\nexport function runInZone<T>(zone: NgZone): OperatorFunction<T, T> {\n return source => {\n return new Observable(observer => {\n const onNext = (value: T) => zone.run(() => observer.next(value));\n const onError = (e: Error) => zone.run(() => observer.error(e));\n const onComplete = () => zone.run(() => observer.complete());\n return source.subscribe({\n next: onNext,\n error: onError,\n complete: onComplete\n });\n });\n };\n}\n","export type DefaultErrorHandler = (error: Error) => void;\n\nlet _defaultErrorHandler: DefaultErrorHandler = (error: Error) => {};\n\nexport function setDefaultErrorHandler(defaultErrorHandler: DefaultErrorHandler) {\n _defaultErrorHandler = defaultErrorHandler;\n}\n\nexport function getDefaultErrorHandler() {\n return _defaultErrorHandler;\n}\n","import { Observable, of } from 'rxjs';\nimport { finalize, tap, catchError } from 'rxjs/operators';\nimport { getDefaultErrorHandler } from './error-handler';\n\nclass AsyncBehavior<T, A extends (...args: any) => Observable<T>> {\n loadingDone = false;\n\n value: T;\n\n state: 'pending' | 'loading' | 'success' | 'error' = 'pending';\n\n error?: Error;\n\n constructor(private action: A) {}\n\n execute(...params: Parameters<A>): ReturnType<A> {\n this.loadingDone = false;\n this.state = 'loading';\n return this.action.apply(undefined, params).pipe(\n finalize(() => {\n this.loadingDone = true;\n }),\n catchError(error => {\n this.state = 'error';\n this.error = error;\n const defaultErrorHandler = getDefaultErrorHandler();\n defaultErrorHandler && defaultErrorHandler(error);\n throw error;\n }),\n tap(value => {\n this.value = value as T;\n this.state = 'success';\n })\n );\n }\n}\n\nexport function useAsync<T, A extends (...args: any) => Observable<T>>(action: A) {\n return new AsyncBehavior(action);\n}\n","import { Observable, of, throwError } from 'rxjs';\nimport { catchError, finalize, tap } from 'rxjs/operators';\nimport { getDefaultErrorHandler } from './error-handler';\nimport { ExtractObservableValue } from './types';\n\nexport interface ActionBehaviorContext<T> {\n success?: (result: T) => void;\n error?: (error: Error) => void;\n}\n\nclass ActionBehavior<T, A extends (...args: any) => Observable<T>> {\n saving = false;\n\n constructor(private action: A, private context: ActionBehaviorContext<T>) {}\n\n execute(...params: Parameters<A>): void {\n if (this.saving) {\n return;\n }\n this.saving = true;\n try {\n return this.action\n .apply(null, params)\n .pipe(\n finalize(() => {\n this.saving = false;\n }),\n tap(value => {\n this.saving = false;\n })\n )\n .subscribe({\n next: this.context?.success,\n error: (error: Error) => {\n this.saving = false;\n this.handleError(error);\n }\n });\n } catch (error) {\n this.saving = false;\n this.handleError(error);\n }\n }\n\n success(successFn: (result: T) => void): this {\n this.context.success = successFn;\n return this;\n }\n\n error(errorFn: (error: Error) => void): this {\n this.context.error = errorFn;\n return this;\n }\n\n private handleError(error: Error) {\n const defaultErrorHandler = getDefaultErrorHandler();\n if (this.context.error) {\n this.context.error(error);\n } else if (defaultErrorHandler) {\n defaultErrorHandler(error);\n }\n }\n}\n\nexport function useAction<T extends (...args: any) => Observable<any> = (...args: any) => Observable<any>>(\n action: T,\n context: ActionBehaviorContext<ExtractObservableValue<ReturnType<T>>> = {}\n) {\n return new ActionBehavior(action, context);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAGM,SAAU,SAAS,CAAI,IAAY,EAAA;IACrC,OAAO,MAAM,IAAG;AACZ,QAAA,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAG;YAC7B,MAAM,MAAM,GAAG,CAAC,KAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,CAAC,CAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,YAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7D,OAAO,MAAM,CAAC,SAAS,CAAC;AACpB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,QAAQ,EAAE,UAAU;AACvB,aAAA,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;AACP,KAAC,CAAC;AACN;;ACdA,IAAI,oBAAoB,GAAwB,CAAC,KAAY,KAAI,GAAG,CAAC;AAE/D,SAAU,sBAAsB,CAAC,mBAAwC,EAAA;IAC3E,oBAAoB,GAAG,mBAAmB,CAAC;AAC/C,CAAC;SAEe,sBAAsB,GAAA;AAClC,IAAA,OAAO,oBAAoB,CAAC;AAChC;;ACNA,MAAM,aAAa,CAAA;AASf,IAAA,WAAA,CAAoB,MAAS,EAAA;AAAT,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAG;AAR7B,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAIpB,QAAA,IAAK,CAAA,KAAA,GAAgD,SAAS,CAAC;KAI9B;IAEjC,OAAO,CAAC,GAAG,MAAqB,EAAA;AAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AACvB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,CAC5C,QAAQ,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC5B,SAAC,CAAC,EACF,UAAU,CAAC,KAAK,IAAG;AACf,YAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;AACrB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,YAAA,MAAM,mBAAmB,GAAG,sBAAsB,EAAE,CAAC;AACrD,YAAA,mBAAmB,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAClD,YAAA,MAAM,KAAK,CAAC;AAChB,SAAC,CAAC,EACF,GAAG,CAAC,KAAK,IAAG;AACR,YAAA,IAAI,CAAC,KAAK,GAAG,KAAU,CAAC;AACxB,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;SAC1B,CAAC,CACL,CAAC;KACL;AACJ,CAAA;AAEK,SAAU,QAAQ,CAA+C,MAAS,EAAA;AAC5E,IAAA,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;AACrC;;AC7BA,MAAM,cAAc,CAAA;IAGhB,WAAoB,CAAA,MAAS,EAAU,OAAiC,EAAA;AAApD,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAG;AAAU,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAA0B;AAFxE,QAAA,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;KAE6D;IAE5E,OAAO,CAAC,GAAG,MAAqB,EAAA;;QAC5B,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI;YACA,OAAO,IAAI,CAAC,MAAM;AACb,iBAAA,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;AACnB,iBAAA,IAAI,CACD,QAAQ,CAAC,MAAK;AACV,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACxB,aAAC,CAAC,EACF,GAAG,CAAC,KAAK,IAAG;AACR,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACxB,aAAC,CAAC,CACL;AACA,iBAAA,SAAS,CAAC;AACP,gBAAA,IAAI,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,0CAAE,OAAO;AAC3B,gBAAA,KAAK,EAAE,CAAC,KAAY,KAAI;AACpB,oBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,oBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;iBAC3B;AACJ,aAAA,CAAC,CAAC;AACV,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC3B,SAAA;KACJ;AAED,IAAA,OAAO,CAAC,SAA8B,EAAA;AAClC,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;AACjC,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,KAAK,CAAC,OAA+B,EAAA;AACjC,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC;KACf;AAEO,IAAA,WAAW,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,mBAAmB,GAAG,sBAAsB,EAAE,CAAC;AACrD,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC7B,SAAA;AAAM,aAAA,IAAI,mBAAmB,EAAE;YAC5B,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAC9B,SAAA;KACJ;AACJ,CAAA;SAEe,SAAS,CACrB,MAAS,EACT,UAAwE,EAAE,EAAA;AAE1E,IAAA,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC/C;;ACrEA;;AAEG;;;;"}
|
|
@@ -16,6 +16,14 @@ function runInZone(zone) {
|
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
let _defaultErrorHandler = (error) => { };
|
|
20
|
+
function setDefaultErrorHandler(defaultErrorHandler) {
|
|
21
|
+
_defaultErrorHandler = defaultErrorHandler;
|
|
22
|
+
}
|
|
23
|
+
function getDefaultErrorHandler() {
|
|
24
|
+
return _defaultErrorHandler;
|
|
25
|
+
}
|
|
26
|
+
|
|
19
27
|
class AsyncBehavior {
|
|
20
28
|
constructor(action) {
|
|
21
29
|
this.action = action;
|
|
@@ -30,6 +38,8 @@ class AsyncBehavior {
|
|
|
30
38
|
}), catchError(error => {
|
|
31
39
|
this.state = 'error';
|
|
32
40
|
this.error = error;
|
|
41
|
+
const defaultErrorHandler = getDefaultErrorHandler();
|
|
42
|
+
defaultErrorHandler && defaultErrorHandler(error);
|
|
33
43
|
throw error;
|
|
34
44
|
}), tap(value => {
|
|
35
45
|
this.value = value;
|
|
@@ -58,20 +68,19 @@ class ActionBehavior {
|
|
|
58
68
|
.pipe(finalize(() => {
|
|
59
69
|
this.saving = false;
|
|
60
70
|
}), tap(value => {
|
|
61
|
-
debugger;
|
|
62
71
|
this.saving = false;
|
|
63
72
|
}))
|
|
64
73
|
.subscribe({
|
|
65
74
|
next: this.context?.success,
|
|
66
75
|
error: (error) => {
|
|
67
76
|
this.saving = false;
|
|
68
|
-
this.
|
|
77
|
+
this.handleError(error);
|
|
69
78
|
}
|
|
70
79
|
});
|
|
71
80
|
}
|
|
72
81
|
catch (error) {
|
|
73
82
|
this.saving = false;
|
|
74
|
-
this.
|
|
83
|
+
this.handleError(error);
|
|
75
84
|
}
|
|
76
85
|
}
|
|
77
86
|
success(successFn) {
|
|
@@ -82,6 +91,15 @@ class ActionBehavior {
|
|
|
82
91
|
this.context.error = errorFn;
|
|
83
92
|
return this;
|
|
84
93
|
}
|
|
94
|
+
handleError(error) {
|
|
95
|
+
const defaultErrorHandler = getDefaultErrorHandler();
|
|
96
|
+
if (this.context.error) {
|
|
97
|
+
this.context.error(error);
|
|
98
|
+
}
|
|
99
|
+
else if (defaultErrorHandler) {
|
|
100
|
+
defaultErrorHandler(error);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
85
103
|
}
|
|
86
104
|
function useAction(action, context = {}) {
|
|
87
105
|
return new ActionBehavior(action, context);
|
|
@@ -91,5 +109,5 @@ function useAction(action, context = {}) {
|
|
|
91
109
|
* Generated bundle index. Do not edit.
|
|
92
110
|
*/
|
|
93
111
|
|
|
94
|
-
export { runInZone, useAction, useAsync };
|
|
112
|
+
export { getDefaultErrorHandler, runInZone, setDefaultErrorHandler, useAction, useAsync };
|
|
95
113
|
//# sourceMappingURL=tethys-cdk-behaviors.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tethys-cdk-behaviors.mjs","sources":["../../../cdk/behaviors/run-in-zone.ts","../../../cdk/behaviors/use-async.ts","../../../cdk/behaviors/use-action.ts","../../../cdk/behaviors/tethys-cdk-behaviors.ts"],"sourcesContent":["import { NgZone } from '@angular/core';\nimport { Observable, OperatorFunction } from 'rxjs';\n\nexport function runInZone<T>(zone: NgZone): OperatorFunction<T, T> {\n return source => {\n return new Observable(observer => {\n const onNext = (value: T) => zone.run(() => observer.next(value));\n const onError = (e: Error) => zone.run(() => observer.error(e));\n const onComplete = () => zone.run(() => observer.complete());\n return source.subscribe({\n next: onNext,\n error: onError,\n complete: onComplete\n });\n });\n };\n}\n","import { Observable, of } from 'rxjs';\nimport { finalize, tap, catchError } from 'rxjs/operators';\n\nclass AsyncBehavior<T, A extends (...args: any) => Observable<T>> {\n loadingDone = false;\n\n value: T;\n\n state: 'pending' | 'loading' | 'success' | 'error' = 'pending';\n\n error?: Error;\n\n constructor(private action: A) {}\n\n execute(...params: Parameters<A>): ReturnType<A> {\n this.loadingDone = false;\n this.state = 'loading';\n return this.action.apply(undefined, params).pipe(\n finalize(() => {\n this.loadingDone = true;\n }),\n catchError(error => {\n this.state = 'error';\n this.error = error;\n throw error;\n }),\n tap(value => {\n this.value = value as T;\n this.state = 'success';\n })\n );\n }\n}\n\nexport function useAsync<T, A extends (...args: any) => Observable<T>>(action: A) {\n return new AsyncBehavior(action);\n}\n","import { Observable, of, throwError } from 'rxjs';\nimport { catchError, finalize, tap } from 'rxjs/operators';\n\nexport interface ActionBehaviorContext<T> {\n success?: (result: T) => void;\n error?: (error: Error) => void;\n}\n\nclass ActionBehavior<T, A extends (...args: any) => Observable<T>> {\n saving = false;\n\n constructor(private action: A, private context: ActionBehaviorContext<T>) {}\n\n execute(...params: Parameters<A>): void {\n if (this.saving) {\n return;\n }\n this.saving = true;\n try {\n return this.action\n .apply(null, params)\n .pipe(\n finalize(() => {\n this.saving = false;\n }),\n tap(value => {\n
|
|
1
|
+
{"version":3,"file":"tethys-cdk-behaviors.mjs","sources":["../../../cdk/behaviors/run-in-zone.ts","../../../cdk/behaviors/error-handler.ts","../../../cdk/behaviors/use-async.ts","../../../cdk/behaviors/use-action.ts","../../../cdk/behaviors/tethys-cdk-behaviors.ts"],"sourcesContent":["import { NgZone } from '@angular/core';\nimport { Observable, OperatorFunction } from 'rxjs';\n\nexport function runInZone<T>(zone: NgZone): OperatorFunction<T, T> {\n return source => {\n return new Observable(observer => {\n const onNext = (value: T) => zone.run(() => observer.next(value));\n const onError = (e: Error) => zone.run(() => observer.error(e));\n const onComplete = () => zone.run(() => observer.complete());\n return source.subscribe({\n next: onNext,\n error: onError,\n complete: onComplete\n });\n });\n };\n}\n","export type DefaultErrorHandler = (error: Error) => void;\n\nlet _defaultErrorHandler: DefaultErrorHandler = (error: Error) => {};\n\nexport function setDefaultErrorHandler(defaultErrorHandler: DefaultErrorHandler) {\n _defaultErrorHandler = defaultErrorHandler;\n}\n\nexport function getDefaultErrorHandler() {\n return _defaultErrorHandler;\n}\n","import { Observable, of } from 'rxjs';\nimport { finalize, tap, catchError } from 'rxjs/operators';\nimport { getDefaultErrorHandler } from './error-handler';\n\nclass AsyncBehavior<T, A extends (...args: any) => Observable<T>> {\n loadingDone = false;\n\n value: T;\n\n state: 'pending' | 'loading' | 'success' | 'error' = 'pending';\n\n error?: Error;\n\n constructor(private action: A) {}\n\n execute(...params: Parameters<A>): ReturnType<A> {\n this.loadingDone = false;\n this.state = 'loading';\n return this.action.apply(undefined, params).pipe(\n finalize(() => {\n this.loadingDone = true;\n }),\n catchError(error => {\n this.state = 'error';\n this.error = error;\n const defaultErrorHandler = getDefaultErrorHandler();\n defaultErrorHandler && defaultErrorHandler(error);\n throw error;\n }),\n tap(value => {\n this.value = value as T;\n this.state = 'success';\n })\n );\n }\n}\n\nexport function useAsync<T, A extends (...args: any) => Observable<T>>(action: A) {\n return new AsyncBehavior(action);\n}\n","import { Observable, of, throwError } from 'rxjs';\nimport { catchError, finalize, tap } from 'rxjs/operators';\nimport { getDefaultErrorHandler } from './error-handler';\nimport { ExtractObservableValue } from './types';\n\nexport interface ActionBehaviorContext<T> {\n success?: (result: T) => void;\n error?: (error: Error) => void;\n}\n\nclass ActionBehavior<T, A extends (...args: any) => Observable<T>> {\n saving = false;\n\n constructor(private action: A, private context: ActionBehaviorContext<T>) {}\n\n execute(...params: Parameters<A>): void {\n if (this.saving) {\n return;\n }\n this.saving = true;\n try {\n return this.action\n .apply(null, params)\n .pipe(\n finalize(() => {\n this.saving = false;\n }),\n tap(value => {\n this.saving = false;\n })\n )\n .subscribe({\n next: this.context?.success,\n error: (error: Error) => {\n this.saving = false;\n this.handleError(error);\n }\n });\n } catch (error) {\n this.saving = false;\n this.handleError(error);\n }\n }\n\n success(successFn: (result: T) => void): this {\n this.context.success = successFn;\n return this;\n }\n\n error(errorFn: (error: Error) => void): this {\n this.context.error = errorFn;\n return this;\n }\n\n private handleError(error: Error) {\n const defaultErrorHandler = getDefaultErrorHandler();\n if (this.context.error) {\n this.context.error(error);\n } else if (defaultErrorHandler) {\n defaultErrorHandler(error);\n }\n }\n}\n\nexport function useAction<T extends (...args: any) => Observable<any> = (...args: any) => Observable<any>>(\n action: T,\n context: ActionBehaviorContext<ExtractObservableValue<ReturnType<T>>> = {}\n) {\n return new ActionBehavior(action, context);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|