@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.
Files changed (155) hide show
  1. package/dist/cjs/decorator/histogram-metric/histogram-metric-tracking.d.ts +14 -0
  2. package/dist/cjs/decorator/histogram-metric/histogram-metric-tracking.d.ts.map +1 -0
  3. package/dist/cjs/decorator/histogram-metric/histogram-metric-tracking.js +58 -0
  4. package/dist/cjs/decorator/histogram-metric/histogram-metric-tracking.js.map +1 -0
  5. package/dist/cjs/decorator/histogram-metric/histogram-metric.decorator.d.ts +5 -2
  6. package/dist/cjs/decorator/histogram-metric/histogram-metric.decorator.d.ts.map +1 -1
  7. package/dist/cjs/decorator/histogram-metric/histogram-metric.decorator.js +58 -21
  8. package/dist/cjs/decorator/histogram-metric/histogram-metric.decorator.js.map +1 -1
  9. package/dist/cjs/decorator/lock/create-lock-service-store.d.ts +4 -0
  10. package/dist/cjs/decorator/lock/create-lock-service-store.d.ts.map +1 -0
  11. package/dist/cjs/decorator/lock/create-lock-service-store.js +22 -0
  12. package/dist/cjs/decorator/lock/create-lock-service-store.js.map +1 -0
  13. package/dist/cjs/decorator/lock/create-observable-lock-decorators/create-observable-lock-decorators.d.ts +8 -3
  14. package/dist/cjs/decorator/lock/create-observable-lock-decorators/create-observable-lock-decorators.d.ts.map +1 -1
  15. package/dist/cjs/decorator/lock/create-observable-lock-decorators/create-observable-lock-decorators.js +75 -12
  16. package/dist/cjs/decorator/lock/create-observable-lock-decorators/create-observable-lock-decorators.js.map +1 -1
  17. package/dist/cjs/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.d.ts +6 -3
  18. package/dist/cjs/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.d.ts.map +1 -1
  19. package/dist/cjs/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.js +72 -12
  20. package/dist/cjs/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.js.map +1 -1
  21. package/dist/cjs/decorator/lock/lock-observable/lock-observable.decorator.d.ts +3 -2
  22. package/dist/cjs/decorator/lock/lock-observable/lock-observable.decorator.d.ts.map +1 -1
  23. package/dist/cjs/decorator/lock/lock-observable/lock-observable.decorator.js.map +1 -1
  24. package/dist/cjs/decorator/lock/lock-promise/lock-promise.decorator.d.ts +1 -1
  25. package/dist/cjs/decorator/lock/lock-promise/lock-promise.decorator.d.ts.map +1 -1
  26. package/dist/cjs/decorator/lock/lock-promise/lock-promise.decorator.js.map +1 -1
  27. package/dist/cjs/decorator/lock/lock-service-not-injected-message.const.d.ts +2 -0
  28. package/dist/cjs/decorator/lock/lock-service-not-injected-message.const.d.ts.map +1 -0
  29. package/dist/cjs/decorator/lock/lock-service-not-injected-message.const.js +5 -0
  30. package/dist/cjs/decorator/lock/lock-service-not-injected-message.const.js.map +1 -0
  31. package/dist/cjs/decorator/lock/lockable.service.d.ts.map +1 -0
  32. package/dist/cjs/decorator/lock/lockable.service.js.map +1 -0
  33. package/dist/cjs/decorator/lock/resolve-resources.d.ts +3 -0
  34. package/dist/cjs/decorator/lock/resolve-resources.d.ts.map +1 -0
  35. package/dist/cjs/decorator/lock/resolve-resources.js +13 -0
  36. package/dist/cjs/decorator/lock/resolve-resources.js.map +1 -0
  37. package/dist/cjs/decorator/lock/resource-separator.const.d.ts +2 -0
  38. package/dist/cjs/decorator/lock/resource-separator.const.d.ts.map +1 -0
  39. package/dist/cjs/decorator/lock/resource-separator.const.js +5 -0
  40. package/dist/cjs/decorator/lock/resource-separator.const.js.map +1 -0
  41. package/dist/cjs/decorator/lock/util/execute-lock-observable.util.js +2 -2
  42. package/dist/cjs/decorator/lock/util/execute-lock-observable.util.js.map +1 -1
  43. package/dist/cjs/decorator/lock/util/execute-lock-promise.util.js +2 -2
  44. package/dist/cjs/decorator/lock/util/execute-lock-promise.util.js.map +1 -1
  45. package/dist/cjs/decorator/lock/util/run-pre-lock.util.d.ts.map +1 -1
  46. package/dist/cjs/decorator/lock/util/run-pre-lock.util.js +4 -10
  47. package/dist/cjs/decorator/lock/util/run-pre-lock.util.js.map +1 -1
  48. package/dist/cjs/decorator/lock/util/validate-redlock.util.d.ts +1 -1
  49. package/dist/cjs/decorator/lock/util/validate-redlock.util.d.ts.map +1 -1
  50. package/dist/cjs/decorator/log/log.decorator.d.ts +1 -8
  51. package/dist/cjs/decorator/log/log.decorator.d.ts.map +1 -1
  52. package/dist/cjs/decorator/log/log.decorator.js +11 -69
  53. package/dist/cjs/decorator/log/log.decorator.js.map +1 -1
  54. package/dist/cjs/index.d.ts +1 -1
  55. package/dist/cjs/index.d.ts.map +1 -1
  56. package/dist/cjs/index.js +1 -1
  57. package/dist/cjs/index.js.map +1 -1
  58. package/dist/esm/decorator/histogram-metric/histogram-metric-tracking.d.ts +14 -0
  59. package/dist/esm/decorator/histogram-metric/histogram-metric-tracking.d.ts.map +1 -0
  60. package/dist/esm/decorator/histogram-metric/histogram-metric-tracking.js +55 -0
  61. package/dist/esm/decorator/histogram-metric/histogram-metric-tracking.js.map +1 -0
  62. package/dist/esm/decorator/histogram-metric/histogram-metric.decorator.d.ts +5 -2
  63. package/dist/esm/decorator/histogram-metric/histogram-metric.decorator.d.ts.map +1 -1
  64. package/dist/esm/decorator/histogram-metric/histogram-metric.decorator.js +58 -21
  65. package/dist/esm/decorator/histogram-metric/histogram-metric.decorator.js.map +1 -1
  66. package/dist/esm/decorator/lock/create-lock-service-store.d.ts +4 -0
  67. package/dist/esm/decorator/lock/create-lock-service-store.d.ts.map +1 -0
  68. package/dist/esm/decorator/lock/create-lock-service-store.js +18 -0
  69. package/dist/esm/decorator/lock/create-lock-service-store.js.map +1 -0
  70. package/dist/esm/decorator/lock/create-observable-lock-decorators/create-observable-lock-decorators.d.ts +8 -3
  71. package/dist/esm/decorator/lock/create-observable-lock-decorators/create-observable-lock-decorators.d.ts.map +1 -1
  72. package/dist/esm/decorator/lock/create-observable-lock-decorators/create-observable-lock-decorators.js +75 -12
  73. package/dist/esm/decorator/lock/create-observable-lock-decorators/create-observable-lock-decorators.js.map +1 -1
  74. package/dist/esm/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.d.ts +6 -3
  75. package/dist/esm/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.d.ts.map +1 -1
  76. package/dist/esm/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.js +72 -12
  77. package/dist/esm/decorator/lock/create-promise-lock-decorators/create-promise-lock-decorators.js.map +1 -1
  78. package/dist/esm/decorator/lock/lock-observable/lock-observable.decorator.d.ts +3 -2
  79. package/dist/esm/decorator/lock/lock-observable/lock-observable.decorator.d.ts.map +1 -1
  80. package/dist/esm/decorator/lock/lock-observable/lock-observable.decorator.js.map +1 -1
  81. package/dist/esm/decorator/lock/lock-promise/lock-promise.decorator.d.ts +1 -1
  82. package/dist/esm/decorator/lock/lock-promise/lock-promise.decorator.d.ts.map +1 -1
  83. package/dist/esm/decorator/lock/lock-promise/lock-promise.decorator.js.map +1 -1
  84. package/dist/esm/decorator/lock/lock-service-not-injected-message.const.d.ts +2 -0
  85. package/dist/esm/decorator/lock/lock-service-not-injected-message.const.d.ts.map +1 -0
  86. package/dist/esm/decorator/lock/lock-service-not-injected-message.const.js +2 -0
  87. package/dist/esm/decorator/lock/lock-service-not-injected-message.const.js.map +1 -0
  88. package/dist/esm/decorator/lock/lockable.service.d.ts.map +1 -0
  89. package/dist/esm/decorator/lock/lockable.service.js.map +1 -0
  90. package/dist/esm/decorator/lock/resolve-resources.d.ts +3 -0
  91. package/dist/esm/decorator/lock/resolve-resources.d.ts.map +1 -0
  92. package/dist/esm/decorator/lock/resolve-resources.js +9 -0
  93. package/dist/esm/decorator/lock/resolve-resources.js.map +1 -0
  94. package/dist/esm/decorator/lock/resource-separator.const.d.ts +2 -0
  95. package/dist/esm/decorator/lock/resource-separator.const.d.ts.map +1 -0
  96. package/dist/esm/decorator/lock/resource-separator.const.js +2 -0
  97. package/dist/esm/decorator/lock/resource-separator.const.js.map +1 -0
  98. package/dist/esm/decorator/lock/util/execute-lock-observable.util.js +3 -3
  99. package/dist/esm/decorator/lock/util/execute-lock-observable.util.js.map +1 -1
  100. package/dist/esm/decorator/lock/util/execute-lock-promise.util.js +3 -3
  101. package/dist/esm/decorator/lock/util/execute-lock-promise.util.js.map +1 -1
  102. package/dist/esm/decorator/lock/util/run-pre-lock.util.d.ts.map +1 -1
  103. package/dist/esm/decorator/lock/util/run-pre-lock.util.js +5 -11
  104. package/dist/esm/decorator/lock/util/run-pre-lock.util.js.map +1 -1
  105. package/dist/esm/decorator/lock/util/validate-redlock.util.d.ts +1 -1
  106. package/dist/esm/decorator/lock/util/validate-redlock.util.d.ts.map +1 -1
  107. package/dist/esm/decorator/log/log.decorator.d.ts +1 -8
  108. package/dist/esm/decorator/log/log.decorator.d.ts.map +1 -1
  109. package/dist/esm/decorator/log/log.decorator.js +12 -69
  110. package/dist/esm/decorator/log/log.decorator.js.map +1 -1
  111. package/dist/esm/index.d.ts +1 -1
  112. package/dist/esm/index.d.ts.map +1 -1
  113. package/dist/esm/index.js +1 -1
  114. package/dist/esm/index.js.map +1 -1
  115. package/package.json +6 -3
  116. package/dist/cjs/decorator/lock/service/lockable.service.d.ts.map +0 -1
  117. package/dist/cjs/decorator/lock/service/lockable.service.js.map +0 -1
  118. package/dist/cjs/decorator/lock/util/get-lock-service.util.d.ts +0 -3
  119. package/dist/cjs/decorator/lock/util/get-lock-service.util.d.ts.map +0 -1
  120. package/dist/cjs/decorator/lock/util/get-lock-service.util.js +0 -13
  121. package/dist/cjs/decorator/lock/util/get-lock-service.util.js.map +0 -1
  122. package/dist/cjs/decorator/lock/util/inject-lock-service.util.d.ts +0 -4
  123. package/dist/cjs/decorator/lock/util/inject-lock-service.util.d.ts.map +0 -1
  124. package/dist/cjs/decorator/lock/util/inject-lock-service.util.js +0 -9
  125. package/dist/cjs/decorator/lock/util/inject-lock-service.util.js.map +0 -1
  126. package/dist/cjs/decorator/log/type/error-log-function.type.d.ts +0 -2
  127. package/dist/cjs/decorator/log/type/error-log-function.type.d.ts.map +0 -1
  128. package/dist/cjs/decorator/log/type/error-log-function.type.js +0 -3
  129. package/dist/cjs/decorator/log/type/error-log-function.type.js.map +0 -1
  130. package/dist/cjs/decorator/log/type/post-log-function.type.d.ts +0 -2
  131. package/dist/cjs/decorator/log/type/post-log-function.type.d.ts.map +0 -1
  132. package/dist/cjs/decorator/log/type/post-log-function.type.js +0 -3
  133. package/dist/cjs/decorator/log/type/post-log-function.type.js.map +0 -1
  134. package/dist/esm/decorator/lock/service/lockable.service.d.ts.map +0 -1
  135. package/dist/esm/decorator/lock/service/lockable.service.js.map +0 -1
  136. package/dist/esm/decorator/lock/util/get-lock-service.util.d.ts +0 -3
  137. package/dist/esm/decorator/lock/util/get-lock-service.util.d.ts.map +0 -1
  138. package/dist/esm/decorator/lock/util/get-lock-service.util.js +0 -9
  139. package/dist/esm/decorator/lock/util/get-lock-service.util.js.map +0 -1
  140. package/dist/esm/decorator/lock/util/inject-lock-service.util.d.ts +0 -4
  141. package/dist/esm/decorator/lock/util/inject-lock-service.util.d.ts.map +0 -1
  142. package/dist/esm/decorator/lock/util/inject-lock-service.util.js +0 -5
  143. package/dist/esm/decorator/lock/util/inject-lock-service.util.js.map +0 -1
  144. package/dist/esm/decorator/log/type/error-log-function.type.d.ts +0 -2
  145. package/dist/esm/decorator/log/type/error-log-function.type.d.ts.map +0 -1
  146. package/dist/esm/decorator/log/type/error-log-function.type.js +0 -2
  147. package/dist/esm/decorator/log/type/error-log-function.type.js.map +0 -1
  148. package/dist/esm/decorator/log/type/post-log-function.type.d.ts +0 -2
  149. package/dist/esm/decorator/log/type/post-log-function.type.d.ts.map +0 -1
  150. package/dist/esm/decorator/log/type/post-log-function.type.js +0 -2
  151. package/dist/esm/decorator/log/type/post-log-function.type.js.map +0 -1
  152. /package/dist/cjs/decorator/lock/{service/lockable.service.d.ts → lockable.service.d.ts} +0 -0
  153. /package/dist/cjs/decorator/lock/{service/lockable.service.js → lockable.service.js} +0 -0
  154. /package/dist/esm/decorator/lock/{service/lockable.service.d.ts → lockable.service.d.ts} +0 -0
  155. /package/dist/esm/decorator/lock/{service/lockable.service.js → lockable.service.js} +0 -0
