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
@@ -46,6 +46,7 @@ export * from '../page/routeQuery/controller.jsx';
46
46
  export * from '../page/routeQueryB/controller.jsx';
47
47
  export * from '../page/state/controller.jsx';
48
48
  export * from '../page/style/controller.jsx';
49
+ export * from '../page/toolMinimal/controller.jsx';
49
50
  export * from '../page/toolOne/controller.jsx';
50
51
  export * from '../page/toolTwo/controller.jsx';
51
52
 
@@ -111,6 +112,11 @@ declare module 'zova-module-demo-basic' {
111
112
  get scope(): ScopeModuleDemoBasic;
112
113
  }
113
114
 
115
+ export interface ControllerPageToolMinimal {
116
+ /** @internal */
117
+ get scope(): ScopeModuleDemoBasic;
118
+ }
119
+
114
120
  export interface ControllerPageToolOne {
115
121
  /** @internal */
116
122
  get scope(): ScopeModuleDemoBasic;
@@ -134,6 +140,7 @@ import { ControllerPageRouteQuery } from '../page/routeQuery/controller.jsx';
134
140
  import { ControllerPageRouteQueryB } from '../page/routeQueryB/controller.jsx';
135
141
  import { ControllerPageState } from '../page/state/controller.jsx';
136
142
  import { ControllerPageStyle } from '../page/style/controller.jsx';
143
+ import { ControllerPageToolMinimal } from '../page/toolMinimal/controller.jsx';
137
144
  import { ControllerPageToolOne } from '../page/toolOne/controller.jsx';
138
145
  import { ControllerPageToolTwo } from '../page/toolTwo/controller.jsx';
139
146
  import 'zova';
@@ -150,6 +157,7 @@ declare module 'zova' {
150
157
  'demo-basic.controller.pageRouteQueryB': ControllerPageRouteQueryB;
151
158
  'demo-basic.controller.pageState': ControllerPageState;
152
159
  'demo-basic.controller.pageStyle': ControllerPageStyle;
160
+ 'demo-basic.controller.pageToolMinimal': ControllerPageToolMinimal;
153
161
  'demo-basic.controller.pageToolOne': ControllerPageToolOne;
154
162
  'demo-basic.controller.pageToolTwo': ControllerPageToolTwo;
155
163
  }
@@ -166,6 +174,7 @@ export * from './page/routeQueryB.js';
166
174
  import { NSControllerPageRouteQueryB } from './page/routeQueryB.js';
167
175
  export * from './page/state.js';
168
176
  export * from './page/style.js';
177
+ export * from './page/toolMinimal.js';
169
178
  export * from './page/toolOne.js';
170
179
  import { NSControllerPageToolOne } from './page/toolOne.js';
171
180
  export * from './page/toolTwo.js';
@@ -182,11 +191,13 @@ export interface IPagePathRecord {
182
191
  '/demo/basic/routeQueryB': TypePagePathSchema<NSControllerPageRouteQueryB.ParamsInput,NSControllerPageRouteQueryB.QueryInput>;
183
192
  '/demo/basic/state': TypePagePathSchema<undefined,undefined>;
184
193
  '/demo/basic/style': TypePagePathSchema<undefined,undefined>;
194
+ '/demo/basic/toolMinimal': TypePagePathSchema<undefined,undefined>;
185
195
  '/demo/basic/toolOne/:id?': TypePagePathSchema<NSControllerPageToolOne.ParamsInput,NSControllerPageToolOne.QueryInput>;
186
196
  '/demo/basic/toolTwo/:id?': TypePagePathSchema<NSControllerPageToolTwo.ParamsInput,NSControllerPageToolTwo.QueryInput>;
187
197
  }
188
198
  export interface IPageNameRecord {
189
199
  'demo-basic:routeParams': undefined;
200
+ 'demo-basic:toolMinimal': undefined;
190
201
  'demo-basic:toolOne': undefined;
191
202
  'demo-basic:toolTwo': undefined;
192
203
  }
@@ -0,0 +1,9 @@
1
+ import { createZovaComponentPage } from 'zova';
2
+
3
+ import { ControllerPageToolMinimal } from '../../page/toolMinimal/controller.jsx';
4
+
5
+ export const ZPageToolMinimal = createZovaComponentPage(
6
+ ControllerPageToolMinimal,
7
+ undefined,
8
+ undefined,
9
+ );
@@ -0,0 +1,11 @@
1
+ import { BeanControllerPageBase } from 'zova';
2
+ import { Controller } from 'zova-module-a-bean';
3
+
4
+ @Controller()
5
+ export class ControllerPageToolMinimal extends BeanControllerPageBase {
6
+ protected async __init__() {}
7
+
8
+ protected render() {
9
+ return <div>minimal</div>;
10
+ }
11
+ }
@@ -7,6 +7,7 @@ import { ZPageRouteQuery } from './.metadata/page/routeQuery.js';
7
7
  import { ZPageRouteQueryB } from './.metadata/page/routeQueryB.js';
8
8
  import { ZPageState } from './.metadata/page/state.js';
9
9
  import { ZPageStyle } from './.metadata/page/style.js';
10
+ import { ZPageToolMinimal } from './.metadata/page/toolMinimal.js';
10
11
  import { ZPageToolOne } from './.metadata/page/toolOne.js';
11
12
  import { ZPageToolTwo } from './.metadata/page/toolTwo.js';
12
13
 
@@ -26,6 +27,15 @@ export const routes: IModuleRoute[] = [
26
27
  },
27
28
  },
