cabloy 5.1.112 → 5.1.113

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 (41) 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 +9 -0
  4. package/.github/workflows/playwright-e2e.yml +34 -2
  5. package/.github/workflows/vona-test-pg.yml +8 -0
  6. package/CHANGELOG.md +13 -0
  7. package/CLAUDE.md +2 -0
  8. package/cabloy-docs/backend/migration-and-changes.md +13 -9
  9. package/cabloy-docs/backend/unit-testing.md +25 -0
  10. package/e2e/scripts/startE2eVona.ts +51 -13
  11. package/e2e/specs/a-commerce/commerce.spec.ts +1 -0
  12. package/e2e/specs/cabloy-basic/basic.spec.ts +12 -7
  13. package/package.json +1 -1
  14. package/vona/packages-cli/cli/package.json +1 -1
  15. package/vona/packages-cli/cli-set-api/package.json +1 -1
  16. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.bin.test.ts +6 -9
  17. package/vona/packages-cli/cli-set-api/toolsIsolate/test.ts +50 -21
  18. package/vona/packages-vona/vona/package.json +1 -1
  19. package/vona/pnpm-lock.yaml +67 -67
  20. package/vona/src/backend/config/config/config.test.ts +1 -1
  21. package/vona/src/suite/a-commerce/modules/commerce-catalog/test/catalog.test.ts +234 -0
  22. package/vona/src/suite/a-commerce/modules/commerce-seed/src/bean/meta.version.ts +3 -3
  23. package/vona/src/suite/a-commerce/modules/commerce-trade/src/bean/meta.version.ts +4 -0
  24. package/vona/src/suite/a-commerce/modules/commerce-trade/src/config/locale/en-us.ts +4 -0
  25. package/vona/src/suite/a-commerce/modules/commerce-trade/src/config/locale/zh-cn.ts +4 -0
  26. package/vona/src/suite/a-commerce/modules/commerce-trade/src/entity/stockAudit.tsx +39 -7
  27. package/vona/src/suite/a-commerce/modules/commerce-trade/src/service/stockBalance.ts +38 -1
  28. package/vona/src/suite/a-commerce/modules/commerce-trade/test/stockBalance.test.ts +268 -65
  29. package/vona/src/suite/a-commerce/modules/commerce-trade/test/stockReservation.test.ts +276 -81
  30. package/vona/src/suite-vendor/a-vona/modules/a-startup/package.json +1 -1
  31. package/vona/src/suite-vendor/a-vona/modules/a-startup/src/service/startup.ts +2 -2
  32. package/vona/src/suite-vendor/a-vona/modules/a-version/package.json +1 -1
  33. package/vona/src/suite-vendor/a-vona/modules/a-version/src/service/version.ts +12 -12
  34. package/vona/src/suite-vendor/a-vona/modules/a-version/src/types/version.ts +4 -4
  35. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  36. package/zova/pnpm-lock.yaml +14 -14
  37. package/zova/src/suite/a-commerce/modules/commerce-catalog/src/page/product/controller.tsx +0 -1
  38. package/zova/src/suite/a-commerce/modules/commerce-trade/src/model/cart.ts +1 -0
  39. package/zova/src/suite/a-home/modules/home-layoutadmin/src/component/layoutAdmin/controller.tsx +17 -7
  40. package/zova/src/suite/a-home/modules/home-layoutadmin/src/component/layoutAdmin/render.header.tsx +1 -1
  41. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/controller.tsx +17 -7
@@ -77,7 +77,7 @@ importers:
77
77
  version: 10.5.2(postcss@8.5.15)
78
78
  axios:
79
79
  specifier: ^1.18.1
80
- version: 1.18.1
80
+ version: 1.18.1(supports-color@10.2.2)
81
81
  compression:
82
82
  specifier: ^1.8.1
83
83
  version: 1.8.1
@@ -425,7 +425,7 @@ importers:
425
425
  specifier: ^7.6.2
426
426
  version: 7.8.5
427
427
  zova-cli-set-front:
428
- specifier: ^1.2.96
428
+ specifier: ^1.2.97
429
429
  version: link:../cli-set-front
430
430
  devDependencies:
431
431
  clean-package:
@@ -846,7 +846,7 @@ importers:
846
846
  specifier: ^5.1.78
847
847
  version: link:../zova-core
848
848
  zova-suite-a-zova:
849
- specifier: ^5.1.137
849
+ specifier: ^5.1.138
850
850
  version: link:../../src/suite-vendor/a-zova