@@ -1,18 +1,81 @@
1
- import { executeLockObservable } from '../util/execute-lock-observable.util';
2
- import { getLockService } from '../util/get-lock-service.util';
3
- import { getMethodName } from '../util/get-method-name.util';
4
- import { injectLockService } from '../util/inject-lock-service.util';
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 getService = (instance) => getLockService(instance, serviceSymbol);
8
- const createDecorator = (retryCount) => (preLock, catchErrorFn$, duration) => (target, propertyKey, descriptor) => {
9
- injectLockService(target, serviceToken, serviceSymbol);
10
- descriptor.value = executeLockObservable(getService, preLock, duration ?? defaultDuration, retryCount,
11
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
12
- descriptor.value, getMethodName(target, propertyKey), catchErrorFn$);
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
- // eslint-disable-next-line no-undefined
16
- return { SequentialLock$: createDecorator(undefined), ExclusiveLock$: createDecorator(0) };
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,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAMrE,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,YAAuD,EAAE,eAAuB,EAAE,EAAE;IAC/H,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,CAAC,QAAiB,EAAwB,EAAE,CAC3D,cAAc,CAAC,QAAmC,EAAE,aAAa,CAAC,CAAC;IAEvE,MAAM,eAAe,GACjB,CAAC,UAA8B,EAAE,EAAE,CAC/B,CACQ,OAAyD,EACzD,aAA2C,EAC3C,QAAiB,EACK,EAAE,CAC5B,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;QAChC,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;QAEvD,UAAU,CAAC,KAAK,GAAG,qBAAqB,CACpC,UAAU,EAAE,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,UAAU;QAC5D,oEAAoE;QACpE,UAAU,CAAC,KAAM,EACjB,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,EAClC,aAAa,CACX,CAAC;QAEP,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;IAEd,wCAAwC;IACxC,OAAO,EAAE,eAAe,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/F,CAAC,CAAC"}
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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"}
@@ -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, AnyFn, MethodDecoratorType } from '@rnw-community/shared';
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 AnyFn, TResult extends ReturnType<K>, TArgs extends Parameters<K>>(preLock: PreDecoratorFunction<TArgs, string[]> | string[], catchErrorFn?: (error: unknown) => TResult, duration?: number) => MethodDecoratorType<K>;
6
- ExclusiveLock: <K extends AnyFn, TResult extends ReturnType<K>, TArgs extends Parameters<K>>(preLock: PreDecoratorFunction<TArgs, string[]> | string[], catchErrorFn?: (error: unknown) => TResult, duration?: number) => MethodDecoratorType<K>;
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":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE7F,eAAO,MAAM,2BAA2B,GAAI,cAAc,mBAAmB,CAAC,oBAAoB,CAAC,EAAE,iBAAiB,MAAM;qBAO/G,CAAC,SAAS,KAAK,EAAE,OAAO,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,UAAU,CAAC,CAAC,CAAC,WAC3D,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,iBAC1C,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,aAC/B,MAAM,KAClB,mBAAmB,CAAC,CAAC,CAAC;oBAJ5B,CAAC,SAAS,KAAK,EAAE,OAAO,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,UAAU,CAAC,CAAC,CAAC,WAC3D,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,iBAC1C,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,aAC/B,MAAM,KAClB,mBAAmB,CAAC,CAAC,CAAC;CAiBxC,CAAC"}
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"}
@@ -1,18 +1,78 @@
1
- import { executeLockPromise } from '../util/execute-lock-promise.util';
2
- import { getLockService } from '../util/get-lock-service.util';
3
- import { getMethodName } from '../util/get-method-name.util';
4
- import { injectLockService } from '../util/inject-lock-service.util';
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 getService = (instance) => getLockService(instance, serviceSymbol);
8
- const createDecorator = (retryCount) => (preLock, catchErrorFn, duration) => (target, propertyKey, descriptor) => {
9
- injectLockService(target, serviceToken, serviceSymbol);
10
- descriptor.value = executeLockPromise(getService, preLock, duration ?? defaultDuration, retryCount,
11
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
12
- descriptor.value, getMethodName(target, propertyKey), catchErrorFn);
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
- // eslint-disable-next-line no-undefined
16
- return { SequentialLock: createDecorator(undefined), ExclusiveLock: createDecorator(0) };
73
+ return {
74
+ SequentialLock: makeDecorator('sequential'),
75
+ ExclusiveLock: makeDecorator('exclusive'),
76
+ };
17
77
  };