28
29
  { path: 'routeQueryB', component: ZPageRouteQueryB, meta: { requiresAuth: false } },
30
+ {
31
+ name: 'toolMinimal',
32
+ path: 'toolMinimal',
33
+ component: ZPageToolMinimal,
34
+ meta: {
35
+ layout: 'empty',
36
+ requiresAuth: false,
37
+ },
38
+ },
29
39
  {
30
40
  name: 'toolOne',
31
41
  path: 'toolOne/:id?',
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-module-a-model",
3
- "version": "5.1.23",
3
+ "version": "5.1.24",
4
4
  "gitHead": "09d901d17140a80ee0764211b441cda72fd94663",
5
5
  "description": "core",
6
6
  "keywords": [
@@ -10,11 +10,10 @@ export class ServiceStorage extends BeanBase {
10
10
 
11
11
  async moduleLoaded() {
12
12
  // options
13
- let options = this.scope.config.queryClientConfig.defaultOptions;
13
+ const options = deepExtend({}, this.scope.config.queryClientConfig.defaultOptions);
14
14
  if (process.env.SERVER) {
15
- options = deepExtend({}, options, {
16
- queries: { gcTime: Infinity },
17
- });
15
+ options.queries ??= {};
16
+ options.queries.gcTime = Infinity;
18
17
  }
19
18
  // queryCache
20
19
  const queryCache = new QueryCache();
@@ -39,7 +38,7 @@ export class ServiceStorage extends BeanBase {
39
38
  },
40
39
  });
41
40
  }
42
- this._queryClient.clear();
41
+ this._queryClient?.clear();
43
42
  });
44
43
  }
45
44
  // client
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-module-a-openapi",
3
- "version": "5.1.30",
3
+ "version": "5.1.31",
4
4
  "gitHead": "09d901d17140a80ee0764211b441cda72fd94663",
5
5
  "description": "",
