cabloy 5.1.112 → 5.1.114

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 (157) hide show
  1. package/.cabloy-version +1 -1
  2. package/.claude/skills/cabloy-backend-scaffold/SKILL.md +2 -0
  3. package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +13 -0
  4. package/.github/workflows/playwright-e2e.yml +34 -2
  5. package/.github/workflows/vona-test-mysql.yml +12 -0
  6. package/.github/workflows/vona-test-pg.yml +12 -0
  7. package/CHANGELOG.md +27 -0
  8. package/CLAUDE.md +6 -0
  9. package/cabloy-docs/backend/internal-aop-guide.md +35 -0
  10. package/cabloy-docs/backend/migration-and-changes.md +13 -9
  11. package/cabloy-docs/backend/unit-testing.md +97 -1
  12. package/e2e/scripts/startE2eVona.ts +51 -13
  13. package/e2e/specs/a-commerce/commerce.spec.ts +1 -0
  14. package/e2e/specs/cabloy-basic/basic.spec.ts +12 -7
  15. package/package.json +1 -1
  16. package/vona/packages-cli/cli/package.json +1 -1
  17. package/vona/packages-cli/cli-set-api/package.json +1 -1
  18. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.bin.test.ts +6 -9
  19. package/vona/packages-cli/cli-set-api/toolsIsolate/test.ts +74 -32
  20. package/vona/packages-utils/compose/package.json +1 -1
  21. package/vona/packages-utils/compose/src/index.ts +19 -11
  22. package/vona/packages-vona/vona/package.json +1 -1
  23. package/vona/packages-vona/vona-core/package.json +1 -1
  24. package/vona/packages-vona/vona-core/src/lib/bean/beanContainer.ts +15 -3
  25. package/vona/packages-vona/vona-mock/package.json +1 -1
  26. package/vona/pnpm-lock.yaml +82 -67
  27. package/vona/src/backend/config/config/config.test.ts +1 -1
  28. package/vona/src/suite/a-commerce/modules/commerce-catalog/src/.metadata/index.ts +8 -0
  29. package/vona/src/suite/a-commerce/modules/commerce-catalog/src/bean/meta.version.ts +1 -0
  30. package/vona/src/suite/a-commerce/modules/commerce-catalog/src/config/locale/en-us.ts +3 -0
  31. package/vona/src/suite/a-commerce/modules/commerce-catalog/src/config/locale/zh-cn.ts +3 -0
  32. package/vona/src/suite/a-commerce/modules/commerce-catalog/src/dto/skuAttribute.tsx +17 -0
  33. package/vona/src/suite/a-commerce/modules/commerce-catalog/src/entity/sku.tsx +10 -1
  34. package/vona/src/suite/a-commerce/modules/commerce-catalog/test/catalog.test.ts +234 -0
  35. package/vona/src/suite/a-commerce/modules/commerce-member/test/addressOwnership.test.ts +6 -1
  36. package/vona/src/suite/a-commerce/modules/commerce-payment/package.json +2 -1
  37. package/vona/src/suite/a-commerce/modules/commerce-payment/src/.metadata/index.ts +228 -0
  38. package/vona/src/suite/a-commerce/modules/commerce-payment/src/bean/meta.index.ts +15 -0
  39. package/vona/src/suite/a-commerce/modules/commerce-payment/src/bean/meta.version.ts +35 -0
  40. package/vona/src/suite/a-commerce/modules/commerce-payment/src/dto/paymentAttemptView.tsx +26 -0
  41. package/vona/src/suite/a-commerce/modules/commerce-payment/src/entity/paymentAttempt.tsx +34 -0
  42. package/vona/src/suite/a-commerce/modules/commerce-payment/src/model/paymentAttempt.ts +10 -0
  43. package/vona/src/suite/a-commerce/modules/commerce-payment/src/service/paymentAttempt.ts +41 -0
  44. package/vona/src/suite/a-commerce/modules/commerce-payment/test/paymentAttempt.test.ts +33 -0
  45. package/vona/src/suite/a-commerce/modules/commerce-promotion/package.json +4 -2
  46. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/.metadata/index.ts +533 -2
  47. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/.metadata/locales.ts +18 -0
  48. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/bean/meta.index.ts +24 -0
  49. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/bean/meta.version.ts +137 -0
  50. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/bean/ssrMenu.couponTemplate.ts +30 -0
  51. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/config/locale/en-us.ts +37 -0
  52. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/config/locale/zh-cn.ts +37 -0
  53. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/controller/coupon.ts +37 -0
  54. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/controller/couponTemplate.ts +65 -0
  55. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/dto/couponIssue.tsx +22 -0
  56. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/dto/couponMineItem.tsx +32 -0
  57. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/dto/couponTemplateCreate.tsx +43 -0
  58. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/dto/couponTemplateSelectReq.tsx +28 -0
  59. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/dto/couponTemplateSelectRes.tsx +11 -0
  60. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/dto/couponTemplateSelectResItem.tsx +39 -0
  61. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/dto/couponTemplateUpdate.tsx +19 -0
  62. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/dto/couponTemplateView.tsx +25 -0
  63. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/entity/couponAudit.tsx +73 -0
  64. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/entity/couponGrant.tsx +83 -0
  65. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/entity/couponTemplate.tsx +82 -0
  66. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/index.ts +1 -0
  67. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/model/couponAudit.ts +10 -0
  68. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/model/couponGrant.ts +10 -0
  69. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/model/couponTemplate.ts +10 -0
  70. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/service/coupon.ts +397 -0
  71. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/service/couponTemplate.ts +52 -0
  72. package/vona/src/suite/a-commerce/modules/commerce-promotion/test/couponReservation.test.ts +162 -0
  73. package/vona/src/suite/a-commerce/modules/commerce-seed/src/bean/meta.version.ts +11 -13
  74. package/vona/src/suite/a-commerce/modules/commerce-trade/package.json +4 -1
  75. package/vona/src/suite/a-commerce/modules/commerce-trade/src/.metadata/index.ts +277 -0
  76. package/vona/src/suite/a-commerce/modules/commerce-trade/src/bean/bean.scheduleOrderExpiry.ts +26 -0
  77. package/vona/src/suite/a-commerce/modules/commerce-trade/src/bean/meta.index.ts +9 -0
  78. package/vona/src/suite/a-commerce/modules/commerce-trade/src/bean/meta.version.ts +79 -0
  79. package/vona/src/suite/a-commerce/modules/commerce-trade/src/config/locale/en-us.ts +14 -1
  80. package/vona/src/suite/a-commerce/modules/commerce-trade/src/config/locale/zh-cn.ts +14 -1
  81. package/vona/src/suite/a-commerce/modules/commerce-trade/src/controller/checkout.ts +19 -0
  82. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/checkoutCreate.tsx +19 -0
  83. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/checkoutResult.tsx +32 -0
  84. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderAddressSnapshot.tsx +33 -0
  85. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderCouponSnapshot.tsx +35 -0
  86. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderLineSkuAttributeSnapshot.tsx +15 -0
  87. package/vona/src/suite/a-commerce/modules/commerce-trade/src/entity/order.tsx +90 -0
  88. package/vona/src/suite/a-commerce/modules/commerce-trade/src/entity/orderAudit.tsx +36 -0
  89. package/vona/src/suite/a-commerce/modules/commerce-trade/src/entity/orderLine.tsx +52 -0
  90. package/vona/src/suite/a-commerce/modules/commerce-trade/src/entity/stockAudit.tsx +39 -7
  91. package/vona/src/suite/a-commerce/modules/commerce-trade/src/entity/stockReservation.tsx +4 -1
  92. package/vona/src/suite/a-commerce/modules/commerce-trade/src/model/order.ts +15 -0
  93. package/vona/src/suite/a-commerce/modules/commerce-trade/src/model/orderAudit.ts +10 -0
  94. package/vona/src/suite/a-commerce/modules/commerce-trade/src/model/orderLine.ts +10 -0
  95. package/vona/src/suite/a-commerce/modules/commerce-trade/src/service/order.ts +556 -0
  96. package/vona/src/suite/a-commerce/modules/commerce-trade/src/service/stockBalance.ts +32 -0
  97. package/vona/src/suite/a-commerce/modules/commerce-trade/test/cartOwnership.test.ts +8 -3
  98. package/vona/src/suite/a-commerce/modules/commerce-trade/test/checkoutReservation.test.ts +158 -0
  99. package/vona/src/suite/a-commerce/modules/commerce-trade/test/orderSnapshot.test.ts +203 -0
  100. package/vona/src/suite/a-commerce/modules/commerce-trade/test/reservationExpiry.test.ts +163 -0
  101. package/vona/src/suite/a-commerce/modules/commerce-trade/test/stockBalance.test.ts +274 -66
  102. package/vona/src/suite/a-commerce/modules/commerce-trade/test/stockReservation.test.ts +282 -82
  103. package/vona/src/suite-vendor/a-image/modules/image-cloudflare/package.json +1 -1
  104. package/vona/src/suite-vendor/a-image/modules/image-cloudflare/src/service/imageCloudflare.ts +10 -7
  105. package/vona/src/suite-vendor/a-image/package.json +1 -1
  106. package/vona/src/suite-vendor/a-vona/modules/a-aspect/package.json +1 -1
  107. package/vona/src/suite-vendor/a-vona/modules/a-aspect/src/types/aopMethod.ts +16 -3
  108. package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +4 -2
  109. package/vona/src/suite-vendor/a-vona/modules/a-core/src/bean/bean.core.ts +6 -0
  110. package/vona/src/suite-vendor/a-vona/modules/a-core/src/index.ts +1 -0
  111. package/vona/src/suite-vendor/a-vona/modules/a-core/src/lib/core.ts +6 -0
  112. package/vona/src/suite-vendor/a-vona/modules/a-core/src/types/fetch.ts +7 -0
  113. package/vona/src/suite-vendor/a-vona/modules/a-core/src/types/index.ts +1 -0
  114. package/vona/src/suite-vendor/a-vona/modules/a-executor/package.json +1 -1
  115. package/vona/src/suite-vendor/a-vona/modules/a-executor/src/lib/utils.ts +5 -3
  116. package/vona/src/suite-vendor/a-vona/modules/a-retryable/package.json +50 -0
  117. package/vona/src/suite-vendor/a-vona/modules/a-retryable/src/.metadata/index.ts +55 -0
  118. package/vona/src/suite-vendor/a-vona/modules/a-retryable/src/.metadata/this.ts +2 -0
  119. package/vona/src/suite-vendor/a-vona/modules/a-retryable/src/bean/aopMethod.retryable.ts +45 -0
  120. package/vona/src/suite-vendor/a-vona/modules/a-retryable/src/index.ts +1 -0
  121. package/vona/src/suite-vendor/a-vona/modules/a-retryable/tsconfig.build.json +11 -0
  122. package/vona/src/suite-vendor/a-vona/modules/a-retryable/tsconfig.json +7 -0
  123. package/vona/src/suite-vendor/a-vona/modules/a-startup/package.json +1 -1
  124. package/vona/src/suite-vendor/a-vona/modules/a-startup/src/service/startup.ts +2 -2
  125. package/vona/src/suite-vendor/a-vona/modules/a-version/package.json +1 -1
  126. package/vona/src/suite-vendor/a-vona/modules/a-version/src/service/version.ts +12 -12
  127. package/vona/src/suite-vendor/a-vona/modules/a-version/src/types/version.ts +4 -4
  128. package/vona/src/suite-vendor/a-vona/modules/a-vona/package.json +2 -1
  129. package/vona/src/suite-vendor/a-vona/package.json +2 -1
  130. package/vona/src/suite-vendor/a-vona/tsconfig.json +3 -0
  131. package/zova/packages-utils/zova-jsx/package.json +3 -3
  132. package/zova/packages-zova/zova/package.json +3 -3
  133. package/zova/packages-zova/zova-core/package.json +2 -2
  134. package/zova/pnpm-lock.yaml +14 -14
  135. package/zova/src/suite/a-commerce/modules/commerce-catalog/src/page/product/controller.tsx +0 -1
  136. package/zova/src/suite/a-commerce/modules/commerce-promotion/cli/openapi.config.ts +9 -0
  137. package/zova/src/suite/a-commerce/modules/commerce-promotion/package.json +2 -1
  138. package/zova/src/suite/a-commerce/modules/commerce-promotion/src/.metadata/index.ts +115 -1
  139. package/zova/src/suite/a-commerce/modules/commerce-promotion/src/api/commercePromotionCoupon.ts +24 -0
  140. package/zova/src/suite/a-commerce/modules/commerce-promotion/src/api/openapi/baseURL.ts +5 -0
  141. package/zova/src/suite/a-commerce/modules/commerce-promotion/src/api/openapi/index.ts +3 -0
  142. package/zova/src/suite/a-commerce/modules/commerce-promotion/src/api/openapi/schemas.ts +478 -0
  143. package/zova/src/suite/a-commerce/modules/commerce-promotion/src/api/openapi/types.ts +8187 -0
  144. package/zova/src/suite/a-commerce/modules/commerce-promotion/src/apiSchema/commercePromotionCoupon.ts +13 -0
  145. package/zova/src/suite/a-commerce/modules/commerce-promotion/src/model/coupon.ts +19 -0
  146. package/zova/src/suite/a-commerce/modules/commerce-trade/cli/openapi.config.ts +1 -0
  147. package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/index.ts +30 -0
  148. package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/commerceTradeCheckout.ts +27 -0
  149. package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/openapi/schemas.ts +92 -52
  150. package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/openapi/types.ts +1389 -848
  151. package/zova/src/suite/a-commerce/modules/commerce-trade/src/apiSchema/commerceTradeCheckout.ts +13 -0
  152. package/zova/src/suite/a-commerce/modules/commerce-trade/src/model/cart.ts +14 -0
  153. package/zova/src/suite/a-home/modules/home-layoutadmin/src/component/layoutAdmin/controller.tsx +17 -7
  154. package/zova/src/suite/a-home/modules/home-layoutadmin/src/component/layoutAdmin/render.header.tsx +1 -1
  155. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/controller.tsx +17 -7
  156. package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +3 -3
  157. package/zova/src/suite-vendor/a-zova/package.json +2 -2
