vona-module-a-executor 5.0.29 → 5.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.
package/LICENSE CHANGED
File without changes
@@ -66,3 +66,4 @@ declare module 'vona' {
66
66
  }
67
67
  }
68
68
  /** scope: end */
69
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/.metadata/index.ts"],"names":[],"mappings":"AACA,kBAAkB;AAClB,cAAc,0BAA0B,CAAC;AAEzC,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;CAGrB;AACD,OAAO,QAAQ,wBAAwB,CAAC;IAEhC,UAAiB,YAAY;KAG5B;CACR;AACD,gBAAgB;AAChB,kBAAkB;AAClB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,iBAAiB;QAChC,UAAU,EAAE,YAAY,CAAC;KAC1B;CACF;AACD,gBAAgB;AAChB,qBAAqB;AACrB,cAAc,wBAAwB,CAAC;AAEvC,OAAO,oBAAoB,CAAC;AAC5B,OAAO,QAAQ,oBAAoB,CAAC;IAEhC,UAAiB,cAAc;QAC7B,qBAAqB,EAAE,KAAK,CAAC;KAC9B;CAGJ;AACD,OAAO,QAAQ,wBAAwB,CAAC;IAEhC,UAAiB,eAAe;KAG/B;IAEC,UAAiB,eAAe;QAC9B,IAAI,aAAa,IAAI,6BAA6B,CAAC;QACnD,IAAI,UAAU,IAAI,qBAAqB,CAAC;KAEzC;CACV;AACD,mBAAmB;AACnB,qBAAqB;AACrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,eAAe,CAAC;CAC7B;AACD,mBAAmB;AACnB,qBAAqB;AAErB,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,kBAAkB;QACjC,6BAA6B,EAAE,eAAe,CAAC;KAChD;CACF;AACD,mBAAmB;AACnB,mBAAmB;AACnB,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,MAAM,CAAC;AAGzD,qBACa,oBAAqB,SAAQ,aAAa;CAAG;AAE1D,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,cAAc,CAAC;CACvB;AAED,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,gBAAgB;QAC/B,YAAY,EAAE,oBAAoB,CAAC;KACpC;IAED,UAAiB,mBAAmB;QAClC,QAAQ,EAAE,oBAAoB,CAAC;KAChC;CAOF;AACD,iBAAiB"}
@@ -1,2 +1,3 @@
1
1
  export declare const __ThisModule__ = "a-executor";
