cabloy 5.1.133 → 5.1.134

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 (28) hide show
  1. package/.cabloy-version +1 -1
  2. package/.claude/scheduled_tasks.lock +1 -0
  3. package/CHANGELOG.md +18 -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/pnpm-lock.yaml +233 -69
  8. package/zova/packages-utils/zova-jsx/package.json +2 -2
  9. package/zova/packages-zova/zova/package.json +3 -3
  10. package/zova/packages-zova/zova-core/package.json +2 -1
  11. package/zova/packages-zova/zova-core/src/core/sys/config.ts +2 -2
  12. package/zova/pnpm-lock.yaml +16 -13
  13. package/zova/src/suite/a-home/modules/home-layoutadmin/src/component/layoutAdmin/controller.tsx +1 -1
  14. package/zova/src/suite/a-home/modules/home-layoutempty/src/component/layoutEmpty/controller.tsx +1 -1
  15. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/controller.tsx +1 -1
  16. package/zova/src/suite-vendor/a-zova/modules/a-model/package.json +1 -1
  17. package/zova/src/suite-vendor/a-zova/modules/a-model/src/bean/bean.model/bean.model.persister.ts +28 -1
  18. package/zova/src/suite-vendor/a-zova/modules/a-openapi/package.json +1 -1
  19. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/model/sdk.ts +1 -1
  20. package/zova/src/suite-vendor/a-zova/modules/a-router/package.json +1 -1
  21. package/zova/src/suite-vendor/a-zova/modules/a-router/src/monkey.ts +23 -0
  22. package/zova/src/suite-vendor/a-zova/modules/a-router/src/monkeySys.ts +1 -1
  23. package/zova/src/suite-vendor/a-zova/modules/a-ssr/package.json +1 -1
  24. package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/monkey.ts +7 -3
  25. package/zova/src/suite-vendor/a-zova/modules/a-style/package.json +1 -1
  26. package/zova/src/suite-vendor/a-zova/modules/a-style/src/bean/bean.theme.ts +21 -2
  27. package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
  28. package/zova/src/suite-vendor/a-zova/package.json +7 -7
package/.cabloy-version CHANGED
@@ -1 +1 @@
1
- 5.1.133
1
+ 5.1.134
@@ -0,0 +1 @@
1
+ {"sessionId":"aa2f5459-9806-45a9-a112-0437b3fc7c19","pid":45095,"procStart":"Sun Aug 9 08:20:36 2026","acquiredAt":1786451839628}
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## 5.1.134
4
+
5
+ ### Features
6
+
7
+ - Add SSR profile support, including cookie-based profile handling.
8
+ - Add SSR layout support.
9
+ - Add `this.ctx.meta.$ssr.cookieDisabledOnServer` metadata.
10
+ - Update the `ms` type definitions.
11
+
12
+ ### Bug Fixes
13
+
14
+ - Correct SSR profile behavior between server and client.
15
+
16
+ ### Improvements
17
+
18
+ - Update the Bean theme configuration.
19
+ - Update IoC and Beans documentation.
20
+
3
21
  ## 5.1.133
4
22
 
5
23
  ### Features
@@ -133,6 +133,26 @@ class ControllerLayout {
133
133
 
134
134
  In practice, Zova can still preserve the ergonomic class-based development experience while compiling cross-module usage back toward bean-identifier-based resolution.
135
135
 
136
+ ### Getter-based parameterized injection
137
+
138
+ Use a getter when injection arguments must be prepared dynamically. The getter must explicitly identify the target bean with `beanFullName`; `usePrepareArg(...)` supplies initialization arguments only and does not resolve the target bean.
139
+
140
+ ```typescript
141
+ import { Use, usePrepareArg } from 'zova';
142
+ import type { ServiceSsrLayout } from 'zova-module-home-base';
143
+
144
+ class ControllerLayout {
145
+ @Use({ beanFullName: 'home-base.service.ssrLayout' })
146
+ get $$serviceSsrLayout(): ServiceSsrLayout {
147
+ return usePrepareArg({
148
+ bodyReadyObserver: this.scope.config.layout.sidebar.bodyReadyObserver,
149
+ });
150
+ }
151
+ }
152
+ ```
153
+
154
+ Do not rely on the getter return type for implicit class resolution. Unlike a field declaration, a decorated getter does not reliably expose its return bean class as runtime type metadata, and build-time cross-module `@Use()` transforms do not provide a replacement target for getter injection.
155
+
136
156
  ### Hierarchical injection patterns
137
157
 
138
158
  Hierarchical injection replaces many common cases where a generic Vue app would fall back to `provide/inject`.
@@ -218,6 +218,42 @@ test(
218
218
  },
219
219
  );
220
220
 
