cabloy 5.1.108 → 5.1.110
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/.gitignore +5 -2
- package/CHANGELOG.md +43 -0
- package/cabloy-docs/.vitepress/config.mjs +1 -0
- package/cabloy-docs/ai/playbook-module-removal.md +1 -1
- package/cabloy-docs/ai/virtual-decorator-guidance.md +9 -9
- package/cabloy-docs/backend/websocket-call-flow.md +1 -1
- package/cabloy-docs/backend/websocket-guide.md +1 -1
- package/cabloy-docs/frontend/fetch-interceptor-guide.md +8 -8
- package/cabloy-docs/frontend/form-guide.md +3 -1
- package/cabloy-docs/frontend/form-layout-guide.md +322 -0
- package/cabloy-docs/frontend/introduction.md +1 -0
- package/cabloy-docs/frontend/resource-entry-page-deep-dive.md +2 -0
- package/cabloy-docs/frontend/router-tabs-layout-integration.md +2 -1
- package/cabloy-docs/frontend/scripts.md +56 -1
- package/cabloy-docs/frontend/ssr-build-deploy-guide.md +1 -1
- package/cabloy-docs/frontend/ssr-overview.md +6 -0
- package/cabloy-docs/frontend/ssr-review-checklist.md +1 -1
- package/cabloy-docs/frontend/ssr-troubleshooting-guide.md +9 -9
- package/cabloy-docs/frontend/table-resource-crud-cookbook.md +33 -1
- package/cabloy-docs/frontend/zova-form-source-reading-map.md +36 -4
- package/cabloy-docs/frontend/zova-form-under-the-hood.md +13 -0
- package/cabloy-docs/fullstack/framework-performance.md +3 -3
- package/cabloy-docs/fullstack/quickstart.md +14 -0
- package/cabloy-docs/reference/repo-scripts.md +79 -0
- package/e2e/config/playwright.basic.config.ts +3 -0
- package/e2e/config/playwright.commerce.config.ts +3 -0
- package/e2e/config/playwright.shared.config.ts +38 -0
- package/e2e/scripts/e2e.ts +33 -0
- package/e2e/scripts/startE2eVona.ts +38 -0
- package/e2e/scripts/testE2eClean.ts +56 -0
- package/e2e/specs/a-basic/basic.spec.ts +271 -0
- package/e2e/specs/a-commerce/commerce.spec.ts +61 -0
- package/package.json +17 -1
- package/scripts/upgrade.ts +182 -7
- package/test-results/.last-run.json +4 -0
- package/vona/packages-vona/vona/package.json +1 -1
- package/vona/pnpm-lock.yaml +304 -45
- package/vona/src/suite/a-commerce/modules/commerce-catalog/package.json +52 -0
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/.metadata/index.ts +29 -0
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/.metadata/this.ts +2 -0
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/index.ts +1 -0
- package/vona/src/suite/a-commerce/modules/commerce-catalog/tsconfig.build.json +11 -0
- package/vona/src/suite/a-commerce/modules/commerce-catalog/tsconfig.json +7 -0
- package/vona/src/suite/a-commerce/modules/commerce-member/package.json +52 -0
- package/vona/src/suite/a-commerce/modules/commerce-member/src/.metadata/index.ts +29 -0
- package/vona/src/suite/a-commerce/modules/commerce-member/src/.metadata/this.ts +2 -0
- package/vona/src/suite/a-commerce/modules/commerce-member/src/index.ts +1 -0
- package/vona/src/suite/a-commerce/modules/commerce-member/tsconfig.build.json +11 -0
- package/vona/src/suite/a-commerce/modules/commerce-member/tsconfig.json +7 -0
- package/vona/src/suite/a-commerce/modules/commerce-payment/package.json +52 -0
- package/vona/src/suite/a-commerce/modules/commerce-payment/src/.metadata/index.ts +29 -0
- package/vona/src/suite/a-commerce/modules/commerce-payment/src/.metadata/this.ts +2 -0
- package/vona/src/suite/a-commerce/modules/commerce-payment/src/index.ts +1 -0
- package/vona/src/suite/a-commerce/modules/commerce-payment/tsconfig.build.json +11 -0
- package/vona/src/suite/a-commerce/modules/commerce-payment/tsconfig.json +7 -0
- package/vona/src/suite/a-commerce/modules/commerce-promotion/package.json +52 -0
- package/vona/src/suite/a-commerce/modules/commerce-promotion/src/.metadata/index.ts +29 -0
- package/vona/src/suite/a-commerce/modules/commerce-promotion/src/.metadata/this.ts +2 -0
- package/vona/src/suite/a-commerce/modules/commerce-promotion/src/index.ts +1 -0
- package/vona/src/suite/a-commerce/modules/commerce-promotion/tsconfig.build.json +11 -0
- package/vona/src/suite/a-commerce/modules/commerce-promotion/tsconfig.json +7 -0
- package/vona/src/suite/a-commerce/modules/commerce-siteadmin/package.json +53 -0
- package/vona/src/suite/a-commerce/modules/commerce-siteadmin/src/.metadata/index.ts +81 -0
- package/vona/src/suite/a-commerce/modules/commerce-siteadmin/src/.metadata/this.ts +2 -0
- package/vona/src/suite/a-commerce/modules/commerce-siteadmin/src/bean/ssrMenu.home.ts +21 -0
- package/vona/src/suite/a-commerce/modules/commerce-siteadmin/src/bean/ssrSite.commerceAdmin.ts +34 -0
- package/vona/src/suite/a-commerce/modules/commerce-siteadmin/src/index.ts +1 -0
- package/vona/src/suite/a-commerce/modules/commerce-siteadmin/tsconfig.build.json +11 -0
- package/vona/src/suite/a-commerce/modules/commerce-siteadmin/tsconfig.json +7 -0
- package/vona/src/suite/a-commerce/modules/commerce-siteweb/package.json +53 -0
- package/vona/src/suite/a-commerce/modules/commerce-siteweb/src/.metadata/index.ts +81 -0
- package/vona/src/suite/a-commerce/modules/commerce-siteweb/src/.metadata/this.ts +2 -0
- package/vona/src/suite/a-commerce/modules/commerce-siteweb/src/bean/ssrMenu.home.ts +20 -0
- package/vona/src/suite/a-commerce/modules/commerce-siteweb/src/bean/ssrSite.commerce.ts +34 -0
- package/vona/src/suite/a-commerce/modules/commerce-siteweb/src/index.ts +1 -0
- package/vona/src/suite/a-commerce/modules/commerce-siteweb/tsconfig.build.json +11 -0
- package/vona/src/suite/a-commerce/modules/commerce-siteweb/tsconfig.json +7 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/package.json +52 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/.metadata/index.ts +29 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/.metadata/this.ts +2 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/index.ts +1 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/tsconfig.build.json +11 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/tsconfig.json +7 -0
- package/vona/src/suite/a-commerce/package.json +18 -0
- package/vona/src/suite/a-commerce/tsconfig.base.json +4 -0
- package/vona/src/suite/a-commerce/tsconfig.json +28 -0
- package/vona/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +2 -0
- package/vona/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +2 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentCreate.tsx +50 -1
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectResItem.tsx +21 -1
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentUpdate.tsx +47 -1
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentView.tsx +47 -1
- package/vona/src/suite/a-training/modules/training-student/test/student.test.ts +61 -2
- 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/bean/bean.database.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/schedule.softDeletionPrune.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/bean.model/bean.model_meta.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoAggregate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoCreate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGroup.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoSelectAndCount.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoUpdate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/modelCacheBase.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relations.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsDynamic.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsMutate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsStatic.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/database.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/databaseDialectBase_.ts +10 -3
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/db_.ts +1 -1
- package/vona/src/suite-vendor/a-vona/package.json +1 -1
- package/zova/env/.env.cabloyCommerce +24 -0
- package/zova/env/.env.cabloyCommerceAdmin +19 -0
- package/zova/package.original.json +10 -1
- package/zova/packages-zova/zova/package.json +2 -2
- package/zova/pnpm-lock.yaml +145 -31
- package/zova/src/front/config/config/config.cabloyCommerce.ts +16 -0
- package/zova/src/front/config/config/config.cabloyCommerceAdmin.ts +13 -0
- package/zova/src/suite/a-commerce/modules/commerce-catalog/package.json +52 -0
- package/zova/src/suite/a-commerce/modules/commerce-catalog/src/.metadata/index.ts +26 -0
- package/zova/src/suite/a-commerce/modules/commerce-catalog/src/.metadata/this.ts +2 -0
- package/zova/src/suite/a-commerce/modules/commerce-catalog/src/index.ts +1 -0
- package/zova/src/suite/a-commerce/modules/commerce-catalog/tsconfig.build.json +13 -0
- package/zova/src/suite/a-commerce/modules/commerce-catalog/tsconfig.json +5 -0
- package/zova/src/suite/a-commerce/modules/commerce-member/package.json +52 -0
- package/zova/src/suite/a-commerce/modules/commerce-member/src/.metadata/index.ts +26 -0
- package/zova/src/suite/a-commerce/modules/commerce-member/src/.metadata/this.ts +2 -0
- package/zova/src/suite/a-commerce/modules/commerce-member/src/index.ts +1 -0
- package/zova/src/suite/a-commerce/modules/commerce-member/tsconfig.build.json +13 -0
- package/zova/src/suite/a-commerce/modules/commerce-member/tsconfig.json +5 -0
- package/zova/src/suite/a-commerce/modules/commerce-payment/package.json +52 -0
- package/zova/src/suite/a-commerce/modules/commerce-payment/src/.metadata/index.ts +26 -0
- package/zova/src/suite/a-commerce/modules/commerce-payment/src/.metadata/this.ts +2 -0
- package/zova/src/suite/a-commerce/modules/commerce-payment/src/index.ts +1 -0
- package/zova/src/suite/a-commerce/modules/commerce-payment/tsconfig.build.json +13 -0
- package/zova/src/suite/a-commerce/modules/commerce-payment/tsconfig.json +5 -0
- package/zova/src/suite/a-commerce/modules/commerce-promotion/package.json +52 -0
- package/zova/src/suite/a-commerce/modules/commerce-promotion/src/.metadata/index.ts +26 -0
- package/zova/src/suite/a-commerce/modules/commerce-promotion/src/.metadata/this.ts +2 -0
- package/zova/src/suite/a-commerce/modules/commerce-promotion/src/index.ts +1 -0
- package/zova/src/suite/a-commerce/modules/commerce-promotion/tsconfig.build.json +13 -0
- package/zova/src/suite/a-commerce/modules/commerce-promotion/tsconfig.json +5 -0
- package/zova/src/suite/a-commerce/modules/commerce-siteadmin/package.json +52 -0
- package/zova/src/suite/a-commerce/modules/commerce-siteadmin/src/.metadata/index.ts +26 -0
- package/zova/src/suite/a-commerce/modules/commerce-siteadmin/src/.metadata/this.ts +2 -0
- package/zova/src/suite/a-commerce/modules/commerce-siteadmin/src/index.ts +1 -0
- package/zova/src/suite/a-commerce/modules/commerce-siteadmin/tsconfig.build.json +13 -0
- package/zova/src/suite/a-commerce/modules/commerce-siteadmin/tsconfig.json +5 -0
- package/zova/src/suite/a-commerce/modules/commerce-siteweb/package.json +52 -0
- package/zova/src/suite/a-commerce/modules/commerce-siteweb/src/.metadata/index.ts +26 -0
- package/zova/src/suite/a-commerce/modules/commerce-siteweb/src/.metadata/this.ts +2 -0
- package/zova/src/suite/a-commerce/modules/commerce-siteweb/src/index.ts +1 -0
- package/zova/src/suite/a-commerce/modules/commerce-siteweb/tsconfig.build.json +13 -0
- package/zova/src/suite/a-commerce/modules/commerce-siteweb/tsconfig.json +5 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/package.json +52 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/index.ts +26 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/this.ts +2 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/index.ts +1 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/tsconfig.build.json +13 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/tsconfig.json +5 -0
- package/zova/src/suite/a-commerce/package.json +18 -0
- package/zova/src/suite/a-commerce/tsconfig.base.json +4 -0
- package/zova/src/suite/a-commerce/tsconfig.json +4 -0
- package/zova/src/suite/cabloy-basic/modules/basic-form/src/.metadata/component/blockFormLayout.ts +31 -0
- package/zova/src/suite/cabloy-basic/modules/basic-form/src/.metadata/index.ts +13 -0
- package/zova/src/suite/cabloy-basic/modules/basic-form/src/component/blockFormLayout/controller.tsx +188 -0
- package/zova/src/suite/cabloy-basic/modules/basic-page/src/.metadata/component/blockFilterActions.ts +31 -0
- package/zova/src/suite/cabloy-basic/modules/basic-page/src/.metadata/index.ts +13 -0
- package/zova/src/suite/cabloy-basic/modules/basic-page/src/component/blockFilter/controller.tsx +61 -31
- package/zova/src/suite/cabloy-basic/modules/basic-page/src/component/blockFilterActions/controller.tsx +51 -0
- package/zova/src/suite/cabloy-basic/modules/basic-page/src/types/page.ts +10 -0
- package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockForm/controller.tsx +9 -2
- package/zova/src/suite-vendor/a-zova/modules/a-app/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-app/src/component/app/controller.tsx +6 -0
- package/zova/src/suite-vendor/a-zova/modules/a-form/package.json +5 -3
- package/zova/src/suite-vendor/a-zova/modules/a-form/src/component/form/controller.tsx +44 -3
- package/zova/src/suite-vendor/a-zova/modules/a-form/src/component/form/render.tsx +22 -4
- package/zova/src/suite-vendor/a-zova/modules/a-form/src/component/formField/controller.tsx +3 -2
- package/zova/src/suite-vendor/a-zova/modules/a-form/src/lib/formLayout.ts +203 -0
- package/zova/src/suite-vendor/a-zova/modules/a-form/src/lib/index.ts +1 -0
- package/zova/src/suite-vendor/a-zova/modules/a-form/src/types/formField.ts +7 -4
- package/zova/src/suite-vendor/a-zova/modules/a-form/src/types/formLayout.ts +63 -0
- package/zova/src/suite-vendor/a-zova/modules/a-form/src/types/index.ts +1 -0
- 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/action.ts +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/resource/formLayout.ts +56 -0
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/resource/index.ts +1 -0
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssr.ts +19 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/monkey.ts +5 -0
- package/zova/src/suite-vendor/a-zova/package.json +5 -5
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// eslint-disable
|
|
2
|
+
/** ssrSite: begin */
|
|
3
|
+
export * from '../bean/ssrSite.commerce.ts';
|
|
4
|
+
import type { ISsrSiteOptionsCommerce } from '../bean/ssrSite.commerce.ts';
|
|
5
|
+
import 'vona-module-a-ssr';
|
|
6
|
+
declare module 'vona-module-a-ssr' {
|
|
7
|
+
|
|
8
|
+
export interface ISsrSiteRecord {
|
|
9
|
+
'commerce-siteweb:commerce': ISsrSiteOptionsCommerce;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
}
|
|
14
|
+
declare module 'vona-module-commerce-siteweb' {
|
|
15
|
+
|
|
16
|
+
export interface SsrSiteCommerce {
|
|
17
|
+
/** @internal */
|
|
18
|
+
get scope(): ScopeModuleCommerceSiteweb;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface SsrSiteCommerce {
|
|
22
|
+
get $beanFullName(): 'commerce-siteweb.ssrSite.commerce';
|
|
23
|
+
get $onionName(): 'commerce-siteweb:commerce';
|
|
24
|
+
get $onionOptions(): ISsrSiteOptionsCommerce;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** ssrSite: end */
|
|
28
|
+
/** ssrMenu: begin */
|
|
29
|
+
export * from '../bean/ssrMenu.home.ts';
|
|
30
|
+
import type { ISsrMenuOptionsHome } from '../bean/ssrMenu.home.ts';
|
|
31
|
+
import 'vona-module-a-ssr';
|
|
32
|
+
declare module 'vona-module-a-ssr' {
|
|
33
|
+
|
|
34
|
+
export interface ISsrMenuRecord {
|
|
35
|
+
'commerce-siteweb:home': ISsrMenuOptionsHome;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
}
|
|
40
|
+
declare module 'vona-module-commerce-siteweb' {
|
|
41
|
+
|
|
42
|
+
export interface SsrMenuHome {
|
|
43
|
+
/** @internal */
|
|
44
|
+
get scope(): ScopeModuleCommerceSiteweb;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface SsrMenuHome {
|
|
48
|
+
get $beanFullName(): 'commerce-siteweb.ssrMenu.home';
|
|
49
|
+
get $onionName(): 'commerce-siteweb:home';
|
|
50
|
+
get $onionOptions(): ISsrMenuOptionsHome;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** ssrMenu: end */
|
|
54
|
+
/** scope: begin */
|
|
55
|
+
import { BeanScopeBase, type BeanScopeUtil } from 'vona';
|
|
56
|
+
import { Scope } from 'vona-module-a-bean';
|
|
57
|
+
|
|
58
|
+
@Scope()
|
|
59
|
+
export class ScopeModuleCommerceSiteweb extends BeanScopeBase {}
|
|
60
|
+
|
|
61
|
+
export interface ScopeModuleCommerceSiteweb {
|
|
62
|
+
util: BeanScopeUtil;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
import 'vona';
|
|
66
|
+
declare module 'vona' {
|
|
67
|
+
export interface IBeanScopeRecord {
|
|
68
|
+
'commerce-siteweb': ScopeModuleCommerceSiteweb;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface IBeanScopeContainer {
|
|
72
|
+
commerceSiteweb: ScopeModuleCommerceSiteweb;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
}
|
|
81
|
+
/** scope: end */
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { IDecoratorSsrMenuOptions } from 'vona-module-a-ssr';
|
|
2
|
+
|
|
3
|
+
import { BeanBase } from 'vona';
|
|
4
|
+
import { $order } from 'vona-module-a-openapiutils';
|
|
5
|
+
import { SsrMenu } from 'vona-module-a-ssr';
|
|
6
|
+
|
|
7
|
+
import type { ISsrSiteOptionsCommerce } from './ssrSite.commerce.ts';
|
|
8
|
+
|
|
9
|
+
export interface ISsrMenuOptionsHome extends IDecoratorSsrMenuOptions<ISsrSiteOptionsCommerce> {}
|
|
10
|
+
|
|
11
|
+
@SsrMenu<ISsrMenuOptionsHome>({
|
|
12
|
+
item: {
|
|
13
|
+
title: 'Commerce',
|
|
14
|
+
order: $order(1),
|
|
15
|
+
icon: undefined,
|
|
16
|
+
link: '/',
|
|
17
|
+
},
|
|
18
|
+
site: ['commerce-siteweb:commerce'],
|
|
19
|
+
})
|
|
20
|
+
export class SsrMenuHome extends BeanBase {}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { IDecoratorSsrSiteOptions } from 'vona-module-a-ssr';
|
|
2
|
+
import type { IIconRecord, IPagePathRecord } from 'zova-rest-cabloy-commerce';
|
|
3
|
+
|
|
4
|
+
import { BeanSsrSiteBase, SsrSite } from 'vona-module-a-ssr';
|
|
5
|
+
|
|
6
|
+
declare module 'vona-module-a-ssr' {
|
|
7
|
+
export interface ISsrSiteIdRecord {
|
|
8
|
+
commerce: never;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface ISsrSitePublicPathRecord {
|
|
12
|
+
commerce: never;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface ISsrSiteOptionsCommercePages extends IPagePathRecord {}
|
|
17
|
+
|
|
18
|
+
export interface ISsrSiteOptionsCommercePagesData {}
|
|
19
|
+
|
|
20
|
+
export interface ISsrSiteOptionsCommerce extends IDecoratorSsrSiteOptions<
|
|
21
|
+
ISsrSiteOptionsCommercePages,
|
|
22
|
+
ISsrSiteOptionsCommercePagesData,
|
|
23
|
+
IIconRecord
|
|
24
|
+
> {}
|
|
25
|
+
|
|
26
|
+
@SsrSite<ISsrSiteOptionsCommerce>({
|
|
27
|
+
siteId: 'commerce',
|
|
28
|
+
publicPath: 'commerce',
|
|
29
|
+
bundlePath: 'ssr-cabloyCommerce-5.0.0',
|
|
30
|
+
diagnostics: {
|
|
31
|
+
buildCommand: 'npm run build:zova:commerce:web',
|
|
32
|
+
},
|
|
33
|
+
})
|
|
34
|
+
export class SsrSiteCommerce extends BeanSsrSiteBase<ISsrSiteOptionsCommerce> {}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './.metadata/index.ts';
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "vona-module-commerce-trade",
|
|
3
|
+
"version": "5.0.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"Vona Module"
|
|
7
|
+
],
|
|
8
|
+
"author": "",
|
|
9
|
+
"files": [
|
|
10
|
+
"assets",
|
|
11
|
+
"dist",
|
|
12
|
+
"src"
|
|
13
|
+
],
|
|
14
|
+
"type": "module",
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"types": [
|
|
18
|
+
"./src/index.ts",
|
|
19
|
+
"./dist/index.d.ts"
|
|
20
|
+
],
|
|
21
|
+
"import": "./src/index.ts",
|
|
22
|
+
"default": "./dist/index.js"
|
|
23
|
+
},
|
|
24
|
+
"./package.json": "./package.json"
|
|
25
|
+
},
|
|
26
|
+
"scripts": {
|
|
27
|
+
"clean": "rimraf dist tsconfig.build.tsbuildinfo",
|
|
28
|
+
"tsc:publish": "npm run clean && node ../../../../../packages-cli/cli/src/bin/vona.ts :bin:buildModule --sourcemap && tsc -p tsconfig.build.json",
|
|
29
|
+
"prepublishOnly": "npm run tsc:publish",
|
|
30
|
+
"prepack": "clean-package",
|
|
31
|
+
"postpack": "clean-package restore"
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"clean-package": "^2.2.0",
|
|
36
|
+
"rimraf": "^6.1.3"
|
|
37
|
+
},
|
|
38
|
+
"clean-package": {
|
|
39
|
+
"indent": 2,
|
|
40
|
+
"remove": [
|
|
41
|
+
"clean-package",
|
|
42
|
+
"devDependencies",
|
|
43
|
+
"exports.\\..import"
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
"title": "commerce-trade",
|
|
47
|
+
"vonaModule": {
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"a-vona": "5.0.0"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// eslint-disable
|
|
2
|
+
/** scope: begin */
|
|
3
|
+
import { BeanScopeBase, type BeanScopeUtil } from 'vona';
|
|
4
|
+
import { Scope } from 'vona-module-a-bean';
|
|
5
|
+
|
|
6
|
+
@Scope()
|
|
7
|
+
export class ScopeModuleCommerceTrade extends BeanScopeBase {}
|
|
8
|
+
|
|
9
|
+
export interface ScopeModuleCommerceTrade {
|
|
10
|
+
util: BeanScopeUtil;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
import 'vona';
|
|
14
|
+
declare module 'vona' {
|
|
15
|
+
export interface IBeanScopeRecord {
|
|
16
|
+
'commerce-trade': ScopeModuleCommerceTrade;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface IBeanScopeContainer {
|
|
20
|
+
commerceTrade: ScopeModuleCommerceTrade;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
}
|
|
29
|
+
/** scope: end */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './.metadata/index.ts';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "vona-suite-a-commerce",
|
|
3
|
+
"version": "5.0.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"author": "",
|
|
6
|
+
"files": [],
|
|
7
|
+
"type": "module",
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"vona-module-commerce-catalog": "^5.0.0",
|
|
10
|
+
"vona-module-commerce-member": "^5.0.0",
|
|
11
|
+
"vona-module-commerce-payment": "^5.0.0",
|
|
12
|
+
"vona-module-commerce-promotion": "^5.0.0",
|
|
13
|
+
"vona-module-commerce-siteadmin": "^5.0.0",
|
|
14
|
+
"vona-module-commerce-siteweb": "^5.0.0",
|
|
15
|
+
"vona-module-commerce-trade": "^5.0.0"
|
|
16
|
+
},
|
|
17
|
+
"title": "a-commerce"
|
|
18
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "./tsconfig.base",
|
|
3
|
+
"compilerOptions": {},
|
|
4
|
+
"references": [
|
|
5
|
+
{
|
|
6
|
+
"path": "modules/commerce-catalog/tsconfig.build.json"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"path": "modules/commerce-trade/tsconfig.build.json"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"path": "modules/commerce-promotion/tsconfig.build.json"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"path": "modules/commerce-payment/tsconfig.build.json"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"path": "modules/commerce-member/tsconfig.build.json"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"path": "modules/commerce-siteweb/tsconfig.build.json"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"path": "modules/commerce-siteadmin/tsconfig.build.json"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"exclude": ["modules"]
|
|
28
|
+
}
|
|
@@ -16,7 +16,56 @@ export interface IDtoOptionsStudentCreate extends IDecoratorDtoOptions {}
|
|
|
16
16
|
blocks: [
|
|
17
17
|
ZovaRender.block('basic-pageentry:blockPageEntry', {
|
|
18
18
|
blocks: [
|
|
19
|
-
ZovaRender.block('basic-pageentry:blockForm'
|
|
19
|
+
ZovaRender.block('basic-pageentry:blockForm', {
|
|
20
|
+
blocks: [
|
|
21
|
+
ZovaRender.block('basic-form:blockFormLayout', {
|
|
22
|
+
formLayout: {
|
|
23
|
+
children: [
|
|
24
|
+
{
|
|
25
|
+
type: 'tabs',
|
|
26
|
+
children: [
|
|
27
|
+
{
|
|
28
|
+
type: 'tab',
|
|
29
|
+
title: $locale('BasicInformation'),
|
|
30
|
+
children: [
|
|
31
|
+
{
|
|
32
|
+
type: 'group',
|
|
33
|
+
title: $locale('StudentProfile'),
|
|
34
|
+
children: [
|
|
35
|
+
{
|
|
36
|
+
type: 'section',
|
|
37
|
+
columns: { default: 1, md: 2 },
|
|
38
|
+
children: [
|
|
39
|
+
{ type: 'field', name: 'name' },
|
|
40
|
+
{ type: 'field', name: 'mobile' },
|
|
41
|
+
{ type: 'field', name: 'imageId' },
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
type: 'tab',
|
|
50
|
+
title: $locale('TrainingRecords'),
|
|
51
|
+
children: [
|
|
52
|
+
{ type: 'field', name: 'level' },
|
|
53
|
+
{
|
|
54
|
+
type: 'section',
|
|
55
|
+
children: [{ type: 'field', name: 'trainingRecords' }],
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
},
|
|
63
|
+
}),
|
|
64
|
+
],
|
|
65
|
+
// blocks: [
|
|
66
|
+
// ZovaRender.block('')
|
|
67
|
+
// ],
|
|
68
|
+
}),
|
|
20
69
|
ZovaRender.block('basic-pageentry:blockToolbarRow', {
|
|
21
70
|
actions: [
|
|
22
71
|
ZovaRender.formActionRow('basic-form:actionSubmit', {
|
|
@@ -15,7 +15,27 @@ export interface IDtoOptionsStudentSelectResItem extends IDecoratorDtoOptions {}
|
|
|
15
15
|
blocks: [
|
|
16
16
|
ZovaRender.block('basic-page:blockPage', {
|
|
17
17
|
blocks: [
|
|
18
|
-
ZovaRender.block('basic-page:blockFilter'
|
|
18
|
+
ZovaRender.block('basic-page:blockFilter', {
|
|
19
|
+
formFieldLayout: { inline: true },
|
|
20
|
+
blocks: [
|
|
21
|
+
ZovaRender.block('basic-form:blockFormLayout', {
|
|
22
|
+
formLayout: {
|
|
23
|
+
children: [
|
|
24
|
+
{
|
|
25
|
+
type: 'section',
|
|
26
|
+
layout: 'flow',
|
|
27
|
+
children: [
|
|
28
|
+
{ type: 'field', name: 'name' },
|
|
29
|
+
{ type: 'field', name: 'level' },
|
|
30
|
+
{ type: 'field', name: 'createdAt' },
|
|
31
|
+
],
|
|
32
|
+
} as any,
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
}),
|
|
36
|
+
ZovaRender.block('basic-page:blockFilterActions'),
|
|
37
|
+
],
|
|
38
|
+
}),
|
|
19
39
|
ZovaRender.block('basic-page:blockToolbarBulk', {
|
|
20
40
|
actions: [ZovaRender.tableActionBulk('basic-table:actionCreate')],
|
|
21
41
|
}),
|
|
@@ -16,7 +16,53 @@ export interface IDtoOptionsStudentUpdate extends IDecoratorDtoOptions {}
|
|
|
16
16
|
blocks: [
|
|
17
17
|
ZovaRender.block('basic-pageentry:blockPageEntry', {
|
|
18
18
|
blocks: [
|
|
19
|
-
ZovaRender.block('basic-pageentry:blockForm'
|
|
19
|
+
ZovaRender.block('basic-pageentry:blockForm', {
|
|
20
|
+
blocks: [
|
|
21
|
+
ZovaRender.block('basic-form:blockFormLayout', {
|
|
22
|
+
formLayout: {
|
|
23
|
+
children: [
|
|
24
|
+
{
|
|
25
|
+
type: 'tabs',
|
|
26
|
+
children: [
|
|
27
|
+
{
|
|
28
|
+
type: 'tab',
|
|
29
|
+
title: $locale('BasicInformation'),
|
|
30
|
+
children: [
|
|
31
|
+
{
|
|
32
|
+
type: 'group',
|
|
33
|
+
title: $locale('StudentProfile'),
|
|
34
|
+
children: [
|
|
35
|
+
{
|
|
36
|
+
type: 'section',
|
|
37
|
+
columns: { default: 1, md: 2 },
|
|
38
|
+
children: [
|
|
39
|
+
{ type: 'field', name: 'name' },
|
|
40
|
+
{ type: 'field', name: 'mobile' },
|
|
41
|
+
{ type: 'field', name: 'imageId' },
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
type: 'tab',
|
|
50
|
+
title: $locale('TrainingRecords'),
|
|
51
|
+
children: [
|
|
52
|
+
{ type: 'field', name: 'level' },
|
|
53
|
+
{
|
|
54
|
+
type: 'section',
|
|
55
|
+
children: [{ type: 'field', name: 'trainingRecords' }],
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
},
|
|
63
|
+
}),
|
|
64
|
+
],
|
|
65
|
+
}),
|
|
20
66
|
ZovaRender.block('basic-pageentry:blockToolbarRow', {
|
|
21
67
|
actions: [
|
|
22
68
|
ZovaRender.formActionRow('basic-form:actionSubmit', {
|
|
@@ -17,7 +17,53 @@ export interface IDtoOptionsStudentView extends IDecoratorDtoOptions {}
|
|
|
17
17
|
blocks: [
|
|
18
18
|
ZovaRender.block('basic-pageentry:blockPageEntry', {
|
|
19
19
|
blocks: [
|
|
20
|
-
ZovaRender.block('basic-pageentry:blockForm'
|
|
20
|
+
ZovaRender.block('basic-pageentry:blockForm', {
|
|
21
|
+
blocks: [
|
|
22
|
+
ZovaRender.block('basic-form:blockFormLayout', {
|
|
23
|
+
formLayout: {
|
|
24
|
+
children: [
|
|
25
|
+
{
|
|
26
|
+
type: 'tabs',
|
|
27
|
+
children: [
|
|
28
|
+
{
|
|
29
|
+
type: 'tab',
|
|
30
|
+
title: $locale('BasicInformation'),
|
|
31
|
+
children: [
|
|
32
|
+
{
|
|
33
|
+
type: 'group',
|
|
34
|
+
title: $locale('StudentProfile'),
|
|
35
|
+
children: [
|
|
36
|
+
{
|
|
37
|
+
type: 'section',
|
|
38
|
+
columns: { default: 1, md: 2 },
|
|
39
|
+
children: [
|
|
40
|
+
{ type: 'field', name: 'name' },
|
|
41
|
+
{ type: 'field', name: 'mobile' },
|
|
42
|
+
{ type: 'field', name: 'imageId' },
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
type: 'tab',
|
|
51
|
+
title: $locale('TrainingRecords'),
|
|
52
|
+
children: [
|
|
53
|
+
{ type: 'field', name: 'level' },
|
|
54
|
+
{
|
|
55
|
+
type: 'section',
|
|
56
|
+
children: [{ type: 'field', name: 'trainingRecords' }],
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
},
|
|
64
|
+
}),
|
|
65
|
+
],
|
|
66
|
+
}),
|
|
21
67
|
ZovaRender.block('basic-pageentry:blockToolbarRow', {
|
|
22
68
|
actions: [
|
|
23
69
|
ZovaRender.formActionRow('basic-form:actionBack', { permission: { public: true } }),
|
|
@@ -1,16 +1,75 @@
|
|
|
1
1
|
import type {
|
|
2
|
-
DtoStudentCreate,
|
|
3
2
|
DtoStudentSelectRes,
|
|
4
3
|
DtoStudentSummary,
|
|
5
|
-
DtoStudentUpdate,
|
|
6
4
|
EntityStudent,
|
|
7
5
|
} from 'vona-module-training-student';
|
|
8
6
|
|
|
9
7
|
import assert from 'node:assert';
|
|
10
8
|
import { describe, it } from 'node:test';
|
|
11
9
|
import { app } from 'vona-mock';
|
|
10
|
+
import {
|
|
11
|
+
DtoStudentCreate,
|
|
12
|
+
DtoStudentSelectResItem,
|
|
13
|
+
DtoStudentUpdate,
|
|
14
|
+
DtoStudentView,
|
|
15
|
+
} from 'vona-module-training-student';
|
|
12
16
|
|
|
13
17
|
describe('student.test.ts', () => {
|
|
18
|
+
it('action:student:formLayoutMetadata', async () => {
|
|
19
|
+
await app.bean.executor.mockCtx(async () => {
|
|
20
|
+
for (const DtoClass of [DtoStudentCreate, DtoStudentUpdate, DtoStudentView]) {
|
|
21
|
+
const apiJson = await app.bean.openapi.generateJsonOfClass(DtoClass);
|
|
22
|
+
const component = Object.values(apiJson.components!.schemas as any).find(item => {
|
|
23
|
+
return (item as any).properties?.trainingRecords;
|
|
24
|
+
});
|
|
25
|
+
const blocks = (component as any)?.rest?.blocks;
|
|
26
|
+
const formLayout =
|
|
27
|
+
blocks?.[0]?.options?.blocks?.[0]?.options?.blocks?.[0]?.options?.formLayout;
|
|
28
|
+
const tabs = formLayout?.children[0];
|
|
29
|
+
const profileSection = tabs?.children[0]?.children[0]?.children[0];
|
|
30
|
+
const trainingRecordsSection = tabs?.children[1]?.children[1];
|
|
31
|
+
assert.equal(tabs?.type, 'tabs');
|
|
32
|
+
assert.equal(tabs?.id, undefined);
|
|
33
|
+
assert.equal(tabs?.children[1]?.type, 'tab');
|
|
34
|
+
assert.equal(tabs?.children[1]?.id, undefined);
|
|
35
|
+
assert.deepEqual(profileSection?.columns, { default: 1, md: 2 });
|
|
36
|
+
assert.deepEqual(
|
|
37
|
+
profileSection?.children.map(item => item.name),
|
|
38
|
+
['name', 'mobile', 'imageId'],
|
|
39
|
+
);
|
|
40
|
+
assert.equal(tabs?.children[1]?.children[0]?.name, 'level');
|
|
41
|
+
assert.deepEqual(
|
|
42
|
+
trainingRecordsSection?.children.map(item => item.name),
|
|
43
|
+
['trainingRecords'],
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it('action:student:filterFormLayoutMetadata', async () => {
|
|
50
|
+
await app.bean.executor.mockCtx(async () => {
|
|
51
|
+
const apiJson = await app.bean.openapi.generateJsonOfClass(DtoStudentSelectResItem);
|
|
52
|
+
const component = Object.values(apiJson.components!.schemas as any).find(item => {
|
|
53
|
+
return (item as any).properties?._operationsRow;
|
|
54
|
+
});
|
|
55
|
+
const filterBlock = (component as any)?.rest?.blocks?.[0]?.options?.blocks?.[0];
|
|
56
|
+
assert.equal(filterBlock?.render, 'basic-page:blockFilter');
|
|
57
|
+
assert.equal(filterBlock?.options?.formFieldLayout?.inline, true);
|
|
58
|
+
assert.deepEqual(
|
|
59
|
+
filterBlock?.options?.blocks?.map(item => item.render),
|
|
60
|
+
['basic-form:blockFormLayout', 'basic-page:blockFilterActions'],
|
|
61
|
+
);
|
|
62
|
+
const formLayout = filterBlock?.options?.blocks?.[0]?.options?.formLayout;
|
|
63
|
+
assert.equal(formLayout?.children[0]?.layout, 'flow');
|
|
64
|
+
assert.equal(formLayout?.children[0]?.columns, undefined);
|
|
65
|
+
assert.deepEqual(
|
|
66
|
+
formLayout?.children[0]?.children.map(item => item.name),
|
|
67
|
+
['name', 'level', 'createdAt'],
|
|
68
|
+
);
|
|
69
|
+
assert.equal(formLayout?.children[0]?.children[2]?.span, undefined);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
|
|
14
73
|
it('action:student', async () => {
|
|
15
74
|
await app.bean.executor.mockCtx(async () => {
|
|
16
75
|
// data
|
|
@@ -3,13 +3,13 @@ import type { FunctionAsync } from 'vona';
|
|
|
3
3
|
import { BeanBase, beanFullNameFromOnionName } from 'vona';
|
|
4
4
|
import { Bean } from 'vona-module-a-bean';
|
|
5
5
|
|
|
6
|
+
import type { ServiceDatabaseDialectBase } from '../service/databaseDialectBase_.ts';
|
|
6
7
|
import type { ConfigDatabaseClient } from '../types/config.ts';
|
|
7
8
|
import type {
|
|
8
9
|
IDatabaseClientDialectRecord,
|
|
9
10
|
IDatabaseClientRecord,
|
|
10
11
|
IDbInfo,
|
|
11
12
|
} from '../types/database.ts';
|
|
12
|
-
import type { ServiceDatabaseDialectBase } from '../service/databaseDialectBase_.ts';
|
|
13
13
|
|
|
14
14
|
import { ServiceDatabaseAsyncLocalStorage } from '../service/databaseAsyncLocalStorage_.ts';
|
|
15
15
|
import { ServiceDatabaseClient } from '../service/databaseClient_.ts';
|
|
@@ -4,8 +4,8 @@ import type { IScheduleExecute } from 'vona-module-a-schedule';
|
|
|
4
4
|
import { BeanBase } from 'vona';
|
|
5
5
|
import { Schedule } from 'vona-module-a-schedule';
|
|
6
6
|
|
|
7
|
-
import type { IModelRecord, ISoftDeletionPrune } from '../types/onion/model.ts';
|
|
8
7
|
import type { BeanModelCache } from '../lib/bean.model/bean.model_cache.ts';
|
|
8
|
+
import type { IModelRecord, ISoftDeletionPrune } from '../types/onion/model.ts';
|
|
9
9
|
|
|
10
10
|
@Schedule({ repeat: { every: 24 * 3600 * 1000 } })
|
|
11
11
|
export class ScheduleSoftDeletionPrune extends BeanBase implements IScheduleExecute {
|