cabloy 5.1.65 → 5.1.67

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 (340) hide show
  1. package/.claude/skills/cabloy-resource-field-update/SKILL.md +6 -0
  2. package/CHANGELOG.md +55 -0
  3. package/cabloy-docs/.vitepress/config.mjs +1 -1
  4. package/cabloy-docs/backend/crud-workflow.md +33 -0
  5. package/cabloy-docs/backend/master-detail-workflow.md +149 -0
  6. package/cabloy-docs/frontend/bean-scene-authoring.md +1 -1
  7. package/cabloy-docs/frontend/cli.md +12 -1
  8. package/cabloy-docs/frontend/command-scene-authoring.md +12 -1
  9. package/cabloy-docs/frontend/component-guide.md +10 -0
  10. package/cabloy-docs/frontend/permission-formscene-action-visibility-guide.md +69 -7
  11. package/cabloy-docs/frontend/table-cell-cookbook.md +10 -0
  12. package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions.md +83 -2
  13. package/cabloy-docs/reference/bean-scene-boilerplates.md +9 -4
  14. package/package.json +1 -1
  15. package/vona/packages-cli/cabloy-cli/package.json +1 -1
  16. package/vona/packages-cli/cabloy-cli/src/lib/local.helper.ts +38 -0
  17. package/vona/packages-cli/cli/package.json +1 -1
  18. package/vona/packages-cli/cli-set-api/cli/templates/create/module/boilerplate/_package.json +1 -1
  19. package/vona/packages-cli/cli-set-api/cli/templates/tools/masterDetail/boilerplate/dto/<%=argv.detailDtoBaseName%>.tsx_ +18 -0
  20. package/vona/packages-cli/cli-set-api/cli/templates/tools/masterDetail/boilerplate/dto/<%=argv.detailDtoMutateName%>.tsx_ +17 -0
  21. package/vona/packages-cli/cli-set-api/cli/templates/tools/masterDetail/boilerplate/dto/<%=argv.detailDtoResItemName%>.tsx_ +60 -0
  22. package/vona/packages-cli/cli-set-api/cli/templates/tools/masterDetail/boilerplate/dto/<%=argv.detailDtoViewName%>.tsx_ +17 -0
  23. package/vona/packages-cli/cli-set-api/package.json +2 -2
  24. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.create.bean.ts +2 -6
  25. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.create.module.ts +3 -6
  26. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.create.suite.ts +1 -1
  27. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.create.test.ts +2 -6
  28. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.init.asset.ts +2 -6
  29. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.init.config.ts +2 -6
  30. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.init.constant.ts +2 -6
  31. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.init.error.ts +2 -6
  32. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.init.lib.ts +2 -6
  33. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.init.locale.ts +2 -6
  34. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.init.main.ts +2 -6
  35. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.init.monkey.ts +2 -6
  36. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.init.static.ts +2 -6
  37. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.init.types.ts +2 -6
  38. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.tools.crud.ts +2 -6
  39. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.tools.crudBasic.ts +2 -6
  40. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.tools.crudStart.ts +2 -6
  41. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.tools.masterDetail.ts +699 -0
  42. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.tools.metadata.ts +1 -2
  43. package/vona/packages-cli/cli-set-api/src/lib/beans.ts +2 -0
  44. package/vona/packages-cli/cli-set-api/src/lib/command/tools.masterDetail.ts +78 -0
  45. package/vona/packages-cli/cli-set-api/src/lib/commands.ts +2 -0
  46. package/vona/packages-vona/vona/package.json +1 -1
  47. package/vona/packages-vona/vona-core/package.json +1 -1
  48. package/vona/packages-vona/vona-core/src/lib/mappedClass/type.ts +1 -0
  49. package/vona/packages-vona/vona-core/src/lib/mappedClass/utils.ts +36 -14
  50. package/vona/packages-vona/vona-mock/package.json +1 -1
  51. package/vona/pnpm-lock.yaml +35 -11
  52. package/vona/src/suite/a-demo/modules/demo-basic/package.json +1 -1
  53. package/vona/src/suite/a-home/modules/home-base/package.json +1 -1
  54. package/vona/src/suite/a-home/modules/home-index/package.json +1 -1
  55. package/vona/src/suite/a-home/modules/home-user/package.json +1 -1
  56. package/vona/src/suite/a-training/modules/training-record/package.json +1 -1
  57. package/vona/src/suite/a-training/modules/training-record/src/.metadata/index.ts +232 -3
  58. package/vona/src/suite/a-training/modules/training-record/src/bean/ssrMenu.record.ts +29 -0
  59. package/vona/src/suite/a-training/modules/training-record/src/config/locale/en-us.ts +9 -1
  60. package/vona/src/suite/a-training/modules/training-record/src/config/locale/zh-cn.ts +9 -1
  61. package/vona/src/suite/a-training/modules/training-record/src/controller/record.ts +59 -0
  62. package/vona/src/suite/a-training/modules/training-record/src/dto/detailRecordSubjectBase.tsx +18 -0
  63. package/vona/src/suite/a-training/modules/training-record/src/dto/detailRecordSubjectMutate.tsx +17 -0
  64. package/vona/src/suite/a-training/modules/training-record/src/dto/detailRecordSubjectResItem.tsx +60 -0
  65. package/vona/src/suite/a-training/modules/training-record/src/dto/detailRecordSubjectView.tsx +17 -0
  66. package/vona/src/suite/a-training/modules/training-record/src/dto/recordCreate.tsx +45 -0
  67. package/vona/src/suite/a-training/modules/training-record/src/dto/recordSelectReq.tsx +38 -0
  68. package/vona/src/suite/a-training/modules/training-record/src/dto/recordSelectRes.tsx +11 -0
  69. package/vona/src/suite/a-training/modules/training-record/src/dto/recordSelectResItem.tsx +39 -0
  70. package/vona/src/suite/a-training/modules/training-record/src/dto/recordUpdate.tsx +45 -0
  71. package/vona/src/suite/a-training/modules/training-record/src/dto/recordView.tsx +42 -0
  72. package/vona/src/suite/a-training/modules/training-record/src/entity/record.tsx +23 -6
  73. package/vona/src/suite/a-training/modules/training-record/src/model/record.ts +15 -2
  74. package/vona/src/suite/a-training/modules/training-record/src/service/record.ts +50 -0
  75. package/vona/src/suite/a-training/modules/training-record/test/record.test.ts +138 -0
  76. package/vona/src/suite/a-training/modules/training-recordsubject/package.json +53 -0
  77. package/vona/src/suite/a-training/modules/training-recordsubject/src/.metadata/index.ts +198 -0
  78. package/vona/src/suite/a-training/modules/training-recordsubject/src/.metadata/locales.ts +18 -0
  79. package/vona/src/suite/a-training/modules/training-recordsubject/src/.metadata/this.ts +2 -0
  80. package/vona/src/suite/a-training/modules/training-recordsubject/src/bean/meta.index.ts +12 -0
  81. package/vona/src/suite/a-training/modules/training-recordsubject/src/bean/meta.version.ts +21 -0
  82. package/vona/src/suite/a-training/modules/training-recordsubject/src/config/locale/en-us.ts +9 -0
  83. package/vona/src/suite/a-training/modules/training-recordsubject/src/config/locale/zh-cn.ts +9 -0
  84. package/vona/src/suite/a-training/modules/training-recordsubject/src/entity/subject.tsx +42 -0
  85. package/vona/src/suite/a-training/modules/training-recordsubject/src/index.ts +2 -0
  86. package/vona/src/suite/a-training/modules/training-recordsubject/src/model/subject.ts +10 -0
  87. package/vona/src/suite/a-training/modules/training-recordsubject/tsconfig.build.json +11 -0
  88. package/vona/src/suite/a-training/modules/training-recordsubject/tsconfig.json +7 -0
  89. package/vona/src/suite/a-training/modules/training-student/package.json +1 -1
  90. package/vona/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +8 -1
  91. package/vona/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +8 -1
  92. package/vona/src/suite/a-training/modules/training-student/src/dto/detailRecordBase.tsx +17 -2
  93. package/vona/src/suite/a-training/modules/training-student/src/dto/detailRecordMutate.tsx +12 -17
  94. package/vona/src/suite/a-training/modules/training-student/src/dto/detailRecordResItem.tsx +26 -5
  95. package/vona/src/suite/a-training/modules/training-student/src/dto/detailRecordView.tsx +12 -14
  96. package/vona/src/suite/a-training/modules/training-student/src/dto/studentCreate.tsx +6 -4
  97. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectReq.tsx +3 -6
  98. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSummary.tsx +1 -1
  99. package/vona/src/suite/a-training/modules/training-student/src/dto/studentUpdate.tsx +14 -1
  100. package/vona/src/suite/a-training/modules/training-student/src/dto/studentView.tsx +14 -1
  101. package/vona/src/suite/a-training/modules/training-student/src/entity/student.tsx +2 -4
  102. package/vona/src/suite/a-training/modules/training-student/src/service/student.ts +22 -5
  103. package/vona/src/suite/a-training/modules/training-student/test/student.test.ts +69 -15
  104. package/vona/src/suite/a-training/package.json +1 -0
  105. package/vona/src/suite/a-training/tsconfig.json +3 -0
  106. package/vona/src/suite/cabloy-basic/modules/basic-siteadmin/package.json +1 -1
  107. package/vona/src/suite/cabloy-basic/modules/basic-siteweb/package.json +1 -1
  108. package/vona/src/suite-vendor/a-auth/modules/a-auth/package.json +2 -2
  109. package/vona/src/suite-vendor/a-auth/modules/auth-oauth/package.json +2 -2
  110. package/vona/src/suite-vendor/a-auth/modules/auth-simple/package.json +2 -2
  111. package/vona/src/suite-vendor/a-auth/package.json +2 -2
  112. package/vona/src/suite-vendor/a-cabloy/modules/a-cabloy/package.json +2 -2
  113. package/vona/src/suite-vendor/a-cabloy/modules/a-datasharding/package.json +2 -2
  114. package/vona/src/suite-vendor/a-cabloy/modules/a-datasource/package.json +2 -2
  115. package/vona/src/suite-vendor/a-cabloy/modules/a-socket/package.json +2 -2
  116. package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/package.json +2 -2
  117. package/vona/src/suite-vendor/a-cabloy/modules/a-ssrhmr/package.json +2 -2
  118. package/vona/src/suite-vendor/a-cabloy/modules/a-status/package.json +2 -2
  119. package/vona/src/suite-vendor/a-cabloy/package.json +1 -1
  120. package/vona/src/suite-vendor/a-captcha/modules/a-captcha/package.json +2 -2
  121. package/vona/src/suite-vendor/a-captcha/modules/captcha-simple/package.json +2 -2
  122. package/vona/src/suite-vendor/a-captcha/package.json +1 -1
  123. package/vona/src/suite-vendor/a-paypal/modules/a-paypal/package.json +2 -2
  124. package/vona/src/suite-vendor/a-paypal/package.json +1 -1
  125. package/vona/src/suite-vendor/a-vona/modules/a-aspect/package.json +2 -2
  126. package/vona/src/suite-vendor/a-vona/modules/a-aspectutils/package.json +2 -2
  127. package/vona/src/suite-vendor/a-vona/modules/a-bean/package.json +2 -2
  128. package/vona/src/suite-vendor/a-vona/modules/a-beanmutate/package.json +2 -2
  129. package/vona/src/suite-vendor/a-vona/modules/a-body/package.json +2 -2
  130. package/vona/src/suite-vendor/a-vona/modules/a-broadcast/package.json +2 -2
  131. package/vona/src/suite-vendor/a-vona/modules/a-cache/package.json +2 -2
  132. package/vona/src/suite-vendor/a-vona/modules/a-caching/package.json +2 -2
  133. package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +2 -2
  134. package/vona/src/suite-vendor/a-vona/modules/a-election/package.json +2 -2
  135. package/vona/src/suite-vendor/a-vona/modules/a-error/package.json +2 -2
  136. package/vona/src/suite-vendor/a-vona/modules/a-event/package.json +2 -2
  137. package/vona/src/suite-vendor/a-vona/modules/a-executor/package.json +2 -2
  138. package/vona/src/suite-vendor/a-vona/modules/a-hmr/package.json +2 -2
  139. package/vona/src/suite-vendor/a-vona/modules/a-hmrbase/package.json +2 -2
  140. package/vona/src/suite-vendor/a-vona/modules/a-index/package.json +2 -2
  141. package/vona/src/suite-vendor/a-vona/modules/a-instance/package.json +2 -2
  142. package/vona/src/suite-vendor/a-vona/modules/a-jwt/package.json +2 -2
  143. package/vona/src/suite-vendor/a-vona/modules/a-locale/package.json +2 -2
  144. package/vona/src/suite-vendor/a-vona/modules/a-logger/package.json +2 -2
  145. package/vona/src/suite-vendor/a-vona/modules/a-mail/package.json +2 -2
  146. package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/package.json +2 -2
  147. package/vona/src/suite-vendor/a-vona/modules/a-menu/package.json +2 -2
  148. package/vona/src/suite-vendor/a-vona/modules/a-meta/package.json +2 -2
  149. package/vona/src/suite-vendor/a-vona/modules/a-onion/package.json +2 -2
  150. package/vona/src/suite-vendor/a-vona/modules/a-openapi/package.json +2 -2
  151. package/vona/src/suite-vendor/a-vona/modules/a-openapischema/package.json +2 -2
  152. package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/package.json +2 -2
  153. package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/src/lib/const/decorator.ts +3 -1
  154. package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/src/lib/schema/makeSchemaLikes.ts +21 -17
  155. package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/src/lib/utils.ts +44 -2
  156. package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +2 -2
  157. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGet.ts +6 -2
  158. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoMutate.ts +13 -4
  159. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/utils.ts +1 -1
  160. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/relations_.ts +37 -16
  161. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/package.json +2 -2
  162. package/vona/src/suite-vendor/a-vona/modules/a-ormutils/package.json +2 -2
  163. package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +2 -2
  164. package/vona/src/suite-vendor/a-vona/modules/a-play/package.json +2 -2
  165. package/vona/src/suite-vendor/a-vona/modules/a-printtip/package.json +2 -2
  166. package/vona/src/suite-vendor/a-vona/modules/a-queue/package.json +2 -2
  167. package/vona/src/suite-vendor/a-vona/modules/a-redis/package.json +2 -2
  168. package/vona/src/suite-vendor/a-vona/modules/a-redlock/package.json +2 -2
  169. package/vona/src/suite-vendor/a-vona/modules/a-runtime/package.json +2 -2
  170. package/vona/src/suite-vendor/a-vona/modules/a-schedule/package.json +2 -2
  171. package/vona/src/suite-vendor/a-vona/modules/a-security/package.json +2 -2
  172. package/vona/src/suite-vendor/a-vona/modules/a-serialization/package.json +2 -2
  173. package/vona/src/suite-vendor/a-vona/modules/a-startup/package.json +2 -2
  174. package/vona/src/suite-vendor/a-vona/modules/a-static/package.json +2 -2
  175. package/vona/src/suite-vendor/a-vona/modules/a-summer/package.json +2 -2
  176. package/vona/src/suite-vendor/a-vona/modules/a-swagger/package.json +2 -2
  177. package/vona/src/suite-vendor/a-vona/modules/a-upload/package.json +2 -2
  178. package/vona/src/suite-vendor/a-vona/modules/a-user/package.json +2 -2
  179. package/vona/src/suite-vendor/a-vona/modules/a-validation/package.json +2 -2
  180. package/vona/src/suite-vendor/a-vona/modules/a-version/package.json +2 -2
  181. package/vona/src/suite-vendor/a-vona/modules/a-vona/package.json +2 -2
  182. package/vona/src/suite-vendor/a-vona/modules/a-web/package.json +2 -2
  183. package/vona/src/suite-vendor/a-vona/modules/a-web/src/lib/decorator/bean.ts +26 -5
  184. package/vona/src/suite-vendor/a-vona/modules/a-worker/package.json +2 -2
  185. package/vona/src/suite-vendor/a-vona/modules/a-zod/package.json +2 -2
  186. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  187. package/zova/packages-cli/cli/package.json +3 -3
  188. package/zova/packages-cli/cli-set-front/cli/templates/create/component/boilerplateDetailsActionBulk/controller.tsx_ +31 -0
  189. package/zova/packages-cli/cli-set-front/cli/templates/create/module/boilerplate/_package.json +1 -1
  190. package/zova/packages-cli/cli-set-front/cli/templates/rest/component.ts +21 -0
  191. package/zova/packages-cli/cli-set-front/cli/templates/rest/render.ts +4 -0
  192. package/zova/packages-cli/cli-set-front/package.json +3 -3
  193. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.create.bean.ts +2 -6
  194. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.create.mock.ts +2 -6
  195. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.create.module.ts +3 -6
  196. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.create.suite.ts +1 -1
  197. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.init.asset.ts +2 -6
  198. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.init.config.ts +2 -6
  199. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.init.constant.ts +2 -6
  200. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.init.error.ts +2 -6
  201. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.init.icon.ts +2 -6
  202. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.init.lib.ts +2 -6
  203. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.init.locale.ts +2 -6
  204. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.init.main.ts +2 -6
  205. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.init.mainSys.ts +2 -6
  206. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.init.monkey.ts +2 -6
  207. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.init.monkeySys.ts +2 -6
  208. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.init.types.ts +2 -6
  209. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.openapi.config.ts +1 -4
  210. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.openapi.generate.ts +2 -2
  211. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.refactor.anotherRender.ts +2 -6
  212. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.refactor.anotherStyle.ts +2 -6
  213. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.refactor.componentEmits.ts +2 -6
  214. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.refactor.componentGeneric.ts +2 -6
  215. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.refactor.componentModel.ts +2 -6
  216. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.refactor.componentProps.ts +2 -6
  217. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.refactor.componentSlots.ts +2 -6
  218. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.refactor.firstRender.ts +2 -6
  219. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.refactor.firstStyle.ts +2 -6
  220. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.refactor.pageParams.ts +2 -6
  221. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.refactor.pageQuery.ts +2 -6
  222. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.refactor.renameComponent.ts +2 -6
  223. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.tools.metadata.ts +1 -2
  224. package/zova/packages-cli/cli-set-front/src/lib/common/cliCreateComponent.ts +2 -6
  225. package/zova/packages-cli/cli-set-front/src/lib/common/cliCreatePage.ts +2 -6
  226. package/zova/packages-zova/zova/package.json +2 -2
  227. package/zova/pnpm-lock.yaml +695 -791
  228. package/zova/src/suite/a-demo/modules/demo-basic/package.json +1 -1
  229. package/zova/src/suite/a-demo/modules/demo-todo/package.json +1 -1
  230. package/zova/src/suite/a-devui/modules/devui-adapter/package.json +1 -1
  231. package/zova/src/suite/a-home/modules/home-api/package.json +1 -1
  232. package/zova/src/suite/a-home/modules/home-base/package.json +1 -1
  233. package/zova/src/suite/a-home/modules/home-icon/package.json +1 -1
  234. package/zova/src/suite/a-home/modules/home-indexadmin/package.json +1 -1
  235. package/zova/src/suite/a-home/modules/home-indexweb/package.json +1 -1
  236. package/zova/src/suite/a-home/modules/home-layoutadmin/package.json +1 -1
  237. package/zova/src/suite/a-home/modules/home-layoutempty/package.json +1 -1
  238. package/zova/src/suite/a-home/modules/home-layoutweb/package.json +1 -1
  239. package/zova/src/suite/a-home/modules/home-login/package.json +1 -1
  240. package/zova/src/suite/a-home/modules/home-passport/package.json +1 -1
  241. package/zova/src/suite/a-home/modules/home-theme/package.json +1 -1
  242. package/zova/src/suite/a-training/modules/training-student/package.json +3 -2
  243. package/zova/src/suite/cabloy-basic/modules/basic-adapter/package.json +1 -1
  244. package/zova/src/suite/cabloy-basic/modules/basic-app/package.json +1 -1
  245. package/zova/src/suite/cabloy-basic/modules/basic-app/src/bean/behavior.appModal.tsx +131 -13
  246. package/zova/src/suite/cabloy-basic/modules/basic-app/src/config/config.ts +15 -0
  247. package/zova/src/suite/cabloy-basic/modules/basic-app/src/service/appModal.ts +23 -5
  248. package/zova/src/suite/cabloy-basic/modules/basic-app/src/types/appModal.ts +30 -4
  249. package/zova/src/suite/cabloy-basic/modules/basic-captcha/package.json +1 -1
  250. package/zova/src/suite/cabloy-basic/modules/basic-commands/package.json +1 -1
  251. package/zova/src/suite/cabloy-basic/modules/basic-commandssync/package.json +1 -1
  252. package/zova/src/suite/cabloy-basic/modules/basic-currency/package.json +1 -1
  253. package/zova/src/suite/cabloy-basic/modules/basic-date/package.json +1 -1
  254. package/zova/src/suite/cabloy-basic/modules/basic-details/package.json +7 -2
  255. package/zova/src/suite/cabloy-basic/modules/basic-details/src/.metadata/component/blockForm.ts +31 -0
  256. package/zova/src/suite/cabloy-basic/modules/basic-details/src/.metadata/index.ts +149 -2
  257. package/zova/src/suite/cabloy-basic/modules/basic-details/src/bean/command.delete.tsx +47 -0
  258. package/zova/src/suite/cabloy-basic/modules/basic-details/src/bean/tableCell.actionDelete.tsx +52 -0
  259. package/zova/src/suite/cabloy-basic/modules/basic-details/src/bean/tableCell.actionOperationsRow.tsx +44 -6
  260. package/zova/src/suite/cabloy-basic/modules/basic-details/src/bean/tableCell.actionUpdate.tsx +73 -0
  261. package/zova/src/suite/cabloy-basic/modules/basic-details/src/bean/tableCell.actionView.tsx +64 -0
  262. package/zova/src/suite/cabloy-basic/modules/basic-details/src/bean/tableCell.lineNumber.tsx +30 -0
  263. package/zova/src/suite/cabloy-basic/modules/basic-details/src/component/actionCreate/controller.tsx +29 -5
  264. package/zova/src/suite/cabloy-basic/modules/basic-details/src/component/blockDetails/controller.tsx +28 -12
  265. package/zova/src/suite/cabloy-basic/modules/basic-details/src/component/blockForm/controller.tsx +53 -0
  266. package/zova/src/suite/cabloy-basic/modules/basic-details/src/component/blockTable/controller.tsx +7 -2
  267. package/zova/src/suite/cabloy-basic/modules/basic-details/src/component/blockToolbarBulk/controller.tsx +3 -1
  268. package/zova/src/suite/cabloy-basic/modules/basic-details/src/component/formFieldDetails/controller.tsx +24 -12
  269. package/zova/src/suite/cabloy-basic/modules/basic-details/src/config/locale/en-us.ts +4 -0
  270. package/zova/src/suite/cabloy-basic/modules/basic-details/src/config/locale/zh-cn.ts +4 -0
  271. package/zova/src/suite/cabloy-basic/modules/basic-details/src/index.ts +1 -0
  272. package/zova/src/suite/cabloy-basic/modules/basic-details/src/lib/index.ts +1 -0
  273. package/zova/src/suite/cabloy-basic/modules/basic-details/src/lib/utils.ts +12 -0
  274. package/zova/src/suite/cabloy-basic/modules/basic-details/src/service/detail.tsx +172 -0
  275. package/zova/src/suite/cabloy-basic/modules/basic-details/src/types/detail.ts +18 -0
  276. package/zova/src/suite/cabloy-basic/modules/basic-details/src/types/details.ts +11 -0
  277. package/zova/src/suite/cabloy-basic/modules/basic-details/src/types/dialogForm.ts +22 -0
  278. package/zova/src/suite/cabloy-basic/modules/basic-details/src/types/index.ts +2 -0
  279. package/zova/src/suite/cabloy-basic/modules/basic-form/package.json +1 -1
  280. package/zova/src/suite/cabloy-basic/modules/basic-input/package.json +1 -1
  281. package/zova/src/suite/cabloy-basic/modules/basic-page/package.json +1 -1
  282. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/package.json +1 -1
  283. package/zova/src/suite/cabloy-basic/modules/basic-resource/package.json +52 -0
  284. package/zova/src/suite/cabloy-basic/modules/basic-resource/src/.metadata/component/formFieldResourcePicker.ts +31 -0
  285. package/zova/src/suite/cabloy-basic/modules/basic-resource/src/.metadata/index.ts +103 -0
  286. package/zova/src/suite/cabloy-basic/modules/basic-resource/src/.metadata/this.ts +2 -0
  287. package/zova/src/suite/cabloy-basic/modules/basic-resource/src/bean/tableCell.resourcePicker.tsx +46 -0
  288. package/zova/src/suite/cabloy-basic/modules/basic-resource/src/component/formFieldResourcePicker/controller.tsx +157 -0
  289. package/zova/src/suite/cabloy-basic/modules/basic-resource/src/index.ts +1 -0
  290. package/zova/src/suite/cabloy-basic/modules/basic-resource/tsconfig.build.json +13 -0
  291. package/zova/src/suite/cabloy-basic/modules/basic-resource/tsconfig.json +5 -0
  292. package/zova/src/suite/cabloy-basic/modules/basic-select/package.json +1 -1
  293. package/zova/src/suite/cabloy-basic/modules/basic-table/package.json +1 -1
  294. package/zova/src/suite/cabloy-basic/modules/basic-text/package.json +1 -1
  295. package/zova/src/suite/cabloy-basic/package.json +1 -0
  296. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/package.json +2 -2
  297. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/src/page/entry/controller.tsx +1 -2
  298. package/zova/src/suite-vendor/a-cabloy/package.json +2 -2
  299. package/zova/src/suite-vendor/a-zova/modules/a-api/package.json +2 -2
  300. package/zova/src/suite-vendor/a-zova/modules/a-app/package.json +2 -2
  301. package/zova/src/suite-vendor/a-zova/modules/a-bean/package.json +2 -2
  302. package/zova/src/suite-vendor/a-zova/modules/a-behavior/package.json +2 -2
  303. package/zova/src/suite-vendor/a-zova/modules/a-behaviors/package.json +2 -2
  304. package/zova/src/suite-vendor/a-zova/modules/a-boundary/package.json +2 -2
  305. package/zova/src/suite-vendor/a-zova/modules/a-command/cli/command/boilerplate/{{sceneName}}.{{beanName}}.tsx_ +6 -1
  306. package/zova/src/suite-vendor/a-zova/modules/a-command/cli/commandBulk/boilerplate/{{sceneName}}.{{beanName}}.tsx_ +6 -1
  307. package/zova/src/suite-vendor/a-zova/modules/a-command/cli/commandDetailsRow/boilerplate/{{sceneName}}.{{beanName}}.tsx_ +20 -0
  308. package/zova/src/suite-vendor/a-zova/modules/a-command/cli/commandRow/boilerplate/{{sceneName}}.{{beanName}}.tsx_ +6 -1
  309. package/zova/src/suite-vendor/a-zova/modules/a-command/package.json +4 -3
  310. package/zova/src/suite-vendor/a-zova/modules/a-command/src/types/command.ts +2 -0
  311. package/zova/src/suite-vendor/a-zova/modules/a-fetch/package.json +2 -2
  312. package/zova/src/suite-vendor/a-zova/modules/a-form/package.json +2 -2
  313. package/zova/src/suite-vendor/a-zova/modules/a-form/src/component/form/controller.tsx +1 -0
  314. package/zova/src/suite-vendor/a-zova/modules/a-icon/package.json +2 -2
  315. package/zova/src/suite-vendor/a-zova/modules/a-interceptor/package.json +2 -2
  316. package/zova/src/suite-vendor/a-zova/modules/a-logger/package.json +2 -2
  317. package/zova/src/suite-vendor/a-zova/modules/a-meta/package.json +2 -2
  318. package/zova/src/suite-vendor/a-zova/modules/a-model/package.json +2 -2
  319. package/zova/src/suite-vendor/a-zova/modules/a-model/src/bean/bean.model/bean.model.useQuery.ts +2 -1
  320. package/zova/src/suite-vendor/a-zova/modules/a-openapi/package.json +3 -3
  321. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/lib/schema.ts +20 -4
  322. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/model/sdk.ts +4 -0
  323. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/action.ts +2 -1
  324. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/detail/detail.ts +10 -0
  325. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/detail/details.ts +4 -1
  326. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/detail/index.ts +1 -0
  327. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/rest.ts +2 -0
  328. package/zova/src/suite-vendor/a-zova/modules/a-router/package.json +2 -2
  329. package/zova/src/suite-vendor/a-zova/modules/a-routerstack/package.json +2 -2
  330. package/zova/src/suite-vendor/a-zova/modules/a-routertabs/package.json +2 -2
  331. package/zova/src/suite-vendor/a-zova/modules/a-ssr/package.json +2 -2
  332. package/zova/src/suite-vendor/a-zova/modules/a-ssrhmr/package.json +2 -2
  333. package/zova/src/suite-vendor/a-zova/modules/a-ssrserver/package.json +2 -2
  334. package/zova/src/suite-vendor/a-zova/modules/a-style/package.json +2 -2
  335. package/zova/src/suite-vendor/a-zova/modules/a-table/cli/detailsActionRow/boilerplate/{{sceneName}}.{{beanName}}.tsx_ +24 -0
  336. package/zova/src/suite-vendor/a-zova/modules/a-table/package.json +4 -3
  337. package/zova/src/suite-vendor/a-zova/modules/a-table/src/component/table/controller.tsx +5 -3
  338. package/zova/src/suite-vendor/a-zova/modules/a-zod/package.json +2 -2
  339. package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +3 -3
  340. package/zova/src/suite-vendor/a-zova/package.json +26 -26
