cabloy 5.1.95 → 5.1.96

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 (206) hide show
  1. package/.cabloy-version +1 -0
  2. package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +4 -1
  3. package/.claude/skills/cabloy-resource-field-update/SKILL.md +6 -3
  4. package/.github/workflows/vona-test-crud.yml +2 -0
  5. package/.github/workflows/vona-test-mysql.yml +2 -0
  6. package/.github/workflows/vona-test-pg.yml +2 -0
  7. package/.github/workflows/vona-test-sqlite3.yml +2 -0
  8. package/CHANGELOG.md +31 -0
  9. package/CLAUDE.md +1 -0
  10. package/cabloy-docs/ai/playbook-backend-module.md +6 -3
  11. package/cabloy-docs/fullstack/framework-performance.md +3 -3
  12. package/cabloy-docs/fullstack/quickstart.md +1 -1
  13. package/package.json +1 -1
  14. package/scripts/release.ts +27 -1
  15. package/vona/docker-compose-original/docker-compose-dockerfile-app +4 -0
  16. package/vona/docker-compose-original/docker-compose.original.yml +0 -1
  17. package/vona/env/.env +0 -1
  18. package/vona/env/.env.prod +0 -1
  19. package/vona/env/.env.prod.docker +0 -7
  20. package/vona/package.original.json +3 -3
  21. package/vona/packages-cli/cabloy-cli/package.json +2 -2
  22. package/vona/packages-cli/cli/package.json +1 -1
  23. package/vona/packages-cli/cli-set-api/package.json +2 -2
  24. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.bin.build.ts +70 -2
  25. package/vona/packages-utils/babel-plugin-vona-bean-module/package.json +2 -2
  26. package/vona/packages-utils/module-glob/package.json +2 -2
  27. package/vona/packages-utils/module-info-pro/package.json +2 -2
  28. package/vona/packages-utils/utils/package.json +2 -2
  29. package/vona/packages-vona/vona/package.json +1 -1
  30. package/vona/packages-vona/vona-core/package.json +2 -2
  31. package/vona/packages-vona/vona-core/src/lib/addon/addon.ts +77 -0
  32. package/vona/packages-vona/vona-core/src/lib/addon/index.ts +3 -0
  33. package/vona/packages-vona/vona-core/src/lib/addon/sharp.ts +46 -0
  34. package/vona/packages-vona/vona-core/src/lib/addon/sqlite3.ts +23 -0
  35. package/vona/packages-vona/vona-core/src/lib/index.ts +1 -0
  36. package/vona/packages-vona/vona-core/src/lib/utils/index.ts +0 -1
  37. package/vona/packages-vona/vona-core/src/lib/utils/util.ts +5 -0
  38. package/vona/packages-vona/vona-mock/package.json +2 -2
  39. package/vona/pnpm-lock.yaml +414 -64
  40. package/vona/src/backend/cli.ts +2 -5
  41. package/vona/src/backend/config/config/config.ts +0 -4
  42. package/vona/src/suite/a-demo/modules/demo-basic/src/bean/ssrMenu.admin.ts +1 -1
  43. package/vona/src/suite/a-training/modules/training-record/src/.metadata/index.ts +26 -0
  44. package/vona/src/suite/a-training/modules/training-record/src/bean/imageScene.sceneImage.ts +11 -0
  45. package/vona/src/suite/a-training/modules/training-record/src/bean/meta.version.ts +1 -0
  46. package/vona/src/suite/a-training/modules/training-record/src/config/locale/en-us.ts +1 -0
  47. package/vona/src/suite/a-training/modules/training-record/src/config/locale/zh-cn.ts +1 -0
  48. package/vona/src/suite/a-training/modules/training-record/src/dto/recordSelectResItem.tsx +12 -0
  49. package/vona/src/suite/a-training/modules/training-record/src/dto/recordView.tsx +12 -0
  50. package/vona/src/suite/a-training/modules/training-record/src/entity/record.tsx +26 -1
  51. package/vona/src/suite/a-training/modules/training-record/src/index.ts +1 -0
  52. package/vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts +27 -1
  53. package/vona/src/suite/a-training/modules/training-student/src/bean/imageScene.studentImage.ts +10 -0
  54. package/vona/src/suite/a-training/modules/training-student/src/bean/meta.version.ts +1 -0
  55. package/vona/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +1 -0
  56. package/vona/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +1 -0
  57. package/vona/src/suite/a-training/modules/training-student/src/dto/detailRecordBase.tsx +16 -2
  58. package/vona/src/suite/a-training/modules/training-student/src/dto/studentCreate.tsx +1 -1
  59. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectResItem.tsx +12 -0
  60. package/vona/src/suite/a-training/modules/training-student/src/dto/studentUpdate.tsx +1 -1
  61. package/vona/src/suite/a-training/modules/training-student/src/dto/studentView.tsx +13 -1
  62. package/vona/src/suite/a-training/modules/training-student/src/entity/student.tsx +26 -1
  63. package/vona/src/suite/a-training/modules/training-student/src/index.ts +1 -0
  64. package/vona/src/suite/a-training/modules/training-student/src/model/student.ts +1 -0
  65. package/vona/src/suite-vendor/a-auth/modules/a-auth/package.json +1 -1
  66. package/vona/src/suite-vendor/a-auth/modules/a-auth/src/bean/bean.authProvider.ts +2 -5
  67. package/vona/src/suite-vendor/a-auth/package.json +1 -1
  68. package/vona/src/suite-vendor/a-image/modules/a-image/cli/imageProvider/boilerplate/{{sceneName}}.{{beanName}}.ts_ +23 -0
  69. package/vona/src/suite-vendor/a-image/modules/a-image/cli/imageScene/boilerplate/{{sceneName}}.{{beanName}}.ts_ +5 -0
  70. package/vona/src/suite-vendor/a-image/modules/a-image/package.json +68 -0
  71. package/vona/src/suite-vendor/a-image/modules/a-image/src/.metadata/index.ts +482 -0
  72. package/vona/src/suite-vendor/a-image/modules/a-image/src/.metadata/locales.ts +18 -0
  73. package/vona/src/suite-vendor/a-image/modules/a-image/src/.metadata/this.ts +2 -0
  74. package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/bean.image.ts +443 -0
  75. package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/bean.imageProvider.ts +55 -0
  76. package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/bean.imageUploadPolicy.ts +174 -0
  77. package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/meta.redlock.ts +11 -0
  78. package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/meta.version.ts +40 -0
  79. package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/serializerTransform.resolveView.ts +44 -0
  80. package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/serializerTransform.resolveViews.ts +44 -0
  81. package/vona/src/suite-vendor/a-image/modules/a-image/src/config/config.ts +17 -0
  82. package/vona/src/suite-vendor/a-image/modules/a-image/src/config/locale/en-us.ts +1 -0
  83. package/vona/src/suite-vendor/a-image/modules/a-image/src/config/locale/zh-cn.ts +1 -0
  84. package/vona/src/suite-vendor/a-image/modules/a-image/src/controller/image.ts +165 -0
  85. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageDeliveryRequest.ts +20 -0
  86. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageDirectUploadRequest.ts +36 -0
  87. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageDirectUploadResponse.ts +38 -0
  88. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageTransformOptions.tsx +42 -0
  89. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageUploadResponse.ts +62 -0
  90. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageUploadTokenRequest.ts +24 -0
  91. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageUploadTokenResponse.ts +16 -0
  92. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageUploadUrlRequest.ts +33 -0
  93. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageView.ts +46 -0
  94. package/vona/src/suite-vendor/a-image/modules/a-image/src/entity/image.ts +58 -0
  95. package/vona/src/suite-vendor/a-image/modules/a-image/src/entity/imageProvider.ts +24 -0
  96. package/vona/src/suite-vendor/a-image/modules/a-image/src/index.ts +4 -0
  97. package/vona/src/suite-vendor/a-image/modules/a-image/src/lib/imageProvider.ts +9 -0
  98. package/vona/src/suite-vendor/a-image/modules/a-image/src/lib/imageScene.ts +7 -0
  99. package/vona/src/suite-vendor/a-image/modules/a-image/src/lib/imageVariant.ts +46 -0
  100. package/vona/src/suite-vendor/a-image/modules/a-image/src/lib/index.ts +3 -0
  101. package/vona/src/suite-vendor/a-image/modules/a-image/src/model/image.ts +10 -0
  102. package/vona/src/suite-vendor/a-image/modules/a-image/src/model/imageProvider.ts +10 -0
  103. package/vona/src/suite-vendor/a-image/modules/a-image/src/types/image.ts +208 -0
  104. package/vona/src/suite-vendor/a-image/modules/a-image/src/types/imageProvider.ts +110 -0
  105. package/vona/src/suite-vendor/a-image/modules/a-image/src/types/imageScene.ts +52 -0
  106. package/vona/src/suite-vendor/a-image/modules/a-image/src/types/index.ts +3 -0
  107. package/vona/src/suite-vendor/a-image/modules/a-image/tsconfig.build.json +11 -0
  108. package/vona/src/suite-vendor/a-image/modules/a-image/tsconfig.json +7 -0
  109. package/vona/src/suite-vendor/a-image/modules/image-cloudflare/package.json +49 -0
  110. package/vona/src/suite-vendor/a-image/modules/image-cloudflare/src/.metadata/index.ts +89 -0
  111. package/vona/src/suite-vendor/a-image/modules/image-cloudflare/src/.metadata/this.ts +2 -0
  112. package/vona/src/suite-vendor/a-image/modules/image-cloudflare/src/bean/imageProvider.cloudflare.ts +155 -0
  113. package/vona/src/suite-vendor/a-image/modules/image-cloudflare/src/index.ts +1 -0
  114. package/vona/src/suite-vendor/a-image/modules/image-cloudflare/src/lib/cloudflareImageUrl.ts +112 -0
  115. package/vona/src/suite-vendor/a-image/modules/image-cloudflare/src/service/imageCloudflare.ts +273 -0
  116. package/vona/src/suite-vendor/a-image/modules/image-cloudflare/tsconfig.build.json +11 -0
  117. package/vona/src/suite-vendor/a-image/modules/image-cloudflare/tsconfig.json +7 -0
  118. package/vona/src/suite-vendor/a-image/modules/image-native/package.json +63 -0
  119. package/vona/src/suite-vendor/a-image/modules/image-native/src/.metadata/index.ts +114 -0
  120. package/vona/src/suite-vendor/a-image/modules/image-native/src/.metadata/this.ts +2 -0
  121. package/vona/src/suite-vendor/a-image/modules/image-native/src/bean/imageProvider.native.ts +131 -0
  122. package/vona/src/suite-vendor/a-image/modules/image-native/src/config/config.ts +11 -0
  123. package/vona/src/suite-vendor/a-image/modules/image-native/src/index.ts +1 -0
  124. package/vona/src/suite-vendor/a-image/modules/image-native/src/monkey.ts +33 -0
  125. package/vona/src/suite-vendor/a-image/modules/image-native/src/service/imageNative.ts +291 -0
  126. package/vona/src/suite-vendor/a-image/modules/image-native/tsconfig.build.json +11 -0
  127. package/vona/src/suite-vendor/a-image/modules/image-native/tsconfig.json +7 -0
  128. package/vona/src/suite-vendor/a-image/package.json +14 -0
  129. package/vona/src/suite-vendor/a-image/tsconfig.base.json +4 -0
  130. package/vona/src/suite-vendor/a-image/tsconfig.json +16 -0
  131. package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +2 -2
  132. package/vona/src/suite-vendor/a-vona/modules/a-jwt/package.json +1 -1
  133. package/vona/src/suite-vendor/a-vona/modules/a-jwt/src/service/jwtClient.ts +5 -0
  134. package/vona/src/suite-vendor/a-vona/modules/a-jwt/src/types/jwt.ts +1 -0
  135. package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/package.json +1 -1
  136. package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/src/lib/schema/makeSchemaLikes.ts +6 -3
  137. package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/src/lib/utils.ts +13 -7
  138. package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
  139. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/database.ts +0 -1
  140. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/package.json +9 -1
  141. package/vona/src/suite-vendor/a-vona/modules/a-upload/package.json +1 -1
  142. package/vona/src/suite-vendor/a-vona/modules/a-upload/src/bean/interceptor.upload.ts +39 -7
  143. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  144. package/zova/packages-cli/cli/package.json +3 -3
  145. package/zova/packages-cli/cli-set-front/package.json +9 -9
  146. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.openapi.generate.ts +20 -10
  147. package/zova/packages-utils/babel-plugin-zova-bean-module/package.json +2 -2
  148. package/zova/packages-utils/babel-plugin-zova-bean-use/package.json +2 -2
  149. package/zova/packages-utils/babel-plugin-zova-behavior/package.json +2 -2
  150. package/zova/packages-utils/babel-plugin-zova-component/package.json +2 -2
  151. package/zova/packages-utils/zova-jsx/package.json +3 -3
  152. package/zova/packages-utils/zova-vite/package.json +7 -7
  153. package/zova/packages-zova/zova/package.json +3 -3
  154. package/zova/packages-zova/zova-core/package.json +3 -3
  155. package/zova/pnpm-lock.yaml +77 -25
  156. package/zova/src/suite/a-home/modules/home-api/src/api/captcha.ts +3 -1
  157. package/zova/src/suite/a-home/modules/home-api/src/api/home.ts +3 -1
  158. package/zova/src/suite/a-home/modules/home-api/src/api/homeBaseMenu.ts +3 -1
  159. package/zova/src/suite/a-home/modules/home-api/src/api/homeBasePermission.ts +3 -1
  160. package/zova/src/suite/a-home/modules/home-api/src/api/homeUserPassport.ts +22 -20
  161. package/zova/src/suite/a-home/modules/home-api/src/api/openapi/schemas.ts +163 -53
  162. package/zova/src/suite/a-home/modules/home-api/src/api/openapi/types.ts +2060 -675
  163. package/zova/src/suite/a-home/modules/home-api/src/api/testSsrToolOne.ts +3 -1
  164. package/zova/src/suite/a-home/modules/home-api/src/apiSchema/captcha.ts +3 -1
  165. package/zova/src/suite/a-home/modules/home-api/src/apiSchema/home.ts +3 -1
  166. package/zova/src/suite/a-home/modules/home-api/src/apiSchema/homeBaseMenu.ts +3 -1
  167. package/zova/src/suite/a-home/modules/home-api/src/apiSchema/homeBasePermission.ts +3 -1
  168. package/zova/src/suite/a-home/modules/home-api/src/apiSchema/homeUserPassport.ts +13 -11
  169. package/zova/src/suite/a-home/modules/home-api/src/apiSchema/testSsrToolOne.ts +3 -1
  170. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/schemas.ts +54 -16
  171. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/types.ts +468 -8
  172. package/zova/src/suite/a-training/modules/training-student/src/apiSchema/trainingStudent.ts +3 -1
  173. package/zova/src/suite/cabloy-basic/modules/basic-details/src/bean/tableCell.actionUpdate.tsx +1 -1
  174. package/zova/src/suite/cabloy-basic/modules/basic-details/src/component/actionCreate/controller.tsx +1 -1
  175. package/zova/src/suite/cabloy-basic/modules/basic-details/src/service/detail.tsx +53 -1
  176. package/zova/src/suite/cabloy-basic/modules/basic-image/cli/openapi.config.ts +9 -0
  177. package/zova/src/suite/cabloy-basic/modules/basic-image/package.json +60 -0
  178. package/zova/src/suite/cabloy-basic/modules/basic-image/src/.metadata/component/formFieldImage.ts +31 -0
  179. package/zova/src/suite/cabloy-basic/modules/basic-image/src/.metadata/index.ts +191 -0
  180. package/zova/src/suite/cabloy-basic/modules/basic-image/src/.metadata/locales.ts +7 -0
  181. package/zova/src/suite/cabloy-basic/modules/basic-image/src/.metadata/this.ts +2 -0
  182. package/zova/src/suite/cabloy-basic/modules/basic-image/src/api/image.ts +104 -0
  183. package/zova/src/suite/cabloy-basic/modules/basic-image/src/api/openapi/baseURL.ts +5 -0
  184. package/zova/src/suite/cabloy-basic/modules/basic-image/src/api/openapi/index.ts +3 -0
  185. package/zova/src/suite/cabloy-basic/modules/basic-image/src/api/openapi/schemas.ts +262 -0
  186. package/zova/src/suite/cabloy-basic/modules/basic-image/src/api/openapi/types.ts +5159 -0
  187. package/zova/src/suite/cabloy-basic/modules/basic-image/src/apiSchema/image.ts +35 -0
  188. package/zova/src/suite/cabloy-basic/modules/basic-image/src/bean/tableCell.image.tsx +200 -0
  189. package/zova/src/suite/cabloy-basic/modules/basic-image/src/component/formFieldImage/controller.tsx +781 -0
  190. package/zova/src/suite/cabloy-basic/modules/basic-image/src/config/locale/en-us.ts +18 -0
  191. package/zova/src/suite/cabloy-basic/modules/basic-image/src/config/locale/zh-cn.ts +18 -0
  192. package/zova/src/suite/cabloy-basic/modules/basic-image/src/index.ts +4 -0
  193. package/zova/src/suite/cabloy-basic/modules/basic-image/src/lib/index.ts +2 -0
  194. package/zova/src/suite/cabloy-basic/modules/basic-image/src/lib/preview.ts +105 -0
  195. package/zova/src/suite/cabloy-basic/modules/basic-image/src/lib/previewDialog.tsx +190 -0
  196. package/zova/src/suite/cabloy-basic/modules/basic-image/src/types/image.ts +5 -0
  197. package/zova/src/suite/cabloy-basic/modules/basic-image/src/types/index.ts +1 -0
  198. package/zova/src/suite/cabloy-basic/modules/basic-image/tsconfig.build.json +13 -0
  199. package/zova/src/suite/cabloy-basic/modules/basic-image/tsconfig.json +5 -0
  200. package/zova/src/suite/cabloy-basic/package.json +1 -0
  201. package/zova/src/suite-vendor/a-zova/modules/a-openapi/package.json +1 -1
  202. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/image.ts +1 -0
  203. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/index.ts +1 -0
  204. package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +5 -5
  205. package/zova/src/suite-vendor/a-zova/package.json +3 -3
  206. package/vona/packages-vona/vona-core/src/lib/utils/sqlite3.ts +0 -50
