cabloy 5.1.49 → 5.1.51

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 (276) hide show
  1. package/.claude/skills/cabloy-backend-scaffold/SKILL.md +207 -0
  2. package/.claude/skills/cabloy-backend-scaffold/evals/evals.json +29 -0
  3. package/.claude/skills/cabloy-backend-scaffold/references/backend-thread-map.md +52 -0
  4. package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +39 -0
  5. package/.claude/skills/cabloy-contract-loop/SKILL.md +201 -0
  6. package/.claude/skills/cabloy-contract-loop/evals/evals.json +29 -0
  7. package/.claude/skills/cabloy-contract-loop/references/contract-loop-map.md +47 -0
  8. package/.claude/skills/cabloy-contract-loop/references/verification-checklist.md +32 -0
  9. package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +230 -0
  10. package/.claude/skills/cabloy-frontend-scaffold/evals/evals.json +35 -0
  11. package/.claude/skills/cabloy-frontend-scaffold/references/follow-up-checklist.md +41 -0
  12. package/.claude/skills/cabloy-frontend-scaffold/references/frontend-thread-map.md +54 -0
  13. package/.claude/skills/cabloy-workflow/SKILL.md +288 -0
  14. package/.claude/skills/cabloy-workflow/evals/evals.json +35 -0
  15. package/.claude/skills/cabloy-workflow/references/cli-strategy.md +39 -0
  16. package/.claude/skills/cabloy-workflow/references/edition-detection.md +29 -0
  17. package/.github/workflows/docs-pages.yml +54 -0
  18. package/.gitignore +1 -0
  19. package/CHANGELOG.md +46 -0
  20. package/CLAUDE.md +59 -0
  21. package/README.md +137 -0
  22. package/cabloy-docs/.vitepress/config.mjs +222 -0
  23. package/cabloy-docs/.vitepress/public/CNAME +1 -0
  24. package/cabloy-docs/.vitepress/theme/custom.css +64 -0
  25. package/cabloy-docs/.vitepress/theme/edition-badges.md +5 -0
  26. package/cabloy-docs/.vitepress/theme/index.js +5 -0
  27. package/cabloy-docs/ai/class-placement-rule.md +138 -0
  28. package/cabloy-docs/ai/cli-for-agents.md +56 -0
  29. package/cabloy-docs/ai/cli-to-skill-map.md +165 -0
  30. package/cabloy-docs/ai/docs-skills-rules-mapping.md +167 -0
  31. package/cabloy-docs/ai/edition-detection.md +30 -0
  32. package/cabloy-docs/ai/future-skill-roadmap.md +135 -0
  33. package/cabloy-docs/ai/global-bean-lookup.md +157 -0
  34. package/cabloy-docs/ai/introduction.md +62 -0
  35. package/cabloy-docs/ai/playbook-backend-module.md +111 -0
  36. package/cabloy-docs/ai/playbook-contract-regeneration.md +100 -0
  37. package/cabloy-docs/ai/playbook-frontend-page.md +99 -0
  38. package/cabloy-docs/ai/playbook-metadata-refresh.md +67 -0
  39. package/cabloy-docs/ai/repo-guidance.md +58 -0
  40. package/cabloy-docs/ai/rules-and-config.md +29 -0
  41. package/cabloy-docs/ai/skills.md +35 -0
  42. package/cabloy-docs/ai/verification.md +30 -0
  43. package/cabloy-docs/backend/aop-overview.md +128 -0
  44. package/cabloy-docs/backend/auth-guide.md +151 -0
  45. package/cabloy-docs/backend/backend-essentials.md +128 -0
  46. package/cabloy-docs/backend/broadcast-guide.md +138 -0
  47. package/cabloy-docs/backend/cache-guide.md +70 -0
  48. package/cabloy-docs/backend/captcha-guide.md +162 -0
  49. package/cabloy-docs/backend/cli.md +173 -0
  50. package/cabloy-docs/backend/config-guide.md +249 -0
  51. package/cabloy-docs/backend/controller-aop-guide.md +270 -0
  52. package/cabloy-docs/backend/controller-guide.md +347 -0
  53. package/cabloy-docs/backend/crud-workflow.md +118 -0
  54. package/cabloy-docs/backend/dto-guide.md +161 -0
  55. package/cabloy-docs/backend/dto-infer-generation.md +153 -0
  56. package/cabloy-docs/backend/dynamic-datasource-guide.md +70 -0
  57. package/cabloy-docs/backend/election-guide.md +141 -0
  58. package/cabloy-docs/backend/entity-guide.md +150 -0
  59. package/cabloy-docs/backend/error-guide.md +108 -0
  60. package/cabloy-docs/backend/event-guide.md +183 -0
  61. package/cabloy-docs/backend/external-aop-guide.md +149 -0
  62. package/cabloy-docs/backend/field-indexes.md +79 -0
  63. package/cabloy-docs/backend/foundation.md +281 -0
  64. package/cabloy-docs/backend/i18n-guide.md +211 -0
  65. package/cabloy-docs/backend/internal-aop-guide.md +181 -0
  66. package/cabloy-docs/backend/introduction.md +95 -0
  67. package/cabloy-docs/backend/jwt-guide.md +276 -0
  68. package/cabloy-docs/backend/logger-guide.md +223 -0
  69. package/cabloy-docs/backend/mail-guide.md +189 -0
  70. package/cabloy-docs/backend/menu-guide.md +80 -0
  71. package/cabloy-docs/backend/migration-and-changes.md +192 -0
  72. package/cabloy-docs/backend/model-guide.md +274 -0
  73. package/cabloy-docs/backend/multi-database-datasource.md +171 -0
  74. package/cabloy-docs/backend/multi-instance-and-instance-resolution.md +196 -0
  75. package/cabloy-docs/backend/openapi-guide.md +118 -0
  76. package/cabloy-docs/backend/orm-aggregate-group-guide.md +210 -0
  77. package/cabloy-docs/backend/orm-configuration-guide.md +165 -0
  78. package/cabloy-docs/backend/orm-guide.md +109 -0
  79. package/cabloy-docs/backend/orm-mutation-guide.md +195 -0
  80. package/cabloy-docs/backend/orm-select-guide.md +243 -0
  81. package/cabloy-docs/backend/queue-guide.md +271 -0
  82. package/cabloy-docs/backend/quickstart.md +141 -0
  83. package/cabloy-docs/backend/redis-guide.md +70 -0
  84. package/cabloy-docs/backend/redlock-guide.md +60 -0
  85. package/cabloy-docs/backend/relations-guide.md +250 -0
  86. package/cabloy-docs/backend/runtime-and-flavors.md +304 -0
  87. package/cabloy-docs/backend/schedule-guide.md +81 -0
  88. package/cabloy-docs/backend/scripts.md +116 -0
  89. package/cabloy-docs/backend/serialization-guide.md +192 -0
  90. package/cabloy-docs/backend/service-guide.md +166 -0
  91. package/cabloy-docs/backend/sharding-guide.md +49 -0
  92. package/cabloy-docs/backend/startup-guide.md +326 -0
  93. package/cabloy-docs/backend/transaction-guide.md +82 -0
  94. package/cabloy-docs/backend/unit-testing.md +209 -0
  95. package/cabloy-docs/backend/upload-guide.md +160 -0
  96. package/cabloy-docs/backend/user-access-guide.md +157 -0
  97. package/cabloy-docs/backend/validation-guide.md +80 -0
  98. package/cabloy-docs/backend/worker-guide.md +59 -0
  99. package/cabloy-docs/editions/cabloy-basic.md +25 -0
  100. package/cabloy-docs/editions/cabloy-start.md +24 -0
  101. package/cabloy-docs/editions/detection.md +31 -0
  102. package/cabloy-docs/editions/overview.md +44 -0
  103. package/cabloy-docs/frontend/api-guide.md +93 -0
  104. package/cabloy-docs/frontend/api-schema-guide.md +43 -0
  105. package/cabloy-docs/frontend/app-startup-guide.md +185 -0
  106. package/cabloy-docs/frontend/cli.md +78 -0
  107. package/cabloy-docs/frontend/component-guide.md +105 -0
  108. package/cabloy-docs/frontend/component-props-guide.md +97 -0
  109. package/cabloy-docs/frontend/component-v-model-guide.md +110 -0
  110. package/cabloy-docs/frontend/css-in-js-guide.md +151 -0
  111. package/cabloy-docs/frontend/design-principles.md +55 -0
  112. package/cabloy-docs/frontend/environment-config-guide.md +250 -0
  113. package/cabloy-docs/frontend/foundation.md +57 -0
  114. package/cabloy-docs/frontend/generic-component-guide.md +35 -0
  115. package/cabloy-docs/frontend/icon-engine-guide.md +88 -0
  116. package/cabloy-docs/frontend/introduction.md +32 -0
  117. package/cabloy-docs/frontend/ioc-and-beans.md +211 -0
  118. package/cabloy-docs/frontend/mock-guide.md +109 -0
  119. package/cabloy-docs/frontend/model-architecture.md +87 -0
  120. package/cabloy-docs/frontend/model-state-guide.md +70 -0
  121. package/cabloy-docs/frontend/module-scope.md +168 -0
  122. package/cabloy-docs/frontend/modules-and-suites.md +179 -0
  123. package/cabloy-docs/frontend/navigation-guards-guide.md +68 -0
  124. package/cabloy-docs/frontend/openapi-sdk-guide.md +102 -0
  125. package/cabloy-docs/frontend/page-guide.md +223 -0
  126. package/cabloy-docs/frontend/page-params-guide.md +87 -0
  127. package/cabloy-docs/frontend/page-query-guide.md +96 -0
  128. package/cabloy-docs/frontend/page-route-guide.md +147 -0
  129. package/cabloy-docs/frontend/quickstart.md +201 -0
  130. package/cabloy-docs/frontend/route-alias-guide.md +61 -0
  131. package/cabloy-docs/frontend/scripts.md +86 -0
  132. package/cabloy-docs/frontend/sdk-guide.md +45 -0
  133. package/cabloy-docs/frontend/server-data.md +74 -0
  134. package/cabloy-docs/frontend/ssr-client-only.md +40 -0
  135. package/cabloy-docs/frontend/ssr-env.md +51 -0
  136. package/cabloy-docs/frontend/ssr-init-data.md +46 -0
  137. package/cabloy-docs/frontend/ssr-overview.md +48 -0
  138. package/cabloy-docs/frontend/ssr-seo-meta.md +52 -0
  139. package/cabloy-docs/frontend/system-startup-guide.md +186 -0
  140. package/cabloy-docs/frontend/theme-guide.md +154 -0
  141. package/cabloy-docs/frontend/zod-guide.md +161 -0
  142. package/cabloy-docs/fullstack/edition-collaboration-differences.md +61 -0
  143. package/cabloy-docs/fullstack/frontend-metadata-to-backend.md +64 -0
  144. package/cabloy-docs/fullstack/introduction.md +69 -0
  145. package/cabloy-docs/fullstack/openapi-to-sdk.md +116 -0
  146. package/cabloy-docs/fullstack/quickstart.md +86 -0
  147. package/cabloy-docs/fullstack/vona-zova-integration.md +86 -0
  148. package/cabloy-docs/index.md +73 -0
  149. package/cabloy-docs/package.json +16 -0
  150. package/cabloy-docs/pnpm-lock.yaml +1607 -0
  151. package/cabloy-docs/reference/backend-directory-structure.md +88 -0
  152. package/cabloy-docs/reference/cli-reference.md +49 -0
  153. package/cabloy-docs/reference/glossary.md +38 -0
  154. package/cabloy-docs/reference/package-map.md +105 -0
  155. package/cabloy-docs/reference/repo-scripts.md +36 -0
  156. package/package.json +4 -1
  157. package/scripts/init.ts +12 -0
  158. package/scripts/upgrade.ts +31 -3
  159. package/vona/README.md +3 -3
  160. package/vona/README.zh-CN.md +4 -4
  161. package/vona/packages-vona/vona/package.json +1 -1
  162. package/vona/src/suite-vendor/a-cabloy/modules/a-datasharding/package.json +1 -1
  163. package/vona/src/suite-vendor/a-cabloy/modules/a-datasharding/src/bean/summerCache.datasourceWrite.ts +2 -2
  164. package/vona/src/suite-vendor/a-cabloy/package.json +1 -1
  165. package/vona/src/suite-vendor/a-captcha/modules/a-captcha/package.json +1 -1
  166. package/vona/src/suite-vendor/a-captcha/modules/a-captcha/src/bean/cacheRedis.captcha.ts +2 -2
  167. package/vona/src/suite-vendor/a-captcha/package.json +1 -1
  168. package/vona/src/suite-vendor/a-vona/modules/a-bean/cli/bean/metadata/generate.ts +5 -6
  169. package/vona/src/suite-vendor/a-vona/modules/a-bean/package.json +1 -1
  170. package/vona/src/suite-vendor/a-vona/modules/a-cache/cli/cacheMem/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  171. package/vona/src/suite-vendor/a-vona/modules/a-cache/cli/cacheRedis/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  172. package/vona/src/suite-vendor/a-vona/modules/a-cache/package.json +1 -1
  173. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/.metadata/index.ts +13 -2
  174. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/bean/bean.cache.ts +6 -7
  175. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/{bean/bean.cacheMemBase.ts → service/cacheMemBase_.ts} +3 -3
  176. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/{bean/bean.cacheRedisBase.ts → service/cacheRedisBase_.ts} +3 -3
  177. package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/package.json +1 -1
  178. package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/src/bean/cacheRedis.emailConfirm.ts +2 -2
  179. package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/src/bean/cacheRedis.passwordReset.ts +2 -2
  180. package/vona/src/suite-vendor/a-vona/modules/a-openapi/package.json +1 -1
  181. package/vona/src/suite-vendor/a-vona/modules/a-openapi/src/bean/summerCache.json.ts +2 -2
  182. package/vona/src/suite-vendor/a-vona/modules/a-orm/cli/databaseDialect/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  183. package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
  184. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/.metadata/index.ts +4 -3
  185. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/bean.database.ts +3 -3
  186. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/bean.model.ts +1 -1
  187. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/schedule.softDeletionPrune.ts +1 -1
  188. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/common/utils.ts +1 -1
  189. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/index.ts +1 -1
  190. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_cache.ts +1 -1
  191. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_meta.ts +1 -1
  192. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.modelBase.ts +0 -5
  193. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoAggregate.ts +1 -1
  194. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoCreate.ts +1 -1
  195. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGet.ts +1 -1
  196. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGroup.ts +1 -1
  197. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoMutate.ts +1 -1
  198. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoSelectAndCount.ts +1 -1
  199. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoUpdate.ts +1 -1
  200. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/index.ts +1 -0
  201. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/modelCacheBase.ts +3 -3
  202. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relations.ts +1 -1
  203. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsDynamic.ts +1 -1
  204. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsMutate.ts +1 -1
  205. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsStatic.ts +1 -1
  206. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/cacheEntity_.ts +1 -1
  207. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/cacheQuery_.ts +1 -1
  208. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/database.ts +2 -2
  209. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean/bean.databaseDialectBase.ts → service/databaseDialectBase_.ts} +38 -41
  210. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/db_.ts +2 -2
  211. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/relations_.ts +3 -3
  212. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/database.ts +0 -5
  213. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoGet.ts +1 -1
  214. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoMutate.ts +1 -1
  215. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoSelectAndCount.ts +1 -1
  216. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/model.ts +1 -1
  217. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelAggr.ts +1 -1
  218. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelCount.ts +1 -1
  219. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelGeneral.ts +1 -1
  220. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelGroup.ts +1 -1
  221. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelIncrement.ts +1 -1
  222. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relations.ts +1 -1
  223. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsColumns.ts +1 -1
  224. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDef.ts +1 -1
  225. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDefDynamic.ts +1 -1
  226. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDefMutate.ts +1 -1
  227. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsMutate.ts +1 -1
  228. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsTables.ts +1 -1
  229. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/package.json +1 -1
  230. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.betterSqlite3.ts +2 -2
  231. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.mysql.ts +2 -2
  232. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.pg.ts +2 -2
  233. package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
  234. package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/bean.permission.ts +109 -40
  235. package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/summerCache.permission.ts +2 -2
  236. package/vona/src/suite-vendor/a-vona/modules/a-startup/package.json +1 -1
  237. package/vona/src/suite-vendor/a-vona/modules/a-startup/src/bean/cacheRedis.startupDebounce.ts +2 -2
  238. package/vona/src/suite-vendor/a-vona/modules/a-summer/cli/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  239. package/vona/src/suite-vendor/a-vona/modules/a-summer/package.json +1 -1
  240. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/.metadata/index.ts +1 -1
  241. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/bean/bean.summer.ts +3 -3
  242. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/service/localMem_.ts +3 -3
  243. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/service/localRedis_.ts +3 -3
  244. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/{bean/bean.summerCacheBase.ts → service/summerCacheBase_.ts} +3 -3
  245. package/vona/src/suite-vendor/a-vona/modules/a-swagger/package.json +1 -1
  246. package/vona/src/suite-vendor/a-vona/modules/a-swagger/src/bean/summerCache.rapidoc.ts +2 -2
  247. package/vona/src/suite-vendor/a-vona/modules/a-swagger/src/bean/summerCache.swagger.ts +2 -2
  248. package/vona/src/suite-vendor/a-vona/modules/a-user/package.json +1 -1
  249. package/vona/src/suite-vendor/a-vona/modules/a-user/src/bean/cacheRedis.authToken.ts +2 -2
  250. package/vona/src/suite-vendor/a-vona/modules/a-worker/package.json +1 -1
  251. package/vona/src/suite-vendor/a-vona/modules/a-worker/src/bean/cacheRedis.workerAlive.ts +2 -2
  252. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  253. package/zova/README.md +4 -4
  254. package/zova/README.zh-CN.md +4 -4
  255. package/zova/packages-zova/zova/package.json +2 -2
  256. package/zova/src/suite/a-demo/modules/demo-basic/src/page/toolTwo/controller.tsx +0 -2
  257. package/zova/src/suite/a-home/modules/home-base/src/config/locale/en-us.ts +1 -0
  258. package/zova/src/suite/a-home/modules/home-base/src/config/locale/zh-cn.ts +1 -0
  259. package/zova/src/suite/a-home/modules/home-base/src/page/errorNotFound/controller.tsx +8 -2
  260. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/controller.tsx +1 -1
  261. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/render.header.tsx +1 -1
  262. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/render.locale.tsx +2 -5
  263. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/render.tabs.tsx +1 -4
  264. package/zova/src/suite-vendor/a-zova/modules/a-router/package.json +1 -1
  265. package/zova/src/suite-vendor/a-zova/modules/a-router/src/bean/sys.router.ts +28 -6
  266. package/zova/src/suite-vendor/a-zova/modules/a-router/src/monkeySys.ts +15 -3
  267. package/zova/src/suite-vendor/a-zova/modules/a-router/src/types/router.ts +1 -0
  268. package/zova/src/suite-vendor/a-zova/modules/a-routertabs/package.json +1 -1
  269. package/zova/src/suite-vendor/a-zova/modules/a-routertabs/src/model/tabs.ts +4 -0
  270. package/zova/src/suite-vendor/a-zova/package.json +3 -3
  271. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud.ts +0 -0
  272. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud_inner.ts +0 -0
  273. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud_table.ts +0 -0
  274. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_knex.ts +0 -0
  275. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_utils.ts +0 -0
  276. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_view.ts +0 -0
