cabloy 5.1.133 → 5.1.135

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 (30) hide show
  1. package/.cabloy-version +1 -1
  2. package/.claude/scheduled_tasks.lock +1 -0
  3. package/CHANGELOG.md +25 -0
  4. package/cabloy-docs/frontend/ioc-and-beans.md +20 -0
  5. package/e2e/specs/a-commerce/commerce.spec.ts +61 -36
  6. package/package.json +1 -1
  7. package/vona/patches/{zova-core@5.1.82.patch → zova-core@5.1.84.patch} +2 -2
  8. package/vona/pnpm-lock.yaml +412 -85
  9. package/vona/pnpm-workspace.yaml +1 -1
  10. package/zova/packages-utils/zova-jsx/package.json +2 -2
  11. package/zova/packages-zova/zova/package.json +3 -3
  12. package/zova/packages-zova/zova-core/package.json +2 -1
  13. package/zova/packages-zova/zova-core/src/core/sys/config.ts +2 -2
  14. package/zova/pnpm-lock.yaml +32 -29
  15. package/zova/src/suite/a-home/modules/home-layoutadmin/src/component/layoutAdmin/controller.tsx +1 -1
  16. package/zova/src/suite/a-home/modules/home-layoutempty/src/component/layoutEmpty/controller.tsx +1 -1
  17. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/controller.tsx +1 -1
  18. package/zova/src/suite-vendor/a-zova/modules/a-model/package.json +1 -1
  19. package/zova/src/suite-vendor/a-zova/modules/a-model/src/bean/bean.model/bean.model.persister.ts +28 -1
  20. package/zova/src/suite-vendor/a-zova/modules/a-openapi/package.json +1 -1
  21. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/model/sdk.ts +1 -1
  22. package/zova/src/suite-vendor/a-zova/modules/a-router/package.json +1 -1
  23. package/zova/src/suite-vendor/a-zova/modules/a-router/src/monkey.ts +23 -0
  24. package/zova/src/suite-vendor/a-zova/modules/a-router/src/monkeySys.ts +1 -1
  25. package/zova/src/suite-vendor/a-zova/modules/a-ssr/package.json +1 -1
  26. package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/monkey.ts +7 -3
  27. package/zova/src/suite-vendor/a-zova/modules/a-style/package.json +1 -1
  28. package/zova/src/suite-vendor/a-zova/modules/a-style/src/bean/bean.theme.ts +21 -2
  29. package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
  30. package/zova/src/suite-vendor/a-zova/package.json +7 -7
@@ -53,4 +53,4 @@ allowBuilds:
53
53
  vue-demi: true
54
54
 
55
55
  patchedDependencies:
56
- zova-core@5.1.82: patches/zova-core@5.1.82.patch
56
+ zova-core@5.1.84: patches/zova-core@5.1.84.patch
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-jsx",
3
- "version": "1.1.83",
3
+ "version": "1.1.84",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "Zova JSX",
6
6
  "keywords": [
@@ -50,7 +50,7 @@
50
50
  "@cabloy/word-utils": "^2.1.14",
51
51
  "typestyle": "^2.4.0",
52
52
  "vue": "^3.5.38",
53
- "zova-core": "^5.1.83"
53
+ "zova-core": "^5.1.84"
54
54
  },