@@ -149,11 +149,30 @@ export class LocalHelper {
149
149
  return moduleInfo;
150
150
  }
151
151
 
152
+ parseModuleInfoCanonical(moduleName, moduleRole = 'module') {
153
+ const moduleInfo = this.parseModuleInfo(moduleName);
154
+ if (moduleInfo.relativeName !== moduleName) {
155
+ throw new Error(
156
+ `${moduleRole} name must use the canonical relative module name: ${moduleInfo.relativeName}. Received: ${moduleName}. Use names like training-student, not package names or extra-suffixed names.`,
157
+ );
158
+ }
159
+ return moduleInfo;
160
+ }
161
+
152
162
  findModule(moduleName) {
153
163
  const moduleInfo = this.parseModuleInfo(moduleName);
154
164
  return this.cli.modulesMeta.modules[moduleInfo.relativeName];
155
165
  }
156
166
 
167
+ findModuleCanonical(moduleName, moduleRole = 'module') {
168
+ const moduleInfo = this.parseModuleInfoCanonical(moduleName, moduleRole);
169
+ const module = this.cli.modulesMeta.modules[moduleInfo.relativeName];
170
+ if (!module) {
171
+ throw new Error(`${moduleRole} does not exist: ${moduleName}`);
172
+ }
173
+ return module;
174
+ }
175
+
157
176
  parseSuiteInfo(suiteName) {
158
177
  const suiteInfo = ModuleInfo.parseInfoPro(
159
178
  suiteName,
@@ -164,11 +183,30 @@ export class LocalHelper {
164
183
  return suiteInfo;
165
184
  }
166
185
 
186
+ parseSuiteInfoCanonical(suiteName, suiteRole = 'suite') {
187
+ const suiteInfo = this.parseSuiteInfo(suiteName);
188
+ if (suiteInfo.relativeName !== suiteName) {
189
+ throw new Error(
190
+ `${suiteRole} name must use the canonical relative suite name: ${suiteInfo.relativeName}. Received: ${suiteName}. Use names like a-training, not package names or extra-suffixed names.`,
191
+ );
192
+ }
193
+ return suiteInfo;
194
+ }
195
+
167
196
  findSuite(suiteName) {
168
197
  const suiteInfo = this.parseSuiteInfo(suiteName);
169
198
  return this.cli.modulesMeta.suites[suiteInfo.relativeName];
170
199
  }
171
200
 
201
+ findSuiteCanonical(suiteName, suiteRole = 'suite') {
202
+ const suiteInfo = this.parseSuiteInfoCanonical(suiteName, suiteRole);
203
+ const suite = this.cli.modulesMeta.suites[suiteInfo.relativeName];
204
+ if (!suite) {
205
+ throw new Error(`${suiteRole} does not exist: ${suiteName}`);
206
+ }
207
+ return suite;
208
+ }
209
+
172
210
  async ensureDir(dir) {
173
211
  await fse.ensureDir(dir);
174
212
  return dir;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-cli",
3
- "version": "1.1.112",
3
+ "version": "1.1.119",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "vona cli",
6
6
  "keywords": [
@@ -25,7 +25,7 @@
25
25
  "tsc:publish": "npm run clean && node <%=argv.suite?'../../../../../':'../../../'%>packages-cli/cli/src/bin/vona.ts :bin:buildModule --sourcemap && tsc -p tsconfig.build.json",
26
26
  "prepublishOnly": "npm run tsc:publish",
27
27
  "prepack": "clean-package",
28
- "postpack": "clean-package restore && npm run clean"
28
+ "postpack": "clean-package restore"
29
29
  },
30
30
  "clean-package": {
31
31
  "indent": 2,
@@ -0,0 +1,18 @@
1
+ import type { IDecoratorDtoOptions } from 'vona-module-a-web';
2
+
3
+ import { $makeMetadata } from 'vona-module-a-openapiutils';
4
+ import { $Dto } from 'vona-module-a-orm';
5
+ import { Dto } from 'vona-module-a-web';
6
+ import { Model<%=argv.detailResourceNameCapitalize%> } from '<%=argv.detailPackageName%>';
7
+ import { ZovaRender } from 'zova-rest-cabloy-basic-admin';
8
+
9
+ export interface IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%> extends IDecoratorDtoOptions {}
10
+
11
+ @Dto<IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%>>({
12
+ fields: {
13
+ id: $makeMetadata(ZovaRender.visible(false)),
14
+ },
15
+ })
16
+ export class Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%> extends $Dto.get(() => Model<%=argv.detailResourceNameCapitalize%>, {
17
+ columns: ['id', 'deleted', 'name', 'description'],
18
+ }) {}
@@ -0,0 +1,17 @@
1
+ import type { IDecoratorDtoOptions } from 'vona-module-a-web';
2
+
3
+ import { $Dto } from 'vona-module-a-orm';
4
+ import { Dto } from 'vona-module-a-web';
5
+ import { Model<%=argv.detailResourceNameCapitalize%> } from '<%=argv.detailPackageName%>';
6
+ import { ZovaRender } from 'zova-rest-cabloy-basic-admin';
7
+
8
+ import { Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%> } from './<%=argv.detailDtoBaseName%>.tsx';
9
+
10
+ export interface IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoMutateName)%> extends IDecoratorDtoOptions {}
11
+
12
+ @Dto<IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoMutateName)%>>({
13
+ blocks: [ZovaRender.block('basic-details:blockForm')],
14
+ })
15
+ export class Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoMutateName)%> extends $Dto.mutate(() => Model<%=argv.detailResourceNameCapitalize%>, {
16
+ dtoClass: Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%>,
17
+ }) {}
@@ -0,0 +1,60 @@
1
+ import type { IDecoratorDtoOptions } from 'vona-module-a-web';
2
+
3
+ import { $makeMetadata, Api, v } from 'vona-module-a-openapiutils';
4
+ import { $Dto } from 'vona-module-a-orm';
5
+ import { Dto } from 'vona-module-a-web';
6
+ import { Model<%=argv.detailResourceNameCapitalize%> } from '<%=argv.detailPackageName%>';
7
+ import { ZovaRender } from 'zova-rest-cabloy-basic-admin';
8
+
9
+ import { $locale } from '../.metadata/locales.ts';
10
+ import { Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%> } from './<%=argv.detailDtoBaseName%>.tsx';
11
+
12
+ export interface IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoResItemName)%> extends IDecoratorDtoOptions {}
13
+
14
+ @Dto<IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoResItemName)%>>({
15
+ blocks: [
16
+ ZovaRender.block('basic-details:blockDetails', {
17
+ blocks: [
18
+ ZovaRender.block('basic-details:blockToolbarBulk', {
19
+ actions: [
20
+ ZovaRender.detailsActionBulk('basic-details:actionCreate', {
21
+ dialogOptions: { title: $locale('Add<%=argv.detailDialogTitleCapitalize%>') },
22
+ permission: { formScene: ['create', 'edit'] },
23
+ }),
24
+ ],
25
+ }),
26
+ ZovaRender.block('basic-details:blockTable'),
27
+ ],
28
+ }),
29
+ ],
30
+ fields: {
31
+ name: $makeMetadata(
32
+ ZovaRender.cell('basic-details:actionView', {
33
+ dialogOptions: { title: $locale('View<%=argv.detailDialogTitleCapitalize%>') },
34
+ }),
35
+ ),
36
+ },
37
+ })
38
+ export class Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoResItemName)%> extends $Dto.get(() => Model<%=argv.detailResourceNameCapitalize%>, {
39
+ dtoClass: Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%>,
40
+ }) {
41
+ @Api.field(v.title('#'), ZovaRender.order(1, 'core'), ZovaRender.cell('basic-details:lineNumber'))
42
+ _lineNumber?: number;
43
+
44
+ @Api.field(
45
+ v.title($locale('Operations')),
46
+ ZovaRender.order(1, 'max'),
47
+ ZovaRender.cell('basic-details:actionOperationsRow', {
48
+ actions: [
49
+ ZovaRender.detailsActionRow('basic-details:actionUpdate', {
50
+ dialogOptions: { title: $locale('Edit<%=argv.detailDialogTitleCapitalize%>') },
51
+ permission: { formScene: ['create', 'edit'] },
52
+ }),
53
+ ZovaRender.detailsActionRow('basic-details:actionDelete', {
54
+ permission: { formScene: ['create', 'edit'] },
55
+ }),
56
+ ],
57
+ }),
58
+ )
59
+ _operationsRow?: unknown;
60
+ }
@@ -0,0 +1,17 @@
1
+ import type { IDecoratorDtoOptions } from 'vona-module-a-web';
2
+
3
+ import { $Dto } from 'vona-module-a-orm';
4
+ import { Dto } from 'vona-module-a-web';
5
+ import { Model<%=argv.detailResourceNameCapitalize%> } from '<%=argv.detailPackageName%>';
6
+ import { ZovaRender } from 'zova-rest-cabloy-basic-admin';
7
+
8
+ import { Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%> } from './<%=argv.detailDtoBaseName%>.tsx';
9
+
10
+ export interface IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoViewName)%> extends IDecoratorDtoOptions {}
11
+
12
+ @Dto<IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoViewName)%>>({
13
+ blocks: [ZovaRender.block('basic-details:blockForm')],
14
+ })
15
+ export class Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoViewName)%> extends $Dto.get(() => Model<%=argv.detailResourceNameCapitalize%>, {
16
+ dtoClass: Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%>,
17
+ }) {}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-cli-set-api",
3
- "version": "1.1.110",
3
+ "version": "1.1.117",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "vona cli-set-api",
6
6
  "keywords": [
@@ -36,7 +36,7 @@
36
36
  "tsc:publish": "npm run clean && node ../cli/src/bin/vona.ts :bin:buildGeneral && tsc -p tsconfig.build.json && tsc -p tsconfig.cli.json && tsc -p tsconfig.isolate.json",
37
37
  "prepublishOnly": "npm run tsc:publish",
38
38
  "prepack": "clean-package",
39
- "postpack": "clean-package restore && npm run clean"
39
+ "postpack": "clean-package restore"
40
40
  },
