cabloy 5.1.124 → 5.1.126

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 (109) hide show
  1. package/.cabloy-version +1 -1
  2. package/.claude/skills/cabloy-backend-scaffold/SKILL.md +1 -1
  3. package/.claude/skills/cabloy-backend-scaffold/evals/evals.json +6 -0
  4. package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +13 -4
  5. package/.claude/skills/cabloy-workflow/SKILL.md +4 -2
  6. package/.claude/skills/cabloy-workflow/evals/evals.json +14 -2
  7. package/.claude/skills/cabloy-worktree-environment/SKILL.md +206 -0
  8. package/.claude/skills/cabloy-worktree-environment/evals/evals.json +77 -0
  9. package/.github/workflows/vona-test-pg.yml +3 -0
  10. package/.github/workflows/vona-test-sqlite3.yml +3 -0
  11. package/CHANGELOG.md +21 -0
  12. package/CLAUDE.md +1 -1
  13. package/cabloy-docs/.vitepress/config.mjs +2 -0
  14. package/cabloy-docs/ai/playbook-technical-blog-authoring.md +158 -0
  15. package/cabloy-docs/backend/backend-contract-emission-specimen.md +2 -2
  16. package/cabloy-docs/backend/dto-guide.md +10 -7
  17. package/cabloy-docs/backend/dto-infer-generation.md +127 -7
  18. package/cabloy-docs/backend/foundation.md +1 -1
  19. package/cabloy-docs/backend/introduction.md +1 -0
  20. package/cabloy-docs/backend/module-dependencies.md +104 -0
  21. package/cabloy-docs/backend/serialization-guide.md +6 -0
  22. package/cabloy-docs/fullstack/parallel-worktree-environment.md +72 -34
  23. package/cabloy-docs/fullstack/suites-and-modules.md +1 -0
  24. package/cabloy-docs/reference/package-map.md +1 -0
  25. package/e2e/specs/a-commerce/commerce.spec.ts +89 -0
  26. package/package.json +2 -1
  27. package/scripts/init.ts +7 -12
  28. package/scripts/initAppName.test.ts +72 -0
  29. package/scripts/initAppName.ts +50 -0
  30. package/vona/packages-vona/vona/package.json +1 -1
  31. package/vona/pnpm-lock.yaml +48 -146
  32. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineCreate.tsx +6 -27
  33. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineItem.tsx +6 -31
  34. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineUpdate.tsx +6 -2
  35. package/vona/src/suite/a-commerce/modules/commerce-member/src/lib/addressMine.ts +16 -0
  36. package/vona/src/suite/a-commerce/modules/commerce-member/src/service/address.ts +4 -17
  37. package/vona/src/suite/a-commerce/modules/commerce-member/test/addressOwnership.test.ts +63 -19
  38. package/vona/src/suite/a-commerce/modules/commerce-payment/package.json +2 -1
  39. package/vona/src/suite/a-commerce/modules/commerce-payment/src/bean/payScene.commerceOrder.ts +11 -2
  40. package/vona/src/suite/a-commerce/modules/commerce-payment/src/service/commercePayScene.ts +26 -0
  41. package/vona/src/suite/a-commerce/modules/commerce-payment/test/paymentAttempt.test.ts +19 -2
  42. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/config/locale/en-us.ts +5 -2
  43. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/config/locale/zh-cn.ts +5 -2
  44. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/dto/couponTemplateCreate.tsx +26 -35
  45. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/dto/couponTemplateUpdate.tsx +6 -1
  46. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/entity/couponTemplate.tsx +40 -4
  47. package/vona/src/suite/a-commerce/modules/commerce-promotion/test/couponTemplateFormLayout.test.ts +85 -0
  48. package/vona/src/suite/a-commerce/modules/commerce-trade/src/.metadata/index.ts +1 -1
  49. package/vona/src/suite/a-commerce/modules/commerce-trade/src/controller/order.ts +3 -5
  50. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderSummary.tsx +7 -40
  51. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/shipmentView.tsx +6 -15
  52. package/vona/src/suite/a-commerce/modules/commerce-trade/src/lib/order.ts +9 -0
  53. package/vona/src/suite/a-commerce/modules/commerce-trade/src/service/order.ts +121 -11
  54. package/vona/src/suite/a-commerce/modules/commerce-trade/test/order.test.ts +25 -0
  55. package/vona/src/suite/a-commerce/modules/commerce-trade/test/paymentOutcome.test.ts +19 -2
  56. package/vona/src/suite/a-training/modules/training-record/src/dto/detailRecordSubjectResItem.tsx +6 -1
  57. package/vona/src/suite/a-training/modules/training-record/src/dto/recordSelectResItem.tsx +3 -1
  58. package/vona/src/suite/a-training/modules/training-record/src/dto/recordView.tsx +4 -1
  59. package/vona/src/suite/a-training/modules/training-record/test/record.test.ts +45 -0
  60. package/vona/src/suite/a-training/modules/training-student/src/dto/detailRecordResItem.tsx +6 -1
  61. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSummary.tsx +5 -23
  62. package/vona/src/suite/a-training/modules/training-student/test/student.test.ts +37 -5
  63. package/vona/src/suite-vendor/a-pay/modules/a-pay/package.json +1 -1
  64. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/.metadata/index.ts +29 -0
  65. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/bean/meta.index.ts +3 -0
  66. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/bean/meta.redlock.ts +3 -1
  67. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/bean/meta.version.ts +7 -0
  68. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/bean/queue.outboxDispatch.ts +9 -4
  69. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/bean/schedule.providerOperationDispatch.ts +11 -0
  70. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/entity/outboxEvent.tsx +11 -4
  71. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/entity/providerOperation.tsx +12 -0
  72. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/entity/webhookInbox.tsx +6 -0
  73. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/service/outbox.ts +12 -5
  74. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/service/paymentSession.ts +1 -37
  75. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/service/providerOperation.ts +355 -1
  76. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/service/refundOperation.ts +226 -0
  77. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/service/webhook.ts +148 -50
  78. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/types/payScene.ts +2 -1
  79. package/vona/src/suite-vendor/a-pay/modules/pay-mock/package.json +1 -1
  80. package/vona/src/suite-vendor/a-pay/modules/pay-mock/src/.metadata/index.ts +39 -22
  81. package/vona/src/suite-vendor/a-pay/modules/pay-mock/src/bean/payProvider.mock.ts +42 -13
  82. package/vona/src/suite-vendor/a-pay/modules/pay-mock/src/controller/mockPayment.ts +11 -0
  83. package/vona/src/suite-vendor/a-pay/modules/pay-mock/src/dto/mockRefundComplete.tsx +13 -0
  84. package/vona/src/suite-vendor/a-pay/modules/pay-mock/src/dto/mockRefundReceipt.tsx +16 -0
  85. package/vona/src/suite-vendor/a-pay/modules/pay-mock/src/service/payMock.ts +56 -0
  86. package/vona/src/suite-vendor/a-pay/modules/pay-paypal/package.json +2 -1
  87. package/vona/src/suite-vendor/a-pay/modules/pay-paypal/src/bean/payProvider.paypal.ts +117 -8
  88. package/vona/src/suite-vendor/a-pay/modules/pay-stripe/package.json +1 -1
  89. package/vona/src/suite-vendor/a-pay/package.json +5 -5
  90. package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
  91. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGet.ts +5 -5
  92. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  93. package/zova/src/suite/a-commerce/modules/commerce-member/src/api/openapi/schemas.ts +54 -12
  94. package/zova/src/suite/a-commerce/modules/commerce-member/src/api/openapi/types.ts +625 -64
  95. package/zova/src/suite/a-commerce/modules/commerce-promotion/src/api/openapi/types.ts +55 -15
  96. package/zova/src/suite/a-commerce/modules/commerce-trade/cli/openapi.config.ts +1 -1
  97. package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/commerceTradeOrder.ts +15 -17
  98. package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/openapi/schemas.ts +12 -8
  99. package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/openapi/types.ts +111 -26
  100. package/zova/src/suite/a-commerce/modules/commerce-trade/src/apiSchema/commerceTradeOrder.ts +3 -3
  101. package/zova/src/suite/a-commerce/modules/commerce-trade/src/component/tableCellActionRefund/controller.tsx +1 -8
  102. package/zova/src/suite/a-commerce/modules/commerce-trade/src/model/order.ts +5 -9
  103. package/zova/src/suite/a-training/modules/training-student/src/.metadata/index.ts +1 -1
  104. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/schemas.ts +301 -17
  105. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/types.ts +5461 -1788
  106. package/vona/src/suite-vendor/a-pay/modules/a-pay/test/outbox.test.ts +0 -209
  107. package/vona/src/suite-vendor/a-pay/modules/a-pay/test/paymentSession.test.ts +0 -153
  108. package/vona/src/suite-vendor/a-pay/modules/a-pay/test/webhook.test.ts +0 -278
  109. package/vona/src/suite-vendor/a-pay/modules/pay-mock/test/payMock.test.ts +0 -141
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cabloy",
3
- "version": "5.1.124",
3
+ "version": "5.1.126",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "A Node.js fullstack framework",
6
6
  "keywords": [
@@ -23,6 +23,7 @@
23
23
  "scripts": {
24
24
  "init": "node scripts/init.ts",
25
25
  "init:test-data": "node scripts/initTestData.ts",
26
+ "test:scripts": "node --test scripts/initAppName.test.ts",
26
27
  "upgrade": "node scripts/upgrade.ts",
27
28
  "upgrade:dry-run": "node scripts/upgrade.ts --dry-run",
28
29
  "vona": "node ./vona/packages-cli/cli/src/bin/vona.ts --projectPath=vona",
package/scripts/init.ts CHANGED
@@ -9,10 +9,11 @@ import {
9
9
  rmSync,
10
10
  writeFileSync,
11
11
  } from 'node:fs';
12
- import { basename } from 'node:path';
13
12
  import { dirname, resolve } from 'node:path';
14
13
  import { fileURLToPath } from 'node:url';
15
14
 
15
+ import { updateBaseAppName } from './initAppName.ts';
16
+
16
17
  const __dirname = dirname(fileURLToPath(import.meta.url));
17
18
  const ROOT_DIR = resolve(__dirname, '..');
18
19
  const VONA_DIR = resolve(ROOT_DIR, 'vona');
@@ -141,19 +142,13 @@ function seedVonaZovaRestWorkspaceDependencies(pkgPath: string): void {
141
142
  console.log('[init] Seeded Vona .zova-rest dependencies');
142
143
  }
143
144
 
144
- // --- Step 0: Set APP_NAME in .env files ---
145
+ // --- Step 0: Set APP_NAME in base .env files ---
145
146
 
146
147
  function setAppName(): void {
147
- const projectName = basename(ROOT_DIR);
148
- const envFiles = [resolve(ROOT_DIR, 'vona/env/.env'), resolve(ROOT_DIR, 'zova/env/.env')];
149
- for (const filePath of envFiles) {
150
- if (!existsSync(filePath)) continue;
151
- let content = readFileSync(filePath, 'utf-8');
152
- content = content.replace(/^APP_NAME.*/m, `APP_NAME = ${projectName}`);
153
- writeFileSync(filePath, content);
154
- // eslint-disable-next-line
155
- console.log(`[init] Set APP_NAME = ${projectName} in ${filePath}`);
156
- }
148
+ updateBaseAppName(ROOT_DIR);
149
+ // if (updateBaseAppName(ROOT_DIR)) return;
150
+ // eslint-disable-next-line
151
+ // console.log('[init] Linked Git worktree detected; preserving base APP_NAME defaults');
157
152
  }
158
153
 
159
154
  // --- Step A: Generate vona/env/.env.prod.local ---
@@ -0,0 +1,72 @@
1
+ import assert from 'node:assert/strict';
2
+ import { execFileSync } from 'node:child_process';
3
+ import { mkdtempSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
4
+ import { tmpdir } from 'node:os';
5
+ import { basename, resolve } from 'node:path';
6
+ import test from 'node:test';
7
+
8
+ import { isLinkedGitWorktree, updateBaseAppName } from './initAppName.ts';
9
+
10
+ function git(cwd: string, args: string[]): void {
11
+ execFileSync('git', args, { cwd, stdio: 'ignore' });
12
+ }
13
+
14
+ function writeBaseEnvFiles(rootDir: string, appName: string): void {
15
+ for (const relativePath of ['vona/env/.env', 'zova/env/.env']) {
16
+ const filePath = resolve(rootDir, relativePath);
17
+ mkdirSync(resolve(filePath, '..'), { recursive: true });
18
+ writeFileSync(filePath, `APP_NAME = ${appName}\nOTHER_VALUE = preserved\n`);
19
+ }
20
+ }
21
+
22
+ function readBaseEnvFiles(rootDir: string): string[] {
23
+ return ['vona/env/.env', 'zova/env/.env'].map(relativePath =>
24
+ readFileSync(resolve(rootDir, relativePath), 'utf-8'),
25
+ );
26
+ }
27
+
28
+ test('classifies project roots before updating base APP_NAME files', { concurrency: false }, () => {
29
+ const tempDir = mkdtempSync(resolve(tmpdir(), 'cabloy-init-app-name-'));
30
+ const primaryDir = resolve(tempDir, 'primary');
31
+ const linkedDir = resolve(tempDir, 'linked');
32
+ try {
33
+ mkdirSync(primaryDir);
34
+ git(primaryDir, ['init']);
35
+ git(primaryDir, ['config', 'user.email', 'test@example.com']);
36
+ git(primaryDir, ['config', 'user.name', 'Cabloy Test']);
37
+ writeBaseEnvFiles(primaryDir, 'original');
38
+ git(primaryDir, ['add', '.']);
39
+ git(primaryDir, ['commit', '-m', 'initial fixture']);
40
+
41
+ assert.equal(isLinkedGitWorktree(primaryDir), false);
42
+ assert.equal(updateBaseAppName(primaryDir), true);
43
+ for (const content of readBaseEnvFiles(primaryDir)) {
44
+ assert.equal(content, `APP_NAME = ${basename(primaryDir)}\nOTHER_VALUE = preserved\n`);
45
+ }
46
+
47
+ git(primaryDir, ['checkout', '--', '.']);
48
+ git(primaryDir, ['worktree', 'add', '--detach', linkedDir, 'HEAD']);
49
+ const linkedBefore = readBaseEnvFiles(linkedDir);
50
+ assert.equal(isLinkedGitWorktree(linkedDir), true);
51
+ assert.equal(updateBaseAppName(linkedDir), false);
52
+ assert.deepEqual(readBaseEnvFiles(linkedDir), linkedBefore);
53
+
54
+ const nestedProjectDir = resolve(linkedDir, 'created-project');
55
+ writeBaseEnvFiles(nestedProjectDir, 'original');
56
+ assert.equal(isLinkedGitWorktree(nestedProjectDir), false);
57
+ assert.equal(updateBaseAppName(nestedProjectDir), true);
58
+ for (const content of readBaseEnvFiles(nestedProjectDir)) {
59
+ assert.equal(content, `APP_NAME = ${basename(nestedProjectDir)}\nOTHER_VALUE = preserved\n`);
60
+ }
61
+
62
+ const nonGitProjectDir = resolve(tempDir, 'non-git-project');
63
+ writeBaseEnvFiles(nonGitProjectDir, 'original');
64
+ assert.equal(isLinkedGitWorktree(nonGitProjectDir), false);
65
+ assert.equal(updateBaseAppName(nonGitProjectDir), true);
66
+ for (const content of readBaseEnvFiles(nonGitProjectDir)) {
67
+ assert.equal(content, `APP_NAME = ${basename(nonGitProjectDir)}\nOTHER_VALUE = preserved\n`);
68
+ }
69
+ } finally {
70
+ rmSync(tempDir, { recursive: true, force: true });
71
+ }
72
+ });
@@ -0,0 +1,50 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ import { existsSync, readFileSync, realpathSync, writeFileSync } from 'node:fs';
3
+ import { basename, resolve } from 'node:path';
4
+
5
+ function gitOutput(rootDir: string, args: string[]): string {
6
+ return execFileSync('git', args, {
7
+ cwd: rootDir,
8
+ encoding: 'utf-8',
9
+ stdio: ['ignore', 'pipe', 'ignore'],
10
+ }).trim();
11
+ }
12
+
13
+ export function isLinkedGitWorktree(rootDir: string): boolean {
14
+ const projectRoot = realpathSync(resolve(rootDir));
15
+ try {
16
+ const gitRoot = realpathSync(
17
+ resolve(gitOutput(projectRoot, ['rev-parse', '--path-format=absolute', '--show-toplevel'])),
18
+ );
19
+ if (gitRoot !== projectRoot) return false;
20
+
21
+ const gitDir = realpathSync(
22
+ resolve(gitOutput(projectRoot, ['rev-parse', '--path-format=absolute', '--git-dir'])),
23
+ );
24
+ const gitCommonDir = realpathSync(
25
+ resolve(gitOutput(projectRoot, ['rev-parse', '--path-format=absolute', '--git-common-dir'])),
26
+ );
27
+ return gitDir !== gitCommonDir;
28
+ } catch {
29
+ return false;
30
+ }
31
+ }
32
+
33
+ export function updateBaseAppName(rootDir: string): boolean {
34
+ if (isLinkedGitWorktree(rootDir)) return false;
35
+
36
+ const projectRoot = resolve(rootDir);
37
+ const projectName = basename(projectRoot);
38
+ const envFiles = [resolve(projectRoot, 'vona/env/.env'), resolve(projectRoot, 'zova/env/.env')];
39
+ for (const filePath of envFiles) {
40
+ if (!existsSync(filePath)) continue;
41
+ const content = readFileSync(filePath, 'utf-8').replace(
42
+ /^APP_NAME.*/m,
43
+ `APP_NAME = ${projectName}`,
44
+ );
45
+ writeFileSync(filePath, content);
46
+ // eslint-disable-next-line
47
+ console.log(`[init] Set APP_NAME = ${projectName} in ${filePath}`);
48
+ }
49
+ return true;
50
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona",
3
- "version": "5.1.82",
3
+ "version": "5.1.83",
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": [
@@ -418,6 +418,9 @@ importers:
418
418
  vona-module-test-image:
419
419
  specifier: workspace:^
420
420
  version: link:src/suite-vendor/a-test/modules/test-image
421
+ vona-module-test-pay:
422
+ specifier: workspace:^
423
+ version: link:src/suite-vendor/a-test/modules/test-pay
421
424
  vona-module-test-rest:
422
425
  specifier: workspace:^
423
426
  version: link:src/suite-vendor/a-test/modules/test-rest
@@ -714,11 +717,11 @@ importers:
714
717
  specifier: npm:@cabloy/zod@4.3.8
715
718
  version: '@cabloy/zod@4.3.8'
716
719
  zova:
717
- specifier: ^5.1.142
718
- version: 5.1.142(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
720
+ specifier: ^5.1.144
721
+ version: 5.1.144(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
719
722
  zova-jsx:
720
- specifier: ^1.1.79
721
- version: 1.1.79(typescript@5.9.3)
723
+ specifier: ^1.1.81
724
+ version: 1.1.81(typescript@5.9.3)
722
725
  zova-module-a-api:
723
726
  specifier: ^5.1.21
724
727
  version: 5.1.21
@@ -747,8 +750,8 @@ importers:
747
750
  specifier: ^5.1.47
748
751
  version: 5.1.47
749
752
  zova-module-a-pay:
750
- specifier: ^5.0.0
751
- version: 5.0.0
753
+ specifier: ^5.0.2
754
+ version: 5.0.2
752
755
  zova-module-a-router:
753
756
  specifier: ^5.1.31
754
757
  version: 5.1.31
@@ -765,8 +768,8 @@ importers:
765
768
  specifier: ^5.1.37
766
769
  version: 5.1.37(vue@3.5.39(typescript@5.9.3))
767
770
  zova-module-pay-mock:
768
- specifier: ^5.0.0
769
- version: 5.0.0
771
+ specifier: ^5.0.2
772
+ version: 5.0.2
770
773
  zova-module-rest-resource:
771
774
  specifier: ^5.1.42
772
775
  version: 5.1.42
@@ -792,11 +795,11 @@ importers:
792
795
  specifier: npm:@cabloy/zod@4.3.8
793
796
  version: '@cabloy/zod@4.3.8'
794
797
  zova:
795
- specifier: ^5.1.142
796
- version: 5.1.142(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
798
+ specifier: ^5.1.144
799
+ version: 5.1.144(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
797
800
  zova-jsx:
798
- specifier: ^1.1.79
799
- version: 1.1.79(typescript@5.9.3)
801
+ specifier: ^1.1.81
802
+ version: 1.1.81(typescript@5.9.3)
800
803
  zova-module-a-api:
801
804
  specifier: ^5.1.21
802
805
  version: 5.1.21
@@ -825,8 +828,8 @@ importers:
825
828
  specifier: ^5.1.47
826
829
  version: 5.1.47
827
830
  zova-module-a-pay:
828
- specifier: ^5.0.0
829
- version: 5.0.0
831
+ specifier: ^5.0.2
832
+ version: 5.0.2
830
833
  zova-module-a-router:
831
834
  specifier: ^5.1.31
832
835
  version: 5.1.31
@@ -843,8 +846,8 @@ importers:
843
846
  specifier: ^5.1.37
844
847
  version: 5.1.37(vue@3.5.39(typescript@5.9.3))
845
848
  zova-module-pay-mock:
846
- specifier: ^5.0.0
847
- version: 5.0.0
849
+ specifier: ^5.0.2
850
+ version: 5.0.2
848
851
  zova-module-rest-resource:
849
852
  specifier: ^5.1.42
850
853
  version: 5.1.42
@@ -1831,16 +1834,16 @@ importers:
1831
1834
  src/suite-vendor/a-pay:
1832
1835
  dependencies:
1833
1836
  vona-module-a-pay:
1834
- specifier: ^5.0.1
1837
+ specifier: ^5.0.2
1835
1838
  version: link:modules/a-pay
1836
1839
  vona-module-pay-mock:
1837
- specifier: ^5.0.1
1840
+ specifier: ^5.0.2
1838
1841
  version: link:modules/pay-mock
1839
1842
  vona-module-pay-paypal:
1840
- specifier: ^5.0.1
1843
+ specifier: ^5.0.2
1841
1844
  version: link:modules/pay-paypal
1842
1845
  vona-module-pay-stripe:
1843
- specifier: ^5.0.1
1846
+ specifier: ^5.0.2
1844
1847
  version: link:modules/pay-stripe
1845
1848
 
1846
1849
  src/suite-vendor/a-pay/modules/a-pay:
@@ -1867,6 +1870,9 @@ importers:
1867
1870
 
1868
1871
  src/suite-vendor/a-pay/modules/pay-paypal:
1869
1872
  dependencies:
1873
+ '@cabloy/paypal-server-sdk':
1874
+ specifier: 2.2.0
1875
+ version: 2.2.0(supports-color@5.5.0)
1870
1876
  vona-module-a-pay:
1871
1877
  specifier: workspace:*
1872
1878
  version: link:../a-pay
@@ -1915,6 +1921,9 @@ importers:
1915
1921
  vona-module-test-file:
1916
1922
  specifier: ^5.0.8
1917
1923
  version: link:modules/test-file
1924
+ vona-module-test-pay:
1925
+ specifier: ^5.0.1
1926
+ version: link:modules/test-pay
1918
1927
 
1919
1928
  src/suite-vendor/a-test/modules/test-auth:
1920
1929
  devDependencies:
@@ -1961,6 +1970,22 @@ importers:
1961
1970
  specifier: ^6.1.3
1962
1971
  version: 6.1.3
1963
1972
 
1973
+ src/suite-vendor/a-test/modules/test-pay:
1974
+ dependencies:
1975
+ vona-module-a-pay:
1976
+ specifier: workspace:*
1977
+ version: link:../../../a-pay/modules/a-pay
1978
+ vona-module-pay-mock:
1979
+ specifier: workspace:*
1980
+ version: link:../../../a-pay/modules/pay-mock
1981
+ devDependencies:
1982
+ clean-package:
1983
+ specifier: ^2.2.0
1984
+ version: 2.2.0
1985
+ rimraf:
1986
+ specifier: ^6.1.3
1987
+ version: 6.1.3
1988
+
1964
1989
  src/suite-vendor/a-test/modules/test-rest:
1965
1990
  dependencies:
1966
1991
  '@faker-js/faker':
@@ -3055,6 +3080,9 @@ importers:
3055
3080
  vona-module-a-pay:
3056
3081
  specifier: workspace:*
3057
3082
  version: link:../../../../suite-vendor/a-pay/modules/a-pay
3083
+ vona-module-pay-paypal:
3084
+ specifier: workspace:*
3085
+ version: link:../../../../suite-vendor/a-pay/modules/pay-paypal
3058
3086
  devDependencies:
3059
3087
  clean-package:
3060
3088
  specifier: ^2.2.0
@@ -8534,15 +8562,9 @@ packages:
8534
8562
  peerDependencies:
8535
8563
  zod: ^3.25.28 || ^4
8536
8564
 
8537
- zova-core@5.1.79:
8538
- resolution: {integrity: sha512-q04JWAjwa5x0py9/FCFPX9I8cNA4zzZ/Z+8mm2mVsRBMqDFcafwVqNumOAkZ+DuA10b4YIoncyQKYz5PhhmBUw==}
8539
-
8540
8565
  zova-core@5.1.81:
8541
8566
  resolution: {integrity: sha512-gLmLWXpd9xNmc+fXx33QEgRZ2ZsNjRlVWDC1HEQLLnq3ZCakDf87qXhfdk+JH5csS2BjGAdckfmbiLqGL15o1Q==}
8542
8567
 
8543
- zova-jsx@1.1.79:
8544
- resolution: {integrity: sha512-iFp9UpW/3Cbaq0H25xyR04LYyaqB2wlAGOL1dEL7OyuIzHI0IHcBwfZRbRGy7ewgDVHit2ULG03kO1sSjjPuWQ==}
8545
-
8546
8568
  zova-jsx@1.1.81:
8547
8569
  resolution: {integrity: sha512-WVUc4DYsVcjPfcfWgFY2vQbiK8ARIwv2K6o6Auyqvts/vSfJ7BCzD4XqCVHANVY5yJ8povdJUzpiCIAhioWRkg==}
8548
8570
 
@@ -8591,9 +8613,6 @@ packages:
8591
8613
  zova-module-a-openapi@5.1.47:
8592
8614
  resolution: {integrity: sha512-iar4YR9GGdCQ9N60yt9yV+RkiM1seKlmbhoyZqLAZ7aR5tLnw2ZL7ElamHEGO5iBtFXRU8QH8RaU+8PnnyaLkg==}
8593
8615
 
8594
- zova-module-a-pay@5.0.0:
8595
- resolution: {integrity: sha512-jt9acZZPKnkJs8t4qOBOmqO7gyOGnByujCyNsuohAYLQSXkjdTKOJqXDe6dj0KcdayHry0ZvJiaErzQJsiNbWA==}
8596
-
8597
8616
  zova-module-a-pay@5.0.2:
8598
8617
  resolution: {integrity: sha512-BOKkM7R//Kju54PhZxnyJ0O8gHnyKrwxXpAAr85wJurHQAl3NIsdRwINj+i+hIe3Btc+UJmi/H1kpg0d3YuoZQ==}
8599
8618
 
@@ -8624,30 +8643,18 @@ packages:
8624
8643
  zova-module-a-zod@5.1.36:
8625
8644
  resolution: {integrity: sha512-4gEjxJBelVOA84aP2XWSNSmzQr+AYh14Ha5QCj9yZIpSnEajSgYLoyLw4dwiVcscuEw7xAAOOnWbZS9uXSpJzg==}
8626
8645
 
8627
- zova-module-a-zova@5.1.94:
8628
- resolution: {integrity: sha512-c2qbu3YiNYRSMpprPkBbZ9RaQ9KKF4Y/cEumDJaCpPoZEbJClI/WBZMrY/ZpG9Rsp/87DJ63Vkbu+iSTOh7csg==}
8629
-
8630
8646
  zova-module-a-zova@5.1.96:
8631
8647
  resolution: {integrity: sha512-lP6LgzbrSlHBqyA1QhMZ66B0DQBLcXcEcWBh3zESFnhFzbomlfABjG+cnju5ki771YhT2CuPeo3m9v01WYc3Bg==}
8632
8648
 
8633
- zova-module-pay-mock@5.0.0:
8634
- resolution: {integrity: sha512-WORyFqRNkrcGZCzLaesu4BDziQ2iOUIeRMVbwXx/Wzp2W0EpwMvqqAPqO8U3PKjvWtAw3YwTJFsXs1Qh66l4zQ==}
8635
-
8636
8649
  zova-module-pay-mock@5.0.2:
8637
8650
  resolution: {integrity: sha512-G6ld4ZZJ3crSUQ1fH+Tn2p9/05ngfJYtDtTtq7K1Xo9ei2fjbp13Jrbjh3cKR+dhWuK9Q1gwAs7xwhu7NIiTKA==}
8638
8651
 
8639
8652
  zova-module-rest-resource@5.1.42:
8640
8653
  resolution: {integrity: sha512-eMWhc4428U5Hs4BHqFJoF7yaH+bK8t71scIrCnpLbQS7M80lNkoHxY9s/Kl4i8Uo3+lVWbSbuaXWtR+zVLNqpA==}
8641
8654
 
8642
- zova-suite-a-zova@5.1.141:
8643
- resolution: {integrity: sha512-fqeynyYUL12PTZMQ1ZxryHEFcCfaQL2hLTs8MxxdbHCKDhOjNEaOTW5MGR5DzSRM7uMXNCq1crPvbYvDmmeUdg==}
8644
-
8645
8655
  zova-suite-a-zova@5.1.143:
8646
8656
  resolution: {integrity: sha512-DMaYtWO1HVu0BIeNguAYqlcOGa9MVfejDLvLqw6mOqmPSSLrvGSSC+lzYGhI/J9xQBbGRFaWbIdMhetCpuZdwg==}
8647
8657
 
8648
- zova@5.1.142:
8649
- resolution: {integrity: sha512-qvrKhrS9y4BVI2Nszre3TSvDJu5BjTo2adzAXP2qC3TeoW4IZ8njvV2ROoAPe//X6SiJ1Il60oTNSc1PnkXvWg==}
8650
-
8651
8658
  zova@5.1.144:
8652
8659
  resolution: {integrity: sha512-YEgsYl7hL635nK9134oH8GMUqHp41IAp0I+rWz27f2QCkp8QGLqvQIbrvXoFnYwJyuYmaCz/eBMMrl1y+mzs0w==}
8653
8660
 
@@ -14569,35 +14576,6 @@ snapshots:
14569
14576
  dependencies:
14570
14577
  zod: '@cabloy/zod@4.3.8'
14571
14578
 
14572
- zova-core@5.1.79(typescript@5.9.3):
14573
- dependencies:
14574
- '@cabloy/compose': link:packages-utils/compose
14575
- '@cabloy/extend': link:packages-utils/extend
14576
- '@cabloy/json5': link:packages-utils/json5
14577
- '@cabloy/localeutil': link:packages-utils/localeutil
14578
- '@cabloy/logger': 1.1.24
14579
- '@cabloy/module-info': 2.0.3
14580
- '@cabloy/utils': link:packages-utils/utils
14581
- '@cabloy/vue-compiler-sfc': 3.5.14
14582
- '@cabloy/vue-reactivity': 3.5.16
14583
- '@cabloy/vue-router': 4.4.16(vue@3.5.39(typescript@5.9.3))
14584
- '@cabloy/vue-runtime-core': 3.5.57
14585
- '@cabloy/vue-runtime-dom': 3.5.13
14586
- '@cabloy/vue-server-renderer': 3.5.18(vue@3.5.39(typescript@5.9.3))
14587
- '@cabloy/word-utils': 2.1.14
14588
- '@cabloy/zod-errors-custom': link:packages-utils/zod-errors-custom
14589
- '@cabloy/zod-openapi': link:packages-utils/zod-openapi
14590
- '@cabloy/zod-query': link:packages-utils/zod-query
14591
- '@types/js-cookie': 3.0.6
14592
- '@vue/shared': 3.5.36
14593
- deep-equal: 2.2.3
14594
- reflect-metadata: 0.2.2
14595
- vue: 3.5.39(typescript@5.9.3)
14596
- vue-plugin-render-freeze: 2.0.4(vue@3.5.39(typescript@5.9.3))
14597
- zod: '@cabloy/zod@4.3.8'
14598
- transitivePeerDependencies:
14599
- - typescript
14600
-
14601
14579
  zova-core@5.1.81(patch_hash=ff659aa5f659be32501f56841b72f148c24acf1546f79cce551586e27fcde2ce)(typescript@5.9.3):
14602
14580
  dependencies:
14603
14581
  '@cabloy/compose': link:packages-utils/compose
@@ -14627,17 +14605,6 @@ snapshots:
14627
14605
  transitivePeerDependencies:
14628
14606
  - typescript
14629
14607
 
14630
- zova-jsx@1.1.79(typescript@5.9.3):
14631
- dependencies:
14632
- '@cabloy/compose': link:packages-utils/compose
14633
- '@cabloy/utils': link:packages-utils/utils
14634
- '@cabloy/word-utils': 2.1.14
14635
- typestyle: 2.4.0
14636
- vue: 3.5.39(typescript@5.9.3)
14637
- zova-core: 5.1.79(typescript@5.9.3)
14638
- transitivePeerDependencies:
14639
- - typescript
14640
-
14641
14608
  zova-jsx@1.1.81(typescript@5.9.3):
14642
14609
  dependencies:
14643
14610
  '@cabloy/compose': link:packages-utils/compose
@@ -14708,8 +14675,6 @@ snapshots:
14708
14675
  openapi3-ts: 4.6.0
14709
14676
  typestyle: 2.4.0
14710
14677
 
14711
- zova-module-a-pay@5.0.0: {}
14712
-
14713
14678
  zova-module-a-pay@5.0.2: {}
14714
14679
 
14715
14680
  zova-module-a-router@5.1.31: {}
@@ -14751,22 +14716,6 @@ snapshots:
14751
14716
  '@cabloy/zod-query': link:packages-utils/zod-query
14752
14717
  zod: '@cabloy/zod@4.3.8'
14753
14718
 
14754
- zova-module-a-zova@5.1.94(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
14755
- dependencies:
14756
- '@cabloy/compose': link:packages-utils/compose
14757
- '@cabloy/deps': link:packages-utils/deps
14758
- '@cabloy/json5': link:packages-utils/json5
14759
- '@cabloy/module-info': 2.0.3
14760
- '@cabloy/utils': link:packages-utils/utils
14761
- '@cabloy/vue-router': 4.4.16(vue@3.5.39(typescript@5.9.3))
14762
- '@cabloy/word-utils': 2.1.14
14763
- defu: 6.1.7
14764
- luxon: 3.7.2
14765
- zova-jsx: 1.1.79(typescript@5.9.3)
14766
- transitivePeerDependencies:
14767
- - typescript
14768
- - vue
14769
-
14770
14719
  zova-module-a-zova@5.1.96(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
14771
14720
  dependencies:
14772
14721
  '@cabloy/compose': link:packages-utils/compose
@@ -14783,46 +14732,10 @@ snapshots:
14783
14732
  - typescript
14784
14733
  - vue
14785
14734
 
14786
- zova-module-pay-mock@5.0.0: {}
14787
-
14788
14735
  zova-module-pay-mock@5.0.2: {}
14789
14736
 
14790
14737
  zova-module-rest-resource@5.1.42: {}
14791
14738
 
14792
- zova-suite-a-zova@5.1.141(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
14793
- dependencies:
14794
- zova-module-a-api: 5.1.21
14795
- zova-module-a-app: 5.1.25
14796
- zova-module-a-bean: 5.1.32
14797
- zova-module-a-behavior: 5.1.25
14798
- zova-module-a-behaviors: 5.1.21
14799
- zova-module-a-boundary: 5.1.21
14800
- zova-module-a-command: 5.1.33
14801
- zova-module-a-fetch: 5.1.24
14802
- zova-module-a-form: 5.1.46(vue@3.5.39(typescript@5.9.3))
14803
- zova-module-a-icon: 5.1.26
14804
- zova-module-a-interceptor: 5.1.29
14805
- zova-module-a-logger: 5.1.26
14806
- zova-module-a-meta: 5.1.21
14807
- zova-module-a-model: 5.1.33(vue@3.5.39(typescript@5.9.3))
14808
- zova-module-a-openapi: 5.1.47
14809
- zova-module-a-router: 5.1.31
14810
- zova-module-a-routerstack: 5.1.26
14811
- zova-module-a-routertabs: 5.1.33
14812
- zova-module-a-ssr: 5.1.32
14813
- zova-module-a-ssrhmr: 5.1.22
14814
- zova-module-a-ssrserver: 5.1.23
14815
- zova-module-a-style: 5.1.32
14816
- zova-module-a-table: 5.1.37(vue@3.5.39(typescript@5.9.3))
14817
- zova-module-a-zod: 5.1.36
14818
- zova-module-a-zova: 5.1.94(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
14819
- transitivePeerDependencies:
14820
- - '@vue/composition-api'
14821
- - debug
14822
- - supports-color
14823
- - typescript
14824
- - vue
14825
-
14826
14739
  zova-suite-a-zova@5.1.143(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
14827
14740
  dependencies:
14828
14741
  zova-module-a-api: 5.1.21
@@ -14857,17 +14770,6 @@ snapshots:
14857
14770
  - typescript
14858
14771
  - vue
14859
14772
 
14860
- zova@5.1.142(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
14861
- dependencies:
14862
- zova-core: 5.1.79(typescript@5.9.3)
14863
- zova-suite-a-zova: 5.1.141(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
14864
- transitivePeerDependencies:
14865
- - '@vue/composition-api'
14866
- - debug
14867
- - supports-color
14868
- - typescript
14869
- - vue
14870
-
14871
14773
  zova@5.1.144(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
14872
14774
  dependencies:
14873
14775
  zova-core: 5.1.81(patch_hash=ff659aa5f659be32501f56841b72f148c24acf1546f79cce551586e27fcde2ce)(typescript@5.9.3)
@@ -1,35 +1,14 @@
1
1
  import type { IDecoratorDtoOptions } from 'vona-module-a-web';
2
2
 
3
- import { Api, v } from 'vona-module-a-openapiutils';
3
+ import { $Dto } from 'vona-module-a-orm';
4
4
  import { Dto } from 'vona-module-a-web';
5
5
 
6
- import { $locale } from '../.metadata/locales.ts';
6
+ import { addressMineWriteColumns } from '../lib/addressMine.ts';
7
+ import { ModelAddress } from '../model/address.ts';
7
8
 
8
9
  export interface IDtoOptionsAddressMineCreate extends IDecoratorDtoOptions {}
9
10
 
10
11
  @Dto<IDtoOptionsAddressMineCreate>()
11
- export class DtoAddressMineCreate {
12
- @Api.field(v.title($locale('RecipientName')), v.required(), v.min(2), v.max(100))
13
- recipientName: string;
14
-
15
- @Api.field(v.title($locale('Phone')), v.required(), v.min(1), v.max(50))
16
- phone: string;
17
-
18
- @Api.field(v.title($locale('CountryCode')), v.required(), v.min(2), v.max(10))
19
- countryCode: string;
20
-
21
- @Api.field(v.title($locale('Region')), v.required(), v.min(1), v.max(100))
22
- region: string;
23
-
24
- @Api.field(v.title($locale('City')), v.required(), v.min(1), v.max(100))
25
- city: string;
26
-
27
- @Api.field(v.title($locale('PostalCode')), v.required(), v.min(1), v.max(30))
28
- postalCode: string;
29
-
30
- @Api.field(v.title($locale('AddressLine1')), v.required(), v.min(1), v.max(255))
31
- addressLine1: string;
32
-
33
- @Api.field(v.title($locale('AddressLine2')), v.optional(), v.max(255))
34
- addressLine2?: string;
35
- }
12
+ export class DtoAddressMineCreate extends $Dto.create(() => ModelAddress, {
13
+ columns: addressMineWriteColumns,
14
+ }) {}
@@ -1,39 +1,14 @@
1
- import type { TableIdentity } from 'table-identity';
2
1
  import type { IDecoratorDtoOptions } from 'vona-module-a-web';
3
2
 
4
- import { Api, v } from 'vona-module-a-openapiutils';
3
+ import { $Dto } from 'vona-module-a-orm';
5
4
  import { Dto } from 'vona-module-a-web';
6
5
 
7
- import { $locale } from '../.metadata/locales.ts';
6
+ import { addressMineReadColumns } from '../lib/addressMine.ts';
7
+ import { ModelAddress } from '../model/address.ts';
8
8
 
9
9
  export interface IDtoOptionsAddressMineItem extends IDecoratorDtoOptions {}
10
10
 
11
11
  @Dto<IDtoOptionsAddressMineItem>()
12
- export class DtoAddressMineItem {
13
- @Api.field(v.tableIdentity())
14
- id: TableIdentity;
15
-
16
- @Api.field(v.title($locale('RecipientName')), v.required(), v.min(2), v.max(100))
17
- recipientName: string;
18
-
19
- @Api.field(v.title($locale('Phone')), v.required(), v.min(1), v.max(50))
20
- phone: string;
21
-
22
- @Api.field(v.title($locale('CountryCode')), v.required(), v.min(2), v.max(10))
23
- countryCode: string;
24
-
25
- @Api.field(v.title($locale('Region')), v.required(), v.min(1), v.max(100))
26
- region: string;
27
-
28
- @Api.field(v.title($locale('City')), v.required(), v.min(1), v.max(100))
29
- city: string;
30
-
31
- @Api.field(v.title($locale('PostalCode')), v.required(), v.min(1), v.max(30))
32
- postalCode: string;
33
-
34
- @Api.field(v.title($locale('AddressLine1')), v.required(), v.min(1), v.max(255))
35
- addressLine1: string;
36
-
37
- @Api.field(v.title($locale('AddressLine2')), v.optional(), v.max(255))
38
- addressLine2?: string;
39
- }
12
+ export class DtoAddressMineItem extends $Dto.get(() => ModelAddress, {
13
+ columns: addressMineReadColumns,
14
+ }) {}
@@ -1,10 +1,14 @@
1
1
  import type { IDecoratorDtoOptions } from 'vona-module-a-web';
2
2
 
3
+ import { $Dto } from 'vona-module-a-orm';
3
4
  import { Dto } from 'vona-module-a-web';
4
5
 
5
- import { DtoAddressMineCreate } from './addressMineCreate.tsx';
6
+ import { addressMineWriteColumns } from '../lib/addressMine.ts';
7
+ import { ModelAddress } from '../model/address.ts';
6
8
 
7
9
  export interface IDtoOptionsAddressMineUpdate extends IDecoratorDtoOptions {}
8
10
 
9
11
  @Dto<IDtoOptionsAddressMineUpdate>()
10
- export class DtoAddressMineUpdate extends DtoAddressMineCreate {}
12
+ export class DtoAddressMineUpdate extends $Dto.update(() => ModelAddress, {
13
+ columns: addressMineWriteColumns,
14
+ }) {}
@@ -0,0 +1,16 @@
1
+ import type { EntityAddress } from '../entity/address.tsx';
2
+
3
+ export const addressMineWriteColumns = [
4
+ 'recipientName',
5
+ 'phone',
6
+ 'countryCode',
7
+ 'region',
8
+ 'city',
9
+ 'postalCode',
10
+ 'addressLine1',
11
+ 'addressLine2',
12
+ ] satisfies Array<keyof EntityAddress>;
13
+
14
+ export const addressMineReadColumns = ['id', ...addressMineWriteColumns] satisfies Array<
15
+ keyof EntityAddress
16
+ >;