2
2
  export { ScopeModuleAExecutor 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,eAAe,CAAC;AAC3C,OAAO,EAAE,oBAAoB,IAAI,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { FunctionAsync } from 'vona';
2
2
  import type { IApiPathRecordMethodMap } from 'vona-module-a-web';
3
- import type { INewCtxOptions, IPerformActionOptions } from '../types/executor.ts';
4
3
  import { BeanBase } from 'vona';
4
+ import type { INewCtxOptions, IPerformActionOptions } from '../types/executor.ts';
5
5
  export declare class BeanExecutor extends BeanBase {
6
6
  performAction<METHOD extends keyof IApiPathRecordMethodMap, PATH extends keyof IApiPathRecordMethodMap[METHOD]>(method: METHOD, path: PATH, options?: IPerformActionOptions): Promise<any>;
7
7
  runInBackground(fn: FunctionAsync<void>): Promise<void>;
@@ -11,3 +11,4 @@ export declare class BeanExecutor extends BeanBase {
11
11
  private _newCtxInnerStep1;
12
12
  private _newCtxInnerStep2;
13
13
  }
14
+ //# sourceMappingURL=bean.executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bean.executor.d.ts","sourceRoot":"","sources":["../../src/bean/bean.executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAGjE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAGhC,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAIlF,qBACa,YAAa,SAAQ,QAAQ;IAClC,aAAa,CAAC,MAAM,SAAS,MAAM,uBAAuB,EAAE,IAAI,SAAS,MAAM,uBAAuB,CAAC,MAAM,CAAC,EAClH,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,GAAG,CAAC;IAMf,eAAe,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC;IAMjC,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAW3F,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAQrF,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;YAS5E,iBAAiB;YAoDjB,iBAAiB;CA2BhC"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './.metadata/index.ts';
2
2
  export * from './types/index.ts';
3
+ //# 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,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -62,6 +62,10 @@ let BeanExecutor = class BeanExecutor extends BeanBase {
62
62
  options = Object.assign({}, options);
63
63
  // instanceName !== undefined means isolate
64
64
  options.instanceName = options.instanceName === undefined ? this.ctx?.instanceName : options.instanceName;
65
+ if (options.instanceName === this.ctx?.instanceName) {
66
+ options.locale = options.locale === undefined ? this.ctx?.locale : options.locale;
67
+ options.tz = options.tz === undefined ? this.ctx?.tz : options.tz;
68
+ }
65
69
  return this.newCtx(fn, options);
66
70
  }
67
71
  async mockCtx(fn, options) {
@@ -293,3 +297,4 @@ ScopeModuleAExecutor = __decorate([Scope(), BeanInfo({
293
297
  /** scope: end */
294
298
 
295
299
  export { BeanExecutor, ScopeModuleAExecutor, ServiceExecutor, SymbolRouterMiddleware };
300
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/lib/utils.ts","../src/bean/bean.executor.ts","../src/types/executor.ts","../src/service/executor.ts","../src/.metadata/index.ts"],"sourcesContent":[null,null,null,null,null],"names":["__delegateProperties","ctx","ctxCaller","property","__delegateProperty","request","BeanExecutor","BeanBase","performAction","method","path","options","url","app","util","combineApiPath","scope","service","executor","performActionInner","runInBackground","fn","bean","database","switchDbIsolate","newCtx","newCtxIsolate","Object","assign","instanceName","undefined","locale","tz","mockCtx","dbInfo","isNil","level","instance","_newCtxInnerStep1","_newCtxInnerStep2","switchDb","innerAccess","isolate","createAnonymousContext","req","res","ctxStorage","run","extraData","meta","appReady","Error","get","$scope","checkAppReadyInstance","transaction","current","begin","transactionOptions","commitsDone","__decorate","Bean","__z_BeanInfo","module","SymbolRouterMiddleware","Symbol","ServiceExecutor","statusCode","toUpperCase","combineParamsAndQuery","params","query","headers","accept","authToken","authorization","cast","body","onionsDynamic","onions","status","code","data","createError","message","prepareGeneralInfo","clientName","deepExtend","key","startsWith","value","Aspect","aopMethod","__metadata","_a","METHOD","String","prototype","Service","ScopeModuleAExecutor","BeanScopeBase","Scope"],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export declare function __delegateProperties(ctx: any, ctxCaller: any): void;
2
2
  export declare function __delegateProperty(ctx: any, ctxCaller: any, property: any): void;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAAC,GAAG,KAAA,EAAE,SAAS,KAAA,QAQlD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,KAAA,EAAE,SAAS,KAAA,EAAE,QAAQ,KAAA,QAG1D"}
@@ -1,7 +1,8 @@
1
1
  import type { IApiPathRecordMethodMap } from 'vona-module-a-web';
2
- import type { IGeneralInfoOptions, IPerformActionOptions } from '../types/executor.ts';
3
2
  import { BeanBase } from 'vona';
3
+ import type { IGeneralInfoOptions, IPerformActionOptions } from '../types/executor.ts';
4
4
  export declare class ServiceExecutor extends BeanBase {
5
5
  performActionInner<METHOD extends keyof IApiPathRecordMethodMap>(method: METHOD, url: string, options?: IPerformActionOptions): Promise<any>;
6
6
  prepareGeneralInfo(options?: IGeneralInfoOptions): IGeneralInfoOptions;
7
7
  }
8
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/service/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAGjE,OAAO,EAAE,QAAQ,EAAoB,MAAM,MAAM,CAAC;AAIlD,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAIvF,qBACa,eAAgB,SAAQ,QAAQ;IAErC,kBAAkB,CAAC,MAAM,SAAS,MAAM,uBAAuB,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC;IAyDlJ,kBAAkB,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,mBAAmB;CA4BvE"}
@@ -40,3 +40,4 @@ export interface IGeneralInfoOptions {
40
40
  instanceName?: keyof IInstanceRecord | undefined | null;
41
41
  extraData?: INewCtxExtraData;
42
42
  }
43
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/types/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEtE,eAAO,MAAM,sBAAsB,eAAmC,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,CAAC;CACH;AAED,MAAM,WAAW,cAAe,SAAQ,kBAAkB;IACxD,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,aAAa,CAAC;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;IACzC,SAAS,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AAID,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CAC1C;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,aAAa,CAAC;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC;IACxD,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B"}
@@ -1 +1,2 @@
1
1
  export * from './executor.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,eAAe,CAAC"}
package/package.json CHANGED
@@ -1,16 +1,17 @@
1
1
  {
2
2
  "name": "vona-module-a-executor",
3
- "type": "module",
4
- "version": "5.0.29",
5
- "title": "a-executor",
6
- "vonaModule": {
7
- "dependencies": {}
8
- },
3
+ "version": "5.1.1",
9
4
  "description": "",
10
- "author": "",
11
5
  "keywords": [
12
6
  "Vona Module"
13
7
  ],
8
+ "author": "",
9
+ "files": [
10
+ "assets",
11
+ "dist",
12
+ "src"
13
+ ],
14
+ "type": "module",
14
15
  "exports": {
15
16
  ".": {
16
17
  "types": [
@@ -21,10 +22,13 @@
21
22
  },
22
23
  "./package.json": "./package.json"
23
24
  },
24
- "files": [
25
- "assets",
26
- "dist"
27
- ],
25
+ "scripts": {
26
+ "clean": "rimraf dist tsconfig.build.tsbuildinfo",
27
+ "tsc:publish": "npm run clean && vona :bin:buildModule --sourcemap && tsc -p tsconfig.build.json",
28
+ "prepublishOnly": "npm run tsc:publish",
29
+ "prepack": "clean-package",
30
+ "postpack": "clean-package restore && npm run clean"
31
+ },
28
32
  "dependencies": {
29
33
  "koa-compose": "^4.1.0"
30
34
  },
@@ -32,8 +36,9 @@
32
36
  "clean-package": "^2.2.0",
33
37
  "rimraf": "^6.0.1"
34
38
  },
35
- "scripts": {
36
- "clean": "rimraf dist tsconfig.build.tsbuildinfo",
37
- "tsc:publish": "npm run clean && vona :bin:buildModule && tsc -p tsconfig.build.json"
38
- }
39
- }
39
+ "title": "a-executor",
40
+ "vonaModule": {
41
+ "dependencies": {}
42
+ },
43
+ "gitHead": "991189da4443b789fcf77872990b901ccf43bccb"
44
+ }
@@ -0,0 +1,96 @@
1
+ // eslint-disable
2
+ /** bean: begin */
3
+ export * from '../bean/bean.executor.ts';
4
+
5
+ import 'vona';
6
+ declare module 'vona' {
7
+
8
+
9
+ }
10
+ declare module 'vona-module-a-executor' {
11
+
12
+ export interface BeanExecutor {
13
+ /** @internal */
14
+ get scope(): ScopeModuleAExecutor;
15
+ }
16
+ }
17
+ /** bean: end */
18
+ /** bean: begin */
19
+ import type { BeanExecutor } from '../bean/bean.executor.ts';
20
+ import 'vona';
21
+ declare module 'vona' {
22
+ export interface IBeanRecordGlobal {
23
+ 'executor': BeanExecutor;
24
+ }
25
+ }
26
+ /** bean: end */
27
+ /** service: begin */
28
+ export * from '../service/executor.ts';
29
+
30
+ import 'vona-module-a-bean';
31
+ declare module 'vona-module-a-bean' {
32
+
33
+ export interface IServiceRecord {
34
+ 'a-executor:executor': never;
35
+ }
36
+
37
+
38
+ }
39
+ declare module 'vona-module-a-executor' {
40
+
41
+ export interface ServiceExecutor {
42
+ /** @internal */
43
+ get scope(): ScopeModuleAExecutor;
44
+ }
45
+
46
+ export interface ServiceExecutor {
47
+ get $beanFullName(): 'a-executor.service.executor';
48
+ get $onionName(): 'a-executor:executor';
49
+
50
+ }
51
+ }
52
+ /** service: end */
53
+ /** service: begin */
54
+ import type { ServiceExecutor } from '../service/executor.ts';
55
+ export interface IModuleService {
56
+ 'executor': ServiceExecutor;
57
+ }
58
+ /** service: end */
59
+ /** service: begin */
60
+
61
+ import 'vona';
62
+ declare module 'vona' {
63
+ export interface IBeanRecordGeneral {
64
+ 'a-executor.service.executor': ServiceExecutor;
65
+ }
66
+ }
67
+ /** service: end */
68
+ /** scope: begin */
69
+ import { BeanScopeBase, type BeanScopeUtil } from 'vona';
70
+ import { Scope } from 'vona-module-a-bean';
71
+
72
+ @Scope()
73
+ export class ScopeModuleAExecutor extends BeanScopeBase {}
74
+
75
+ export interface ScopeModuleAExecutor {
76
+ util: BeanScopeUtil;
77
+ service: IModuleService;
78
+ }
79
+
80
+ import 'vona';
81
+ declare module 'vona' {
82
+ export interface IBeanScopeRecord {
83
+ 'a-executor': ScopeModuleAExecutor;
84
+ }
85
+
86
+ export interface IBeanScopeContainer {
87
+ executor: ScopeModuleAExecutor;
88
+ }
89
+
90
+
91
+
92
+
93
+
94
+
95
+ }
96
+ /** scope: end */
@@ -0,0 +1,2 @@
1
+ export const __ThisModule__ = 'a-executor';
2
+ export { ScopeModuleAExecutor as ScopeModule } from './index.ts';
@@ -0,0 +1,137 @@
1
+ import type { FunctionAsync } from 'vona';
2
+ import type { IApiPathRecordMethodMap } from 'vona-module-a-web';
3
+
4
+ import { isNil } from '@cabloy/utils';
5
+ import { BeanBase } from 'vona';
6
+ import { Bean } from 'vona-module-a-bean';
7
+
8
+ import type { INewCtxOptions, IPerformActionOptions } from '../types/executor.ts';
9
+
10
+ import { __delegateProperties } from '../lib/utils.ts';
11
+
12
+ @Bean()
13
+ export class BeanExecutor extends BeanBase {
14
+ async performAction<METHOD extends keyof IApiPathRecordMethodMap, PATH extends keyof IApiPathRecordMethodMap[METHOD]>(
15
+ method: METHOD,
16
+ path: PATH,
17
+ options?: IPerformActionOptions,
18
+ ): Promise<any> {
19
+ // url
20
+ const url = this.app.util.combineApiPath(path as any, '', true, true);
21
+ return await this.scope.service.executor.performActionInner(method, url, options);
22
+ }
23
+
24
+ runInBackground(fn: FunctionAsync<void>) {
25
+ return this.bean.database.switchDbIsolate(() => {
26
+ return this.newCtx(fn);
27
+ });
28
+ }
29
+
30
+ async newCtxIsolate<RESULT>(fn: FunctionAsync<RESULT>, options?: INewCtxOptions): Promise<RESULT> {
31
+ options = Object.assign({}, options);
32
+ // instanceName !== undefined means isolate
33
+ options.instanceName = options.instanceName === undefined ? this.ctx?.instanceName : options.instanceName;
34
+ if (options.instanceName === this.ctx?.instanceName) {
35
+ options.locale = options.locale === undefined ? this.ctx?.locale : options.locale;
36
+ options.tz = options.tz === undefined ? this.ctx?.tz : options.tz;
37
+ }
38
+ return this.newCtx(fn, options);
39
+ }
40
+
41
+ async mockCtx<RESULT>(fn: FunctionAsync<RESULT>, options?: INewCtxOptions): Promise<RESULT> {
42
+ options = Object.assign({}, options);
43
+ options.dbInfo = isNil(options.dbInfo) ? { level: 1 } : options.dbInfo;
44
+ options.instanceName = options.instanceName === undefined ? (this.ctx?.instanceName ?? '') : options.instanceName;
45
+ options.instance = !isNil(options.instanceName);
46
+ return this.newCtx(fn, options);
47
+ }
48
+
49
+ async newCtx<RESULT>(fn: FunctionAsync<RESULT>, options?: INewCtxOptions): Promise<RESULT> {
50
+ return this._newCtxInnerStep1(() => {
51
+ if (isNil(options?.dbInfo)) return this._newCtxInnerStep2(fn, options);
52
+ return this.bean.database.switchDb(() => {
53
+ return this._newCtxInnerStep2(fn, options);
54
+ }, options?.dbInfo);
55
+ }, options);
56
+ }
57
+
58
+ private async _newCtxInnerStep1<RESULT>(fn: FunctionAsync<RESULT>, options?: INewCtxOptions): Promise<RESULT> {
59
+ options = Object.assign({}, options);
60
+ // innerAccess
61
+ const innerAccess = options.innerAccess !== false;
62
+ // isolate
63
+ const isolate = !this.ctx || options.instanceName !== undefined || (!innerAccess && this.ctx?.instanceName === null);
64
+ const ctxCaller = !isolate && this.ctx ? this.ctx : undefined;
65
+ // locale/tz/instanceName
66
+ if (!isolate && this.ctx) {
67
+ options.locale = options.locale === undefined ? this.ctx.locale : options.locale;
68
+ options.tz = options.tz === undefined ? this.ctx.tz : options.tz;
69
+ options.instanceName =
70
+ options.instanceName === undefined
71
+ ? !innerAccess && this.ctx.instanceName === null
72
+ ? undefined
73
+ : this.ctx.instanceName
74
+ : options.instanceName;
75
+ }
76
+ // run
77
+ const ctx = this.app.createAnonymousContext(options.req, options.res);
78
+ return await this.app.ctxStorage.run(ctx, async () => {
79
+ // innerAccess
80
+ ctx.innerAccess = innerAccess;
81
+ // locale
82
+ if (options.locale !== undefined) {
83
+ ctx.locale = options.locale;
84
+ }
85
+ // tz
86
+ if (options.tz !== undefined) {
87
+ ctx.tz = options.tz;
88
+ }
89
+ // instanceName: undefined/null is different
90
+ if (options.instanceName !== undefined) {
91
+ ctx.instanceName = options.instanceName;
92
+ }
93
+ // ctxCaller
94
+ if (ctxCaller) {
95
+ // delegateProperties
96
+ __delegateProperties(ctx, ctxCaller);
97
+ // ctxCaller
98
+ ctx.ctxCaller = ctxCaller;
99
+ } else {
100
+ // isolate: extraData
101
+ if (options.extraData) {
102
+ // delegateProperties
103
+ __delegateProperties(ctx, options.extraData);
104
+ }
105
+ }
106
+ return await fn();
107
+ });
108
+ }
109
+
110
+ private async _newCtxInnerStep2<RESULT>(fn: FunctionAsync<RESULT>, options?: INewCtxOptions): Promise<RESULT> {
111
+ // instance
112
+ const instanceName = this.ctx.instanceName; // use default instanceName when undefined
113
+ if (instanceName !== undefined && instanceName !== null) {
114
+ if (!this.app.meta.appReady) {
115
+ throw new Error(`should not init ctx.instance: ${instanceName}, when app.meta.appReady not true`);
116
+ }
117
+ this.ctx.instance = (await this.bean.instance.get(instanceName))!;
118
+ // start instance
119
+ if (options?.instance) {
120
+ await this.$scope.instance.service.instance.checkAppReadyInstance(true);
121
+ }
122
+ }
123
+ // execute
124
+ let res: RESULT;
125
+ if (options?.transaction) {
126
+ res = await this.bean.database.current.transaction.begin(async () => {
127
+ return await fn();
128
+ }, options?.transactionOptions);
129
+ } else {
130
+ res = await fn();
131
+ }
132
+ // commitsDone
133
+ await this.ctx.commitsDone();
134
+ // ok
135
+ return res;
136
+ }
137
+ }
package/src/index.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './.metadata/index.ts';
2
+ export * from './types/index.ts';
@@ -0,0 +1,45 @@
1
+ export function __delegateProperties(ctx, ctxCaller) {
2
+ for (const property of ['state']) {
3
+ __delegateProperty(ctx, ctxCaller, property);
4
+ }
5
+ for (const property of ['headers']) {
6
+ __delegateProperty(ctx.request, ctxCaller.request, property);
7
+ // if (ctx.request[property]) req[property] = ctx.request[property];
8
+ }
9
+ }
10
+
11
+ export function __delegateProperty(ctx, ctxCaller, property) {
12
+ if (!ctxCaller[property]) ctxCaller[property] = {};
13
+ ctx[property] = ctxCaller[property];
14
+ }
15
+
16
+ // export function delegateProperty(ctx, ctxCaller, property) {
17
+ // if (!ctxCaller[property]) return;
18
+ // if (!ctx[property]) ctx[property] = {};
19
+ // for (const key in ctxCaller[property]) {
20
+ // ctx[property][key] = ctxCaller[property][key];
21
+ // }
22
+ // }
23
+
24
+ // function _delegateProperty(ctx, ctxCaller, property) {
25
+ // const keyMock = `__executeBean__mock__${property}__`;
26
+ // const keyOriginal = `__executeBean__mock__${property}__original__`;
27
+ // if (['headers'].includes(property)) {
28
+ // ctx[keyOriginal] = ctx[property];
29
+ // }
30
+ // Object.defineProperty(ctx, property, {
31
+ // get() {
32
+ // const value = ctxCaller && ctxCaller[property];
33
+ // if (value) return value;
34
+ // //
35
+ // if (['headers'].includes(property)) {
36
+ // return ctx[keyOriginal];
37
+ // }
38
+ // //
39
+ // if (!ctx[keyMock]) {
40
+ // ctx[keyMock] = {};
41
+ // }
42
+ // return ctx[keyMock];
43
+ // },
44
+ // });
45
+ // }
@@ -0,0 +1,120 @@
1
+ import type { IApiPathRecordMethodMap } from 'vona-module-a-web';
2
+
3
+ import { combineParamsAndQuery } from '@cabloy/utils';
4
+ import { BeanBase, cast, deepExtend } from 'vona';
5
+ import { Aspect } from 'vona-module-a-aspect';
6
+ import { Service } from 'vona-module-a-bean';
7
+
8
+ import type { IGeneralInfoOptions, IPerformActionOptions } from '../types/executor.ts';
9
+
10
+ import { SymbolRouterMiddleware } from '../types/executor.ts';
11
+
12
+ @Service()
13
+ export class ServiceExecutor extends BeanBase {
14
+ @Aspect.aopMethod('a-logger:log', { level: 'debug' })
15
+ async performActionInner<METHOD extends keyof IApiPathRecordMethodMap>(method: METHOD, url: string, options?: IPerformActionOptions): Promise<any> {
16
+ // app
17
+ const app = this.app;
18
+ // new ctx
19
+ return await this.bean.executor.newCtx(
20
+ async () => {
21
+ const ctx = this.ctx;
22
+ // default status code
23
+ ctx.res.statusCode = 404;
24
+ ctx.req.method = method.toUpperCase();
25
+ // url
26
+ ctx.req.url = combineParamsAndQuery(url, { params: options?.params, query: options?.query });
27
+ // headers
28
+ ctx.req.headers = Object.assign({}, ctx.req.headers, options?.headers);
29
+ // json
30
+ if (!ctx.req.headers.accept) {
31
+ ctx.req.headers.accept = 'application/json';
32
+ }
33
+ // authToken
34
+ if (options?.authToken) {
35
+ ctx.req.headers.authorization = `Bearer ${options?.authToken}`;
36
+ }
37
+ // // query
38
+ // if (options?.query !== undefined) {
39
+ // cast(ctx.req).query = cast(ctx.request).query = options?.query;
40
+ // }
41
+ // body
42
+ cast(ctx.req).body = ctx.request.body = options?.body ?? {}; // body should set {} if undefined/null
43
+ // onion
44
+ ctx.onionsDynamic = options?.onions;
45
+ // invoke middleware
46
+ await app[SymbolRouterMiddleware](ctx);
47
+ // check result
48
+ if (ctx.status === 200) {
49
+ if (!ctx.body || (ctx.body as any).code === undefined) {
50
+ // not check code, e.g. text/xml
51
+ return ctx.body;
52
+ }
53
+ if ((ctx.body as any).code === 0) {
54
+ return (ctx.body as any).data;
55
+ }
56
+ throw app.util.createError(ctx.body);
57
+ } else {
58
+ if (ctx.body && typeof ctx.body === 'object') {
59
+ throw app.util.createError(ctx.body);
60
+ } else {
61
+ throw app.util.createError({
62
+ code: ctx.status,
63
+ message: ctx.message,
64
+ });
65
+ }
66
+ }
67
+ },
68
+ { innerAccess: options?.innerAccess, extraData: options?.extraData },
69
+ );
70
+ }
71
+
72
+ prepareGeneralInfo(options?: IGeneralInfoOptions): IGeneralInfoOptions {
73
+ const current = this.bean.database.current;
74
+ const level = (options?.dbInfo?.level ?? current?.level ?? 0) + 1;
75
+ const clientName = options?.dbInfo?.clientName ?? current?.clientName;
76
+ const locale = options?.locale === undefined ? this.ctx?.locale : options.locale;
77
+ const tz = options?.tz === undefined ? this.ctx?.tz : options.tz;
78
+ const instanceName = options?.instanceName === undefined ? this.ctx?.instanceName : options.instanceName;
79
+ options = Object.assign({}, options, {
80
+ dbInfo: { level, clientName },
81
+ locale,
82
+ tz,
83
+ instanceName,
84
+ });
85
+ if (this.ctx) {
86
+ options = deepExtend({ extraData: { request: { headers: {} } } }, options)!;
87
+ // extraData: headers
88
+ const headers = options.extraData!.request!.headers!;
89
+ for (const key in this.ctx.request.headers) {
90
+ if (key.startsWith('x-vona-data-') && !headers[key]) {
91
+ const value = this.ctx.request.headers[key];
92
+ if (value) {
93
+ headers[key] = value as string;
94
+ }
95
+ }
96
+ }
97
+ }
98
+ return options;
99
+ }
100
+ }
101
+
102
+ // for (const key of ['x-clientid', 'x-scene']) {
103
+ // if (!headers[key]) {
104
+ // const value =
105
+ // key === 'x-clientid'
106
+ // ? (<any>ctx.app.bean).util.getFrontClientId()
107
+ // : (<any>ctx.app.bean).util.getFrontScene();
108
+ // if (value) {
109
+ // headers[key] = value;
110
+ // }
111
+ // }
112
+ // }
113
+ // for (const key of ['host', 'origin', 'referer', 'user-agent']) {
114
+ // if (!headers[key]) {
115
+ // const value = this.ctx.request.headers[key];
116
+ // if (value) {
117
+ // headers[key] = value;
118
+ // }
119
+ // }
120
+ // }
@@ -0,0 +1,50 @@
1
+ import type { ContextState, IInstanceRecord, ILocaleRecord, PowerPartial } from 'vona';
2
+ import type { ConfigOnions } from 'vona-module-a-onion';
3
+ import type { IDbInfo, ITransactionOptions } from 'vona-module-a-orm';
4
+
5
+ export const SymbolRouterMiddleware = Symbol('SymbolRouterMiddleware');
6
+
7
+ export interface INewCtxExtraData {
8
+ state?: ContextState;
9
+ request?: {
10
+ headers?: Record<string, string>;
11
+ };
12
+ }
13
+
14
+ export interface INewCtxOptions extends INewCtxBaseOptions {
15
+ dbInfo?: Partial<IDbInfo>;
16
+ }
17
+
18
+ export interface INewCtxBaseOptions {
19
+ locale?: keyof ILocaleRecord;
20
+ tz?: string;
21
+ instanceName?: keyof IInstanceRecord | undefined | null;
22
+ instance?: boolean;
23
+ transaction?: boolean;
24
+ transactionOptions?: ITransactionOptions;
25
+ extraData?: INewCtxExtraData | undefined;
26
+ innerAccess?: boolean;
27
+ req?: any;
28
+ res?: any;
29
+ }
30
+
31
+ // cannot provide instanceName/locale/tz for safety
32
+ // can newCtx/newCtxIsolate for using new instanceName/locale/tz
33
+ export interface IPerformActionOptions {
34
+ innerAccess?: boolean;
35
+ params?: object;
36
+ query?: object;
37
+ headers?: object;
38
+ body?: any;
39
+ onions?: PowerPartial<ConfigOnions>;
40
+ authToken?: string;
41
+ extraData?: INewCtxExtraData | undefined;
42
+ }
43
+
44
+ export interface IGeneralInfoOptions {
45
+ dbInfo?: Partial<IDbInfo>;
46
+ locale?: keyof ILocaleRecord;
47
+ tz?: string;
48
+ instanceName?: keyof IInstanceRecord | undefined | null;
49
+ extraData?: INewCtxExtraData;
50
+ }
@@ -0,0 +1 @@
1
+ export * from './executor.ts';