@rnw-community/nestjs-enterprise 1.14.0 → 2.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/dist/cjs/decorator/histogram-metric/histogram-metric-tracking.d.ts +14 -0
- package/dist/cjs/decorator/histogram-metric/histogram-metric-tracking.d.ts.map +1 -0
- package/dist/cjs/decorator/histogram-metric/histogram-metric-tracking.js +58 -0
- package/dist/cjs/decorator/histogram-metric/histogram-metric-tracking.js.map +1 -0
- package/dist/cjs/decorator/histogram-metric/histogram-metric.decorator.d.ts +5 -2
- package/dist/cjs/decorator/histogram-metric/histogram-metric.decorator.d.ts.map +1 -1
- package/dist/cjs/decorator/histogram-metric/histogram-metric.decorator.js +58 -21
- package/dist/cjs/decorator/histogram-metric/histogram-metric.decorator.js.map +1 -1
- package/dist/cjs/decorator/lock/create-lock-service-store.d.ts +4 -0
- package/dist/cjs/decorator/lock/create-lock-service-store.d.ts.map +1 -0
- package/dist/cjs/decorator/lock/create-lock-service-store.js +22 -0
- package/dist/cjs/decorator/lock/create-lock-service-store.js.map +1 -0
- package/dist/cjs/decorator/lock/create-observable-lock-decorators/create-observable-lock-decorators.d.ts +8 -3
- package/dist/cjs/decorator/lock/create-observable-lock-decorators/create-observable-lock-decorators.d.ts.map +1 -1
- package/dist/cjs/decorator/lock/create-observable-lock-decorators/create-observable-lock-decorators.js +75 -12
- package/dist/cjs/decorator/lock/create-observable-lock-decorators/create-observable-lock-decorators.js.map +1 -1
- package/dist/cjs/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.d.ts +6 -3
- package/dist/cjs/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.d.ts.map +1 -1
- package/dist/cjs/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.js +72 -12
- package/dist/cjs/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.js.map +1 -1
- package/dist/cjs/decorator/lock/lock-observable/lock-observable.decorator.d.ts +3 -2
- package/dist/cjs/decorator/lock/lock-observable/lock-observable.decorator.d.ts.map +1 -1
- package/dist/cjs/decorator/lock/lock-observable/lock-observable.decorator.js.map +1 -1
- package/dist/cjs/decorator/lock/lock-promise/lock-promise.decorator.d.ts +1 -1
- package/dist/cjs/decorator/lock/lock-promise/lock-promise.decorator.d.ts.map +1 -1
- package/dist/cjs/decorator/lock/lock-promise/lock-promise.decorator.js.map +1 -1
- package/dist/cjs/decorator/lock/lock-service-not-injected-message.const.d.ts +2 -0
- package/dist/cjs/decorator/lock/lock-service-not-injected-message.const.d.ts.map +1 -0
- package/dist/cjs/decorator/lock/lock-service-not-injected-message.const.js +5 -0
- package/dist/cjs/decorator/lock/lock-service-not-injected-message.const.js.map +1 -0
- package/dist/cjs/decorator/lock/lockable.service.d.ts.map +1 -0
- package/dist/cjs/decorator/lock/lockable.service.js.map +1 -0
- package/dist/cjs/decorator/lock/resolve-resources.d.ts +3 -0
- package/dist/cjs/decorator/lock/resolve-resources.d.ts.map +1 -0
- package/dist/cjs/decorator/lock/resolve-resources.js +13 -0
- package/dist/cjs/decorator/lock/resolve-resources.js.map +1 -0
- package/dist/cjs/decorator/lock/resource-separator.const.d.ts +2 -0
- package/dist/cjs/decorator/lock/resource-separator.const.d.ts.map +1 -0
- package/dist/cjs/decorator/lock/resource-separator.const.js +5 -0
- package/dist/cjs/decorator/lock/resource-separator.const.js.map +1 -0
- package/dist/cjs/decorator/lock/util/execute-lock-observable.util.js +2 -2
- package/dist/cjs/decorator/lock/util/execute-lock-observable.util.js.map +1 -1
- package/dist/cjs/decorator/lock/util/execute-lock-promise.util.js +2 -2
- package/dist/cjs/decorator/lock/util/execute-lock-promise.util.js.map +1 -1
- package/dist/cjs/decorator/lock/util/run-pre-lock.util.d.ts.map +1 -1
- package/dist/cjs/decorator/lock/util/run-pre-lock.util.js +4 -10
- package/dist/cjs/decorator/lock/util/run-pre-lock.util.js.map +1 -1
- package/dist/cjs/decorator/lock/util/validate-redlock.util.d.ts +1 -1
- package/dist/cjs/decorator/lock/util/validate-redlock.util.d.ts.map +1 -1
- package/dist/cjs/decorator/log/log.decorator.d.ts +1 -8
- package/dist/cjs/decorator/log/log.decorator.d.ts.map +1 -1
- package/dist/cjs/decorator/log/log.decorator.js +11 -69
- package/dist/cjs/decorator/log/log.decorator.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/decorator/histogram-metric/histogram-metric-tracking.d.ts +14 -0
- package/dist/esm/decorator/histogram-metric/histogram-metric-tracking.d.ts.map +1 -0
- package/dist/esm/decorator/histogram-metric/histogram-metric-tracking.js +55 -0
- package/dist/esm/decorator/histogram-metric/histogram-metric-tracking.js.map +1 -0
- package/dist/esm/decorator/histogram-metric/histogram-metric.decorator.d.ts +5 -2
- package/dist/esm/decorator/histogram-metric/histogram-metric.decorator.d.ts.map +1 -1
- package/dist/esm/decorator/histogram-metric/histogram-metric.decorator.js +58 -21
- package/dist/esm/decorator/histogram-metric/histogram-metric.decorator.js.map +1 -1
- package/dist/esm/decorator/lock/create-lock-service-store.d.ts +4 -0
- package/dist/esm/decorator/lock/create-lock-service-store.d.ts.map +1 -0
- package/dist/esm/decorator/lock/create-lock-service-store.js +18 -0
- package/dist/esm/decorator/lock/create-lock-service-store.js.map +1 -0
- package/dist/esm/decorator/lock/create-observable-lock-decorators/create-observable-lock-decorators.d.ts +8 -3
- package/dist/esm/decorator/lock/create-observable-lock-decorators/create-observable-lock-decorators.d.ts.map +1 -1
- package/dist/esm/decorator/lock/create-observable-lock-decorators/create-observable-lock-decorators.js +75 -12
- package/dist/esm/decorator/lock/create-observable-lock-decorators/create-observable-lock-decorators.js.map +1 -1
- package/dist/esm/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.d.ts +6 -3
- package/dist/esm/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.d.ts.map +1 -1
- package/dist/esm/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.js +72 -12
- package/dist/esm/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.js.map +1 -1
- package/dist/esm/decorator/lock/lock-observable/lock-observable.decorator.d.ts +3 -2
- package/dist/esm/decorator/lock/lock-observable/lock-observable.decorator.d.ts.map +1 -1
- package/dist/esm/decorator/lock/lock-observable/lock-observable.decorator.js.map +1 -1
- package/dist/esm/decorator/lock/lock-promise/lock-promise.decorator.d.ts +1 -1
- package/dist/esm/decorator/lock/lock-promise/lock-promise.decorator.d.ts.map +1 -1
- package/dist/esm/decorator/lock/lock-promise/lock-promise.decorator.js.map +1 -1
- package/dist/esm/decorator/lock/lock-service-not-injected-message.const.d.ts +2 -0
- package/dist/esm/decorator/lock/lock-service-not-injected-message.const.d.ts.map +1 -0
- package/dist/esm/decorator/lock/lock-service-not-injected-message.const.js +2 -0
- package/dist/esm/decorator/lock/lock-service-not-injected-message.const.js.map +1 -0
- package/dist/esm/decorator/lock/lockable.service.d.ts.map +1 -0
- package/dist/esm/decorator/lock/lockable.service.js.map +1 -0
- package/dist/esm/decorator/lock/resolve-resources.d.ts +3 -0
- package/dist/esm/decorator/lock/resolve-resources.d.ts.map +1 -0
- package/dist/esm/decorator/lock/resolve-resources.js +9 -0
- package/dist/esm/decorator/lock/resolve-resources.js.map +1 -0
- package/dist/esm/decorator/lock/resource-separator.const.d.ts +2 -0
- package/dist/esm/decorator/lock/resource-separator.const.d.ts.map +1 -0
- package/dist/esm/decorator/lock/resource-separator.const.js +2 -0
- package/dist/esm/decorator/lock/resource-separator.const.js.map +1 -0
- package/dist/esm/decorator/lock/util/execute-lock-observable.util.js +3 -3
- package/dist/esm/decorator/lock/util/execute-lock-observable.util.js.map +1 -1
- package/dist/esm/decorator/lock/util/execute-lock-promise.util.js +3 -3
- package/dist/esm/decorator/lock/util/execute-lock-promise.util.js.map +1 -1
- package/dist/esm/decorator/lock/util/run-pre-lock.util.d.ts.map +1 -1
- package/dist/esm/decorator/lock/util/run-pre-lock.util.js +5 -11
- package/dist/esm/decorator/lock/util/run-pre-lock.util.js.map +1 -1
- package/dist/esm/decorator/lock/util/validate-redlock.util.d.ts +1 -1
- package/dist/esm/decorator/lock/util/validate-redlock.util.d.ts.map +1 -1
- package/dist/esm/decorator/log/log.decorator.d.ts +1 -8
- package/dist/esm/decorator/log/log.decorator.d.ts.map +1 -1
- package/dist/esm/decorator/log/log.decorator.js +12 -69
- package/dist/esm/decorator/log/log.decorator.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/package.json +6 -3
- package/dist/cjs/decorator/lock/service/lockable.service.d.ts.map +0 -1
- package/dist/cjs/decorator/lock/service/lockable.service.js.map +0 -1
- package/dist/cjs/decorator/lock/util/get-lock-service.util.d.ts +0 -3
- package/dist/cjs/decorator/lock/util/get-lock-service.util.d.ts.map +0 -1
- package/dist/cjs/decorator/lock/util/get-lock-service.util.js +0 -13
- package/dist/cjs/decorator/lock/util/get-lock-service.util.js.map +0 -1
- package/dist/cjs/decorator/lock/util/inject-lock-service.util.d.ts +0 -4
- package/dist/cjs/decorator/lock/util/inject-lock-service.util.d.ts.map +0 -1
- package/dist/cjs/decorator/lock/util/inject-lock-service.util.js +0 -9
- package/dist/cjs/decorator/lock/util/inject-lock-service.util.js.map +0 -1
- package/dist/cjs/decorator/log/type/error-log-function.type.d.ts +0 -2
- package/dist/cjs/decorator/log/type/error-log-function.type.d.ts.map +0 -1
- package/dist/cjs/decorator/log/type/error-log-function.type.js +0 -3
- package/dist/cjs/decorator/log/type/error-log-function.type.js.map +0 -1
- package/dist/cjs/decorator/log/type/post-log-function.type.d.ts +0 -2
- package/dist/cjs/decorator/log/type/post-log-function.type.d.ts.map +0 -1
- package/dist/cjs/decorator/log/type/post-log-function.type.js +0 -3
- package/dist/cjs/decorator/log/type/post-log-function.type.js.map +0 -1
- package/dist/esm/decorator/lock/service/lockable.service.d.ts.map +0 -1
- package/dist/esm/decorator/lock/service/lockable.service.js.map +0 -1
- package/dist/esm/decorator/lock/util/get-lock-service.util.d.ts +0 -3
- package/dist/esm/decorator/lock/util/get-lock-service.util.d.ts.map +0 -1
- package/dist/esm/decorator/lock/util/get-lock-service.util.js +0 -9
- package/dist/esm/decorator/lock/util/get-lock-service.util.js.map +0 -1
- package/dist/esm/decorator/lock/util/inject-lock-service.util.d.ts +0 -4
- package/dist/esm/decorator/lock/util/inject-lock-service.util.d.ts.map +0 -1
- package/dist/esm/decorator/lock/util/inject-lock-service.util.js +0 -5
- package/dist/esm/decorator/lock/util/inject-lock-service.util.js.map +0 -1
- package/dist/esm/decorator/log/type/error-log-function.type.d.ts +0 -2
- package/dist/esm/decorator/log/type/error-log-function.type.d.ts.map +0 -1
- package/dist/esm/decorator/log/type/error-log-function.type.js +0 -2
- package/dist/esm/decorator/log/type/error-log-function.type.js.map +0 -1
- package/dist/esm/decorator/log/type/post-log-function.type.d.ts +0 -2
- package/dist/esm/decorator/log/type/post-log-function.type.d.ts.map +0 -1
- package/dist/esm/decorator/log/type/post-log-function.type.js +0 -2
- package/dist/esm/decorator/log/type/post-log-function.type.js.map +0 -1
- /package/dist/cjs/decorator/lock/{service/lockable.service.d.ts → lockable.service.d.ts} +0 -0
- /package/dist/cjs/decorator/lock/{service/lockable.service.js → lockable.service.js} +0 -0
- /package/dist/esm/decorator/lock/{service/lockable.service.d.ts → lockable.service.d.ts} +0 -0
- /package/dist/esm/decorator/lock/{service/lockable.service.js → lockable.service.js} +0 -0
|
@@ -1,18 +1,81 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { Inject } from '@nestjs/common';
|
|
2
|
+
import { EMPTY, catchError, defer, isObservable, of, throwError } from 'rxjs';
|
|
3
|
+
import { LockBusyError, createLockMiddleware$ } from '@rnw-community/lock-decorator';
|
|
4
|
+
import { isDefined } from '@rnw-community/shared';
|
|
5
|
+
import { createLockServiceStore } from '../create-lock-service-store';
|
|
6
|
+
import { LOCK_SERVICE_NOT_INJECTED_MESSAGE } from '../lock-service-not-injected-message.const';
|
|
7
|
+
import { resolveResources } from '../resolve-resources';
|
|
8
|
+
import { RESOURCE_SEPARATOR } from '../resource-separator.const';
|
|
9
|
+
class MethodThrownError extends Error {
|
|
10
|
+
constructor(cause) {
|
|
11
|
+
super('method-thrown');
|
|
12
|
+
this.cause = cause;
|
|
13
|
+
this.name = 'MethodThrownError';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
const recoverFromAcquireError = (error, mode, catchErrorFn$) => {
|
|
17
|
+
let normalized = error;
|
|
18
|
+
if (error instanceof LockBusyError) {
|
|
19
|
+
if (mode === 'exclusive' && !isDefined(catchErrorFn$)) {
|
|
20
|
+
return EMPTY;
|
|
21
|
+
}
|
|
22
|
+
const keys = error.key.split(RESOURCE_SEPARATOR).join(', ');
|
|
23
|
+
normalized = new Error(`Lock not acquired for keys: ${keys}`);
|
|
24
|
+
}
|
|
25
|
+
if (isDefined(catchErrorFn$)) {
|
|
26
|
+
const recovery = catchErrorFn$(normalized);
|
|
27
|
+
return isObservable(recovery) ? recovery : of(recovery);
|
|
28
|
+
}
|
|
29
|
+
throw normalized;
|
|
30
|
+
};
|
|
31
|
+
const recoverFromMethodError = (error, catchErrorFn$) => {
|
|
32
|
+
if (isDefined(catchErrorFn$)) {
|
|
33
|
+
const recovery = catchErrorFn$(error);
|
|
34
|
+
return isObservable(recovery) ? recovery : of(recovery);
|
|
35
|
+
}
|
|
36
|
+
throw error;
|
|
37
|
+
};
|
|
5
38
|
export const createObservableLockDecorators = (serviceToken, defaultDuration) => {
|
|
6
39
|
const serviceSymbol = Symbol('LockService');
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
descriptor.value
|
|
11
|
-
|
|
12
|
-
descriptor.value
|
|
40
|
+
const makeDecorator = (mode) => (preLock, catchErrorFn$, duration) => (target, propertyKey, descriptor) => {
|
|
41
|
+
Inject(serviceToken)(target, serviceSymbol);
|
|
42
|
+
const methodName = `${target.constructor.name}::${String(propertyKey)}`;
|
|
43
|
+
const originalMethod = descriptor.value;
|
|
44
|
+
const effectiveDuration = duration ?? defaultDuration;
|
|
45
|
+
descriptor.value = function observableLockDecorator(...args) {
|
|
46
|
+
return defer(() => {
|
|
47
|
+
const lockService = this[serviceSymbol];
|
|
48
|
+
if (!isDefined(lockService)) {
|
|
49
|
+
throw new Error(LOCK_SERVICE_NOT_INJECTED_MESSAGE);
|
|
50
|
+
}
|
|
51
|
+
const resources = resolveResources(preLock, args);
|
|
52
|
+
const joinedKey = resources.join(RESOURCE_SEPARATOR);
|
|
53
|
+
const store = createLockServiceStore(lockService, effectiveDuration);
|
|
54
|
+
const middleware = createLockMiddleware$(store, mode, joinedKey);
|
|
55
|
+
const context = { className: '', methodName, args, logContext: methodName };
|
|
56
|
+
return middleware(context, () => {
|
|
57
|
+
let innerResult;
|
|
58
|
+
try {
|
|
59
|
+
innerResult = originalMethod.apply(this, args);
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
return throwError(() => new MethodThrownError(err));
|
|
63
|
+
}
|
|
64
|
+
if (!isObservable(innerResult)) {
|
|
65
|
+
return throwError(() => new MethodThrownError(new Error(`Method ${methodName} does not return an observable`)));
|
|
66
|
+
}
|
|
67
|
+
return innerResult.pipe(catchError((error) => throwError(() => new MethodThrownError(error))));
|
|
68
|
+
})
|
|
69
|
+
.pipe(catchError((error) => error instanceof MethodThrownError
|
|
70
|
+
? recoverFromMethodError(error.cause, catchErrorFn$)
|
|
71
|
+
: recoverFromAcquireError(error, mode, catchErrorFn$)));
|
|
72
|
+
});
|
|
73
|
+
};
|
|
13
74
|
return descriptor;
|
|
14
75
|
};
|
|
15
|
-
|
|
16
|
-
|
|
76
|
+
return {
|
|
77
|
+
SequentialLock$: makeDecorator('sequential'),
|
|
78
|
+
ExclusiveLock$: makeDecorator('exclusive'),
|
|
79
|
+
};
|
|
17
80
|
};
|
|
18
81
|
//# sourceMappingURL=create-observable-lock-decorators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-observable-lock-decorators.js","sourceRoot":"","sources":["../../../../../src/decorator/lock/create-observable-lock-decorators/create-observable-lock-decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"create-observable-lock-decorators.js","sourceRoot":"","sources":["../../../../../src/decorator/lock/create-observable-lock-decorators/create-observable-lock-decorators.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { PreDecoratorFunction } from '../../../type/pre-decorator-function.type';
|
|
2
2
|
import type { LockServiceInterface } from '../interface/lock-service.interface';
|
|
3
|
-
import type { AbstractConstructor,
|
|
3
|
+
import type { AbstractConstructor, MethodDecoratorType } from '@rnw-community/shared';
|
|
4
|
+
type PromiseRecoveryType<TResult> = TResult extends Promise<infer TValue> ? TValue | Promise<TValue> : never;
|
|
5
|
+
type PromiseRecoveryFnType<K extends (...args: any[]) => Promise<unknown>> = (error: unknown) => PromiseRecoveryType<ReturnType<K>>;
|
|
4
6
|
export declare const createPromiseLockDecorators: (serviceToken: AbstractConstructor<LockServiceInterface>, defaultDuration: number) => {
|
|
5
|
-
SequentialLock: <K extends
|
|
6
|
-
ExclusiveLock: <K extends
|
|
7
|
+
SequentialLock: <K extends (...args: any[]) => Promise<unknown>, TArgs extends Parameters<K>>(preLock: PreDecoratorFunction<TArgs, string[]> | string[], catchErrorFn?: PromiseRecoveryFnType<K>, duration?: number) => MethodDecoratorType<K>;
|
|
8
|
+
ExclusiveLock: <K extends (...args: any[]) => Promise<unknown>, TArgs extends Parameters<K>>(preLock: PreDecoratorFunction<TArgs, string[]> | string[], catchErrorFn?: PromiseRecoveryFnType<K>, duration?: number) => MethodDecoratorType<K>;
|
|
7
9
|
};
|
|
10
|
+
export {};
|
|
8
11
|
//# sourceMappingURL=create-promise-lock-decorators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-promise-lock-decorators.d.ts","sourceRoot":"","sources":["../../../../../src/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-promise-lock-decorators.d.ts","sourceRoot":"","sources":["../../../../../src/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAEhF,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEtF,KAAK,mBAAmB,CAAC,OAAO,IAAI,OAAO,SAAS,OAAO,CAAC,MAAM,MAAM,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AAE7G,KAAK,qBAAqB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,CACzE,KAAK,EAAE,OAAO,KACb,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AA6BxC,eAAO,MAAM,2BAA2B,GACpC,cAAc,mBAAmB,CAAC,oBAAoB,CAAC,EACvD,iBAAiB,MAAM;qBAOlB,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,UAAU,CAAC,CAAC,CAAC,WAC/D,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,iBAC1C,qBAAqB,CAAC,CAAC,CAAC,aAC5B,MAAM,KAClB,mBAAmB,CAAC,CAAC,CAAC;oBAJxB,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,UAAU,CAAC,CAAC,CAAC,WAC/D,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,iBAC1C,qBAAqB,CAAC,CAAC,CAAC,aAC5B,MAAM,KAClB,mBAAmB,CAAC,CAAC,CAAC;CAgDhC,CAAC"}
|
package/dist/esm/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.js
CHANGED
|
@@ -1,18 +1,78 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { Inject } from '@nestjs/common';
|
|
2
|
+
import { LockBusyError } from '@rnw-community/lock-decorator';
|
|
3
|
+
import { isDefined, isPromise } from '@rnw-community/shared';
|
|
4
|
+
import { createLockServiceStore } from '../create-lock-service-store';
|
|
5
|
+
import { LOCK_SERVICE_NOT_INJECTED_MESSAGE } from '../lock-service-not-injected-message.const';
|
|
6
|
+
import { resolveResources } from '../resolve-resources';
|
|
7
|
+
import { RESOURCE_SEPARATOR } from '../resource-separator.const';
|
|
8
|
+
const safeRelease = async (handle) => {
|
|
9
|
+
try {
|
|
10
|
+
await handle.release();
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
void 0;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const handleLockError = (error, mode, catchErrorFn) => {
|
|
17
|
+
const isExclusiveBusy = error instanceof LockBusyError && mode === 'exclusive' && !isDefined(catchErrorFn);
|
|
18
|
+
const normalized = error instanceof LockBusyError
|
|
19
|
+
? new Error(`Lock not acquired for keys: ${error.key.split(RESOURCE_SEPARATOR).join(', ')}`)
|
|
20
|
+
: error;
|
|
21
|
+
if (isExclusiveBusy) {
|
|
22
|
+
return void 0;
|
|
23
|
+
}
|
|
24
|
+
if (isDefined(catchErrorFn)) {
|
|
25
|
+
return catchErrorFn(normalized);
|
|
26
|
+
}
|
|
27
|
+
throw normalized;
|
|
28
|
+
};
|
|
5
29
|
export const createPromiseLockDecorators = (serviceToken, defaultDuration) => {
|
|
6
30
|
const serviceSymbol = Symbol('LockService');
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
descriptor.value
|
|
31
|
+
const makeDecorator = (mode) =>
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
33
|
+
(preLock, catchErrorFn, duration) => (target, propertyKey, descriptor) => {
|
|
34
|
+
Inject(serviceToken)(target, serviceSymbol);
|
|
35
|
+
const methodName = `${target.constructor.name}::${String(propertyKey)}`;
|
|
36
|
+
const originalMethod = descriptor.value;
|
|
37
|
+
const effectiveDuration = duration ?? defaultDuration;
|
|
38
|
+
// eslint-disable-next-line max-statements
|
|
39
|
+
descriptor.value = async function promiseLockDecorator(...args) {
|
|
40
|
+
const lockService = this[serviceSymbol];
|
|
41
|
+
if (!isDefined(lockService)) {
|
|
42
|
+
throw new Error(LOCK_SERVICE_NOT_INJECTED_MESSAGE);
|
|
43
|
+
}
|
|
44
|
+
const resources = resolveResources(preLock, args);
|
|
45
|
+
const joinedKey = resources.join(RESOURCE_SEPARATOR);
|
|
46
|
+
const store = createLockServiceStore(lockService, effectiveDuration);
|
|
47
|
+
let handle;
|
|
48
|
+
try {
|
|
49
|
+
handle = await store.acquire(joinedKey, mode);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
return await Promise.resolve(handleLockError(error, mode, catchErrorFn));
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
const result = originalMethod.apply(this, args);
|
|
56
|
+
if (!isPromise(result)) {
|
|
57
|
+
throw new Error(`Method ${methodName} does not return a promise`);
|
|
58
|
+
}
|
|
59
|
+
return await result;
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
if (isDefined(catchErrorFn)) {
|
|
63
|
+
return await Promise.resolve(catchErrorFn(error));
|
|
64
|
+
}
|
|
65
|
+
throw error;
|
|
66
|
+
}
|
|
67
|
+
finally {
|
|
68
|
+
await safeRelease(handle);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
13
71
|
return descriptor;
|
|
14
72
|
};
|
|
15
|
-
|
|
16
|
-
|
|
73
|
+
return {
|
|
74
|
+
SequentialLock: makeDecorator('sequential'),
|
|
75
|
+
ExclusiveLock: makeDecorator('exclusive'),
|
|
76
|
+
};
|
|
17
77
|
};
|
|
18
78
|
//# sourceMappingURL=create-promise-lock-decorators.js.map
|
package/dist/esm/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-promise-lock-decorators.js","sourceRoot":"","sources":["../../../../../src/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"create-promise-lock-decorators.js","sourceRoot":"","sources":["../../../../../src/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { PreDecoratorFunction } from '../../../type/pre-decorator-function.type';
|
|
2
|
-
import type {
|
|
2
|
+
import type { MethodDecoratorType } from '@rnw-community/shared';
|
|
3
|
+
import type { Observable } from 'rxjs';
|
|
3
4
|
/**
|
|
4
5
|
* @deprecated Use `createObservableLockDecorators` instead. This decorator requires class inheritance from `LockableService`.
|
|
5
6
|
* @see {@link createObservableLockDecorators} for the DI-based approach.
|
|
6
7
|
*/
|
|
7
|
-
export declare const LockObservable: <K extends
|
|
8
|
+
export declare const LockObservable: <K extends (...args: readonly any[]) => Observable<unknown>, TArgs extends Parameters<K>>(preLock: PreDecoratorFunction<TArgs, string[]> | string[], duration: number, catchErrorFn$?: (error: unknown) => ReturnType<K>, retryCount?: number) => MethodDecoratorType<K>;
|
|
8
9
|
//# sourceMappingURL=lock-observable.decorator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock-observable.decorator.d.ts","sourceRoot":"","sources":["../../../../../src/decorator/lock/lock-observable/lock-observable.decorator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,KAAK,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"lock-observable.decorator.d.ts","sourceRoot":"","sources":["../../../../../src/decorator/lock/lock-observable/lock-observable.decorator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAEvC;;;GAGG;AACH,eAAO,MAAM,cAAc,GAGnB,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,SAAS,GAAG,EAAE,KAAK,UAAU,CAAC,OAAO,CAAC,EAC1D,KAAK,SAAS,UAAU,CAAC,CAAC,CAAC,EAE3B,SAAS,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,EACzD,UAAU,MAAM,EAChB,gBAAgB,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,EACjD,aAAa,MAAM,KACpB,mBAAmB,CAAC,CAAC,CAcvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock-observable.decorator.js","sourceRoot":"","sources":["../../../../../src/decorator/lock/lock-observable/lock-observable.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"lock-observable.decorator.js","sourceRoot":"","sources":["../../../../../src/decorator/lock/lock-observable/lock-observable.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAMrE;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GACvB,CAKI,OAAyD,EACzD,QAAgB,EAChB,aAAiD,EACjD,UAAmB,EACG,EAAE,CAC5B,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;IAChC,UAAU,CAAC,KAAK,GAAG,qBAAqB,CACpC,iBAAiB,EACjB,OAAO,EACP,QAAQ,EACR,UAAU;IACV,oEAAoE;IACpE,UAAU,CAAC,KAAM,EACjB,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,EAClC,aAAa,CACA,CAAC;IAElB,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC"}
|
|
@@ -4,5 +4,5 @@ import type { AnyFn, MethodDecoratorType } from '@rnw-community/shared';
|
|
|
4
4
|
* @deprecated Use `createPromiseLockDecorators` instead. This decorator requires class inheritance from `LockableService`.
|
|
5
5
|
* @see {@link createPromiseLockDecorators} for the DI-based approach.
|
|
6
6
|
*/
|
|
7
|
-
export declare const LockPromise: <K extends AnyFn,
|
|
7
|
+
export declare const LockPromise: <K extends AnyFn, TArgs extends Parameters<K>>(preLock: PreDecoratorFunction<TArgs, string[]> | string[], duration: number, catchErrorFn?: (error: unknown) => ReturnType<K>, retryCount?: number) => MethodDecoratorType<K>;
|
|
8
8
|
//# sourceMappingURL=lock-promise.decorator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock-promise.decorator.d.ts","sourceRoot":"","sources":["../../../../../src/decorator/lock/lock-promise/lock-promise.decorator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAExE;;;GAGG;AACH,eAAO,MAAM,WAAW,GACnB,CAAC,SAAS,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"lock-promise.decorator.d.ts","sourceRoot":"","sources":["../../../../../src/decorator/lock/lock-promise/lock-promise.decorator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAExE;;;GAGG;AACH,eAAO,MAAM,WAAW,GACnB,CAAC,SAAS,KAAK,EAAE,KAAK,SAAS,UAAU,CAAC,CAAC,CAAC,EACzC,SAAS,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,EACzD,UAAU,MAAM,EAChB,eAAe,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,EAChD,aAAa,MAAM,KACpB,mBAAmB,CAAC,CAAC,CAavB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock-promise.decorator.js","sourceRoot":"","sources":["../../../../../src/decorator/lock/lock-promise/lock-promise.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAKrE;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GACpB,
|
|
1
|
+
{"version":3,"file":"lock-promise.decorator.js","sourceRoot":"","sources":["../../../../../src/decorator/lock/lock-promise/lock-promise.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAKrE;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GACpB,CACI,OAAyD,EACzD,QAAgB,EAChB,YAAgD,EAChD,UAAmB,EACG,EAAE,CAC5B,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;IAChC,UAAU,CAAC,KAAK,GAAG,kBAAkB,CACjC,iBAAiB,EACjB,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,CAAC,KAAU,EACrB,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,EAClC,YAAY,CACC,CAAC;IAElB,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock-service-not-injected-message.const.d.ts","sourceRoot":"","sources":["../../../../src/decorator/lock/lock-service-not-injected-message.const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iCAAiC,uGAC0D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock-service-not-injected-message.const.js","sourceRoot":"","sources":["../../../../src/decorator/lock/lock-service-not-injected-message.const.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iCAAiC,GAC1C,oGAAoG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockable.service.d.ts","sourceRoot":"","sources":["../../../../src/decorator/lock/lockable.service.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC;;GAEG;AACH,qBAAa,eAAe;IAKpB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAJhC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBAIL,WAAW,EAAE,KAAK,EACnC,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;CAIlC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockable.service.js","sourceRoot":"","sources":["../../../../src/decorator/lock/lockable.service.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAiB,MAAM,SAAS,CAAC;AAIjD;;GAEG;AACH,MAAM,OAAO,eAAe;IAGxB;IACI,mEAAmE;IAClD,WAAkB,EACnC,OAA2B;QADV,gBAAW,GAAX,WAAW,CAAO;QAGnC,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;CACJ"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { PreDecoratorFunction } from '../../type/pre-decorator-function.type';
|
|
2
|
+
export declare const resolveResources: <TArgs extends unknown[]>(preLock: PreDecoratorFunction<TArgs, string[]> | string[], args: TArgs) => string[];
|
|
3
|
+
//# sourceMappingURL=resolve-resources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-resources.d.ts","sourceRoot":"","sources":["../../../../src/decorator/lock/resolve-resources.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,eAAO,MAAM,gBAAgB,GAAI,KAAK,SAAS,OAAO,EAAE,EACpD,SAAS,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,EACzD,MAAM,KAAK,KACZ,MAAM,EAOR,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { isNotEmptyArray } from '@rnw-community/shared';
|
|
2
|
+
export const resolveResources = (preLock, args) => {
|
|
3
|
+
const resources = Array.isArray(preLock) ? preLock : preLock(...args);
|
|
4
|
+
if (!isNotEmptyArray(resources)) {
|
|
5
|
+
throw new Error('Lock key is not defined');
|
|
6
|
+
}
|
|
7
|
+
return resources;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=resolve-resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-resources.js","sourceRoot":"","sources":["../../../../src/decorator/lock/resolve-resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC5B,OAAyD,EACzD,IAAW,EACH,EAAE;IACV,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACtE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,SAAqB,CAAC;AACjC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-separator.const.d.ts","sourceRoot":"","sources":["../../../../src/decorator/lock/resource-separator.const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,OAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-separator.const.js","sourceRoot":"","sources":["../../../../src/decorator/lock/resource-separator.const.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EMPTY, catchError, concatMap, defer, finalize, from, isObservable, tap } from 'rxjs';
|
|
2
|
-
import { isDefined } from '@rnw-community/shared';
|
|
2
|
+
import { emptyFn, isDefined } from '@rnw-community/shared';
|
|
3
3
|
import { runPreLock } from './run-pre-lock.util';
|
|
4
4
|
export const executeLockObservable = (getLockServiceFn, preLock, duration, retryCount, originalMethod, methodName, catchErrorFn$
|
|
5
5
|
// eslint-disable-next-line @typescript-eslint/max-params, func-names
|
|
@@ -19,11 +19,11 @@ export const executeLockObservable = (getLockServiceFn, preLock, duration, retry
|
|
|
19
19
|
}
|
|
20
20
|
const result = originalMethod.apply(this, args);
|
|
21
21
|
if (!isObservable(result)) {
|
|
22
|
-
void currentLock.release().catch(
|
|
22
|
+
void currentLock.release().catch(emptyFn);
|
|
23
23
|
throw new Error(`Method ${methodName} does not return an observable`);
|
|
24
24
|
}
|
|
25
25
|
return result.pipe(finalize(() => {
|
|
26
|
-
void currentLock.release().catch(
|
|
26
|
+
void currentLock.release().catch(emptyFn);
|
|
27
27
|
}));
|
|
28
28
|
}), isDefined(catchErrorFn$)
|
|
29
29
|
? catchError((err) => catchErrorFn$(err))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-lock-observable.util.js","sourceRoot":"","sources":["../../../../../src/decorator/lock/util/execute-lock-observable.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAmB,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE/G,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"execute-lock-observable.util.js","sourceRoot":"","sources":["../../../../../src/decorator/lock/util/execute-lock-observable.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAmB,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE/G,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKjD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,gBAA6D,EAC7D,OAAyD,EACzD,QAAgB,EAChB,UAA8B,EAC9B,cAA6C,EAC7C,UAAkB,EAClB,aAA2C;AAC3C,qEAAqE;EACvE,EAAE,CAAC,UAAyB,GAAG,IAAW;IACxC,OAAO,KAAK,CAAC,GAAG,EAAE;QACd,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAE9C,MAAM,SAAS,GACX,UAAU,KAAK,CAAC;YACZ,CAAC,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAExD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CACzB,SAAS,CAAC,WAAW,CAAC,EAAE;YACpB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC1B,IAAI,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC3B,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1E,CAAC;gBAED,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAwB,CAAC;YAEvE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxB,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAE1C,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,gCAAgC,CAAC,CAAC;YAC1E,CAAC;YAED,OAAO,MAAM,CAAC,IAAI,CACd,QAAQ,CAAC,GAAG,EAAE;gBACV,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC9C,CAAC,CAAC,CACL,CAAC;QACN,CAAC,CAAC,EACF,SAAS,CAAC,aAAa,CAAC;YACpB,CAAC,CAAC,UAAU,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAwB,CAAC;YACzE,CAAC,CAAC,GAAG,EAAE,CACd,CAAC;IACN,CAAC,CAAY,CAAC;AAClB,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isDefined, isPromise } from '@rnw-community/shared';
|
|
1
|
+
import { emptyFn, isDefined, isPromise } from '@rnw-community/shared';
|
|
2
2
|
import { runPreLock } from './run-pre-lock.util';
|
|
3
3
|
export const executeLockPromise = (getLockServiceFn, preLock, duration, retryCount, originalMethod, methodName, catchErrorFn
|
|
4
4
|
// eslint-disable-next-line @typescript-eslint/max-params, max-statements, func-names
|
|
@@ -19,12 +19,12 @@ export const executeLockPromise = (getLockServiceFn, preLock, duration, retryCou
|
|
|
19
19
|
const originalResult = originalMethod.apply(this, args);
|
|
20
20
|
if (!isPromise(originalResult)) {
|
|
21
21
|
// HINT: https://github.com/mike-marcacci/node-redlock/issues/168
|
|
22
|
-
void currentLock.release().catch(
|
|
22
|
+
void currentLock.release().catch(emptyFn);
|
|
23
23
|
throw new Error(`Method ${methodName} does not return a promise`);
|
|
24
24
|
}
|
|
25
25
|
return await originalResult.finally(() => {
|
|
26
26
|
// HINT: https://github.com/mike-marcacci/node-redlock/issues/168
|
|
27
|
-
void currentLock.release().catch(
|
|
27
|
+
void currentLock.release().catch(emptyFn);
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
30
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-lock-promise.util.js","sourceRoot":"","sources":["../../../../../src/decorator/lock/util/execute-lock-promise.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"execute-lock-promise.util.js","sourceRoot":"","sources":["../../../../../src/decorator/lock/util/execute-lock-promise.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAC9B,gBAA6D,EAC7D,OAAyD,EACzD,QAAgB,EAChB,UAA8B,EAC9B,cAA6C,EAC7C,UAAkB,EAClB,YAA0C;AAC1C,qFAAqF;EACvF,EAAE,CAAC,KAAK,WAA0B,GAAG,IAAW;IAC9C,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAE9C,IAAI,CAAC;QACD,MAAM,WAAW,GACb,UAAU,KAAK,CAAC;YACZ,CAAC,CAAC,MAAM,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAExD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1B,IAAI,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1E,CAAC;YAED,wCAAwC;YACxC,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,cAAc,GAAY,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;YAC7B,iEAAiE;YACjE,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAE1C,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,4BAA4B,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE;YACrC,iEAAiE;YACjE,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACpB,IAAI,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1B,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED,MAAM,GAAG,CAAC;IACd,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-pre-lock.util.d.ts","sourceRoot":"","sources":["../../../../../src/decorator/lock/util/run-pre-lock.util.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEtF,eAAO,MAAM,UAAU,GAAI,KAAK,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,EAC1D,SAAS,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,EACzD,GAAG,MAAM,KAAK,KACf,MAAM,
|
|
1
|
+
{"version":3,"file":"run-pre-lock.util.d.ts","sourceRoot":"","sources":["../../../../../src/decorator/lock/util/run-pre-lock.util.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEtF,eAAO,MAAM,UAAU,GAAI,KAAK,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,EAC1D,SAAS,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,EACzD,GAAG,MAAM,KAAK,KACf,MAAM,EAOR,CAAC"}
|
|
@@ -1,15 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isNotEmptyArray } from '@rnw-community/shared';
|
|
2
2
|
export const runPreLock = (preLock, ...args) => {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
const keys = Array.isArray(preLock) ? preLock : preLock(...args);
|
|
4
|
+
if (!isNotEmptyArray(keys)) {
|
|
5
|
+
throw new Error('Lock key is not defined');
|
|
5
6
|
}
|
|
6
|
-
|
|
7
|
-
const keys = preLock(...args);
|
|
8
|
-
if (!isNotEmptyArray(keys)) {
|
|
9
|
-
throw new Error('Lock key is not defined');
|
|
10
|
-
}
|
|
11
|
-
return keys;
|
|
12
|
-
}
|
|
13
|
-
throw new Error('Lock key is not defined');
|
|
7
|
+
return keys;
|
|
14
8
|
};
|
|
15
9
|
//# sourceMappingURL=run-pre-lock.util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-pre-lock.util.js","sourceRoot":"","sources":["../../../../../src/decorator/lock/util/run-pre-lock.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"run-pre-lock.util.js","sourceRoot":"","sources":["../../../../../src/decorator/lock/util/run-pre-lock.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,MAAM,CAAC,MAAM,UAAU,GAAG,CACtB,OAAyD,EACzD,GAAG,IAAW,EACN,EAAE;IACV,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACjE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { LockableService } from '../
|
|
1
|
+
import type { LockableService } from '../lockable.service';
|
|
2
2
|
/** @deprecated Used by deprecated `LockPromise`/`LockObservable` decorators. */
|
|
3
3
|
export declare const validateRedlock: (self: LockableService) => void;
|
|
4
4
|
//# sourceMappingURL=validate-redlock.util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-redlock.util.d.ts","sourceRoot":"","sources":["../../../../../src/decorator/lock/util/validate-redlock.util.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"validate-redlock.util.d.ts","sourceRoot":"","sources":["../../../../../src/decorator/lock/util/validate-redlock.util.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,gFAAgF;AAChF,eAAO,MAAM,eAAe,GAAI,MAAM,eAAe,KAAG,IAMvD,CAAC"}
|
|
@@ -1,9 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { type AnyFn, type MethodDecoratorType } from '@rnw-community/shared';
|
|
3
|
-
import type { ErrorLogFunction } from './type/error-log-function.type';
|
|
4
|
-
import type { PostLogFunction } from './type/post-log-function.type';
|
|
5
|
-
import type { PreDecoratorFunction } from '../../type/pre-decorator-function.type';
|
|
6
|
-
type GetResultType<T> = T extends Promise<infer U> ? U : T extends Observable<infer U> ? U : T;
|
|
7
|
-
export declare const Log: <K extends AnyFn, TResult extends ReturnType<K>, TArgs extends Parameters<K>>(preLog: PreDecoratorFunction<TArgs> | string, postLog?: PostLogFunction<GetResultType<TResult>, TArgs> | string, errorLog?: ErrorLogFunction<TArgs> | string) => MethodDecoratorType<K>;
|
|
8
|
-
export {};
|
|
1
|
+
export declare const Log: <K extends import("@rnw-community/shared").AnyFn, TResult extends import("@rnw-community/log-decorator").GetResultType<ReturnType<K>>, TArgs extends Parameters<K>>(preLog?: import("@rnw-community/log-decorator").PreLogInputType<TArgs>, postLog?: import("@rnw-community/log-decorator").PostLogInputType<TArgs, TResult>, errorLog?: import("@rnw-community/log-decorator").ErrorLogInputType<TArgs>) => import("@rnw-community/shared").MethodDecoratorType<K>;
|
|
9
2
|
//# sourceMappingURL=log.decorator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.decorator.d.ts","sourceRoot":"","sources":["../../../../src/decorator/log/log.decorator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"log.decorator.d.ts","sourceRoot":"","sources":["../../../../src/decorator/log/log.decorator.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,GAAG,scAAsD,CAAC"}
|
|
@@ -1,74 +1,17 @@
|
|
|
1
1
|
import { Logger } from '@nestjs/common';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const runPreLog = () => {
|
|
11
|
-
if (isNotEmptyString(preLog)) {
|
|
12
|
-
Logger.log(preLog, logContext);
|
|
13
|
-
}
|
|
14
|
-
else if (isDefined(preLog)) {
|
|
15
|
-
Logger.log(preLog(...args), logContext);
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
const runPostLog = (res) => {
|
|
19
|
-
if (isNotEmptyString(postLog)) {
|
|
20
|
-
Logger.debug(postLog, logContext);
|
|
21
|
-
}
|
|
22
|
-
else if (isDefined(postLog)) {
|
|
23
|
-
Logger.debug(postLog(res, ...args), logContext);
|
|
24
|
-
}
|
|
25
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
26
|
-
return res;
|
|
27
|
-
};
|
|
28
|
-
const runErrorLog = (error) => {
|
|
29
|
-
if (!isDefined(errorLog)) {
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
if (error instanceof Error) {
|
|
33
|
-
Logger.error(error, logContext);
|
|
34
|
-
}
|
|
35
|
-
else if (isNotEmptyString(errorLog)) {
|
|
36
|
-
Logger.error(errorLog, logContext);
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
Logger.error(errorLog(error, ...args), logContext);
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
try {
|
|
43
|
-
runPreLog();
|
|
44
|
-
// @ts-expect-error We need this to handle generic methods correctly
|
|
45
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
46
|
-
const result = originalMethod.apply(this, args);
|
|
47
|
-
if (isDefined(postLog)) {
|
|
48
|
-
if (isObservable(result)) {
|
|
49
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
50
|
-
return result.pipe(tap(runPostLog), catchError((error) => {
|
|
51
|
-
runErrorLog(error);
|
|
52
|
-
return throwError(() => error);
|
|
53
|
-
}));
|
|
54
|
-
}
|
|
55
|
-
else if (isPromise(result)) {
|
|
56
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
57
|
-
return result.then(runPostLog).catch((error) => {
|
|
58
|
-
runErrorLog(error);
|
|
59
|
-
throw error;
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
runPostLog(result);
|
|
63
|
-
}
|
|
64
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
65
|
-
return result;
|
|
2
|
+
import { createLogDecorator } from '@rnw-community/log-decorator';
|
|
3
|
+
import { isError } from '@rnw-community/shared';
|
|
4
|
+
const nestLogTransport = {
|
|
5
|
+
log: (message, logContext) => void Logger.log(message, logContext),
|
|
6
|
+
debug: (message, logContext) => void Logger.debug(message, logContext),
|
|
7
|
+
error: (message, error, logContext) => {
|
|
8
|
+
if (isError(error)) {
|
|
9
|
+
Logger.error(message, { err: error }, logContext);
|
|
66
10
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
throw error;
|
|
11
|
+
else {
|
|
12
|
+
Logger.error(message, logContext);
|
|
70
13
|
}
|
|
71
|
-
}
|
|
72
|
-
return descriptor;
|
|
14
|
+
},
|
|
73
15
|
};
|
|
16
|
+
export const Log = createLogDecorator({ transport: nestLogTransport });
|
|
74
17
|
//# sourceMappingURL=log.decorator.js.map
|