cabloy 5.1.50 → 5.1.52

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 (300) 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 +292 -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 +30 -0
  17. package/.github/workflows/docs-pages.yml +56 -0
  18. package/.gitignore +1 -0
  19. package/CHANGELOG.md +54 -0
  20. package/CLAUDE.md +59 -0
  21. package/README.md +152 -0
  22. package/cabloy-docs/.vitepress/config.mjs +255 -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 +139 -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 +168 -0
  31. package/cabloy-docs/ai/edition-consistency-checklist.md +150 -0
  32. package/cabloy-docs/ai/edition-detection.md +30 -0
  33. package/cabloy-docs/ai/future-skill-roadmap.md +135 -0
  34. package/cabloy-docs/ai/global-bean-lookup.md +158 -0
  35. package/cabloy-docs/ai/introduction.md +62 -0
  36. package/cabloy-docs/ai/playbook-backend-module.md +111 -0
  37. package/cabloy-docs/ai/playbook-contract-regeneration.md +100 -0
  38. package/cabloy-docs/ai/playbook-frontend-page.md +99 -0
  39. package/cabloy-docs/ai/playbook-metadata-refresh.md +67 -0
  40. package/cabloy-docs/ai/repo-guidance.md +58 -0
  41. package/cabloy-docs/ai/rules-and-config.md +29 -0
  42. package/cabloy-docs/ai/skills.md +37 -0
  43. package/cabloy-docs/ai/verification.md +31 -0
  44. package/cabloy-docs/ai/virtual-decorator-guidance.md +206 -0
  45. package/cabloy-docs/backend/aop-overview.md +128 -0
  46. package/cabloy-docs/backend/auth-guide.md +151 -0
  47. package/cabloy-docs/backend/backend-essentials.md +128 -0
  48. package/cabloy-docs/backend/broadcast-guide.md +138 -0
  49. package/cabloy-docs/backend/cache-guide.md +70 -0
  50. package/cabloy-docs/backend/captcha-guide.md +162 -0
  51. package/cabloy-docs/backend/cli.md +173 -0
  52. package/cabloy-docs/backend/config-guide.md +249 -0
  53. package/cabloy-docs/backend/controller-aop-guide.md +270 -0
  54. package/cabloy-docs/backend/controller-guide.md +347 -0
  55. package/cabloy-docs/backend/crud-workflow.md +118 -0
  56. package/cabloy-docs/backend/dto-guide.md +161 -0
  57. package/cabloy-docs/backend/dto-infer-generation.md +153 -0
  58. package/cabloy-docs/backend/dynamic-datasource-guide.md +70 -0
  59. package/cabloy-docs/backend/election-guide.md +141 -0
  60. package/cabloy-docs/backend/entity-guide.md +150 -0
  61. package/cabloy-docs/backend/error-guide.md +108 -0
  62. package/cabloy-docs/backend/event-guide.md +183 -0
  63. package/cabloy-docs/backend/external-aop-guide.md +149 -0
  64. package/cabloy-docs/backend/field-indexes.md +79 -0
  65. package/cabloy-docs/backend/foundation.md +281 -0
  66. package/cabloy-docs/backend/i18n-guide.md +211 -0
  67. package/cabloy-docs/backend/internal-aop-guide.md +181 -0
  68. package/cabloy-docs/backend/introduction.md +95 -0
  69. package/cabloy-docs/backend/jwt-guide.md +276 -0
  70. package/cabloy-docs/backend/logger-guide.md +223 -0
  71. package/cabloy-docs/backend/mail-guide.md +189 -0
  72. package/cabloy-docs/backend/menu-guide.md +80 -0
  73. package/cabloy-docs/backend/migration-and-changes.md +192 -0
  74. package/cabloy-docs/backend/model-guide.md +274 -0
  75. package/cabloy-docs/backend/multi-database-datasource.md +171 -0
  76. package/cabloy-docs/backend/multi-instance-and-instance-resolution.md +196 -0
  77. package/cabloy-docs/backend/openapi-guide.md +118 -0
  78. package/cabloy-docs/backend/orm-aggregate-group-guide.md +210 -0
  79. package/cabloy-docs/backend/orm-configuration-guide.md +165 -0
  80. package/cabloy-docs/backend/orm-guide.md +109 -0
  81. package/cabloy-docs/backend/orm-mutation-guide.md +195 -0
  82. package/cabloy-docs/backend/orm-select-guide.md +243 -0
  83. package/cabloy-docs/backend/queue-guide.md +271 -0
  84. package/cabloy-docs/backend/quickstart.md +141 -0
  85. package/cabloy-docs/backend/redis-guide.md +70 -0
  86. package/cabloy-docs/backend/redlock-guide.md +60 -0
  87. package/cabloy-docs/backend/relations-guide.md +250 -0
  88. package/cabloy-docs/backend/runtime-and-flavors.md +304 -0
  89. package/cabloy-docs/backend/schedule-guide.md +81 -0
  90. package/cabloy-docs/backend/scripts.md +116 -0
  91. package/cabloy-docs/backend/serialization-guide.md +192 -0
  92. package/cabloy-docs/backend/service-guide.md +166 -0
  93. package/cabloy-docs/backend/sharding-guide.md +49 -0
  94. package/cabloy-docs/backend/startup-guide.md +326 -0
  95. package/cabloy-docs/backend/transaction-guide.md +82 -0
  96. package/cabloy-docs/backend/unit-testing.md +209 -0
  97. package/cabloy-docs/backend/upload-guide.md +160 -0
  98. package/cabloy-docs/backend/user-access-guide.md +157 -0
  99. package/cabloy-docs/backend/validation-guide.md +80 -0
  100. package/cabloy-docs/backend/worker-guide.md +59 -0
  101. package/cabloy-docs/editions/cabloy-basic.md +26 -0
  102. package/cabloy-docs/editions/cabloy-start.md +55 -0
  103. package/cabloy-docs/editions/choosing-between-basic-and-start.md +84 -0
  104. package/cabloy-docs/editions/detection.md +31 -0
  105. package/cabloy-docs/editions/overview.md +107 -0
  106. package/cabloy-docs/frontend/api-guide.md +93 -0
  107. package/cabloy-docs/frontend/api-schema-guide.md +43 -0
  108. package/cabloy-docs/frontend/app-startup-guide.md +185 -0
  109. package/cabloy-docs/frontend/cli.md +78 -0
  110. package/cabloy-docs/frontend/component-guide.md +105 -0
  111. package/cabloy-docs/frontend/component-props-guide.md +97 -0
  112. package/cabloy-docs/frontend/component-v-model-guide.md +110 -0
  113. package/cabloy-docs/frontend/css-in-js-guide.md +151 -0
  114. package/cabloy-docs/frontend/design-principles.md +55 -0
  115. package/cabloy-docs/frontend/environment-config-guide.md +250 -0
  116. package/cabloy-docs/frontend/foundation.md +58 -0
  117. package/cabloy-docs/frontend/generic-component-guide.md +35 -0
  118. package/cabloy-docs/frontend/icon-engine-guide.md +88 -0
  119. package/cabloy-docs/frontend/introduction.md +33 -0
  120. package/cabloy-docs/frontend/ioc-and-beans.md +211 -0
  121. package/cabloy-docs/frontend/mock-guide.md +109 -0
  122. package/cabloy-docs/frontend/model-architecture.md +87 -0
  123. package/cabloy-docs/frontend/model-state-guide.md +70 -0
  124. package/cabloy-docs/frontend/module-scope.md +168 -0
  125. package/cabloy-docs/frontend/modules-and-suites.md +179 -0
  126. package/cabloy-docs/frontend/navigation-guards-guide.md +68 -0
  127. package/cabloy-docs/frontend/openapi-sdk-guide.md +102 -0
  128. package/cabloy-docs/frontend/page-guide.md +223 -0
  129. package/cabloy-docs/frontend/page-params-guide.md +87 -0
  130. package/cabloy-docs/frontend/page-query-guide.md +96 -0
  131. package/cabloy-docs/frontend/page-route-guide.md +147 -0
  132. package/cabloy-docs/frontend/quickstart.md +202 -0
  133. package/cabloy-docs/frontend/route-alias-guide.md +61 -0
  134. package/cabloy-docs/frontend/scripts.md +86 -0
  135. package/cabloy-docs/frontend/sdk-guide.md +45 -0
  136. package/cabloy-docs/frontend/server-data.md +74 -0
  137. package/cabloy-docs/frontend/ssr-client-only.md +40 -0
  138. package/cabloy-docs/frontend/ssr-env.md +51 -0
  139. package/cabloy-docs/frontend/ssr-init-data.md +46 -0
  140. package/cabloy-docs/frontend/ssr-overview.md +48 -0
  141. package/cabloy-docs/frontend/ssr-seo-meta.md +52 -0
  142. package/cabloy-docs/frontend/system-startup-guide.md +186 -0
  143. package/cabloy-docs/frontend/theme-guide.md +154 -0
  144. package/cabloy-docs/frontend/zod-guide.md +161 -0
  145. package/cabloy-docs/fullstack/cli.md +118 -0
  146. package/cabloy-docs/fullstack/comparison-with-other-frameworks.md +117 -0
  147. package/cabloy-docs/fullstack/edition-collaboration-differences.md +62 -0
  148. package/cabloy-docs/fullstack/frontend-metadata-to-backend.md +64 -0
  149. package/cabloy-docs/fullstack/introduction.md +81 -0
  150. package/cabloy-docs/fullstack/openapi-to-sdk.md +116 -0
  151. package/cabloy-docs/fullstack/quickstart.md +89 -0
  152. package/cabloy-docs/fullstack/vona-zova-integration.md +86 -0
  153. package/cabloy-docs/fullstack/vscode-extensions.md +126 -0
  154. package/cabloy-docs/index.md +72 -0
  155. package/cabloy-docs/package.json +16 -0
  156. package/cabloy-docs/pnpm-lock.yaml +1607 -0
  157. package/cabloy-docs/reference/backend-directory-structure.md +88 -0
  158. package/cabloy-docs/reference/cli-reference.md +49 -0
  159. package/cabloy-docs/reference/glossary.md +38 -0
  160. package/cabloy-docs/reference/package-map.md +105 -0
  161. package/cabloy-docs/reference/repo-scripts.md +36 -0
  162. package/package.json +4 -1
  163. package/scripts/init.ts +12 -0
  164. package/scripts/upgrade.ts +31 -3
  165. package/vona/README.md +4 -4
  166. package/vona/README.zh-CN.md +4 -4
  167. package/vona/packages-vona/vona/package.json +1 -1
  168. package/vona/pnpm-lock.yaml +383 -38
  169. package/vona/src/suite-vendor/a-cabloy/modules/a-datasharding/package.json +1 -1
  170. package/vona/src/suite-vendor/a-cabloy/modules/a-datasharding/src/bean/summerCache.datasourceWrite.ts +2 -2
  171. package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/package.json +1 -1
  172. package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/.metadata/index.ts +49 -1
  173. package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/controller/memoryDiag.ts +97 -0
  174. package/vona/src/suite-vendor/a-cabloy/package.json +1 -1
  175. package/vona/src/suite-vendor/a-captcha/modules/a-captcha/package.json +1 -1
  176. package/vona/src/suite-vendor/a-captcha/modules/a-captcha/src/bean/cacheRedis.captcha.ts +2 -2
  177. package/vona/src/suite-vendor/a-captcha/package.json +1 -1
  178. package/vona/src/suite-vendor/a-vona/modules/a-bean/cli/bean/metadata/generate.ts +5 -6
  179. package/vona/src/suite-vendor/a-vona/modules/a-bean/package.json +1 -1
  180. package/vona/src/suite-vendor/a-vona/modules/a-cache/cli/cacheMem/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  181. package/vona/src/suite-vendor/a-vona/modules/a-cache/cli/cacheRedis/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  182. package/vona/src/suite-vendor/a-vona/modules/a-cache/package.json +1 -1
  183. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/.metadata/index.ts +13 -2
  184. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/bean/bean.cache.ts +6 -7
  185. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/{bean/bean.cacheMemBase.ts → service/cacheMemBase_.ts} +3 -3
  186. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/{bean/bean.cacheRedisBase.ts → service/cacheRedisBase_.ts} +3 -3
  187. package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/package.json +1 -1
  188. package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/src/bean/cacheRedis.emailConfirm.ts +2 -2
  189. package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/src/bean/cacheRedis.passwordReset.ts +2 -2
  190. package/vona/src/suite-vendor/a-vona/modules/a-openapi/package.json +1 -1
  191. package/vona/src/suite-vendor/a-vona/modules/a-openapi/src/bean/summerCache.json.ts +2 -2
  192. package/vona/src/suite-vendor/a-vona/modules/a-orm/cli/databaseDialect/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  193. package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
  194. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/.metadata/index.ts +4 -3
  195. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/bean.database.ts +3 -3
  196. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/bean.model.ts +1 -1
  197. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/schedule.softDeletionPrune.ts +1 -1
  198. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/common/utils.ts +1 -1
  199. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/index.ts +1 -1
  200. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_cache.ts +1 -1
  201. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_meta.ts +1 -1
  202. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.modelBase.ts +0 -5
  203. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoAggregate.ts +1 -1
  204. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoCreate.ts +1 -1
  205. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGet.ts +1 -1
  206. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGroup.ts +1 -1
  207. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoMutate.ts +1 -1
  208. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoSelectAndCount.ts +1 -1
  209. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoUpdate.ts +1 -1
  210. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/index.ts +1 -0
  211. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/modelCacheBase.ts +3 -3
  212. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relations.ts +1 -1
  213. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsDynamic.ts +1 -1
  214. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsMutate.ts +1 -1
  215. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsStatic.ts +1 -1
  216. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/cacheEntity_.ts +1 -1
  217. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/cacheQuery_.ts +1 -1
  218. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/database.ts +2 -2
  219. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean/bean.databaseDialectBase.ts → service/databaseDialectBase_.ts} +38 -41
  220. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/db_.ts +2 -2
  221. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/relations_.ts +3 -3
  222. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/database.ts +0 -5
  223. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoGet.ts +1 -1
  224. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoMutate.ts +1 -1
  225. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoSelectAndCount.ts +1 -1
  226. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/model.ts +1 -1
  227. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelAggr.ts +1 -1
  228. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelCount.ts +1 -1
  229. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelGeneral.ts +1 -1
  230. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelGroup.ts +1 -1
  231. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelIncrement.ts +1 -1
  232. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relations.ts +1 -1
  233. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsColumns.ts +1 -1
  234. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDef.ts +1 -1
  235. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDefDynamic.ts +1 -1
  236. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDefMutate.ts +1 -1
  237. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsMutate.ts +1 -1
  238. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsTables.ts +1 -1
  239. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/package.json +1 -1
  240. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.betterSqlite3.ts +2 -2
  241. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.mysql.ts +2 -2
  242. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.pg.ts +2 -2
  243. package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
  244. package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/bean.permission.ts +109 -40
  245. package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/summerCache.permission.ts +2 -2
  246. package/vona/src/suite-vendor/a-vona/modules/a-startup/package.json +1 -1
  247. package/vona/src/suite-vendor/a-vona/modules/a-startup/src/bean/cacheRedis.startupDebounce.ts +2 -2
  248. package/vona/src/suite-vendor/a-vona/modules/a-summer/cli/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  249. package/vona/src/suite-vendor/a-vona/modules/a-summer/package.json +1 -1
  250. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/.metadata/index.ts +1 -1
  251. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/bean/bean.summer.ts +3 -3
  252. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/service/localMem_.ts +3 -3
  253. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/service/localRedis_.ts +3 -3
  254. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/{bean/bean.summerCacheBase.ts → service/summerCacheBase_.ts} +3 -3
  255. package/vona/src/suite-vendor/a-vona/modules/a-swagger/package.json +1 -1
  256. package/vona/src/suite-vendor/a-vona/modules/a-swagger/src/bean/summerCache.rapidoc.ts +2 -2
  257. package/vona/src/suite-vendor/a-vona/modules/a-swagger/src/bean/summerCache.swagger.ts +2 -2
  258. package/vona/src/suite-vendor/a-vona/modules/a-user/package.json +1 -1
  259. package/vona/src/suite-vendor/a-vona/modules/a-user/src/bean/cacheRedis.authToken.ts +2 -2
  260. package/vona/src/suite-vendor/a-vona/modules/a-worker/package.json +1 -1
  261. package/vona/src/suite-vendor/a-vona/modules/a-worker/src/bean/cacheRedis.workerAlive.ts +2 -2
  262. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  263. package/zova/README.md +5 -5
  264. package/zova/README.zh-CN.md +4 -4
  265. package/zova/package.original.json +4 -4
  266. package/zova/packages-cli/cli/package.json +2 -2
  267. package/zova/packages-cli/cli-set-front/package.json +2 -2
  268. package/zova/packages-utils/zova-jsx/package.json +2 -2
  269. package/zova/packages-utils/zova-vite/package.json +2 -2
  270. package/zova/packages-utils/zova-vite/templates/app/controller.tsx_ +3 -3
  271. package/zova/packages-zova/zova/package.json +3 -3
  272. package/zova/packages-zova/zova-core/package.json +2 -2
  273. package/zova/packages-zova/zova-core/src/bean/beanContainer.ts +3 -3
  274. package/zova/packages-zova/zova-core/src/bean/beanControllerPageBase.ts +1 -0
  275. package/zova/packages-zova/zova-core/src/core/component/module.ts +16 -16
  276. package/zova/packages-zova/zova-core/src/core/context/component.ts +35 -3
  277. package/zova/packages-zova/zova-core/src/core/context/util.ts +15 -11
  278. package/zova/pnpm-lock.yaml +1596 -1679
  279. package/zova/src/suite/a-demo/modules/demo-basic/src/.metadata/index.ts +11 -0
  280. package/zova/src/suite/a-demo/modules/demo-basic/src/.metadata/page/toolMinimal.ts +9 -0
  281. package/zova/src/suite/a-demo/modules/demo-basic/src/page/toolMinimal/controller.tsx +11 -0
  282. package/zova/src/suite/a-demo/modules/demo-basic/src/routes.ts +10 -0
  283. package/zova/src/suite-vendor/a-zova/modules/a-model/package.json +1 -1
  284. package/zova/src/suite-vendor/a-zova/modules/a-model/src/service/storage.ts +4 -5
  285. package/zova/src/suite-vendor/a-zova/modules/a-openapi/package.json +1 -1
  286. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/monkey.ts +1 -1
  287. package/zova/src/suite-vendor/a-zova/modules/a-ssr/package.json +1 -1
  288. package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssr.ts +36 -1
  289. package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssrMetaStore.ts +7 -2
  290. package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/monkey.ts +3 -0
  291. package/zova/src/suite-vendor/a-zova/modules/a-ssrserver/package.json +1 -1
  292. package/zova/src/suite-vendor/a-zova/modules/a-ssrserver/src/service/ssrHandler.ts +70 -29
  293. package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
  294. package/zova/src/suite-vendor/a-zova/package.json +6 -6
  295. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud.ts +0 -0
  296. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud_inner.ts +0 -0
  297. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud_table.ts +0 -0
  298. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_knex.ts +0 -0
  299. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_utils.ts +0 -0
  300. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_view.ts +0 -0
