cabloy 5.1.102 → 5.1.104

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 (138) hide show
  1. package/.cabloy-version +1 -1
  2. package/CHANGELOG.md +47 -0
  3. package/CLAUDE.local.md +4 -0
  4. package/cabloy-docs/.vitepress/config.mjs +3 -0
  5. package/cabloy-docs/backend/file-guide.md +148 -0
  6. package/cabloy-docs/backend/image-guide.md +40 -40
  7. package/cabloy-docs/backend/jwt-guide.md +21 -0
  8. package/cabloy-docs/frontend/a-model-under-the-hood.md +26 -4
  9. package/cabloy-docs/frontend/file-guide.md +147 -0
  10. package/cabloy-docs/frontend/image-guide.md +18 -9
  11. package/cabloy-docs/frontend/model-architecture.md +1 -1
  12. package/cabloy-docs/frontend/model-state-guide.md +132 -16
  13. package/cabloy-docs/frontend/ssr-init-data.md +12 -1
  14. package/cabloy-docs/frontend/use-state-data-best-practices.md +54 -0
  15. package/cabloy-docs/fullstack/file-workflow.md +135 -0
  16. package/cabloy-docs/fullstack/image-workflow.md +12 -3
  17. package/package.json +1 -1
  18. package/vona/packages-vona/vona/package.json +1 -1
  19. package/vona/pnpm-lock.yaml +23 -23
  20. package/vona/src/suite/a-home/modules/home-user/src/controller/passport.ts +7 -7
  21. package/vona/src/suite/a-training/modules/training-record/src/.metadata/index.ts +30 -4
  22. package/vona/src/suite/a-training/modules/training-record/src/bean/fileScene.dossierFile.ts +1 -1
  23. package/vona/src/suite/a-training/modules/training-record/src/bean/imageScene.sceneImage.ts +1 -0
  24. package/vona/src/suite/a-training/modules/training-record/src/dto/recordSelectResItem.tsx +8 -6
  25. package/vona/src/suite/a-training/modules/training-record/src/dto/recordView.tsx +8 -6
  26. package/vona/src/suite/a-training/modules/training-record/src/index.ts +0 -1
  27. package/vona/src/suite/a-training/modules/training-record/src/lib/index.ts +0 -1
  28. package/vona/src/suite/a-training/modules/training-record/test/record.test.ts +10 -12
  29. package/vona/src/suite/a-training/modules/training-student/src/bean/imageScene.studentImage.ts +1 -0
  30. package/vona/src/suite/a-training/modules/training-student/src/dto/detailRecordBase.tsx +9 -10
  31. package/vona/src/suite/a-training/modules/training-student/test/student.test.ts +2 -2
  32. package/vona/src/suite-vendor/a-file/modules/a-file/package.json +3 -2
  33. package/vona/src/suite-vendor/a-file/modules/a-file/src/.metadata/index.ts +155 -35
  34. package/vona/src/suite-vendor/a-file/modules/a-file/src/bean/bean.file.ts +283 -54
  35. package/vona/src/suite-vendor/a-file/modules/a-file/src/bean/bean.fileUploadPolicy.ts +46 -63
  36. package/vona/src/suite-vendor/a-file/modules/a-file/src/bean/meta.index.ts +12 -0
  37. package/vona/src/suite-vendor/a-file/modules/a-file/src/bean/meta.redlock.ts +1 -1
  38. package/vona/src/suite-vendor/a-file/modules/a-file/src/bean/meta.version.ts +3 -0
  39. package/vona/src/suite-vendor/a-file/modules/a-file/src/bean/schedule.fileDraftPrune.ts +29 -0
  40. package/vona/src/suite-vendor/a-file/modules/a-file/src/bean/serializerTransform.resolveView.ts +45 -0
  41. package/vona/src/suite-vendor/a-file/modules/a-file/src/bean/serializerTransform.resolveViews.ts +45 -0
  42. package/vona/src/suite-vendor/a-file/modules/a-file/src/config/config.ts +6 -0
  43. package/vona/src/suite-vendor/a-file/modules/a-file/src/controller/file.ts +64 -56
  44. package/vona/src/suite-vendor/a-file/modules/a-file/src/dto/fileDirectUploadFinalizeRequest.ts +13 -0
  45. package/vona/src/suite-vendor/a-file/modules/a-file/src/dto/fileDirectUploadFinalizeResponse.ts +10 -0
  46. package/vona/src/suite-vendor/a-file/modules/a-file/src/dto/fileDirectUploadRequest.ts +0 -3
  47. package/vona/src/suite-vendor/a-file/modules/a-file/src/dto/fileDirectUploadResponse.ts +2 -14
  48. package/vona/src/suite-vendor/a-file/modules/a-file/src/dto/fileDownloadRequest.ts +3 -0
  49. package/vona/src/suite-vendor/a-file/modules/a-file/src/dto/fileUploadPolicyResponse.ts +3 -0
  50. package/vona/src/suite-vendor/a-file/modules/a-file/src/dto/fileUploadResponse.ts +0 -25
  51. package/vona/src/{suite/a-training/modules/training-record/src/dto/recordDossierFileView.ts → suite-vendor/a-file/modules/a-file/src/dto/fileView.ts} +3 -15
  52. package/vona/src/suite-vendor/a-file/modules/a-file/src/entity/file.ts +10 -0
  53. package/vona/src/suite-vendor/a-file/modules/a-file/src/lib/fileUploadUrl.ts +329 -0
  54. package/vona/src/suite-vendor/a-file/modules/a-file/src/lib/index.ts +1 -0
  55. package/vona/src/suite-vendor/a-file/modules/a-file/src/types/file.ts +51 -10
  56. package/vona/src/suite-vendor/a-file/modules/a-file/src/types/fileProvider.ts +8 -3
  57. package/vona/src/suite-vendor/a-file/modules/a-file/src/types/fileScene.ts +1 -1
  58. package/vona/src/suite-vendor/a-file/modules/file-cloudflare/package.json +1 -1
  59. package/vona/src/suite-vendor/a-file/modules/file-cloudflare/src/bean/fileProvider.cloudflare.ts +12 -4
  60. package/vona/src/suite-vendor/a-file/modules/file-cloudflare/src/service/fileCloudflare.ts +52 -18
  61. package/vona/src/suite-vendor/a-file/modules/file-native/package.json +1 -1
  62. package/vona/src/suite-vendor/a-file/modules/file-native/src/bean/fileProvider.native.ts +5 -5
  63. package/vona/src/suite-vendor/a-file/modules/file-native/src/service/fileNative.ts +7 -8
  64. package/vona/src/suite-vendor/a-file/package.json +4 -4
  65. package/vona/src/suite-vendor/a-image/modules/a-image/package.json +1 -1
  66. package/vona/src/suite-vendor/a-image/modules/a-image/src/.metadata/index.ts +16 -19
  67. package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/bean.image.ts +99 -74
  68. package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/bean.imageUploadPolicy.ts +28 -68
  69. package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/meta.version.ts +1 -1
  70. package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/serializerTransform.resolveView.ts +3 -0
  71. package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/serializerTransform.resolveViews.ts +3 -0
  72. package/vona/src/suite-vendor/a-image/modules/a-image/src/config/config.ts +4 -0
  73. package/vona/src/suite-vendor/a-image/modules/a-image/src/controller/image.ts +78 -34
  74. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageDeliveryRequest.ts +3 -0
  75. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageDirectUploadRequest.ts +0 -3
  76. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageDirectUploadResponse.ts +1 -27
  77. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageUploadPolicyResponse.ts +6 -0
  78. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageUploadResponse.ts +2 -36
  79. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageUploadUrlRequest.ts +0 -3
  80. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageView.ts +4 -27
  81. package/vona/src/suite-vendor/a-image/modules/a-image/src/entity/image.ts +1 -1
  82. package/vona/src/suite-vendor/a-image/modules/a-image/src/types/image.ts +36 -29
  83. package/vona/src/suite-vendor/a-image/modules/a-image/src/types/imageProvider.ts +4 -4
  84. package/vona/src/suite-vendor/a-image/modules/a-image/src/types/imageScene.ts +1 -0
  85. package/vona/src/suite-vendor/a-image/modules/image-cloudflare/package.json +1 -1
  86. package/vona/src/suite-vendor/a-image/modules/image-cloudflare/src/bean/imageProvider.cloudflare.ts +8 -11
  87. package/vona/src/suite-vendor/a-image/modules/image-cloudflare/src/lib/cloudflareImageUrl.ts +4 -16
  88. package/vona/src/suite-vendor/a-image/modules/image-cloudflare/src/service/imageCloudflare.ts +17 -16
  89. package/vona/src/suite-vendor/a-image/modules/image-native/package.json +2 -6
  90. package/vona/src/suite-vendor/a-image/modules/image-native/src/.metadata/index.ts +0 -37
  91. package/vona/src/suite-vendor/a-image/modules/image-native/src/bean/imageProvider.native.ts +13 -36
  92. package/vona/src/suite-vendor/a-image/modules/image-native/src/service/imageNative.ts +100 -113
  93. package/vona/src/suite-vendor/a-image/package.json +1 -1
  94. package/vona/src/suite-vendor/a-vona/modules/a-jwt/package.json +1 -1
  95. package/vona/src/suite-vendor/a-vona/modules/a-jwt/src/config/config.ts +3 -1
  96. package/vona/src/suite-vendor/a-vona/modules/a-jwt/src/service/jwtClient.ts +9 -4
  97. package/vona/src/suite-vendor/a-vona/modules/a-upload/package.json +1 -1
  98. package/vona/src/suite-vendor/a-vona/modules/a-upload/src/bean/interceptor.upload.ts +113 -64
  99. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  100. package/zova/packages-zova/zova/package.json +2 -2
  101. package/zova/src/suite/a-home/modules/home-api/src/api/openapi/schemas.ts +50 -12
  102. package/zova/src/suite/a-home/modules/home-api/src/api/openapi/types.ts +610 -114
  103. package/zova/src/suite/a-home/modules/home-passport/src/model/passport.ts +51 -2
  104. package/zova/src/suite/a-home/modules/home-passport/src/monkey.ts +17 -3
  105. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/schemas.ts +50 -12
  106. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/types.ts +610 -114
  107. package/zova/src/suite/cabloy-basic/modules/basic-file/src/.metadata/index.ts +16 -12
  108. package/zova/src/suite/cabloy-basic/modules/basic-file/src/api/file.ts +25 -25
  109. package/zova/src/suite/cabloy-basic/modules/basic-file/src/api/openapi/schemas.ts +18 -24
  110. package/zova/src/suite/cabloy-basic/modules/basic-file/src/api/openapi/types.ts +228 -291
  111. package/zova/src/suite/cabloy-basic/modules/basic-file/src/apiSchema/file.ts +5 -5
  112. package/zova/src/suite/cabloy-basic/modules/basic-file/src/bean/tableCell.file.tsx +23 -5
  113. package/zova/src/suite/cabloy-basic/modules/basic-file/src/component/formFieldFile/controller.tsx +72 -43
  114. package/zova/src/suite/cabloy-basic/modules/basic-file/src/lib/file.ts +22 -4
  115. package/zova/src/suite/cabloy-basic/modules/basic-image/src/.metadata/index.ts +16 -42
  116. package/zova/src/suite/cabloy-basic/modules/basic-image/src/api/image.ts +5 -25
  117. package/zova/src/suite/cabloy-basic/modules/basic-image/src/api/openapi/schemas.ts +10 -24
  118. package/zova/src/suite/cabloy-basic/modules/basic-image/src/api/openapi/types.ts +216 -333
  119. package/zova/src/suite/cabloy-basic/modules/basic-image/src/apiSchema/image.ts +0 -5
  120. package/zova/src/suite/cabloy-basic/modules/basic-image/src/bean/tableCell.image.tsx +38 -12
  121. package/zova/src/suite/cabloy-basic/modules/basic-image/src/component/formFieldImage/controller.tsx +79 -32
  122. package/zova/src/suite/cabloy-basic/modules/basic-image/src/lib/preview.ts +22 -4
  123. package/zova/src/suite/cabloy-basic/modules/basic-image/src/types/image.ts +3 -4
  124. package/zova/src/suite-vendor/a-zova/modules/a-model/package.json +1 -1
  125. package/zova/src/suite-vendor/a-zova/modules/a-model/src/bean/bean.model/bean.model.useState.ts +6 -6
  126. package/zova/src/suite-vendor/a-zova/modules/a-model/src/bean/bean.model/bean.model.useStateGeneral.ts +5 -5
  127. package/zova/src/suite-vendor/a-zova/modules/a-model/src/lib/utils.ts +29 -1
  128. package/zova/src/suite-vendor/a-zova/modules/a-model/src/monkey.ts +11 -2
  129. package/zova/src/suite-vendor/a-zova/modules/a-model/src/types/query.ts +3 -3
  130. package/zova/src/suite-vendor/a-zova/modules/a-routertabs/package.json +1 -1
  131. package/zova/src/suite-vendor/a-zova/modules/a-routertabs/src/model/tabs.ts +4 -4
  132. package/zova/src/suite-vendor/a-zova/package.json +3 -3
  133. package/vona/src/suite/a-training/modules/training-record/src/lib/resolveDossierFiles.ts +0 -34
  134. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageUploadTokenRequest.ts +0 -24
  135. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageUploadTokenResponse.ts +0 -16
  136. package/vona/src/suite-vendor/a-image/modules/image-native/src/controller/image.ts +0 -57
  137. package/zova/src/suite/cabloy-basic/modules/basic-image/src/api/imageNativeImage.ts +0 -31
  138. package/zova/src/suite/cabloy-basic/modules/basic-image/src/apiSchema/imageNativeImage.ts +0 -13
