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
@@ -12,6 +12,7 @@ The goal is to explain two things clearly:
12
12
  Use this page together with:
13
13
 
14
14
  - [Reading Zova for Vue Developers](/frontend/reading-zova-for-vue-developers)
15
+ - [State Architecture for Vue Developers](/frontend/state-architecture-for-vue-developers)
15
16
  - [Zova Reactivity Under the Hood](/frontend/zova-reactivity-under-the-hood)
16
17
  - [Zova Source Reading Map](/frontend/zova-source-reading-map)
17
18
 
@@ -40,16 +41,16 @@ The big difference is the **business-facing programming model**.
40
41
 
41
42
  ## Side-by-side comparison table
42
43
 
43
- | Dimension | Zova | Vue 3 default mental model |
44
- | --- | --- | --- |
45
- | Reactive host | controller or bean instance | local `ref` / `reactive` values inside `setup()` |
46
- | Derived state | `$computed()` often assigned to instance fields | `computed()` usually assigned to local variables |
47
- | Main wiring surface | `__init__` and bean lifecycle | `setup()` and composition hooks |
48
- | Route state access | page-controller surface such as `$route`, `$params`, `$query` | composables such as `useRoute()` |
49
- | Sharing model | IoC containers and bean scopes unify more sharing patterns | composables, props/emits, `provide/inject`, and store layers often coexist |
50
- | Render organization | controller-oriented; render can stay in controller or move to render beans | component-oriented; template/render/setup stay the obvious center |
51
- | Growth path | split into controller, render, style, service, model, or other beans | split into composables, child components, and store or helper layers |
52
- | Architectural emphasis | explicit object roles, scope ownership, and runtime-managed surfaces | flexible local composition with more developer-managed assembly |
44
+ | Dimension | Zova | Vue 3 default mental model |
45
+ | ---------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
46
+ | Reactive host | controller or bean instance | local `ref` / `reactive` values inside `setup()` |
47
+ | Derived state | `$computed()` often assigned to instance fields | `computed()` usually assigned to local variables |
48
+ | Main wiring surface | `__init__` and bean lifecycle | `setup()` and composition hooks |
49
+ | Route state access | page-controller surface such as `$route`, `$params`, `$query` | composables such as `useRoute()` |
50
+ | Sharing model | IoC containers and bean scopes unify more sharing patterns | composables, props/emits, `provide/inject`, and store layers often coexist |
51
+ | Render organization | controller-oriented; render can stay in controller or move to render beans | component-oriented; template/render/setup stay the obvious center |
52
+ | Growth path | split into controller, render, style, service, model, or other beans | split into composables, child components, and store or helper layers |
53
+ | Architectural emphasis | explicit object roles, scope ownership, and runtime-managed surfaces | flexible local composition with more developer-managed assembly |
53
54
 
54
55
  ## 1. Reactive host
55
56
 