221
+ test(
222
+ 'Commerce theme: public local preference mirrors session cookie without hydration mismatch',
223
+ { tag: ['@web', '@ssr', '@theme'] },
224
+ async ({ browser, request }, testInfo) => {
225
+ const customer = await registerCustomer(request, testInfo);
226
+ const context = await browser.newContext();
227
+ await context.addInitScript(() => localStorage.setItem('themedark', 'true'));
228
+ const page = await context.newPage();
229
+ const pageErrors = collectPageErrors(page);
230
+ const consoleErrors: string[] = [];
231
+ page.on('console', message => {
232
+ if (message.type() === 'error' || /hydration mismatch/i.test(message.text())) {
233
+ consoleErrors.push(message.text());
234
+ }
235
+ });
236
+ try {
237
+ await page.goto('/commerce', { waitUntil: 'load' });
238
+ await page.evaluate(() => localStorage.setItem('themedark', 'true'));
239
+ await page.reload({ waitUntil: 'load' });
240
+ await expect(page.locator('html')).toHaveAttribute('data-zova-hydrated', 'commerce');
241
+ await expect(page.locator('body')).toHaveAttribute('data-theme', 'dark');
242
+ expect((await context.cookies()).find(cookie => cookie.name === 'themedark')?.value).toBe(
243
+ 'true',
244
+ );
245
+
246
+ await login(page, '/commerce/address', customer.username, customer.password, 'commerce');
247
+ await expect(page.locator('html')).toHaveAttribute('data-zova-hydrated', 'commerce');
248
+ await expect(page.locator('body')).toHaveAttribute('data-theme', 'dark');
249
+ expect(pageErrors).toEqual([]);
250
+ expect(consoleErrors).toEqual([]);
251
+ } finally {
252
+ await context.close();
253
+ }
254
+ },
255
+ );
256
+
221
257
  test(
222
258
  'Commerce catalogue: public sellable inventory renders after hydration',
223
259
  { tag: ['@web', '@flow'] },
@@ -472,32 +508,25 @@ test(
472
508
  await expect(page).toHaveURL(new RegExp(`/commerce/order/${checkout.orderId}(?:/|$)`), {
473
509
  timeout: 40_000,
474
510
  });
475
- const orderDetailResponse = waitForApiResponse(
476
- page,
477
- 'GET',
478
- new RegExp(`/api/commerce/trade/order/viewMine/${checkout.orderId}$`),
479
- );
480
- await page.reload({ waitUntil: 'load' });
481
- const orderDetailResponseValue = await orderDetailResponse;
482
- expect(orderDetailResponseValue.ok()).toBeTruthy();
483
- const order = (await orderDetailResponseValue.json()).data;
484
- expect(order.id).toBe(checkout.orderId);
485
- expect(order.state).toBe('paid');
486
- expect(order.currency).toBe('USD');
487
- expect(order.discountCents).toBe(0);
488
- expect(order.payableTotalCents).toBe(4599);
489
- expect(order.addressSnapshot.recipientName).toBe(fixture.recipientName);
490
- expect(order.addressSnapshot.addressLine1).toBe(fixture.addressLine1);
491
- expect(order.lines).toEqual([
492
- expect.objectContaining({
493
- titleSnapshot: 'Pour-Over Coffee Set',
494
- skuCodeSnapshot: 'COF-SET-01',
495
- unitPriceCents: 4599,
496
- quantity: 1,
497
- lineTotalCents: 4599,
498
- }),
499
- ]);
500
-
511
+ const orderPath = `/commerce/order/${checkout.orderId}`;
512
+ const orderResponse = await context.request.get(orderPath);
513
+ expect(orderResponse.ok()).toBeTruthy();
514
+ expect(orderResponse.headers()['cache-control']).toBe('private, no-store');
515
+ const orderHtml = await orderResponse.text();
516
+ expect(orderHtml.toLowerCase()).not.toContain('data-zova-hydrated');
517
+ expect(orderHtml).toContain(`Order #${checkout.orderId}`);
518
+ expect(orderHtml).toContain('paid · $45.99');
519
+ expect(orderHtml).toContain('USD');
520
+ expect(orderHtml).toContain(fixture.recipientName);
521
+ expect(orderHtml).toContain(fixture.addressLine1);
522
+ expect(orderHtml).toContain('Discount: $0.00');
523
+ expect(orderHtml).toContain('Pour-Over Coffee Set');
524
+ expect(orderHtml).toContain('COF-SET-01');
525
+ expect(orderHtml).toContain('1 × $45.99 = $45.99');
526
+
527
+ const orderDocumentResponse = await page.reload({ waitUntil: 'load' });
528
+ expect(orderDocumentResponse?.ok()).toBeTruthy();
529
+ await expect(page.locator('html')).toHaveAttribute('data-zova-hydrated', 'commerce');
501
530
  await expect(page.getByRole('heading', { name: `Order #${checkout.orderId}` })).toBeVisible();
502
531
  await expect(page.getByText('paid · $45.99')).toBeVisible();
503
532
  await expect(page.getByText(fixture.recipientName)).toBeVisible();
@@ -567,22 +596,18 @@ test(
567
596
  await adminContext.close().catch(() => {});
568
597
  }
569
598
 
570
- const shippedDetailResponse = waitForApiResponse(
571
- page,
572
- 'GET',
573
- new RegExp(`/api/commerce/trade/order/viewMine/${checkout.orderId}$`),
574
- );
575
- await page.reload({ waitUntil: 'load' });
576
- await shippedDetailResponse;
599
+ const shippedDocumentResponse = await page.reload({ waitUntil: 'load' });
600
+ expect(shippedDocumentResponse?.ok()).toBeTruthy();
601
+ await expect(page.locator('html')).toHaveAttribute('data-zova-hydrated', 'commerce');
577
602
  await expect(page.getByText('shipped · $45.99')).toBeVisible();
578
603
  await expect(page.getByRole('heading', { name: 'Shipment' })).toBeVisible();
579
604
  await expect(page.getByText(shipmentCarrier)).toBeVisible();
580
605
  await expect(page.getByText(shipmentTrackingNumber)).toBeVisible();
581
606
 
582
- const ordersResponse = waitForApiResponse(page, 'GET', '/api/commerce/trade/order/mine');
583
- await page.goto('/commerce/orders', { waitUntil: 'load' });
607
+ const ordersDocumentResponse = await page.goto('/commerce/orders', { waitUntil: 'load' });
608
+ expect(ordersDocumentResponse?.ok()).toBeTruthy();
584
609
  await expect(page).toHaveURL(/\/commerce\/orders(?:\/|$)/);
585
- await ordersResponse;
610
+ await expect(page.locator('html')).toHaveAttribute('data-zova-hydrated', 'commerce');
586
611
  await expect(page.getByRole('heading', { name: 'My orders' })).toBeVisible();
587
612
  const orderCard = page
588
613
  .locator('article')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cabloy",
3
- "version": "5.1.133",
3
+ "version": "5.1.134",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "A Node.js fullstack framework",
6
6
  "keywords": [
@@ -564,11 +564,11 @@ importers:
564
564
  specifier: npm:@cabloy/zod@4.3.8
565
565
  version: '@cabloy/zod@4.3.8'
566
566
  zova:
567
- specifier: ^5.1.145
568
- version: 5.1.145(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
567
+ specifier: ^5.1.146
568
+ version: 5.1.146(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
569
569
  zova-jsx:
570
- specifier: ^1.1.82
571
- version: 1.1.82(typescript@5.9.3)
570
+ specifier: ^1.1.83
571
+ version: 1.1.83(typescript@5.9.3)
572
572
  zova-module-a-api:
573
573
  specifier: ^5.1.21
574
574
  version: 5.1.21
@@ -588,17 +588,17 @@ importers:
588
588
  specifier: ^5.1.26
589
589
  version: 5.1.26
590
590
  zova-module-a-interceptor:
591
- specifier: ^5.1.29
592
- version: 5.1.29
591
+ specifier: ^5.1.30
592
+ version: 5.1.30
593
593
  zova-module-a-model:
594
594
  specifier: ^5.1.33
595
595
  version: 5.1.33(vue@3.5.39(typescript@5.9.3))
596
596
  zova-module-a-openapi:
597
- specifier: ^5.1.47
598
- version: 5.1.47
597
+ specifier: ^5.1.48
598
+ version: 5.1.48
599
599
  zova-module-a-pay:
600
- specifier: ^5.0.3
601
- version: 5.0.3
600
+ specifier: ^5.0.4
601
+ version: 5.0.4
602
602
  zova-module-a-router:
603
603
  specifier: ^5.1.31
604
604
  version: 5.1.31
@@ -606,11 +606,11 @@ importers:
606
606
  specifier: ^5.1.33
607
607
  version: 5.1.33
608
608
  zova-module-a-ssr:
609
- specifier: ^5.1.32
610
- version: 5.1.32
609
+ specifier: ^5.1.33
610
+ version: 5.1.33
611
611
  zova-module-a-style:
612
- specifier: ^5.1.32
613
- version: 5.1.32
612
+ specifier: ^5.1.33
613
+ version: 5.1.33
614
614
  zova-module-a-table:
615
615
  specifier: ^5.1.37
616
616
  version: 5.1.37(vue@3.5.39(typescript@5.9.3))
@@ -618,8 +618,8 @@ importers:
618
618
  specifier: ^5.0.2
619
619
  version: 5.0.2
620
620
  zova-module-rest-resource:
621
- specifier: ^5.1.42
622
- version: 5.1.42
621
+ specifier: ^5.1.43
622
+ version: 5.1.43
623
623
 
624
624
  .zova-rest/cabloy-basic-web:
625
625
  dependencies:
@@ -642,11 +642,11 @@ importers:
642
642
  specifier: npm:@cabloy/zod@4.3.8
643
643
  version: '@cabloy/zod@4.3.8'
644
644
  zova:
645
- specifier: ^5.1.145
646
- version: 5.1.145(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
645
+ specifier: ^5.1.146
646
+ version: 5.1.146(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
647
647
  zova-jsx:
648
- specifier: ^1.1.82
649
- version: 1.1.82(typescript@5.9.3)
648
+ specifier: ^1.1.83
649
+ version: 1.1.83(typescript@5.9.3)
650
650
  zova-module-a-api:
651
651
  specifier: ^5.1.21
652
652
  version: 5.1.21
@@ -666,17 +666,17 @@ importers:
666
666
  specifier: ^5.1.26
667
667
  version: 5.1.26
668
668
  zova-module-a-interceptor:
669
- specifier: ^5.1.29
670
- version: 5.1.29
669
+ specifier: ^5.1.30
670
+ version: 5.1.30
671
671
  zova-module-a-model:
672
672
  specifier: ^5.1.33
673
673
  version: 5.1.33(vue@3.5.39(typescript@5.9.3))
674
674
  zova-module-a-openapi:
675
- specifier: ^5.1.47
676
- version: 5.1.47
675
+ specifier: ^5.1.48
676
+ version: 5.1.48
677
677
  zova-module-a-pay:
678
- specifier: ^5.0.3
679
- version: 5.0.3
678
+ specifier: ^5.0.4
679
+ version: 5.0.4
680
680
  zova-module-a-router:
681
681
  specifier: ^5.1.31
682
682
  version: 5.1.31
@@ -684,11 +684,11 @@ importers:
684
684
  specifier: ^5.1.33
685
685
  version: 5.1.33
686
686
  zova-module-a-ssr:
687
- specifier: ^5.1.32
688
- version: 5.1.32
687
+ specifier: ^5.1.33
688
+ version: 5.1.33
689
689
  zova-module-a-style:
690
- specifier: ^5.1.32
691
- version: 5.1.32
690
+ specifier: ^5.1.33
691
+ version: 5.1.33
692
692
  zova-module-a-table:
693
693
  specifier: ^5.1.37
694
694
  version: 5.1.37(vue@3.5.39(typescript@5.9.3))
@@ -696,8 +696,8 @@ importers:
696
696
  specifier: ^5.0.2
697
697
  version: 5.0.2
698
698
  zova-module-rest-resource:
699
- specifier: ^5.1.42
700
- version: 5.1.42
699
+ specifier: ^5.1.43
700
+ version: 5.1.43
701
701
 
702
702
  .zova-rest/cabloy-commerce:
703
703
  dependencies:
@@ -720,11 +720,11 @@ importers:
720
720
  specifier: npm:@cabloy/zod@4.3.8
721
721
  version: '@cabloy/zod@4.3.8'
722
722
  zova:
723
- specifier: ^5.1.145
724
- version: 5.1.145(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
723
+ specifier: ^5.1.146
724
+ version: 5.1.146(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
725
725
  zova-jsx:
726
- specifier: ^1.1.82
727
- version: 1.1.82(typescript@5.9.3)
726
+ specifier: ^1.1.83
727
+ version: 1.1.83(typescript@5.9.3)
728
728
  zova-module-a-api:
729
729
  specifier: ^5.1.21
730
730
  version: 5.1.21
@@ -744,17 +744,17 @@ importers:
744
744
  specifier: ^5.1.26
745
745
  version: 5.1.26
746
746
  zova-module-a-interceptor:
747
- specifier: ^5.1.29
748
- version: 5.1.29
747
+ specifier: ^5.1.30
748
+ version: 5.1.30
749
749
  zova-module-a-model:
750
750
  specifier: ^5.1.33
751
751
  version: 5.1.33(vue@3.5.39(typescript@5.9.3))
752
752
  zova-module-a-openapi:
753
- specifier: ^5.1.47
754
- version: 5.1.47
753
+ specifier: ^5.1.48
754
+ version: 5.1.48
755
755
  zova-module-a-pay:
756
- specifier: ^5.0.3
757
- version: 5.0.3
756
+ specifier: ^5.0.4
757
+ version: 5.0.4
758
758
  zova-module-a-router:
759
759
  specifier: ^5.1.31
760
760
  version: 5.1.31
@@ -762,11 +762,11 @@ importers:
762
762
  specifier: ^5.1.33
763
763
  version: 5.1.33
764
764
  zova-module-a-ssr:
765
- specifier: ^5.1.32
766
- version: 5.1.32
765
+ specifier: ^5.1.33
766
+ version: 5.1.33
767
767
  zova-module-a-style:
768
- specifier: ^5.1.32
769
- version: 5.1.32
768
+ specifier: ^5.1.33
769
+ version: 5.1.33
770
770
  zova-module-a-table:
771
771
  specifier: ^5.1.37
772
772
  version: 5.1.37(vue@3.5.39(typescript@5.9.3))
@@ -774,8 +774,8 @@ importers:
774
774
  specifier: ^5.0.2
775
775
  version: 5.0.2
776
776
  zova-module-rest-resource:
777
- specifier: ^5.1.42
778
- version: 5.1.42
777
+ specifier: ^5.1.43
778
+ version: 5.1.43
779
779
 
780
780
  .zova-rest/cabloy-commerce-admin:
781
781
  dependencies:
@@ -798,11 +798,11 @@ importers:
798
798
  specifier: npm:@cabloy/zod@4.3.8
799
799
  version: '@cabloy/zod@4.3.8'
800
800
  zova:
801
- specifier: ^5.1.145
802
- version: 5.1.145(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
801
+ specifier: ^5.1.146
802
+ version: 5.1.146(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
803
803
  zova-jsx:
804
- specifier: ^1.1.82
805
- version: 1.1.82(typescript@5.9.3)
804
+ specifier: ^1.1.83
805
+ version: 1.1.83(typescript@5.9.3)
806
806
  zova-module-a-api:
807
807
  specifier: ^5.1.21
808
808
  version: 5.1.21
@@ -822,17 +822,17 @@ importers:
822
822
  specifier: ^5.1.26
823
823
  version: 5.1.26
824
824
  zova-module-a-interceptor:
825
- specifier: ^5.1.29
826
- version: 5.1.29
825
+ specifier: ^5.1.30
826
+ version: 5.1.30
827
827
  zova-module-a-model:
828
828
  specifier: ^5.1.33
829
829
  version: 5.1.33(vue@3.5.39(typescript@5.9.3))
830
830
  zova-module-a-openapi:
831
- specifier: ^5.1.47
832
- version: 5.1.47
831
+ specifier: ^5.1.48
832
+ version: 5.1.48
833
833
  zova-module-a-pay:
834
- specifier: ^5.0.3
835
- version: 5.0.3
834
+ specifier: ^5.0.4
835
+ version: 5.0.4
836
836
  zova-module-a-router:
837
837
  specifier: ^5.1.31
838
838
  version: 5.1.31
@@ -840,11 +840,11 @@ importers:
840
840
  specifier: ^5.1.33
841
841
  version: 5.1.33
842
842
  zova-module-a-ssr:
843
- specifier: ^5.1.32
844
- version: 5.1.32
843
+ specifier: ^5.1.33
844
+ version: 5.1.33
845
845
  zova-module-a-style:
846
- specifier: ^5.1.32
847
- version: 5.1.32
846
+ specifier: ^5.1.33
847
+ version: 5.1.33
848
848
  zova-module-a-table:
849
849
  specifier: ^5.1.37
850
850
  version: 5.1.37(vue@3.5.39(typescript@5.9.3))
@@ -852,8 +852,8 @@ importers:
852
852
  specifier: ^5.0.2
853
853
  version: 5.0.2
854
854
  zova-module-rest-resource:
855
- specifier: ^5.1.42
856
- version: 5.1.42
855
+ specifier: ^5.1.43
856
+ version: 5.1.43
857
857
 
858
858
  .zova-rest/cabloy-commerce-member:
859
859
  dependencies:
@@ -1915,16 +1915,16 @@ importers:
1915
1915
  src/suite-vendor/a-pay:
1916
1916
  dependencies:
1917
1917
  vona-module-a-pay:
1918
- specifier: ^5.0.4
1918
+ specifier: ^5.0.5
1919
1919
  version: link:modules/a-pay
1920
1920
  vona-module-pay-mock:
1921
- specifier: ^5.0.4
1921
+ specifier: ^5.0.5
1922
1922
  version: link:modules/pay-mock
1923
1923
  vona-module-pay-paypal:
1924
- specifier: ^5.0.4
1924
+ specifier: ^5.0.5
1925
1925
  version: link:modules/pay-paypal
1926
1926
  vona-module-pay-stripe:
1927
- specifier: ^5.0.4
1927
+ specifier: ^5.0.5
1928
1928
  version: link:modules/pay-stripe
1929
1929
 
1930
1930
  src/suite-vendor/a-pay/modules/a-pay:
@@ -2003,7 +2003,7 @@ importers:
2003
2003
  specifier: ^5.0.8
2004
2004
  version: link:modules/test-file
2005
2005
  vona-module-test-pay:
2006
- specifier: ^5.0.3
2006
+ specifier: ^5.0.4
2007
2007
  version: link:modules/test-pay
2008
2008
 
2009
2009
  src/suite-vendor/a-test/modules/test-auth:
@@ -8654,9 +8654,15 @@ packages:
8654
8654
  zova-core@5.1.82:
8655
8655
  resolution: {integrity: sha512-JAcdG5SYI+QqzCsynfe3GKYcx7MZIWhi8icA85yL8JL28cZOziP+p+PsWRZPKnk/f9lReBVsv5uyQWYvD6ydPQ==}
8656
8656
 
8657
+ zova-core@5.1.83:
8658
+ resolution: {integrity: sha512-ggSp+OyeuKTPJUocyjveNxBhFzRTlqlLrmGso9nH6/hQ2zhh5qKeTyhxXDZ2SSSYPP6l3znlAwBxllE0rd8AmQ==}
8659
+
8657
8660
  zova-jsx@1.1.82:
8658
8661
  resolution: {integrity: sha512-Ri3skPn7JtP4n2hwChJzdtY+Z9FX/UsFZtm63dD5xZ0czAejNEgJJiEWpXlVhaXaNbgdes5WLkgpMmJGSvMoWg==}
8659
8662
 
8663
+ zova-jsx@1.1.83:
8664
+ resolution: {integrity: sha512-w77wlgn88CCrnuk7cc7v9KG7lruosgS2yxHMuOt0ZpHrnUw55QzPorCh96xQ24AQP2eyESGLxw7MWg/1NtsLcA==}
8665
+
8660
8666
  zova-module-a-api@5.1.21:
8661
8667
  resolution: {integrity: sha512-qjm/hfjC4/+7Ap/uzJfBzV0PwRlp2idEmEKwCZYxquaXq6QtJBbTWTznw1iukT4lkJZip2KFkjOvXTzdvZA2UA==}
8662
8668
 
@@ -8690,6 +8696,9 @@ packages:
8690
8696
  zova-module-a-interceptor@5.1.29:
8691
8697
  resolution: {integrity: sha512-Gmu5707orDPBc+w5qIeO4Bm0jhlFb1te0YZ4KTF6lrgjJ81Iwc6ervbYeQakxJAPVSqzeqkRn8JIUokS02Kg7g==}
8692
8698
 
8699
+ zova-module-a-interceptor@5.1.30:
8700
+ resolution: {integrity: sha512-ZjzvMzdt08MFk/UUd3f4VSsVfR+qkWKwyFWZ8Wh0XzPegGiu5Trqb5jO5z1g5LtjykWx7fm7LiAVN3HtqxPfhw==}
8701
+
8693
8702
  zova-module-a-logger@5.1.26:
8694
8703
  resolution: {integrity: sha512-GEMQZLYIKEJyZPF6mO3+mX92MU5i/tqVoQIqeQBnoNLLZrMu/uExU5n/3hk5JGmbFAZ0skJOqCRLDV5ejWxhVg==}
8695
8704
 
@@ -8702,9 +8711,15 @@ packages:
8702
8711
  zova-module-a-openapi@5.1.47:
8703
8712
  resolution: {integrity: sha512-iar4YR9GGdCQ9N60yt9yV+RkiM1seKlmbhoyZqLAZ7aR5tLnw2ZL7ElamHEGO5iBtFXRU8QH8RaU+8PnnyaLkg==}
8704
8713
 
8714
+ zova-module-a-openapi@5.1.48:
8715
+ resolution: {integrity: sha512-/s7b+iMwnpqjMG8hC+v1DDIKlm8brRtLX3TLX7AGKVc8R20yBFQSl4NPU6rJFzeo7OiBtUrtIxzm1WWNN1dutw==}
8716
+
8705
8717
  zova-module-a-pay@5.0.3:
8706
8718
  resolution: {integrity: sha512-W2UZ0ojYk9q3P4i3ByXxhTCc2cZmegsdV61lKWY4vp/ZA3fuLntIewD2ENdWWIIzXKH00exEQcssjFmj444xcA==}
8707
8719
 
8720
+ zova-module-a-pay@5.0.4:
8721
+ resolution: {integrity: sha512-fCmQ0dnT3W+YmJWuvND1JCnyovWHoeEHyAmXzQAKhGFXHeCYbtMMaOiXBYvWCEsjDC8zADVqdwtpwpj9CdYbyQ==}
8722
+
8708
8723
  zova-module-a-router@5.1.31:
8709
8724
  resolution: {integrity: sha512-bTtj3JmJKGZwUYwWpsuhigXYseYab/gOmT18WyNw0KetZGY03Y+JnU74oidrK1KtIY384+my1ZQefBlbIZjNeg==}
8710
8725
 
@@ -8717,15 +8732,24 @@ packages:
8717
8732
  zova-module-a-ssr@5.1.32:
8718
8733
  resolution: {integrity: sha512-TYtjG0+1ueFW+c3mVAidvZ0yK3cMDThKkJf3Crv9npzU50im//o49nAGeZ6XpeFZs9Lyi1AU217x/UqIWimfMA==}
8719
8734
 
8735
+ zova-module-a-ssr@5.1.33:
8736
+ resolution: {integrity: sha512-PqEVv9hpLB/lmCNrgpNEndc7Qcd4Wyxn+exDWRvTQwMgzCc11fyTJFgQezBSZrLf4PoqVRVAWhcG8XzTHhbERg==}
8737
+
8720
8738
  zova-module-a-ssrhmr@5.1.22:
8721
8739
  resolution: {integrity: sha512-K9D0DqCPuABvESyuAY8tQ7RukMpMEaMol0SV08ixVyed7Zd/b+Ugh49WEC2b5Y5iZCJliW9JJekvzS9Y0DilTA==}
8722
8740
 
8723
8741
  zova-module-a-ssrserver@5.1.23:
8724
8742
  resolution: {integrity: sha512-+hpTTRfJP9mVCOueXYlAtt4W82ihQbQDRjJ7TjGVN/pIV3oL9Ca3I491wkd6I3Avq9dT7rjB/iKWs29F6ic3lA==}
8725
8743
 
8744
+ zova-module-a-ssrserver@5.1.24:
8745
+ resolution: {integrity: sha512-k5d2WS8zSgvE25U5N6GgrFFZu46ReLUBJKZQ28SyHfrtID2Fh2LPpzSB7zrV2g/G33tvVMoBTsKSBEyE9hERMA==}
8746
+
8726
8747
  zova-module-a-style@5.1.32:
8727
8748
  resolution: {integrity: sha512-2D7XKTWdqY0/Z7jPJQ31Fikl2wNxifF5R/RexfemeJtrJBYap46mpA++BhxgawfOgMDQ8mpT5iQfS5Ep9TILlw==}
8728
8749
 
8750
+ zova-module-a-style@5.1.33:
8751
+ resolution: {integrity: sha512-CRFzbym3daVcqfbPinioegYMtWLh46Uphf0ZZFGfsM7RedrDBLXQv0IK0fBGAqCMUZSfPqIh7s4lkwxy2rWc5A==}
8752
+
8729
8753
  zova-module-a-table@5.1.37:
8730
8754
  resolution: {integrity: sha512-P1WdqTGLdbAh81NhF3+dN+Y91ZidOL87AzVh22jCTevk2NFYz48wBRH9b7EqMSk8HMbB22sbzIQclbnr7+BW3w==}
8731
8755
 
@@ -8735,18 +8759,30 @@ packages:
8735
8759
  zova-module-a-zova@5.1.97:
8736
8760
  resolution: {integrity: sha512-rBEWxwKQ86iT4dsSyJRYRKFzfUNk6zMXY4Ff5XYnkxJI6sVfCm5+3MZC27RavqnVU+odAtS8RFQLpR33kMKMtA==}
8737
8761
 
8762
+ zova-module-a-zova@5.1.98:
8763
+ resolution: {integrity: sha512-/h2cE2TA27Qtaem83ZzWTnuS2U8tSENarLIwE9t3L0I4bbxSJlCixunuvqIfjKZzJ4gySSA+RWx+Op48KeWpBw==}
8764
+
8738
8765
  zova-module-pay-mock@5.0.2:
8739
8766
  resolution: {integrity: sha512-G6ld4ZZJ3crSUQ1fH+Tn2p9/05ngfJYtDtTtq7K1Xo9ei2fjbp13Jrbjh3cKR+dhWuK9Q1gwAs7xwhu7NIiTKA==}
8740
8767
 
8741
8768
  zova-module-rest-resource@5.1.42:
8742
8769
  resolution: {integrity: sha512-eMWhc4428U5Hs4BHqFJoF7yaH+bK8t71scIrCnpLbQS7M80lNkoHxY9s/Kl4i8Uo3+lVWbSbuaXWtR+zVLNqpA==}
8743
8770
 
8771
+ zova-module-rest-resource@5.1.43:
8772
+ resolution: {integrity: sha512-tIZij+Z8n8koXxi+4yV7/lzOyBzh04rrtG30lSr8O/+vIb7t2h6NMmkQvTvqcuK2riNSU1sIrbyHGBRp7PiUIg==}
8773
+
8744
8774
  zova-suite-a-zova@5.1.144:
8745
8775
  resolution: {integrity: sha512-viW0GA4BviNOllF72Yw6EQ5Kpqvqf6IiNWfG6t8DO8RpMAZsiWk2Sxc9V17cIhw4Hoc8sEfb2HjZUIWDgf3SUA==}
8746
8776
 
8777
+ zova-suite-a-zova@5.1.145:
8778
+ resolution: {integrity: sha512-lDZ6P1wKppojYGTN8vZv5E3uokyeAjQHloih4H/3qdbS8KJReTTflo/quqDNwqBCM7Oewm8+MHqn+/1uGc4dlw==}
8779
+
8747
8780
  zova@5.1.145:
8748
8781
  resolution: {integrity: sha512-/iJ5Xs8vh3c7ykUvbQjZ6Kh9ZsQXqTqRgZJjBHQw9Ngs1i5N9Lp6NOU8v74m0X8hql+3yMeKjEV8iUDPKD2N2A==}
8749
8782
 
8783
+ zova@5.1.146:
8784
+ resolution: {integrity: sha512-Dv4fPgCIo4+qVxTlak+fXL3tvUJfyBVhCt2ZxOrVjf/NlCXkEJ2hoSaKlGiQN8EVjAhHUkDfzSgtZnAY+2Bzlg==}
8785
+
8750
8786
  zwitch@1.0.5:
8751
8787
  resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==}
8752
8788
 
@@ -14694,6 +14730,36 @@ snapshots:
14694
14730
  transitivePeerDependencies:
14695
14731
  - typescript
14696
14732
 
14733
+ zova-core@5.1.83(typescript@5.9.3):
14734
+ dependencies:
14735
+ '@cabloy/compose': link:packages-utils/compose
14736
+ '@cabloy/extend': link:packages-utils/extend
14737
+ '@cabloy/json5': link:packages-utils/json5
14738
+ '@cabloy/localeutil': link:packages-utils/localeutil
14739
+ '@cabloy/logger': 1.1.24
14740
+ '@cabloy/module-info': 2.0.3
14741
+ '@cabloy/utils': link:packages-utils/utils
14742
+ '@cabloy/vue-compiler-sfc': 3.5.14
14743
+ '@cabloy/vue-reactivity': 3.5.16
14744
+ '@cabloy/vue-router': 4.4.16(vue@3.5.39(typescript@5.9.3))
14745
+ '@cabloy/vue-runtime-core': 3.5.57
14746
+ '@cabloy/vue-runtime-dom': 3.5.13
14747
+ '@cabloy/vue-server-renderer': 3.5.18(vue@3.5.39(typescript@5.9.3))
14748
+ '@cabloy/word-utils': 2.1.14
14749
+ '@cabloy/zod-errors-custom': link:packages-utils/zod-errors-custom
14750
+ '@cabloy/zod-openapi': link:packages-utils/zod-openapi
14751
+ '@cabloy/zod-query': link:packages-utils/zod-query
14752
+ '@types/js-cookie': 3.0.6
14753
+ '@vue/shared': 3.5.36
14754
+ deep-equal: 2.2.3
14755
+ ms: 2.1.3
14756
+ reflect-metadata: 0.2.2
14757
+ vue: 3.5.39(typescript@5.9.3)
14758
+ vue-plugin-render-freeze: 2.0.4(vue@3.5.39(typescript@5.9.3))
14759
+ zod: '@cabloy/zod@4.3.8'
14760
+ transitivePeerDependencies:
14761
+ - typescript
14762
+
14697
14763
  zova-jsx@1.1.82(typescript@5.9.3):
14698
14764
  dependencies:
14699
14765
  '@cabloy/compose': link:packages-utils/compose
@@ -14705,6 +14771,17 @@ snapshots:
14705
14771
  transitivePeerDependencies:
14706
14772
  - typescript
14707
14773
 
14774
+ zova-jsx@1.1.83(typescript@5.9.3):
14775
+ dependencies:
14776
+ '@cabloy/compose': link:packages-utils/compose
14777
+ '@cabloy/utils': link:packages-utils/utils
14778
+ '@cabloy/word-utils': 2.1.14
14779
+ typestyle: 2.4.0
14780
+ vue: 3.5.39(typescript@5.9.3)
14781
+ zova-core: 5.1.83(typescript@5.9.3)
14782
+ transitivePeerDependencies:
14783
+ - typescript
14784
+
14708
14785
  zova-module-a-api@5.1.21: {}
14709
14786
 
14710
14787
  zova-module-a-app@5.1.25: {}
@@ -14740,6 +14817,8 @@ snapshots:
14740
14817
 
14741
14818
  zova-module-a-interceptor@5.1.29: {}
14742
14819
 
14820
+ zova-module-a-interceptor@5.1.30: {}
14821
+
14743
14822
  zova-module-a-logger@5.1.26:
14744
14823
  dependencies:
14745
14824
  '@cabloy/logger': 1.1.24
@@ -14764,8 +14843,16 @@ snapshots:
14764
14843
  openapi3-ts: 4.6.0
14765
14844
  typestyle: 2.4.0
14766
14845
 
14846
+ zova-module-a-openapi@5.1.48:
14847
+ dependencies:
14848
+ '@cabloy/json-schema-to-zod': 2.6.5
14849
+ openapi3-ts: 4.6.0
14850
+ typestyle: 2.4.0
14851
+
14767
14852
  zova-module-a-pay@5.0.3: {}
14768
14853
 
14854
+ zova-module-a-pay@5.0.4: {}
14855
+
14769
14856
  zova-module-a-router@5.1.31: {}
14770
14857
 
14771
14858
  zova-module-a-routerstack@5.1.26: {}
@@ -14777,6 +14864,11 @@ snapshots:
14777
14864
  devalue: 5.8.1
14778
14865
  ms: 2.1.3
14779
14866
 
14867
+ zova-module-a-ssr@5.1.33:
14868
+ dependencies:
14869
+ devalue: 5.8.1
14870
+ ms: 2.1.3
14871
+
14780
14872
  zova-module-a-ssrhmr@5.1.22:
14781
14873
  dependencies:
14782
14874
  '@cabloy/socket': link:packages-utils/socket
@@ -14786,11 +14878,20 @@ snapshots:
14786
14878
  dependencies:
14787
14879
  ms: 2.1.3
14788
14880
 
14881
+ zova-module-a-ssrserver@5.1.24:
14882
+ dependencies:
14883
+ ms: 2.1.3
14884
+
14789
14885
  zova-module-a-style@5.1.32:
14790
14886
  dependencies:
14791
14887
  csx: 10.0.2
14792
14888
  typestyle: 2.4.0
14793
14889
 
14890
+ zova-module-a-style@5.1.33:
14891
+ dependencies:
14892
+ csx: 10.0.2
14893
+ typestyle: 2.4.0
14894
+
14794
14895
  zova-module-a-table@5.1.37(vue@3.5.39(typescript@5.9.3)):
14795
14896
  dependencies:
14796
14897
  '@tanstack/table-core': 8.21.3
@@ -14821,10 +14922,28 @@ snapshots:
14821
14922
  - typescript
14822
14923
  - vue
14823
14924
 
14925
+ zova-module-a-zova@5.1.98(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
14926
+ dependencies:
14927
+ '@cabloy/compose': link:packages-utils/compose
14928
+ '@cabloy/deps': link:packages-utils/deps
14929
+ '@cabloy/json5': link:packages-utils/json5
14930
+ '@cabloy/module-info': 2.0.3
14931
+ '@cabloy/utils': link:packages-utils/utils
14932
+ '@cabloy/vue-router': 4.4.16(vue@3.5.39(typescript@5.9.3))
14933
+ '@cabloy/word-utils': 2.1.14
14934
+ defu: 6.1.7
14935
+ luxon: 3.7.2
14936
+ zova-jsx: 1.1.83(typescript@5.9.3)
14937
+ transitivePeerDependencies:
14938
+ - typescript
14939
+ - vue
14940
+
14824
14941
  zova-module-pay-mock@5.0.2: {}
14825
14942
 
14826
14943
  zova-module-rest-resource@5.1.42: {}
14827
14944
 
14945
+ zova-module-rest-resource@5.1.43: {}
14946
+
14828
14947
  zova-suite-a-zova@5.1.144(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
14829
14948
  dependencies:
14830
14949
  zova-module-a-api: 5.1.21
@@ -14859,6 +14978,40 @@ snapshots:
14859
14978
  - typescript
14860
14979
  - vue
14861
14980
 
14981
+ zova-suite-a-zova@5.1.145(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
14982
+ dependencies:
14983
+ zova-module-a-api: 5.1.21
14984
+ zova-module-a-app: 5.1.25
14985
+ zova-module-a-bean: 5.1.32
14986
+ zova-module-a-behavior: 5.1.25
14987
+ zova-module-a-behaviors: 5.1.21
14988
+ zova-module-a-boundary: 5.1.21
14989
+ zova-module-a-command: 5.1.33
14990
+ zova-module-a-fetch: 5.1.24
14991
+ zova-module-a-form: 5.1.46(vue@3.5.39(typescript@5.9.3))
14992
+ zova-module-a-icon: 5.1.26
14993
+ zova-module-a-interceptor: 5.1.30
14994
+ zova-module-a-logger: 5.1.26
14995
+ zova-module-a-meta: 5.1.21
14996
+ zova-module-a-model: 5.1.33(vue@3.5.39(typescript@5.9.3))
14997
+ zova-module-a-openapi: 5.1.48
14998
+ zova-module-a-router: 5.1.31
14999
+ zova-module-a-routerstack: 5.1.26
15000
+ zova-module-a-routertabs: 5.1.33
15001
+ zova-module-a-ssr: 5.1.33
15002
+ zova-module-a-ssrhmr: 5.1.22
15003
+ zova-module-a-ssrserver: 5.1.24
15004
+ zova-module-a-style: 5.1.33
15005
+ zova-module-a-table: 5.1.37(vue@3.5.39(typescript@5.9.3))
15006
+ zova-module-a-zod: 5.1.36
15007
+ zova-module-a-zova: 5.1.98(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
15008
+ transitivePeerDependencies:
15009
+ - '@vue/composition-api'
15010
+ - debug
15011
+ - supports-color
15012
+ - typescript
15013
+ - vue
15014
+
14862
15015
  zova@5.1.145(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
14863
15016
  dependencies:
14864
15017
  zova-core: 5.1.82(patch_hash=ff659aa5f659be32501f56841b72f148c24acf1546f79cce551586e27fcde2ce)(typescript@5.9.3)
@@ -14870,6 +15023,17 @@ snapshots:
14870
15023
  - typescript
14871
15024
  - vue
14872
15025
 
15026
+ zova@5.1.146(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
15027
+ dependencies:
15028
+ zova-core: 5.1.83(typescript@5.9.3)
15029
+ zova-suite-a-zova: 5.1.145(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
15030
+ transitivePeerDependencies:
15031
+ - '@vue/composition-api'
15032
+ - debug
15033
+ - supports-color
15034
+ - typescript
15035
+ - vue
15036
+
14873
15037
  zwitch@1.0.5: {}
14874
15038
 
14875
15039
  zwitch@2.0.4: {}
@@ -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 {
@@ -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.83
140
140
  version: link:packages-utils/zova-jsx
141
141
  zova-module-a-api:
142
142
  specifier: workspace:^
@@ -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.83
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.83
862
862
  version: link:../zova-core
863
863
  zova-suite-a-zova:
864
- specifier: ^5.1.144
864
+ specifier: ^5.1.145
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
@@ -1070,7 +1073,7 @@ importers:
1070
1073
  specifier: ^5.1.33
1071
1074
  version: link:modules/a-model
1072
1075
  zova-module-a-openapi:
1073
- specifier: ^5.1.47
1076
+ specifier: ^5.1.48
1074
1077
  version: link:modules/a-openapi
1075
1078
  zova-module-a-router:
1076
1079
  specifier: ^5.1.31
@@ -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.33
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.33
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.98
1104
1107
  version: link:modules/a-zova
1105
1108
 
1106
1109
  src/suite-vendor/a-zova/modules/a-api:
@@ -1442,7 +1445,7 @@ 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.83
1446
1449
  version: link:../../../../../packages-utils/zova-jsx
1447
1450
  devDependencies:
1448
1451
  '@cabloy/cli':
@@ -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
  }