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
@@ -1,6 +1,5 @@
1
1
  import type { FunctionAny } from 'vona';
2
2
 
3
- import type { BeanModel } from '../bean/bean.model.ts';
4
3
  import type { ServiceDb } from '../service/db_.ts';
5
4
  import type { ConfigDatabase } from './config.ts';
6
5
 
@@ -28,10 +27,6 @@ export interface IDatabaseSwitchOptions {
28
27
  }
29
28
 
30
29
  declare module 'vona' {
31
- export interface IBeanRecordGlobal {
32
- model: BeanModel;
33
- }
34
-
35
30
  export interface VonaConfig {
36
31
  database: ConfigDatabase;
37
32
  }
@@ -1,4 +1,4 @@
1
- import type { BeanModelMeta } from '../../bean/bean.model/bean.model_meta.ts';
1
+ import type { BeanModelMeta } from '../../lib/bean.model/bean.model_meta.ts';
2
2
  import type { IModelRelationIncludeWrapper } from '../model.ts';
3
3
  import type { TypeModelColumns } from '../modelWhere.ts';
4
4
  import type { IModelClassRecord } from '../onion/model.ts';
@@ -1,7 +1,7 @@
1
1
  import type { TableIdentity } from 'table-identity';
2
2
  import type { OmitNever, TypeOmitStringUnion } from 'vona';
3
3
 
4
- import type { BeanModelMeta } from '../../bean/bean.model/bean.model_meta.ts';
4
+ import type { BeanModelMeta } from '../../lib/bean.model/bean.model_meta.ts';
5
5
  import type { IModelRelationIncludeWrapper } from '../model.ts';
6
6
  import type { TypeModelColumnsStrict } from '../modelWhere.ts';
7
7
  import type { IDecoratorModelOptions, IModelClassRecord } from '../onion/model.ts';
@@ -1,4 +1,4 @@
1
- import type { BeanModelMeta } from '../../bean/bean.model/bean.model_meta.ts';
1
+ import type { BeanModelMeta } from '../../lib/bean.model/bean.model_meta.ts';
2
2
  import type { IModelClassRecord } from '../onion/model.ts';
3
3
  import type { TypeDtoGetResult } from './dtoGet.ts';
4
4
 
@@ -1,7 +1,7 @@
1
1
  import type { Knex } from 'knex';
2
2
  import type { TSummerCacheActionOptions } from 'vona-module-a-summer';
3
3
 
4
- import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
4
+ import type { BeanModelMeta } from '../lib/bean.model/bean.model_meta.ts';
5
5
  import type {
6
6
  TypeModelColumn,
7
7
  TypeModelColumns,
@@ -1,6 +1,6 @@
1
1
  import type { OmitNever } from 'vona';
2
2
 
3
- import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
3
+ import type { BeanModelMeta } from '../lib/bean.model/bean.model_meta.ts';
4
4
  import type { IModelSelectParamsJoin } from './model.ts';
5
5
  import type { TypeModelColumns, TypeModelWhere } from './modelWhere.ts';
6
6
  import type { TypeModelsClassLikeGeneral } from './relations.ts';
@@ -1,4 +1,4 @@
1
- import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
1
+ import type { BeanModelMeta } from '../lib/bean.model/bean.model_meta.ts';
2
2
  import type { IModelSelectParamsJoin } from './model.ts';
3
3
  import type { TypeModelColumn, TypeModelWhere } from './modelWhere.ts';
4
4
  import type { TypeModelsClassLikeGeneral } from './relations.ts';
@@ -1,4 +1,4 @@
1
- import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
1
+ import type { BeanModelMeta } from '../lib/bean.model/bean.model_meta.ts';
2
2
  import type {
3
3
  IModelRelationIncludeWrapper,
4
4
  IModelSelectParamsJoin,
@@ -1,4 +1,4 @@
1
- import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
1
+ import type { BeanModelMeta } from '../lib/bean.model/bean.model_meta.ts';
2
2
  import type { IModelSelectParamsJoin, IModelSelectParamsOrder } from './model.ts';
3
3
  import type { TypeModelSelectAggrParamsAggrs } from './modelAggr.ts';
4
4
  import type { TypeModelColumnsStrict, TypeModelWhere } from './modelWhere.ts';
@@ -1,6 +1,6 @@
1
1
  import type { OmitNever } from 'vona';
2
2
 
3
- import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
3
+ import type { BeanModelMeta } from '../lib/bean.model/bean.model_meta.ts';
4
4
  import type { IModelSelectParamsJoin } from './model.ts';
5
5
  import type { TypeModelWhere } from './modelWhere.ts';
6
6
  import type { TypeModelsClassLikeGeneral } from './relations.ts';
@@ -1,6 +1,6 @@
1
1
  import type { Constructable, OmitNever } from 'vona';
2
2
 
3
- import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
3
+ import type { BeanModelMeta } from '../lib/bean.model/bean.model_meta.ts';
4
4
  import type { TypeDepthPrev, TypeDepthPrevMax } from './depth.ts';
5
5
  import type { IDecoratorModelOptions, IModelClassRecord } from './onion/model.ts';
6
6
  import type {
@@ -1,6 +1,6 @@
1
1
  import type { TypeConfirmArray, TypeRecordValues } from 'vona';
2
2
 
3
- import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
3
+ import type { BeanModelMeta } from '../lib/bean.model/bean.model_meta.ts';
4
4
  import type { IDecoratorModelOptions } from './onion/model.ts';
5
5
  import type {
6
6
  TypeModelOfModelLike,
@@ -1,4 +1,4 @@
1
- import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
1
+ import type { BeanModelMeta } from '../lib/bean.model/bean.model_meta.ts';
2
2
  import type { ServiceDb } from '../service/db_.ts';
3
3
  import type { IDatabaseClientRecord } from './database.ts';
4
4
  import type { TypeModelSelectAggrParamsAggrs } from './modelAggr.ts';
@@ -1,4 +1,4 @@
1
- import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
1
+ import type { BeanModelMeta } from '../lib/bean.model/bean.model_meta.ts';
2
2
  import type {
3
3
  IModelRelationIncludeWrapper,
4
4
  IModelSelectParamsJoin,
@@ -1,4 +1,4 @@
1
- import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
1
+ import type { BeanModelMeta } from '../lib/bean.model/bean.model_meta.ts';
2
2
  import type { IModelRelationIncludeWrapper } from './model.ts';
3
3
  import type { IModelRelationOptionsMetaWrapper } from './relationsDef.ts';
4
4
 
@@ -1,7 +1,7 @@
1
1
  import type { TableIdentity } from 'table-identity';
2
2
  import type { OmitNever } from 'vona';
3
3
 
4
- import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
4
+ import type { BeanModelMeta } from '../lib/bean.model/bean.model_meta.ts';
5
5
  import type { IDecoratorModelOptions } from './onion/model.ts';
6
6
  import type {
7
7
  TypeUtilGetModelOptions,
@@ -1,6 +1,6 @@
1
1
  import type { TypeConfirmArray, TypeRecordValues } from 'vona';
2
2
 
3
- import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
3
+ import type { BeanModelMeta } from '../lib/bean.model/bean.model_meta.ts';
4
4
  import type { IDecoratorModelOptions } from './onion/model.ts';
5
5
  import type {
6
6
  TypeModelOfModelLike,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-a-ormdialect",
3
- "version": "5.1.8",
3
+ "version": "5.1.9",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "",
6
6
  "keywords": [
@@ -12,12 +12,12 @@ import type {
12
12
  import { ensureDir, remove } from 'fs-extra';
13
13
  import { globby } from 'globby';
14
14
  import path from 'node:path';
15
- import { BeanDatabaseDialectBase, DatabaseDialect } from 'vona-module-a-orm';
15
+ import { ServiceDatabaseDialectBase, DatabaseDialect } from 'vona-module-a-orm';
16
16
 
17
17
  export interface IDatabaseDialectOptionsBetterSqlite3 extends IDecoratorDatabaseDialectOptions {}
18
18
 
19
19
  @DatabaseDialect<IDatabaseDialectOptionsBetterSqlite3>()
20
- export class DatabaseDialectBetterSqlite3 extends BeanDatabaseDialectBase {
20
+ export class DatabaseDialectBetterSqlite3 extends ServiceDatabaseDialectBase {
21
21
  protected _capabilities: IDatabaseDialectCapabilities = {
22
22
  like: true,
23
23
  ilike: false,
@@ -9,12 +9,12 @@ import type {
9
9
  } from 'vona-module-a-orm';
10
10
 
11
11
  import { promisify } from 'node:util';
12
- import { BeanDatabaseDialectBase, DatabaseDialect } from 'vona-module-a-orm';
12
+ import { ServiceDatabaseDialectBase, DatabaseDialect } from 'vona-module-a-orm';
13
13
 
14
14
  export interface IDatabaseDialectOptionsMysql extends IDecoratorDatabaseDialectOptions {}
15
15
 
16
16
  @DatabaseDialect<IDatabaseDialectOptionsMysql>()
17
- export class DatabaseDialectMysql extends BeanDatabaseDialectBase {
17
+ export class DatabaseDialectMysql extends ServiceDatabaseDialectBase {
18
18
  protected _capabilities: IDatabaseDialectCapabilities = {
19
19
  like: false,
20
20
  ilike: true,
@@ -8,12 +8,12 @@ import type {
8
8
  IFetchIndexesResultItem,
9
9
  } from 'vona-module-a-orm';
10
10
 
11
- import { BeanDatabaseDialectBase, DatabaseDialect } from 'vona-module-a-orm';
11
+ import { ServiceDatabaseDialectBase, DatabaseDialect } from 'vona-module-a-orm';
12
12
 
13
13
  export interface IDatabaseDialectOptionsPg extends IDecoratorDatabaseDialectOptions {}
14
14
 
15
15
  @DatabaseDialect<IDatabaseDialectOptionsPg>()
16
- export class DatabaseDialectPg extends BeanDatabaseDialectBase {
16
+ export class DatabaseDialectPg extends ServiceDatabaseDialectBase {
17
17
  protected _capabilities: IDatabaseDialectCapabilities = {
18
18
  like: true,
19
19
  ilike: true,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-a-permission",
3
- "version": "5.1.5",
3
+ "version": "5.1.6",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "",
6
6
  "keywords": [
@@ -4,87 +4,156 @@ import type {
4
4
  IOpenapiPermissions,
5
5
  IResourceRecord,
6
6
  } from 'vona-module-a-openapi';
7
- import type {
8
- ContextRoute,
9
- ContextRouteBase,
10
- ContextRouteMetadata,
11
- IRecordResourceNameToRoutePathItem,
12
- } from 'vona-module-a-web';
7
+ import type { IGuardOptionsPassport, IGuardOptionsRoleName } from 'vona-module-a-user';
8
+ import type { ContextRouteMetadata, IRecordResourceNameToRoutePathItem } from 'vona-module-a-web';
13
9
 
14
- import { catchError } from '@cabloy/utils';
15
10
  import { appMetadata, appResource, BeanBase, beanFullNameFromOnionName } from 'vona';
16
11
  import { Bean } from 'vona-module-a-bean';
17
12
  import { Caching } from 'vona-module-a-caching';
18
13
  import { SymbolUseOnionOptionsRouteReal } from 'vona-module-a-onion';
19
- import { composeGuards, recordResourceNameToRoutePath } from 'vona-module-a-web';
14
+ import { recordResourceNameToRoutePath } from 'vona-module-a-web';
15
+
16
+ const BeanFullNameGuardPassport = beanFullNameFromOnionName('a-user:passport', 'guard');
17
+ const BeanFullNameGuardRoleName = beanFullNameFromOnionName('a-user:roleName', 'guard');
18
+ const BeanFullNameGuardUserName = beanFullNameFromOnionName('a-user:userName', 'guard');
19
+ const BeanFullNamesGuardSupported = new Set<string>([
20
+ BeanFullNameGuardPassport,
21
+ BeanFullNameGuardRoleName,
22
+ BeanFullNameGuardUserName,
23
+ ]);
24
+ const GuardOptionsPassportDefault: IGuardOptionsPassport = {
25
+ public: false,
26
+ activated: true,
27
+ checkAuthToken: true,
28
+ };
29
+
30
+ type TGuardMeta = Record<string, unknown>;
20
31
 
21
32
  @Bean()
22
33
  export class BeanPermission extends BeanBase {
23
- public async clearAllCaches() {
24
- const cacheOpenapiSchema = this.bean.summer.cache(
34
+ public async clearAllCaches(): Promise<void> {
35
+ const cachePermission = this.bean.summer.cache(
25
36
  beanFullNameFromOnionName('a-permission:permission', 'summerCache'),
26
37
  );
27
- await cacheOpenapiSchema.clear();
38
+ await cachePermission.clear();
28
39
  }
29
40
 
30
- protected retrievePermissionsCacheKey(info: ICachingActionKeyInfo) {
41
+ protected retrievePermissionsCacheKey(info: ICachingActionKeyInfo): string {
31
42
  const resource = info.args[0];
32
43
  const userId = this.ctx.passport.user?.id;
33
- return `${resource}_${userId}`;
44
+ return `user:${resource}_${userId}`;
45
+ }
46
+
47
+ protected retrievePermissionsDefaultCacheKey(info: ICachingActionKeyInfo): string {
48
+ return `default:${this._buildPermissionProfileKey(info.args[0])}`;
34
49
  }
35
50
 
36
51
  @Caching.get({ cacheName: 'a-permission:permission', cacheKeyFn: 'retrievePermissionsCacheKey' })
37
52
  async retrievePermissions(resource: keyof IResourceRecord): Promise<IOpenapiPermissions> {
38
53
  return await this.scope.event.retrievePermissions.emit({ resource }, async () => {
39
- return await this.getPermissionsDefault(resource);
54
+ return await this.retrievePermissionsDefault(resource);
40
55
  });
41
56
  }
42
57
 
58
+ @Caching.get({
59
+ cacheName: 'a-permission:permission',
60
+ cacheKeyFn: 'retrievePermissionsDefaultCacheKey',
61
+ })
62
+ protected async retrievePermissionsDefault(
63
+ resource: keyof IResourceRecord,
64
+ ): Promise<IOpenapiPermissions> {
65
+ return await this.getPermissionsDefault(resource);
66
+ }
67
+
43
68
  async getPermissionsDefault(resource: keyof IResourceRecord): Promise<IOpenapiPermissions> {
44
69
  const routePathInfo: IRecordResourceNameToRoutePathItem =
45
70
  recordResourceNameToRoutePath[resource];
46
71
  if (!routePathInfo) throw new Error(`not found routePath of resource: ${resource}`);
47
- // controller options
48
72
  const controller = routePathInfo.controller;
49
- // controller options
50
- const beanOptions = appResource.getBean(controller);
51
- if (!beanOptions) throw new Error('invalid controller');
52
- const controllerBeanFullName = beanOptions.beanFullName;
53
- // descs
73
+ if (!appResource.getBean(controller)) throw new Error('invalid controller');
54
74
  const descs = Object.getOwnPropertyDescriptors(controller.prototype);
55
75
  const actionsIgnore = this.scope.config.permission.actionsIgnore;
56
76
  const actionKeys = Object.keys(descs).filter(
57
- actionKey => !['constructor'].includes(actionKey) && !actionsIgnore.includes(actionKey),
77
+ actionKey => actionKey !== 'constructor' && !actionsIgnore.includes(actionKey),
58
78
  );
59
- // actions
60
79
  const permissionsActions: IOpenapiPermissionModeActionActions = {};
61
80
  for (const actionKey of actionKeys) {
62
81
  const desc = descs[actionKey];
63
82
  if (!desc.value || typeof desc.value !== 'function') continue;
64
- const routeReal: ContextRouteMetadata = appMetadata.getMetadata(
83
+ const routeReal: ContextRouteMetadata | undefined = appMetadata.getMetadata(
65
84
  SymbolUseOnionOptionsRouteReal,
66
85
  controller.prototype,
67
86
  actionKey,
68
- )!;
69
- const route: Partial<ContextRoute> = {
70
- controller,
71
- controllerBeanFullName,
72
- action: actionKey,
73
- route: routeReal,
74
- };
75
- permissionsActions[actionKey] = await this._getPermissionOfAction(route);
87
+ );
88
+ permissionsActions[actionKey] = this._getPermissionOfActionByMetadata(routeReal);
76
89
  }
77
90
  return { actions: permissionsActions };
78
91
  }
79
92
 
80
- private async _getPermissionOfAction(route: Partial<ContextRoute>) {
81
- const routePrev = this.ctx.route;
82
- this.ctx.route = route as ContextRoute;
83
- const composer = composeGuards(this.app, route as ContextRouteBase);
84
- const [_, error] = await catchError(() => {
85
- return composer(this.ctx);
86
- });
87
- this.ctx.route = routePrev;
88
- return !error;
93
+ private _buildPermissionProfileKey(resource: keyof IResourceRecord): string {
94
+ if (!this.bean.passport.isAuthenticated) return `${resource}__anon`;
95
+ const activated = this.bean.passport.isActivated ? 1 : 0;
96
+ const roleNames = this._extractCurrentRoleNames();
97
+ return `${resource}__auth__act:${activated}__roles:${roleNames.join(',')}`;
98
+ }
99
+
100
+ private _extractCurrentRoleNames(): string[] {
101
+ const roleNames = this.bean.passport.currentRoles?.map(item => item.name) ?? [];
102
+ return Array.from(new Set(roleNames)).sort();
103
+ }
104
+
105
+ private _getPermissionOfActionByMetadata(routeReal: ContextRouteMetadata | undefined): boolean {
106
+ if (!routeReal?.meta) return false;
107
+ return this._evaluatePassportGuardsStatically(routeReal.meta);
108
+ }
109
+
110
+ private _evaluatePassportGuardsStatically(meta: TGuardMeta): boolean {
111
+ if (this._hasUnknownGuard(meta)) return false;
112
+ if (this._hasDynamicUserNameGuard(meta)) return false;
113
+ const passportOptions = this._getPassportOptions(meta);
114
+ if (!this._matchPassportOptions(passportOptions)) return false;
115
+ const roleNameOptions = meta[BeanFullNameGuardRoleName] as
116
+ | Partial<IGuardOptionsRoleName>
117
+ | undefined;
118
+ if (!this._matchRoleNameOptions(roleNameOptions)) return false;
119
+ return true;
120
+ }
121
+
122
+ private _hasUnknownGuard(meta: TGuardMeta): boolean {
123
+ return Object.keys(meta).some(
124
+ key => key.includes('.guard.') && !BeanFullNamesGuardSupported.has(key),
125
+ );
126
+ }
127
+
128
+ private _hasDynamicUserNameGuard(meta: TGuardMeta): boolean {
129
+ return BeanFullNameGuardUserName in meta;
130
+ }
131
+
132
+ private _getPassportOptions(meta: TGuardMeta): IGuardOptionsPassport {
133
+ return {
134
+ ...GuardOptionsPassportDefault,
135
+ ...(meta[BeanFullNameGuardPassport] as Partial<IGuardOptionsPassport> | undefined),
136
+ };
137
+ }
138
+
139
+ private _matchPassportOptions(
140
+ options: Pick<IGuardOptionsPassport, 'public' | 'activated'>,
141
+ ): boolean {
142
+ const isAuthenticated = this.bean.passport.isAuthenticated;
143
+ if (!options.public && !isAuthenticated) return false;
144
+ if (!isAuthenticated) return true;
145
+ if (options.activated === true && !this.bean.passport.isActivated) return false;
146
+ if (options.activated === false && this.bean.passport.isActivated) return false;
147
+ return true;
148
+ }
149
+
150
+ private _matchRoleNameOptions(options: Partial<IGuardOptionsRoleName> | undefined): boolean {
151
+ if (!options) return true;
152
+ if (!options.name) return false;
153
+ if (options.passWhenMatched === false) return false;
154
+ if (options.rejectWhenDismatched === false) return false;
155
+ const roleNamesCurrent = this._extractCurrentRoleNames();
156
+ const roleNamesRequired = Array.isArray(options.name) ? options.name : [options.name];
157
+ return roleNamesCurrent.some(roleName => roleNamesRequired.includes(roleName as any));
89
158
  }
90
159
  }
@@ -1,13 +1,13 @@
1
1
  import type { ISummerCacheGet, TSummerCacheActionOptions } from 'vona-module-a-summer';
2
2
 
3
- import { BeanSummerCacheBase, SummerCache } from 'vona-module-a-summer';
3
+ import { ServiceSummerCacheBase, SummerCache } from 'vona-module-a-summer';
4
4
 
5
5
  export type TSummerCachePermissionKey = any;
6
6
  export type TSummerCachePermissionData = any;
7
7
 
8
8
  @SummerCache({ preset: 'mem' })
9
9
  export class SummerCachePermission
10
- extends BeanSummerCacheBase<TSummerCachePermissionKey, TSummerCachePermissionData>
10
+ extends ServiceSummerCacheBase<TSummerCachePermissionKey, TSummerCachePermissionData>
11
11
  implements ISummerCacheGet<TSummerCachePermissionKey, TSummerCachePermissionData>
12
12
  {
13
13
  async getNative(
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-a-startup",
3
- "version": "5.1.6",
3
+ "version": "5.1.7",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "",
6
6
  "keywords": [
@@ -1,4 +1,4 @@
1
- import { BeanCacheRedisBase, CacheRedis } from 'vona-module-a-cache';
1
+ import { ServiceCacheRedisBase, CacheRedis } from 'vona-module-a-cache';
2
2
 
3
3
  export type TCacheRedisStartupDebounceKey = `startupDebounce:${string}`;
4
4
  export type TCacheRedisStartupDebounceData = boolean;
@@ -8,7 +8,7 @@ export type TCacheRedisStartupDebounceData = boolean;
8
8
  disableTransactionCompensate: true,
9
9
  client: 'worker',
10
10
  })
11
- export class CacheRedisStartupDebounce extends BeanCacheRedisBase<
11
+ export class CacheRedisStartupDebounce extends ServiceCacheRedisBase<
12
12
  TCacheRedisStartupDebounceKey,
13
13
  TCacheRedisStartupDebounceData
14
14
  > {}
@@ -1,12 +1,12 @@
1
1
  import type { ISummerCacheGet, TSummerCacheActionOptions } from 'vona-module-a-summer';
2
- import { BeanSummerCacheBase, SummerCache } from 'vona-module-a-summer';
2
+ import { ServiceSummerCacheBase, SummerCache } from 'vona-module-a-summer';
3
3
 
4
4
  export type TSummerCache<%=argv.beanNameCapitalize%>Key = any;
5
5
  export type TSummerCache<%=argv.beanNameCapitalize%>Data = any;
6
6
 
7
7
  @SummerCache()
8
8
  export class SummerCache<%=argv.beanNameCapitalize%>
9
- extends BeanSummerCacheBase<TSummerCache<%=argv.beanNameCapitalize%>Key, TSummerCache<%=argv.beanNameCapitalize%>Data>
9
+ extends ServiceSummerCacheBase<TSummerCache<%=argv.beanNameCapitalize%>Key, TSummerCache<%=argv.beanNameCapitalize%>Data>
10
10
  implements ISummerCacheGet<TSummerCache<%=argv.beanNameCapitalize%>Key, TSummerCache<%=argv.beanNameCapitalize%>Data> {
11
11
  async getNative(
12
12
  _key?: TSummerCache<%=argv.beanNameCapitalize%>Key,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-a-summer",
3
- "version": "5.1.6",
3
+ "version": "5.1.7",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "Layered Cache",
6
6
  "keywords": [
@@ -1,7 +1,6 @@
1
1
  // eslint-disable
2
2
  /** bean: begin */
3
3
  export * from '../bean/bean.summer.ts';
4
- export * from '../bean/bean.summerCacheBase.ts';
5
4
 
6
5
  import 'vona';
7
6
  declare module 'vona' {
@@ -29,6 +28,7 @@ declare module 'vona' {
29
28
  export * from '../service/localFetch_.ts';
30
29
  export * from '../service/localMem_.ts';
31
30
  export * from '../service/localRedis_.ts';
31
+ export * from '../service/summerCacheBase_.ts';
32
32
 
33
33
  import 'vona-module-a-bean';
34
34
  declare module 'vona-module-a-bean' {
@@ -3,17 +3,17 @@ import { Bean } from 'vona-module-a-bean';
3
3
 
4
4
  import type { IDecoratorSummerCacheOptions } from '../types/summerCache.ts';
5
5
 
6
- import { BeanSummerCacheBase } from './bean.summerCacheBase.ts';
6
+ import { ServiceSummerCacheBase } from '../service/summerCacheBase_.ts';
7
7
 
8
8
  @Bean()
9
9
  export class BeanSummer extends BeanBase {
10
10
  cache<KEY, DATA>(
11
11
  cacheName: string,
12
12
  cacheOptions?: IDecoratorSummerCacheOptions,
13
- ): BeanSummerCacheBase<KEY, DATA> {
13
+ ): ServiceSummerCacheBase<KEY, DATA> {
14
14
  if (cacheName.includes('.summerCache.')) {
15
15
  return this.app.bean._getBeanSelector(cacheName as any, undefined, cacheOptions);
16
16
  }
17
- return this.app.bean._getBeanSelector(BeanSummerCacheBase, cacheName, cacheOptions);
17
+ return this.app.bean._getBeanSelector(ServiceSummerCacheBase, cacheName, cacheOptions);
18
18
  }
19
19
  }
@@ -1,4 +1,4 @@
1
- import type { BeanCacheMemBase } from 'vona-module-a-cache';
1
+ import type { ServiceCacheMemBase } from 'vona-module-a-cache';
2
2
 
3
3
  import { Service } from 'vona-module-a-bean';
4
4
 
@@ -12,7 +12,7 @@ export class ServiceLocalMem<KEY = any, DATA = any>
12
12
  extends CacheBase<KEY, DATA>
13
13
  implements ICacheLayeredBase<KEY, DATA>
14
14
  {
15
- private _cacheMemInstance: BeanCacheMemBase<KEY, DATA> | undefined;
15
+ private _cacheMemInstance: ServiceCacheMemBase<KEY, DATA> | undefined;
16
16
 
17
17
  protected async __dispose__() {
18
18
  if (this._cacheMemInstance) {
@@ -21,7 +21,7 @@ export class ServiceLocalMem<KEY = any, DATA = any>
21
21
  }
22
22
  }
23
23
 
24
- get cacheMem(): BeanCacheMemBase<KEY, DATA> {
24
+ get cacheMem(): ServiceCacheMemBase<KEY, DATA> {
25
25
  if (!this._cacheMemInstance) {
26
26
  this._cacheMemInstance = this.app.bean.cache.mem(this._cacheName, this._cacheOptions.mem);
27
27
  }
@@ -1,4 +1,4 @@
1
- import type { BeanCacheRedisBase } from 'vona-module-a-cache';
1
+ import type { ServiceCacheRedisBase } from 'vona-module-a-cache';
2
2
 
3
3
  import { Service } from 'vona-module-a-bean';
4
4
 
@@ -12,7 +12,7 @@ export class ServiceLocalRedis<KEY = any, DATA = any>
12
12
  extends CacheBase<KEY, DATA>
13
13
  implements ICacheLayeredBase<KEY, DATA>
14
14
  {
15
- private _cacheRedisInstance: BeanCacheRedisBase<KEY, DATA> | undefined;
15
+ private _cacheRedisInstance: ServiceCacheRedisBase<KEY, DATA> | undefined;
16
16
 
17
17
  protected async __dispose__() {
18
18
  if (this._cacheRedisInstance) {
@@ -21,7 +21,7 @@ export class ServiceLocalRedis<KEY = any, DATA = any>
21
21
  }
22
22
  }
23
23
 
24
- get cacheRedis(): BeanCacheRedisBase<KEY, DATA> {
24
+ get cacheRedis(): ServiceCacheRedisBase<KEY, DATA> {
25
25
  if (!this._cacheRedisInstance) {
26
26
  this._cacheRedisInstance = this.app.bean.cache.redis(
27
27
  this._cacheName,
@@ -1,5 +1,5 @@
1
1
  import { deepExtend, Virtual } from 'vona';
2
- import { Bean } from 'vona-module-a-bean';
2
+ import { Service } from 'vona-module-a-bean';
3
3
 
4
4
  import type {
5
5
  IDecoratorSummerCacheOptions,
@@ -8,9 +8,9 @@ import type {
8
8
 
9
9
  import { CacheBase } from '../common/cacheBase.ts';
10
10
 
11
- @Bean()
11
+ @Service()
12
12
  @Virtual()
13
- export class BeanSummerCacheBase<KEY = any, DATA = any> extends CacheBase<KEY, DATA> {
13
+ export class ServiceSummerCacheBase<KEY = any, DATA = any> extends CacheBase<KEY, DATA> {
14
14
  protected __init__(cacheName?: string, cacheOptions?: IDecoratorSummerCacheOptions) {
15
15
  let _cacheName: string;
16
16
  let _cacheOptions: IDecoratorSummerCacheOptions;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-a-swagger",
3
- "version": "5.1.5",
3
+ "version": "5.1.6",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "",
6
6
  "keywords": [
@@ -1,13 +1,13 @@
1
1
  import type { ISummerCacheGet, TSummerCacheActionOptions } from 'vona-module-a-summer';
2
2
 
3
- import { BeanSummerCacheBase, SummerCache } from 'vona-module-a-summer';
3
+ import { ServiceSummerCacheBase, SummerCache } from 'vona-module-a-summer';
4
4
 
5
5
  export type TSummerCacheRapidocKey = any;
6
6
  export type TSummerCacheRapidocData = any;
7
7
 
8
8
  @SummerCache({ preset: 'mem' })
9
9
  export class SummerCacheRapidoc
10
- extends BeanSummerCacheBase<TSummerCacheRapidocKey, TSummerCacheRapidocData>
10
+ extends ServiceSummerCacheBase<TSummerCacheRapidocKey, TSummerCacheRapidocData>
11
11
  implements ISummerCacheGet<TSummerCacheRapidocKey, TSummerCacheRapidocData>
12
12
  {
13
13
  async getNative(
@@ -1,13 +1,13 @@
1
1
  import type { ISummerCacheGet, TSummerCacheActionOptions } from 'vona-module-a-summer';
2
2
 
3
- import { BeanSummerCacheBase, SummerCache } from 'vona-module-a-summer';
3
+ import { ServiceSummerCacheBase, SummerCache } from 'vona-module-a-summer';
4
4
 
5
5
  export type TSummerCacheSwaggerKey = any;
6
6
  export type TSummerCacheSwaggerData = any;
7
7
 
8
8
  @SummerCache({ preset: 'mem' })
9
9
  export class SummerCacheSwagger
10
- extends BeanSummerCacheBase<TSummerCacheSwaggerKey, TSummerCacheSwaggerData>
10
+ extends ServiceSummerCacheBase<TSummerCacheSwaggerKey, TSummerCacheSwaggerData>
11
11
  implements ISummerCacheGet<TSummerCacheSwaggerKey, TSummerCacheSwaggerData>
12
12
  {
13
13
  async getNative(