851
851
  devDependencies:
852
852
  clean-package:
@@ -944,7 +944,7 @@ importers:
944
944
  src/suite-vendor/a-cabloy:
945
945
  dependencies:
946
946
  zova-module-rest-resource:
947
- specifier: ^5.1.41
947
+ specifier: ^5.1.42
948
948
  version: link:modules/rest-resource
949
949
 
950
950
  src/suite-vendor/a-cabloy/modules/rest-resource:
@@ -965,7 +965,7 @@ importers:
965
965
  specifier: ^5.1.25
966
966
  version: link:modules/a-app
967
967
  zova-module-a-bean:
968
- specifier: ^5.1.31
968
+ specifier: ^5.1.32
969
969
  version: link:modules/a-bean
970
970
  zova-module-a-behavior:
971
971
  specifier: ^5.1.25
@@ -980,7 +980,7 @@ importers:
980
980
  specifier: ^5.1.33
981
981
  version: link:modules/a-command
982
982
  zova-module-a-fetch:
983
- specifier: ^5.1.23
983
+ specifier: ^5.1.24
984
984
  version: link:modules/a-fetch
985
985
  zova-module-a-form:
986
986
  specifier: ^5.1.45
@@ -1001,10 +1001,10 @@ importers:
1001
1001
  specifier: ^5.1.33
1002
1002
  version: link:modules/a-model
1003
1003
  zova-module-a-openapi:
1004
- specifier: ^5.1.45
1004
+ specifier: ^5.1.46
1005
1005
  version: link:modules/a-openapi
1006
1006
  zova-module-a-router:
1007
- specifier: ^5.1.30
1007
+ specifier: ^5.1.31
1008
1008
  version: link:modules/a-router
1009
1009
  zova-module-a-routerstack:
1010
1010
  specifier: ^5.1.26
@@ -1105,7 +1105,7 @@ importers:
1105
1105
  dependencies:
1106
1106
  axios:
1107
1107
  specifier: ^1.18.1
1108
- version: 1.18.1
1108
+ version: 1.18.1(supports-color@10.2.2)
1109
1109
  devDependencies:
1110
1110
  clean-package:
1111
1111
  specifier: ^2.2.0
@@ -10420,7 +10420,7 @@ snapshots:
10420
10420
 
10421
10421
  acorn@8.17.0: {}
10422
10422
 
10423
- agent-base@6.0.2:
10423
+ agent-base@6.0.2(supports-color@10.2.2):
10424
10424
  dependencies:
10425
10425
  debug: 4.4.3(supports-color@10.2.2)
10426
10426
  transitivePeerDependencies:
@@ -10532,11 +10532,11 @@ snapshots:
10532
10532
  dependencies:
10533
10533
  possible-typed-array-names: 1.1.0
10534
10534
 
10535
- axios@1.18.1:
10535
+ axios@1.18.1(supports-color@10.2.2):
10536
10536
  dependencies:
10537
10537
  follow-redirects: 1.16.0
10538
10538
  form-data: 4.0.6
10539
- https-proxy-agent: 5.0.1
10539
+ https-proxy-agent: 5.0.1(supports-color@10.2.2)
10540
10540
  proxy-from-env: 2.1.0
10541
10541
  transitivePeerDependencies:
10542
10542
  - debug
@@ -11958,9 +11958,9 @@ snapshots:
11958
11958
  statuses: 2.0.2
11959
11959
  toidentifier: 1.0.1
11960
11960
 
11961
- https-proxy-agent@5.0.1:
11961
+ https-proxy-agent@5.0.1(supports-color@10.2.2):
11962
11962
  dependencies:
11963
- agent-base: 6.0.2
11963
+ agent-base: 6.0.2(supports-color@10.2.2)
11964
11964
  debug: 4.4.3(supports-color@10.2.2)
11965
11965
  transitivePeerDependencies:
11966
11966
  - supports-color
@@ -37,7 +37,6 @@ export class ControllerPageProduct extends BeanControllerPageBase {
37
37
  }
38
38
 
39
39
  get queryCurrentCart() {
40
- if (process.env.SERVER) return;
41
40
  return this.$$modelCart.current();
42
41
  }
43
42
 
@@ -12,6 +12,7 @@ export interface IModelOptionsCart extends IDecoratorModelOptions {}
12
12
  @Model<IModelOptionsCart>()
