cabloy 5.1.97 → 5.1.99

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 (240) hide show
  1. package/.cabloy-version +1 -1
  2. package/.claude/hooks/contract-loop-gate.ts +151 -44
  3. package/CHANGELOG.md +48 -0
  4. package/CLAUDE.md +2 -0
  5. package/cabloy-docs/.vitepress/config.mjs +11 -0
  6. package/cabloy-docs/backend/controller-aop-guide.md +0 -1
  7. package/cabloy-docs/backend/image-guide.md +544 -0
  8. package/cabloy-docs/frontend/a-openapi-under-the-hood.md +1 -1
  9. package/cabloy-docs/frontend/generated-contract-consumption-entry-branch.md +1 -1
  10. package/cabloy-docs/frontend/generated-contract-consumption-list-branch.md +1 -1
  11. package/cabloy-docs/frontend/generated-contract-consumption-verify-playbook.md +1 -1
  12. package/cabloy-docs/frontend/image-guide.md +512 -0
  13. package/cabloy-docs/frontend/introduction.md +2 -0
  14. package/cabloy-docs/frontend/ioc-and-beans.md +34 -3
  15. package/cabloy-docs/frontend/model-architecture.md +2 -0
  16. package/cabloy-docs/frontend/model-resource-owner-pattern.md +3 -1
  17. package/cabloy-docs/frontend/model-state-guide.md +5 -1
  18. package/cabloy-docs/frontend/reading-zova-for-vue-developers.md +10 -8
  19. package/cabloy-docs/frontend/resource-entry-page-deep-dive.md +2 -2
  20. package/cabloy-docs/frontend/resource-list-page-deep-dive.md +1 -1
  21. package/cabloy-docs/frontend/rest-resource-source-reading-map.md +2 -2
  22. package/cabloy-docs/frontend/rest-resource-under-the-hood.md +4 -4
  23. package/cabloy-docs/frontend/server-data.md +2 -0
  24. package/cabloy-docs/frontend/state-architecture-for-vue-developers.md +218 -0
  25. package/cabloy-docs/frontend/system-startup-guide.md +2 -0
  26. package/cabloy-docs/frontend/use-state-data-best-practices.md +384 -0
  27. package/cabloy-docs/frontend/zova-vs-vue3-comparison.md +11 -10
  28. package/cabloy-docs/fullstack/image-workflow.md +403 -0
  29. package/cabloy-docs/fullstack/introduction.md +1 -0
  30. package/package.json +1 -1
  31. package/scripts/upgrade.ts +2 -0
  32. package/vona/package.original.json +0 -1
  33. package/vona/packages-cli/cli/package.json +1 -1
  34. package/vona/packages-cli/cli-set-api/package.json +1 -1
  35. package/vona/packages-vona/vona/package.json +1 -1
  36. package/vona/packages-vona/vona-core/package.json +1 -1
  37. package/vona/packages-vona/vona-core/src/lib/bean/beanBase.ts +9 -9
  38. package/vona/packages-vona/vona-mock/package.json +1 -1
  39. package/vona/pnpm-lock.yaml +424 -47
  40. package/vona/src/suite/a-training/modules/training-record/src/bean/fileScene.dossierFile.ts +22 -0
  41. package/vona/src/suite/a-training/modules/training-record/src/bean/meta.version.ts +1 -0
  42. package/vona/src/suite/a-training/modules/training-record/src/config/locale/en-us.ts +1 -0
  43. package/vona/src/suite/a-training/modules/training-record/src/config/locale/zh-cn.ts +1 -0
  44. package/vona/src/suite/a-training/modules/training-record/src/dto/recordDossierFileView.ts +47 -0
  45. package/vona/src/suite/a-training/modules/training-record/src/dto/recordSelectResItem.tsx +13 -0
  46. package/vona/src/suite/a-training/modules/training-record/src/dto/recordView.tsx +13 -0
  47. package/vona/src/suite/a-training/modules/training-record/src/entity/record.tsx +16 -5
  48. package/vona/src/suite/a-training/modules/training-record/src/index.ts +2 -0
  49. package/vona/src/suite/a-training/modules/training-record/src/lib/index.ts +1 -0
  50. package/vona/src/suite/a-training/modules/training-record/src/lib/resolveDossierFiles.ts +34 -0
  51. package/vona/src/suite/a-training/modules/training-record/test/record.test.ts +209 -123
  52. package/vona/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +1 -0
  53. package/vona/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +1 -0
  54. package/vona/src/suite/a-training/modules/training-student/src/dto/detailRecordBase.tsx +18 -1
  55. package/vona/src/suite/a-training/modules/training-student/src/entity/student.tsx +0 -2
  56. package/vona/src/suite/a-training/modules/training-student/src/model/student.ts +1 -0
  57. package/vona/src/suite/cabloy-basic/modules/basic-siteadmin/src/bean/ssrSite.admin.ts +4 -0
  58. package/vona/src/suite/cabloy-basic/modules/basic-siteweb/src/bean/ssrSite.web.ts +4 -0
  59. package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/cli/ssrSite/boilerplate/{{sceneName}}.{{beanName}}.ts_ +3 -0
  60. package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/package.json +1 -1
  61. package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/service/ssrHandler.ts +11 -2
  62. package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/types/ssrSite.ts +6 -0
  63. package/vona/src/suite-vendor/a-cabloy/package.json +1 -1
  64. package/vona/src/suite-vendor/a-file/modules/a-file/cli/fileProvider/boilerplate/{{sceneName}}.{{beanName}}.ts_ +23 -0
  65. package/vona/src/suite-vendor/a-file/modules/a-file/cli/fileScene/boilerplate/{{sceneName}}.{{beanName}}.ts_ +5 -0
  66. package/vona/src/suite-vendor/a-file/modules/a-file/package.json +68 -0
  67. package/vona/src/suite-vendor/a-file/modules/a-file/src/.metadata/index.ts +425 -0
  68. package/vona/src/suite-vendor/a-file/modules/a-file/src/.metadata/locales.ts +18 -0
  69. package/vona/src/suite-vendor/a-file/modules/a-file/src/.metadata/this.ts +2 -0
  70. package/vona/src/suite-vendor/a-file/modules/a-file/src/bean/bean.file.ts +322 -0
  71. package/vona/src/suite-vendor/a-file/modules/a-file/src/bean/bean.fileProvider.ts +62 -0
  72. package/vona/src/suite-vendor/a-file/modules/a-file/src/bean/bean.fileUploadPolicy.ts +224 -0
  73. package/vona/src/suite-vendor/a-file/modules/a-file/src/bean/meta.redlock.ts +11 -0
  74. package/vona/src/suite-vendor/a-file/modules/a-file/src/bean/meta.version.ts +38 -0
  75. package/vona/src/suite-vendor/a-file/modules/a-file/src/config/config.ts +16 -0
  76. package/vona/src/suite-vendor/a-file/modules/a-file/src/config/locale/en-us.ts +1 -0
  77. package/vona/src/suite-vendor/a-file/modules/a-file/src/config/locale/zh-cn.ts +1 -0
  78. package/vona/src/suite-vendor/a-file/modules/a-file/src/controller/file.ts +175 -0
  79. package/vona/src/suite-vendor/a-file/modules/a-file/src/dto/fileDirectUploadRequest.ts +33 -0
  80. package/vona/src/suite-vendor/a-file/modules/a-file/src/dto/fileDirectUploadResponse.ts +41 -0
  81. package/vona/src/suite-vendor/a-file/modules/a-file/src/dto/fileDownloadRequest.ts +12 -0
  82. package/vona/src/suite-vendor/a-file/modules/a-file/src/dto/fileUploadPolicyRequest.ts +15 -0
  83. package/vona/src/suite-vendor/a-file/modules/a-file/src/dto/fileUploadPolicyResponse.ts +30 -0
  84. package/vona/src/suite-vendor/a-file/modules/a-file/src/dto/fileUploadResponse.ts +59 -0
  85. package/vona/src/suite-vendor/a-file/modules/a-file/src/dto/fileUploadTokenRequest.ts +24 -0
  86. package/vona/src/suite-vendor/a-file/modules/a-file/src/dto/fileUploadTokenResponse.ts +16 -0
  87. package/vona/src/suite-vendor/a-file/modules/a-file/src/dto/fileUploadUrlRequest.ts +33 -0
  88. package/vona/src/suite-vendor/a-file/modules/a-file/src/entity/file.ts +55 -0
  89. package/vona/src/suite-vendor/a-file/modules/a-file/src/entity/fileProvider.ts +24 -0
  90. package/vona/src/suite-vendor/a-file/modules/a-file/src/index.ts +4 -0
  91. package/vona/src/suite-vendor/a-file/modules/a-file/src/lib/fileProvider.ts +7 -0
  92. package/vona/src/suite-vendor/a-file/modules/a-file/src/lib/fileScene.ts +7 -0
  93. package/vona/src/suite-vendor/a-file/modules/a-file/src/lib/fileUploadValidation.ts +15 -0
  94. package/vona/src/suite-vendor/a-file/modules/a-file/src/lib/index.ts +3 -0
  95. package/vona/src/suite-vendor/a-file/modules/a-file/src/model/file.ts +10 -0
  96. package/vona/src/suite-vendor/a-file/modules/a-file/src/model/fileProvider.ts +10 -0
  97. package/vona/src/suite-vendor/a-file/modules/a-file/src/types/file.ts +144 -0
  98. package/vona/src/suite-vendor/a-file/modules/a-file/src/types/fileProvider.ts +111 -0
  99. package/vona/src/suite-vendor/a-file/modules/a-file/src/types/fileScene.ts +53 -0
  100. package/vona/src/suite-vendor/a-file/modules/a-file/src/types/index.ts +3 -0
  101. package/vona/src/suite-vendor/a-file/modules/a-file/tsconfig.build.json +11 -0
  102. package/vona/src/suite-vendor/a-file/modules/a-file/tsconfig.json +7 -0
  103. package/vona/src/suite-vendor/a-file/modules/file-cloudflare/package.json +53 -0
  104. package/vona/src/suite-vendor/a-file/modules/file-cloudflare/src/.metadata/index.ts +104 -0
  105. package/vona/src/suite-vendor/a-file/modules/file-cloudflare/src/.metadata/this.ts +2 -0
  106. package/vona/src/suite-vendor/a-file/modules/file-cloudflare/src/bean/fileProvider.cloudflare.ts +123 -0
  107. package/vona/src/suite-vendor/a-file/modules/file-cloudflare/src/index.ts +1 -0
  108. package/vona/src/suite-vendor/a-file/modules/file-cloudflare/src/service/fileCloudflare.ts +245 -0
  109. package/vona/src/suite-vendor/a-file/modules/file-cloudflare/tsconfig.build.json +11 -0
  110. package/vona/src/suite-vendor/a-file/modules/file-cloudflare/tsconfig.json +7 -0
  111. package/vona/src/suite-vendor/a-file/modules/file-native/package.json +50 -0
  112. package/vona/src/suite-vendor/a-file/modules/file-native/src/.metadata/index.ts +111 -0
  113. package/vona/src/suite-vendor/a-file/modules/file-native/src/.metadata/this.ts +2 -0
  114. package/vona/src/suite-vendor/a-file/modules/file-native/src/bean/fileProvider.native.ts +125 -0
  115. package/vona/src/suite-vendor/a-file/modules/file-native/src/config/config.ts +7 -0
  116. package/vona/src/suite-vendor/a-file/modules/file-native/src/index.ts +1 -0
  117. package/vona/src/suite-vendor/a-file/modules/file-native/src/service/fileNative.ts +125 -0
  118. package/vona/src/suite-vendor/a-file/modules/file-native/tsconfig.build.json +11 -0
  119. package/vona/src/suite-vendor/a-file/modules/file-native/tsconfig.json +7 -0
  120. package/vona/src/suite-vendor/a-file/package.json +14 -0
  121. package/vona/src/suite-vendor/a-file/tsconfig.base.json +4 -0
  122. package/vona/src/suite-vendor/a-file/tsconfig.json +16 -0
  123. package/vona/src/suite-vendor/a-image/modules/a-image/package.json +4 -1
  124. package/vona/src/suite-vendor/a-image/modules/a-image/src/.metadata/index.ts +61 -3
  125. package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/bean.image.ts +336 -152
  126. package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/bean.imageProvider.ts +21 -14
  127. package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/bean.imageUploadPolicy.ts +86 -11
  128. package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/meta.index.ts +12 -0
  129. package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/meta.redlock.ts +1 -1
  130. package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/meta.version.ts +3 -0
  131. package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/schedule.imageDraftPrune.ts +29 -0
  132. package/vona/src/suite-vendor/a-image/modules/a-image/src/config/config.ts +3 -0
  133. package/vona/src/suite-vendor/a-image/modules/a-image/src/controller/image.ts +32 -54
  134. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageDirectUploadFinalizeRequest.ts +13 -0
  135. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageDirectUploadFinalizeResponse.ts +10 -0
  136. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageDirectUploadResponse.ts +10 -0
  137. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageUploadPolicyRequest.ts +15 -0
  138. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageUploadPolicyResponse.ts +27 -0
  139. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageUploadResponse.ts +10 -1
  140. package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageView.ts +10 -1
  141. package/vona/src/suite-vendor/a-image/modules/a-image/src/entity/image.ts +10 -1
  142. package/vona/src/suite-vendor/a-image/modules/a-image/src/lib/imageUploadValidation.ts +15 -0
  143. package/vona/src/suite-vendor/a-image/modules/a-image/src/lib/index.ts +1 -0
  144. package/vona/src/suite-vendor/a-image/modules/a-image/src/types/image.ts +18 -0
  145. package/vona/src/suite-vendor/a-image/modules/a-image/src/types/imageProvider.ts +28 -2
  146. package/vona/src/suite-vendor/a-image/modules/image-cloudflare/package.json +1 -1
  147. package/vona/src/suite-vendor/a-image/modules/image-cloudflare/src/bean/imageProvider.cloudflare.ts +13 -1
  148. package/vona/src/suite-vendor/a-image/modules/image-cloudflare/src/service/imageCloudflare.ts +26 -0
  149. package/vona/src/suite-vendor/a-image/modules/image-native/package.json +6 -2
  150. package/vona/src/suite-vendor/a-image/modules/image-native/src/.metadata/index.ts +37 -0
  151. package/vona/src/suite-vendor/a-image/modules/image-native/src/bean/imageProvider.native.ts +21 -1
  152. package/vona/src/suite-vendor/a-image/modules/image-native/src/controller/image.ts +57 -0
  153. package/vona/src/suite-vendor/a-image/modules/image-native/src/service/imageNative.ts +142 -34
  154. package/vona/src/suite-vendor/a-image/package.json +1 -1
  155. package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +1 -1
  156. package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
  157. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/entity.ts +2 -4
  158. package/vona/src/suite-vendor/a-vona/modules/a-ormutils/package.json +1 -1
  159. package/vona/src/suite-vendor/a-vona/modules/a-ormutils/src/lib/columns.ts +7 -3
  160. package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
  161. package/vona/src/suite-vendor/a-vona/modules/a-permission/src/.metadata/index.ts +24 -9
  162. package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/bean.permission.ts +87 -73
  163. package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/summerCache.permissionActionByRoles.ts +27 -0
  164. package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/summerCache.permissionUser.ts +20 -0
  165. package/vona/src/suite-vendor/a-vona/modules/a-startup/package.json +1 -1
  166. package/vona/src/suite-vendor/a-vona/modules/a-startup/src/service/startup.ts +4 -3
  167. package/vona/src/suite-vendor/a-vona/modules/a-upload/package.json +1 -1
  168. package/vona/src/suite-vendor/a-vona/modules/a-upload/src/bean/interceptor.upload.ts +5 -1
  169. package/vona/src/suite-vendor/a-vona/modules/a-user/package.json +1 -1
  170. package/vona/src/suite-vendor/a-vona/modules/a-user/src/.metadata/index.ts +0 -13
  171. package/vona/src/suite-vendor/a-vona/modules/a-user/src/lib/passport.ts +0 -7
  172. package/vona/src/suite-vendor/a-vona/modules/a-version/package.json +1 -1
  173. package/vona/src/suite-vendor/a-vona/modules/a-version/src/bean/meta.version.ts +2 -24
  174. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  175. package/zova/packages-utils/zova-jsx/package.json +2 -2
  176. package/zova/packages-zova/zova/package.json +3 -3
  177. package/zova/packages-zova/zova-core/package.json +1 -1
  178. package/zova/packages-zova/zova-core/src/bean/beanBase.ts +9 -13
  179. package/zova/pnpm-lock.yaml +418 -411
  180. package/zova/src/suite/a-demo/modules/demo-basic/src/page/toolOne/controller.tsx +2 -2
  181. package/zova/src/suite/a-demo/modules/demo-todo/src/page/todo/controller.tsx +2 -2
  182. package/zova/src/suite/a-home/modules/home-layoutadmin/src/component/layoutAdmin/controller.tsx +2 -2
  183. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/controller.tsx +2 -2
  184. package/zova/src/suite/a-home/modules/home-login/src/page/login/controller.tsx +2 -2
  185. package/zova/src/suite/cabloy-basic/modules/basic-details/src/component/blockDetails/controller.tsx +5 -1
  186. package/zova/src/suite/cabloy-basic/modules/basic-details/src/component/blockTable/controller.tsx +20 -15
  187. package/zova/src/suite/cabloy-basic/modules/basic-details/src/service/detail.tsx +6 -1
  188. package/zova/src/suite/cabloy-basic/modules/basic-file/cli/openapi.config.ts +9 -0
  189. package/zova/src/suite/cabloy-basic/modules/basic-file/package.json +58 -0
  190. package/zova/src/suite/cabloy-basic/modules/basic-file/src/.metadata/component/formFieldFile.ts +31 -0
  191. package/zova/src/suite/cabloy-basic/modules/basic-file/src/.metadata/index.ts +222 -0
  192. package/zova/src/suite/cabloy-basic/modules/basic-file/src/.metadata/locales.ts +7 -0
  193. package/zova/src/suite/cabloy-basic/modules/basic-file/src/.metadata/this.ts +2 -0
  194. package/zova/src/suite/cabloy-basic/modules/basic-file/src/api/file.ts +121 -0
  195. package/zova/src/suite/cabloy-basic/modules/basic-file/src/api/openapi/baseURL.ts +5 -0
  196. package/zova/src/suite/cabloy-basic/modules/basic-file/src/api/openapi/index.ts +3 -0
  197. package/zova/src/suite/cabloy-basic/modules/basic-file/src/api/openapi/schemas.ts +306 -0
  198. package/zova/src/suite/cabloy-basic/modules/basic-file/src/api/openapi/types.ts +5718 -0
  199. package/zova/src/suite/cabloy-basic/modules/basic-file/src/apiSchema/file.ts +40 -0
  200. package/zova/src/suite/cabloy-basic/modules/basic-file/src/bean/tableCell.file.tsx +187 -0
  201. package/zova/src/suite/cabloy-basic/modules/basic-file/src/component/formFieldFile/controller.tsx +534 -0
  202. package/zova/src/suite/cabloy-basic/modules/basic-file/src/config/locale/en-us.ts +15 -0
  203. package/zova/src/suite/cabloy-basic/modules/basic-file/src/config/locale/zh-cn.ts +15 -0
  204. package/zova/src/suite/cabloy-basic/modules/basic-file/src/index.ts +4 -0
  205. package/zova/src/suite/cabloy-basic/modules/basic-file/src/lib/file.ts +74 -0
  206. package/zova/src/suite/cabloy-basic/modules/basic-file/src/lib/index.ts +1 -0
  207. package/zova/src/suite/cabloy-basic/modules/basic-file/src/model/file.ts +23 -0
  208. package/zova/src/suite/cabloy-basic/modules/basic-file/src/types/file.ts +12 -0
  209. package/zova/src/suite/cabloy-basic/modules/basic-file/src/types/index.ts +1 -0
  210. package/zova/src/suite/cabloy-basic/modules/basic-file/tsconfig.build.json +13 -0
  211. package/zova/src/suite/cabloy-basic/modules/basic-file/tsconfig.json +5 -0
  212. package/zova/src/suite/cabloy-basic/modules/basic-image/src/.metadata/index.ts +61 -0
  213. package/zova/src/suite/cabloy-basic/modules/basic-image/src/api/image.ts +38 -1
  214. package/zova/src/suite/cabloy-basic/modules/basic-image/src/api/imageNativeImage.ts +31 -0
  215. package/zova/src/suite/cabloy-basic/modules/basic-image/src/api/openapi/schemas.ts +52 -0
  216. package/zova/src/suite/cabloy-basic/modules/basic-image/src/api/openapi/types.ts +614 -1
  217. package/zova/src/suite/cabloy-basic/modules/basic-image/src/apiSchema/image.ts +10 -0
  218. package/zova/src/suite/cabloy-basic/modules/basic-image/src/apiSchema/imageNativeImage.ts +13 -0
  219. package/zova/src/suite/cabloy-basic/modules/basic-image/src/component/formFieldImage/controller.tsx +126 -62
  220. package/zova/src/suite/cabloy-basic/modules/basic-image/src/model/image.ts +23 -0
  221. package/zova/src/suite/cabloy-basic/modules/basic-page/src/component/blockPage/controller.tsx +44 -4
  222. package/zova/src/suite/cabloy-basic/modules/basic-page/src/component/blockTable/controller.tsx +17 -12
  223. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockPageEntry/controller.tsx +2 -2
  224. package/zova/src/suite/cabloy-basic/modules/basic-resource/src/component/formFieldResourcePicker/controller.tsx +2 -2
  225. package/zova/src/suite/cabloy-basic/modules/basic-table/src/component/table/controller.tsx +7 -2
  226. package/zova/src/suite/cabloy-basic/modules/basic-table/src/component/table/render.tsx +34 -33
  227. package/zova/src/suite/cabloy-basic/package.json +1 -0
  228. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/package.json +1 -1
  229. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/src/model/resource.ts +5 -3
  230. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/src/page/entry/controller.tsx +2 -2
  231. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/src/page/resource/controller.tsx +2 -2
  232. package/zova/src/suite-vendor/a-cabloy/package.json +2 -2
  233. package/zova/src/suite-vendor/a-zova/modules/a-model/package.json +1 -1
  234. package/zova/src/suite-vendor/a-zova/modules/a-model/src/lib/utils.ts +17 -17
  235. package/zova/src/suite-vendor/a-zova/modules/a-openapi/package.json +1 -1
  236. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/model/sdk.ts +8 -3
  237. package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
  238. package/zova/src/suite-vendor/a-zova/package.json +4 -4
  239. package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/summerCache.permission.ts +0 -17
  240. package/vona/src/suite-vendor/a-vona/modules/a-user/src/bean/guard.userName.ts +0 -35