@@ -0,0 +1,16 @@
1
+ {
2
+ "extends": "./tsconfig.base",
3
+ "compilerOptions": {},
4
+ "references": [
5
+ {
6
+ "path": "modules/a-image/tsconfig.build.json"
7
+ },
8
+ {
9
+ "path": "modules/image-native/tsconfig.build.json"
10
+ },
11
+ {
12
+ "path": "modules/image-cloudflare/tsconfig.build.json"
13
+ }
14
+ ],
15
+ "exclude": ["modules"]
16
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-a-core",
3
- "version": "5.1.41",
3
+ "version": "5.1.42",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "",
6
6
  "keywords": [
@@ -36,7 +36,7 @@
36
36
  "@babel/traverse": "^7.29.0",
37
37
  "@cabloy/deps": "workspace:^",
38
38
  "@cabloy/json5": "workspace:^",
39
- "@cabloy/module-info": "^2.0.0",
39
+ "@cabloy/module-info": "^2.0.3",
40
40
  "@cabloy/type-fest": "^5.3.1",
41
41
  "@cabloy/utils": "workspace:^",
42
42
  "@cabloy/word-utils": "^2.1.8",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-a-jwt",
3
- "version": "5.1.14",
3
+ "version": "5.1.15",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "",
6
6
  "keywords": [
@@ -79,6 +79,11 @@ export class ServiceJwtClient extends BeanBase {
79
79
  expiresIn: this.scope.config.tempAuthToken.signOptions.expiresIn,
80
80
  });
81
81
  }
82
+ if (options?.expiresIn !== undefined) {
83
+ signOptions = Object.assign({}, signOptions, {
84
+ expiresIn: options.expiresIn,
85
+ });
86
+ }
82
87
  this._jwtInstance.sign(payload, this._clientOptions.secret!, signOptions, (err, encoded) => {
83
88
  if (err) return reject(err);
84
89
  resolve(encoded!);
@@ -21,6 +21,7 @@ export interface IJwtSignOptions {
21
21
  path?: string | string[];
22
22
  dev?: boolean;
23
23
  temp?: boolean;
24
+ expiresIn?: StringValue | number;
24
25
  }
25
26
 
26
27
  export interface IJwtVerifyOptions {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-a-openapiutils",
3
- "version": "5.1.18",
3
+ "version": "5.1.19",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "",
6
6
  "keywords": [
@@ -11,6 +11,7 @@ import { SymbolDecoratorRule } from '../const/decorator.ts';
11
11
  import {
12
12
  getTargetDecoratorDtoOpenapi,
13
13
  getTargetDecoratorDtoPipes,
14
+ mergeSchemaOpenapiMetadata,
14
15
  prepareClassType,
15
16
  } from '../utils.ts';
16
17
  import { SymbolSchemaDynamicRefId } from './schemaDynamic.ts';
@@ -39,9 +40,10 @@ export function makeSchemaLike<T>(
39
40
  schemaPrevious: z.ZodType<T>,
40
41
  ): z.ZodType<T> {
41
42
  if (!schemaLike) return schemaPrevious;
43
+ let schemaCurrent: z.ZodType<T>;
42
44
  if (Object.prototype.hasOwnProperty.call(schemaLike, 'parseAsync')) {
43
45
  // schema
44
- return schemaLike as z.ZodType<T>;
46
+ schemaCurrent = schemaLike as z.ZodType<T>;
45
47
  } else if (
46
48
  isClass(schemaLike) ||
47
49
  ['String', 'Number', 'Boolean', 'Date', 'BigInt', 'Array'].includes(
@@ -49,11 +51,12 @@ export function makeSchemaLike<T>(
49
51
  )
50
52
  ) {
51
53
  // class
52
- return $schema(cast<Constructable>(schemaLike)) as z.ZodType<T>;
54
+ schemaCurrent = $schema(cast<Constructable>(schemaLike)) as z.ZodType<T>;
53
55
  } else {
54
56
  // function
55
- return cast<SchemaLikeCreate>(schemaLike)(schemaPrevious);
57
+ schemaCurrent = cast<SchemaLikeCreate>(schemaLike)(schemaPrevious);
56
58
  }
59
+ return mergeSchemaOpenapiMetadata(schemaPrevious, schemaCurrent);
57
60
  }
58
61
 
59
62
  export function $schema<T>(schemaLike: z.ZodType<T>): z.ZodType<T>;
@@ -93,6 +93,18 @@ export function mergeDtoFieldsOpenapiMetadata(target: Constructable) {
93
93
  }
94
94
  }
95
95
 
96
+ export function mergeSchemaOpenapiMetadata<T>(
97
+ schemaPrevious: z.ZodType<T> | undefined,
98
+ schemaCurrent: z.ZodType<T>,
99
+ ): z.ZodType<T> {
100
+ if (!schemaPrevious) return schemaCurrent;
101
+ if (schemaPrevious === schemaCurrent) return schemaCurrent;
102
+ const metadataPrevious = ZodMetadata.getOpenapiMetadata(schemaPrevious);
103
+ if (isEmptyObject(metadataPrevious)) return schemaCurrent;
104
+ const metadataCurrent = ZodMetadata.getOpenapiMetadata(schemaCurrent);
105
+ return schemaCurrent.openapi(deepExtend({}, metadataPrevious, metadataCurrent));
106
+ }
107
+
96
108
  // fieldRule maybe undefined
97
109
  export function mergeFieldOpenapiMetadata(
98
110
  target: object,
@@ -106,13 +118,7 @@ export function mergeFieldOpenapiMetadata(
106
118
  const metadataCurrent = schemaCurrent ? ZodMetadata.getOpenapiMetadata(schemaCurrent) : undefined;
107
119
  // merge
108
120
  if (Object.prototype.hasOwnProperty.call(fieldRule, 'parseAsync')) {
109
- const schema: z.ZodType = fieldRule as any;
110
- if (isEmptyObject(metadataCurrent)) {
111
- rules[prop] = schema;
112
- } else {
113
- const metadataCustom = ZodMetadata.getOpenapiMetadata(schema);
114
- rules[prop] = schema.openapi(deepExtend({}, metadataCurrent, metadataCustom));
115
- }
121
+ rules[prop] = mergeSchemaOpenapiMetadata(schemaCurrent as any, fieldRule as any) as any;
116
122
  } else {
117
123
  if (schemaCurrent) {
118
124
  if (!isEmptyObject(fieldRule)) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-a-orm",
3
- "version": "5.1.19",
3
+ "version": "5.1.20",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "db",
6
6
  "keywords": [
@@ -42,7 +42,6 @@ declare module 'vona' {
42
42
  DATABASE_DEFAULT_CLIENT: string | undefined;
43
43
  // sqlite3
44
44
  DATABASE_CLIENT_SQLITE3_FILENAME: string | undefined;
45
- DATABASE_CLIENT_SQLITE3_NATIVEBINDING: string | 'true' | 'false' | undefined;
46
45
  // pg
47
46
  DATABASE_CLIENT_PG_HOST: string | undefined;
48
47
  DATABASE_CLIENT_PG_PORT: string | undefined;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-a-ormdialect",
3
- "version": "5.1.15",
3
+ "version": "5.1.16",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "",
6
6
  "keywords": [
@@ -54,6 +54,14 @@
54
54
  "dependencies": {},
55
55
  "globalDependencies": {
56
56
  "better-sqlite3": true
57
+ },
58
+ "bundle": {
59
+ "externals": [
60
+ "better-sqlite3"
61
+ ],
62
+ "allowBuilds": [
63
+ "better-sqlite3"
64
+ ]
57
65
  }
58
66
  }
59
67
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-a-upload",
3
- "version": "5.1.12",
3
+ "version": "5.1.13",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "",
6
6
  "keywords": [
@@ -44,6 +44,13 @@ export class InterceptorUpload extends BeanBase implements IInterceptorExecute {
44
44
  const fields: IUploadField[] = [];
45
45
  const files: IUploadFile[] = [];
46
46
  const filesCleanup: Function[] = [];
47
+ const fileWrites: Promise<void>[] = [];
48
+ let settled = false;
49
+ const rejectOnce = (err: Error) => {
50
+ if (settled) return;
51
+ settled = true;
52
+ reject(err);
53
+ };
47
54
  // bb
48
55
  const bb = Busboy(Object.assign({}, options.busboy, { headers: this.ctx.req.headers }));
49
56
  bb.on('file', (name, file, info) => {
@@ -59,7 +66,25 @@ export class InterceptorUpload extends BeanBase implements IInterceptorExecute {
59
66
  info,
60
67
  });
61
68
  // save
62
- file.pipe(createWriteStream(fileTemp));
69
+ const writeStream = createWriteStream(fileTemp);
70
+ const fileWrite = new Promise<void>((resolveWrite, rejectWrite) => {
71
+ writeStream.on('finish', () => {
72
+ resolveWrite();
73
+ });
74
+ writeStream.on('error', err => {
75
+ rejectWrite(err);
76
+ });
77
+ file.on('error', err => {
78
+ rejectWrite(err);
79
+ });
80
+ });
81
+ fileWrites.push(
82
+ fileWrite.catch(err => {
83
+ rejectOnce(err as Error);
84
+ throw err;
85
+ }),
86
+ );
87
+ file.pipe(writeStream);
63
88
  });
64
89
  bb.on('field', (name, value, info) => {
65
90
  fields.push({
@@ -68,20 +93,27 @@ export class InterceptorUpload extends BeanBase implements IInterceptorExecute {
68
93
  info,
69
94
  });
70
95
  });
71
- bb.on('close', () => {
72
- resolve([fields, files, filesCleanup]);
96
+ bb.on('close', async () => {
97
+ try {
98
+ await Promise.all(fileWrites);
99
+ if (settled) return;
100
+ settled = true;
101
+ resolve([fields, files, filesCleanup]);
102
+ } catch {
103
+ // handled by rejectOnce
104
+ }
73
105
  });
74
106
  bb.on('error', (err: Error) => {
75
- reject(err);
107
+ rejectOnce(err);
76
108
  });
77
109
  bb.on('partsLimit', () => {
78
- reject(new Error('partsLimit'));
110
+ rejectOnce(new Error('partsLimit'));
79
111
  });
80
112
  bb.on('filesLimit', () => {
81
- reject(new Error('filesLimit'));
113
+ rejectOnce(new Error('filesLimit'));
82
114
  });
83
115
  bb.on('fieldsLimit', () => {
84
- reject(new Error('fieldsLimit'));
116
+ rejectOnce(new Error('fieldsLimit'));
85
117
  });
86
118
  this.ctx.req.pipe(bb);
87
119
  });
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-suite-a-vona",
3
- "version": "5.1.60",
3
+ "version": "5.1.61",
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.96",
3
+ "version": "1.2.97",
4
4
  "gitHead": "6f675a8cc46d596142c591c28a40cc4d82fcc6cc",
5
5
  "description": "zova cli",
6
6
  "keywords": [
@@ -40,11 +40,11 @@
40
40
  "postpack": "clean-package restore"
41
41
  },
42
42
  "dependencies": {
43
- "@cabloy/cli": "^3.1.27",
43
+ "@cabloy/cli": "^3.1.28",
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.94"
47
+ "zova-cli-set-front": "^1.2.95"
48
48
  },
49
49
  "devDependencies": {
50
50
  "clean-package": "^2.2.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-cli-set-front",
3
- "version": "1.2.94",
3
+ "version": "1.2.95",
4
4
  "gitHead": "6f675a8cc46d596142c591c28a40cc4d82fcc6cc",
5
5
  "description": "zova cli-set-front",
6
6
  "keywords": [
@@ -41,21 +41,21 @@
41
41
  "@babel/plugin-proposal-decorators": "^7.29.0",
42
42
  "@babel/plugin-transform-class-properties": "^7.28.6",
43
43
  "@babel/plugin-transform-typescript": "^7.28.6",
44
- "@cabloy/cli": "^3.1.27",
44
+ "@cabloy/cli": "^3.1.28",
45
45
  "@cabloy/extend": "^3.2.8",
46
- "@cabloy/module-info": "^2.0.0",
46
+ "@cabloy/module-info": "^2.0.3",
47
47
  "@cabloy/openapi-typescript": "^7.9.2",
48
- "@cabloy/utils": "^2.1.25",
48
+ "@cabloy/utils": "^2.1.26",
49
49
  "@cabloy/vite-plugin-babel": "^1.3.3",
50
50
  "@cabloy/vue-babel-plugin-jsx": "^2.0.1",
51
51
  "@cabloy/word-utils": "^2.1.14",
52
52
  "@typescript/native-preview": "^7.0.0-dev.20260320.1",
53
53
  "@vitejs/plugin-vue-jsx": "^5.1.5",
54
54
  "babel-plugin-transform-typescript-metadata": "^0.4.0",
55
- "babel-plugin-zova-bean-module": "^1.2.14",
56
- "babel-plugin-zova-bean-use": "^1.1.14",
57
- "babel-plugin-zova-behavior": "^1.1.14",
58
- "babel-plugin-zova-component": "^1.1.14",
55
+ "babel-plugin-zova-bean-module": "^1.2.15",
56
+ "babel-plugin-zova-bean-use": "^1.1.15",
57
+ "babel-plugin-zova-behavior": "^1.1.15",
58
+ "babel-plugin-zova-component": "^1.1.15",
59
59
  "compressing": "^1.10.0",
60
60
  "fs-extra": "^11.3.5",
61
61
  "globby": "^14.1.0",
@@ -70,7 +70,7 @@
70
70
  "vite": "^8.0.14",
71
71
  "yaml": "^2.8.3",
72
72
  "zova-openapi": "^1.1.17",
73
- "zova-vite": "^1.1.42"
73
+ "zova-vite": "^1.1.43"
74
74
  },
75
75
  "devDependencies": {
76
76
  "clean-package": "^2.2.0",
@@ -393,17 +393,26 @@ export const OpenApiBaseURL = (sys: ZovaSys) => {
393
393
  }
394
394
  //
395
395
  const contentTypes2 = contentTypes.join('\n');
396
- const importsType: string[] = [];
397
- if (contentSignatures.length > 0) importsType.push('OpenApiBaseURL');
398
- if (contentTypes2.includes('components["schemas"]')) importsType.push('type components');
399
- if (contentTypes2.includes('paths[')) importsType.push('type paths');
400
- const contentImportsType =
401
- importsType.length > 0
402
- ? `import { ${importsType.join(', ')} } from './openapi/index.js';`
396
+ const importsOpenapiValue: string[] = [];
397
+ const importsOpenapiType: string[] = [];
398
+ if (contentSignatures.length > 0) importsOpenapiValue.push('OpenApiBaseURL');
399
+ if (contentTypes2.includes('components["schemas"]')) importsOpenapiType.push('components');
400
+ if (contentTypes2.includes('paths[')) importsOpenapiType.push('paths');
401
+ const contentImportsOpenapiValue =
402
+ importsOpenapiValue.length > 0
403
+ ? `import { ${importsOpenapiValue.join(', ')} } from './openapi/index.js';`
403
404
  : '';
405
+ const contentImportsOpenapiType =
406
+ importsOpenapiType.length > 0
407
+ ? `import type { ${importsOpenapiType.join(', ')} } from './openapi/index.js';`
408
+ : '';
409
+ const contentImportsOpenapi = [contentImportsOpenapiValue, contentImportsOpenapiType]
410
+ .filter(item => !!item)
411
+ .join('\n');
404
412
  // apiContent
405
- const apiContent = `import { Api, BeanApiBase, IApiActionOptions } from 'zova-module-a-api';
406
- ${contentImportsType}
413
+ const apiContent = `import { Api, BeanApiBase } from 'zova-module-a-api';
414
+ import type { IApiActionOptions } from 'zova-module-a-api';
415
+ ${contentImportsOpenapi}
407
416
 
408
417
  ${contentTypes2}
409
418
 
@@ -441,7 +450,8 @@ export class ApiMeta${apiName} extends BeanBase {
441
450
  }
442
451
  `;
443
452
  const apiSchemaContent = `import { BeanBase } from 'zova';
444
- import { ApiSchema, IApiSchemaOptions } from 'zova-module-a-api';
453
+ import { ApiSchema } from 'zova-module-a-api';
454
+ import type { IApiSchemaOptions } from 'zova-module-a-api';
445
455
  ${contentImportsApiPath}
446
456
 
447
457
  @ApiSchema()
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "babel-plugin-zova-bean-module",
3
- "version": "1.2.14",
3
+ "version": "1.2.15",
4
4
  "gitHead": "09d901d17140a80ee0764211b441cda72fd94663",
5
5
  "description": "babel-plugin-zova-bean-module",
6
6
  "keywords": [
@@ -38,7 +38,7 @@
38
38
  "dependencies": {
39
39
  "@babel/core": "^7.29.0",
40
40
  "@babel/traverse": "^7.29.0",
41
- "@cabloy/module-info": "^2.0.0",
41
+ "@cabloy/module-info": "^2.0.3",
42
42
  "@cabloy/word-utils": "^2.1.14"
43
43
  },
44
44
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "babel-plugin-zova-bean-use",
3
- "version": "1.1.14",
3
+ "version": "1.1.15",
4
4
  "gitHead": "09d901d17140a80ee0764211b441cda72fd94663",
5
5
  "description": "babel-plugin-zova-bean-use",
6
6
  "keywords": [
@@ -38,7 +38,7 @@
38
38
  "dependencies": {
39
39
  "@babel/core": "^7.29.0",
40
40
  "@babel/traverse": "^7.29.0",
41
- "@cabloy/module-info": "^2.0.0"
41
+ "@cabloy/module-info": "^2.0.1"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/babel__core": "^7.20.5",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "babel-plugin-zova-behavior",
3
- "version": "1.1.14",
3
+ "version": "1.1.15",
4
4
  "gitHead": "09d901d17140a80ee0764211b441cda72fd94663",
5
5
  "description": "babel-plugin-zova-behavior",
6
6
  "keywords": [
@@ -38,7 +38,7 @@
38
38
  "dependencies": {
39
39
  "@babel/core": "^7.29.0",
40
40
  "@babel/traverse": "^7.29.0",
41
- "@cabloy/module-info": "^2.0.0",
41
+ "@cabloy/module-info": "^2.0.3",
42
42
  "html-tags": "^3.3.1",
43
43
  "svg-tags": "^1.0.0"
44
44
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "babel-plugin-zova-component",
3
- "version": "1.1.14",
3
+ "version": "1.1.15",
4
4
  "gitHead": "09d901d17140a80ee0764211b441cda72fd94663",
5
5
  "description": "babel-plugin-zova-component",
6
6
  "keywords": [
@@ -38,7 +38,7 @@
38
38
  "dependencies": {
39
39
  "@babel/core": "^7.29.0",
40
40
  "@babel/traverse": "^7.29.0",
41
- "@cabloy/module-info": "^2.0.0"
41
+ "@cabloy/module-info": "^2.0.1"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/babel__core": "^7.20.5",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-jsx",
3
- "version": "1.1.75",
3
+ "version": "1.1.76",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "Zova JSX",
6
6
  "keywords": [
@@ -46,11 +46,11 @@
46
46
  },
47
47
  "dependencies": {
48
48
  "@cabloy/compose": "^2.1.8",
49
- "@cabloy/utils": "^2.1.25",
49
+ "@cabloy/utils": "^2.1.26",
50
50
  "@cabloy/word-utils": "^2.1.14",
51
51
  "typestyle": "^2.4.0",
52
52
  "vue": "^3.5.38",
53
- "zova-core": "^5.1.75"
53
+ "zova-core": "^5.1.76"
54
54
  },
55
55
  "devDependencies": {
56
56
  "clean-package": "^2.2.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-vite",
3
- "version": "1.1.42",
3
+ "version": "1.1.43",
4
4
  "gitHead": "09d901d17140a80ee0764211b441cda72fd94663",
5
5
  "description": "zova vite",
6
6
  "keywords": [
@@ -42,8 +42,8 @@
42
42
  "@babel/plugin-transform-typescript": "^7.28.6",
43
43
  "@cabloy/dotenv": "^1.2.8",
44
44
  "@cabloy/extend": "^3.2.8",
45
- "@cabloy/module-glob": "^5.3.16",
46
- "@cabloy/module-info": "^2.0.0",
45
+ "@cabloy/module-glob": "^5.3.17",
46
+ "@cabloy/module-info": "^2.0.3",
47
47
  "@cabloy/vite-plugin-babel": "^1.3.3",
48
48
  "@cabloy/vue-babel-plugin-jsx": "^2.0.1",
49
49
  "@cabloy/vue-compiler-sfc": "^3.5.14",
@@ -56,10 +56,10 @@
56
56
  "@types/node": "^22.19.17",
57
57
  "@vitejs/plugin-vue-jsx": "^5.1.5",
58
58
  "babel-plugin-transform-typescript-metadata": "^0.4.0",
59
- "babel-plugin-zova-bean-module": "^1.2.14",
60
- "babel-plugin-zova-bean-use": "^1.1.14",
61
- "babel-plugin-zova-behavior": "^1.1.14",
62
- "babel-plugin-zova-component": "^1.1.14",
59
+ "babel-plugin-zova-bean-module": "^1.2.15",
60
+ "babel-plugin-zova-bean-use": "^1.1.15",
61
+ "babel-plugin-zova-behavior": "^1.1.15",
62
+ "babel-plugin-zova-component": "^1.1.15",
63
63
  "chalk": "^3.0.0",
64
64
  "esbuild": "^0.25.12",
65
65
  "fs-extra": "^11.3.5",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova",
3
- "version": "5.1.130",
3
+ "version": "5.1.131",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "A vue3 framework with ioc",
6
6
  "keywords": [
@@ -45,8 +45,8 @@
45
45
  "postpack": "clean-package restore"
46
46
  },
47
47
  "dependencies": {
48
- "zova-core": "^5.1.75",
49
- "zova-suite-a-zova": "^5.1.129"
48
+ "zova-core": "^5.1.76",
49
+ "zova-suite-a-zova": "^5.1.130"
50
50
  },
51
51
  "devDependencies": {
52
52
  "clean-package": "^2.2.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-core",
3
- "version": "5.1.75",
3
+ "version": "5.1.76",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "A vue3 framework with ioc",
6
6
  "keywords": [
@@ -51,8 +51,8 @@
51
51
  "@cabloy/json5": "^1.1.9",
52
52
  "@cabloy/localeutil": "^2.1.8",
53
53
  "@cabloy/logger": "^1.1.24",
54
- "@cabloy/module-info": "^2.0.0",
55
- "@cabloy/utils": "^2.1.25",
54
+ "@cabloy/module-info": "^2.0.3",
55
+ "@cabloy/utils": "^2.1.26",
56
56
  "@cabloy/vue-compiler-sfc": "^3.5.14",
57
57
  "@cabloy/vue-reactivity": "^3.5.16",
58
58
  "@cabloy/vue-router": "^4.4.16",