18
78
  //# sourceMappingURL=create-promise-lock-decorators.js.map
@@ -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,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAMrE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,YAAuD,EAAE,eAAuB,EAAE,EAAE;IAC5H,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,CAAC,QAAiB,EAAwB,EAAE,CAC3D,cAAc,CAAC,QAAmC,EAAE,aAAa,CAAC,CAAC;IAEvE,MAAM,eAAe,GACjB,CAAC,UAA8B,EAAE,EAAE,CAC/B,CACQ,OAAyD,EACzD,YAA0C,EAC1C,QAAiB,EACK,EAAE,CAC5B,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;QAChC,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;QAEvD,UAAU,CAAC,KAAK,GAAG,kBAAkB,CACjC,UAAU,EAAE,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,UAAU;QAC5D,oEAAoE;QACpE,UAAU,CAAC,KAAM,EACjB,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,EAClC,YAAY,CACV,CAAC;QAEP,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;IAEd,wCAAwC;IACxC,OAAO,EAAE,cAAc,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7F,CAAC,CAAC"}
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 { AnyFn, MethodDecoratorType } from '@rnw-community/shared';
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 AnyFn, TResult extends ReturnType<K>, TArgs extends Parameters<K>>(preLock: PreDecoratorFunction<TArgs, string[]> | string[], duration: number, catchErrorFn$?: (error: unknown) => TResult, retryCount?: number) => MethodDecoratorType<K>;
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,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAExE;;;GAGG;AACH,eAAO,MAAM,cAAc,GACtB,CAAC,SAAS,KAAK,EAAE,OAAO,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,UAAU,CAAC,CAAC,CAAC,EACpE,SAAS,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,EACzD,UAAU,MAAM,EAChB,gBAAgB,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,EAC3C,aAAa,MAAM,KACpB,mBAAmB,CAAC,CAAC,CAWvB,CAAC"}
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;AAKrE;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GACvB,CACQ,OAAyD,EACzD,QAAgB,EAChB,aAA2C,EAC3C,UAAmB,EACG,EAAE,CAC5B,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;IAChC,UAAU,CAAC,KAAK,GAAG,qBAAqB,CACpC,iBAAiB,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU;IAChD,oEAAoE;IACpE,UAAU,CAAC,KAAM,EACjB,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,EAClC,aAAa,CACX,CAAC;IAEP,OAAO,UAAU,CAAC;AACtB,CAAC,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, TResult extends ReturnType<K>, TArgs extends Parameters<K>>(preLock: PreDecoratorFunction<TArgs, string[]> | string[], duration: number, catchErrorFn?: (error: unknown) => TResult, retryCount?: number) => MethodDecoratorType<K>;
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,OAAO,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,UAAU,CAAC,CAAC,CAAC,EACpE,SAAS,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,EACzD,UAAU,MAAM,EAChB,eAAe,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,EAC1C,aAAa,MAAM,KACpB,mBAAmB,CAAC,CAAC,CAUvB,CAAC"}
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,CACQ,OAAyD,EACzD,QAAgB,EAChB,YAA0C,EAC1C,UAAmB,EACG,EAAE,CAC5B,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;IAChC,UAAU,CAAC,KAAK,GAAG,kBAAkB,CACjC,iBAAiB,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAChD,UAAU,CAAC,KAAU,EACrB,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,EAClC,YAAY,CACV,CAAC;IAEP,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC"}
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,2 @@
1
+ export declare const LOCK_SERVICE_NOT_INJECTED_MESSAGE = "LockService was not injected. Ensure the lock service provider is registered in the NestJS module.";
2
+ //# sourceMappingURL=lock-service-not-injected-message.const.d.ts.map
@@ -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,2 @@
1
+ export const LOCK_SERVICE_NOT_INJECTED_MESSAGE = 'LockService was not injected. Ensure the lock service provider is registered in the NestJS module.';
2
+ //# sourceMappingURL=lock-service-not-injected-message.const.js.map
@@ -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,2 @@
1
+ export declare const RESOURCE_SEPARATOR = "\0";
2
+ //# sourceMappingURL=resource-separator.const.d.ts.map
@@ -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,2 @@
1
+ export const RESOURCE_SEPARATOR = '\x00';
2
+ //# sourceMappingURL=resource-separator.const.js.map
@@ -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(() => void 0);
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(() => void 0);
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;AAElD,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,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;gBAE/C,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,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YACnD,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
+ {"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(() => void 0);
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(() => void 0);
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;AAE7D,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,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAE/C,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,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,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
+ {"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,EAaR,CAAC"}
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 { isDefined, isNotEmptyArray } from '@rnw-community/shared';
1
+ import { isNotEmptyArray } from '@rnw-community/shared';
2
2
  export const runPreLock = (preLock, ...args) => {
3
- if (Array.isArray(preLock) && isNotEmptyArray(preLock)) {
4
- return preLock;
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
- else if (isDefined(preLock) && typeof preLock === 'function') {
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,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAInE,MAAM,CAAC,MAAM,UAAU,GAAG,CACtB,OAAyD,EACzD,GAAG,IAAW,EACN,EAAE;IACV,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,OAAO,OAAO,CAAC;IACnB,CAAC;SAAM,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AAC/C,CAAC,CAAC"}
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 '../service/lockable.service';
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,6BAA6B,CAAC;AAEnE,gFAAgF;AAChF,eAAO,MAAM,eAAe,GAAI,MAAM,eAAe,KAAG,IAMvD,CAAC"}
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 { type Observable } from 'rxjs';
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":"AACA,OAAO,EAAE,KAAK,UAAU,EAA6C,MAAM,MAAM,CAAC;AAElF,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,mBAAmB,EAA0C,MAAM,uBAAuB,CAAC;AAErH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAGnF,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE/F,eAAO,MAAM,GAAG,GACX,CAAC,SAAS,KAAK,EAAE,OAAO,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,UAAU,CAAC,CAAC,CAAC,EACpE,QAAQ,oBAAoB,CAAC,KAAK,CAAC,GAAG,MAAM,EAC5C,UAAU,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EACjE,WAAW,gBAAgB,CAAC,KAAK,CAAC,GAAG,MAAM,KAC5C,mBAAmB,CAAC,CAAC,CAmFvB,CAAC"}
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 { catchError, isObservable, tap, throwError } from 'rxjs';
3
- import { isDefined, isNotEmptyString, isPromise } from '@rnw-community/shared';
4
- export const Log = (preLog, postLog, errorLog) => (target, propertyKey, descriptor) => {
5
- const logContext = `${target.constructor.name}::${String(propertyKey)}`;
6
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
7
- const originalMethod = descriptor.value;
8
- // eslint-disable-next-line max-statements,func-names
9
- descriptor.value = function (...args) {
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
- catch (error) {
68
- runErrorLog(error);
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