55
55
  "devDependencies": {
56
56
  "clean-package": "^2.2.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova",
3
- "version": "5.1.146",
3
+ "version": "5.1.147",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "A vue3 framework with ioc",
6
6
  "keywords": [
@@ -45,8 +45,8 @@
45
45
  "postpack": "clean-package restore"
46
46
  },
47
47
  "dependencies": {
48
- "zova-core": "^5.1.83",
49
- "zova-suite-a-zova": "^5.1.145"
48
+ "zova-core": "^5.1.84",
49
+ "zova-suite-a-zova": "^5.1.146"
50
50
  },
51
51
  "devDependencies": {
52
52
  "clean-package": "^2.2.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-core",
3
- "version": "5.1.83",
3
+ "version": "5.1.84",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "A vue3 framework with ioc",
6
6
  "keywords": [
@@ -64,6 +64,7 @@
64
64
  "@cabloy/zod-openapi": "^1.1.10",
65
65
  "@cabloy/zod-query": "^2.1.13",
66
66
  "@types/js-cookie": "^3.0.6",
67
+ "@types/ms": "^2.1.0",
67
68
  "@vue/shared": "^3.5.32",
68
69
  "deep-equal": "^2.2.3",
69
70
  "ms": "^2.1.3",
@@ -1,5 +1,5 @@
1
1
  import type { ZovaConfigMeta } from '@cabloy/module-info';
2
- import type { StringValue } from 'ms';
2
+ import type ms from 'ms';
3
3
 
4
4
  import type {
5
5
  ILayoutRecord,
@@ -25,7 +25,7 @@ export function configDefault(env: ZovaConfigEnv): PowerPartial<ZovaConfig> {
25
25
  }
26
26
 
27
27
  export interface ZovaConfigSsrResponseCachePolicy {
28
- expires?: number | StringValue;
28
+ expires?: number | ms.StringValue;
29
29
  }
30
30
 
31
31
  export interface ZovaConfigSsrProfile {
@@ -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(supports-color@10.2.2)
80
+ version: 1.18.1
81
81
  compression:
82
82
  specifier: ^1.8.1
83
83
  version: 1.8.1
@@ -136,7 +136,7 @@ importers:
136
136
  specifier: workspace:^
137
137
  version: link:packages-zova/zova
138
138
  zova-jsx:
139
- specifier: ^1.1.82
139
+ specifier: ^1.1.84
140
140
  version: link:packages-utils/zova-jsx
141
141
  zova-module-a-api:
142
142
  specifier: workspace:^
@@ -354,7 +354,7 @@ importers:
354
354
  devDependencies:
355
355
  '@cabloy/cli':
356
356
  specifier: ^3.1.29
357
- version: 3.1.29(supports-color@10.2.2)(vue@3.5.38(typescript@5.9.3))
357
+ version: 3.1.29(vue@3.5.38(typescript@5.9.3))
358
358
  '@cabloy/lint':
359
359
  specifier: ^5.1.31
360
360
  version: 5.1.31(@typescript-eslint/eslint-plugin@8.62.1(@typescript-eslint/parser@8.62.1(eslint@10.6.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.6.0(jiti@2.7.0))(typescript@5.9.3))(@typescript-eslint/rule-tester@8.62.1(eslint@10.6.0(jiti@2.7.0))(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.62.1(typescript@5.9.3))(@typescript-eslint/utils@8.62.1(eslint@10.6.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.6.0(jiti@2.7.0))(oxfmt@0.62.0)(oxlint@1.77.0)(supports-color@10.2.2)(typescript@5.9.3)(vue-eslint-parser@10.4.1(eslint@10.6.0(jiti@2.7.0)))
@@ -429,7 +429,7 @@ importers:
429
429
  dependencies:
430
430
  '@cabloy/cli':
431
431
  specifier: ^3.1.29
432
- version: 3.1.29(supports-color@10.2.2)(vue@3.5.38(typescript@5.9.3))
432
+ version: 3.1.29(vue@3.5.38(typescript@5.9.3))
433
433
  '@cabloy/process-helper':
434
434
  specifier: ^3.1.8
435
435
  version: 3.1.8
@@ -463,7 +463,7 @@ importers:
463
463
  version: 7.29.7(@babel/core@7.29.7)
464
464
  '@cabloy/cli':
465
465
  specifier: ^3.1.29
466
- version: 3.1.29(supports-color@10.2.2)(vue@3.5.38(typescript@5.9.3))
466
+ version: 3.1.29(vue@3.5.38(typescript@5.9.3))
467
467
  '@cabloy/extend':
468
468
  specifier: ^3.2.8
469
469
  version: 3.2.8
@@ -717,7 +717,7 @@ importers:
717
717
  specifier: ^3.5.38
718
718
  version: 3.5.38(typescript@5.9.3)
719
719
  zova-core:
720
- specifier: ^5.1.82
720
+ specifier: ^5.1.84
721
721
  version: link:../../packages-zova/zova-core
722
722
  devDependencies:
723
723
  clean-package:
@@ -858,10 +858,10 @@ importers:
858
858
  packages-zova/zova:
859
859
  dependencies:
860
860
  zova-core:
861
- specifier: ^5.1.82
861
+ specifier: ^5.1.84
862
862
  version: link:../zova-core
863
863
  zova-suite-a-zova:
864
- specifier: ^5.1.144
864
+ specifier: ^5.1.146
865
865
  version: link:../../src/suite-vendor/a-zova
866
866
  devDependencies:
867
867
  clean-package:
@@ -927,6 +927,9 @@ importers:
927
927
  '@types/js-cookie':
928
928
  specifier: ^3.0.6
929
929
  version: 3.0.6
930
+ '@types/ms':
931
+ specifier: ^2.1.0
932
+ version: 2.1.0
930
933
  '@vue/shared':
931
934
  specifier: 3.5.13
932
935
  version: 3.5.13
@@ -962,7 +965,7 @@ importers:
962
965
  src/suite-vendor/a-cabloy:
963
966
  dependencies:
964
967
  zova-module-rest-resource:
965
- specifier: ^5.1.42
968
+ specifier: ^5.1.43
966
969
  version: link:modules/rest-resource
967
970
 
968
971
  src/suite-vendor/a-cabloy/modules/rest-resource:
@@ -977,7 +980,7 @@ importers:
977
980
  src/suite-vendor/a-pay:
978
981
  dependencies:
979
982
  zova-module-a-pay:
980
- specifier: ^5.0.3
983
+ specifier: ^5.0.4
981
984
  version: link:modules/a-pay
982
985
  zova-module-pay-mock:
983
986
  specifier: ^5.0.2
@@ -1058,7 +1061,7 @@ importers:
1058
1061
  specifier: ^5.1.26
1059
1062
  version: link:modules/a-icon
1060
1063
  zova-module-a-interceptor:
1061
- specifier: ^5.1.29
1064
+ specifier: ^5.1.30
1062
1065
  version: link:modules/a-interceptor
1063
1066
  zova-module-a-logger:
1064
1067
  specifier: ^5.1.26
@@ -1067,13 +1070,13 @@ importers:
1067
1070
  specifier: ^5.1.21
1068
1071
  version: link:modules/a-meta
1069
1072
  zova-module-a-model:
1070
- specifier: ^5.1.33
1073
+ specifier: ^5.1.34
1071
1074
  version: link:modules/a-model
1072
1075
  zova-module-a-openapi:
1073
- specifier: ^5.1.47
1076
+ specifier: ^5.1.49
1074
1077
  version: link:modules/a-openapi
1075
1078
  zova-module-a-router:
1076
- specifier: ^5.1.31
1079
+ specifier: ^5.1.32
1077
1080
  version: link:modules/a-router
1078
1081
  zova-module-a-routerstack:
1079
1082
  specifier: ^5.1.26
@@ -1082,16 +1085,16 @@ importers:
1082
1085
  specifier: ^5.1.33
1083
1086
  version: link:modules/a-routertabs
1084
1087
  zova-module-a-ssr:
1085
- specifier: ^5.1.32
1088
+ specifier: ^5.1.34
1086
1089
  version: link:modules/a-ssr
1087
1090
  zova-module-a-ssrhmr:
1088
1091
  specifier: ^5.1.22
1089
1092
  version: link:modules/a-ssrhmr
1090
1093
  zova-module-a-ssrserver:
1091
- specifier: ^5.1.23
1094
+ specifier: ^5.1.24
1092
1095
  version: link:modules/a-ssrserver
1093
1096
  zova-module-a-style:
1094
- specifier: ^5.1.32
1097
+ specifier: ^5.1.34
1095
1098
  version: link:modules/a-style
1096
1099
  zova-module-a-table:
1097
1100
  specifier: ^5.1.37
@@ -1100,7 +1103,7 @@ importers:
1100
1103
  specifier: ^5.1.36
1101
1104
  version: link:modules/a-zod
1102
1105
  zova-module-a-zova:
1103
- specifier: ^5.1.97
1106
+ specifier: ^5.1.99
1104
1107
  version: link:modules/a-zova
1105
1108
 
1106
1109
  src/suite-vendor/a-zova/modules/a-api:
@@ -1174,7 +1177,7 @@ importers:
1174
1177
  dependencies:
1175
1178
  axios:
1176
1179
  specifier: ^1.18.1
1177
- version: 1.18.1(supports-color@10.2.2)
1180
+ version: 1.18.1
1178
1181
  devDependencies:
1179
1182
  clean-package:
1180
1183
  specifier: ^2.2.0
@@ -1442,12 +1445,12 @@ importers:
1442
1445
  specifier: ^3.7.2
1443
1446
  version: 3.7.2
1444
1447
  zova-jsx:
1445
- specifier: ^1.1.82
1448
+ specifier: ^1.1.84
1446
1449
  version: link:../../../../../packages-utils/zova-jsx
1447
1450
  devDependencies:
1448
1451
  '@cabloy/cli':
1449
1452
  specifier: ^3.1.29
1450
- version: 3.1.29(supports-color@10.2.2)(vue@3.5.38(typescript@5.9.3))
1453
+ version: 3.1.29(vue@3.5.38(typescript@5.9.3))
1451
1454
  '@types/luxon':
1452
1455
  specifier: ^3.7.1
1453
1456
  version: 3.7.2
@@ -8430,7 +8433,7 @@ snapshots:
8430
8433
 
8431
8434
  '@bufbuild/protobuf@2.12.1': {}
8432
8435
 
8433
- '@cabloy/cli@3.1.29(supports-color@10.2.2)(vue@3.5.38(typescript@5.9.3))':
8436
+ '@cabloy/cli@3.1.29(vue@3.5.38(typescript@5.9.3))':
8434
8437
  dependencies:
8435
8438
  '@babel/parser': 7.29.7
8436
8439
  '@cabloy/module-glob': 5.3.18
@@ -8439,7 +8442,7 @@ snapshots:
8439
8442
  '@cabloy/utils': 2.1.27
8440
8443
  '@cabloy/word-utils': link:packages-utils/word-utils
8441
8444
  '@npmcli/config': 10.11.0
8442
- '@zhennann/common-bin': 4.0.1(supports-color@10.2.2)
8445
+ '@zhennann/common-bin': 4.0.1
8443
8446
  '@zhennann/ejs': 3.0.1
8444
8447
  boxen: 4.2.0
8445
8448
  chalk: 3.0.0
@@ -10465,7 +10468,7 @@ snapshots:
10465
10468
 
10466
10469
  '@vue/shared@3.5.13': {}
10467
10470
 
10468
- '@zhennann/common-bin@4.0.1(supports-color@10.2.2)':
10471
+ '@zhennann/common-bin@4.0.1':
10469
10472
  dependencies:
10470
10473
  chalk: 4.1.2
10471
10474
  change-case: 4.1.2
@@ -10499,7 +10502,7 @@ snapshots:
10499
10502
 
10500
10503
  acorn@8.17.0: {}
10501
10504
 
10502
- agent-base@6.0.2(supports-color@10.2.2):
10505
+ agent-base@6.0.2:
10503
10506
  dependencies:
10504
10507
  debug: 4.4.3(supports-color@10.2.2)
10505
10508
  transitivePeerDependencies:
@@ -10611,11 +10614,11 @@ snapshots:
10611
10614
  dependencies:
10612
10615
  possible-typed-array-names: 1.1.0
10613
10616
 
10614
- axios@1.18.1(supports-color@10.2.2):
10617
+ axios@1.18.1:
10615
10618
  dependencies:
10616
10619
  follow-redirects: 1.16.0
10617
10620
  form-data: 4.0.6
10618
- https-proxy-agent: 5.0.1(supports-color@10.2.2)
10621
+ https-proxy-agent: 5.0.1
10619
10622
  proxy-from-env: 2.1.0
10620
10623
  transitivePeerDependencies:
10621
10624
  - debug
@@ -12026,9 +12029,9 @@ snapshots:
12026
12029
  statuses: 2.0.2
12027
12030
  toidentifier: 1.0.1
12028
12031
 
12029
- https-proxy-agent@5.0.1(supports-color@10.2.2):
12032
+ https-proxy-agent@5.0.1:
12030
12033
  dependencies:
12031
- agent-base: 6.0.2(supports-color@10.2.2)
12034
+ agent-base: 6.0.2
12032
12035
  debug: 4.4.3(supports-color@10.2.2)
12033
12036
  transitivePeerDependencies:
12034
12037
  - supports-color
@@ -22,7 +22,7 @@ export class ControllerLayoutAdmin extends BeanControllerBase {
22
22
  @Use()
23
23
  $$modelLayout: ModelLayout;
24
24
 
25
- @Use()
25
+ @Use({ beanFullName: 'home-base.service.ssrLayout' })
26
26
  get $$serviceSsrLayout(): ServiceSsrLayout {
27
27
  const sidebar = this.scope.config.layout.sidebar;
28
28
  return usePrepareArg({
@@ -9,7 +9,7 @@ export interface ControllerLayoutEmptyProps {}
9
9
  export class ControllerLayoutEmpty extends BeanControllerBase {
10
10
  static $propsDefault = {};
11
11
 
12
- @Use()
12
+ @Use({ beanFullName: 'home-base.service.ssrLayout' })
13
13
  get $$serviceSsrLayout(): ServiceSsrLayout {
14
14
  const sidebar = this.scope.config.layout.sidebar;
15
15
  return usePrepareArg({
@@ -21,7 +21,7 @@ export class ControllerLayoutWeb extends BeanControllerBase {
21
21
  @Use()
22
22
  $$modelLayout: ModelLayout;
23
23
 
24
- @Use()
24
+ @Use({ beanFullName: 'home-base.service.ssrLayout' })
25
25
  get $$serviceSsrLayout(): ServiceSsrLayout {
26
26
  const sidebar = this.scope.config.layout.sidebar;
27
27
  return usePrepareArg({
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-module-a-model",
3
- "version": "5.1.33",
3
+ "version": "5.1.34",
4
4
  "gitHead": "09d901d17140a80ee0764211b441cda72fd94663",
5
5
  "description": "core",
6
6
  "keywords": [
@@ -75,11 +75,38 @@ export class BeanModelPersister extends BeanModelLast {
75
75
  if (!query) return;
76
76
  const options = this._adjustPersisterOptions(query.meta?.persister);
77
77
  if (!options) return;
78
+ this._persisterSave(query, options);
79
+ }
80
+
81
+ $persisterSaveTo(queryKey: QueryKey, storageTarget: 'cookie' | 'local', value?: unknown) {
82
+ const query = this.self.$queryFind({ queryKey });
83
+ if (!query) {
84
+ if (process.env.DEV) {
85
+ console.warn('Cannot save persisted query because it was not found', queryKey);
86
+ }
87
+ return;
88
+ }
89
+ const persister =
90
+ query.meta?.persister && typeof query.meta.persister === 'object' ? query.meta.persister : {};
91
+ const options = this._adjustPersisterOptions({
92
+ ...persister,
93
+ storage: storageTarget,
94
+ sync: true,
95
+ serializeDefault: (obj?: Query) =>
96
+ storageTarget === 'cookie'
97
+ ? String(obj?.state?.data ?? '')
98
+ : JSON.stringify(obj?.state?.data),
99
+ });
100
+ if (!options) return;
101
+ this._persisterSave(query, options, value);
102
+ }
103
+
104
+ private _persisterSave(query: Query, options: QueryMetaPersister, value?: unknown) {
78
105
  const storage = this._getPersisterStorage(options, query);
79
106
  if (!storage) return;
80
107
  const storageKey = this._getPersisterStorageKey(options, query);
81
108
  const params = {
82
- state: query.state,
109
+ state: value === undefined ? query.state : { ...query.state, data: value },
83
110
  queryKey: query.queryKey,
84
111
  queryHash: query.queryHash,
85
112
  buster: options.buster,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-module-a-openapi",
3
- "version": "5.1.48",
3
+ "version": "5.1.49",
4
4
  "gitHead": "09d901d17140a80ee0764211b441cda72fd94663",
5
5
  "description": "",
6
6
  "keywords": [
@@ -65,7 +65,7 @@ export class ModelSdk extends BeanModelBase {
65
65
  const bootstrap = await this.$$sysSdk.loadBootstrap(this.$fetch, resource);
66
66
  if (!bootstrap) throw new Error('load bootstrap error');
67
67
  if (process.env.SERVER) {
68
- if (!this.$ssr.cookieDisabledOnServer) {
68
+ if (!this.ctx.meta.$ssr.cookieDisabledOnServer) {
69
69
  await $QueryEnsureLoaded(() => this.getPermissions(resource));
70
70
  }
71
71
  } else {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-module-a-router",
3
- "version": "5.1.31",
3
+ "version": "5.1.32",
4
4
  "gitHead": "09d901d17140a80ee0764211b441cda72fd94663",
5
5
  "description": "router",
6
6
  "keywords": [
@@ -22,6 +22,7 @@ import { shallowReactive } from 'vue';
22
22
  import { BeanControllerPageBase, BeanSimple, cast, useComputed } from 'zova';
23
23
 
24
24
  import type { BeanRouter } from './bean/bean.router.js';
25
+ import type { SysRouter } from './bean/sys.router.js';
25
26
  import type { TypePageSchema } from './types/router.js';
26
27
 
27
28
  import { routerViewKey } from './lib/const.js';
@@ -40,8 +41,16 @@ export class Monkey
40
41
  IMonkeyController
41
42
  {
42
43
  private _beanRouter: BeanRouter;
44
+ private _sysRouter: SysRouter;
43
45
  serviceRouterGuards: ServiceRouterGuards;
44
46
 
47
+ private async _getSysRouter() {
48
+ if (!this._sysRouter) {
49
+ this._sysRouter = (await this.sys.bean._getBean('a-router.sys.router', false)) as SysRouter;
50
+ }
51
+ return this._sysRouter;
52
+ }
53
+
45
54
  async getBeanRouter() {
46
55
  if (!this._beanRouter) {
47
56
  // markReactive: true
@@ -55,6 +64,20 @@ export class Monkey
55
64
  }
56
65
 
57
66
  async appInitialize() {
67
+ const ssrState = this.ctx.meta.$ssr.state;
68
+ if (
69
+ process.env.SERVER &&
70
+ (ssrState.ssrProfile === undefined || ssrState.ssrProfileOptions === undefined)
71
+ ) {
72
+ const pagePathFull = this.app.$getCurrentPagePath();
73
+ if (pagePathFull) {
74
+ const sysRouter = await this._getSysRouter();
75
+ const route = await sysRouter.resolveRoute(pagePathFull, true, false);
76
+ if (route) {
77
+ this.ctx.meta.$ssr._setProfile(route.meta.ssrProfile, route.meta.ssrProfileOptions);
78
+ }
79
+ }
80
+ }
58
81
  // router
59
82
  this.serviceRouterGuards = await this.bean._newBean(ServiceRouterGuards, false);
60
83
  // ssr errorHandler
@@ -22,7 +22,7 @@ export class MonkeySys
22
22
 
23
23
  async getSysRouter() {
24
24
  if (!this._sysRouter) {
25
- this._sysRouter = (await this.bean._getBean('a-router.sys.router', false)) as SysRouter;
25
+ this._sysRouter = (await this.sys.bean._getBean('a-router.sys.router', false)) as SysRouter;
26
26
  }
27
27
  return this._sysRouter;
28
28
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-module-a-ssr",
3
- "version": "5.1.33",
3
+ "version": "5.1.34",
4
4
  "gitHead": "09d901d17140a80ee0764211b441cda72fd94663",
5
5
  "description": "",
6
6
  "keywords": [
@@ -30,9 +30,13 @@ export class Monkey
30
30
  async appInitialize() {
31
31
  this.app.meta.event.on('a-router:routerGuards', async (router, next) => {
32
32
  if (process.env.CLIENT) {
33
- router.afterEach((to, _from, failure) => {
34
- if (!failure) {
35
- this.ctx.meta.$ssr._setProfile(to.meta.ssrProfile, to.meta.ssrProfileOptions);
33
+ // Server profile state is prepared before appInitialize; this synchronizes client navigation.
34
+ router.beforeEach(to => {
35
+ this.ctx.meta.$ssr._setProfile(to.meta.ssrProfile, to.meta.ssrProfileOptions);
36
+ });
37
+ router.afterEach((_to, from, failure) => {
38
+ if (failure) {
39
+ this.ctx.meta.$ssr._setProfile(from.meta.ssrProfile, from.meta.ssrProfileOptions);
36
40
  }
37
41
  });
38
42
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-module-a-style",
3
- "version": "5.1.33",
3
+ "version": "5.1.34",
4
4
  "gitHead": "09d901d17140a80ee0764211b441cda72fd94663",
5
5
  "description": "style",
6
6
  "keywords": [
@@ -18,6 +18,7 @@ export class BeanTheme extends BeanModelBase {
18
18
  }
19
19
 
20
20
  token: unknown;
21
+ private _cookieTheme: boolean;
21
22
  private _mediaDark?: MediaQueryList;
22
23
  private _onMediaDarkChange?;
23
24
 
@@ -25,8 +26,13 @@ export class BeanTheme extends BeanModelBase {
25
26
  $$scopeSsr: ScopeModuleASsr;
26
27
 
27
28
  protected async __init__() {
28
- const cookieTheme = this.$ssr.profileOptions.useCookie;
29
+ const cookieTheme = (this._cookieTheme = this.$ssr.profileOptions.useCookie);
29
30
  const cookieThemeDarkDefault = this.$$scopeSsr.config.cookieThemeDarkDefault;
31
+ const darkModeDefault = cookieTheme
32
+ ? cookieThemeDarkDefault
33
+ : process.env.CLIENT
34
+ ? (window.ssr_load_local<ThemeDarkMode>('themedark') ?? 'auto')
35
+ : 'auto';
30
36
  // support admin
31
37
  this.name = this.$useState(cookieTheme ? 'cookie' : 'local', {
32
38
  queryKey: ['themename'],
@@ -47,7 +53,7 @@ export class BeanTheme extends BeanModelBase {
47
53
  return deserializeDefault(value);
48
54
  },
49
55
  },
50
- defaultData: cookieTheme ? cookieThemeDarkDefault : 'auto',
56
+ defaultData: darkModeDefault,
51
57
  },
52
58
  });
53
59
  this._updateDark();
@@ -67,6 +73,7 @@ export class BeanTheme extends BeanModelBase {
67
73
 
68
74
  // not use watch.immediate for await done
69
75
  await this._applyInitialThemeAndSsrDualOutput();
76
+ this._syncDarkModePersistence();
70
77
  }
71
78
 
72
79
  protected __dispose__() {
@@ -75,6 +82,7 @@ export class BeanTheme extends BeanModelBase {
75
82
 
76
83
  private _updateDark() {
77
84
  this._dark = this._getDarkFromDarkMode(this.darkMode);
85
+ this._syncDarkModePersistence();
78
86
  }
79
87
 
80
88
  async _applyInitialThemeAndSsrDualOutput() {
@@ -119,6 +127,17 @@ export class BeanTheme extends BeanModelBase {
119
127
  return (await this.bean._getBean(beanFullNameFromOnionName(name, 'theme'), true)) as IThemeBase;
120
128
  }
121
129
 
130
+ private _syncDarkModePersistence() {
131
+ if (!process.env.CLIENT || this._dark === undefined) return;
132
+ const queryKey = ['themedark'];
133
+ const target = this._cookieTheme ? 'local' : 'cookie';
134
+ try {
135
+ this.$persisterSaveTo(queryKey, target, this._dark);
136
+ } catch (err) {
137
+ if (process.env.DEV) console.warn('Failed to mirror themedark persistence', err);
138
+ }
139
+ }
140
+
122
141
  toggleDark() {
123
142
  this.darkMode = !this._dark;
124
143
  this._updateDark(); // immediate
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-module-a-zova",
3
- "version": "5.1.98",
3
+ "version": "5.1.99",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "zova",
6
6
  "keywords": [
@@ -43,7 +43,7 @@
43
43
  "@cabloy/word-utils": "^2.1.14",
44
44
  "defu": "^6.1.7",
45
45
  "luxon": "^3.7.2",
46
- "zova-jsx": "^1.1.83"
46
+ "zova-jsx": "^1.1.84"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@cabloy/cli": "^3.1.29",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-suite-a-zova",
3
- "version": "5.1.145",
3
+ "version": "5.1.146",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "zova",
6
6
  "license": "MIT",
@@ -21,18 +21,18 @@
21
21
  "zova-module-a-interceptor": "^5.1.30",
22
22
  "zova-module-a-logger": "^5.1.26",
23
23
  "zova-module-a-meta": "^5.1.21",
24
- "zova-module-a-model": "^5.1.33",
25
- "zova-module-a-openapi": "^5.1.48",
26
- "zova-module-a-router": "^5.1.31",
24
+ "zova-module-a-model": "^5.1.34",
25
+ "zova-module-a-openapi": "^5.1.49",
26
+ "zova-module-a-router": "^5.1.32",
27
27
  "zova-module-a-routerstack": "^5.1.26",
28
28
  "zova-module-a-routertabs": "^5.1.33",
29
- "zova-module-a-ssr": "^5.1.33",
29
+ "zova-module-a-ssr": "^5.1.34",
30
30
  "zova-module-a-ssrhmr": "^5.1.22",
31
31
  "zova-module-a-ssrserver": "^5.1.24",
32
- "zova-module-a-style": "^5.1.33",
32
+ "zova-module-a-style": "^5.1.34",
33
33
  "zova-module-a-table": "^5.1.37",
34
34
  "zova-module-a-zod": "^5.1.36",
35
- "zova-module-a-zova": "^5.1.98"
35
+ "zova-module-a-zova": "^5.1.99"
36
36
  },
37
37
  "title": "a-zova"
38
38
  }