vona-module-a-redlock 5.0.30 → 5.1.2

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/LICENSE CHANGED
File without changes
@@ -55,3 +55,4 @@ declare module 'vona' {
55
55
  }
56
56
  }
57
57
  /** scope: end */
58
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/.metadata/index.ts"],"names":[],"mappings":"AACA,qBAAqB;AACrB,cAAc,uBAAuB,CAAC;AAEtC,OAAO,oBAAoB,CAAC;AAC5B,OAAO,QAAQ,oBAAoB,CAAC;IAEhC,UAAiB,cAAc;QAC7B,mBAAmB,EAAE,KAAK,CAAC;KAC5B;CAGJ;AACD,OAAO,QAAQ,uBAAuB,CAAC;IAE/B,UAAiB,cAAc;KAG9B;IAEC,UAAiB,cAAc;QAC7B,IAAI,aAAa,IAAI,2BAA2B,CAAC;QACjD,IAAI,UAAU,IAAI,mBAAmB,CAAC;KAEvC;CACV;AACD,mBAAmB;AACnB,qBAAqB;AACrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,cAAc,CAAC;CAC3B;AACD,mBAAmB;AACnB,qBAAqB;AAErB,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,kBAAkB;QACjC,2BAA2B,EAAE,cAAc,CAAC;KAC7C;CACF;AACD,mBAAmB;AACnB,oBAAoB;AACpB,cAAc,qBAAqB,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,kBAAkB;AAClB,mBAAmB;AACnB,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAGhF,qBACa,mBAAoB,SAAQ,aAAa;CAAG;AAEzD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,gBAAgB,CAAC,OAAO,MAAM,CAAC,CAAC;IACxC,OAAO,EAAE,cAAc,CAAC;CACvB;AAED,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,gBAAgB;QAC/B,WAAW,EAAE,mBAAmB,CAAC;KAClC;IAED,UAAiB,mBAAmB;QAClC,OAAO,EAAE,mBAAmB,CAAC;KAC9B;IAED,UAAiB,gBAAgB;QAC/B,WAAW,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC;KACxC;CAKF;AACD,iBAAiB"}
@@ -1,2 +1,3 @@
1
1
  export declare const __ThisModule__ = "a-redlock";
2
2
  export { ScopeModuleARedlock as ScopeModule } from './index.ts';
3
+ //# sourceMappingURL=this.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"this.d.ts","sourceRoot":"","sources":["../../src/.metadata/this.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,IAAI,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import type { VonaApplication } from 'vona';
2
2
  import type { ConfigRedlock } from '../types/redlock.ts';
3
3
  export declare function config(app: VonaApplication): ConfigRedlock;
4
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAE5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,wBAAgB,MAAM,CAAC,GAAG,EAAE,eAAe,iBAgB1C"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './.metadata/index.ts';
2
2
  export * from './lib/index.ts';
3
3
  export * from './types/index.ts';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -1,12 +1,10 @@
1
1
  import { BeanInfo, BeanBase, instanceDesp, deepExtend, BeanScopeBase, SymbolModuleBelong } from 'vona';
2
+ import { __decorate } from 'tslib';
2
3
  import { Redlock } from '@sesamecare-oss/redlock';
3
4
  import { Service, Scope } from 'vona-module-a-bean';
4
5
  import { getRedisClientKeyPrefix } from 'vona-module-a-redis';
5
6
 