@@ -0,0 +1,403 @@
1
+ # Fullstack Image Workflow
2
+
3
+ This page explains the fullstack image workflow in Cabloy Basic with a practical, contract-chain path.
4
+
5
+ In this page, **resolved relation field** means the DTO-side field such as `image` or `sceneImages` that carries `DtoImageView` data for frontend preview and display.
6
+
7
+ It fills the gap between the layer-specific image guides:
8
+
9
+ - [Backend Image Guide](/backend/image-guide)
10
+ - [Frontend Image Guide](/frontend/image-guide)
11
+
12
+ Use this page when the real question is not only backend image policy and not only frontend image rendering, but the bridge between the two.
13
+
14
+ Use this page together with:
15
+
16
+ - [Contract Loop Playbook](/fullstack/contract-loop-playbook)
17
+ - [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
18
+ - [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions)
19
+ - [Backend Image Guide](/backend/image-guide)
20
+ - [Frontend Image Guide](/frontend/image-guide)
21
+ - [Upload Guide](/backend/upload-guide)
22
+ - [Serialization Guide](/backend/serialization-guide)
23
+ - [Form Guide](/frontend/form-guide)
24
+ - [Table Guide](/frontend/table-guide)
25
+
26
+ > [!TIP]
27
+ > **Image workflow docs path**
28
+ >
29
+ > - **[Fullstack Image Workflow](/fullstack/image-workflow)** — learn the cross-stack chain from backend image field contract and scene policy to frontend `basic-image` consumption
30
+ > - **[Backend Image Guide](/backend/image-guide)** — learn image scenes, providers, serializer transforms, delivery policy, and backend lifecycle behavior
31
+ > - **[Frontend Image Guide](/frontend/image-guide)** — learn `basic-image:formFieldImage`, `basic-image:image`, relation previews, and client-side image-field behavior
32
+ >
33
+ > Use this page when the question is about how one image field travels across the full stack rather than only one layer.
34
+
35
+ ## Why this page exists
36
+
37
+ The repository now has a backend image guide and a frontend image guide.
38
+
39
+ What contributors and AI workflows often still need is one continuous answer to this narrower question:
40
+
41
+ > how does one image field travel from backend entity and DTO metadata to frontend form and table rendering?
42
+
43
+ This page answers that question by treating image handling as one contract chain rather than as disconnected snippets.
44
+
45
+ ## The shortest correct mental model
46
+
47
+ If you only remember one idea, remember this one:
48
+
49
+ > backend code owns the image field contract, image scene policy, and DTO-side image view resolution, while frontend `basic-image` resources consume that resolved contract for upload, preview, and display.
50
+
51
+ That means an image field usually has two connected surfaces:
52
+
53
+ - a stored identity field such as `imageId` or `sceneImageIds`
54
+ - a resolved relation field such as `image` or `sceneImages`
55
+
56
+ The fullstack workflow works best when both surfaces are authored deliberately and kept aligned.
57
+
58
+ ## The fullstack chain in one view
59
+
60
+ A practical image workflow usually looks like this:
61
+
62
+ 1. the backend entity stores image identity data such as `imageId` or `sceneImageIds`
63
+ 2. backend field metadata points to the frontend image resources with `ZovaRender.field(...)` and `ZovaRender.cell(...)`
64
+ 3. the backend image scene defines upload policy such as MIME type, size, and multiple-image rules
65
+ 4. the backend DTO resolves image IDs into `DtoImageView` or `DtoImageView[]` through `a-image:resolveView` or `a-image:resolveViews`
66
+ 5. the shared contract exposes both the stored ID field and the resolved relation field to frontend consumers
67
+ 6. frontend `basic-image:formFieldImage` binds the stored ID field while reusing the resolved relation field for preview cards and dialogs
68
+ 7. frontend `basic-image:image` uses the same resolved relation field to render thumbnails in list pages
69
+
70
+ This is not only a forward chain and not only a reverse chain.
71
+
72
+ Instead, it is one concrete business thread where backend contract truth, shared metadata, and frontend resource consumption cooperate.
73
+
74
+ For the broader decision model, read [Contract Loop Playbook](/fullstack/contract-loop-playbook).
75
+
76
+ ## Specimen A: single image on Student
77
+
78
+ The Student resource is the best single-image specimen because it shows the complete chain with the smallest number of moving parts.
79
+
80
+ ### Backend entity field
81
+
82
+ The Student entity stores one image identity field and points to the built-in image resources:
83
+
84
+ ```typescript
85
+ @Api.field(
86
+ v.title($locale('StudentImage')),
87
+ v.optional(),
88
+ ZovaRender.field('basic-image:formFieldImage', {
89
+ imageScene: 'training-student:studentImage',
90
+ relationName: 'image',
91
+ accept: ['image/png', 'image/jpeg', 'image/webp'],
92
+ maxSize: 2 * 1024 * 1024,
93
+ enableCrop: true,
94
+ cropAspectRatio: 1,
95
+ resize: {
96
+ width: 512,
97
+ height: 512,
98
+ fit: 'cover',
99
+ format: 'jpeg',
100
+ quality: 90,
101
+ },
102
+ }),
103
+ ZovaRender.cell('basic-image:image', { relationName: 'image' }),
104
+ v.tableIdentity(),
105
+ )
106
+ imageId?: TableIdentity;
107
+ ```
108
+
109
+ This already defines two important truths:
110
+
111
+ - the stored field is `imageId`
112
+ - the frontend resource identities are `basic-image:formFieldImage` and `basic-image:image`
113
+
114
+ ### Backend image scene
115
+
116
+ The Student image scene defines the upload policy:
117
+
118
+ ```typescript
119
+ @ImageScene({
120
+ upload: {
121
+ maxSize: 2 * 1024 * 1024,
122
+ mimeTypes: ['image/png', 'image/jpeg', 'image/webp'],
123
+ },
124
+ })
125
+ export class ImageSceneStudentImage extends BeanBase {}
126
+ ```
127
+
128
+ This means the backend owns the true upload policy even when the frontend also performs convenience validation.
129
+
130
+ ### DTO-side image resolution
131
+
132
+ The Student DTO resolves the stored ID into a resolved relation field:
133
+
134
+ ```typescript
135
+ @Api.field(
136
+ ZovaRender.visible(false),
137
+ v.optional(),
138
+ v.serializerTransform('a-image:resolveView', {
139
+ fieldName: 'imageId',
140
+ imageScene: 'training-student:studentImage',
141
+ }),
142
+ v.object(DtoImageView),
143
+ )
144
+ image?: DtoImageView;
145
+ ```
146
+
147
+ This is the bridge that turns:
148
+
149
+ - stored value: `imageId`
150
+ - resolved preview data: `image?: DtoImageView`
151
+
152
+ The same list-page branch is also visible in `DtoStudentSelectResItem`, where the row DTO resolves `image` for table usage.
153
+
154
+ ### Frontend consumption
155
+
156
+ On the frontend side, the built-in resources consume that contract shape:
157
+
158
+ - `basic-image:formFieldImage` binds the ID field and reuses the `image` resolved relation field for preview cards
159
+ - `basic-image:image` uses the same resolved relation field to render thumbnails in tables
160
+
161
+ This is the cleanest single-image chain in the repo.
162
+
163
+ ## Specimen B: multiple images on Record
164
+
165
+ The Record resource shows the plural branch.
166
+
167
+ ### Backend entity field
168
+
169
+ The Record entity stores an array of image IDs and points to the same built-in resources:
170
+
171
+ ```typescript
172
+ @Api.field(
173
+ v.title($locale('ScenePhotos')),
174
+ v.optional(),
175
+ ZovaRender.field('basic-image:formFieldImage', {
176
+ imageScene: 'training-record:sceneImage',
177
+ multiple: true,
178
+ maxCount: 9,
179
+ relationName: 'sceneImages',
180
+ accept: ['image/png', 'image/jpeg', 'image/webp'],
181
+ maxSize: 2 * 1024 * 1024,
182
+ enableCrop: false,
183
+ resize: {
184
+ width: 1280,
185
+ height: 1280,
186
+ fit: 'contain',
187
+ format: 'jpeg',
188
+ quality: 90,
189
+ },
190
+ }),
191
+ ZovaRender.cell('basic-image:image', { relationName: 'sceneImages' }),
192
+ v.array(v.tableIdentity()),
193
+ )
194
+ sceneImageIds?: TableIdentity[];
195
+ ```
196
+
197
+ ### Backend image scene
198
+
199
+ The matching scene enables multi-image upload policy:
200
+
201
+ ```typescript
202
+ @ImageScene({
203
+ upload: {
204
+ maxSize: 2 * 1024 * 1024,
205
+ mimeTypes: ['image/png', 'image/jpeg', 'image/webp'],
206
+ multiple: true,
207
+ },
208
+ })
209
+ export class ImageSceneSceneImage extends BeanBase {}
210
+ ```
211
+
212
+ ### DTO-side image resolution
213
+
214
+ The DTO resolves many IDs into many preview objects:
215
+
216
+ ```typescript
217
+ @Api.field(
218
+ ZovaRender.visible(false),
219
+ v.optional(),
220
+ v.serializerTransform('a-image:resolveViews', {
221
+ fieldName: 'sceneImageIds',
222
+ imageScene: 'training-record:sceneImage',
223
+ }),
224
+ v.array(DtoImageView),
225
+ )
226
+ sceneImages?: DtoImageView[];
227
+ ```
228
+
229
+ The same pattern also appears in `DtoRecordSelectResItem`, which makes the relation data available for list-page thumbnails.
230
+
231
+ ### Why this branch matters
232
+
233
+ This branch proves that the same workflow scales from:
234
+
235
+ - one ID -> one relation object
236
+ - many IDs -> many relation objects
237
+
238
+ without changing the overall contract-chain model.
239
+
240
+ ## Backend authoring responsibilities
241
+
242
+ The backend owns the contract truth.
243
+
244
+ For image workflows, that usually means:
245
+
246
+ - the entity field defines the stored data shape
247
+ - `ZovaRender.field(...)` chooses the form-side frontend resource identity
248
+ - `ZovaRender.cell(...)` chooses the table-side frontend resource identity
249
+ - the image scene bean defines upload policy
250
+ - the DTO serializer transform resolves stored IDs into preview-ready image view objects
251
+
252
+ A practical rule is:
253
+
254
+ - when the business meaning of the image field changes, start by changing backend truth first
255
+
256
+ For the backend-authoring details, read [Backend Image Guide](/backend/image-guide).
257
+
258
+ ## What crosses the contract boundary
259
+
260
+ The most important thing that crosses the fullstack boundary is not only the raw image ID.
261
+
262
+ What really crosses the boundary is the pairing of:
263
+
264
+ - stored identity field
265
+ - resolved preview field
266
+
267
+ In the single-image branch, that pair is usually:
268
+
269
+ - `imageId`
270
+ - `image?: DtoImageView`
271
+
272
+ In the multi-image branch, that pair is usually:
273
+
274
+ - `sceneImageIds`
275
+ - `sceneImages?: DtoImageView[]`
276
+
277
+ This is why the DTO serializer step matters so much.
278
+
279
+ It turns backend-owned identity data into frontend-friendly preview data without changing the persistence model.
280
+
281
+ ## Frontend consumption responsibilities
282
+
283
+ The frontend does not redefine the image field contract.
284
+
285
+ Instead, it consumes the contract through the built-in image resources.
286
+
287
+ ### `basic-image:formFieldImage`
288
+
289
+ The form-side resource is responsible for:
290
+
291
+ - selecting files
292
+ - performing frontend validation
293
+ - optionally cropping and resizing in the browser
294
+ - requesting an upload token
295
+ - uploading multipart data
296
+ - binding the stored image ID field
297
+ - synchronizing the resolved relation field for immediate UI refresh
298
+
299
+ ### `basic-image:image`
300
+
301
+ The table-side resource is responsible for:
302
+
303
+ - resolving relation-backed preview data first
304
+ - falling back to URL-style values when needed
305
+ - rendering thumbnails
306
+ - opening the shared preview dialog
307
+
308
+ ### Why `relationName` matters
309
+
310
+ The built-in frontend image resources work best when the resolved relation field is named predictably.
311
+
312
+ Common pairings are:
313
+
314
+ - `imageId` -> `image`
315
+ - `sceneImageIds` -> `sceneImages`
316
+
317
+ When your field names are nonstandard, set `relationName` explicitly so backend DTO resolution and frontend preview lookup stay aligned.
318
+
319
+ For the frontend runtime details, read [Frontend Image Guide](/frontend/image-guide).
320
+
321
+ ## Single-image vs multi-image differences
322
+
323
+ The contract chain stays the same, but three details change.
324
+
325
+ ### 1. Stored value shape
326
+
327
+ - single image: scalar ID such as `imageId`
328
+ - multiple images: ID array such as `sceneImageIds`
329
+
330
+ ### 2. DTO serializer transform
331
+
332
+ - single image: `a-image:resolveView`
333
+ - multiple images: `a-image:resolveViews`
334
+
335
+ ### 3. Relation preview shape
336
+
337
+ - single image: one `DtoImageView`
338
+ - multiple images: `DtoImageView[]`
339
+
340
+ That is the main branching point the fullstack doc should make explicit.
341
+
342
+ ## Where this page sits in the contract loop
343
+
344
+ This workflow is easiest to understand when you keep the contract-loop vocabulary precise.
345
+
346
+ - backend field metadata and DTO/image-scene changes belong to backend contract truth
347
+ - image DTO resolution is part of the backend-authored handoff
348
+ - frontend `basic-image` resources are consumers of that truth
349
+ - frontend-specific render behavior is not a reason to duplicate the backend contract
350
+
351
+ That is why this page sits between:
352
+
353
+ - [Contract Loop Playbook](/fullstack/contract-loop-playbook)
354
+ - [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
355
+ - [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions)
356
+
357
+ It is a bridge page for one concrete business thread rather than a general direction guide.
358
+
359
+ ## Verification workflow
360
+
361
+ When writing or changing image workflow docs, verify in this order.
362
+
363
+ 1. confirm the entity field still points to:
364
+ - `basic-image:formFieldImage`
365
+ - `basic-image:image`
366
+ 2. confirm the image scene still matches the specimen field
367
+ 3. confirm the DTO still uses:
368
+ - `a-image:resolveView` for single-image fields
369
+ - `a-image:resolveViews` for multi-image fields
370
+ 4. confirm the list-row DTOs still expose the same resolved relation fields for table usage
371
+ 5. confirm the frontend image resources still consume the same relation-name pattern
372
+ 6. confirm the page stays bridge-focused rather than duplicating the backend or frontend guides
373
+ 7. run the docs build and confirm the page appears under `Fullstack / Architecture & Integration`
374
+
375
+ ## Read together with
376
+
377
+ Use the surrounding docs based on which layer now needs deeper attention.
378
+
379
+ ### Backend policy and authoring details
380
+
381
+ - [Backend Image Guide](/backend/image-guide)
382
+ - [Upload Guide](/backend/upload-guide)
383
+ - [Serialization Guide](/backend/serialization-guide)
384
+ - [Controller Guide](/backend/controller-guide)
385
+
386
+ ### Frontend runtime and rendering details
387
+
388
+ - [Frontend Image Guide](/frontend/image-guide)
389
+ - [Form Guide](/frontend/form-guide)
390
+ - [Table Guide](/frontend/table-guide)
391
+ - [TableCell Authoring Cookbook](/frontend/table-cell-cookbook)
392
+
393
+ ### Broader fullstack bridge and contract-loop decisions
394
+
395
+ - [Contract Loop Playbook](/fullstack/contract-loop-playbook)
396
+ - [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
397
+ - [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions)
398
+
399
+ A good final question is:
400
+
401
+ - am I debugging one layer, or am I debugging the handoff between layers?
402
+
403
+ If the answer is the handoff, this page is the right place to start.
@@ -46,6 +46,7 @@ Use this path when the task is about how backend and frontend stay aligned insid
46
46
  - [Vona + Zova Integration](/fullstack/vona-zova-integration)
47
47
  - [Contract Loop Playbook](/fullstack/contract-loop-playbook)
48
48
  - [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions)
49
+ - [Fullstack Image Workflow](/fullstack/image-workflow)
49
50
  - [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
50
51
  - [Frontend Metadata Back to Backend](/fullstack/frontend-metadata-to-backend)
51
52
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cabloy",
3
- "version": "5.1.97",
3
+ "version": "5.1.99",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "A Node.js fullstack framework",
6
6
  "keywords": [
@@ -50,6 +50,7 @@ const OVERWRITE_DIRS: string[] = [
50
50
  const MERGE_DIRS: string[] = [
51
51
  // Claude project assets
52
52
  '.claude/commands',
53
+ '.claude/hooks',
53
54
  '.claude/skills',
54
55
  // Vona Claude project assets
55
56
  'vona/.claude/commands',
@@ -67,6 +68,7 @@ const BLACKLIST_DIRS: string[] = [
67
68
  const WHITELIST_FILES: string[] = [
68
69
  // root
69
70
  'CLAUDE.md',
71
+ '.claude/settings.json',
70
72
  'tsconfig.json',
71
73
  'tsconfig.base.json',
72
74
  'tsconfig.base.esm.json',
@@ -30,7 +30,6 @@
30
30
  "build:docker": "npm run prerun && npm run vona :bin:build -- --flavor=docker",
31
31
  "start": "pnpm -C ./dist/normal install && node ./dist/normal/bootstrap.js",
32
32
  "start:one": "pnpm -C ./dist/normal install && cross-env SERVER_WORKERS=1 node ./dist/normal/bootstrap.js",
33
- "start:docker": "pnpm -C ./dist/docker install && cross-env SERVER_WORKERS=1 node ./dist/docker/bootstrap.js",
34
33
  "prerun": "npm run vona :tools:deps",
35
34
  "format": "oxfmt --check",
36
35
  "format:fix": "oxfmt --write",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-cli",
3
- "version": "1.1.128",
3
+ "version": "1.1.129",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "vona cli",
6
6
  "keywords": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-cli-set-api",
3
- "version": "1.1.126",
3
+ "version": "1.1.127",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "vona cli-set-api",
6
6
  "keywords": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona",
3
- "version": "5.1.68",
3
+ "version": "5.1.72",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "Vona is an intuitive, elegant and powerful Node.js framework for rapidly developing enterprise applications of any size",
6
6
  "keywords": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-core",
3
- "version": "5.1.31",
3
+ "version": "5.1.32",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "vona",
6
6
  "keywords": [
@@ -1,29 +1,29 @@
1
1
  import type winston from 'winston';
2
2
 
3
3
  import type { ILoggerChildRecord, ILoggerClientRecord } from '../../types/interface/logger.ts';
4
- import type { IModuleLocaleText } from './resource/locale/type.ts';
4
+ // import type { IModuleLocaleText } from './resource/locale/type.ts';
5
5
  import type { IBeanScopeContainer } from './scope/beanScopeContainer.ts';
6
6
 
7
7
  import { BeanBaseSimple, SymbolBeanInstanceKey, SymbolModuleBelong } from './beanBaseSimple.ts';
8
8
 
9
- const SymbolText = Symbol('SymbolText');
9
+ // const SymbolText = Symbol('SymbolText');
10
10
  const SymbolLogger = Symbol('SymbolLogger');
11
11
  const SymbolLoggerChildren = Symbol('SymbolLoggerChildren');
12
12
 
13
13
  export class BeanBase extends BeanBaseSimple {
14
- private [SymbolText]: IModuleLocaleText;
14
+ // private [SymbolText]: IModuleLocaleText;
15
15
  private [SymbolLogger]: Record<keyof ILoggerClientRecord, winston.Logger> = {} as any;
16
16
  private [SymbolLoggerChildren]: Record<
17
17
  keyof ILoggerClientRecord,
18
18
  Record<string, winston.Logger>
19
19
  > = {} as any;
20
20
 
21
- protected get $text(): IModuleLocaleText {
22
- if (!this[SymbolText]) {
23
- this[SymbolText] = this.app.meta.locale.createLocaleText(this[SymbolModuleBelong]);
24
- }
25
- return this[SymbolText];
26
- }
21
+ // protected get $text(): IModuleLocaleText {
22
+ // if (!this[SymbolText]) {
23
+ // this[SymbolText] = this.app.meta.locale.createLocaleText(this[SymbolModuleBelong]);
24
+ // }
25
+ // return this[SymbolText];
26
+ // }
27
27
 
28
28
  protected get $logger() {
29
29
  return this.$loggerClient('default');
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-mock",
3
- "version": "6.1.31",
3
+ "version": "6.1.32",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "vona mock",
6
6
  "keywords": [