@@ -0,0 +1,105 @@
1
+ # Component Guide
2
+
3
+ This guide explains how components work in Zova within the Cabloy monorepo.
4
+
5
+ ## What a component means in Zova
6
+
7
+ A Zova component is not only a reusable render unit. It is also part of the controller-oriented architecture that gives Zova its specific coding style.
8
+
9
+ That means component design is closely tied to:
10
+
11
+ - controller-based logic organization
12
+ - TSX rendering
13
+ - IOC-friendly instance access
14
+ - async-friendly module loading
15
+ - CSS-in-JS styling through the same controller-oriented architecture
16
+
17
+ For the practical styling decision map around local `$style`, dedicated style beans, shared/global styles, and token/theme surfaces, also see [CSS-in-JS Guide](/frontend/css-in-js-guide).
18
+
19
+ ## Create a component
20
+
21
+ Example: create a component named `card` in module `demo-student`.
22
+
23
+ ```bash
24
+ npm run zova :create:component card -- --module=demo-student
25
+ ```
26
+
27
+ ## Controller definition
28
+
29
+ Representative component controller shape:
30
+
31
+ ```typescript
32
+ @Controller()
33
+ class ControllerCard extends BeanControllerBase {
34
+ protected render() {
35
+ return null;
36
+ }
37
+ }
38
+ ```
39
+
40
+ ## Component wrapper
41
+
42
+ Zova automatically creates a wrapper component for each component.
43
+
44
+ Representative example:
45
+
46
+ - component: `card`
47
+ - wrapper: `ZCard`
48
+
49
+ The `Z` prefix is useful because it makes framework components easy to identify quickly inside TSX.
50
+
51
+ ## Use a component
52
+
53
+ Representative usage pattern:
54
+
55
+ ```typescript
56
+ import { ZCard } from 'zova-module-demo-student';
57
+
58
+ class RenderPageCounter {
59
+ render() {
60
+ return <ZCard />;
61
+ }
62
+ }
63
+ ```
64
+
65
+ ## Async loading behavior
66
+
67
+ Component wrappers can also participate in asynchronous loading behavior automatically.
68
+
69
+ This matters because the wrapper is not just a naming convenience. It is part of how Zova turns modular code into practical runtime behavior.
70
+
71
+ ## Reference the component instance
72
+
73
+ Instead of relying on template refs in the usual Vue style, Zova prefers direct access to the component controller instance.
74
+
75
+ Representative pattern:
76
+
77
+ ```typescript
78
+ import type { ControllerCard } from 'zova-module-demo-student';
79
+ import { ZCard } from 'zova-module-demo-student';
80
+
81
+ class RenderPageCounter {
82
+ cardRef: ControllerCard;
83
+
84
+ render() {
85
+ return (
86
+ <ZCard
87
+ controllerRef={ref => {
88
+ this.cardRef = ref;
89
+ }}
90
+ />
91
+ );
92
+ }
93
+ }
94
+ ```
95
+
96
+ ## Practical implications for component implementation
97
+
98
+ When working on Zova components, do not automatically fall back to generic Vue component habits.
99
+
100
+ A better default is:
101
+
102
+ 1. use the component generator
103
+ 2. preserve the wrapper-based usage model
104
+ 3. treat controller access as the primary instance-reference pattern
105
+ 4. remember that wrapper behavior and async loading are part of the framework design
@@ -0,0 +1,97 @@
1
+ # Component Props Guide
2
+
3
+ This guide explains how component props work in Zova within the Cabloy monorepo.
4
+
5
+ ## Why Zova props feel different
6
+
7
+ In Zova, component design does not force a hard separation between `Props`, `Emits`, and `Slots` in the same way many Vue codebases do.
8
+
9
+ Zova uses a more unified approach centered on component props, which makes the programming model more concise and TypeScript-friendly.
10
+
11
+ ## Add props support
12
+
13
+ Example: add props support to component `card`.
14
+
15
+ ```bash
16
+ npm run zova :refactor:componentProps card -- --module=demo-student
17
+ ```
18
+
19
+ ## Define props
20
+
21
+ Representative pattern:
22
+
23
+ ```typescript
24
+ import { ISlot } from 'zova';
25
+
26
+ export interface ControllerCardProps {
27
+ content?: string;
28
+ onReset?: () => void;
29
+ slotHeader?: ISlot;
30
+ slotDefault?: (name: string) => VNode;
31
+ }
32
+ ```
33
+
34
+ This is important because the props contract can describe ordinary values, callbacks, and slot-like behavior in one consistent shape.
35
+
36
+ ## Default values
37
+
38
+ Representative pattern:
39
+
40
+ ```typescript
41
+ class ControllerCard {
42
+ static $propsDefault = {
43
+ content: 'no content',
44
+ };
45
+ }
46
+ ```
47
+
48
+ ## Use props in the controller
49
+
50
+ Zova injects `$props` into the controller base class.
51
+
52
+ Representative pattern:
53
+
54
+ ```typescript
55
+ class ControllerCard {
56
+ render() {
57
+ return (
58
+ <div>
59
+ <div>{this.$props.slotHeader?.()}</div>
60
+ <div>{this.$slotDefault?.('tom')}</div>
61
+ <div>{this.$props.content}</div>
62
+ <button onClick={() => this.$props.onReset?.()}>Reset</button>
63
+ </div>
64
+ );
65
+ }
66
+ }
67
+ ```
68
+
69
+ ## Pass props to child components
70
+
71
+ Representative pattern:
72
+
73
+ ```typescript
74
+ <ZCard
75
+ content="custom content"
76
+ onReset={() => {
77
+ console.log('onReset is invoked');
78
+ }}
79
+ slotHeader={() => {
80
+ return <div>custom header</div>;
81
+ }}
82
+ slotDefault={name => {
83
+ return <div>{name}</div>;
84
+ }}
85
+ />
86
+ ```
87
+
88
+ ## Practical implications for component API design
89
+
90
+ When creating or refactoring Zova components, do not automatically impose a generic Vue component API style.
91
+
92
+ A better default is:
93
+
94
+ 1. use the Zova refactor command to add the props skeleton
95
+ 2. keep the props contract explicit and typed
96
+ 3. treat props as the main contract surface for values, callbacks, and slot-like behavior
97
+ 4. preserve the controller-oriented way of consuming props inside the component
@@ -0,0 +1,110 @@
1
+ # Component v-model Guide
2
+
3
+ This guide explains how component `v-model` works in Zova within the Cabloy monorepo.
4
+
5
+ ## Why Zova `v-model` matters
6
+
7
+ Zova makes it convenient to add two-way binding behavior to a component while keeping the binding logic visible inside the controller model.
8
+
9
+ That is important because the framework treats model binding as part of the controller-oriented component architecture, not just as template sugar.
10
+
11
+ ## Add the basic `modelValue` skeleton
12
+
13
+ Example: add `modelValue` to component `card`.
14
+
15
+ ```bash
16
+ npm run zova :refactor:componentModel card modelValue -- --module=demo-student
17
+ ```
18
+
19
+ ## Representative generated shape
20
+
21
+ ```typescript
22
+ export interface ControllerCardModels {
23
+ vModel?: number;
24
+ }
25
+
26
+ @Controller()
27
+ export class ControllerCard extends BeanControllerBase {
28
+ static $propsDefault = {
29
+ modelValue: 0,
30
+ };
31
+
32
+ modelValue: number;
33
+
34
+ protected async __init__() {
35
+ this.modelValue = this.$useModel('modelValue');
36
+ }
37
+ }
38
+ ```
39
+
40
+ ## Use `v-model` inside the component
41
+
42
+ Representative pattern:
43
+
44
+ ```typescript
45
+ class ControllerCard {
46
+ render() {
47
+ return (
48
+ <div>
49
+ <div>{this.modelValue}</div>
50
+ <button
51
+ onClick={() => {
52
+ this.modelValue++;
53
+ }}
54
+ >
55
+ Change
56
+ </button>
57
+ </div>
58
+ );
59
+ }
60
+ }
61
+ ```
62
+
63
+ The key idea is that changing `this.modelValue` updates the bound parent-side value through the framework binding model.
64
+
65
+ ## Pass `v-model` from the parent
66
+
67
+ Representative pattern:
68
+
69
+ ```typescript
70
+ class ControllerOther {
71
+ count: number;
72
+
73
+ render() {
74
+ return <ZCard vModel={this.count} />;
75
+ }
76
+ }
77
+ ```
78
+
79
+ ## Named `v-model` parameters
80
+
81
+ `modelValue` is only the default binding name. Other binding names can be added, for example `title`.
82
+
83
+ Representative generation command:
84
+
85
+ ```bash
86
+ npm run zova :refactor:componentModel card title -- --module=demo-student
87
+ ```
88
+
89
+ Representative usage pattern:
90
+
91
+ ```typescript
92
+ <ZCard vModel:title={this.title} />
93
+ ```
94
+
95
+ ## Modifiers
96
+
97
+ Zova also supports modifiers through the same broader binding model.
98
+
99
+ One representative example uses a custom `capitalize` modifier, implemented by passing a setter transformation into `$useModel`.
100
+
101
+ That is useful because it shows `v-model` behavior in Zova is programmable and explicit, not just a fixed syntax feature.
102
+
103
+ ## Implementation checks for component binding changes
104
+
105
+ When adding two-way binding to a Zova component:
106
+
107
+ 1. use the Zova refactor command to create the skeleton
108
+ 2. keep the binding visible through `Controller*Models` and `$useModel`
109
+ 3. choose between default and named model parameters deliberately
110
+ 4. use modifiers through the framework pattern instead of inventing parallel custom binding logic
@@ -0,0 +1,151 @@
1
+ # CSS-in-JS Guide
2
+
3
+ This guide explains the role of CSS-in-JS in Zova within the Cabloy monorepo.
4
+
5
+ ## Why CSS-in-JS matters in Zova
6
+
7
+ Zova uses a built-in CSS-in-JS approach so styling can stay close to component and page logic without collapsing into uncontrolled global CSS.
8
+
9
+ This is often explained through TypeStyle, but the main point is not novelty. The goal is a styling system that stays flexible, scoped, and framework-friendly in larger applications.
10
+
11
+ ## Core benefits
12
+
13
+ Several enduring benefits stand out:
14
+
15
+ - scoped styles that reduce conflicts
16
+ - dynamic style generation from reactive state
17
+ - token support independent of UI libraries
18
+ - theme support independent of UI libraries
19
+ - easier debugging through development-friendly class naming
20
+ - built-in template support for multiple UI-library strategies
21
+
22
+ ## Choose the right styling mechanism
23
+
24
+ A practical decision map is:
25
+
26
+ | Use this | When it fits best |
27
+ | ----------------------------------------- | --------------------------------------------------------------------------------------- |
28
+ | `this.$style(...)` | local scoped styles near one controller, render bean, or style bean |
29
+ | dedicated style bean with `BeanStyleBase` | the page or component has enough styling logic to deserve its own file or boundary |
30
+ | `@Css()` and `$cssBase` | shared/global style vocabulary should be reused across many pages or components |
31
+ | `$token` | style values should come from theme-defined design values instead of hardcoded literals |
32
+ | `$theme` | runtime behavior needs to read or switch the active theme or dark-mode state |
33
+
34
+ The important point is that these are not competing styling systems. They are connected surfaces inside one Zova styling architecture.
35
+
36
+ ## Local scoped styles with `this.$style(...)`
37
+
38
+ `this.$style(...)` is the normal entrypoint for local scoped class generation.
39
+
40
+ Use it when the style belongs to one page, component, or style bean and should stay close to the current controller-oriented logic.
41
+
42
+ This is a good default for:
43
+
44
+ - one-off local classes
45
+ - styles driven by local runtime state
46
+ - styles that should remain scoped instead of becoming app-wide vocabulary
47
+
48
+ ## Dedicated style beans with `BeanStyleBase`
49
+
50
+ When styling grows beyond a small local block, split it into a dedicated style bean instead of forcing everything to remain inline.
51
+
52
+ A practical rule is:
53
+
54
+ - use local `this.$style(...)` first when the styling is still small
55
+ - move into a dedicated style bean when the page or component needs a clearer styling boundary
56
+
57
+ This is an organizational split, not a different styling engine. Zova still uses the same CSS-in-JS model; it simply gives larger pages and components a better place to hold their style concerns.
58
+
59
+ ## Shared/global styles with `@Css()` and `$cssBase`
60
+
61
+ Not every style should stay local.
62
+
63
+ Use shared/global styles when the application needs reusable style vocabulary that should be available across multiple pages or components.
64
+
65
+ A practical distinction is:
66
+
67
+ - use local scoped classes when the style belongs to one page or component
68
+ - use `@Css()` and `$cssBase` when the style should be shared as part of broader app-level styling vocabulary
69
+
70
+ That is the practical global-style story in Zova: shared styles still live inside the framework model instead of falling back to uncontrolled ad hoc global CSS.
71
+
72
+ ## How styles consume tokens
73
+
74
+ When a value represents design meaning rather than a one-off literal, prefer `$token` over hardcoded values.
75
+
76
+ That is especially useful for:
77
+
78
+ - colors
79
+ n- spacing or sizing conventions owned by the theme
80
+ - component-surface values that should change with dark mode or brand theme
81
+
82
+ This keeps style logic flexible across themes and editions without changing the underlying styling architecture.
83
+
84
+ ## Style -> token -> theme flow
85
+
86
+ A useful mental model is:
87
+
88
+ 1. `this.$style(...)` generates scoped classes
89
+ 2. those classes can consume `this.$token`
90
+ 3. token values come from the active theme
91
+ 4. theme beans provide the concrete token values
92
+ 5. runtime theme switching changes the active token set
93
+
94
+ That means CSS-in-JS, tokens, and themes are not separate ideas. They are one connected frontend styling flow.
95
+
96
+ For the token and theme lifecycle itself, also see [Theme Guide](/frontend/theme-guide).
97
+
98
+ ## Debugging generated class names
99
+
100
+ CSS-in-JS class names are framework-generated for scoping, but they still remain debuggable during development.
101
+
102
+ A practical rule is:
103
+
104
+ - treat generated class names as framework output rather than as a hand-authored public CSS API
105
+ - use the development-friendly naming help to trace where a style came from when debugging
106
+
107
+ ## Why UI-library independence matters
108
+
109
+ This is especially important in Cabloy because the two editions diverge in frontend stack choices:
110
+
111
+ - **Cabloy Basic** aligns with DaisyUI + TailwindCSS oriented examples
112
+ - **Cabloy Start** aligns with Vuetify-oriented modules
113
+
114
+ A UI-library-independent styling layer makes it easier for the same architectural ideas to survive across both editions.
115
+
116
+ ## Styling in the controller-oriented model
117
+
118
+ In Zova, styling is not an unrelated afterthought. It fits into the same controller-oriented architecture as state and render logic.
119
+
120
+ That is why examples often use style generation directly from a controller or style-oriented bean rather than splitting everything into a separate CSS asset by default.
121
+
122
+ ## What stays shared across editions
123
+
124
+ Across Cabloy Basic and Cabloy Start, the styling architecture itself stays shared:
125
+
126
+ - CSS-in-JS remains the primary styling model
127
+ - local scoped styles still use `$style`
128
+ - larger styling concerns can still move into dedicated style beans
129
+ - shared/global styling can still use `@Css()` and `$cssBase`
130
+ - token and theme behavior still form the same architecture
131
+ - runtime theme switching still belongs to the same `$theme` model
132
+
133
+ What may still vary by edition or UI library is:
134
+
135
+ - token shape details
136
+ - concrete token values
137
+ - theme-handler integration details
138
+ - surrounding utility-class or component-library conventions
139
+
140
+ That means edition differences usually change the surrounding UI stack, not the core styling architecture.
141
+
142
+ ## Implementation checks for frontend styling changes
143
+
144
+ When changing frontend styling in Zova, ask:
145
+
146
+ 1. should this use the built-in CSS-in-JS path instead of ad hoc external CSS?
147
+ 2. does the style depend on reactive or runtime state?
148
+ 3. does the active edition affect only the UI library, while the styling architecture remains shared?
149
+ 4. should token or theme mechanisms be used instead of hardcoded values?
150
+
151
+ That keeps style work aligned with Zova’s actual design.
@@ -0,0 +1,55 @@
1
+ # Frontend Design Principles
2
+
3
+ This guide explains the core design principles behind Zova in the Cabloy monorepo.
4
+
5
+ ## Intuitive reactivity
6
+
7
+ Zova keeps Vue3’s reactive strengths, but aims for a code style that feels closer to native variable usage than traditional `ref/reactive`-heavy code.
8
+
9
+ The practical design goal is not just shorter syntax. It is to keep business code understandable even as the system grows.
10
+
11
+ ## Unified model-based state
12
+
13
+ A major Zova idea is that multiple state categories can be handled through one model-centered mental model instead of unrelated mechanisms.
14
+
15
+ Four common categories help explain this model:
16
+
17
+ - asynchronous server-side data
18
+ - local storage data
19
+ - cookie data
20
+ - in-memory data
21
+
22
+ In Zova, these are intentionally brought under a more unified `Model` abstraction so SSR support, usage patterns, and maintenance expectations stay more consistent.
23
+
24
+ ## IOC as the sharing model
25
+
26
+ State and behavior sharing across several scopes can be expressed through IOC rather than a pile of unrelated patterns.
27
+
28
+ Representative scopes include:
29
+
30
+ - component-internal sharing
31
+ - between-components sharing
32
+ - app-global sharing
33
+ - system-level sharing
34
+
35
+ This is one of the clearest reasons Zova code can look different from conventional Vue code while staying structured for large systems.
36
+
37
+ ## IOC + AOP for extensibility
38
+
39
+ Zova does not treat IOC as only a dependency injection mechanism. It also layers AOP-oriented extensibility on top of IOC so the system can grow without forcing every concern into the same class body.
40
+
41
+ That is especially valuable for:
42
+
43
+ - logging
44
+ - cross-cutting behavior
45
+ - internal and external extension points
46
+ - large-scale maintainability
47
+
48
+ ## Practical implications for implementation
49
+
50
+ These design principles should influence how code is extended in Zova. For the deeper structural model behind these principles, see [IoC and Beans](/frontend/ioc-and-beans), [Modules and Suites](/frontend/modules-and-suites), and [Module Scope](/frontend/module-scope).
51
+
52
+ - do not rewrite Zova code toward generic Vue habits automatically
53
+ - do not assume `ref.value`-style patterns are the desired end state
54
+ - prefer existing model, IOC, and AOP conventions when extending code
55
+ - verify whether an existing Zova abstraction already solves the problem before introducing a framework-neutral pattern