@@ -0,0 +1,144 @@
1
+ import type { TableIdentity } from 'table-identity';
2
+
3
+ import type { IFileProviderClientOptions, IFileProviderRecord } from './fileProvider.ts';
4
+ import type { IFileSceneRecord } from './fileScene.ts';
5
+
6
+ export type TypeFileMeta = Record<string, unknown>;
7
+ export type TypeFileDeliveryExpiry = Date | string | number;
8
+
9
+ export interface IFileDeliveryOptions {
10
+ signed?: boolean;
11
+ expiresIn?: number;
12
+ expiresAt?: TypeFileDeliveryExpiry;
13
+ responseMode?: 'auto' | 'buffer' | 'url';
14
+ }
15
+
16
+ export interface IFileUploadInput<TMeta extends TypeFileMeta = TypeFileMeta> {
17
+ file: string;
18
+ filename?: string;
19
+ contentType?: string;
20
+ size?: number;
21
+ objectKey?: string;
22
+ public?: boolean;
23
+ meta?: TMeta;
24
+ }
25
+
26
+ export interface IFileUploadUrlInput<TMeta extends TypeFileMeta = TypeFileMeta> {
27
+ url: string;
28
+ filename?: string;
29
+ contentType?: string;
30
+ size?: number;
31
+ objectKey?: string;
32
+ public?: boolean;
33
+ meta?: TMeta;
34
+ }
35
+
36
+ export interface IFileDirectUploadInput<TMeta extends TypeFileMeta = TypeFileMeta> {
37
+ filename?: string;
38
+ contentType?: string;
39
+ size?: number;
40
+ objectKey?: string;
41
+ public?: boolean;
42
+ meta?: TMeta;
43
+ expiry?: TypeFileDeliveryExpiry;
44
+ }
45
+
46
+ export interface IFileUploadContextResolved<TMeta extends TypeFileMeta = TypeFileMeta> {
47
+ fileScene: keyof IFileSceneRecord;
48
+ providerName: keyof IFileProviderRecord;
49
+ clientName: string;
50
+ public: boolean;
51
+ meta?: TMeta;
52
+ }
53
+
54
+ export interface IFileDownloadResult {
55
+ kind: 'url' | 'buffer';
56
+ url?: string;
57
+ buffer?: Buffer;
58
+ filename?: string;
59
+ contentType?: string;
60
+ signed?: boolean;
61
+ }
62
+
63
+ export interface IFileProviderResource<TMeta extends TypeFileMeta = TypeFileMeta, TRaw = unknown> {
64
+ resourceId: string;
65
+ bucket?: string;
66
+ objectKey?: string;
67
+ filename?: string;
68
+ contentType?: string;
69
+ size?: number;
70
+ etag?: string;
71
+ public?: boolean;
72
+ meta?: TMeta;
73
+ storagePath?: string;
74
+ deliveryBaseUrl?: string;
75
+ raw?: TRaw;
76
+ }
77
+
78
+ export interface IFileProviderDirectUploadResource<
79
+ TMeta extends TypeFileMeta = TypeFileMeta,
80
+ TRaw = unknown,
81
+ > extends IFileProviderResource<TMeta, TRaw> {
82
+ uploadUrl: string;
83
+ headers?: Record<string, string>;
84
+ method?: 'PUT' | 'POST';
85
+ }
86
+
87
+ export interface IFileResource<
88
+ TMeta extends TypeFileMeta = TypeFileMeta,
89
+ TRaw = unknown,
90
+ > extends IFileProviderResource<TMeta, TRaw> {
91
+ id: TableIdentity;
92
+ provider: keyof IFileProviderRecord;
93
+ clientName: string;
94
+ fileScene?: keyof IFileSceneRecord | string;
95
+ uploadedAt?: Date;
96
+ }
97
+
98
+ export interface IFileDirectUploadResult<
99
+ TMeta extends TypeFileMeta = TypeFileMeta,
100
+ TRaw = unknown,
101
+ > extends IFileResource<TMeta, TRaw> {
102
+ uploadUrl: string;
103
+ headers?: Record<string, string>;
104
+ method?: 'PUT' | 'POST';
105
+ }
106
+
107
+ export interface IFileUploadOptions<
108
+ TClientOptions extends IFileProviderClientOptions = IFileProviderClientOptions,
109
+ TMeta extends TypeFileMeta = TypeFileMeta,
110
+ > {
111
+ clientName?: string;
112
+ clientOptions?: TClientOptions;
113
+ public?: boolean;
114
+ meta?: TMeta;
115
+ fileScene?: keyof IFileSceneRecord;
116
+ }
117
+
118
+ export interface IFileUploadPolicyResolved<
119
+ TMeta extends TypeFileMeta = TypeFileMeta,
120
+ > extends IFileUploadContextResolved<TMeta> {
121
+ maxSize?: number;
122
+ mimeTypes?: string[];
123
+ extensions?: string[];
124
+ multiple?: boolean;
125
+ fileSize: number;
126
+ mimeType: string;
127
+ }
128
+
129
+ export interface IFileUploadTokenPayload<
130
+ TMeta extends TypeFileMeta = TypeFileMeta,
131
+ > extends IFileUploadPolicyResolved<TMeta> {
132
+ kind: 'fileUpload';
133
+ }
134
+
135
+ export interface IFileDownloadTokenPayload {
136
+ kind: 'fileDownload';
137
+ fileId: TableIdentity;
138
+ }
139
+
140
+ declare module 'vona' {
141
+ export interface ILoggerChildRecord {
142
+ file: never;
143
+ }
144
+ }
@@ -0,0 +1,111 @@
1
+ import type { OmitNever } from 'vona';
2
+ import type { ServiceOnion, TypeOnionOptionsEnableSimple } from 'vona-module-a-onion';
3
+
4
+ import type { EntityFile } from '../entity/file.ts';
5
+ import type { EntityFileProvider } from '../entity/fileProvider.ts';
6
+ import type {
7
+ IFileDeliveryOptions,
8
+ IFileDirectUploadInput,
9
+ IFileDownloadResult,
10
+ IFileProviderDirectUploadResource,
11
+ IFileProviderResource,
12
+ IFileUploadInput,
13
+ IFileUploadUrlInput,
14
+ } from './file.ts';
15
+
16
+ export type TypeFileProviderPick = Partial<
17
+ Pick<EntityFileProvider, 'id' | 'providerName' | 'clientName'>
18
+ >;
19
+
20
+ export interface IFileProviderRecord {}
21
+
22
+ export interface IFileProviderClientRecord {
23
+ default: never;
24
+ }
25
+
26
+ export interface IFileProviderClientOptions {
27
+ bucket?: string;
28
+ deliveryBaseUrl?: string;
29
+ public?: boolean;
30
+ presignExpiresIn?: number;
31
+ signedDeliveryKind?: 'proxy' | 'provider';
32
+ }
33
+
34
+ export type TypeFileProviderClientOptions<T> =
35
+ T extends IDecoratorFileProviderOptions<any, infer O> ? O : never;
36
+
37
+ export type TypeFileProviderClientName<T> =
38
+ T extends IDecoratorFileProviderOptions<infer R, any> ? keyof R & string : never;
39
+
40
+ export interface IDecoratorFileProviderOptions<
41
+ R extends IFileProviderClientRecord = IFileProviderClientRecord,
42
+ T extends IFileProviderClientOptions = IFileProviderClientOptions,
43
+ > extends TypeOnionOptionsEnableSimple {
44
+ base?: T;
45
+ clients?: { [K in keyof R]?: R[K] extends undefined ? T : R[K] };
46
+ }
47
+
48
+ export type TypeFileProviderOptionsByName<N extends keyof IFileProviderRecord> =
49
+ IFileProviderRecord[N];
50
+
51
+ export type TypeFileProviderClientOptionsByName<N extends keyof IFileProviderRecord> =
52
+ TypeFileProviderOptionsByName<N> extends IDecoratorFileProviderOptions<any, any>
53
+ ? TypeFileProviderClientOptions<TypeFileProviderOptionsByName<N>>
54
+ : never;
55
+
56
+ export type TypeFileProviderClientNameByName<N extends keyof IFileProviderRecord> =
57
+ TypeFileProviderOptionsByName<N> extends IDecoratorFileProviderOptions<any, any>
58
+ ? TypeFileProviderClientName<TypeFileProviderOptionsByName<N>>
59
+ : never;
60
+
61
+ export type TypeFileProviderExecuteByName<N extends keyof IFileProviderRecord> =
62
+ TypeFileProviderOptionsByName<N> extends IDecoratorFileProviderOptions<any, any>
63
+ ? IFileProviderExecute<TypeFileProviderClientOptionsByName<N>, TypeFileProviderOptionsByName<N>>
64
+ : never;
65
+
66
+ export interface IFileProviderExecute<
67
+ T extends IFileProviderClientOptions = IFileProviderClientOptions,
68
+ O extends IDecoratorFileProviderOptions = IDecoratorFileProviderOptions,
69
+ > {
70
+ upload(input: IFileUploadInput, clientOptions: T, options: O): Promise<IFileProviderResource>;
71
+ uploadUrl?(
72
+ input: IFileUploadUrlInput,
73
+ clientOptions: T,
74
+ options: O,
75
+ ): Promise<IFileProviderResource>;
76
+ createDirectUpload?(
77
+ input: IFileDirectUploadInput,
78
+ clientOptions: T,
79
+ options: O,
80
+ ): Promise<IFileProviderDirectUploadResource>;
81
+ get(file: EntityFile, clientOptions: T, options: O): Promise<IFileProviderResource | undefined>;
82
+ delete(file: EntityFile, clientOptions: T, options: O): Promise<void>;
83
+ getDownloadUrl(
84
+ file: EntityFile,
85
+ clientOptions: T,
86
+ options: O,
87
+ deliveryOptions?: IFileDeliveryOptions,
88
+ ): Promise<string>;
89
+ download?(
90
+ file: EntityFile,
91
+ clientOptions: T,
92
+ options: O,
93
+ deliveryOptions?: IFileDeliveryOptions,
94
+ ): Promise<IFileDownloadResult>;
95
+ }
96
+
97
+ declare module 'vona-module-a-onion' {
98
+ export interface BeanOnion {
99
+ fileProvider: ServiceOnion<IFileProviderRecord>;
100
+ }
101
+ }
102
+
103
+ declare module 'vona' {
104
+ export interface ConfigOnions {
105
+ fileProvider: OmitNever<IFileProviderRecord>;
106
+ }
107
+
108
+ export interface IBeanSceneRecord {
109
+ fileProvider: never;
110
+ }
111
+ }
@@ -0,0 +1,53 @@
1
+ import type { OmitNever, VonaContext } from 'vona';
2
+ import type { ServiceOnion } from 'vona-module-a-onion';
3
+
4
+ import type { IFileProviderRecord } from './fileProvider.ts';
5
+
6
+ export interface IFileSceneRecord {}
7
+
8
+ export interface IFileSceneOptionsUpload {
9
+ maxSize?: number;
10
+ mimeTypes?: string[];
11
+ extensions?: string[];
12
+ multiple?: boolean;
13
+ public?: boolean;
14
+ }
15
+
16
+ export interface IDecoratorFileSceneOptionsProvider {
17
+ providerName?: keyof IFileProviderRecord;
18
+ clientName?: string;
19
+ }
20
+
21
+ export type TypeFileSceneOptionsResolver = (
22
+ ctx: VonaContext,
23
+ ) => Promise<IDecoratorFileSceneOptionsProvider>;
24
+
25
+ export type TypeDecoratorFileSceneOptionsProvider =
26
+ | TypeFileSceneOptionsResolver
27
+ | IDecoratorFileSceneOptionsProvider;
28
+
29
+ export type TypeFileSceneOptionsMetaResolver = (
30
+ ctx: VonaContext,
31
+ ) => Promise<Record<string, any> | undefined> | Record<string, any> | undefined;
32
+
33
+ export interface IDecoratorFileSceneOptions {
34
+ provider?: TypeDecoratorFileSceneOptionsProvider;
35
+ upload?: IFileSceneOptionsUpload;
36
+ meta?: Record<string, any> | TypeFileSceneOptionsMetaResolver;
37
+ }
38
+
39
+ declare module 'vona-module-a-onion' {
40
+ export interface BeanOnion {
41
+ fileScene: ServiceOnion<IFileSceneRecord>;
42
+ }
43
+ }
44
+
45
+ declare module 'vona' {
46
+ export interface ConfigOnions {
47
+ fileScene: OmitNever<IFileSceneRecord>;
48
+ }
49
+
50
+ export interface IBeanSceneRecord {
51
+ fileScene: never;
52
+ }
53
+ }
@@ -0,0 +1,3 @@
1
+ export * from './file.ts';
2
+ export * from './fileProvider.ts';
3
+ export * from './fileScene.ts';
@@ -0,0 +1,11 @@
1
+ {
2
+ "extends": "../../tsconfig.base",
3
+ "compilerOptions": {
4
+ "rootDir": "src",
5
+ "declaration": true,
6
+ "declarationMap": true,
7
+ "emitDeclarationOnly": true,
8
+ "outDir": "dist"
9
+ },
10
+ "include": ["src", "src/.metadata/*.ts", "src/**/*.json"]
11
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "extends": "../../tsconfig.base",
3
+ "compilerOptions": {
4
+ "noEmit": true
5
+ },
6
+ "include": ["src", "src/.metadata/*.ts", "src/**/*.json", "test"]
7
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "vona-module-file-cloudflare",
3
+ "version": "5.0.3",
4
+ "description": "",
5
+ "keywords": [
6
+ "Vona Module"
7
+ ],
8
+ "author": "",
9
+ "files": [
10
+ "dist",
11
+ "src"
12
+ ],
13
+ "type": "module",
14
+ "exports": {
15
+ ".": {
16
+ "types": [
17
+ "./src/index.ts",
18
+ "./dist/index.d.ts"
19
+ ],
20
+ "import": "./src/index.ts",
21
+ "default": "./dist/index.js"
22
+ },
23
+ "./package.json": "./package.json"
24
+ },
25
+ "scripts": {
26
+ "clean": "rimraf dist tsconfig.build.tsbuildinfo",
27
+ "tsc:publish": "npm run clean && node ../../../../../packages-cli/cli/src/bin/vona.ts :bin:buildModule --sourcemap && tsc -p tsconfig.build.json",
28
+ "prepublishOnly": "npm run tsc:publish",
29
+ "prepack": "clean-package",
30
+ "postpack": "clean-package restore"
31
+ },
32
+ "dependencies": {
33
+ "@aws-sdk/client-s3": "^3.883.0",
34
+ "@aws-sdk/s3-request-presigner": "^3.883.0"
35
+ },
36
+ "devDependencies": {
37
+ "clean-package": "^2.2.0",
38
+ "rimraf": "^6.1.3"
39
+ },
40
+ "clean-package": {
41
+ "indent": 2,
42
+ "remove": [
43
+ "clean-package",
44
+ "exports.\\..import"
45
+ ]
46
+ },
47
+ "title": "file-cloudflare",
48
+ "vonaModule": {
49
+ "dependencies": {
50
+ "a-file": "5.0.0"
51
+ }
52
+ }
53
+ }
@@ -0,0 +1,104 @@
1
+ // eslint-disable
2
+ /** service: begin */
3
+ export * from '../service/fileCloudflare.ts';
4
+
5
+ import 'vona-module-a-bean';
6
+ declare module 'vona-module-a-bean' {
7
+
8
+ export interface IServiceRecord {
9
+ 'file-cloudflare:fileCloudflare': never;
10
+ }
11
+
12
+
13
+ }
14
+ declare module 'vona-module-file-cloudflare' {
15
+
16
+ export interface ServiceFileCloudflare {
17
+ /** @internal */
18
+ get scope(): ScopeModuleFileCloudflare;
19
+ }
20
+
21
+ export interface ServiceFileCloudflare {
22
+ get $beanFullName(): 'file-cloudflare.service.fileCloudflare';
23
+ get $onionName(): 'file-cloudflare:fileCloudflare';
24
+
25
+ }
26
+ }
27
+ /** service: end */
28
+ /** service: begin */
29
+ import type { ServiceFileCloudflare } from '../service/fileCloudflare.ts';
30
+ export interface IModuleService {
31
+ 'fileCloudflare': ServiceFileCloudflare;
32
+ }
33
+ /** service: end */
34
+ /** service: begin */
35
+
36
+ import 'vona';
37
+ declare module 'vona' {
38
+ export interface IBeanRecordGeneral {
39
+ 'file-cloudflare.service.fileCloudflare': ServiceFileCloudflare;
40
+ }
41
+ }
42
+ /** service: end */
43
+ /** fileProvider: begin */
44
+ export * from '../bean/fileProvider.cloudflare.ts';
45
+ import type { IFileProviderOptionsCloudflare } from '../bean/fileProvider.cloudflare.ts';
46
+ import 'vona-module-a-file';
47
+ declare module 'vona-module-a-file' {
48
+
49
+ export interface IFileProviderRecord {
50
+ 'file-cloudflare:cloudflare': IFileProviderOptionsCloudflare;
51
+ }
52
+
53
+
54
+ }
55
+ declare module 'vona-module-file-cloudflare' {
56
+
57
+ export interface FileProviderCloudflare {
58
+ /** @internal */
59
+ get scope(): ScopeModuleFileCloudflare;
60
+ }
61
+
62
+ export interface FileProviderCloudflare {
63
+ get $beanFullName(): 'file-cloudflare.fileProvider.cloudflare';
64
+ get $onionName(): 'file-cloudflare:cloudflare';
65
+ get $onionOptions(): IFileProviderOptionsCloudflare;
66
+ }
67
+ }
68
+ /** fileProvider: end */
69
+ /** fileProvider: begin */
70
+ import type { FileProviderCloudflare } from '../bean/fileProvider.cloudflare.ts';
71
+ export interface IModuleFileProvider {
72
+ 'cloudflare': FileProviderCloudflare;
73
+ }
74
+ /** fileProvider: end */
75
+ /** scope: begin */
76
+ import { BeanScopeBase, type BeanScopeUtil } from 'vona';
77
+ import { Scope } from 'vona-module-a-bean';
78
+
79
+ @Scope()
80
+ export class ScopeModuleFileCloudflare extends BeanScopeBase {}
81
+
82
+ export interface ScopeModuleFileCloudflare {
83
+ util: BeanScopeUtil;
84
+ service: IModuleService;
85
+ fileProvider: IModuleFileProvider;
86
+ }
87
+
88
+ import 'vona';
89
+ declare module 'vona' {
90
+ export interface IBeanScopeRecord {
91
+ 'file-cloudflare': ScopeModuleFileCloudflare;
92
+ }
93
+
94
+ export interface IBeanScopeContainer {
95
+ fileCloudflare: ScopeModuleFileCloudflare;
96
+ }
97
+
98
+
99
+
100
+
101
+
102
+
103
+ }
104
+ /** scope: end */
@@ -0,0 +1,2 @@
1
+ export const __ThisModule__ = 'file-cloudflare';
2
+ export { ScopeModuleFileCloudflare as ScopeModule } from './index.ts';
@@ -0,0 +1,123 @@
1
+ import type {
2
+ EntityFile,
3
+ IDecoratorFileProviderOptions,
4
+ IFileDeliveryOptions,
5
+ IFileDirectUploadInput,
6
+ IFileDownloadResult,
7
+ IFileProviderClientOptions,
8
+ IFileProviderClientRecord,
9
+ IFileProviderExecute,
10
+ IFileProviderResource,
11
+ IFileUploadInput,
12
+ IFileUploadUrlInput,
13
+ } from 'vona-module-a-file';
14
+
15
+ import { BeanBase } from 'vona';
16
+ import { FileProvider } from 'vona-module-a-file';
17
+
18
+ export interface IFileProviderCloudflareClientRecord extends IFileProviderClientRecord {}
19
+
20
+ export interface IFileProviderCloudflareClientOptions extends IFileProviderClientOptions {
21
+ endpoint?: string;
22
+ region?: string;
23
+ accessKeyId?: string;
24
+ secretAccessKey?: string;
25
+ forcePathStyle?: boolean;
26
+ }
27
+
28
+ export interface IFileProviderOptionsCloudflare extends IDecoratorFileProviderOptions<
29
+ IFileProviderCloudflareClientRecord,
30
+ IFileProviderCloudflareClientOptions
31
+ > {}
32
+
33
+ @FileProvider<IFileProviderOptionsCloudflare>({
34
+ base: {
35
+ signedDeliveryKind: 'provider',
36
+ public: false,
37
+ region: 'auto',
38
+ },
39
+ })
40
+ export class FileProviderCloudflare
41
+ extends BeanBase
42
+ implements
43
+ IFileProviderExecute<IFileProviderCloudflareClientOptions, IFileProviderOptionsCloudflare>
44
+ {
45
+ async upload(
46
+ input: IFileUploadInput,
47
+ clientOptions: IFileProviderCloudflareClientOptions,
48
+ _options: IFileProviderOptionsCloudflare,
49
+ ): Promise<IFileProviderResource> {
50
+ return await this.scope.service.fileCloudflare.upload(input, clientOptions);
51
+ }
52
+
53
+ async uploadUrl(
54
+ input: IFileUploadUrlInput,
55
+ clientOptions: IFileProviderCloudflareClientOptions,
56
+ _options: IFileProviderOptionsCloudflare,
57
+ ) {
58
+ return await this.scope.service.fileCloudflare.uploadUrl(input, clientOptions);
59
+ }
60
+
61
+ async createDirectUpload(
62
+ input: IFileDirectUploadInput,
63
+ clientOptions: IFileProviderCloudflareClientOptions,
64
+ _options: IFileProviderOptionsCloudflare,
65
+ ) {
66
+ return await this.scope.service.fileCloudflare.createDirectUpload(input, clientOptions);
67
+ }
68
+
69
+ async get(
70
+ file: EntityFile,
71
+ clientOptions: IFileProviderCloudflareClientOptions,
72
+ _options: IFileProviderOptionsCloudflare,
73
+ ) {
74
+ return {
75
+ resourceId: file.resourceId,
76
+ bucket: file.bucket ?? clientOptions.bucket,
77
+ objectKey: file.objectKey,
78
+ filename: file.filename,
79
+ contentType: file.contentType,
80
+ size: file.size,
81
+ etag: file.etag,
82
+ public: file.public ?? clientOptions.public,
83
+ meta: file.meta,
84
+ deliveryBaseUrl: file.deliveryBaseUrl ?? clientOptions.deliveryBaseUrl,
85
+ };
86
+ }
87
+
88
+ async delete(
89
+ file: EntityFile,
90
+ clientOptions: IFileProviderCloudflareClientOptions,
91
+ _options: IFileProviderOptionsCloudflare,
92
+ ) {
93
+ await this.scope.service.fileCloudflare.remove(file, clientOptions);
94
+ }
95
+
96
+ async getDownloadUrl(
97
+ file: EntityFile,
98
+ clientOptions: IFileProviderCloudflareClientOptions,
99
+ _options: IFileProviderOptionsCloudflare,
100
+ deliveryOptions?: IFileDeliveryOptions,
101
+ ) {
102
+ return await this.scope.service.fileCloudflare.getDownloadUrl(
103
+ file,
104
+ clientOptions,
105
+ deliveryOptions,
106
+ );
107
+ }
108
+
109
+ async download(
110
+ file: EntityFile,
111
+ clientOptions: IFileProviderCloudflareClientOptions,
112
+ options: IFileProviderOptionsCloudflare,
113
+ deliveryOptions?: IFileDeliveryOptions,
114
+ ): Promise<IFileDownloadResult> {
115
+ return {
116
+ kind: 'url',
117
+ url: await this.getDownloadUrl(file, clientOptions, options, deliveryOptions),
118
+ filename: file.filename,
119
+ contentType: file.contentType,
120
+ signed: !!(deliveryOptions?.signed ?? !(file.public ?? clientOptions.public)),
121
+ };
122
+ }
123
+ }
@@ -0,0 +1 @@
1
+ export * from './.metadata/index.ts';