6
- var _dec$1, _dec2$1, _class$1;
7
- let ServiceRedlock = (_dec$1 = Service(), _dec2$1 = BeanInfo({
8
- module: "a-redlock"
9
- }), _dec$1(_class$1 = _dec2$1(_class$1 = class ServiceRedlock extends BeanBase {
7
+ let ServiceRedlock = class ServiceRedlock extends BeanBase {
10
8
  constructor(...args) {
11
9
  super(...args);
12
10
  this._redlockDefault = void 0;
@@ -72,7 +70,10 @@ let ServiceRedlock = (_dec$1 = Service(), _dec2$1 = BeanInfo({
72
70
  // create
73
71
  return new Redlock(clients, options.options);
74
72
  }
75
- }) || _class$1) || _class$1);
73
+ };
74
+ ServiceRedlock = __decorate([Service(), BeanInfo({
75
+ module: "a-redlock"
76
+ })], ServiceRedlock);
76
77
 
77
78
  function config(app) {
78
79
  const lockTTL = app.meta.isDev ? 8 : app.meta.isTest ? 60 : 30;
@@ -92,11 +93,10 @@ function config(app) {
92
93
  return redlock;
93
94
  }
94
95
 
95
- var _dec, _dec2, _class;
96
- let ScopeModuleARedlock = (_dec = Scope(), _dec2 = BeanInfo({
96
+ let ScopeModuleARedlock = class ScopeModuleARedlock extends BeanScopeBase {};
97
+ ScopeModuleARedlock = __decorate([Scope(), BeanInfo({
97
98
  module: "a-redlock"
98
- }), _dec(_class = _dec2(_class = class ScopeModuleARedlock extends BeanScopeBase {}) || _class) || _class);
99
-
99
+ })], ScopeModuleARedlock);
100
100
  /** scope: end */
101
101
 
102
102
  class BeanRedlockBase extends BeanBase {
@@ -112,3 +112,4 @@ class BeanRedlockBase extends BeanBase {
112
112
  }
113
113
 
114
114
  export { BeanRedlockBase, ScopeModuleARedlock, ServiceRedlock, config };
115
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/service/redlock.ts","../src/config/config.ts","../src/.metadata/index.ts","../src/lib/beanRedlockBase.ts"],"sourcesContent":[null,null,null,null],"names":["ServiceRedlock","BeanBase","constructor","args","_redlockDefault","lock","resource","fn","options","instanceName","undefined","ctx","redlock","redlockDefault","lockTTL","scope","config","_lockResource","getRedisClientKeyPrefix","app","instanceDesp","_lock","acquire","_lockTimer","_lockDone","clearInterval","setInterval","extend","then","catch","_err","release","lockIsolate","bean","database","current","switchDbIsolate","_create","base","create","options2","deepExtend","clients","clientName","client","redis","get","push","Redlock","__decorate","Service","__z_BeanInfo","module","meta","isDev","isTest","driftFactor","retryCount","retryDelay","retryJitter","ScopeModuleARedlock","BeanScopeBase","Scope","BeanRedlockBase","$scope","service","_prepareResource","SymbolModuleBelong"],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import type { FunctionAsync } from 'vona';
2
- import type { IRedlockLockIsolateOptions, IRedlockLockOptions } from '../types/redlock.ts';
3
2
  import { BeanBase } from 'vona';
3
+ import type { IRedlockLockIsolateOptions, IRedlockLockOptions } from '../types/redlock.ts';
4
4
  export declare class BeanRedlockBase<TypeRedlockLockResource, TypeRedlockLockIsolateResource> extends BeanBase {
5
5
  lock<RESULT>(resource: TypeRedlockLockResource, fn: FunctionAsync<RESULT>, options?: IRedlockLockOptions): Promise<RESULT>;
6
6
  lockIsolate<RESULT>(resource: TypeRedlockLockIsolateResource, fn: FunctionAsync<RESULT>, options?: IRedlockLockIsolateOptions): Promise<RESULT>;
7
7
  private _prepareResource;
8
8
  }
9
+ //# sourceMappingURL=beanRedlockBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beanRedlockBase.d.ts","sourceRoot":"","sources":["../../src/lib/beanRedlockBase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAsB,MAAM,MAAM,CAAC;AAEpD,OAAO,KAAK,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE3F,qBAAa,eAAe,CAAC,uBAAuB,EAAE,8BAA8B,CAAE,SAAQ,QAAQ;IAC9F,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,uBAAuB,EAAE,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1H,WAAW,CAAC,MAAM,EACtB,QAAQ,EAAE,8BAA8B,EACxC,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,EACzB,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAAC,MAAM,CAAC;IAIlB,OAAO,CAAC,gBAAgB;CAGzB"}
@@ -1 +1,2 @@
1
1
  export * from './beanRedlockBase.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { FunctionAsync, PowerPartial } from 'vona';
2
- import type { IRedlockClientOptions, IRedlockLockIsolateOptions, IRedlockLockOptions } from '../types/redlock.ts';
3
2
  import { Redlock } from '@sesamecare-oss/redlock';
4
3
  import { BeanBase } from 'vona';
4
+ import type { IRedlockClientOptions, IRedlockLockIsolateOptions, IRedlockLockOptions } from '../types/redlock.ts';
5
5
  export declare class ServiceRedlock extends BeanBase {
6
6
  private _redlockDefault;
7
7
  lock<RESULT>(resource: string, fn: FunctionAsync<RESULT>, options?: IRedlockLockOptions): Promise<RESULT>;
@@ -10,3 +10,4 @@ export declare class ServiceRedlock extends BeanBase {
10
10
  create(options?: PowerPartial<IRedlockClientOptions>): Redlock;
11
11
  private _create;
12
12
  }
13
+ //# sourceMappingURL=redlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redlock.d.ts","sourceRoot":"","sources":["../../src/service/redlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAA4B,MAAM,MAAM,CAAC;AAI1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAElH,qBACa,cAAe,SAAQ,QAAQ;IAC1C,OAAO,CAAC,eAAe,CAAU;IAEpB,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IAuCzG,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAAG,OAAO,CAAC,MAAM,CAAC;IAWpI,OAAO,KAAK,cAAc,GAKzB;IAEM,MAAM,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,qBAAqB,CAAC,GAAG,OAAO;IAKrE,OAAO,CAAC,OAAO;CAUhB"}
@@ -1 +1,2 @@
1
1
  export * from './redlock.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -22,3 +22,4 @@ declare module 'vona-module-a-meta' {
22
22
  redlock: never;
23
23
  }
24
24
  }
25
+ //# sourceMappingURL=redlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redlock.d.ts","sourceRoot":"","sources":["../../src/types/redlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,CAAC,MAAM,kBAAkB,CAAC,EAAE,CAAC;IACtC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,qBAAqB,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,0BAA2B,SAAQ,mBAAmB,EAAE,OAAO,CAAC,OAAO,CAAC;CAAG;AAE5F,OAAO,QAAQ,oBAAoB,CAAC;IAClC,UAAiB,eAAe;QAC9B,OAAO,EAAE,KAAK,CAAC;KAChB;CACF"}
package/package.json CHANGED
@@ -1,26 +1,18 @@
1
1
  {
2
2
  "name": "vona-module-a-redlock",
3
- "type": "module",
4
- "version": "5.0.30",
5
- "title": "a-redlock",
6
- "vonaModule": {
7
- "dependencies": {},
8
- "globalDependencies": {
9
- "@sesamecare-oss/redlock": true
10
- },
11
- "globalDependenciesDev": {},
12
- "metas": {
13
- "redlock": {
14
- "scopeResource": true,
15
- "boilerplate": "boilerplate"
16
- }
17
- }
18
- },
3
+ "version": "5.1.2",
19
4
  "description": "",
20
- "author": "",
21
5
  "keywords": [
22
6
  "Vona Module"
23
7
  ],
8
+ "author": "",
9
+ "files": [
10
+ "assets",
11
+ "cli",
12
+ "dist",
13
+ "src"
14
+ ],
15
+ "type": "module",
24
16
  "exports": {
25
17
  ".": {
26
18
  "types": [
@@ -31,11 +23,13 @@
31
23
  },
32
24
  "./package.json": "./package.json"
33
25
  },
34
- "files": [
35
- "assets",
36
- "cli",
37
- "dist"
38
- ],
26
+ "scripts": {
27
+ "clean": "rimraf dist tsconfig.build.tsbuildinfo",
28
+ "tsc:publish": "npm run clean && vona :bin:buildModule --sourcemap && tsc -p tsconfig.build.json",
29
+ "prepublishOnly": "npm run tsc:publish",
30
+ "prepack": "clean-package",
31
+ "postpack": "clean-package restore && npm run clean"
32
+ },
39
33
  "dependencies": {
40
34
  "@sesamecare-oss/redlock": "^1.4.0"
41
35
  },
@@ -43,8 +37,19 @@
43
37
  "clean-package": "^2.2.0",
44
38
  "rimraf": "^6.0.1"
45
39
  },
46
- "scripts": {
47
- "clean": "rimraf dist tsconfig.build.tsbuildinfo",
48
- "tsc:publish": "npm run clean && vona :bin:buildModule && tsc -p tsconfig.build.json"
49
- }
50
- }
40
+ "title": "a-redlock",
41
+ "vonaModule": {
42
+ "dependencies": {},
43
+ "globalDependencies": {
44
+ "@sesamecare-oss/redlock": true
45
+ },
46
+ "globalDependenciesDev": {},
47
+ "metas": {
48
+ "redlock": {
49
+ "scopeResource": true,
50
+ "boilerplate": "boilerplate"
51
+ }
52
+ }
53
+ },
54
+ "gitHead": "a79189b882c17af5911573896a781bbb0046d37d"
55
+ }
@@ -0,0 +1,78 @@
1
+ // eslint-disable
2
+ /** service: begin */
3
+ export * from '../service/redlock.ts';
4
+
5
+ import 'vona-module-a-bean';
6
+ declare module 'vona-module-a-bean' {
7
+
8
+ export interface IServiceRecord {
9
+ 'a-redlock:redlock': never;
10
+ }
11
+
12
+
13
+ }
14
+ declare module 'vona-module-a-redlock' {
15
+
16
+ export interface ServiceRedlock {
17
+ /** @internal */
18
+ get scope(): ScopeModuleARedlock;
19
+ }
20
+
21
+ export interface ServiceRedlock {
22
+ get $beanFullName(): 'a-redlock.service.redlock';
23
+ get $onionName(): 'a-redlock:redlock';
24
+
25
+ }
26
+ }
27
+ /** service: end */
28
+ /** service: begin */
29
+ import type { ServiceRedlock } from '../service/redlock.ts';
30
+ export interface IModuleService {
31
+ 'redlock': ServiceRedlock;
32
+ }
33
+ /** service: end */
34
+ /** service: begin */
35
+
36
+ import 'vona';
37
+ declare module 'vona' {
38
+ export interface IBeanRecordGeneral {
39
+ 'a-redlock.service.redlock': ServiceRedlock;
40
+ }
41
+ }
42
+ /** service: end */
43
+ /** config: begin */
44
+ export * from '../config/config.ts';
45
+ import type { config } from '../config/config.ts';
46
+ /** config: end */
47
+ /** scope: begin */
48
+ import { BeanScopeBase, type BeanScopeUtil, type TypeModuleConfig } from 'vona';
49
+ import { Scope } from 'vona-module-a-bean';
50
+
51
+ @Scope()
52
+ export class ScopeModuleARedlock extends BeanScopeBase {}
53
+
54
+ export interface ScopeModuleARedlock {
55
+ util: BeanScopeUtil;
56
+ config: TypeModuleConfig<typeof config>;
57
+ service: IModuleService;
58
+ }
59
+
60
+ import 'vona';
61
+ declare module 'vona' {
62
+ export interface IBeanScopeRecord {
63
+ 'a-redlock': ScopeModuleARedlock;
64
+ }
65
+
66
+ export interface IBeanScopeContainer {
67
+ redlock: ScopeModuleARedlock;
68
+ }
69
+
70
+ export interface IBeanScopeConfig {
71
+ 'a-redlock': ReturnType<typeof config>;
72
+ }
73
+
74
+
75
+
76
+
77
+ }
78
+ /** scope: end */
@@ -0,0 +1,2 @@
1
+ export const __ThisModule__ = 'a-redlock';
2
+ export { ScopeModuleARedlock as ScopeModule } from './index.ts';
@@ -0,0 +1,21 @@
1
+ import type { VonaApplication } from 'vona';
2
+
3
+ import type { ConfigRedlock } from '../types/redlock.ts';
4
+
5
+ export function config(app: VonaApplication) {
6
+ const lockTTL = app.meta.isDev ? 8 : app.meta.isTest ? 60 : 30;
7
+ const redlock: ConfigRedlock = {
8
+ lockTTL: lockTTL * 1000,
9
+ base: {
10
+ clients: ['redlock'],
11
+ // https://github.com/mike-marcacci/node-redlock#configuration
12
+ options: {
13
+ driftFactor: 0.01,
14
+ retryCount: -1,
15
+ retryDelay: 200,
16
+ retryJitter: 100,
17
+ },
18
+ },
19
+ };
20
+ return redlock;
21
+ }
package/src/index.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './.metadata/index.ts';
2
+ export * from './lib/index.ts';
3
+ export * from './types/index.ts';
@@ -0,0 +1,23 @@
1
+ import type { FunctionAsync } from 'vona';
2
+
3
+ import { BeanBase, SymbolModuleBelong } from 'vona';
4
+
5
+ import type { IRedlockLockIsolateOptions, IRedlockLockOptions } from '../types/redlock.ts';
6
+
7
+ export class BeanRedlockBase<TypeRedlockLockResource, TypeRedlockLockIsolateResource> extends BeanBase {
8
+ async lock<RESULT>(resource: TypeRedlockLockResource, fn: FunctionAsync<RESULT>, options?: IRedlockLockOptions): Promise<RESULT> {
9
+ return this.$scope.redlock.service.redlock.lock(this._prepareResource(resource), fn, options);
10
+ }
11
+
12
+ async lockIsolate<RESULT>(
13
+ resource: TypeRedlockLockIsolateResource,
14
+ fn: FunctionAsync<RESULT>,
15
+ options?: IRedlockLockIsolateOptions,
16
+ ): Promise<RESULT> {
17
+ return this.$scope.redlock.service.redlock.lockIsolate(this._prepareResource(resource), fn, options);
18
+ }
19
+
20
+ private _prepareResource(resource: TypeRedlockLockResource | TypeRedlockLockIsolateResource) {
21
+ return `${this[SymbolModuleBelong]}.${resource}`;
22
+ }
23
+ }
@@ -0,0 +1 @@
1
+ export * from './beanRedlockBase.ts';
@@ -0,0 +1,86 @@
1
+ import type { FunctionAsync, PowerPartial } from 'vona';
2
+
3
+ import { Redlock } from '@sesamecare-oss/redlock';
4
+ import { BeanBase, deepExtend, instanceDesp } from 'vona';
5
+ import { Service } from 'vona-module-a-bean';
6
+ import { getRedisClientKeyPrefix } from 'vona-module-a-redis';
7
+
8
+ import type { IRedlockClientOptions, IRedlockLockIsolateOptions, IRedlockLockOptions } from '../types/redlock.ts';
9
+
10
+ @Service()
11
+ export class ServiceRedlock extends BeanBase {
12
+ private _redlockDefault: Redlock;
13
+
14
+ public async lock<RESULT>(resource: string, fn: FunctionAsync<RESULT>, options?: IRedlockLockOptions): Promise<RESULT> {
15
+ const instanceName = options?.instanceName === undefined ? this.ctx?.instanceName : options?.instanceName;
16
+ const redlock = options?.redlock ?? this.redlockDefault;
17
+ const lockTTL = options?.lockTTL ?? this.scope.config.lockTTL;
18
+ // resource
19
+ const _lockResource = `${getRedisClientKeyPrefix('redlock', this.app)}${instanceDesp(instanceName)}:${resource}`;
20
+ // lock
21
+ let _lock = await redlock.acquire([_lockResource], lockTTL);
22
+ // timer
23
+ let _lockTimer = null as any;
24
+ const _lockDone = () => {
25
+ if (_lockTimer) {
26
+ clearInterval(_lockTimer);
27
+ _lockTimer = null;
28
+ }
29
+ };
30
+ _lockTimer = setInterval(() => {
31
+ _lock
32
+ .extend(lockTTL)
33
+ .then(lock => {
34
+ _lock = lock;
35
+ })
36
+ .catch(_err => {
37
+ // need not logger error
38
+ // this.$logger.error(err);
39
+ _lockDone();
40
+ });
41
+ }, lockTTL / 2);
42
+ try {
43
+ return await fn();
44
+ } finally {
45
+ _lockDone();
46
+ // not await, and throw error
47
+ _lock.release().catch(_err => {
48
+ // do nothing
49
+ });
50
+ }
51
+ }
52
+
53
+ public async lockIsolate<RESULT>(resource: string, fn: FunctionAsync<RESULT>, options?: IRedlockLockIsolateOptions): Promise<RESULT> {
54
+ return await this.lock(
55
+ resource,
56
+ async () => {
57
+ if (!this.bean.database.current) return await fn();
58
+ return await this.bean.database.switchDbIsolate(fn, options);
59
+ },
60
+ options,
61
+ );
62
+ }
63
+
64
+ private get redlockDefault() {
65
+ if (!this._redlockDefault) {
66
+ this._redlockDefault = this._create(this.scope.config.base);
67
+ }
68
+ return this._redlockDefault;
69
+ }
70
+
71
+ public create(options?: PowerPartial<IRedlockClientOptions>): Redlock {
72
+ const options2: IRedlockClientOptions = options ? deepExtend({}, this.scope.config.base, options) : this.scope.config.base;
73
+ return this._create(options2);
74
+ }
75
+
76
+ private _create(options: IRedlockClientOptions) {
77
+ // clients
78
+ const clients = [] as any;
79
+ for (const clientName of options.clients) {
80
+ const client = this.app.bean.redis.get(clientName);
81
+ clients.push(client);
82
+ }
83
+ // create
84
+ return new Redlock(clients, options.options);
85
+ }
86
+ }
@@ -0,0 +1 @@
1
+ export * from './redlock.ts';
@@ -0,0 +1,28 @@
1
+ import type * as Redlock from '@sesamecare-oss/redlock';
2
+ import type { IInstanceRecord } from 'vona';
3
+ import type { IDbInfo } from 'vona-module-a-orm';
4
+ import type { IRedisClientRecord } from 'vona-module-a-redis';
5
+
6
+ export interface IRedlockClientOptions {
7
+ clients: (keyof IRedisClientRecord)[];
8
+ options: Redlock.Settings;
9
+ }
10
+
11
+ export interface ConfigRedlock {
12
+ lockTTL: number;
13
+ base: IRedlockClientOptions;
14
+ }
15
+
16
+ export interface IRedlockLockOptions {
17
+ instanceName?: keyof IInstanceRecord | undefined | null;
18
+ redlock?: Redlock.Redlock;
19
+ lockTTL?: number;
20
+ }
21
+
22
+ export interface IRedlockLockIsolateOptions extends IRedlockLockOptions, Partial<IDbInfo> {}
23
+
24
+ declare module 'vona-module-a-meta' {
25
+ export interface IMetaNameRecord {
26
+ redlock: never;
27
+ }
28
+ }