@@ -0,0 +1,223 @@
1
+ # Page Guide
2
+
3
+ This guide explains how pages work in Zova within the Cabloy monorepo.
4
+
5
+ ## What a page means in Zova
6
+
7
+ A Zova page is not just a route target with a template attached.
8
+
9
+ The page model is built around a controller-oriented structure that combines:
10
+
11
+ - reactive state
12
+ - TSX-based render logic
13
+ - IOC-friendly composition
14
+ - CSS-in-JS styling
15
+
16
+ That combination is one of the clearest examples of Zova’s overall design philosophy.
17
+
18
+ ## Create a page
19
+
20
+ Example: create a page named `counter` in module `demo-student`.
21
+
22
+ ```bash
23
+ npm run zova :create:page counter -- --module=demo-student
24
+ ```
25
+
26
+ ## Route path generation
27
+
28
+ Zova automatically derives the page path from the module and page names.
29
+
30
+ Representative example:
31
+
32
+ - module: `demo-student`
33
+ - page: `counter`
34
+ - generated page path: `/demo/student/counter`
35
+
36
+ This matters because the framework already has conventions for route structure. AI should reuse those conventions rather than inventing unrelated paths.
37
+
38
+ ## Controller definition
39
+
40
+ Representative page controller shape:
41
+
42
+ ```typescript
43
+ @Controller()
44
+ class ControllerPageCounter extends BeanControllerPageBase {
45
+ protected render() {
46
+ return null;
47
+ }
48
+ }
49
+ ```
50
+
51
+ ## Add state
52
+
53
+ Representative reactive state pattern:
54
+
55
+ ```typescript
56
+ class ControllerPageCounter {
57
+ count: number = 0;
58
+
59
+ increment() {
60
+ this.count++;
61
+ }
62
+
63
+ decrement() {
64
+ this.count--;
65
+ }
66
+ }
67
+ ```
68
+
69
+ ## Add render logic
70
+
71
+ Representative TSX render pattern:
72
+
73
+ ```typescript
74
+ class ControllerPageCounter {
75
+ protected render() {
76
+ return (
77
+ <div>
78
+ <div>count: {this.count}</div>
79
+ <button onClick={() => this.increment()}>Increment</button>
80
+ <button onClick={() => this.decrement()}>Decrement</button>
81
+ </div>
82
+ );
83
+ }
84
+ }
85
+ ```
86
+
87
+ ## Add style
88
+
89
+ Zova pages can also attach style through built-in CSS-in-JS support.
90
+
91
+ For choosing among local `$style`, dedicated style beans, shared/global styles, and token/theme surfaces, also see [CSS-in-JS Guide](/frontend/css-in-js-guide).
92
+
93
+ Representative pattern:
94
+
95
+ ```typescript
96
+ class ControllerPageCounter {
97
+ cTextCenter: string;
98
+
99
+ protected async __init__() {
100
+ this.cTextCenter = this.$style({
101
+ textAlign: 'center',
102
+ });
103
+ }
104
+ }
105
+ ```
106
+
107
+ ## Progressive code splitting
108
+
109
+ As page complexity grows, Zova supports progressively splitting page logic into more files instead of forcing everything to remain in one controller file forever.
110
+
111
+ A useful progression is:
112
+
113
+ - **single-file** page structure for early-stage pages
114
+ - **three-file** structure with controller, render, and style split out
115
+ - **more-file** structure when additional render, style, or service beans are needed
116
+
117
+ This matters because Zova encourages pages to start simple and then evolve into richer structures only when the business complexity justifies it.
118
+
119
+ ### Single-file to three-file
120
+
121
+ A typical first step is keeping the page controller responsible for state while moving render and style into dedicated beans.
122
+
123
+ #### Create the first render bean
124
+
125
+ ```bash
126
+ npm run zova :refactor:firstRender page/counter -- --module=demo-student
127
+ ```
128
+
129
+ Representative render bean shape:
130
+
131
+ ```typescript
132
+ @Render()
133
+ class RenderPageCounter extends BeanRenderBase {
134
+ public render() {
135
+ return (
136
+ <div class={this.cTextCenter}>
137
+ <div>count: {this.count}</div>
138
+ <button onClick={() => this.increment()}>Increment</button>
139
+ <button onClick={() => this.decrement()}>Decrement</button>
140
+ </div>
141
+ );
142
+ }
143
+ }
144
+ ```
145
+
146
+ #### Create the first style bean
147
+
148
+ ```bash
149
+ npm run zova :refactor:firstStyle page/counter -- --module=demo-student
150
+ ```
151
+
152
+ Representative style bean shape:
153
+
154
+ ```typescript
155
+ @Style()
156
+ class StylePageCounter extends BeanStyleBase {
157
+ cTextCenter: string;
158
+
159
+ protected async __init__() {
160
+ this.cTextCenter = this.$style({
161
+ textAlign: 'center',
162
+ });
163
+ }
164
+ }
165
+ ```
166
+
167
+ ### More-file growth
168
+
169
+ When the page continues to grow, you can keep splitting responsibilities instead of forcing one large controller or render bean to absorb everything.
170
+
171
+ Representative refactors include:
172
+
173
+ - additional render beans for larger UI regions
174
+ - additional style beans for more isolated styling concerns
175
+ - dedicated service beans when business state and behavior should move out of the page controller
176
+
177
+ #### Create another render bean
178
+
179
+ ```bash
180
+ npm run zova :refactor:anotherRender page/counter another -- --module=demo-student
181
+ ```
182
+
183
+ #### Create another style bean
184
+
185
+ ```bash
186
+ npm run zova :refactor:anotherStyle page/counter another -- --module=demo-student
187
+ ```
188
+
189
+ #### Create a service bean for state management
190
+
191
+ ```bash
192
+ npm run zova :create:bean service page/counter/counter -- --module=demo-student
193
+ ```
194
+
195
+ Representative service bean shape:
196
+
197
+ ```typescript
198
+ @Service()
199
+ class ServiceCounter extends BeanBase {
200
+ count: number = 0;
201
+
202
+ increment() {
203
+ this.count++;
204
+ }
205
+
206
+ decrement() {
207
+ this.count--;
208
+ }
209
+ }
210
+ ```
211
+
212
+ These refactors are supported by Zova CLI commands rather than requiring a fully manual restructuring from scratch.
213
+
214
+ ## Practical implications for page implementation
215
+
216
+ When generating or editing a Zova page, preserve the page/controller mental model instead of rewriting the code into a generic Vue single-file-component pattern.
217
+
218
+ A better default is:
219
+
220
+ 1. use the Zova page generator
221
+ 2. keep state, render, and style inside the intended controller-oriented structure
222
+ 3. reuse existing routing and styling conventions
223
+ 4. verify whether the active edition changes page-level UI assumptions
@@ -0,0 +1,87 @@
1
+ # Page Params Guide
2
+
3
+ This guide explains how typed page params work in Zova within the Cabloy monorepo.
4
+
5
+ ## Why page params support matters
6
+
7
+ Zova enhances route params handling with typed support so page controllers can work with route parameters through a structured schema instead of ad hoc string access.
8
+
9
+ ## Add params support to a page
10
+
11
+ Example: add params support for page `counter`.
12
+
13
+ ```bash
14
+ npm run zova :refactor:pageParams counter -- --module=demo-student
15
+ ```
16
+
17
+ ## Add params schema
18
+
19
+ Representative pattern:
20
+
21
+ ```typescript
22
+ export const ControllerPageCounterSchemaParams = z.object({
23
+ id: z.number().optional().default(0),
24
+ });
25
+ ```
26
+
27
+ This is more than a type annotation.
28
+
29
+ Because route params arrive as strings at the URL level, the schema is also where Zova’s `z` wrapper can coerce the route value into the typed value that the page controller wants to consume.
30
+
31
+ ## Route record requirements
32
+
33
+ One important rule is that if a page supports params, the route should expose the proper route structure and route name.
34
+
35
+ Representative route idea:
36
+
37
+ ```typescript
38
+ {
39
+ name: 'counter',
40
+ path: 'counter/:id?',
41
+ component: ZPageCounter,
42
+ }
43
+ ```
44
+
45
+ ## Regenerate metadata
46
+
47
+ When the route definition changes, regenerate module metadata so the framework’s typed route information stays aligned.
48
+
49
+ ```bash
50
+ npm run zova :tools:metadata demo-student
51
+ ```
52
+
53
+ For the broader schema model behind `z`, coercion, defaults, and nested structures, see [Zod Guide](/frontend/zod-guide).
54
+
55
+ ## Use params in a page
56
+
57
+ Representative pattern:
58
+
59
+ ```typescript
60
+ class ControllerPageCounter {
61
+ render() {
62
+ return <div>{this.$params.id}</div>;
63
+ }
64
+ }
65
+ ```
66
+
67
+ ## Pass params during navigation
68
+
69
+ Representative pattern:
70
+
71
+ ```typescript
72
+ const url = this.$router.getPagePath('/demo/student/counter/:id?', {
73
+ params: {
74
+ id: 1,
75
+ },
76
+ });
77
+ this.$router.push(url);
78
+ ```
79
+
80
+ ## Implementation checks for param-driven page changes
81
+
82
+ When adding or editing param-driven page behavior:
83
+
84
+ 1. use the Zova refactor command when possible
85
+ 2. update the route record and route name deliberately
86
+ 3. regenerate metadata when route typing depends on it
87
+ 4. use `this.$params` and typed router helpers instead of manual parsing
@@ -0,0 +1,96 @@
1
+ # Page Query Guide
2
+
3
+ This guide explains how typed page query handling works in Zova within the Cabloy monorepo.
4
+
5
+ ## Why page query support matters
6
+
7
+ Zova enhances page query handling with type-aware support so routing data can be read and passed in a more structured way.
8
+
9
+ That is important because query values are part of page behavior, not just incidental URL text.
10
+
11
+ ## Add query support to a page
12
+
13
+ Example: add query support for page `counter`.
14
+
15
+ ```bash
16
+ npm run zova :refactor:pageQuery counter -- --module=demo-student
17
+ ```
18
+
19
+ ## Add query schema
20
+
21
+ Query support becomes explicit through a Zod schema.
22
+
23
+ Representative pattern:
24
+
25
+ ```typescript
26
+ export const ControllerPageCounterSchemaQuery = z.object({
27
+ name: z.string().optional(),
28
+ age: z.number().optional(),
29
+ });
30
+ ```
31
+
32
+ This matters because query parsing becomes typed and framework-aware instead of stringly-typed ad hoc access.
33
+
34
+ ## Use query values
35
+
36
+ Representative pattern:
37
+
38
+ ```typescript
39
+ class ControllerPageCounter {
40
+ render() {
41
+ return (
42
+ <div>
43
+ <div>{this.$query.name}</div>
44
+ <div>{this.$query.age}</div>
45
+ </div>
46
+ );
47
+ }
48
+ }
49
+ ```
50
+
51
+ ## Pass query values during navigation
52
+
53
+ Representative pattern:
54
+
55
+ ```typescript
56
+ const url = this.$router.getPagePath('/demo/student/counter', {
57
+ query: {
58
+ name: 'tom',
59
+ age: 18,
60
+ },
61
+ });
62
+ this.$router.push(url);
63
+ ```
64
+
65
+ ## More complex query shapes
66
+
67
+ Query schemas do not have to stop at flat primitives.
68
+
69
+ Representative patterns include nested objects and arrays:
70
+
71
+ ```typescript
72
+ export const ControllerPageCounterSchemaQuery = z.object({
73
+ user: z
74
+ .object({
75
+ name: z.string(),
76
+ age: z.number(),
77
+ })
78
+ .optional(),
79
+ colors: z.array(z.string()).optional(),
80
+ });
81
+ ```
82
+
83
+ That lets page code consume richer route-driven state such as filter collections or nested search payloads without dropping back to manual string parsing.
84
+
85
+ ## Implementation checks for page-query changes
86
+
87
+ When adding page query behavior, do not fall back to raw string parsing.
88
+
89
+ A better default is:
90
+
91
+ 1. add the query skeleton with the Zova refactor command
92
+ 2. define the schema explicitly
93
+ 3. use `this.$query` and typed navigation helpers
94
+ 4. keep query behavior aligned with the page controller model
95
+
96
+ For the broader schema model behind `z`, coercion, nested objects, and array support, see [Zod Guide](/frontend/zod-guide).
@@ -0,0 +1,147 @@
1
+ # Page Route Guide
2
+
3
+ This guide explains how page route records work in Zova within the Cabloy monorepo.
4
+
5
+ ## Why route records matter
6
+
7
+ When a page is created, Zova automatically creates a route record.
8
+
9
+ That route record is the framework-level description of how the page is reached, loaded, authenticated, and rendered within the broader application model and app shell.
10
+
11
+ ## Representative route record
12
+
13
+ ```typescript
14
+ import { ZPageCounter } from './.metadata/page/counter.js';
15
+
16
+ export const routes: IModuleRoute[] = [
17
+ {
18
+ name: 'counter',
19
+ path: 'counter/:id?',
20
+ component: ZPageCounter,
21
+ },
22
+ ];
23
+ ```
24
+
25
+ ## Core route fields
26
+
27
+ These route fields are the most important:
28
+
29
+ - `path`
30
+ - `name`
31
+ - `component`
32
+ - `alias`
33
+ - `meta`
34
+
35
+ These are the main surface area for page routing behavior.
36
+
37
+ ## `path`
38
+
39
+ `path` defines the route path relative to the module. The framework then combines it with the module prefix to form the absolute route path.
40
+
41
+ This matters because path generation is modular by default.
42
+
43
+ ## `name`
44
+
45
+ If a page uses params, the route name becomes especially important because typed param-aware routing depends on it.
46
+
47
+ ## `component`
48
+
49
+ `component` points to the generated page wrapper such as `ZPageCounter`.
50
+
51
+ ## `alias`
52
+
53
+ Aliases are supported, but alias handling belongs in the broader routing configuration rather than being treated as an isolated route-local trick.
54
+
55
+ ## `meta`
56
+
57
+ The route meta surface includes important behavior such as:
58
+
59
+ - absolute-path behavior
60
+ - layout choice
61
+ - authentication requirement
62
+ - locale handling
63
+ - component key behavior
64
+ - keepAlive behavior
65
+ - SSR transfer-cache behavior
66
+
67
+ This is one reason route records matter so much: they are not just URL declarations. They are an application-behavior surface.
68
+
69
+ ## Route -> shell -> routed page
70
+
71
+ A useful frontend mental model is:
72
+
73
+ 1. the route record identifies the page
74
+ 2. route metadata chooses the logical shell/layout
75
+ 3. the resolved shell hosts the routed page
76
+ 4. guards and aliases can still affect how the page is reached
77
+
78
+ That is why routing in Zova is not only about URLs. It is also about how the app shell and navigation policy shape the visible screen.
79
+
80
+ ### Layout selection
81
+
82
+ If a page route does not specify a layout, Zova uses the default layout.
83
+
84
+ Representative route shape:
85
+
86
+ ```typescript
87
+ export const routes: IModuleRoute[] = [
88
+ {
89
+ path: 'counter',
90
+ component: ZPageCounter,
91
+ meta: {
92
+ layout: 'default',
93
+ },
94
+ },
95
+ ];
96
+ ```
97
+
98
+ The system also distinguishes common built-in layout placeholders such as:
99
+
100
+ - `empty`
101
+ - `default`
102
+
103
+ These names act as logical layout choices rather than hard-coded component filenames.
104
+
105
+ A representative env mapping looks like this:
106
+
107
+ ```txt
108
+ env/.env
109
+ LAYOUT_COMPONENT_EMPTY = home-layout:layoutEmpty
110
+ LAYOUT_COMPONENT_DEFAULT = home-layout:layoutTabs
111
+ ```
112
+
113
+ That means route metadata chooses the logical layout, while env/config decides which actual layout component should back that choice for the active runtime variant.
114
+
115
+ This is the practical app-shell boundary in Zova: routed pages do not appear alone. They appear inside the resolved layout shell for the current runtime variant.
116
+
117
+ In the current Basic source, that shell is represented concretely by admin-style, web-style, and empty/minimal layout implementations.
118
+
119
+ For the broader runtime-selection model behind env and flavor-aware configuration, see [Environment and Config Guide](/frontend/environment-config-guide).
120
+ For the onboarding path that leads into shell selection, also see [Frontend Quickstart](/frontend/quickstart).
121
+
122
+ ## Relationship to guards and aliases
123
+
124
+ Layout selection, navigation guards, and aliases are closely related but they solve different problems:
125
+
126
+ - route metadata chooses the logical shell and route behavior
127
+ - guards decide whether navigation should continue, redirect, or enrich route state
128
+ - aliases provide alternate entry paths without changing the main route identity model
129
+
130
+ Read together with:
131
+
132
+ - [Navigation Guards Guide](/frontend/navigation-guards-guide)
133
+ - [Route Alias Guide](/frontend/route-alias-guide)
134
+ - [Frontend Quickstart](/frontend/quickstart)
135
+
136
+ ## Implementation checks for page-routing changes
137
+
138
+ When editing page routing, do not only change the URL string.
139
+
140
+ It should also check whether the route change affects:
141
+
142
+ - params typing
143
+ - auth behavior
144
+ - layout behavior
145
+ - locale behavior
146
+ - SSR behavior
147
+ - metadata regeneration