6
6
  "keywords": [
@@ -22,7 +22,7 @@ export class Monkey extends BeanSimple implements IMonkeyModule, IMonkeyBeanInit
22
22
  if (this._moduleSelf === module) {
23
23
  await this._loadSdk();
24
24
  this.ctx.util.instanceScope(() => {
25
- return watch(
25
+ watch(
26
26
  () => {
27
27
  return this.app.meta.locale.current;
28
28
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-module-a-ssr",
3
- "version": "5.1.18",
3
+ "version": "5.1.19",
4
4
  "gitHead": "09d901d17140a80ee0764211b441cda72fd94663",
5
5
  "description": "",
6
6
  "keywords": [
@@ -1,5 +1,5 @@
1
1
  import type { ComponentInternalInstance, Ref, VNode } from 'vue';
2
- import type { Functionable } from 'zova';
2
+ import type { Functionable, ZovaContext } from 'zova';
3
3
 
4
4
  import { includeBooleanAttr, isBooleanAttr, isString, stringifyStyle } from '@vue/shared';
5
5
  import { defu } from 'defu';
@@ -23,6 +23,7 @@ const SymbolOnHydrateds = Symbol('SymbolOnHydrateds');
23
23
  const SymbolOnHydratePropHasMismatches = Symbol('SymbolOnHydratePropHasMismatches');
24
24
  const SymbolInstanceUpdates = Symbol('SymbolInstanceUpdates');
25
25
  const SymbolHydratingCounter = Symbol('SymbolHydratingCounter');
26
+ const SymbolServerContexts = Symbol('SymbolServerContexts');
26
27
 
27
28
  export class CtxSSR extends BeanSimple {
28
29
  private [SymbolIsRuntimeSsrPreHydration]: Ref<boolean> = ref(false);
@@ -33,11 +34,15 @@ export class CtxSSR extends BeanSimple {
33
34
  private [SymbolInstanceUpdates]: ComponentInternalInstance[] = [];
34
35
 
35
36
  private [SymbolHydratingCounter]: number = 0;
37
+ private [SymbolServerContexts]: Set<ZovaContext> = new Set();
36
38
 
37
39
  public metaStore: CtxSSRMetaStore;
38
40
 
39
41
  /** @internal */
40
42
  public initialize() {
43
+ if (process.env.SERVER) {
44
+ this._serverContextRegister();
45
+ }
41
46
  // ssr state
42
47
  this[SymbolSSRState] = this.sys.bean._getBeanSyncOnly('a-ssr.sys.ssrState');
43
48
  // SymbolIsRuntimeSsrPreHydration
@@ -63,6 +68,26 @@ export class CtxSSR extends BeanSimple {
63
68
  }
64
69
  }
65
70
 
71
+ private _serverContextRegister(currentContext: ZovaContext = this.ctx) {
72
+ const serverContexts = this[SymbolServerContexts];
73
+ serverContexts.add(currentContext);
74
+ this.context.onRendered(() => {
75
+ serverContexts.delete(currentContext);
76
+ });
77
+ }
78
+
79
+ private _serverContextsDispose() {
80
+ const serverContexts = this[SymbolServerContexts];
81
+ for (const serverContext of serverContexts) {
82
+ if (serverContext.disposed) continue;
83
+ if (serverContext.bean && serverContext.bean !== serverContext.app?.bean) {
84
+ serverContext.bean.dispose();
85
+ }
86
+ serverContext.dispose();
87
+ }
88
+ serverContexts.clear();
89
+ }
90
+
66
91
  get isRuntimeSsrPreHydration() {
67
92
  return this[SymbolIsRuntimeSsrPreHydration].value;
68
93
  }
@@ -265,4 +290,14 @@ export class CtxSSR extends BeanSimple {
265
290
  }
266
291
  return false;
267
292
  }
293
+
294
+ /** @internal */
295
+ public _registerServerContext(currentContext: ZovaContext) {
296
+ this._serverContextRegister(currentContext);
297
+ }
298
+
299
+ /** @internal */
300
+ public _disposeServerContexts() {
301
+ this._serverContextsDispose();
302
+ }
268
303
  }
@@ -32,13 +32,18 @@ export class CtxSSRMetaStore extends BeanSimple {
32
32
  }
33
33
 
34
34
  private _onRenderedLast(err?: Error) {
35
- if (!err) {
35
+ const app = this.app;
36
+ try {
37
+ if (err) return;
38
+
36
39
  const ssrContext = this.ctx.meta.$ssr.context;
37
40
  this._injectContextState(ssrContext);
38
41
  this._injectContextStateDefer(ssrContext);
39
42
  this._injectServerMeta(ssrContext);
43
+ } finally {
44
+ this.ctx.meta.$ssr._disposeServerContexts();
45
+ app?.close();
40
46
  }
41
- this.app.close();
42
47
  }
43
48
 
44
49
  addMetaOptions(metaOptionsWrapper: SSRMetaOptionsWrapper) {
@@ -22,6 +22,9 @@ export class Monkey
22
22
  {
23
23
  appContextInitialize(ctx: ZovaContext): void {
24
24
  ctx.meta.$ssr = ctx.app.ctx.meta.$ssr;
25
+ if (process.env.SERVER) {
26
+ ctx.meta.$ssr._registerServerContext(ctx);
27
+ }
25
28
  }
26
29
 
27
30
  async appInitialize() {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-module-a-ssrserver",
3
- "version": "5.1.15",
3
+ "version": "5.1.16",
4
4
  "gitHead": "09d901d17140a80ee0764211b441cda72fd94663",
5
5
  "description": "",
6
6
  "keywords": [
@@ -72,42 +72,83 @@ export class ServiceSsrHandler extends BeanBase {
72
72
  onRenderedList.push(fn);
73
73
  },
74
74
  };
75
- // render
76
- const renderFn = await serverEntry(ssrContext);
77
- const [runtimePageContent, err] = await catchError(() => {
78
- return renderToString(renderFn, ssrContext);
79
- });
75
+ let renderFn;
76
+ let runtimePageContent = '';
77
+ let renderedError;
78
+ let onRenderedFlushed = false;
79
+ let renderedFinalized = false;
80
+ try {
81
+ // render
82
+ renderFn = await serverEntry(ssrContext);
83
+ const [runtimePageContentInner, err] = await catchError(() => {
84
+ return renderToString(renderFn, ssrContext);
85
+ });
86
+ if (runtimePageContentInner) {
87
+ runtimePageContent = runtimePageContentInner as string;
88
+ }
80
89
 
81
- const error = ssrContext._meta.renderError ?? err;
82
- onRenderedList.forEach(fn => {
83
- fn(error);
84
- });
85
- cast(ssrContext).rendered(error);
86
- if (error) {
87
- if (error instanceof Error) throw error;
88
- return error;
89
- }
90
+ const error = ssrContext._meta.renderError ?? err;
91
+ renderedError = error;
92
+ onRenderedList.forEach(fn => {
93
+ fn(error);
94
+ });
95
+ onRenderedFlushed = true;
96
+ cast(ssrContext).rendered(error);
97
+ renderedFinalized = true;
98
+ if (error) {
99
+ if (error instanceof Error) throw error;
100
+ return error;
101
+ }
90
102
 
91
- ssrContext._meta.runtimePageContent = runtimePageContent;
103
+ ssrContext._meta.runtimePageContent = runtimePageContent;
104
+
105
+ // @vitejs/plugin-vue injects code into a component's setup() that registers
106
+ // itself on ctx.modules. After the render, ctx.modules would contain all the
107
+ // components that have been instantiated during this render call.
108
+ const modules = cast(ssrContext).modules;
109
+ if (modules) {
110
+ ssrContext._meta.endingHeadTags += this._renderModulesPreload_zova(modules, {
111
+ ssrContext,
112
+ });
113
+ ssrContext._meta.endingHeadTags += this._renderModulesPreload(modules, {
114
+ ssrContext,
115
+ });
116
+ }
92
117
 
93
- // @vitejs/plugin-vue injects code into a component's setup() that registers
94
- // itself on ctx.modules. After the render, ctx.modules would contain all the
95
- // components that have been instantiated during this render call.
96
- ssrContext._meta.endingHeadTags += this._renderModulesPreload_zova(cast(ssrContext).modules, {
97
- ssrContext,
98
- });
99
- ssrContext._meta.endingHeadTags += this._renderModulesPreload(cast(ssrContext).modules, {
100
- ssrContext,
101
- });
118
+ const html = renderTemplate(ssrContext);
102
119
 
103
- const html = renderTemplate(ssrContext);
120
+ // transferCache
121
+ await this._renderTransferCache(options, route);
104
122
 
105
- // transferCache
106
- await this._renderTransferCache(options, route);
123
+ // todo: ssg
107
124
 
108
- // todo: ssg
125
+ return html;
126
+ } finally {
127
+ const context = cast(ssrContext);
128
+ if (!onRenderedFlushed) {
129
+ onRenderedList.forEach(fn => {
130
+ fn(renderedError);
131
+ });
132
+ }
133
+ if (!renderedFinalized && typeof context.rendered === 'function') {
134
+ context.rendered(renderedError);
135
+ }
136
+ onRenderedList.length = 0;
137
+ this._clearSsrContext(context);
138
+ renderFn = undefined;
139
+ }
140
+ }
109
141
 
110
- return html;
142
+ private _clearSsrContext(context): void {
143
+ context.modules?.clear?.();
144
+ if (context.__qMetaList?.length) {
145
+ context.__qMetaList.length = 0;
146
+ }
147
+ context.state = undefined;
148
+ context.stateDefer = undefined;
149
+ context.performAction = undefined;
150
+ context.rendered = undefined;
151
+ context._meta = undefined;
111
152
  }
112
153
 
113
154
  public async ensureReady(handlerNonce: number) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-module-a-zova",
3
- "version": "5.1.60",
3
+ "version": "5.1.61",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "zova",
6
6
  "keywords": [
@@ -43,7 +43,7 @@
43
43
  "@cabloy/word-utils": "^2.1.14",
44
44
  "defu": "^6.1.7",
45
45
  "luxon": "^3.7.2",
46
- "zova-jsx": "^1.1.54"
46
+ "zova-jsx": "^1.1.55"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@cabloy/cli": "^3.1.14",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-suite-a-zova",
3
- "version": "5.1.92",
3
+ "version": "5.1.93",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "zova",
6
6
  "license": "MIT",
@@ -21,18 +21,18 @@
21
21
  "zova-module-a-interceptor": "^5.1.22",
22
22
  "zova-module-a-logger": "^5.1.20",
23
23
  "zova-module-a-meta": "^5.1.15",
24
- "zova-module-a-model": "^5.1.23",
25
- "zova-module-a-openapi": "^5.1.30",
24
+ "zova-module-a-model": "^5.1.24",
25
+ "zova-module-a-openapi": "^5.1.31",
26
26
  "zova-module-a-router": "^5.1.23",
27
27
  "zova-module-a-routerstack": "^5.1.20",
28
28
  "zova-module-a-routertabs": "^5.1.25",
29
- "zova-module-a-ssr": "^5.1.18",
29
+ "zova-module-a-ssr": "^5.1.19",
30
30
  "zova-module-a-ssrhmr": "^5.1.16",
31
- "zova-module-a-ssrserver": "^5.1.15",
31
+ "zova-module-a-ssrserver": "^5.1.16",
32
32
  "zova-module-a-style": "^5.1.25",
33
33
  "zova-module-a-table": "^5.1.27",
34
34
  "zova-module-a-zod": "^5.1.23",
35
- "zova-module-a-zova": "^5.1.60"
35
+ "zova-module-a-zova": "^5.1.61"
36
36
  },
37
37
  "title": "a-zova"
38
38
  }