@@ -9,7 +9,7 @@ import type {
9
9
 
10
10
  import { combineQueries, isNil } from '@cabloy/utils';
11
11
  import { SchemaObject } from 'openapi3-ts/oas31';
12
- import { BeanModelBase, Model } from 'zova-module-a-model';
12
+ import { $QueryEnsureFresh, $QueryGetFresh, BeanModelBase, Model } from 'zova-module-a-model';
13
13
  import {
14
14
  IPermissionHintGeneral,
15
15
  IResourceFormActionRowNameRecord,
@@ -28,7 +28,9 @@ export class ModelPassport extends BeanModelBase {
28
28
  expireTime?: number;
29
29
  schemaLogin?: SchemaObject;
30
30
 
31
- protected async __init__() {
31
+ protected async __init__() {}
32
+
33
+ async appInitialize() {
32
34
  this.schemaLogin = this.$computed(() => {
33
35
  return this.apiSchemasLogin.requestBody;
34
36
  });
@@ -81,6 +83,41 @@ export class ModelPassport extends BeanModelBase {
81
83
  });
82
84
  }
83
85
 
86
+ getTempAuthToken(options: { path?: string; staleTime: number }) {
87
+ if (!process.env.CLIENT || !this.isAuthenticated) return;
88
+ return this.$useStateData({
89
+ queryKey: ['tempAuthToken', options.path],
90
+ queryFn: async () => {
91
+ return await this.$api.homeUserPassport.createTempAuthToken(undefined, {
92
+ query: { path: options.path },
93
+ });
94
+ },
95
+ staleTime: options.staleTime,
96
+ meta: {
97
+ disableSuspenseOnInit: true,
98
+ persister: false,
99
+ ssr: { dehydrate: false },
100
+ },
101
+ });
102
+ }
103
+
104
+ getFreshTempAuthToken(options: { path?: string; staleTime: number }): string | undefined {
105
+ return $QueryGetFresh(
106
+ () => this.getTempAuthToken(options),
107
+ query => this._isTempAuthTokenExpired(query.data, query.dataUpdatedAt, options.staleTime),
108
+ );
109
+ }
110
+
111
+ async ensureFreshTempAuthToken(options: {
112
+ path?: string;
113
+ staleTime: number;
114
+ }): Promise<string | undefined> {
115
+ return await $QueryEnsureFresh(
116
+ () => this.getTempAuthToken(options),
117
+ query => this._isTempAuthTokenExpired(query.data, query.dataUpdatedAt, options.staleTime),
118
+ );
119
+ }
120
+
84
121
  getOauthLoginUrl(module: string, providerName: string, clientName?: string): string {
85
122
  const apiPath = this.sys.util.apiActionPathTranslate(ApiApiHomeUserPassportloginOauthPath, {
86
123
  module,
@@ -132,6 +169,10 @@ export class ModelPassport extends BeanModelBase {
132
169
  return this.passport?.roles;
133
170
  }
134
171
 
172
+ get isAdmin() {
173
+ return !!this.passport?.roles.some(item => item.name === 'admin');
174
+ }
175
+
135
176
  async getJwtInfo(): Promise<IJwtInfo | undefined> {
136
177
  if (!this.accessToken) return undefined;
137
178
  return {
@@ -160,6 +201,14 @@ export class ModelPassport extends BeanModelBase {
160
201
  return this.passport;
161
202
  }
162
203
 
204
+ private _isTempAuthTokenExpired(
205
+ token: string | undefined,
206
+ dataUpdatedAt: number,
207
+ staleTime: number,
208
+ ) {
209
+ return token === undefined || dataUpdatedAt + staleTime <= Date.now();
210
+ }
211
+
163
212
  private _setLocaleTz() {
164
213
  const user = this.passport?.user;
165
214
  if (!user) return;
@@ -1,11 +1,20 @@
1
1
  import type { IModule } from '@cabloy/module-info';
2
- import type { BeanBase, BeanContainer, IMonkeyBeanInit, IMonkeyModule } from 'zova';
2
+ import type {
3
+ BeanBase,
4
+ BeanContainer,
5
+ IMonkeyAppInitialize,
6
+ IMonkeyBeanInit,
7
+ IMonkeyModule,
8
+ } from 'zova';
3
9
 
4
10
  import { BeanSimple } from 'zova';
5
11
 
6
12
  import type { ModelPassport } from './model/passport.js';
7
13
 
8
- export class Monkey extends BeanSimple implements IMonkeyModule, IMonkeyBeanInit {
14
+ export class Monkey
15
+ extends BeanSimple
16
+ implements IMonkeyAppInitialize, IMonkeyModule, IMonkeyBeanInit
17
+ {
9
18
  private _moduleSelf: IModule;
10
19
  private $$modelPassport: ModelPassport;
11
20
 
@@ -14,13 +23,18 @@ export class Monkey extends BeanSimple implements IMonkeyModule, IMonkeyBeanInit
14
23
  this._moduleSelf = moduleSelf;
15
24
  }
16
25
 
17
- async getModelPassport() {
26
+ private async getModelPassport() {
18
27
  if (!this.$$modelPassport) {
19
28
  this.$$modelPassport = await this.bean._getBean('home-passport.model.passport', true);
20
29
  }
21
30
  return this.$$modelPassport;
22
31
  }
23
32
 
33
+ async appInitialize() {
34
+ const modelPassport = await this.getModelPassport();
35
+ await modelPassport.appInitialize();
36
+ }
37
+
24
38
  async moduleLoading(_module: IModule) {}
25
39
  async moduleLoaded(module: IModule) {
26
40
  // self
@@ -67,10 +67,8 @@ export type ApiSchemaTrainingRecordDtoRecordSelectResItemPartial =
67
67
  Partial<ApiSchemaTrainingRecordDtoRecordSelectResItem>;
68
68
  export type ApiSchemaAImageDtoImageView = components['schemas']['a-image.dto.imageView'];
69
69
  export type ApiSchemaAImageDtoImageViewPartial = Partial<ApiSchemaAImageDtoImageView>;
70
- export type ApiSchemaAImageDtoImageTransformOptions =
71
- components['schemas']['a-image.dto.imageTransformOptions'];
72
- export type ApiSchemaAImageDtoImageTransformOptionsPartial =
73
- Partial<ApiSchemaAImageDtoImageTransformOptions>;
70
+ export type ApiSchemaAFileDtoFileView = components['schemas']['a-file.dto.fileView'];
71
+ export type ApiSchemaAFileDtoFileViewPartial = Partial<ApiSchemaAFileDtoFileView>;
74
72
  export type ApiSchemaTrainingRecordDtoRecordView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_425dbecccd52e19e24888f99e1b1670233afa875 =
75
73
  components['schemas']['training-record.dto.recordView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_425dbecccd52e19e24888f99e1b1670233afa875'];
76
74
  export type ApiSchemaTrainingRecordDtoRecordView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_425dbecccd52e19e24888f99e1b1670233afa875Partial =
@@ -111,14 +109,46 @@ export type ApiSchemaTrainingStudentDtoStudentSummary_2d063d28bc7243bed02ebd8bdd
111
109
  components['schemas']['training-student.dto.studentSummary_2d063d28bc7243bed02ebd8bddf1212a93c6305b'];
112
110
  export type ApiSchemaTrainingStudentDtoStudentSummary_2d063d28bc7243bed02ebd8bddf1212a93c6305bPartial =
113
111
  Partial<ApiSchemaTrainingStudentDtoStudentSummary_2d063d28bc7243bed02ebd8bddf1212a93c6305b>;
114
- export type ApiSchemaAImageDtoImageUploadTokenResponse =
115
- components['schemas']['a-image.dto.imageUploadTokenResponse'];
116
- export type ApiSchemaAImageDtoImageUploadTokenResponsePartial =
117
- Partial<ApiSchemaAImageDtoImageUploadTokenResponse>;
118
- export type ApiSchemaAImageDtoImageUploadTokenRequest =
119
- components['schemas']['a-image.dto.imageUploadTokenRequest'];
120
- export type ApiSchemaAImageDtoImageUploadTokenRequestPartial =
121
- Partial<ApiSchemaAImageDtoImageUploadTokenRequest>;
112
+ export type ApiSchemaAFileDtoFileUploadPolicyResponse =
113
+ components['schemas']['a-file.dto.fileUploadPolicyResponse'];
114
+ export type ApiSchemaAFileDtoFileUploadPolicyResponsePartial =
115
+ Partial<ApiSchemaAFileDtoFileUploadPolicyResponse>;
116
+ export type ApiSchemaAFileDtoFileUploadPolicyRequest =
117
+ components['schemas']['a-file.dto.fileUploadPolicyRequest'];
118
+ export type ApiSchemaAFileDtoFileUploadPolicyRequestPartial =
119
+ Partial<ApiSchemaAFileDtoFileUploadPolicyRequest>;
120
+ export type ApiSchemaAFileDtoFileUploadResponse =
121
+ components['schemas']['a-file.dto.fileUploadResponse'];
122
+ export type ApiSchemaAFileDtoFileUploadResponsePartial =
123
+ Partial<ApiSchemaAFileDtoFileUploadResponse>;
124
+ export type ApiSchemaAFileDtoFileDirectUploadResponse =
125
+ components['schemas']['a-file.dto.fileDirectUploadResponse'];
126
+ export type ApiSchemaAFileDtoFileDirectUploadResponsePartial =
127
+ Partial<ApiSchemaAFileDtoFileDirectUploadResponse>;
128
+ export type ApiSchemaAFileDtoFileDirectUploadRequest =
129
+ components['schemas']['a-file.dto.fileDirectUploadRequest'];
130
+ export type ApiSchemaAFileDtoFileDirectUploadRequestPartial =
131
+ Partial<ApiSchemaAFileDtoFileDirectUploadRequest>;
132
+ export type ApiSchemaAFileDtoFileDirectUploadFinalizeResponse =
133
+ components['schemas']['a-file.dto.fileDirectUploadFinalizeResponse'];
134
+ export type ApiSchemaAFileDtoFileDirectUploadFinalizeResponsePartial =
135
+ Partial<ApiSchemaAFileDtoFileDirectUploadFinalizeResponse>;
136
+ export type ApiSchemaAFileDtoFileDirectUploadFinalizeRequest =
137
+ components['schemas']['a-file.dto.fileDirectUploadFinalizeRequest'];
138
+ export type ApiSchemaAFileDtoFileDirectUploadFinalizeRequestPartial =
139
+ Partial<ApiSchemaAFileDtoFileDirectUploadFinalizeRequest>;
140
+ export type ApiSchemaAFileDtoFileUploadUrlRequest =
141
+ components['schemas']['a-file.dto.fileUploadUrlRequest'];
142
+ export type ApiSchemaAFileDtoFileUploadUrlRequestPartial =
143
+ Partial<ApiSchemaAFileDtoFileUploadUrlRequest>;
144
+ export type ApiSchemaAImageDtoImageUploadPolicyResponse =
145
+ components['schemas']['a-image.dto.imageUploadPolicyResponse'];
146
+ export type ApiSchemaAImageDtoImageUploadPolicyResponsePartial =
147
+ Partial<ApiSchemaAImageDtoImageUploadPolicyResponse>;
148
+ export type ApiSchemaAImageDtoImageUploadPolicyRequest =
149
+ components['schemas']['a-image.dto.imageUploadPolicyRequest'];
150
+ export type ApiSchemaAImageDtoImageUploadPolicyRequestPartial =
151
+ Partial<ApiSchemaAImageDtoImageUploadPolicyRequest>;
122
152
  export type ApiSchemaAImageDtoImageUploadResponse =
123
153
  components['schemas']['a-image.dto.imageUploadResponse'];
124
154
  export type ApiSchemaAImageDtoImageUploadResponsePartial =
@@ -131,6 +161,14 @@ export type ApiSchemaAImageDtoImageDirectUploadRequest =
131
161
  components['schemas']['a-image.dto.imageDirectUploadRequest'];
132
162
  export type ApiSchemaAImageDtoImageDirectUploadRequestPartial =
133
163
  Partial<ApiSchemaAImageDtoImageDirectUploadRequest>;
164
+ export type ApiSchemaAImageDtoImageDirectUploadFinalizeResponse =
165
+ components['schemas']['a-image.dto.imageDirectUploadFinalizeResponse'];
166
+ export type ApiSchemaAImageDtoImageDirectUploadFinalizeResponsePartial =
167
+ Partial<ApiSchemaAImageDtoImageDirectUploadFinalizeResponse>;
168
+ export type ApiSchemaAImageDtoImageDirectUploadFinalizeRequest =
169
+ components['schemas']['a-image.dto.imageDirectUploadFinalizeRequest'];
170
+ export type ApiSchemaAImageDtoImageDirectUploadFinalizeRequestPartial =
171
+ Partial<ApiSchemaAImageDtoImageDirectUploadFinalizeRequest>;
134
172
  export type ApiSchemaAImageDtoImageUploadUrlRequest =
135
173
  components['schemas']['a-image.dto.imageUploadUrlRequest'];
136
174
  export type ApiSchemaAImageDtoImageUploadUrlRequestPartial =