cabloy 5.1.208 → 5.1.210

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 (97) hide show
  1. package/.cabloy-version +1 -1
  2. package/CHANGELOG.md +12 -0
  3. package/package.json +1 -1
  4. package/repo-agent-governance/managed-assets.json +9 -9
  5. package/repo-agent-governance/policies/repository.md +1 -1
  6. package/repo-agent-governance/skills/cabloy-workflow/SKILL.md +4 -2
  7. package/repo-agent-governance/skills/cabloy-workflow/evals/evals.json +13 -1
  8. package/repo-docs/backend/unit-testing.md +1 -1
  9. package/repo-docs/frontend/form-guide.md +17 -1
  10. package/repo-docs/frontend/model-architecture.md +4 -0
  11. package/repo-docs/frontend/model-state-guide.md +23 -2
  12. package/repo-docs/frontend/resource-entry-page-deep-dive.md +119 -0
  13. package/repo-docs/frontend/scripts.md +3 -3
  14. package/repo-docs/frontend/zova-form-under-the-hood.md +5 -0
  15. package/repo-docs/fullstack/parallel-worktree-environment.md +3 -3
  16. package/repo-docs/reference/repo-scripts.md +19 -5
  17. package/repo-e2e/specs/cabloy-basic.spec.ts +1577 -0
  18. package/vona/packages-vona/vona/package.json +1 -1
  19. package/vona/src/suite/a-home/modules/home-user/src/controller/passport.ts +1 -0
  20. package/vona/src/suite/a-home/modules/home-user/src/dto/passport.ts +4 -0
  21. package/vona/src/suite/a-home/modules/home-user/test/passport.test.ts +172 -0
  22. package/vona/src/suite/a-home/modules/home-user/test/role.test.ts +1 -0
  23. package/vona/src/suite-vendor/a-cabloy/modules/a-rbac/package.json +1 -1
  24. package/vona/src/suite-vendor/a-cabloy/package.json +2 -2
  25. package/vona/src/suite-vendor/a-vona/modules/a-openapi/package.json +1 -1
  26. package/vona/src/suite-vendor/a-vona/modules/a-openapi/src/types/rest.ts +1 -0
  27. package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
  28. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  29. package/zova/packages-cli/cli/package.json +2 -2
  30. package/zova/packages-cli/cli-set-front/cli/templates/rest/render.ts +2 -0
  31. package/zova/packages-cli/cli-set-front/cli/templates/rest/rest.ts +9 -0
  32. package/zova/packages-cli/cli-set-front/package.json +1 -1
  33. package/zova/packages-zova/zova/package.json +2 -2
  34. package/zova/src/suite/a-home/modules/home-api/src/.metadata/index.ts +17 -17
  35. package/zova/src/suite/a-home/modules/home-api/src/api/openapi/schemas.ts +68 -52
  36. package/zova/src/suite/a-home/modules/home-api/src/api/openapi/types.ts +524 -343
  37. package/zova/src/suite/a-home/modules/home-passport/src/model/passport.ts +45 -11
  38. package/zova/src/suite/a-home/modules/home-passport/test/lib/persistenceIdentity.test.ts +229 -0
  39. package/zova/src/suite/cabloy-basic/modules/basic-input/src/component/formFieldInput/controller.tsx +2 -1
  40. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/package.json +9 -1
  41. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/.metadata/index.ts +81 -5
  42. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/bean/bean.draftCoordinator.ts +158 -0
  43. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockForm/controller.tsx +11 -3
  44. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockPageEntry/controller.tsx +438 -8
  45. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/config/config.ts +11 -0
  46. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/config/locale/en-us.ts +9 -0
  47. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/config/locale/zh-cn.ts +9 -0
  48. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/lib/draftSchema.ts +649 -0
  49. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/model/draft.ts +59 -0
  50. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/monkey.ts +11 -0
  51. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/types/draft.ts +49 -0
  52. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/test/lib/draftDate.test.ts +262 -0
  53. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/test/lib/draftLifecycle.test.ts +1073 -0
  54. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/test/lib/draftLoader.mjs +13 -0
  55. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/test/lib/draftModel.test.ts +572 -0
  56. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/test/lib/draftSchema.test.ts +427 -0
  57. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/test/lib/draftSchemaSafety.test.ts +200 -0
  58. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/package.json +1 -1
  59. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/src/page/entry/controller.tsx +6 -1
  60. package/zova/src/suite-vendor/a-cabloy/package.json +2 -2
  61. package/zova/src/suite-vendor/a-zova/modules/a-form/package.json +1 -1
  62. package/zova/src/suite-vendor/a-zova/modules/a-form/src/component/form/controller.tsx +86 -1
  63. package/zova/src/suite-vendor/a-zova/modules/a-form/src/component/formField/controller.tsx +87 -13
  64. package/zova/src/suite-vendor/a-zova/modules/a-form/src/lib/schemaRefresh.ts +751 -0
  65. package/zova/src/suite-vendor/a-zova/modules/a-form/src/types/formField.ts +2 -0
  66. package/zova/src/suite-vendor/a-zova/modules/a-form/test/lib/schemaRefresh.test.ts +637 -0
  67. package/zova/src/suite-vendor/a-zova/modules/a-form/test/lib/schemaRefreshLifecycle.test.ts +1098 -0
  68. package/zova/src/suite-vendor/a-zova/modules/a-model/package.json +1 -1
  69. package/zova/src/suite-vendor/a-zova/modules/a-model/src/bean/bean.model/bean.model.persister.ts +331 -87
  70. package/zova/src/suite-vendor/a-zova/modules/a-model/src/bean/bean.model/bean.model.query.ts +11 -6
  71. package/zova/src/suite-vendor/a-zova/modules/a-model/src/bean/bean.model/bean.model.useQuery.ts +3 -1
  72. package/zova/src/suite-vendor/a-zova/modules/a-model/src/bean/bean.model/bean.model.useState.ts +17 -1
  73. package/zova/src/suite-vendor/a-zova/modules/a-model/src/lib/index.ts +1 -0
  74. package/zova/src/suite-vendor/a-zova/modules/a-model/src/lib/modelPersistence.ts +204 -0
  75. package/zova/src/suite-vendor/a-zova/modules/a-model/src/lib/persistenceQueue.ts +50 -0
  76. package/zova/src/suite-vendor/a-zova/modules/a-model/src/monkey.ts +5 -0
  77. package/zova/src/suite-vendor/a-zova/modules/a-model/src/service/storage.ts +47 -2
  78. package/zova/src/suite-vendor/a-zova/modules/a-model/src/types/query.ts +3 -0
  79. package/zova/src/suite-vendor/a-zova/modules/a-model/test/lib/modelLoader.mjs +34 -0
  80. package/zova/src/suite-vendor/a-zova/modules/a-model/test/lib/modelPersistence.test.ts +727 -0
  81. package/zova/src/suite-vendor/a-zova/modules/a-model/test/lib/persistenceQueue.test.ts +137 -0
  82. package/zova/src/suite-vendor/a-zova/modules/a-model/test/lib/persistenceTransition.test.ts +129 -0
  83. package/zova/src/suite-vendor/a-zova/modules/a-openapi/package.json +1 -1
  84. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/monkey.ts +7 -5
  85. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/rest.ts +2 -0
  86. package/zova/src/suite-vendor/a-zova/modules/a-router/package.json +1 -1
  87. package/zova/src/suite-vendor/a-zova/modules/a-router/src/bean/bean.router.ts +14 -0
  88. package/zova/src/suite-vendor/a-zova/modules/a-router/src/lib/routeDiscard.ts +26 -0
  89. package/zova/src/suite-vendor/a-zova/modules/a-router/src/service/routerGuards.ts +6 -3
  90. package/zova/src/suite-vendor/a-zova/modules/a-router/src/types/index.ts +1 -0
  91. package/zova/src/suite-vendor/a-zova/modules/a-router/src/types/routeDiscard.ts +24 -0
  92. package/zova/src/suite-vendor/a-zova/modules/a-router/test/lib/routeDiscard.test.ts +105 -0
  93. package/zova/src/suite-vendor/a-zova/modules/a-routertabs/package.json +1 -1
  94. package/zova/src/suite-vendor/a-zova/modules/a-routertabs/src/model/tabs.ts +202 -30
  95. package/zova/src/suite-vendor/a-zova/modules/a-routertabs/test/lib/tabs.test.ts +524 -0
  96. package/zova/src/suite-vendor/a-zova/modules/a-routertabs/test/lib/tabsLoader.mjs +35 -0
  97. package/zova/src/suite-vendor/a-zova/package.json +6 -6
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona",
3
- "version": "5.1.106",
3
+ "version": "5.1.107",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "Vona is an intuitive, elegant and powerful Node.js framework for rapidly developing enterprise applications of any size",
6
6
  "keywords": [
@@ -153,6 +153,7 @@ export class ControllerPassport extends BeanBase {
153
153
  const user = passport?.user as (EntityUser & IUser) | undefined;
154
154
  if (!passport || !passport.auth || !user) return;
155
155
  return {
156
+ instanceId: this.ctx.instance?.id ?? null,
156
157
  user: {
157
158
  id: user.id,
158
159
  name: user.name,
@@ -1,3 +1,4 @@
1
+ import type { TableIdentity } from 'table-identity';
1
2
  import type { IDecoratorDtoOptions } from 'vona-module-a-web';
2
3
 
3
4
  import { DtoAuth } from 'vona-module-a-auth';
@@ -11,6 +12,9 @@ export interface IDtoOptionsPassport extends IDecoratorDtoOptions {}
11
12
 
12
13
  @Dto<IDtoOptionsPassport>()
13
14
  export class DtoPassport {
15
+ @Api.field(v.nullable(), v.tableIdentity())
16
+ instanceId: TableIdentity | null;
17
+
14
18
  @Api.field()
15
19
  user: DtoPassportUser;
16
20
 
@@ -0,0 +1,172 @@
1
+ import type { SchemaObject } from 'openapi3-ts/oas31';
2
+ import type { IPassport } from 'vona-module-a-user';
3
+
4
+ import assert from 'node:assert';
5
+ import { describe, it, mock } from 'node:test';
6
+ import { app } from 'vona-mock';
7
+
8
+ import { ControllerPassport } from '../src/controller/passport.ts';
9
+
10
+ function createPassport(): IPassport {
11
+ return {
12
+ user: {
13
+ id: 'passport-response-user',
14
+ name: 'Passport response fixture',
15
+ activated: true,
16
+ accountStatus: 'active',
17
+ instanceId: 'untrusted-user-instance',
18
+ },
19
+ auth: { id: 'passport-response-auth', instanceId: 'untrusted-auth-instance' },
20
+ roles: [],
21
+ } as IPassport;
22
+ }
23
+
24
+ const jwt = {
25
+ accessToken: 'passport-response-access',
26
+ refreshToken: 'passport-response-refresh',
27
+ };
28
+
29
+ describe('passport.test.ts', { concurrency: false }, () => {
30
+ it('current returns the authoritative request instance, not persisted passport identities', async () => {
31
+ await app.bean.executor.mockCtx(async () => {
32
+ const passport = createPassport();
33
+ app.ctx.state.passport = passport;
34
+ const instanceId = app.ctx.instance.id;
35
+ assert.notEqual(instanceId, undefined);
36
+
37
+ const result = await app.bean._getBean(ControllerPassport).current();
38
+ assert.ok(result);
39
+ assert.equal(result.instanceId, instanceId);
40
+ assert.equal(result.user.id, passport.user!.id);
41
+ assert.equal(result.auth, passport.auth);
42
+ assert.equal(result.roles, passport.roles);
43
+ assert.equal('instanceId' in result.user, false);
44
+ });
45
+ });
46
+
47
+ it('current returns explicit null when the request has no instance', async () => {
48
+ await app.bean.executor.mockCtx(
49
+ async () => {
50
+ app.ctx.state.passport = createPassport();
51
+ assert.equal(app.ctx.instance, undefined);
52
+ const result = await app.bean._getBean(ControllerPassport).current();
53
+ assert.ok(result);
54
+ assert.equal(result.instanceId, null);
55
+ assert.ok(Object.hasOwn(result, 'instanceId'));
56
+ },
57
+ { instanceName: null },
58
+ );
59
+ });
60
+
61
+ it('current preserves the absent-passport and incomplete-passport behavior', async () => {
62
+ await app.bean.executor.mockCtx(async () => {
63
+ const controller = app.bean._getBean(ControllerPassport);
64
+ for (const passport of [undefined, {}, { user: createPassport().user }, { auth: jwt }]) {
65
+ app.ctx.state.passport = passport as IPassport | undefined;
66
+ assert.equal(await controller.current(), undefined);
67
+ }
68
+ });
69
+ });
70
+
71
+ it('every Passport/JWT response uses the same authoritative instance projection', async () => {
72
+ for (const instanceName of ['', null] as const) {
73
+ await app.bean.executor.mockCtx(
74
+ async () => {
75
+ app.ctx.state.passport = createPassport();
76
+ const controller = app.bean._getBean(ControllerPassport);
77
+ const authenticate = mock.method(app.bean.auth, 'authenticate', async () => jwt);
78
+ const fromOauthCode = mock.method(
79
+ app.bean.passport,
80
+ 'createAuthTokenFromOauthCode',
81
+ async () => jwt,
82
+ );
83
+ try {
84
+ const login = { username: 'response-user', password: 'response-password', captcha: {} };
85
+ const responses = [
86
+ await controller.login(login as Parameters<ControllerPassport['login']>[0]),
87
+ await controller.register({
88
+ ...login,
89
+ email: 'response@example.com',
90
+ passwordConfirm: login.password,
91
+ consumerUrl: 'http://localhost/account/activation',
92
+ } as Parameters<ControllerPassport['register']>[0]),
93
+ await controller.associate('auth-simple', 'simple', 'default'),
94
+ await controller.migrate('auth-simple', 'simple', 'default'),
95
+ await controller.createPassportJwtFromOauthCode('response-code'),
96
+ ];
97
+ for (const response of responses) {
98
+ assert.equal(response.passport.instanceId, app.ctx.instance?.id ?? null);
99
+ assert.ok(Object.hasOwn(response.passport, 'instanceId'));
100
+ assert.equal(response.passport.user.id, 'passport-response-user');
101
+ assert.equal(response.jwt, jwt);
102
+ }
103
+ assert.equal(authenticate.mock.callCount(), 4);
104
+ assert.equal(fromOauthCode.mock.callCount(), 1);
105
+ } finally {
106
+ fromOauthCode.mock.restore();
107
+ authenticate.mock.restore();
108
+ }
109
+ },
110
+ { instanceName },
111
+ );
112
+ }
113
+ });
114
+
115
+ it('OpenAPI exposes a required nullable table identity on current and every Passport/JWT response', async () => {
116
+ await app.bean.executor.mockCtx(async () => {
117
+ const actions = [
118
+ ['current', 'get'],
119
+ ['register', 'post'],
120
+ ['login', 'post'],
121
+ ['associate', 'get'],
122
+ ['migrate', 'get'],
123
+ ['createPassportJwtFromOauthCode', 'post'],
124
+ ] as const;
125
+ for (const [action, method] of actions) {
126
+ const doc = await app.bean.openapi.generateJsonOfControllerAction(
127
+ ControllerPassport,
128
+ action,
129
+ 'V31',
130
+ );
131
+ const resolve = (schema: SchemaObject): SchemaObject => {
132
+ if (!schema.$ref) return schema;
133
+ const resolved =
134
+ doc.components?.schemas?.[schema.$ref.replace('#/components/schemas/', '')];
135
+ assert.ok(resolved);
136
+ return resolve(resolved as SchemaObject);
137
+ };
138
+ const operation = Object.values(doc.paths ?? {}).find(item => item?.[method])?.[method];
139
+ assert.ok(operation);
140
+ const response = operation.responses?.['200'];
141
+ assert.ok(response && 'content' in response);
142
+ const body = resolve(response.content?.['application/json']?.schema as SchemaObject);
143
+ assert.ok(body.properties?.data);
144
+ const data = resolve(body.properties.data as SchemaObject);
145
+ const passport =
146
+ action === 'current' ? data : resolve(data.properties?.passport as SchemaObject);
147
+ assert.ok(passport.required?.includes('instanceId'));
148
+ const instanceId = resolve(passport.properties?.instanceId as SchemaObject);
149
+ const user = resolve(passport.properties?.user as SchemaObject);
150
+ const userId = resolve(user.properties?.id as SchemaObject);
151
+ const types = (schema: SchemaObject): string[] => {
152
+ if (schema.anyOf)
153
+ return schema.anyOf.flatMap(item => types(resolve(item as SchemaObject)));
154
+ return Array.isArray(schema.type) ? schema.type : schema.type ? [schema.type] : [];
155
+ };
156
+ const instanceTypes = types(instanceId);
157
+ assert.ok(instanceTypes.includes('null'));
158
+ assert.deepEqual(
159
+ instanceTypes.filter(type => type !== 'null').sort(),
160
+ types(userId).sort(),
161
+ );
162
+ assert.equal(user.properties?.instanceId, undefined);
163
+ if (operation.requestBody && 'content' in operation.requestBody) {
164
+ const request = resolve(
165
+ operation.requestBody.content['application/json'].schema as SchemaObject,
166
+ );
167
+ assert.equal(request.properties?.instanceId, undefined);
168
+ }
169
+ }
170
+ });
171
+ });
172
+ });
@@ -23,6 +23,7 @@ describe('role.test.ts', { concurrency: false }, () => {
23
23
 
24
24
  await app.bean.passport.signinMock();
25
25
  const passport = await app.bean.executor.performAction('get', '/home/user/passport/current');
26
+ assert.equal(passport.instanceId, app.ctx.instance.id);
26
27
  const passportRegisteredUser = passport.roles.find(
27
28
  (role: any) => role.name === 'registeredUser',
28
29
  );
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-a-rbac",
3
- "version": "5.0.10",
3
+ "version": "5.0.11",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "Vona Module"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-suite-a-cabloy",
3
- "version": "5.1.61",
3
+ "version": "5.1.62",
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.10",
13
+ "vona-module-a-rbac": "^5.0.11",
14
14
  "vona-module-a-socket": "workspace:^",
15
15
  "vona-module-a-ssr": "workspace:^",
16
16
  "vona-module-a-ssrhmr": "workspace:^"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-a-openapi",
3
- "version": "5.1.23",
3
+ "version": "5.1.24",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "",
6
6
  "keywords": [
@@ -14,6 +14,7 @@ export interface ISchemaObjectExtensionFieldRestProps {
14
14
  order?: number;
15
15
  disableNotifyChanged?: boolean;
16
16
  readonly?: boolean;
17
+ draft?: boolean;
17
18
  required?: boolean;
18
19
  }
19
20
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-a-permission",
3
- "version": "5.1.26",
3
+ "version": "5.1.27",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "",
6
6
  "keywords": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-suite-a-vona",
3
- "version": "5.1.97",
3
+ "version": "5.1.98",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "",
6
6
  "author": "",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-cli",
3
- "version": "1.2.111",
3
+ "version": "1.2.112",
4
4
  "gitHead": "6f675a8cc46d596142c591c28a40cc4d82fcc6cc",
5
5
  "description": "zova cli",
6
6
  "keywords": [
@@ -44,7 +44,7 @@
44
44
  "@cabloy/process-helper": "^3.1.8",
45
45
  "fs-extra": "^11.3.5",
46
46
  "semver": "^7.6.2",
47
- "zova-cli-set-front": "^1.2.109"
47
+ "zova-cli-set-front": "^1.2.110"
48
48
  },
49
49
  "devDependencies": {
50
50
  "clean-package": "^2.2.0",
@@ -19,6 +19,7 @@ import {
19
19
  import {
20
20
  schemaRenderColumn,
21
21
  schemaRenderDisableNotifyChanged,
22
+ schemaRenderDraft,
22
23
  schemaRenderFieldSource,
23
24
  schemaRenderLayout,
24
25
  schemaRenderOnEffect,
@@ -32,6 +33,7 @@ export const ZovaRender = {
32
33
  layout: schemaRenderLayout,
33
34
  visible: schemaRenderVisible,
34
35
  readonly: schemaRenderReadonly,
36
+ draft: schemaRenderDraft,
35
37
  order: schemaRenderOrder,
36
38
  disableNotifyChanged: schemaRenderDisableNotifyChanged,
37
39
  onEffect: schemaRenderOnEffect,
@@ -41,6 +41,15 @@ export function schemaRenderReadonly<T extends z.ZodType>(
41
41
  };
42
42
  }
43
43
 
44
+ export function schemaRenderDraft<T extends z.ZodType>(
45
+ enabled: boolean = true,
46
+ scene?: TypeFormSchemaScene,
47
+ ) {
48
+ return function (schema: T): T {
49
+ return _generalSchemaRest(schema, { draft: enabled }, scene);
50
+ };
51
+ }
52
+
44
53
  export function schemaRenderDisableNotifyChanged<T extends z.ZodType>(
45
54
  disableNotifyChanged: boolean = true,
46
55
  scene?: TypeSchemaScene,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-cli-set-front",
3
- "version": "1.2.109",
3
+ "version": "1.2.110",
4
4
  "gitHead": "6f675a8cc46d596142c591c28a40cc4d82fcc6cc",
5
5
  "description": "zova cli-set-front",
6
6
  "keywords": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova",
3
- "version": "5.1.167",
3
+ "version": "5.1.169",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "A vue3 framework with ioc",
6
6
  "keywords": [
@@ -46,7 +46,7 @@
46
46
  },
47
47
  "dependencies": {
48
48
  "zova-core": "^5.1.92",
49
- "zova-suite-a-zova": "^5.1.166"
49
+ "zova-suite-a-zova": "^5.1.168"
50
50
  },
51
51
  "devDependencies": {
52
52
  "clean-package": "^2.2.0",
@@ -106,14 +106,14 @@ declare module 'zova-module-home-api' {
106
106
  }
107
107
  /** api: end */
108
108
  /** api: begin */
109
- import { ApiCaptcha } from '../api/captcha.js';
110
- import { ApiHome } from '../api/home.js';
111
- import { ApiHomeBaseMenu } from '../api/homeBaseMenu.js';
112
- import { ApiHomeBasePermission } from '../api/homeBasePermission.js';
113
- import { ApiHomeBaseSiteCatalog } from '../api/homeBaseSiteCatalog.js';
114
- import { ApiHomeUserAccount } from '../api/homeUserAccount.js';
115
- import { ApiHomeUserPassport } from '../api/homeUserPassport.js';
116
- import { ApiTestSsrToolOne } from '../api/testSsrToolOne.js';
109
+ import type { ApiCaptcha } from '../api/captcha.js';
110
+ import type { ApiHome } from '../api/home.js';
111
+ import type { ApiHomeBaseMenu } from '../api/homeBaseMenu.js';
112
+ import type { ApiHomeBasePermission } from '../api/homeBasePermission.js';
113
+ import type { ApiHomeBaseSiteCatalog } from '../api/homeBaseSiteCatalog.js';
114
+ import type { ApiHomeUserAccount } from '../api/homeUserAccount.js';
115
+ import type { ApiHomeUserPassport } from '../api/homeUserPassport.js';
116
+ import type { ApiTestSsrToolOne } from '../api/testSsrToolOne.js';
117
117
  export interface IModuleApi {
118
118
  'captcha': ApiCaptcha;
119
119
  'home': ApiHome;
@@ -251,14 +251,14 @@ declare module 'zova-module-home-api' {
251
251
  }
252
252
  /** apiSchema: end */
253
253
  /** apiSchema: begin */
254
- import { ApiSchemaCaptcha } from '../apiSchema/captcha.js';
255
- import { ApiSchemaHome } from '../apiSchema/home.js';
256
- import { ApiSchemaHomeBaseMenu } from '../apiSchema/homeBaseMenu.js';
257
- import { ApiSchemaHomeBasePermission } from '../apiSchema/homeBasePermission.js';
258
- import { ApiSchemaHomeBaseSiteCatalog } from '../apiSchema/homeBaseSiteCatalog.js';
259
- import { ApiSchemaHomeUserAccount } from '../apiSchema/homeUserAccount.js';
260
- import { ApiSchemaHomeUserPassport } from '../apiSchema/homeUserPassport.js';
261
- import { ApiSchemaTestSsrToolOne } from '../apiSchema/testSsrToolOne.js';
254
+ import type { ApiSchemaCaptcha } from '../apiSchema/captcha.js';
255
+ import type { ApiSchemaHome } from '../apiSchema/home.js';
256
+ import type { ApiSchemaHomeBaseMenu } from '../apiSchema/homeBaseMenu.js';
257
+ import type { ApiSchemaHomeBasePermission } from '../apiSchema/homeBasePermission.js';
258
+ import type { ApiSchemaHomeBaseSiteCatalog } from '../apiSchema/homeBaseSiteCatalog.js';
259
+ import type { ApiSchemaHomeUserAccount } from '../apiSchema/homeUserAccount.js';
260
+ import type { ApiSchemaHomeUserPassport } from '../apiSchema/homeUserPassport.js';
261
+ import type { ApiSchemaTestSsrToolOne } from '../apiSchema/testSsrToolOne.js';
262
262
  export interface IModuleApiSchema {
263
263
  'captcha': ApiSchemaCaptcha;
264
264
  'home': ApiSchemaHome;
@@ -313,7 +313,7 @@ declare module 'zova-module-home-api' {
313
313
  }
314
314
  /** service: end */
315
315
  /** service: begin */
316
- import { ServiceJwtAdapter } from '../service/jwtAdapter.js';
316
+ import type { ServiceJwtAdapter } from '../service/jwtAdapter.js';
317
317
  import 'zova';
318
318
  declare module 'zova' {
319
319
  export interface IBeanRecordGeneral {
@@ -6,6 +6,42 @@ export type ApiSchemaTestVonaDtoUserCreate = components['schemas']['test-vona.dt
6
6
  export type ApiSchemaTestVonaDtoUserCreatePartial = Partial<ApiSchemaTestVonaDtoUserCreate>;
7
7
  export type ApiSchemaTestVonaEntityProduct = components['schemas']['test-vona.entity.product'];
8
8
  export type ApiSchemaTestVonaEntityProductPartial = Partial<ApiSchemaTestVonaEntityProduct>;
9
+ export type ApiSchemaAImageDtoImageUploadPolicyResponse =
10
+ components['schemas']['a-image.dto.imageUploadPolicyResponse'];
11
+ export type ApiSchemaAImageDtoImageUploadPolicyResponsePartial =
12
+ Partial<ApiSchemaAImageDtoImageUploadPolicyResponse>;
13
+ export type ApiSchemaAImageDtoImageUploadPolicyRequest =
14
+ components['schemas']['a-image.dto.imageUploadPolicyRequest'];
15
+ export type ApiSchemaAImageDtoImageUploadPolicyRequestPartial =
16
+ Partial<ApiSchemaAImageDtoImageUploadPolicyRequest>;
17
+ export type ApiSchemaAImageDtoImageUploadResponse =
18
+ components['schemas']['a-image.dto.imageUploadResponse'];
19
+ export type ApiSchemaAImageDtoImageUploadResponsePartial =
20
+ Partial<ApiSchemaAImageDtoImageUploadResponse>;
21
+ export type ApiSchemaAImageDtoImageDirectUploadResponse =
22
+ components['schemas']['a-image.dto.imageDirectUploadResponse'];
23
+ export type ApiSchemaAImageDtoImageDirectUploadResponsePartial =
24
+ Partial<ApiSchemaAImageDtoImageDirectUploadResponse>;
25
+ export type ApiSchemaAImageDtoImageDirectUploadRequest =
26
+ components['schemas']['a-image.dto.imageDirectUploadRequest'];
27
+ export type ApiSchemaAImageDtoImageDirectUploadRequestPartial =
28
+ Partial<ApiSchemaAImageDtoImageDirectUploadRequest>;
29
+ export type ApiSchemaAImageDtoImageDirectUploadFinalizeResponse =
30
+ components['schemas']['a-image.dto.imageDirectUploadFinalizeResponse'];
31
+ export type ApiSchemaAImageDtoImageDirectUploadFinalizeResponsePartial =
32
+ Partial<ApiSchemaAImageDtoImageDirectUploadFinalizeResponse>;
33
+ export type ApiSchemaAImageDtoImageDirectUploadFinalizeRequest =
34
+ components['schemas']['a-image.dto.imageDirectUploadFinalizeRequest'];
35
+ export type ApiSchemaAImageDtoImageDirectUploadFinalizeRequestPartial =
36
+ Partial<ApiSchemaAImageDtoImageDirectUploadFinalizeRequest>;
37
+ export type ApiSchemaAImageDtoImageUploadUrlRequest =
38
+ components['schemas']['a-image.dto.imageUploadUrlRequest'];
39
+ export type ApiSchemaAImageDtoImageUploadUrlRequestPartial =
40
+ Partial<ApiSchemaAImageDtoImageUploadUrlRequest>;
41
+ export type ApiSchemaAImageDtoImageTransformOptions_2d063d28bc7243bed02ebd8bddf1212a93c6305b =
42
+ components['schemas']['a-image.dto.imageTransformOptions_2d063d28bc7243bed02ebd8bddf1212a93c6305b'];
43
+ export type ApiSchemaAImageDtoImageTransformOptions_2d063d28bc7243bed02ebd8bddf1212a93c6305bPartial =
44
+ Partial<ApiSchemaAImageDtoImageTransformOptions_2d063d28bc7243bed02ebd8bddf1212a93c6305b>;
9
45
  export type ApiSchemaACaptchaDtoCaptchaData = components['schemas']['a-captcha.dto.captchaData'];
10
46
  export type ApiSchemaACaptchaDtoCaptchaDataPartial = Partial<ApiSchemaACaptchaDtoCaptchaData>;
11
47
  export type ApiSchemaAPayDtoPaymentSessionView =
@@ -43,42 +79,6 @@ export type ApiSchemaCommerceMemberDtoAddressView_2d063d28bc7243bed02ebd8bddf121
43
79
  components['schemas']['commerce-member.dto.addressView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_425dbecccd52e19e24888f99e1b1670233afa875'];
44
80
  export type ApiSchemaCommerceMemberDtoAddressView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_425dbecccd52e19e24888f99e1b1670233afa875Partial =
45
81
  Partial<ApiSchemaCommerceMemberDtoAddressView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_425dbecccd52e19e24888f99e1b1670233afa875>;
46
- export type ApiSchemaAImageDtoImageUploadPolicyResponse =
47
- components['schemas']['a-image.dto.imageUploadPolicyResponse'];
48
- export type ApiSchemaAImageDtoImageUploadPolicyResponsePartial =
49
- Partial<ApiSchemaAImageDtoImageUploadPolicyResponse>;
50
- export type ApiSchemaAImageDtoImageUploadPolicyRequest =
51
- components['schemas']['a-image.dto.imageUploadPolicyRequest'];
52
- export type ApiSchemaAImageDtoImageUploadPolicyRequestPartial =
53
- Partial<ApiSchemaAImageDtoImageUploadPolicyRequest>;
54
- export type ApiSchemaAImageDtoImageUploadResponse =
55
- components['schemas']['a-image.dto.imageUploadResponse'];
56
- export type ApiSchemaAImageDtoImageUploadResponsePartial =
57
- Partial<ApiSchemaAImageDtoImageUploadResponse>;
58
- export type ApiSchemaAImageDtoImageDirectUploadResponse =
59
- components['schemas']['a-image.dto.imageDirectUploadResponse'];
60
- export type ApiSchemaAImageDtoImageDirectUploadResponsePartial =
61
- Partial<ApiSchemaAImageDtoImageDirectUploadResponse>;
62
- export type ApiSchemaAImageDtoImageDirectUploadRequest =
63
- components['schemas']['a-image.dto.imageDirectUploadRequest'];
64
- export type ApiSchemaAImageDtoImageDirectUploadRequestPartial =
65
- Partial<ApiSchemaAImageDtoImageDirectUploadRequest>;
66
- export type ApiSchemaAImageDtoImageDirectUploadFinalizeResponse =
67
- components['schemas']['a-image.dto.imageDirectUploadFinalizeResponse'];
68
- export type ApiSchemaAImageDtoImageDirectUploadFinalizeResponsePartial =
69
- Partial<ApiSchemaAImageDtoImageDirectUploadFinalizeResponse>;
70
- export type ApiSchemaAImageDtoImageDirectUploadFinalizeRequest =
71
- components['schemas']['a-image.dto.imageDirectUploadFinalizeRequest'];
72
- export type ApiSchemaAImageDtoImageDirectUploadFinalizeRequestPartial =
73
- Partial<ApiSchemaAImageDtoImageDirectUploadFinalizeRequest>;
74
- export type ApiSchemaAImageDtoImageUploadUrlRequest =
75
- components['schemas']['a-image.dto.imageUploadUrlRequest'];
76
- export type ApiSchemaAImageDtoImageUploadUrlRequestPartial =
77
- Partial<ApiSchemaAImageDtoImageUploadUrlRequest>;
78
- export type ApiSchemaAImageDtoImageTransformOptions_2d063d28bc7243bed02ebd8bddf1212a93c6305b =
79
- components['schemas']['a-image.dto.imageTransformOptions_2d063d28bc7243bed02ebd8bddf1212a93c6305b'];
80
- export type ApiSchemaAImageDtoImageTransformOptions_2d063d28bc7243bed02ebd8bddf1212a93c6305bPartial =
81
- Partial<ApiSchemaAImageDtoImageTransformOptions_2d063d28bc7243bed02ebd8bddf1212a93c6305b>;
82
82
  export type ApiSchemaHomeUserDtoAccountCurrent =
83
83
  components['schemas']['home-user.dto.accountCurrent'];
84
84
  export type ApiSchemaHomeUserDtoAccountCurrentPartial = Partial<ApiSchemaHomeUserDtoAccountCurrent>;
@@ -302,10 +302,10 @@ export type ApiSchemaCommerceTradeEntityStockBalance =
302
302
  components['schemas']['commerce-trade.entity.stockBalance'];
303
303
  export type ApiSchemaCommerceTradeEntityStockBalancePartial =
304
304
  Partial<ApiSchemaCommerceTradeEntityStockBalance>;
305
- export type ApiSchemaCommerceTradeDtoStockAdjust_0aab216abd3467dd07f61c69172266c2441af477 =
306
- components['schemas']['commerce-trade.dto.stockAdjust_0aab216abd3467dd07f61c69172266c2441af477'];
307
- export type ApiSchemaCommerceTradeDtoStockAdjust_0aab216abd3467dd07f61c69172266c2441af477Partial =
308
- Partial<ApiSchemaCommerceTradeDtoStockAdjust_0aab216abd3467dd07f61c69172266c2441af477>;
305
+ export type ApiSchemaCommerceTradeDtoStockAdjust_6a7c2f0bb21a25da3048650f263577ae4467750e =
306
+ components['schemas']['commerce-trade.dto.stockAdjust_6a7c2f0bb21a25da3048650f263577ae4467750e'];
307
+ export type ApiSchemaCommerceTradeDtoStockAdjust_6a7c2f0bb21a25da3048650f263577ae4467750ePartial =
308
+ Partial<ApiSchemaCommerceTradeDtoStockAdjust_6a7c2f0bb21a25da3048650f263577ae4467750e>;
309
309
  export type ApiSchemaCommerceTradeDtoStockBalanceSelectRes =
310
310
  components['schemas']['commerce-trade.dto.stockBalanceSelectRes'];
311
311
  export type ApiSchemaCommerceTradeDtoStockBalanceSelectResPartial =
@@ -366,10 +366,10 @@ export type ApiSchemaCommerceCatalogDtoProductPublicDetail_2d063d28bc7243bed02eb
366
366
  components['schemas']['commerce-catalog.dto.productPublicDetail_2d063d28bc7243bed02ebd8bddf1212a93c6305b'];
367
367
  export type ApiSchemaCommerceCatalogDtoProductPublicDetail_2d063d28bc7243bed02ebd8bddf1212a93c6305bPartial =
368
368
  Partial<ApiSchemaCommerceCatalogDtoProductPublicDetail_2d063d28bc7243bed02ebd8bddf1212a93c6305b>;
369
- export type ApiSchemaCommerceCatalogDtoProductView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_9a6ea970b2f00d574b88030d8c96cbf7b1e699d7 =
370
- components['schemas']['commerce-catalog.dto.productView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_9a6ea970b2f00d574b88030d8c96cbf7b1e699d7'];
371
- export type ApiSchemaCommerceCatalogDtoProductView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_9a6ea970b2f00d574b88030d8c96cbf7b1e699d7Partial =
372
- Partial<ApiSchemaCommerceCatalogDtoProductView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_9a6ea970b2f00d574b88030d8c96cbf7b1e699d7>;
369
+ export type ApiSchemaCommerceCatalogDtoProductView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_a2f92cabb46b0630848b50414c0d4c60efb47a57 =
370
+ components['schemas']['commerce-catalog.dto.productView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_a2f92cabb46b0630848b50414c0d4c60efb47a57'];
371
+ export type ApiSchemaCommerceCatalogDtoProductView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_a2f92cabb46b0630848b50414c0d4c60efb47a57Partial =
372
+ Partial<ApiSchemaCommerceCatalogDtoProductView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_a2f92cabb46b0630848b50414c0d4c60efb47a57>;
373
373
  export type ApiSchemaCommerceCatalogDtoProductUpdate =
374
374
  components['schemas']['commerce-catalog.dto.productUpdate'];
375
375
  export type ApiSchemaCommerceCatalogDtoProductUpdatePartial =
@@ -435,10 +435,10 @@ export type ApiSchemaAImageDtoImageView = components['schemas']['a-image.dto.ima
435
435
  export type ApiSchemaAImageDtoImageViewPartial = Partial<ApiSchemaAImageDtoImageView>;
436
436
  export type ApiSchemaAFileDtoFileView = components['schemas']['a-file.dto.fileView'];
437
437
  export type ApiSchemaAFileDtoFileViewPartial = Partial<ApiSchemaAFileDtoFileView>;
438
- export type ApiSchemaTrainingRecordDtoRecordView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_425dbecccd52e19e24888f99e1b1670233afa875 =
439
- components['schemas']['training-record.dto.recordView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_425dbecccd52e19e24888f99e1b1670233afa875'];
440
- export type ApiSchemaTrainingRecordDtoRecordView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_425dbecccd52e19e24888f99e1b1670233afa875Partial =
441
- Partial<ApiSchemaTrainingRecordDtoRecordView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_425dbecccd52e19e24888f99e1b1670233afa875>;
438
+ export type ApiSchemaTrainingRecordDtoRecordView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_7d715789d9643740a04e8a6c0f6fb951884bc347 =
439
+ components['schemas']['training-record.dto.recordView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_7d715789d9643740a04e8a6c0f6fb951884bc347'];
440
+ export type ApiSchemaTrainingRecordDtoRecordView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_7d715789d9643740a04e8a6c0f6fb951884bc347Partial =
441
+ Partial<ApiSchemaTrainingRecordDtoRecordView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_7d715789d9643740a04e8a6c0f6fb951884bc347>;
442
442
  export type ApiSchemaTrainingRecordDtoRecordUpdate =
443
443
  components['schemas']['training-record.dto.recordUpdate'];
444
444
  export type ApiSchemaTrainingRecordDtoRecordUpdatePartial =
@@ -463,10 +463,10 @@ export type ApiSchemaAImageDtoImageView_a83c3e638bca4b30ec8675860cdc52d66f6a16d1
463
463
  components['schemas']['a-image.dto.imageView_a83c3e638bca4b30ec8675860cdc52d66f6a16d1_2d063d28bc7243bed02ebd8bddf1212a93c6305b_efb37794d7c03c65122279f90d79919f009c34e5_1816ff740d81c738ec055c7038bbd93beb9405a7_537cd6552a384183a9457fb6a920bbae337277f6'];
464
464
  export type ApiSchemaAImageDtoImageView_a83c3e638bca4b30ec8675860cdc52d66f6a16d1_2d063d28bc7243bed02ebd8bddf1212a93c6305b_efb37794d7c03c65122279f90d79919f009c34e5_1816ff740d81c738ec055c7038bbd93beb9405a7_537cd6552a384183a9457fb6a920bbae337277f6Partial =
465
465
  Partial<ApiSchemaAImageDtoImageView_a83c3e638bca4b30ec8675860cdc52d66f6a16d1_2d063d28bc7243bed02ebd8bddf1212a93c6305b_efb37794d7c03c65122279f90d79919f009c34e5_1816ff740d81c738ec055c7038bbd93beb9405a7_537cd6552a384183a9457fb6a920bbae337277f6>;
466
- export type ApiSchemaTrainingStudentDtoStudentView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_4e7e5941f704425ce1be04de1885c36427ccc436 =
467
- components['schemas']['training-student.dto.studentView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_4e7e5941f704425ce1be04de1885c36427ccc436'];
468
- export type ApiSchemaTrainingStudentDtoStudentView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_4e7e5941f704425ce1be04de1885c36427ccc436Partial =
469
- Partial<ApiSchemaTrainingStudentDtoStudentView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_4e7e5941f704425ce1be04de1885c36427ccc436>;
466
+ export type ApiSchemaTrainingStudentDtoStudentView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_4826fc678e47603ec467782ddb0d02463792cd60 =
467
+ components['schemas']['training-student.dto.studentView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_4826fc678e47603ec467782ddb0d02463792cd60'];
468
+ export type ApiSchemaTrainingStudentDtoStudentView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_4826fc678e47603ec467782ddb0d02463792cd60Partial =
469
+ Partial<ApiSchemaTrainingStudentDtoStudentView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_4826fc678e47603ec467782ddb0d02463792cd60>;
470
470
  export type ApiSchemaTrainingStudentDtoStudentUpdate =
471
471
  components['schemas']['training-student.dto.studentUpdate'];
472
472
  export type ApiSchemaTrainingStudentDtoStudentUpdatePartial =
@@ -475,6 +475,10 @@ export type ApiSchemaTrainingStudentDtoStudentSummary_2d063d28bc7243bed02ebd8bdd
475
475
  components['schemas']['training-student.dto.studentSummary_2d063d28bc7243bed02ebd8bddf1212a93c6305b'];
476
476
  export type ApiSchemaTrainingStudentDtoStudentSummary_2d063d28bc7243bed02ebd8bddf1212a93c6305bPartial =
477
477
  Partial<ApiSchemaTrainingStudentDtoStudentSummary_2d063d28bc7243bed02ebd8bddf1212a93c6305b>;
478
+ export type ApiSchemaTrainingStudentDtoStudentDeleteBulk =
479
+ components['schemas']['training-student.dto.studentDeleteBulk'];
480
+ export type ApiSchemaTrainingStudentDtoStudentDeleteBulkPartial =
481
+ Partial<ApiSchemaTrainingStudentDtoStudentDeleteBulk>;
478
482
  export type ApiSchemaBasicMetricsDtoMetricsSnapshot =
479
483
  components['schemas']['basic-metrics.dto.metricsSnapshot'];
480
484
  export type ApiSchemaBasicMetricsDtoMetricsSnapshotPartial =
@@ -487,6 +491,18 @@ export type ApiSchemaBasicMetricsDtoMetricsQueue =
487
491
  components['schemas']['basic-metrics.dto.metricsQueue'];
488
492
  export type ApiSchemaBasicMetricsDtoMetricsQueuePartial =
489
493
  Partial<ApiSchemaBasicMetricsDtoMetricsQueue>;
494
+ export type ApiSchemaALayoutprofileDtoLayoutProfile_2d063d28bc7243bed02ebd8bddf1212a93c6305b =
495
+ components['schemas']['a-layoutprofile.dto.layoutProfile_2d063d28bc7243bed02ebd8bddf1212a93c6305b'];
496
+ export type ApiSchemaALayoutprofileDtoLayoutProfile_2d063d28bc7243bed02ebd8bddf1212a93c6305bPartial =
497
+ Partial<ApiSchemaALayoutprofileDtoLayoutProfile_2d063d28bc7243bed02ebd8bddf1212a93c6305b>;
498
+ export type ApiSchemaALayoutprofileDtoLayoutProfile =
499
+ components['schemas']['a-layoutprofile.dto.layoutProfile'];
500
+ export type ApiSchemaALayoutprofileDtoLayoutProfilePartial =
501
+ Partial<ApiSchemaALayoutprofileDtoLayoutProfile>;
502
+ export type ApiSchemaALayoutprofileDtoLayoutProfileSave =
503
+ components['schemas']['a-layoutprofile.dto.layoutProfileSave'];
504
+ export type ApiSchemaALayoutprofileDtoLayoutProfileSavePartial =
505
+ Partial<ApiSchemaALayoutprofileDtoLayoutProfileSave>;
490
506
  export type ApiSchemaAFileDtoFileUploadPolicyResponse =
491
507
  components['schemas']['a-file.dto.fileUploadPolicyResponse'];
492
508
  export type ApiSchemaAFileDtoFileUploadPolicyResponsePartial =