cabloy 5.1.230 → 5.1.232
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.
- package/.cabloy-version +1 -1
- package/.github/workflows/playwright-e2e.yml +4 -2
- package/.github/workflows/vona-test-sqlite3.yml +2 -1
- package/CHANGELOG.md +24 -0
- package/package.json +1 -1
- package/repo-docs/backend/model-guide.md +1 -0
- package/repo-docs/backend/websocket-usage-guide.md +3 -0
- package/repo-docs/frontend/controller-boundary-guide.md +1 -1
- package/repo-docs/frontend/ioc-and-beans.md +2 -1
- package/repo-docs/frontend/modules-and-suites.md +1 -0
- package/repo-docs/reference/repo-scripts.md +2 -0
- package/vona/env/.env +1 -0
- package/vona/packages-cli/cli/package.json +1 -1
- package/vona/packages-cli/cli-set-api/package.json +1 -1
- package/vona/packages-utils/zod-query/package.json +1 -1
- package/vona/packages-utils/zod-query/src/lib/query.ts +4 -1
- package/vona/packages-vona/vona/package.json +1 -1
- package/vona/packages-vona/vona-core/package.json +1 -1
- package/vona/packages-vona/vona-core/src/lib/bean/type.ts +3 -3
- package/vona/packages-vona/vona-core/src/lib/core/testClaim.test.ts +294 -1
- package/vona/packages-vona/vona-core/src/lib/core/testClaim.ts +47 -9
- package/vona/packages-vona/vona-core/src/lib/core/testClaimFilesystem.test.ts +163 -39
- package/vona/packages-vona/vona-core/src/lib/core/testClaimFilesystemWindows.cs +16 -6
- package/vona/packages-vona/vona-core/src/lib/core/testClaimFilesystemWindows.ts +9 -4
- package/vona/packages-vona/vona-core/src/lib/utils/index.ts +1 -0
- package/vona/packages-vona/vona-core/src/lib/utils/zod-enhance.ts +8 -1
- package/vona/packages-vona/vona-mock/package.json +1 -1
- package/vona/pnpm-lock.yaml +171 -30
- package/vona/pnpm-workspace.yaml +1 -1
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/cartItem.tsx +1 -1
- package/vona/src/suite/a-commerce/modules/commerce-trade/test/cartOwnership.test.ts +144 -18
- package/vona/src/suite-vendor/a-auth/modules/auth-oauth/package.json +1 -1
- package/vona/src/suite-vendor/a-auth/modules/auth-oauth/src/bean/authProvider.oauth.ts +1 -0
- package/vona/src/suite-vendor/a-auth/modules/auth-oauth/src/types/index.ts +1 -0
- package/vona/src/suite-vendor/a-auth/package.json +2 -2
- package/vona/src/suite-vendor/a-cabloy/modules/a-rbac/package.json +1 -1
- package/vona/src/suite-vendor/a-cabloy/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-openapi/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsColumns.ts +7 -5
- package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/package.json +1 -1
- package/zova/packages-utils/zova-jsx/package.json +2 -2
- package/zova/packages-zova/zova/package.json +3 -3
- package/zova/packages-zova/zova-core/package.json +2 -2
- package/zova/packages-zova/zova-core/src/bean/resource/component/type.ts +3 -3
- package/zova/packages-zova/zova-core/src/bean/type.ts +6 -6
- package/zova/pnpm-lock.yaml +16 -16
- package/zova/src/suite/cabloy-basic/modules/basic-button/src/bean/behavior.perform.tsx +5 -5
- package/zova/src/suite/cabloy-basic/modules/basic-date/src/.metadata/component/date.ts +3 -1
- package/zova/src/suite/cabloy-basic/modules/basic-date/src/.metadata/component/dateRange.ts +12 -4
- package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockPageEntry/controller.tsx +8 -2
- package/zova/src/suite/cabloy-basic/modules/basic-select/src/.metadata/component/select.ts +9 -3
- package/zova/src/suite-vendor/a-zova/modules/a-behavior/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-behavior/src/types/behavior.ts +3 -3
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/detail/detailsActionBulk.ts +5 -3
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/detail/detailsActionRow.ts +5 -3
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/resource/formActionRow.ts +5 -3
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/resource/tableActionBulk.ts +5 -3
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/resource/tableActionRow.ts +5 -3
- package/zova/src/suite-vendor/a-zova/modules/a-zod/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/package.json +5 -5
- /package/vona/patches/{zova-core@5.1.93.patch → zova-core@5.1.94.patch} +0 -0
package/vona/pnpm-lock.yaml
CHANGED
|
@@ -174,7 +174,7 @@ overrides:
|
|
|
174
174
|
zod: npm:@cabloy/zod@4.3.8
|
|
175
175
|
|
|
176
176
|
patchedDependencies:
|
|
177
|
-
zova-core@5.1.
|
|
177
|
+
zova-core@5.1.94: 144450bd7a567a6067e5857c0cf4c780981b7e90bc48745c09e1696a9b6f1b97
|
|
178
178
|
|
|
179
179
|
importers:
|
|
180
180
|
|
|
@@ -737,11 +737,11 @@ importers:
|
|
|
737
737
|
specifier: npm:@cabloy/zod@4.3.8
|
|
738
738
|
version: '@cabloy/zod@4.3.8'
|
|
739
739
|
zova:
|
|
740
|
-
specifier: ^5.1.
|
|
741
|
-
version: 5.1.
|
|
740
|
+
specifier: ^5.1.175
|
|
741
|
+
version: 5.1.175(debug@4.4.3(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3)(vue@3.5.43(typescript@5.9.3))
|
|
742
742
|
zova-jsx:
|
|
743
|
-
specifier: ^1.1.
|
|
744
|
-
version: 1.1.
|
|
743
|
+
specifier: ^1.1.94
|
|
744
|
+
version: 1.1.94(typescript@5.9.3)
|
|
745
745
|
zova-module-a-api:
|
|
746
746
|
specifier: ^5.1.22
|
|
747
747
|
version: 5.1.22
|
|
@@ -752,8 +752,8 @@ importers:
|
|
|
752
752
|
specifier: ^5.1.36
|
|
753
753
|
version: 5.1.36
|
|
754
754
|
zova-module-a-behavior:
|
|
755
|
-
specifier: ^5.1.
|
|
756
|
-
version: 5.1.
|
|
755
|
+
specifier: ^5.1.27
|
|
756
|
+
version: 5.1.27
|
|
757
757
|
zova-module-a-behaviors:
|
|
758
758
|
specifier: ^5.1.22
|
|
759
759
|
version: 5.1.22
|
|
@@ -785,8 +785,8 @@ importers:
|
|
|
785
785
|
specifier: ^5.1.38
|
|
786
786
|
version: 5.1.38(vue@3.5.43(typescript@5.9.3))
|
|
787
787
|
zova-module-a-openapi:
|
|
788
|
-
specifier: ^5.1.
|
|
789
|
-
version: 5.1.
|
|
788
|
+
specifier: ^5.1.58
|
|
789
|
+
version: 5.1.58
|
|
790
790
|
zova-module-a-pay:
|
|
791
791
|
specifier: ^5.0.9
|
|
792
792
|
version: 5.0.9
|
|
@@ -818,11 +818,11 @@ importers:
|
|
|
818
818
|
specifier: ^5.1.44
|
|
819
819
|
version: 5.1.44(vue@3.5.43(typescript@5.9.3))
|
|
820
820
|
zova-module-a-zod:
|
|
821
|
-
specifier: ^5.1.
|
|
822
|
-
version: 5.1.
|
|
821
|
+
specifier: ^5.1.38
|
|
822
|
+
version: 5.1.38
|
|
823
823
|
zova-module-a-zova:
|
|
824
|
-
specifier: ^5.1.
|
|
825
|
-
version: 5.1.
|
|
824
|
+
specifier: ^5.1.112
|
|
825
|
+
version: 5.1.112(typescript@5.9.3)(vue@3.5.43(typescript@5.9.3))
|
|
826
826
|
zova-module-pay-mock:
|
|
827
827
|
specifier: ^5.0.5
|
|
828
828
|
version: 5.0.5
|
|
@@ -866,11 +866,11 @@ importers:
|
|
|
866
866
|
specifier: npm:@cabloy/zod@4.3.8
|
|
867
867
|
version: '@cabloy/zod@4.3.8'
|
|
868
868
|
zova:
|
|
869
|
-
specifier: ^5.1.
|
|
870
|
-
version: 5.1.
|
|
869
|
+
specifier: ^5.1.175
|
|
870
|
+
version: 5.1.175(debug@4.4.3(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3)(vue@3.5.43(typescript@5.9.3))
|
|
871
871
|
zova-jsx:
|
|
872
|
-
specifier: ^1.1.
|
|
873
|
-
version: 1.1.
|
|
872
|
+
specifier: ^1.1.94
|
|
873
|
+
version: 1.1.94(typescript@5.9.3)
|
|
874
874
|
zova-module-a-api:
|
|
875
875
|
specifier: ^5.1.22
|
|
876
876
|
version: 5.1.22
|
|
@@ -881,8 +881,8 @@ importers:
|
|
|
881
881
|
specifier: ^5.1.36
|
|
882
882
|
version: 5.1.36
|
|
883
883
|
zova-module-a-behavior:
|
|
884
|
-
specifier: ^5.1.
|
|
885
|
-
version: 5.1.
|
|
884
|
+
specifier: ^5.1.27
|
|
885
|
+
version: 5.1.27
|
|
886
886
|
zova-module-a-behaviors:
|
|
887
887
|
specifier: ^5.1.22
|
|
888
888
|
version: 5.1.22
|
|
@@ -914,8 +914,8 @@ importers:
|
|
|
914
914
|
specifier: ^5.1.38
|
|
915
915
|
version: 5.1.38(vue@3.5.43(typescript@5.9.3))
|
|
916
916
|
zova-module-a-openapi:
|
|
917
|
-
specifier: ^5.1.
|
|
918
|
-
version: 5.1.
|
|
917
|
+
specifier: ^5.1.58
|
|
918
|
+
version: 5.1.58
|
|
919
919
|
zova-module-a-pay:
|
|
920
920
|
specifier: ^5.0.9
|
|
921
921
|
version: 5.0.9
|
|
@@ -947,11 +947,11 @@ importers:
|
|
|
947
947
|
specifier: ^5.1.44
|
|
948
948
|
version: 5.1.44(vue@3.5.43(typescript@5.9.3))
|
|
949
949
|
zova-module-a-zod:
|
|
950
|
-
specifier: ^5.1.
|
|
951
|
-
version: 5.1.
|
|
950
|
+
specifier: ^5.1.38
|
|
951
|
+
version: 5.1.38
|
|
952
952
|
zova-module-a-zova:
|
|
953
|
-
specifier: ^5.1.
|
|
954
|
-
version: 5.1.
|
|
953
|
+
specifier: ^5.1.112
|
|
954
|
+
version: 5.1.112(typescript@5.9.3)(vue@3.5.43(typescript@5.9.3))
|
|
955
955
|
zova-module-pay-mock:
|
|
956
956
|
specifier: ^5.0.5
|
|
957
957
|
version: 5.0.5
|
|
@@ -1933,7 +1933,7 @@ importers:
|
|
|
1933
1933
|
specifier: workspace:^
|
|
1934
1934
|
version: link:modules/a-auth
|
|
1935
1935
|
vona-module-auth-oauth:
|
|
1936
|
-
specifier: ^5.0.
|
|
1936
|
+
specifier: ^5.0.13
|
|
1937
1937
|
version: link:modules/auth-oauth
|
|
1938
1938
|
vona-module-auth-simple:
|
|
1939
1939
|
specifier: workspace:^
|
|
@@ -1990,7 +1990,7 @@ importers:
|
|
|
1990
1990
|
specifier: ^5.0.3
|
|
1991
1991
|
version: link:modules/a-markdown
|
|
1992
1992
|
vona-module-a-rbac:
|
|
1993
|
-
specifier: ^5.0.
|
|
1993
|
+
specifier: ^5.0.16
|
|
1994
1994
|
version: link:modules/a-rbac
|
|
1995
1995
|
vona-module-a-socket:
|
|
1996
1996
|
specifier: workspace:^
|
|
@@ -9415,9 +9415,15 @@ packages:
|
|
|
9415
9415
|
zova-core@5.1.93:
|
|
9416
9416
|
resolution: {integrity: sha512-4UukkCdDVSDzX7eLGnu3gfvUVKcE80xZ98/8LmbaIJ0NDz9Chsr2W4Zfz2B+DzvhHSiyOSXMtrlTLbIkieyCMg==}
|
|
9417
9417
|
|
|
9418
|
+
zova-core@5.1.94:
|
|
9419
|
+
resolution: {integrity: sha512-puo3pqa4/ngwZj//Md457XMloZ4FRaoJlmwf+zyPyxKL7GoV81BaJeUPi9szzY8aM9EkoWXBhSVA0cp6mTXBhw==}
|
|
9420
|
+
|
|
9418
9421
|
zova-jsx@1.1.93:
|
|
9419
9422
|
resolution: {integrity: sha512-DU50tS3v5a2x7PIJak4Qnw8ZL3dFqR25lknqYUE4UDI8vdP8dajlTWOzcSb6+q0xlNaji6detWhZpj1Q+tb37A==}
|
|
9420
9423
|
|
|
9424
|
+
zova-jsx@1.1.94:
|
|
9425
|
+
resolution: {integrity: sha512-4QGgNE5J32PXYCgHBt8JBrTRp8CXADgZzIBUsovQmKfIwtMY6DK5+zPQeWBVqHoV5vK95RKhRPwdAKFGOLupeg==}
|
|
9426
|
+
|
|
9421
9427
|
zova-module-a-api@5.1.22:
|
|
9422
9428
|
resolution: {integrity: sha512-6KHDm/Kw7dwu3/3R+eM8WR0UBv4b73ksAd9yL44cS7d5KS9o97PD0RDkwep+ziMdod1DvRMHu5QJbvp7DmKIVA==}
|
|
9423
9429
|
|
|
@@ -9430,6 +9436,9 @@ packages:
|
|
|
9430
9436
|
zova-module-a-behavior@5.1.26:
|
|
9431
9437
|
resolution: {integrity: sha512-gvsonG3yIwH6mcEW/NNyaw9LCJK7WjKAW3pDYkhH+kipOe3TLPgmCQFz2FM0UZIwtopbRsR12exs7Sx26QqnAg==}
|
|
9432
9438
|
|
|
9439
|
+
zova-module-a-behavior@5.1.27:
|
|
9440
|
+
resolution: {integrity: sha512-vXvPHGBs7o95Ed7DFVE3wAqdlYwDcrqCtjxXvgcdCrjTjNji3F31IF4UViG48NmExMeAyzC8CqpvG55BE4GI1Q==}
|
|
9441
|
+
|
|
9433
9442
|
zova-module-a-behaviors@5.1.22:
|
|
9434
9443
|
resolution: {integrity: sha512-kpi6KB5XvTYTUWOlQHb27e2+l9JdXDlBOXsaP7qFiWog+owOXdc2wrKbLt2vofXPCRkty+rGXBvNqZh6NUixYg==}
|
|
9435
9444
|
|
|
@@ -9463,6 +9472,9 @@ packages:
|
|
|
9463
9472
|
zova-module-a-openapi@5.1.57:
|
|
9464
9473
|
resolution: {integrity: sha512-U6gKdYXNlD4wn1zgNUC+P3pg6lq23GZNESLipzVe7Zb7buqCXuEBjGdPa2NPrOuLxwWlZNg7Z4Q+GerBEF2geQ==}
|
|
9465
9474
|
|
|
9475
|
+
zova-module-a-openapi@5.1.58:
|
|
9476
|
+
resolution: {integrity: sha512-n+L5N9QB/F0P4FuhkDaHm7rHpMpAAc/5W0HEkC2WzCZsTiWBy75dMT8HwvwyXgpoJ4wrz/neoFWo0qKDnelveA==}
|
|
9477
|
+
|
|
9466
9478
|
zova-module-a-pay@5.0.9:
|
|
9467
9479
|
resolution: {integrity: sha512-Chl6EKp30HBOGFCJXbla2/lS19WhzQyTZwgYmsL3nnG9Vt2TeUlb82vsYCVuDcy0cgmxVaWjPF7dzKL/r3Pfng==}
|
|
9468
9480
|
|
|
@@ -9496,9 +9508,15 @@ packages:
|
|
|
9496
9508
|
zova-module-a-zod@5.1.37:
|
|
9497
9509
|
resolution: {integrity: sha512-rXHN9rKbum9w3gDSnC/pIusG2d2FGJOcIauf8jrbT96f+Olk4Q3iV3t2V92mxiLCh9kMvBJPfcOgJFW7pRB5Fw==}
|
|
9498
9510
|
|
|
9511
|
+
zova-module-a-zod@5.1.38:
|
|
9512
|
+
resolution: {integrity: sha512-DSAghiWoukNKYPEMLldup4as+xw6XdbpsHtxGKui1IuaaMub42NrPGD9HsHL9EjfzJPAOg1y+St80nhHCigHSA==}
|
|
9513
|
+
|
|
9499
9514
|
zova-module-a-zova@5.1.111:
|
|
9500
9515
|
resolution: {integrity: sha512-hJulIPEzWyiKfSClYFVxr3oek49kGOO1Boe2j4Meh9bP7SBHOnvDhbc8FrC9yIM6XhmAiGF39OAbW79ynQowDQ==}
|
|
9501
9516
|
|
|
9517
|
+
zova-module-a-zova@5.1.112:
|
|
9518
|
+
resolution: {integrity: sha512-9fIjrumlmSwBetltTTrUpE5Y1veQHE/Yi8BNOGKKGWUkPg/bieUiMv+PcqiDB0LrixeerimOkDDCNSMGyX0nDw==}
|
|
9519
|
+
|
|
9502
9520
|
zova-module-pay-mock@5.0.5:
|
|
9503
9521
|
resolution: {integrity: sha512-PFbNz1g2MDVp3NdvKV37WFzHTQ2awSPTD5iexkkOOloAaItmt/KYoV7xadM46wHUCSQZcZQ1SZdgDaUFev+R4Q==}
|
|
9504
9522
|
|
|
@@ -9514,9 +9532,15 @@ packages:
|
|
|
9514
9532
|
zova-suite-a-zova@5.1.173:
|
|
9515
9533
|
resolution: {integrity: sha512-B+VM8hlw/+rWs5ml2NhrMnzetnNvyp9GXpixlwl+OSY/xvymWLsO2AtANQLchtWgJCNp76NWaArfu4tkgZzrvA==}
|
|
9516
9534
|
|
|
9535
|
+
zova-suite-a-zova@5.1.174:
|
|
9536
|
+
resolution: {integrity: sha512-cNbRy63DDb7m7jR8O5mbtfJYD7sFYti6pfJlI7Qe0cvxQcNRu+6LaoxYZqqkFcRN2NpGp+qNxf4IPBOJB7CDvg==}
|
|
9537
|
+
|
|
9517
9538
|
zova@5.1.174:
|
|
9518
9539
|
resolution: {integrity: sha512-3HrQpilMfkVuEDw7O/6RV9bB7aPkPLyrVKUYVrJEN/PX/rqg2bW9NRiW1CCzaXAfH4kDymnvYSEjKYLoVKa7rA==}
|
|
9519
9540
|
|
|
9541
|
+
zova@5.1.175:
|
|
9542
|
+
resolution: {integrity: sha512-C9xYw09xwpleenULNYfHGTtHa4vYcNjvLJLWzxGevkaAFLQ2WVXJvWIOIzgdV0lIx/h7YGS3WRhpDNwei3zhHA==}
|
|
9543
|
+
|
|
9520
9544
|
zwitch@1.0.5:
|
|
9521
9545
|
resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==}
|
|
9522
9546
|
|
|
@@ -15862,7 +15886,38 @@ snapshots:
|
|
|
15862
15886
|
|
|
15863
15887
|
yocto-queue@0.1.0: {}
|
|
15864
15888
|
|
|
15865
|
-
zova-core@5.1.93(
|
|
15889
|
+
zova-core@5.1.93(typescript@5.9.3):
|
|
15890
|
+
dependencies:
|
|
15891
|
+
'@cabloy/compose': link:packages-utils/compose
|
|
15892
|
+
'@cabloy/extend': link:packages-utils/extend
|
|
15893
|
+
'@cabloy/json5': link:packages-utils/json5
|
|
15894
|
+
'@cabloy/localeutil': link:packages-utils/localeutil
|
|
15895
|
+
'@cabloy/logger': 1.1.25
|
|
15896
|
+
'@cabloy/module-info': 2.0.3
|
|
15897
|
+
'@cabloy/utils': link:packages-utils/utils
|
|
15898
|
+
'@cabloy/vue-compiler-sfc': 3.5.14
|
|
15899
|
+
'@cabloy/vue-reactivity': 3.5.16
|
|
15900
|
+
'@cabloy/vue-router': 4.4.18(vue@3.5.43(typescript@5.9.3))
|
|
15901
|
+
'@cabloy/vue-runtime-core': 3.5.57
|
|
15902
|
+
'@cabloy/vue-runtime-dom': 3.5.13
|
|
15903
|
+
'@cabloy/vue-server-renderer': 3.5.18(vue@3.5.43(typescript@5.9.3))
|
|
15904
|
+
'@cabloy/word-utils': 2.1.14
|
|
15905
|
+
'@cabloy/zod-errors-custom': link:packages-utils/zod-errors-custom
|
|
15906
|
+
'@cabloy/zod-openapi': link:packages-utils/zod-openapi
|
|
15907
|
+
'@cabloy/zod-query': link:packages-utils/zod-query
|
|
15908
|
+
'@types/js-cookie': 3.0.6
|
|
15909
|
+
'@types/ms': 2.1.0
|
|
15910
|
+
'@vue/shared': 3.5.36
|
|
15911
|
+
deep-equal: 2.2.3
|
|
15912
|
+
ms: 2.1.3
|
|
15913
|
+
reflect-metadata: 0.2.2
|
|
15914
|
+
vue: 3.5.43(typescript@5.9.3)
|
|
15915
|
+
vue-plugin-render-freeze: 2.0.4(vue@3.5.43(typescript@5.9.3))
|
|
15916
|
+
zod: '@cabloy/zod@4.3.8'
|
|
15917
|
+
transitivePeerDependencies:
|
|
15918
|
+
- typescript
|
|
15919
|
+
|
|
15920
|
+
zova-core@5.1.94(patch_hash=144450bd7a567a6067e5857c0cf4c780981b7e90bc48745c09e1696a9b6f1b97)(typescript@5.9.3):
|
|
15866
15921
|
dependencies:
|
|
15867
15922
|
'@cabloy/compose': link:packages-utils/compose
|
|
15868
15923
|
'@cabloy/extend': link:packages-utils/extend
|
|
@@ -15900,7 +15955,18 @@ snapshots:
|
|
|
15900
15955
|
'@cabloy/word-utils': 2.1.14
|
|
15901
15956
|
typestyle: 2.4.0
|
|
15902
15957
|
vue: 3.5.43(typescript@5.9.3)
|
|
15903
|
-
zova-core: 5.1.93(
|
|
15958
|
+
zova-core: 5.1.93(typescript@5.9.3)
|
|
15959
|
+
transitivePeerDependencies:
|
|
15960
|
+
- typescript
|
|
15961
|
+
|
|
15962
|
+
zova-jsx@1.1.94(typescript@5.9.3):
|
|
15963
|
+
dependencies:
|
|
15964
|
+
'@cabloy/compose': link:packages-utils/compose
|
|
15965
|
+
'@cabloy/utils': link:packages-utils/utils
|
|
15966
|
+
'@cabloy/word-utils': 2.1.14
|
|
15967
|
+
typestyle: 2.4.0
|
|
15968
|
+
vue: 3.5.43(typescript@5.9.3)
|
|
15969
|
+
zova-core: 5.1.94(patch_hash=144450bd7a567a6067e5857c0cf4c780981b7e90bc48745c09e1696a9b6f1b97)(typescript@5.9.3)
|
|
15904
15970
|
transitivePeerDependencies:
|
|
15905
15971
|
- typescript
|
|
15906
15972
|
|
|
@@ -15914,6 +15980,8 @@ snapshots:
|
|
|
15914
15980
|
|
|
15915
15981
|
zova-module-a-behavior@5.1.26: {}
|
|
15916
15982
|
|
|
15983
|
+
zova-module-a-behavior@5.1.27: {}
|
|
15984
|
+
|
|
15917
15985
|
zova-module-a-behaviors@5.1.22: {}
|
|
15918
15986
|
|
|
15919
15987
|
zova-module-a-command@5.1.35: {}
|
|
@@ -15963,6 +16031,12 @@ snapshots:
|
|
|
15963
16031
|
openapi3-ts: 4.6.1
|
|
15964
16032
|
typestyle: 2.4.0
|
|
15965
16033
|
|
|
16034
|
+
zova-module-a-openapi@5.1.58:
|
|
16035
|
+
dependencies:
|
|
16036
|
+
'@cabloy/json-schema-to-zod': 2.6.5
|
|
16037
|
+
openapi3-ts: 4.6.1
|
|
16038
|
+
typestyle: 2.4.0
|
|
16039
|
+
|
|
15966
16040
|
zova-module-a-pay@5.0.9: {}
|
|
15967
16041
|
|
|
15968
16042
|
zova-module-a-rbac@5.0.1: {}
|
|
@@ -16006,6 +16080,13 @@ snapshots:
|
|
|
16006
16080
|
'@cabloy/zod-query': link:packages-utils/zod-query
|
|
16007
16081
|
zod: '@cabloy/zod@4.3.8'
|
|
16008
16082
|
|
|
16083
|
+
zova-module-a-zod@5.1.38:
|
|
16084
|
+
dependencies:
|
|
16085
|
+
'@cabloy/zod-errors-custom': link:packages-utils/zod-errors-custom
|
|
16086
|
+
'@cabloy/zod-openapi': link:packages-utils/zod-openapi
|
|
16087
|
+
'@cabloy/zod-query': link:packages-utils/zod-query
|
|
16088
|
+
zod: '@cabloy/zod@4.3.8'
|
|
16089
|
+
|
|
16009
16090
|
zova-module-a-zova@5.1.111(typescript@5.9.3)(vue@3.5.43(typescript@5.9.3)):
|
|
16010
16091
|
dependencies:
|
|
16011
16092
|
'@cabloy/compose': link:packages-utils/compose
|
|
@@ -16022,6 +16103,22 @@ snapshots:
|
|
|
16022
16103
|
- typescript
|
|
16023
16104
|
- vue
|
|
16024
16105
|
|
|
16106
|
+
zova-module-a-zova@5.1.112(typescript@5.9.3)(vue@3.5.43(typescript@5.9.3)):
|
|
16107
|
+
dependencies:
|
|
16108
|
+
'@cabloy/compose': link:packages-utils/compose
|
|
16109
|
+
'@cabloy/deps': link:packages-utils/deps
|
|
16110
|
+
'@cabloy/json5': link:packages-utils/json5
|
|
16111
|
+
'@cabloy/module-info': 2.0.3
|
|
16112
|
+
'@cabloy/utils': link:packages-utils/utils
|
|
16113
|
+
'@cabloy/vue-router': 4.4.18(vue@3.5.43(typescript@5.9.3))
|
|
16114
|
+
'@cabloy/word-utils': 2.1.14
|
|
16115
|
+
defu: 6.1.7
|
|
16116
|
+
luxon: 3.7.2
|
|
16117
|
+
zova-jsx: 1.1.94(typescript@5.9.3)
|
|
16118
|
+
transitivePeerDependencies:
|
|
16119
|
+
- typescript
|
|
16120
|
+
- vue
|
|
16121
|
+
|
|
16025
16122
|
zova-module-pay-mock@5.0.5: {}
|
|
16026
16123
|
|
|
16027
16124
|
zova-module-pay-paypal@5.0.2: {}
|
|
@@ -16063,9 +16160,42 @@ snapshots:
|
|
|
16063
16160
|
- typescript
|
|
16064
16161
|
- vue
|
|
16065
16162
|
|
|
16163
|
+
zova-suite-a-zova@5.1.174(debug@4.4.3(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3)(vue@3.5.43(typescript@5.9.3)):
|
|
16164
|
+
dependencies:
|
|
16165
|
+
zova-module-a-api: 5.1.22
|
|
16166
|
+
zova-module-a-app: 5.1.26
|
|
16167
|
+
zova-module-a-bean: 5.1.36
|
|
16168
|
+
zova-module-a-behavior: 5.1.27
|
|
16169
|
+
zova-module-a-behaviors: 5.1.22
|
|
16170
|
+
zova-module-a-command: 5.1.35
|
|
16171
|
+
zova-module-a-fetch: 5.1.25(debug@4.4.3(supports-color@7.2.0))(supports-color@7.2.0)
|
|
16172
|
+
zova-module-a-form: 5.1.54(vue@3.5.43(typescript@5.9.3))
|
|
16173
|
+
zova-module-a-icon: 5.1.27
|
|
16174
|
+
zova-module-a-interceptor: 5.1.31
|
|
16175
|
+
zova-module-a-logger: 5.1.28
|
|
16176
|
+
zova-module-a-meta: 5.1.22
|
|
16177
|
+
zova-module-a-model: 5.1.38(vue@3.5.43(typescript@5.9.3))
|
|
16178
|
+
zova-module-a-openapi: 5.1.58
|
|
16179
|
+
zova-module-a-router: 5.1.42
|
|
16180
|
+
zova-module-a-routerstack: 5.1.29
|
|
16181
|
+
zova-module-a-routertabs: 5.1.35
|
|
16182
|
+
zova-module-a-ssr: 5.1.40
|
|
16183
|
+
zova-module-a-ssrhmr: 5.1.23
|
|
16184
|
+
zova-module-a-ssrserver: 5.1.26
|
|
16185
|
+
zova-module-a-style: 5.1.35
|
|
16186
|
+
zova-module-a-table: 5.1.44(vue@3.5.43(typescript@5.9.3))
|
|
16187
|
+
zova-module-a-zod: 5.1.38
|
|
16188
|
+
zova-module-a-zova: 5.1.112(typescript@5.9.3)(vue@3.5.43(typescript@5.9.3))
|
|
16189
|
+
transitivePeerDependencies:
|
|
16190
|
+
- '@vue/composition-api'
|
|
16191
|
+
- debug
|
|
16192
|
+
- supports-color
|
|
16193
|
+
- typescript
|
|
16194
|
+
- vue
|
|
16195
|
+
|
|
16066
16196
|
zova@5.1.174(debug@4.4.3(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3)(vue@3.5.43(typescript@5.9.3)):
|
|
16067
16197
|
dependencies:
|
|
16068
|
-
zova-core: 5.1.93(
|
|
16198
|
+
zova-core: 5.1.93(typescript@5.9.3)
|
|
16069
16199
|
zova-suite-a-zova: 5.1.173(debug@4.4.3(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3)(vue@3.5.43(typescript@5.9.3))
|
|
16070
16200
|
transitivePeerDependencies:
|
|
16071
16201
|
- '@vue/composition-api'
|
|
@@ -16074,6 +16204,17 @@ snapshots:
|
|
|
16074
16204
|
- typescript
|
|
16075
16205
|
- vue
|
|
16076
16206
|
|
|
16207
|
+
zova@5.1.175(debug@4.4.3(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3)(vue@3.5.43(typescript@5.9.3)):
|
|
16208
|
+
dependencies:
|
|
16209
|
+
zova-core: 5.1.94(patch_hash=144450bd7a567a6067e5857c0cf4c780981b7e90bc48745c09e1696a9b6f1b97)(typescript@5.9.3)
|
|
16210
|
+
zova-suite-a-zova: 5.1.174(debug@4.4.3(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3)(vue@3.5.43(typescript@5.9.3))
|
|
16211
|
+
transitivePeerDependencies:
|
|
16212
|
+
- '@vue/composition-api'
|
|
16213
|
+
- debug
|
|
16214
|
+
- supports-color
|
|
16215
|
+
- typescript
|
|
16216
|
+
- vue
|
|
16217
|
+
|
|
16077
16218
|
zwitch@1.0.5: {}
|
|
16078
16219
|
|
|
16079
16220
|
zwitch@2.0.4: {}
|
package/vona/pnpm-workspace.yaml
CHANGED
|
@@ -6,7 +6,10 @@ import { catchError } from '@cabloy/utils';
|
|
|
6
6
|
import assert from 'node:assert';
|
|
7
7
|
import { randomUUID } from 'node:crypto';
|
|
8
8
|
import { after, before, describe, it } from 'node:test';
|
|
9
|
+
import { appResource } from 'vona';
|
|
9
10
|
import { acquireTestLock, app } from 'vona-mock';
|
|
11
|
+
import { $schema } from 'vona-module-a-openapiutils';
|
|
12
|
+
import { DtoCartItem, DtoCartView } from 'vona-module-commerce-trade';
|
|
10
13
|
|
|
11
14
|
const actionPath = '/commerce/trade/cart';
|
|
12
15
|
|
|
@@ -39,22 +42,32 @@ async function performAs<
|
|
|
39
42
|
|
|
40
43
|
async function registerAndSignin(name: string) {
|
|
41
44
|
const user = await app.bean.user.register({ name }, true);
|
|
42
|
-
|
|
43
|
-
|
|
45
|
+
try {
|
|
46
|
+
const token = await app.bean.passport.signinMock(name as any);
|
|
47
|
+
return { token: token.accessToken, user };
|
|
48
|
+
} catch (error) {
|
|
49
|
+
await dropUser(user.id as number);
|
|
50
|
+
throw error;
|
|
51
|
+
}
|
|
44
52
|
}
|
|
45
53
|
|
|
46
54
|
async function createSellableSku(suffix: string): Promise<ISellableSkuFixture> {
|
|
55
|
+
const fixture: Partial<ISellableSkuFixture> = {};
|
|
47
56
|
await app.bean.passport.signinMock();
|
|
48
57
|
try {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
58
|
+
fixture.categoryId = await app.bean.executor.performAction(
|
|
59
|
+
'post',
|
|
60
|
+
'/commerce/catalog/category',
|
|
61
|
+
{
|
|
62
|
+
body: { name: `cart-category-${suffix}`, published: true },
|
|
63
|
+
},
|
|
64
|
+
);
|
|
65
|
+
fixture.productId = await app.bean.executor.performAction('post', '/commerce/catalog/product', {
|
|
66
|
+
body: { categoryId: fixture.categoryId, title: `cart-product-${suffix}`, published: true },
|
|
54
67
|
});
|
|
55
|
-
|
|
68
|
+
fixture.skuId = await app.bean.executor.performAction('post', '/commerce/catalog/sku', {
|
|
56
69
|
body: {
|
|
57
|
-
productId,
|
|
70
|
+
productId: fixture.productId,
|
|
58
71
|
code: `cart-sku-${suffix}`,
|
|
59
72
|
priceCents: 100,
|
|
60
73
|
lifecycle: 'active',
|
|
@@ -62,28 +75,35 @@ async function createSellableSku(suffix: string): Promise<ISellableSkuFixture> {
|
|
|
62
75
|
});
|
|
63
76
|
await app.bean.executor.performAction('post', '/commerce/trade/stockBalance/adjustStock', {
|
|
64
77
|
body: {
|
|
65
|
-
skuId,
|
|
78
|
+
skuId: fixture.skuId,
|
|
66
79
|
delta: 10,
|
|
67
80
|
reason: `cart stock ${suffix}`,
|
|
68
81
|
correlationId: `cart-stock-${suffix}`,
|
|
69
82
|
},
|
|
70
83
|
});
|
|
71
|
-
return
|
|
84
|
+
return fixture as ISellableSkuFixture;
|
|
85
|
+
} catch (error) {
|
|
86
|
+
await dropSellableSku(fixture);
|
|
87
|
+
throw error;
|
|
72
88
|
} finally {
|
|
73
89
|
await app.bean.passport.signout();
|
|
74
90
|
}
|
|
75
91
|
}
|
|
76
92
|
|
|
77
|
-
async function dropSellableSku(fixture: ISellableSkuFixture | undefined) {
|
|
93
|
+
async function dropSellableSku(fixture: Partial<ISellableSkuFixture> | undefined) {
|
|
78
94
|
if (!fixture) return;
|
|
79
95
|
const trade = app.scope('commerce-trade');
|
|
80
96
|
const catalog = app.scope('commerce-catalog');
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
97
|
+
if (fixture.skuId !== undefined) {
|
|
98
|
+
await trade.model.stockAudit.delete({ skuId: fixture.skuId });
|
|
99
|
+
await trade.model.stockReservation.delete({ skuId: fixture.skuId });
|
|
100
|
+
await trade.model.stockBalance.delete({ skuId: fixture.skuId });
|
|
101
|
+
await catalog.model.sku.delete({ id: fixture.skuId });
|
|
102
|
+
}
|
|
103
|
+
if (fixture.productId !== undefined)
|
|
104
|
+
await catalog.model.product.delete({ id: fixture.productId });
|
|
105
|
+
if (fixture.categoryId !== undefined)
|
|
106
|
+
await catalog.model.category.delete({ id: fixture.categoryId });
|
|
87
107
|
}
|
|
88
108
|
|
|
89
109
|
async function dropUser(userId: number | undefined) {
|
|
@@ -206,6 +226,112 @@ describe('cartOwnership.test.ts', { concurrency: false }, () => {
|
|
|
206
226
|
});
|
|
207
227
|
});
|
|
208
228
|
|
|
229
|
+
it('reads an empty cart without creating business records', async () => {
|
|
230
|
+
await app.bean.executor.mockCtx(async () => {
|
|
231
|
+
let customer: Awaited<ReturnType<typeof registerAndSignin>> | undefined;
|
|
232
|
+
try {
|
|
233
|
+
customer = await registerAndSignin(`cart-empty-${createTestId()}`);
|
|
234
|
+
const trade = app.scope('commerce-trade');
|
|
235
|
+
assert.equal(await trade.model.cart.get({ userId: customer.user.id }), undefined);
|
|
236
|
+
assert.deepEqual(await performAs(customer.token, 'get', actionPath), { items: [] });
|
|
237
|
+
assert.deepEqual(await performAs(customer.token, 'get', actionPath), { items: [] });
|
|
238
|
+
assert.equal(await trade.model.cart.get({ userId: customer.user.id }), undefined);
|
|
239
|
+
} finally {
|
|
240
|
+
await app.bean.passport.signout();
|
|
241
|
+
await dropUser(customer?.user.id as number | undefined);
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
it('keeps a sold-out cart DTO-valid without mutating its business records on reads', async () => {
|
|
247
|
+
await app.bean.executor.mockCtx(async () => {
|
|
248
|
+
const suffix = createTestId();
|
|
249
|
+
let sku: ISellableSkuFixture | undefined;
|
|
250
|
+
let customer: Awaited<ReturnType<typeof registerAndSignin>> | undefined;
|
|
251
|
+
try {
|
|
252
|
+
sku = await createSellableSku(suffix);
|
|
253
|
+
customer = await registerAndSignin(`cart-zero-${suffix}`);
|
|
254
|
+
const added = await performAs(customer.token, 'post', `${actionPath}/items`, {
|
|
255
|
+
body: cartItem(sku.skuId),
|
|
256
|
+
});
|
|
257
|
+
await app.bean.executor.newCtxIsolate(async () => {
|
|
258
|
+
await app.bean.passport.signinMock();
|
|
259
|
+
try {
|
|
260
|
+
await app.bean.executor.performAction(
|
|
261
|
+
'post',
|
|
262
|
+
'/commerce/trade/stockBalance/adjustStock',
|
|
263
|
+
{
|
|
264
|
+
body: {
|
|
265
|
+
skuId: sku!.skuId,
|
|
266
|
+
delta: -10,
|
|
267
|
+
reason: `cart depletion ${suffix}`,
|
|
268
|
+
correlationId: `cart-deplete-${suffix}`,
|
|
269
|
+
},
|
|
270
|
+
innerAccess: false,
|
|
271
|
+
},
|
|
272
|
+
);
|
|
273
|
+
} finally {
|
|
274
|
+
await app.bean.passport.signout();
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
const trade = app.scope('commerce-trade');
|
|
278
|
+
const before = {
|
|
279
|
+
cart: await trade.model.cart.getById(added.id),
|
|
280
|
+
items: await trade.model.cartItem.select({ where: { cartId: added.id } }),
|
|
281
|
+
stock: await trade.model.stockBalance.get({ skuId: sku.skuId }),
|
|
282
|
+
};
|
|
283
|
+
assert.equal(before.stock?.available, 0);
|
|
284
|
+
const current = await performAs(customer.token, 'get', actionPath);
|
|
285
|
+
assert.deepEqual(current, {
|
|
286
|
+
id: added.id,
|
|
287
|
+
items: [{ ...added.items[0], available: 0 }],
|
|
288
|
+
});
|
|
289
|
+
assert.deepEqual(await performAs(customer.token, 'get', actionPath), current);
|
|
290
|
+
assert.deepEqual(
|
|
291
|
+
{
|
|
292
|
+
cart: await trade.model.cart.getById(added.id),
|
|
293
|
+
items: await trade.model.cartItem.select({ where: { cartId: added.id } }),
|
|
294
|
+
stock: await trade.model.stockBalance.get({ skuId: sku.skuId }),
|
|
295
|
+
},
|
|
296
|
+
before,
|
|
297
|
+
);
|
|
298
|
+
assert.deepEqual(await $schema(DtoCartView).parseAsync(current), current);
|
|
299
|
+
for (const available of [1, 10]) {
|
|
300
|
+
assert.equal(
|
|
301
|
+
$schema(DtoCartItem).safeParse({ ...current.items[0], available }).success,
|
|
302
|
+
true,
|
|
303
|
+
);
|
|
304
|
+
}
|
|
305
|
+
for (const available of [-1, 0.5]) {
|
|
306
|
+
assert.equal(
|
|
307
|
+
$schema(DtoCartItem).safeParse({ ...current.items[0], available }).success,
|
|
308
|
+
false,
|
|
309
|
+
);
|
|
310
|
+
}
|
|
311
|
+
assert.equal(
|
|
312
|
+
$schema(DtoCartItem).safeParse({ ...current.items[0], available: 1, quantity: 0 })
|
|
313
|
+
.success,
|
|
314
|
+
false,
|
|
315
|
+
);
|
|
316
|
+
const document = await app.bean.openapi.generateJsonOfClasses(
|
|
317
|
+
[DtoCartView, DtoCartItem],
|
|
318
|
+
'V31',
|
|
319
|
+
);
|
|
320
|
+
const itemSchema = document.components!.schemas![appResource.getBeanFullName(DtoCartItem)!];
|
|
321
|
+
assert.ok('properties' in itemSchema);
|
|
322
|
+
const availableSchema = itemSchema.properties!.available;
|
|
323
|
+
assert.ok('type' in availableSchema);
|
|
324
|
+
assert.equal(availableSchema.type, 'integer');
|
|
325
|
+
assert.equal(availableSchema.minimum, 0);
|
|
326
|
+
assert.equal(availableSchema.exclusiveMinimum, undefined);
|
|
327
|
+
} finally {
|
|
328
|
+
await app.bean.passport.signout();
|
|
329
|
+
await dropUser(customer?.user.id as number | undefined);
|
|
330
|
+
await dropSellableSku(sku);
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
|
|
209
335
|
it('treats another instance cart as absent', async () => {
|
|
210
336
|
const suffix = createTestId();
|
|
211
337
|
let itemId!: number;
|
|
@@ -43,6 +43,7 @@ const app = useApp();
|
|
|
43
43
|
clientSecret: app.meta.env.AUTH_GITHUB_CLIENTSECRET || 'Shoule specify clientSecret',
|
|
44
44
|
},
|
|
45
45
|
},
|
|
46
|
+
useMockForDev: app.meta.env.AUTH_USEMOCKFORDEV !== 'false',
|
|
46
47
|
})
|
|
47
48
|
export class AuthProviderOauth extends BeanAuthProviderOauth2Base {
|
|
48
49
|
async strategy(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vona-suite-a-auth",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.30",
|
|
4
4
|
"gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
|
|
5
5
|
"description": "",
|
|
6
6
|
"author": "",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "module",
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"vona-module-a-auth": "workspace:^",
|
|
11
|
-
"vona-module-auth-oauth": "^5.0.
|
|
11
|
+
"vona-module-auth-oauth": "^5.0.13",
|
|
12
12
|
"vona-module-auth-simple": "workspace:^"
|
|
13
13
|
},
|
|
14
14
|
"title": "a-auth"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vona-suite-a-cabloy",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.67",
|
|
4
4
|
"gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
|
|
5
5
|
"description": "",
|
|
6
6
|
"author": "",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"vona-module-a-cabloy": "workspace:^",
|
|
11
11
|
"vona-module-a-layoutprofile": "^5.0.2",
|
|
12
12
|
"vona-module-a-markdown": "^5.0.3",
|
|
13
|
-
"vona-module-a-rbac": "^5.0.
|
|
13
|
+
"vona-module-a-rbac": "^5.0.16",
|
|
14
14
|
"vona-module-a-socket": "workspace:^",
|
|
15
15
|
"vona-module-a-ssr": "workspace:^",
|
|
16
16
|
"vona-module-a-ssrhmr": "workspace:^"
|