@@ -7,6 +7,7 @@ import { globby } from 'globby';
7
7
  import { createWriteStream } from 'node:fs';
8
8
  import os from 'node:os';
9
9
  import path from 'node:path';
10
+ import { pipeline } from 'node:stream/promises';
10
11
  import { run } from 'node:test';
11
12
  import { lcov, spec } from 'node:test/reporters';
12
13
  import { fileURLToPath } from 'node:url';
@@ -63,9 +64,27 @@ async function testRun(projectPath: string, coverage: boolean, patterns: string[
63
64
  ];
64
65
  // app
65
66
  const app: VonaApplication = await createGeneralApp(projectPath);
66
- // concurrency
67
- const concurrency = await prepareConcurrency(app);
68
- return new Promise(resolve => {
67
+ let testError: unknown;
68
+ let closeError: unknown;
69
+ let closePromise: Promise<void> | undefined;
70
+ const closeApplication = async () => {
71
+ const [_, error] = await catchError(() => app.close());
72
+ closeError = error;
73
+ // handles
74
+ if (process.env.TEST_WHYISNODERUNNING === 'true') {
75
+ await sleep(2000);
76
+ const handles = (process as any)._getActiveHandles();
77
+ if (handles.length > 3) {
78
+ whyIsNodeRunning();
79
+ }
80
+ }
81
+ };
82
+ const closeApplicationOnce = () => {
83
+ return (closePromise ??= closeApplication());
84
+ };
85
+ try {
86
+ // concurrency
87
+ const concurrency = await prepareConcurrency(app);
69
88
  const testStream = run({
70
89
  isolation: 'none',
71
90
  concurrency,
@@ -80,47 +99,70 @@ async function testRun(projectPath: string, coverage: boolean, patterns: string[
80
99
  .on('test:coverage', data => {
81
100
  outputCoverageReport(data.summary.totals);
82
101
  })
83
- .on('test:summary', async () => {
84
- resolve(undefined);
85
- })
86
- .on('test:pass', async t => {
102
+ .on('test:pass', t => {
87
103
  if (t.name === '---done---') {
88
- const [_, err] = await catchError(() => {
89
- return app.close();
90
- });
91
- if (err) {
92
- console.error(err);
93
- }
94
- // handles
95
- if (process.env.TEST_WHYISNODERUNNING === 'true') {
96
- await sleep(2000);
97
- const handles = (process as any)._getActiveHandles();
98
- if (handles.length > 3) {
99
- whyIsNodeRunning();
100
- }
101
- }
104
+ void closeApplicationOnce();
102
105
  }
103
106
  });
104
- if (coverage) {
105
- const reporterDir = path.join(projectPath, 'coverage');
106
- fse.ensureDirSync(reporterDir);
107
- const reporterLcov = createWriteStream(path.join(reporterDir, 'lcov.info'));
108
- testStream.compose(lcov).pipe(reporterLcov);
109
- } else {
110
- testStream.compose(spec).pipe(process.stdout);
107
+ const summaryPromise = waitForTestSummary(testStream);
108
+ const reporterPromise = coverage
109
+ ? (() => {
110
+ const reporterDir = path.join(projectPath, 'coverage');
111
+ fse.ensureDirSync(reporterDir);
112
+ const reporterLcov = createWriteStream(path.join(reporterDir, 'lcov.info'));
113
+ return pipeline(testStream.compose(lcov), reporterLcov);
114
+ })()
115
+ : pipeline(testStream.compose(spec), process.stdout, { end: false });
116
+
117
+ const [summarySuccess, [, reporterError]] = await Promise.all([
118
+ summaryPromise,
119
+ catchError(() => reporterPromise),
120
+ ]);
121
+ if (!summarySuccess) {
122
+ throw new Error('node:test reported failed tests');
111
123
  }
124
+ if (reporterError) {
125
+ throw reporterError;
126
+ }
127
+ } catch (error) {
128
+ testError = error;
129
+ } finally {
130
+ await closeApplicationOnce();
131
+ }
132
+ if (testError) {
133
+ if (closeError) console.error(closeError);
134
+ throw toError(testError);
135
+ }
136
+ if (closeError) {
137
+ throw toError(closeError);
138
+ }
139
+ }
140
+
141
+ function toError(error: unknown) {
142
+ return error instanceof Error ? error : new Error(String(error));
143
+ }
144
+
145
+ function waitForTestSummary(testStream: ReturnType<typeof run>) {
146
+ return new Promise<boolean>((resolve, reject) => {
147
+ testStream.once('test:summary', summary => resolve(summary.success)).once('error', reject);
112
148
  });
113
149
  }
114
150
 
115
151
  async function prepareConcurrency(app: VonaApplication) {
116
152
  // check
153
+ const configured = process.env.TEST_CONCURRENCY;
117
154
  let concurrency = 1;
118
- if (process.env.TEST_CONCURRENCY === 'true') {
119
- concurrency = os.cpus().length;
120
- } else if (process.env.TEST_CONCURRENCY === 'false') {
155
+ if (configured === 'false') {
121
156
  concurrency = 1;
157
+ } else if (configured === undefined || configured === 'true') {
158
+ concurrency = Math.max(1, os.cpus().length);
122
159
  } else {
123
- concurrency = Number.parseInt(process.env.TEST_CONCURRENCY!);
160
+ concurrency = Number.parseInt(configured, 10);
161
+ if (!Number.isSafeInteger(concurrency) || concurrency < 1) {
162
+ throw new Error(
163
+ `TEST_CONCURRENCY must be true, false, or a positive integer; received ${configured}`,
164
+ );
165
+ }
124
166
  }
125
167
  if (concurrency === 1) return concurrency;
126
168
  // check again
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cabloy/compose",
3
- "version": "2.1.8",
3
+ "version": "2.1.9",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "cabloy compose",
6
6
  "keywords": [
@@ -10,32 +10,40 @@ function __adapterDefault(_context, chain) {
10
10
  };
11
11
  }
12
12
 
13
+ export type TypeComposeNext = ((context?: any) => any) & {
14
+ replay: (context?: any) => any;
15
+ };
16
+
13
17
  export function compose(chains?: any[], adapter?: TypeComposeAdapter) {
14
18
  if (!adapter) adapter = __adapterDefault;
15
19
  if (!chains) chains = [];
16
20
  return function (context, next?) {
17
- // last called middleware #
18
- let index = -1;
19
- return dispatch(0, context);
20
- function dispatch(i, context) {
21
- if (i <= index) throw new Error('next() called multiple times');
22
- index = i;
21
+ return dispatch(0, context, { index: -1 });
22
+
23
+ function dispatch(i, context, state: { index: number }) {
24
+ if (i <= state.index) throw new Error('next() called multiple times');
25
+ state.index = i;
23
26
  let receiver;
24
27
  let fn;
25
28
  const chain = chains![i];
26
29
  if (chain) {
27
30
  const obj = adapter!(context, chain);
28
- if (!obj) return dispatch(i + 1, context);
31
+ if (!obj) return dispatch(i + 1, context, state);
29
32
  receiver = obj.receiver;
30
33
  fn = obj.fn;
31
34
  if (!fn) throw new Error('fn is not defined');
32
35
  }
33
36
  if (i === chains!.length) fn = next;
34
37
  if (!fn) return context;
35
- return fn.call(receiver, context, (...args) => {
36
- context = args.length === 0 ? context : args[0];
37
- return dispatch(i + 1, context);
38
- });
38
+ const nextPatched = ((...args) => {
39
+ const nextContext = args.length === 0 ? context : args[0];
40
+ return dispatch(i + 1, nextContext, state);
41
+ }) as TypeComposeNext;
42
+ nextPatched.replay = (...args) => {
43
+ const nextContext = args.length === 0 ? context : args[0];
44
+ return dispatch(i + 1, nextContext, { index: i });
45
+ };
46
+ return fn.call(receiver, context, nextPatched);
39
47
  }
40
48
  };
41
49
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona",
3
- "version": "5.1.77",
3
+ "version": "5.1.79",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "Vona is an intuitive, elegant and powerful Node.js framework for rapidly developing enterprise applications of any size",
6
6
  "keywords": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-core",
3
- "version": "5.1.32",
3
+ "version": "5.1.33",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "vona",
6
6
  "keywords": [
@@ -614,7 +614,7 @@ export class BeanContainer {
614
614
  throw new Error(`get property accessor not exists: ${aopMethod.onionName}`);
615
615
  return beanInstance.get(
616
616
  aopMethod.options,
617
- _patchAopNext([receiver, _], next),
617
+ _patchAopMethodNext([receiver, _], next),
618
618
  receiver,
619
619
  prop,
620
620
  );
@@ -627,7 +627,7 @@ export class BeanContainer {
627
627
  return beanInstance.set(
628
628
  aopMethod.options,
629
629
  value,
630
- _patchAopNext([receiver, value], next),
630
+ _patchAopMethodNext([receiver, value], next),
631
631
  receiver,
632
632
  prop,
633
633
  );
@@ -640,7 +640,7 @@ export class BeanContainer {
640
640
  return beanInstance.execute(
641
641
  aopMethod.options,
642
642
  args,
643
- _patchAopNext([receiver, args], next),
643
+ _patchAopMethodNext([receiver, args], next),
644
644
  receiver,
645
645
  prop,
646
646
  );
@@ -673,6 +673,18 @@ function _patchAopNext([receiver, context], next) {
673
673
  };
674
674
  }
675
675
 
676
+ function _patchAopMethodNext([receiver, context], next) {
677
+ const nextPatched = (...args) => {
678
+ context = args.length === 0 ? context : args[0];
679
+ return next([receiver, context]);
680
+ };
681
+ nextPatched.replay = (...args) => {
682
+ const nextContext = args.length === 0 ? context : args[0];
683
+ return next.replay([receiver, nextContext]);
684
+ };
685
+ return nextPatched;
686
+ }
687
+
676
688
  function __checkAopOfDescriptorInfo(descriptorInfo) {
677
689
  if (!descriptorInfo) return true;
678
690
  return !descriptorInfo.dynamic && !descriptorInfo.ofBeanBase;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-mock",
3
- "version": "6.1.32",
3
+ "version": "6.1.33",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "vona mock",
6
6
  "keywords": [
@@ -253,6 +253,9 @@ importers:
253
253
  vona-module-a-redlock:
254
254
  specifier: workspace:^
255
255
  version: link:src/suite-vendor/a-vona/modules/a-redlock
256
+ vona-module-a-retryable:
257
+ specifier: workspace:^
258
+ version: link:src/suite-vendor/a-vona/modules/a-retryable
256
259
  vona-module-a-runtime:
257
260
  specifier: workspace:^
258
261
  version: link:src/suite-vendor/a-vona/modules/a-runtime
@@ -531,8 +534,8 @@ importers:
531
534
  specifier: npm:@cabloy/zod@4.3.8
532
535
  version: '@cabloy/zod@4.3.8'
533
536
  zova:
534
- specifier: ^5.1.138
535
- version: 5.1.138(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
537
+ specifier: ^5.1.139
538
+ version: 5.1.139(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
536
539
  zova-jsx:
537
540
  specifier: ^1.1.78
538
541
  version: 1.1.78(typescript@5.9.3)
@@ -540,8 +543,8 @@ importers:
540
543
  specifier: ^5.1.21
541
544
  version: 5.1.21
542
545
  zova-module-a-bean:
543
- specifier: ^5.1.31
544
- version: 5.1.31
546
+ specifier: ^5.1.32
547
+ version: 5.1.32
545
548
  zova-module-a-behavior:
546
549
  specifier: ^5.1.25
547
550
  version: 5.1.25
@@ -561,11 +564,11 @@ importers:
561
564
  specifier: ^5.1.33
562
565
  version: 5.1.33(vue@3.5.39(typescript@5.9.3))
563
566
  zova-module-a-openapi:
564
- specifier: ^5.1.45
565
- version: 5.1.45
567
+ specifier: ^5.1.46
568
+ version: 5.1.46
566
569
  zova-module-a-router:
567
- specifier: ^5.1.30
568
- version: 5.1.30
570
+ specifier: ^5.1.31
571
+ version: 5.1.31
569
572
  zova-module-a-routertabs:
570
573
  specifier: ^5.1.33
571
574
  version: 5.1.33
@@ -579,8 +582,8 @@ importers:
579
582
  specifier: ^5.1.37
580
583
  version: 5.1.37(vue@3.5.39(typescript@5.9.3))
581
584
  zova-module-rest-resource:
582
- specifier: ^5.1.41
583
- version: 5.1.41
585
+ specifier: ^5.1.42
586
+ version: 5.1.42
584
587
 
585
588
  .zova-rest/cabloy-basic-web:
586
589
  dependencies:
@@ -603,8 +606,8 @@ importers:
603
606
  specifier: npm:@cabloy/zod@4.3.8
604
607
  version: '@cabloy/zod@4.3.8'
605
608
  zova:
606
- specifier: ^5.1.138
607
- version: 5.1.138(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
609
+ specifier: ^5.1.139
610
+ version: 5.1.139(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
608
611
  zova-jsx:
609
612
  specifier: ^1.1.78
610
613
  version: 1.1.78(typescript@5.9.3)
@@ -612,8 +615,8 @@ importers:
612
615
  specifier: ^5.1.21
613
616
  version: 5.1.21
614
617
  zova-module-a-bean:
615
- specifier: ^5.1.31
616
- version: 5.1.31
618
+ specifier: ^5.1.32
619
+ version: 5.1.32
617
620
  zova-module-a-behavior:
618
621
  specifier: ^5.1.25
619
622
  version: 5.1.25
@@ -633,11 +636,11 @@ importers:
633
636
  specifier: ^5.1.33
634
637
  version: 5.1.33(vue@3.5.39(typescript@5.9.3))
635
638
  zova-module-a-openapi:
636
- specifier: ^5.1.45
637
- version: 5.1.45
639
+ specifier: ^5.1.46
640
+ version: 5.1.46
638
641
  zova-module-a-router:
639
- specifier: ^5.1.30
640
- version: 5.1.30
642
+ specifier: ^5.1.31
643
+ version: 5.1.31
641
644
  zova-module-a-routertabs:
642
645
  specifier: ^5.1.33
643
646
  version: 5.1.33
@@ -651,8 +654,8 @@ importers:
651
654
  specifier: ^5.1.37
652
655
  version: 5.1.37(vue@3.5.39(typescript@5.9.3))
653
656
  zova-module-rest-resource:
654
- specifier: ^5.1.41
655
- version: 5.1.41
657
+ specifier: ^5.1.42
658
+ version: 5.1.42
656
659
 
657
660
  .zova-rest/cabloy-commerce:
658
661
  dependencies:
@@ -675,8 +678,8 @@ importers:
675
678
  specifier: npm:@cabloy/zod@4.3.8
676
679
  version: '@cabloy/zod@4.3.8'
677
680
  zova:
678
- specifier: ^5.1.138
679
- version: 5.1.138(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
681
+ specifier: ^5.1.139
682
+ version: 5.1.139(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
680
683
  zova-jsx:
681
684
  specifier: ^1.1.78
682
685
  version: 1.1.78(typescript@5.9.3)
@@ -684,8 +687,8 @@ importers:
684
687
  specifier: ^5.1.21
685
688
  version: 5.1.21
686
689
  zova-module-a-bean:
687
- specifier: ^5.1.31
688
- version: 5.1.31
690
+ specifier: ^5.1.32
691
+ version: 5.1.32
689
692
  zova-module-a-behavior:
690
693
  specifier: ^5.1.25
691
694
  version: 5.1.25
@@ -705,11 +708,11 @@ importers:
705
708
  specifier: ^5.1.33
706
709
  version: 5.1.33(vue@3.5.39(typescript@5.9.3))
707
710
  zova-module-a-openapi:
708
- specifier: ^5.1.45
709
- version: 5.1.45
711
+ specifier: ^5.1.46
712
+ version: 5.1.46
710
713
  zova-module-a-router:
711
- specifier: ^5.1.30
712
- version: 5.1.30
714
+ specifier: ^5.1.31
715
+ version: 5.1.31
713
716
  zova-module-a-routertabs:
714
717
  specifier: ^5.1.33
715
718
  version: 5.1.33
@@ -723,8 +726,8 @@ importers:
723
726
  specifier: ^5.1.37
724
727
  version: 5.1.37(vue@3.5.39(typescript@5.9.3))
725
728
  zova-module-rest-resource:
726
- specifier: ^5.1.41
727
- version: 5.1.41
729
+ specifier: ^5.1.42
730
+ version: 5.1.42
728
731
 
729
732
  .zova-rest/cabloy-commerce-admin:
730
733
  dependencies:
@@ -747,8 +750,8 @@ importers:
747
750
  specifier: npm:@cabloy/zod@4.3.8
748
751
  version: '@cabloy/zod@4.3.8'
749
752
  zova:
750
- specifier: ^5.1.138
751
- version: 5.1.138(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
753
+ specifier: ^5.1.139
754
+ version: 5.1.139(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
752
755
  zova-jsx:
753
756
  specifier: ^1.1.78
754
757
  version: 1.1.78(typescript@5.9.3)
@@ -756,8 +759,8 @@ importers:
756
759
  specifier: ^5.1.21
757
760
  version: 5.1.21
758
761
  zova-module-a-bean:
759
- specifier: ^5.1.31
760
- version: 5.1.31
762
+ specifier: ^5.1.32
763
+ version: 5.1.32
761
764
  zova-module-a-behavior:
762
765
  specifier: ^5.1.25
763
766
  version: 5.1.25
@@ -777,11 +780,11 @@ importers:
777
780
  specifier: ^5.1.33
778
781
  version: 5.1.33(vue@3.5.39(typescript@5.9.3))
779
782
  zova-module-a-openapi:
780
- specifier: ^5.1.45
781
- version: 5.1.45
783
+ specifier: ^5.1.46
784
+ version: 5.1.46
782
785
  zova-module-a-router:
783
- specifier: ^5.1.30
784
- version: 5.1.30
786
+ specifier: ^5.1.31
787
+ version: 5.1.31
785
788
  zova-module-a-routertabs:
786
789
  specifier: ^5.1.33
787
790
  version: 5.1.33
@@ -795,8 +798,8 @@ importers:
795
798
  specifier: ^5.1.37
796
799
  version: 5.1.37(vue@3.5.39(typescript@5.9.3))
797
800
  zova-module-rest-resource:
798
- specifier: ^5.1.41
799
- version: 5.1.41
801
+ specifier: ^5.1.42
802
+ version: 5.1.42
800
803
 
801
804
  packages-cli/cabloy-cli:
802
805
  dependencies:
@@ -1691,7 +1694,7 @@ importers:
1691
1694
  src/suite-vendor/a-file:
1692
1695
  dependencies:
1693
1696
  vona-module-a-file:
1694
- specifier: ^5.0.5
1697
+ specifier: ^5.0.6
1695
1698
  version: link:modules/a-file
1696
1699
  vona-module-file-cloudflare:
1697
1700
  specifier: ^5.0.4
@@ -1991,6 +1994,9 @@ importers:
1991
1994
  vona-module-a-redlock:
1992
1995
  specifier: workspace:^
1993
1996
  version: link:modules/a-redlock
1997
+ vona-module-a-retryable:
1998
+ specifier: workspace:^
1999
+ version: link:modules/a-retryable
1994
2000
  vona-module-a-runtime:
1995
2001
  specifier: workspace:^
1996
2002
  version: link:modules/a-runtime
@@ -2618,6 +2624,15 @@ importers:
2618
2624
  specifier: ^6.1.3
2619
2625
  version: 6.1.3
2620
2626
 
2627
+ src/suite-vendor/a-vona/modules/a-retryable:
2628
+ devDependencies:
2629
+ clean-package:
2630
+ specifier: ^2.2.0
2631
+ version: 2.2.0
2632
+ rimraf:
2633
+ specifier: ^6.1.3
2634
+ version: 6.1.3
2635
+
2621
2636
  src/suite-vendor/a-vona/modules/a-runtime:
2622
2637
  devDependencies:
2623
2638
  clean-package:
@@ -8233,8 +8248,8 @@ packages:
8233
8248
  zova-module-a-app@5.1.25:
8234
8249
  resolution: {integrity: sha512-lLSVjDtYfO1KWDL+l3eMLMFl/aUS2GDgCSEuim5frkTqIJ6OAmW3O6k2XUkzBe31SzzN/tpEYL+pP+HkfULf6g==}
8235
8250
 
8236
- zova-module-a-bean@5.1.31:
8237
- resolution: {integrity: sha512-CkvXhY0Pf9fmBuZbSRZL+PVc/Q1zYVED7EWSmlQzqKIDAGNi2ikdmsBiB1weT1OIS4OEVFBR0I86Dx8z4xrrNg==}
8251
+ zova-module-a-bean@5.1.32:
8252
+ resolution: {integrity: sha512-z2+SvEy+PD2Q8TU3GH1Tb9wXeM9iXlkrW9HXb4Fiw8F00BLffOsXMt02GjLbWdu6LIBDRD98wQeYnNhhg0NCUg==}
8238
8253
 
8239
8254
  zova-module-a-behavior@5.1.25:
8240
8255
  resolution: {integrity: sha512-73DV9BT91wrKh7LPAklr7eU/+GtHSWEEZqxx9jXUL9DoI/M0KAod61Sl+eECqflrcipdQy4w8k3H9HKrSUaTbg==}
@@ -8248,8 +8263,8 @@ packages:
8248
8263
  zova-module-a-command@5.1.33:
8249
8264
  resolution: {integrity: sha512-NLfhe27CMjtHAxtpo0F1fwe/a0SlXyKdqJcGAJ3/gf5mATGwA7HMDCiGCfj/ghczUadb2kCSkAqxHZZDCD7iVA==}
8250
8265
 
8251
- zova-module-a-fetch@5.1.23:
8252
- resolution: {integrity: sha512-druyz1WsNTnSuuXVuScRfkA7yv9oNWAEJuf+3PuuHH5Cv4Q2XYqf5i4DWKevc+Ewct6ls5QXPj4Z1X6D2HYrSQ==}
8266
+ zova-module-a-fetch@5.1.24:
8267
+ resolution: {integrity: sha512-V3phmL02BrC3xcEny+3q7pOnLX+ukKh6YhVpf/XUABsW3I/Va7Zq0AHPMbJw08rCKCrzFfSgL/gZ5GiQT+bXog==}
8253
8268
 
8254
8269
  zova-module-a-form@5.1.45:
8255
8270
  resolution: {integrity: sha512-1WqkRMjQNS161/15vifkE82bGpmZCa20QWSDHKhJS9NbaunM4idSUXyYlv0yA+99Knk+ciwm/sPO0V3QxtYB9A==}
@@ -8269,11 +8284,11 @@ packages:
8269
8284
  zova-module-a-model@5.1.33:
8270
8285
  resolution: {integrity: sha512-NwxCguvESPLUSA2zo5vVH3Qx29o5znmUL2qU9khwjXUmDPbOTeYTkgPCI33fTsy8VnkguoWBLMgUdOsaJF+7OA==}
8271
8286
 
8272
- zova-module-a-openapi@5.1.45:
8273
- resolution: {integrity: sha512-0vEtQvMacEtPJI9rJ9QXNmxnlpCqpqaUtgAB7+hbb8HYI+KbY9LlBGxuArmYEuKFGpv60YD9NEdwAodcrOiMkA==}
8287
+ zova-module-a-openapi@5.1.46:
8288
+ resolution: {integrity: sha512-eBC28HIEQv5AMZHvoCCfaP7PtQvTC/623sBp2PbcT1CVw23OFWCBw7QOJzlzQ2DbevyBZZ546D0xG/TURKXd1w==}
8274
8289
 
8275
- zova-module-a-router@5.1.30:
8276
- resolution: {integrity: sha512-pfKeZdZUMTfkjEVZfLHj21UKjKBhTd79rfF4Mr+OLwV4avK8sDPAudseaAInVvh+T/0Ayq5w9fLhzFYeU1If8A==}
8290
+ zova-module-a-router@5.1.31:
8291
+ resolution: {integrity: sha512-bTtj3JmJKGZwUYwWpsuhigXYseYab/gOmT18WyNw0KetZGY03Y+JnU74oidrK1KtIY384+my1ZQefBlbIZjNeg==}
8277
8292
 
8278
8293
  zova-module-a-routerstack@5.1.26:
8279
8294
  resolution: {integrity: sha512-uu4tFw2DUruanPR7cojM5p6rvyCIh+tnwPmq7s0jZdg+5XBr+YMy1RGjnE8vPFSLHW8C71hlNbps6VpKvKMiiQ==}
@@ -8302,14 +8317,14 @@ packages:
8302
8317
  zova-module-a-zova@5.1.93:
8303
8318
  resolution: {integrity: sha512-pZ7JGNvDoSLdgbQZLj/LtppDWinpd6W+u0WYQvXLuJH3Hnf0Satcpz5fQS+zseJLxm5jhXjmG3ngoYoOfv72RQ==}
8304
8319
 
8305
- zova-module-rest-resource@5.1.41:
8306
- resolution: {integrity: sha512-7Y8rLmHdw0pynlWqsyHPWuCWFLwr/0HsNvfef64cPw91LRujf/7OlulVWqH8ZoFNioZZUpfumB+t/+mICoYfFg==}
8320
+ zova-module-rest-resource@5.1.42:
8321
+ resolution: {integrity: sha512-eMWhc4428U5Hs4BHqFJoF7yaH+bK8t71scIrCnpLbQS7M80lNkoHxY9s/Kl4i8Uo3+lVWbSbuaXWtR+zVLNqpA==}
8307
8322
 
8308
- zova-suite-a-zova@5.1.137:
8309
- resolution: {integrity: sha512-wRq5ZE6+/l2/wU00+TIcfzUtX8AVEfAhp5Gbqc97m+HtQaXREnBuFM1BhyaD1Nn/gxjlVNUixvh1EkkDYfEBng==}
8323
+ zova-suite-a-zova@5.1.138:
8324
+ resolution: {integrity: sha512-KiX37VxKcZxEi+inDva3iTpeA90vNlEGxBvLqDMPgBYIpkiX8iAoGZmEHhV5iKtbvFoq3gcbGAki+iO6R8mtCw==}
8310
8325
 
8311
- zova@5.1.138:
8312
- resolution: {integrity: sha512-qN6XeRF4fqrmRF6ymOJkQ/wrxYdSr9aHGOME7YwYVX+muaAO0ERUxuVjAwT2BKuU5RIlTi6p9cRVqvqf7FFPmw==}
8326
+ zova@5.1.139:
8327
+ resolution: {integrity: sha512-6gA4pfdrSv6ZLp/aeE2nZx8Tu6KwKpuHrIbmZ3zrdHazYRkz51l4y//fBLk45lIfiR7uCIlKb9ziFdvOQQ3F7A==}
8313
8328
 
8314
8329
  zwitch@1.0.5:
8315
8330
  resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==}
@@ -14172,7 +14187,7 @@ snapshots:
14172
14187
 
14173
14188
  zova-module-a-app@5.1.25: {}
14174
14189
 
14175
- zova-module-a-bean@5.1.31:
14190
+ zova-module-a-bean@5.1.32:
14176
14191
  dependencies:
14177
14192
  globby: 14.1.0
14178
14193
 
@@ -14184,7 +14199,7 @@ snapshots:
14184
14199
 
14185
14200
  zova-module-a-command@5.1.33: {}
14186
14201
 
14187
- zova-module-a-fetch@5.1.23:
14202
+ zova-module-a-fetch@5.1.24:
14188
14203
  dependencies:
14189
14204
  axios: 1.18.1
14190
14205
  transitivePeerDependencies:
@@ -14221,13 +14236,13 @@ snapshots:
14221
14236
  - '@vue/composition-api'
14222
14237
  - vue
14223
14238
 
14224
- zova-module-a-openapi@5.1.45:
14239
+ zova-module-a-openapi@5.1.46:
14225
14240
  dependencies:
14226
14241
  '@cabloy/json-schema-to-zod': 2.6.5
14227
14242
  openapi3-ts: 4.6.0
14228
14243
  typestyle: 2.4.0
14229
14244
 
14230
- zova-module-a-router@5.1.30: {}
14245
+ zova-module-a-router@5.1.31: {}
14231
14246
 
14232
14247
  zova-module-a-routerstack@5.1.26: {}
14233
14248
 
@@ -14282,26 +14297,26 @@ snapshots:
14282
14297
  - typescript
14283
14298
  - vue
14284
14299
 
14285
- zova-module-rest-resource@5.1.41: {}
14300
+ zova-module-rest-resource@5.1.42: {}
14286
14301
 
14287
- zova-suite-a-zova@5.1.137(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
14302
+ zova-suite-a-zova@5.1.138(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
14288
14303
  dependencies:
14289
14304
  zova-module-a-api: 5.1.21
14290
14305
  zova-module-a-app: 5.1.25
14291
- zova-module-a-bean: 5.1.31
14306
+ zova-module-a-bean: 5.1.32
14292
14307
  zova-module-a-behavior: 5.1.25
14293
14308
  zova-module-a-behaviors: 5.1.21
14294
14309
  zova-module-a-boundary: 5.1.21
14295
14310
  zova-module-a-command: 5.1.33
14296
- zova-module-a-fetch: 5.1.23
14311
+ zova-module-a-fetch: 5.1.24
14297
14312
  zova-module-a-form: 5.1.45(vue@3.5.39(typescript@5.9.3))
14298
14313
  zova-module-a-icon: 5.1.26
14299
14314
  zova-module-a-interceptor: 5.1.29
14300
14315
  zova-module-a-logger: 5.1.26
14301
14316
  zova-module-a-meta: 5.1.21
14302
14317
  zova-module-a-model: 5.1.33(vue@3.5.39(typescript@5.9.3))
14303
- zova-module-a-openapi: 5.1.45
14304
- zova-module-a-router: 5.1.30
14318
+ zova-module-a-openapi: 5.1.46
14319
+ zova-module-a-router: 5.1.31
14305
14320
  zova-module-a-routerstack: 5.1.26
14306
14321
  zova-module-a-routertabs: 5.1.33
14307
14322
  zova-module-a-ssr: 5.1.31
@@ -14318,10 +14333,10 @@ snapshots:
14318
14333
  - typescript
14319
14334
  - vue
14320
14335
 
14321
- zova@5.1.138(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
14336
+ zova@5.1.139(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
14322
14337
  dependencies:
14323
14338
  zova-core: 5.1.78(patch_hash=ff659aa5f659be32501f56841b72f148c24acf1546f79cce551586e27fcde2ce)(typescript@5.9.3)
14324
- zova-suite-a-zova: 5.1.137(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
14339
+ zova-suite-a-zova: 5.1.138(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
14325
14340
  transitivePeerDependencies:
14326
14341
  - '@vue/composition-api'
14327
14342
  - debug
@@ -32,7 +32,7 @@ export default async function (_app: VonaApplication) {
32
32
  config.database = {
33
33
  testDatabase: true,
34
34
  base: {
35
- pool: { min: 0, max: 1 },
35
+ pool: { min: 0, max: 3 },
36
36
  },
37
37
  clients: {},
38
38
  };