13
13
  export class ModelCart extends BeanModelBase {
14
14
  current() {
15
+ if (!process.env.CLIENT || !this.$passport.isAuthenticated) return;
15
16
  return this.$useStateData({
16
17
  queryKey: ['current'],
17
18
  queryFn: async () => {
@@ -31,17 +31,21 @@ export class ControllerLayoutAdmin extends BeanControllerBase {
31
31
  leftDrawerOpen: boolean;
32
32
  leftDrawerOpenMobile: boolean = false;
33
33
  belowBreakpoint: boolean;
34
+ private viewportWidth: number = 0;
35
+ private _windowResizeHandler?: () => void;
34
36
 
35
37
  protected async __init__() {
38
+ // viewport
39
+ if (process.env.CLIENT) {
40
+ this._windowResizeHandler = () => {
41
+ this.viewportWidth = document.documentElement.clientWidth;
42
+ };
43
+ this._windowResizeHandler();
44
+ window.addEventListener('resize', this._windowResizeHandler);
45
+ }
36
46
  // belowBreakpoint
37
47
  this.belowBreakpoint = this.$computed(() => {
38
- let width;
39
- if (process.env.SERVER) {
40
- width = 0;
41
- } else {
42
- width = document.documentElement.clientWidth;
43
- }
44
- return width <= this.sys.config.layout.sidebar.breakpoint;
48
+ return this.viewportWidth <= this.sys.config.layout.sidebar.breakpoint;
45
49
  });
46
50
  // leftDrawerOpen
47
51
  this.leftDrawerOpen = this.$customRef(() => {
@@ -72,6 +76,12 @@ export class ControllerLayoutAdmin extends BeanControllerBase {
72
76
  await this._initTabs();
73
77
  }
74
78
 
79
+ protected __dispose__() {
80
+ if (this._windowResizeHandler) {
81
+ window.removeEventListener('resize', this._windowResizeHandler);
82
+ }
83
+ }
84
+
75
85
  private async _initTabs() {
76
86
  const configTabs = this.scope.config.tabs;
77
87
  const tabsOptions: ModelTabsOptions = {
@@ -35,7 +35,7 @@ export class RenderHeader extends BeanRenderBase {
35
35
  </button>
36
36
  </div>
37
37
  <div class="text-xl px-4">{this.sys.env.APP_TITLE}</div>
38
- <div class="mx-2 flex-2 px-2">{this.$$r.$$renderTabs.renderTabItems()}</div>
38
+ <div class="mx-2 min-w-0 flex-2 px-2">{this.$$r.$$renderTabs.renderTabItems()}</div>
39
39
  <div class="hidden flex-none lg:block">
40
40
  <ul class="menu menu-horizontal">
41
41
  {this.$$r.$$renderLocale.render()}
@@ -34,17 +34,21 @@ export class ControllerLayoutWeb extends BeanControllerBase {
34
34
  leftDrawerOpen: boolean;
35
35
  leftDrawerOpenMobile: boolean = false;
36
36
  belowBreakpoint: boolean;
37
+ private viewportWidth: number = 0;
38
+ private _windowResizeHandler?: () => void;
37
39
 
38
40
  protected async __init__() {
41
+ // viewport
42
+ if (process.env.CLIENT) {
43
+ this._windowResizeHandler = () => {
44
+ this.viewportWidth = document.documentElement.clientWidth;
45
+ };
46
+ this._windowResizeHandler();
47
+ window.addEventListener('resize', this._windowResizeHandler);
48
+ }
39
49
  // belowBreakpoint
40
50
  this.belowBreakpoint = this.$computed(() => {
41
- let width;
42
- if (process.env.SERVER) {
43
- width = 0;
44
- } else {
45
- width = document.documentElement.clientWidth;
46
- }
47
- return width <= this.sys.config.layout.sidebar.breakpoint;
51
+ return this.viewportWidth <= this.sys.config.layout.sidebar.breakpoint;
48
52
  });
49
53
  // leftDrawerOpen
50
54
  this.leftDrawerOpen = this.$customRef(() => {
@@ -70,6 +74,12 @@ export class ControllerLayoutWeb extends BeanControllerBase {
70
74
  await this._initTabs();
71
75
  }
72
76
 
77
+ protected __dispose__() {
78
+ if (this._windowResizeHandler) {
79
+ window.removeEventListener('resize', this._windowResizeHandler);
80
+ }
81
+ }
82
+
73
83
  private async _initTabs() {
74
84
  const configTabs = this.scope.config.tabs;
75
85
  const tabsOptions: ModelTabsOptions = {