41
41
  "dependencies": {
42
42
  "@babel/plugin-proposal-decorators": "^7.29.0",
@@ -60,12 +60,8 @@ export class CliCreateBean extends BeanCliBase {
60
60
  : 'zova-rest-cabloy-basic-web';
61
61
  // module name/info
62
62
  const moduleName = argv.module;
63
- argv.moduleInfo = this.helper.parseModuleInfo(moduleName);
64
- // check if exists
65
- const _module = this.helper.findModule(moduleName);
66
- if (!_module) {
67
- throw new Error(`module does not exist: ${moduleName}`);
68
- }
63
+ argv.moduleInfo = this.helper.parseModuleInfoCanonical(moduleName);
64
+ const _module = this.helper.findModuleCanonical(moduleName);
69
65
  // target dir
70
66
  const targetDir = await this.helper.ensureDir(_module.root);
71
67
  // scene name
@@ -25,12 +25,9 @@ export class CliCreateModule extends BeanCliBase {
25
25
  // suite name/info
26
26
  const suiteName = argv.suite;
27
27
  if (suiteName) {
28
- argv.suiteInfo = this.helper.parseSuiteInfo(suiteName);
28
+ argv.suiteInfo = this.helper.parseSuiteInfoCanonical(suiteName);
29
29
  // check if exists
30
- argv._suite = this.helper.findSuite(suiteName);
31
- if (!argv._suite) {
32
- throw new Error(`suite does not exist: ${suiteName}`);
33
- }
30
+ argv._suite = this.helper.findSuiteCanonical(suiteName);
34
31
  }
35
32
  // nameMeta
36
33
  const nameMeta = this.helper.parseNameMeta(argv.name);
@@ -38,7 +35,7 @@ export class CliCreateModule extends BeanCliBase {
38
35
  argv.name = nameMeta.short;
39
36
  // module name/info
40
37
  const moduleName = argv.name;
41
- argv.moduleInfo = this.helper.parseModuleInfo(moduleName);
38
+ argv.moduleInfo = this.helper.parseModuleInfoCanonical(moduleName);
42
39
  argv.relativeNameCapitalize = this.helper.stringToCapitalize(argv.moduleInfo.relativeName, '-');
43
40
  // check if exists
44
41
  const _module = this.helper.findModule(moduleName);
@@ -24,7 +24,7 @@ export class CliCreateSuite extends BeanCliBase {
24
24
  argv.name = nameMeta.short;
25
25
  // suite name/info
26
26
  const suiteName = argv.name;
27
- argv.suiteInfo = this.helper.parseSuiteInfo(suiteName);
27
+ argv.suiteInfo = this.helper.parseSuiteInfoCanonical(suiteName);
28
28
  // check if exists
29
29
  const _suite = this.helper.findSuite(suiteName);
30
30
  if (_suite) {
@@ -24,12 +24,8 @@ export class CliCreateTest extends BeanCliBase {
24
24
  await super.execute();
25
25
  // module name/info
26
26
  const moduleName = argv.module;
27
- argv.moduleInfo = this.helper.parseModuleInfo(moduleName);
28
- // check if exists
29
- const _module = this.helper.findModule(moduleName);
30
- if (!_module) {
31
- throw new Error(`module does not exist: ${moduleName}`);
32
- }
27
+ argv.moduleInfo = this.helper.parseModuleInfoCanonical(moduleName);
28
+ const _module = this.helper.findModuleCanonical(moduleName);
33
29
  // target dir
34
30
  const targetDir = await this.helper.ensureDir(_module.root);
35
31
  // name
@@ -19,12 +19,8 @@ export class CliInitAsset extends BeanCliBase {
19
19
  await super.execute();
20
20
  // module name/info
21
21
  const moduleName = argv.module;
22
- argv.moduleInfo = this.helper.parseModuleInfo(moduleName);
23
- // check if exists
24
- const _module = this.helper.findModule(moduleName);
25
- if (!_module) {
26
- throw new Error(`module does not exist: ${moduleName}`);
27
- }
22
+ argv.moduleInfo = this.helper.parseModuleInfoCanonical(moduleName);
23
+ const _module = this.helper.findModuleCanonical(moduleName);
28
24
  // target dir
29
25
  const targetDir = await this.helper.ensureDir(_module.root);
30
26
  // scene
@@ -16,12 +16,8 @@ export class CliInitConfig extends BeanCliBase {
16
16
  // module name/info
17
17
  const moduleName = argv._[0];
18
18
  if (!moduleName) return;
19
- argv.moduleInfo = this.helper.parseModuleInfo(moduleName);
20
- // check if exists
21
- const _module = this.helper.findModule(moduleName);
22
- if (!_module) {
23
- throw new Error(`module does not exist: ${moduleName}`);
24
- }
19
+ argv.moduleInfo = this.helper.parseModuleInfoCanonical(moduleName);
20
+ const _module = this.helper.findModuleCanonical(moduleName);
25
21
  // target dir
26
22
  const targetDir = await this.helper.ensureDir(_module.root);
27
23
  const configFile = path.join(targetDir, 'src/config/config.ts');
@@ -16,12 +16,8 @@ export class CliInitConstant extends BeanCliBase {
16
16
  // module name/info
17
17
  const moduleName = argv._[0];
18
18
  if (!moduleName) return;
19
- argv.moduleInfo = this.helper.parseModuleInfo(moduleName);
20
- // check if exists
21
- const _module = this.helper.findModule(moduleName);
22
- if (!_module) {
23
- throw new Error(`module does not exist: ${moduleName}`);
24
- }
19
+ argv.moduleInfo = this.helper.parseModuleInfoCanonical(moduleName);
20
+ const _module = this.helper.findModuleCanonical(moduleName);
25
21
  // target dir
26
22
  const targetDir = await this.helper.ensureDir(_module.root);
27
23
  const constantFile = path.join(targetDir, 'src/config/constants.ts');
@@ -16,12 +16,8 @@ export class CliInitError extends BeanCliBase {
16
16
  // module name/info
17
17
  const moduleName = argv._[0];
18
18
  if (!moduleName) return;
19
- argv.moduleInfo = this.helper.parseModuleInfo(moduleName);
20
- // check if exists
21
- const _module = this.helper.findModule(moduleName);
22
- if (!_module) {
23
- throw new Error(`module does not exist: ${moduleName}`);
24
- }
19
+ argv.moduleInfo = this.helper.parseModuleInfoCanonical(moduleName);
20
+ const _module = this.helper.findModuleCanonical(moduleName);
25
21
  // target dir
26
22
  const targetDir = await this.helper.ensureDir(_module.root);
27
23
  const errorFile = path.join(targetDir, 'src/config/errors.ts');
@@ -16,12 +16,8 @@ export class CliInitLib extends BeanCliBase {
16
16
  // module name/info
17
17
  const moduleName = argv._[0];
18
18
  if (!moduleName) return;
19
- argv.moduleInfo = this.helper.parseModuleInfo(moduleName);
20
- // check if exists
21
- const _module = this.helper.findModule(moduleName);
22
- if (!_module) {
23
- throw new Error(`module does not exist: ${moduleName}`);
24
- }
19
+ argv.moduleInfo = this.helper.parseModuleInfoCanonical(moduleName);
20
+ const _module = this.helper.findModuleCanonical(moduleName);
25
21
  // target dir
26
22
  const targetDir = await this.helper.ensureDir(_module.root);
27
23
  const mainFile = path.join(targetDir, 'src/lib/index.ts');
@@ -16,12 +16,8 @@ export class CliInitLocale extends BeanCliBase {
16
16
  // module name/info
17
17
  const moduleName = argv._[0];
18
18
  if (!moduleName) return;
19
- argv.moduleInfo = this.helper.parseModuleInfo(moduleName);
20
- // check if exists
21
- const _module = this.helper.findModule(moduleName);
22
- if (!_module) {
23
- throw new Error(`module does not exist: ${moduleName}`);
24
- }
19
+ argv.moduleInfo = this.helper.parseModuleInfoCanonical(moduleName);
20
+ const _module = this.helper.findModuleCanonical(moduleName);
25
21
  // target dir
26
22
  const targetDir = await this.helper.ensureDir(_module.root);
27
23
  const localeFile = path.join(targetDir, 'src/config/locale');
@@ -16,12 +16,8 @@ export class CliInitMain extends BeanCliBase {
16
16
  // module name/info
17
17
  const moduleName = argv._[0];
18
18
  if (!moduleName) return;
19
- argv.moduleInfo = this.helper.parseModuleInfo(moduleName);
20
- // check if exists
21
- const _module = this.helper.findModule(moduleName);
22
- if (!_module) {
23
- throw new Error(`module does not exist: ${moduleName}`);
24
- }
19
+ argv.moduleInfo = this.helper.parseModuleInfoCanonical(moduleName);
20
+ const _module = this.helper.findModuleCanonical(moduleName);
25
21
  // target dir
26
22
  const targetDir = await this.helper.ensureDir(_module.root);
27
23
  const mainFile = path.join(targetDir, 'src/main.ts');
@@ -16,12 +16,8 @@ export class CliInitMonkey extends BeanCliBase {
16
16
  // module name/info
17
17
  const moduleName = argv._[0];
18
18
  if (!moduleName) return;
19
- argv.moduleInfo = this.helper.parseModuleInfo(moduleName);
20
- // check if exists
21
- const _module = this.helper.findModule(moduleName);
22
- if (!_module) {
23
- throw new Error(`module does not exist: ${moduleName}`);
24
- }
19
+ argv.moduleInfo = this.helper.parseModuleInfoCanonical(moduleName);
20
+ const _module = this.helper.findModuleCanonical(moduleName);
25
21
  // target dir
26
22
  const targetDir = await this.helper.ensureDir(_module.root);
27
23
  const monkeyFile = path.join(targetDir, 'src/monkey.ts');
@@ -16,12 +16,8 @@ export class CliInitStatic extends BeanCliBase {
16
16
  // module name/info
17
17
  const moduleName = argv._[0];
18
18
  if (!moduleName) return;
19
- argv.moduleInfo = this.helper.parseModuleInfo(moduleName);
20
- // check if exists
21
- const _module = this.helper.findModule(moduleName);
22
- if (!_module) {
23
- throw new Error(`module does not exist: ${moduleName}`);
24
- }
19
+ argv.moduleInfo = this.helper.parseModuleInfoCanonical(moduleName);
20
+ const _module = this.helper.findModuleCanonical(moduleName);
25
21
  // target dir
26
22
  const targetDir = await this.helper.ensureDir(_module.root);
27
23
  const staticDir = path.join(targetDir, 'assets/static');
@@ -16,12 +16,8 @@ export class CliInitTypes extends BeanCliBase {
16
16
  // module name/info
17
17
  const moduleName = argv._[0];
18
18
  if (!moduleName) return;
19
- argv.moduleInfo = this.helper.parseModuleInfo(moduleName);
20
- // check if exists
21
- const _module = this.helper.findModule(moduleName);
22
- if (!_module) {
23
- throw new Error(`module does not exist: ${moduleName}`);
24
- }
19
+ argv.moduleInfo = this.helper.parseModuleInfoCanonical(moduleName);
20
+ const _module = this.helper.findModuleCanonical(moduleName);
25
21
  // target dir
26
22
  const targetDir = await this.helper.ensureDir(_module.root);
27
23
  const mainFile = path.join(targetDir, 'src/types/index.ts');
@@ -34,12 +34,8 @@ export class CliToolsCrud extends BeanCliBase {
34
34
  : 'basic-siteadmin:management';
35
35
  // module name/info
36
36
  const moduleName = argv.module;
37
- argv.moduleInfo = this.helper.parseModuleInfo(moduleName);
38
- // check if exists
39
- const _module = this.helper.findModule(moduleName);
40
- if (!_module) {
41
- throw new Error(`module does not exist: ${moduleName}`);
42
- }
37
+ argv.moduleInfo = this.helper.parseModuleInfoCanonical(moduleName);
38
+ const _module = this.helper.findModuleCanonical(moduleName);
43
39
  // target dir
44
40
  const targetDir = await this.helper.ensureDir(_module.root);
45
41
  // resourceName
@@ -25,12 +25,8 @@ export class CliToolsCrudBasic extends BeanCliBase {
25
25
  await super.execute();
26
26
  // module name/info
27
27
  const moduleName = argv.module;
28
- argv.moduleInfo = this.helper.parseModuleInfo(moduleName);
29
- // check if exists
30
- const _module = this.helper.findModule(moduleName);
31
- if (!_module) {
32
- throw new Error(`module does not exist: ${moduleName}`);
33
- }
28
+ argv.moduleInfo = this.helper.parseModuleInfoCanonical(moduleName);
29
+ const _module = this.helper.findModuleCanonical(moduleName);
34
30
  // target dir
35
31
  const targetDir = await this.helper.ensureDir(_module.root);
36
32
  // resourceName
@@ -25,12 +25,8 @@ export class CliToolsCrudStart extends BeanCliBase {
25
25
  await super.execute();
26
26
  // module name/info
27
27
  const moduleName = argv.module;
28
- argv.moduleInfo = this.helper.parseModuleInfo(moduleName);
29
- // check if exists
30
- const _module = this.helper.findModule(moduleName);
31
- if (!_module) {
32
- throw new Error(`module does not exist: ${moduleName}`);
33
- }
28
+ argv.moduleInfo = this.helper.parseModuleInfoCanonical(moduleName);
29
+ const _module = this.helper.findModuleCanonical(moduleName);
34
30
  // target dir
35
31
  const targetDir = await this.helper.ensureDir(_module.root);
36
32
  // resourceName