murlock 4.0.0 → 4.1.1

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.
@@ -1 +1,2 @@
1
- export declare function MurLock(releaseTime: number, ...keyParams: string[]): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
1
+ export declare function MurLock(releaseTime: number, wait: number | ((retries: number) => number), ...keyParams: string[]): any;
2
+ export declare function MurLock(releaseTime: number, ...keyParams: string[]): any;
@@ -14,13 +14,26 @@ const common_1 = require("@nestjs/common");
14
14
  const exceptions_1 = require("../exceptions");
15
15
  const murlock_service_1 = require("../murlock.service");
16
16
  function getParameterNames(func) {
17
- const STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
17
+ const STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;
18
18
  const ARGUMENT_NAMES = /([^\s,]+)/g;
19
19
  const fnStr = func.toString().replace(STRIP_COMMENTS, '');
20
- const result = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')).match(ARGUMENT_NAMES);
20
+ const result = fnStr
21
+ .slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')'))
22
+ .match(ARGUMENT_NAMES);
21
23
  return result || [];
22
24
  }
23
- function MurLock(releaseTime, ...keyParams) {
25
+ function MurLock(releaseTime, waitOrKeyParam, ...keyParams) {
26
+ let wait;
27
+ if (typeof waitOrKeyParam === 'number' ||
28
+ typeof waitOrKeyParam === 'function') {
29
+ wait = waitOrKeyParam;
30
+ }
31
+ else {
32
+ keyParams = [
33
+ ...(waitOrKeyParam === undefined ? [] : [waitOrKeyParam]),
34
+ ...keyParams,
35
+ ];
36
+ }
24
37
  const injectMurlockService = (0, common_1.Inject)(murlock_service_1.MurLockService);
25
38
  return (target, propertyKey, descriptor) => {
26
39
  injectMurlockService(target, 'murlockServiceDecorator');
@@ -34,16 +47,29 @@ function MurLock(releaseTime, ...keyParams) {
34
47
  }
35
48
  lockKeyElements.push(...keyParams.map((keyParam) => {
36
49
  const [source, path] = keyParam.split('.');
37
- const parameterIndex = isNumber(source) ? Number(source) : methodParameterNames.indexOf(source);
50
+ const parameterIndex = isNumber(source)
51
+ ? Number(source)
52
+ : methodParameterNames.indexOf(source);
38
53
  if (parameterIndex >= 0) {
39
- const parameterValue = findParameterValue({ args, source, parameterIndex, path });
40
- if (typeof parameterValue === 'undefined' || parameterValue === null) {
54
+ const parameterValue = findParameterValue({
55
+ args,
56
+ source,
57
+ parameterIndex,
58
+ path,
59
+ });
60
+ if (typeof parameterValue === 'undefined' ||
61
+ parameterValue === null) {
41
62
  throw new exceptions_1.MurLockException(`Parameter ${source} is undefined or null.`);
42
63
  }
43
- if (path && typeof parameterValue === 'object' && parameterValue !== null && path in parameterValue) {
64
+ if (path &&
65
+ typeof parameterValue === 'object' &&
66
+ parameterValue !== null &&
67
+ path in parameterValue) {
44
68
  return parameterValue[path];
45
69
  }
46
- return parameterValue instanceof Object ? parameterValue.toString() : parameterValue;
70
+ return parameterValue instanceof Object
71
+ ? parameterValue.toString()
72
+ : parameterValue;
47
73
  }
48
74
  if (lockKeyPrefix == 'custom') {
49
75
  return source;
@@ -59,7 +85,7 @@ function MurLock(releaseTime, ...keyParams) {
59
85
  if (!murLockService) {
60
86
  throw new exceptions_1.MurLockException('MurLockService is not available.');
61
87
  }
62
- return murLockService.runWithLock(lockKey, releaseTime, () => __awaiter(this, void 0, void 0, function* () {
88
+ return murLockService.runWithLock(lockKey, releaseTime, wait, () => __awaiter(this, void 0, void 0, function* () {
63
89
  return originalMethod.apply(this, args);
64
90
  }));
65
91
  });
@@ -1 +1 @@
1
- {"version":3,"file":"murlock.decorator.js","sourceRoot":"","sources":["../../lib/decorators/murlock.decorator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"murlock.decorator.js","sourceRoot":"","sources":["../../lib/decorators/murlock.decorator.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,8 @@ var MurLockModule_1;
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.MurLockModule = void 0;
11
11
  const common_1 = require("@nestjs/common");
12
- const murlock_service_1 = require("./murlock.service");
13
12
  const als_module_1 = require("./als/als.module");
13
+ const murlock_service_1 = require("./murlock.service");
14
14
  let MurLockModule = MurLockModule_1 = class MurLockModule {
15
15
  static forRoot(options) {
16
16
  return {
@@ -29,14 +29,8 @@ let MurLockModule = MurLockModule_1 = class MurLockModule {
29
29
  static forRootAsync(options) {
30
30
  return {
31
31
  module: MurLockModule_1,
32
- imports: [
33
- als_module_1.AsyncStorageManagerModule.forRoot(),
34
- ...options.imports
35
- ] || [als_module_1.AsyncStorageManagerModule.forRoot()],
36
- providers: [
37
- this.createAsyncOptionsProvider(options),
38
- murlock_service_1.MurLockService,
39
- ],
32
+ imports: [als_module_1.AsyncStorageManagerModule.forRoot(), ...options.imports],
33
+ providers: [this.createAsyncOptionsProvider(options), murlock_service_1.MurLockService],
40
34
  exports: [murlock_service_1.MurLockService],
41
35
  };
42
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"murlock.module.js","sourceRoot":"","sources":["../lib/murlock.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAyE;AACzE,uDAAmD;AAEnD,iDAA6D;AAItD,IAAM,aAAa,qBAAnB,MAAM,aAAa;IACxB,MAAM,CAAC,OAAO,CAAC,OAA6B;QAC1C,OAAO;YACL,MAAM,EAAE,eAAa;YACrB,OAAO,EAAE,CAAC,sCAAyB,CAAC,OAAO,EAAE,CAAC;YAC9C,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,iBAAiB;oBAC1B,QAAQ,EAAE,OAAO;iBAClB;gBACD,gCAAc;aACf;YACD,OAAO,EAAE,CAAC,gCAAc,CAAC;SAC1B,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAkC;QACpD,OAAO;YACL,MAAM,EAAE,eAAa;YACrB,OAAO,EAAE;gBACP,sCAAyB,CAAC,OAAO,EAAE;gBACnC,GAAG,OAAO,CAAC,OAAO;aACnB,IAAI,CAAC,sCAAyB,CAAC,OAAO,EAAE,CAAC;YAC1C,SAAS,EAAE;gBACT,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;gBACxC,gCAAc;aACf;YACD,OAAO,EAAE,CAAC,gCAAc,CAAC;SAC1B,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,0BAA0B,CAAC,OAAkC;QAC1E,OAAO;YACL,OAAO,EAAE,iBAAiB;YAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;SAC7B,CAAC;IACJ,CAAC;CACF,CAAA;AAtCY,sCAAa;wBAAb,aAAa;IAFzB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,aAAa,CAsCzB"}
1
+ {"version":3,"file":"murlock.module.js","sourceRoot":"","sources":["../lib/murlock.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAyE;AACzE,iDAA6D;AAE7D,uDAAmD;AAI5C,IAAM,aAAa,qBAAnB,MAAM,aAAa;IACxB,MAAM,CAAC,OAAO,CAAC,OAA6B;QAC1C,OAAO;YACL,MAAM,EAAE,eAAa;YACrB,OAAO,EAAE,CAAC,sCAAyB,CAAC,OAAO,EAAE,CAAC;YAC9C,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,iBAAiB;oBAC1B,QAAQ,EAAE,OAAO;iBAClB;gBACD,gCAAc;aACf;YACD,OAAO,EAAE,CAAC,gCAAc,CAAC;SAC1B,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAkC;QACpD,OAAO;YACL,MAAM,EAAE,eAAa;YACrB,OAAO,EAAE,CAAC,sCAAyB,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;YAClE,SAAS,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE,gCAAc,CAAC;YACrE,OAAO,EAAE,CAAC,gCAAc,CAAC;SAC1B,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,0BAA0B,CACvC,OAAkC;QAElC,OAAO;YACL,OAAO,EAAE,iBAAiB;YAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;SAC7B,CAAC;IACJ,CAAC;CACF,CAAA;AAlCY,sCAAa;wBAAb,aAAa;IAFzB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,aAAa,CAkCzB"}
@@ -1,6 +1,6 @@
1
1
  import { OnApplicationShutdown, OnModuleInit } from '@nestjs/common';
2
- import { MurLockModuleOptions } from './interfaces';
3
2
  import { AsyncStorageService } from './als/als.service';
3
+ import { MurLockModuleOptions } from './interfaces';
4
4
  export declare class MurLockService implements OnModuleInit, OnApplicationShutdown {
5
5
  readonly options: MurLockModuleOptions;
6
6
  private readonly asyncStorageService;
@@ -18,4 +18,5 @@ export declare class MurLockService implements OnModuleInit, OnApplicationShutdo
18
18
  private acquireLock;
19
19
  private releaseLock;
20
20
  runWithLock<R>(lockKey: string, releaseTime: number, fn: () => Promise<R>): Promise<R>;
21
+ runWithLock<R>(lockKey: string, releaseTime: number, wait: number | ((retries: number) => number), fn: () => Promise<R>): Promise<R>;
21
22
  }
@@ -24,11 +24,11 @@ var MurLockService_1;
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.MurLockService = void 0;
26
26
  const common_1 = require("@nestjs/common");
27
- const redis_1 = require("redis");
28
27
  const fs_1 = require("fs");
29
28
  const path_1 = require("path");
30
- const exceptions_1 = require("./exceptions");
29
+ const redis_1 = require("redis");
31
30
  const als_service_1 = require("./als/als.service");
31
+ const exceptions_1 = require("./exceptions");
32
32
  const utils_1 = require("./utils");
33
33
  let MurLockService = MurLockService_1 = class MurLockService {
34
34
  constructor(options, asyncStorageService) {
@@ -60,12 +60,17 @@ let MurLockService = MurLockService_1 = class MurLockService {
60
60
  return new Promise((resolve) => setTimeout(resolve, ms));
61
61
  }
62
62
  log(level, message, context) {
63
- const levels = ['debug', 'log', 'warn', 'error'];
63
+ const levels = [
64
+ 'debug',
65
+ 'log',
66
+ 'warn',
67
+ 'error',
68
+ ];
64
69
  if (levels.indexOf(level) >= levels.indexOf(this.options.logLevel)) {
65
70
  this.logger[level](message, context);
66
71
  }
67
72
  }
68
- lock(lockKey, releaseTime, clientId) {
73
+ lock(lockKey, releaseTime, clientId, wait) {
69
74
  return __awaiter(this, void 0, void 0, function* () {
70
75
  this.log('debug', `MurLock Client ID is ${clientId}`);
71
76
  const attemptLock = (attemptsRemaining) => __awaiter(this, void 0, void 0, function* () {
@@ -86,8 +91,14 @@ let MurLockService = MurLockService_1 = class MurLockService {
86
91
  return true;
87
92
  }
88
93
  else {
89
- this.log('warn', `Failed to obtain lock for key ${lockKey}, retrying in ${this.options.wait} ms...`);
90
- yield this.sleep(this.options.wait * (this.options.maxAttempts - attemptsRemaining + 1));
94
+ const delay = wait
95
+ ? typeof wait === 'function'
96
+ ? wait(this.options.maxAttempts - attemptsRemaining + 1)
97
+ : wait
98
+ : this.options.wait *
99
+ (this.options.maxAttempts - attemptsRemaining + 1);
100
+ this.log('warn', `Failed to obtain lock for key ${lockKey}, retrying in ${delay} ms...`);
101
+ yield this.sleep(delay);
91
102
  return attemptLock(attemptsRemaining - 1);
92
103
  }
93
104
  }
@@ -117,11 +128,11 @@ let MurLockService = MurLockService_1 = class MurLockService {
117
128
  }
118
129
  });
119
130
  }
120
- acquireLock(lockKey, clientId, releaseTime) {
131
+ acquireLock(lockKey, clientId, releaseTime, wait) {
121
132
  return __awaiter(this, void 0, void 0, function* () {
122
133
  let isLockSuccessful = false;
123
134
  try {
124
- isLockSuccessful = yield this.lock(lockKey, releaseTime, clientId);
135
+ isLockSuccessful = yield this.lock(lockKey, releaseTime, clientId, wait);
125
136
  }
126
137
  catch (error) {
127
138
  throw new exceptions_1.MurLockException(`Failed to acquire lock for key ${lockKey}: ${error.message}`);
@@ -141,14 +152,23 @@ let MurLockService = MurLockService_1 = class MurLockService {
141
152
  }
142
153
  });
143
154
  }
144
- runWithLock(lockKey, releaseTime, fn) {
155
+ runWithLock(lockKey, releaseTime, waitOrFn, fn) {
145
156
  return __awaiter(this, void 0, void 0, function* () {
157
+ let wait;
158
+ let operation;
159
+ if (fn === undefined) {
160
+ operation = waitOrFn;
161
+ }
162
+ else {
163
+ wait = waitOrFn;
164
+ operation = fn;
165
+ }
146
166
  this.asyncStorageService.registerContext();
147
167
  this.asyncStorageService.setClientID('clientId', (0, utils_1.generateUuid)());
148
168
  const clientId = this.asyncStorageService.get('clientId');
149
- yield this.acquireLock(lockKey, clientId, releaseTime);
169
+ yield this.acquireLock(lockKey, clientId, releaseTime, wait);
150
170
  try {
151
- return yield fn();
171
+ return yield operation();
152
172
  }
153
173
  finally {
154
174
  yield this.releaseLock(lockKey, clientId);
@@ -1 +1 @@
1
- {"version":3,"file":"murlock.service.js","sourceRoot":"","sources":["../lib/murlock.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"murlock.service.js","sourceRoot":"","sources":["../lib/murlock.service.ts"],"names":[],"mappings":"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"}