cabloy 5.1.116 → 5.1.118

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 (268) hide show
  1. package/.cabloy-version +1 -1
  2. package/.claude/skills/cabloy-contract-loop/SKILL.md +8 -2
  3. package/.claude/skills/cabloy-contract-loop/evals/evals.json +6 -0
  4. package/.claude/skills/cabloy-contract-loop/references/contract-loop-map.md +13 -0
  5. package/.claude/skills/cabloy-contract-loop/references/resource-custom-state-pattern.md +16 -3
  6. package/.claude/skills/cabloy-contract-loop/references/verification-checklist.md +12 -0
  7. package/.github/workflows/vona-test-pg.yml +3 -0
  8. package/.github/workflows/vona-test-sqlite3.yml +3 -0
  9. package/CHANGELOG.md +34 -0
  10. package/CLAUDE.md +2 -0
  11. package/cabloy-docs/.vitepress/config.mjs +6 -0
  12. package/cabloy-docs/ai/docs-skills-rules-mapping.md +7 -0
  13. package/cabloy-docs/backend/aop-overview.md +16 -24
  14. package/cabloy-docs/backend/backend-source-reading-roadmap.md +26 -2
  15. package/cabloy-docs/backend/controller-aop-guide.md +38 -14
  16. package/cabloy-docs/backend/logger-guide.md +1 -0
  17. package/cabloy-docs/backend/menu-guide.md +1 -1
  18. package/cabloy-docs/backend/metrics-guide.md +75 -0
  19. package/cabloy-docs/backend/rate-limit-guide.md +97 -0
  20. package/cabloy-docs/backend/telemetry-guide.md +93 -0
  21. package/cabloy-docs/backend/vona-source-reading-map.md +44 -1
  22. package/cabloy-docs/frontend/model-resource-owner-pattern.md +2 -0
  23. package/cabloy-docs/frontend/ssr-overview.md +2 -0
  24. package/cabloy-docs/fullstack/admin-resource-and-web-self-service.md +329 -0
  25. package/cabloy-docs/fullstack/contract-loop-playbook.md +1 -1
  26. package/cabloy-docs/fullstack/introduction.md +1 -0
  27. package/e2e/specs/a-commerce/commerce.spec.ts +590 -1
  28. package/observability/README.md +18 -0
  29. package/observability/collector/otel-collector.yaml +34 -0
  30. package/observability/docker-compose.metrics.yml +25 -0
  31. package/observability/grafana/provisioning/datasources/prometheus.yaml +8 -0
  32. package/observability/prometheus/prometheus.yaml +7 -0
  33. package/package.json +1 -1
  34. package/vona/env/.env +6 -0
  35. package/vona/packages-cli/cli/package.json +1 -1
  36. package/vona/packages-cli/cli-set-api/cli/templates/tools/masterDetail/boilerplate/dto/<%=argv.detailDtoBaseName%>.tsx_ +1 -1
  37. package/vona/packages-cli/cli-set-api/cli/templates/tools/masterDetail/boilerplate/dto/<%=argv.detailDtoMutateName%>.tsx_ +2 -2
  38. package/vona/packages-cli/cli-set-api/cli/templates/tools/masterDetail/boilerplate/dto/<%=argv.detailDtoResItemName%>.tsx_ +10 -10
  39. package/vona/packages-cli/cli-set-api/cli/templates/tools/masterDetail/boilerplate/dto/<%=argv.detailDtoViewName%>.tsx_ +2 -2
  40. package/vona/packages-cli/cli-set-api/package.json +1 -1
  41. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.tools.masterDetail.ts +13 -4
  42. package/vona/packages-vona/vona/package.json +1 -1
  43. package/vona/packages-vona/vona-core/package.json +1 -1
  44. package/vona/packages-vona/vona-core/src/lib/core/logger/utils.ts +12 -3
  45. package/vona/packages-vona/vona-core/src/lib/framework/processWorker.ts +1 -1
  46. package/vona/packages-vona/vona-mock/package.json +1 -1
  47. package/vona/packages-vona/vona-mock/src/index.ts +2 -0
  48. package/vona/packages-vona/vona-mock/src/lib/testLock.ts +21 -0
  49. package/vona/pnpm-lock.yaml +345 -53
  50. package/vona/src/backend/config/config/config.ts +1 -0
  51. package/vona/src/suite/a-commerce/modules/commerce-catalog/test/catalog.test.ts +13 -3
  52. package/vona/src/suite/a-commerce/modules/commerce-catalog/test/product.test.ts +124 -70
  53. package/vona/src/suite/a-commerce/modules/commerce-member/src/.metadata/index.ts +81 -25
  54. package/vona/src/suite/a-commerce/modules/commerce-member/src/bean/ssrMenu.address.ts +30 -0
  55. package/vona/src/suite/a-commerce/modules/commerce-member/src/controller/address.ts +42 -20
  56. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineCreate.tsx +35 -0
  57. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineItem.tsx +39 -0
  58. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineReq.tsx +11 -0
  59. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineRes.tsx +11 -0
  60. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineUpdate.tsx +10 -0
  61. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineView.tsx +10 -0
  62. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressSelectResItem.tsx +1 -7
  63. package/vona/src/suite/a-commerce/modules/commerce-member/src/service/address.ts +43 -42
  64. package/vona/src/suite/a-commerce/modules/commerce-member/test/addressOwnership.test.ts +168 -130
  65. package/vona/src/suite/a-commerce/modules/commerce-payment/src/.metadata/index.ts +297 -3
  66. package/vona/src/suite/a-commerce/modules/commerce-payment/src/bean/meta.index.ts +15 -0
  67. package/vona/src/suite/a-commerce/modules/commerce-payment/src/bean/meta.version.ts +128 -0
  68. package/vona/src/suite/a-commerce/modules/commerce-payment/src/dto/paymentAttemptView.tsx +2 -2
  69. package/vona/src/suite/a-commerce/modules/commerce-payment/src/entity/paymentAttempt.tsx +5 -2
  70. package/vona/src/suite/a-commerce/modules/commerce-payment/src/entity/paymentAudit.tsx +54 -0
  71. package/vona/src/suite/a-commerce/modules/commerce-payment/src/entity/refundAttempt.tsx +37 -0
  72. package/vona/src/suite/a-commerce/modules/commerce-payment/src/entity/refundAudit.tsx +47 -0
  73. package/vona/src/suite/a-commerce/modules/commerce-payment/src/entity/refundRequest.tsx +43 -0
  74. package/vona/src/suite/a-commerce/modules/commerce-payment/src/model/paymentAudit.ts +10 -0
  75. package/vona/src/suite/a-commerce/modules/commerce-payment/src/model/refundAttempt.ts +10 -0
  76. package/vona/src/suite/a-commerce/modules/commerce-payment/src/model/refundAudit.ts +10 -0
  77. package/vona/src/suite/a-commerce/modules/commerce-payment/src/model/refundRequest.ts +10 -0
  78. package/vona/src/suite/a-commerce/modules/commerce-payment/src/service/mockPaymentAdapter.ts +18 -0
  79. package/vona/src/suite/a-commerce/modules/commerce-payment/src/service/paymentAttempt.ts +22 -7
  80. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/service/coupon.ts +2 -0
  81. package/vona/src/suite/a-commerce/modules/commerce-promotion/test/couponReservation.test.ts +395 -6
  82. package/vona/src/suite/a-commerce/modules/commerce-siteadmin/test/ssrMenu.test.ts +14 -0
  83. package/vona/src/suite/a-commerce/modules/commerce-trade/src/.metadata/index.ts +345 -3
  84. package/vona/src/suite/a-commerce/modules/commerce-trade/src/bean/meta.index.ts +2 -0
  85. package/vona/src/suite/a-commerce/modules/commerce-trade/src/bean/meta.version.ts +16 -0
  86. package/vona/src/suite/a-commerce/modules/commerce-trade/src/bean/ssrMenu.order.ts +30 -0
  87. package/vona/src/suite/a-commerce/modules/commerce-trade/src/controller/order.ts +112 -0
  88. package/vona/src/suite/a-commerce/modules/commerce-trade/src/controller/payment.ts +23 -0
  89. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/checkoutResult.tsx +4 -4
  90. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderDetail.tsx +93 -0
  91. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderMineReq.tsx +21 -0
  92. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderMineRes.tsx +11 -0
  93. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderSelectReq.tsx +25 -0
  94. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderSelectRes.tsx +11 -0
  95. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderSelectResItem.tsx +41 -0
  96. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderShip.tsx +15 -0
  97. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderSummary.tsx +47 -0
  98. package/vona/src/suite/a-commerce/modules/{commerce-member/src/dto/addressCreate.tsx → commerce-trade/src/dto/orderView.tsx} +5 -17
  99. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/paymentOutcomeCreate.tsx +16 -0
  100. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/paymentOutcomeResult.tsx +29 -0
  101. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/refundOutcomeCreate.tsx +16 -0
  102. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/refundRequestCreate.tsx +15 -0
  103. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/refundResult.tsx +35 -0
  104. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/refundReview.tsx +15 -0
  105. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/shipmentView.tsx +22 -0
  106. package/vona/src/suite/a-commerce/modules/commerce-trade/src/entity/orderAudit.tsx +54 -6
  107. package/vona/src/suite/a-commerce/modules/commerce-trade/src/entity/shipment.tsx +28 -0
  108. package/vona/src/suite/a-commerce/modules/commerce-trade/src/model/order.ts +1 -0
  109. package/vona/src/suite/a-commerce/modules/commerce-trade/src/model/shipment.ts +10 -0
  110. package/vona/src/suite/a-commerce/modules/commerce-trade/src/service/order.ts +839 -28
  111. package/vona/src/suite/a-commerce/modules/commerce-trade/test/cartOwnership.test.ts +2 -4
  112. package/vona/src/suite/a-commerce/modules/commerce-trade/test/checkoutReservation.test.ts +521 -6
  113. package/vona/src/suite/a-commerce/modules/commerce-trade/test/checkoutTransaction.test.ts +16 -14
  114. package/vona/src/suite/a-commerce/modules/commerce-trade/test/order.test.ts +37 -0
  115. package/vona/src/suite/a-commerce/modules/commerce-trade/test/orderSnapshot.test.ts +3 -5
  116. package/vona/src/suite/a-commerce/modules/commerce-trade/test/paymentOutcome.test.ts +712 -0
  117. package/vona/src/suite/a-commerce/modules/commerce-trade/test/refundLifecycle.test.ts +337 -0
  118. package/vona/src/suite/a-commerce/modules/commerce-trade/test/reservationExpiry.test.ts +194 -4
  119. package/vona/src/suite/a-commerce/modules/commerce-trade/test/shipment.test.ts +258 -0
  120. package/vona/src/suite/a-commerce/modules/commerce-trade/test/shipmentRefundRace.test.ts +143 -0
  121. package/vona/src/suite/a-commerce/modules/commerce-trade/test/stockBalance.test.ts +2 -4
  122. package/vona/src/suite/a-commerce/modules/commerce-trade/test/stockReservation.test.ts +2 -4
  123. package/vona/src/suite/a-home/modules/home-user/src/.metadata/index.ts +21 -0
  124. package/vona/src/suite/a-home/modules/home-user/src/controller/passportTest.ts +21 -0
  125. package/vona/src/suite/a-home/modules/home-user/test/passportTest.test.ts +77 -0
  126. package/vona/src/suite/cabloy-basic/modules/basic-metrics/package.json +54 -0
  127. package/vona/src/suite/cabloy-basic/modules/basic-metrics/src/.metadata/index.ts +189 -0
  128. package/vona/src/suite/cabloy-basic/modules/basic-metrics/src/.metadata/this.ts +1 -0
  129. package/vona/src/suite/cabloy-basic/modules/basic-metrics/src/bean/ssrMenu.metrics.ts +23 -0
  130. package/vona/src/suite/cabloy-basic/modules/basic-metrics/src/controller/metrics.ts +21 -0
  131. package/vona/src/suite/cabloy-basic/modules/basic-metrics/src/dto/metricsQueue.ts +25 -0
  132. package/vona/src/suite/cabloy-basic/modules/basic-metrics/src/dto/metricsRuntime.ts +36 -0
  133. package/vona/src/suite/cabloy-basic/modules/basic-metrics/src/dto/metricsSnapshot.ts +21 -0
  134. package/vona/src/suite/cabloy-basic/modules/basic-metrics/src/index.ts +1 -0
  135. package/vona/src/suite/cabloy-basic/modules/basic-metrics/src/service/metrics.ts +11 -0
  136. package/vona/src/suite/cabloy-basic/modules/basic-metrics/tsconfig.build.json +11 -0
  137. package/vona/src/suite/cabloy-basic/modules/basic-metrics/tsconfig.json +5 -0
  138. package/vona/src/suite/cabloy-basic/package.json +1 -0
  139. package/vona/src/suite-vendor/a-vona/modules/a-broadcast/package.json +2 -1
  140. package/vona/src/suite-vendor/a-vona/modules/a-broadcast/src/service/broadcast.ts +84 -23
  141. package/vona/src/suite-vendor/a-vona/modules/a-broadcast/src/types/broadcast.ts +7 -1
  142. package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +1 -1
  143. package/vona/src/suite-vendor/a-vona/modules/a-core/src/lib/core.ts +8 -0
  144. package/vona/src/suite-vendor/a-vona/modules/a-executor/package.json +4 -2
  145. package/vona/src/suite-vendor/a-vona/modules/a-executor/src/service/executor.ts +68 -53
  146. package/vona/src/suite-vendor/a-vona/modules/a-instance/package.json +1 -1
  147. package/vona/src/suite-vendor/a-vona/modules/a-instance/src/bean/middlewareSystem.app.ts +2 -0
  148. package/vona/src/suite-vendor/a-vona/modules/a-instance/src/bean/middlewareSystem.instance.ts +2 -0
  149. package/vona/src/suite-vendor/a-vona/modules/a-metrics/package.json +62 -0
  150. package/vona/src/suite-vendor/a-vona/modules/a-metrics/src/.metadata/index.ts +178 -0
  151. package/vona/src/suite-vendor/a-vona/modules/a-metrics/src/.metadata/this.ts +1 -0
  152. package/vona/src/suite-vendor/a-vona/modules/a-metrics/src/bean/bean.metrics.ts +15 -0
  153. package/vona/src/suite-vendor/a-vona/modules/a-metrics/src/bean/middlewareSystem.health.ts +24 -0
  154. package/vona/src/suite-vendor/a-vona/modules/a-metrics/src/bean/middlewareSystem.metrics.ts +51 -0
  155. package/vona/src/suite-vendor/a-vona/modules/a-metrics/src/config/config.ts +75 -0
  156. package/vona/src/suite-vendor/a-vona/modules/a-metrics/src/index.ts +2 -0
  157. package/vona/src/suite-vendor/a-vona/modules/a-metrics/src/monkey.ts +27 -0
  158. package/vona/src/suite-vendor/a-vona/modules/a-metrics/src/service/health.ts +53 -0
  159. package/vona/src/suite-vendor/a-vona/modules/a-metrics/src/service/metrics.ts +222 -0
  160. package/vona/src/suite-vendor/a-vona/modules/a-metrics/src/service/metricsRuntime.ts +69 -0
  161. package/vona/src/suite-vendor/a-vona/modules/a-metrics/src/types/context.ts +9 -0
  162. package/vona/src/suite-vendor/a-vona/modules/a-metrics/src/types/index.ts +2 -0
  163. package/vona/src/suite-vendor/a-vona/modules/a-metrics/src/types/metrics.ts +50 -0
  164. package/vona/src/suite-vendor/a-vona/modules/a-metrics/tsconfig.build.json +11 -0
  165. package/vona/src/suite-vendor/a-vona/modules/a-metrics/tsconfig.json +7 -0
  166. package/vona/src/suite-vendor/a-vona/modules/a-orm/cli/model/metadata/generate.ts +10 -0
  167. package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
  168. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/bean.model/bean.model_cache.ts +12 -0
  169. package/vona/src/suite-vendor/a-vona/modules/a-queue/package.json +4 -2
  170. package/vona/src/suite-vendor/a-vona/modules/a-queue/src/service/queue.ts +103 -54
  171. package/vona/src/suite-vendor/a-vona/modules/a-queue/src/types/queue.ts +5 -0
  172. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/package.json +48 -0
  173. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/.metadata/index.ts +100 -0
  174. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/.metadata/this.ts +2 -0
  175. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/bean/interceptor.rateLimit.ts +72 -0
  176. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/index.ts +2 -0
  177. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/main.ts +28 -0
  178. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/service/rateLimit.ts +75 -0
  179. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/types/index.ts +1 -0
  180. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/types/rateLimit.ts +19 -0
  181. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/tsconfig.build.json +11 -0
  182. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/tsconfig.json +7 -0
  183. package/vona/src/suite-vendor/a-vona/modules/a-redis/package.json +1 -1
  184. package/vona/src/suite-vendor/a-vona/modules/a-redis/src/service/redis.ts +1 -2
  185. package/vona/src/suite-vendor/a-vona/modules/a-redis/src/types/redis.ts +1 -0
  186. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/package.json +63 -0
  187. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/.metadata/index.ts +132 -0
  188. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/.metadata/this.ts +2 -0
  189. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/bean/bean.telemetry.ts +71 -0
  190. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/bean/middlewareSystem.trace.ts +73 -0
  191. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/config/config.ts +83 -0
  192. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/index.ts +2 -0
  193. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/lib/ingress.ts +34 -0
  194. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/monkey.ts +22 -0
  195. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/service/telemetry.ts +201 -0
  196. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/types/index.ts +1 -0
  197. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/types/telemetry.ts +22 -0
  198. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/test/telemetry.test.ts +339 -0
  199. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/tsconfig.build.json +11 -0
  200. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/tsconfig.json +7 -0
  201. package/vona/src/suite-vendor/a-vona/package.json +4 -1
  202. package/vona/src/suite-vendor/a-vona/tsconfig.json +3 -0
  203. package/zova/package.original.json +1 -1
  204. package/zova/packages-cli/cli/package.json +2 -2
  205. package/zova/packages-cli/cli-set-front/package.json +1 -1
  206. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.bin.buildRest.ts +3 -2
  207. package/zova/packages-zova/zova/package.json +2 -2
  208. package/zova/pnpm-lock.yaml +47 -72
  209. package/zova/src/front/config/config/config.cabloyCommerce.ts +4 -0
  210. package/zova/src/suite/a-commerce/modules/commerce-member/cli/openapi.config.ts +9 -1
  211. package/zova/src/suite/a-commerce/modules/commerce-member/src/.metadata/index.ts +16 -0
  212. package/zova/src/suite/a-commerce/modules/commerce-member/src/api/commerceMemberAddress.ts +94 -50
  213. package/zova/src/suite/a-commerce/modules/commerce-member/src/api/openapi/schemas.ts +162 -52
  214. package/zova/src/suite/a-commerce/modules/commerce-member/src/api/openapi/types.ts +2656 -1298
  215. package/zova/src/suite/a-commerce/modules/commerce-member/src/apiSchema/commerceMemberAddress.ts +23 -13
  216. package/zova/src/suite/a-commerce/modules/commerce-member/src/model/addressMine.ts +67 -0
  217. package/zova/src/suite/a-commerce/modules/commerce-member/src/page/address/controller.tsx +21 -11
  218. package/zova/src/suite/a-commerce/modules/commerce-trade/cli/openapi.config.ts +10 -0
  219. package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/component/tableCellActionRefund.ts +31 -0
  220. package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/component/tableCellActionShip.ts +31 -0
  221. package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/index.ts +277 -1
  222. package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/page/checkout.ts +19 -0
  223. package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/page/order.ts +19 -0
  224. package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/page/orders.ts +19 -0
  225. package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/page/payment.ts +19 -0
  226. package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/commerceTradeOrder.ts +218 -0
  227. package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/commerceTradePayment.ts +36 -0
  228. package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/openapi/schemas.ts +91 -8
  229. package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/openapi/types.ts +1019 -74
  230. package/zova/src/suite/a-commerce/modules/commerce-trade/src/apiSchema/commerceTradeOrder.ts +55 -0
  231. package/zova/src/suite/a-commerce/modules/commerce-trade/src/apiSchema/commerceTradePayment.ts +13 -0
  232. package/zova/src/suite/a-commerce/modules/commerce-trade/src/bean/tableCell.actionRefund.tsx +40 -0
  233. package/zova/src/suite/a-commerce/modules/commerce-trade/src/bean/tableCell.actionShip.tsx +41 -0
  234. package/zova/src/suite/a-commerce/modules/commerce-trade/src/component/tableCellActionRefund/controller.tsx +106 -0
  235. package/zova/src/suite/a-commerce/modules/commerce-trade/src/component/tableCellActionShip/controller.tsx +66 -0
  236. package/zova/src/suite/a-commerce/modules/commerce-trade/src/config/locale/en-us.ts +9 -0
  237. package/zova/src/suite/a-commerce/modules/commerce-trade/src/config/locale/zh-cn.ts +9 -0
  238. package/zova/src/suite/a-commerce/modules/commerce-trade/src/model/order.ts +82 -0
  239. package/zova/src/suite/a-commerce/modules/commerce-trade/src/model/orderMine.ts +46 -0
  240. package/zova/src/suite/a-commerce/modules/commerce-trade/src/model/payment.ts +25 -0
  241. package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/cart/controller.tsx +14 -3
  242. package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/checkout/controller.tsx +124 -0
  243. package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/order/controller.tsx +146 -0
  244. package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/orders/controller.tsx +95 -0
  245. package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/payment/controller.tsx +88 -0
  246. package/zova/src/suite/a-commerce/modules/commerce-trade/src/routes.ts +28 -0
  247. package/zova/src/suite/cabloy-basic/modules/basic-details/src/bean/command.delete.tsx +3 -2
  248. package/zova/src/suite/cabloy-basic/modules/basic-details/src/bean/tableCell.actionUpdate.tsx +2 -1
  249. package/zova/src/suite/cabloy-basic/modules/basic-details/src/bean/tableCell.actionView.tsx +1 -1
  250. package/zova/src/suite/cabloy-basic/modules/basic-details/src/config/locale/en-us.ts +1 -0
  251. package/zova/src/suite/cabloy-basic/modules/basic-details/src/config/locale/zh-cn.ts +1 -0
  252. package/zova/src/suite/cabloy-basic/modules/basic-metrics/package.json +53 -0
  253. package/zova/src/suite/cabloy-basic/modules/basic-metrics/src/.metadata/index.ts +151 -0
  254. package/zova/src/suite/cabloy-basic/modules/basic-metrics/src/.metadata/page/dashboard.ts +9 -0
  255. package/zova/src/suite/cabloy-basic/modules/basic-metrics/src/.metadata/this.ts +1 -0
  256. package/zova/src/suite/cabloy-basic/modules/basic-metrics/src/api/basicMetricsMetrics.ts +41 -0
  257. package/zova/src/suite/cabloy-basic/modules/basic-metrics/src/index.ts +2 -0
  258. package/zova/src/suite/cabloy-basic/modules/basic-metrics/src/model/metrics.ts +16 -0
  259. package/zova/src/suite/cabloy-basic/modules/basic-metrics/src/page/dashboard/controller.tsx +95 -0
  260. package/zova/src/suite/cabloy-basic/modules/basic-metrics/src/routes.ts +5 -0
  261. package/zova/src/suite/cabloy-basic/modules/basic-metrics/tsconfig.build.json +13 -0
  262. package/zova/src/suite/cabloy-basic/modules/basic-metrics/tsconfig.json +5 -0
  263. package/zova/src/suite/cabloy-basic/package.json +1 -0
  264. package/zova/src/suite-vendor/a-zova/modules/a-ssr/package.json +1 -1
  265. package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssr.ts +4 -0
  266. package/zova/src/suite-vendor/a-zova/package.json +2 -2
  267. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressUpdate.tsx +0 -39
  268. package/vona/src/suite/a-commerce/modules/commerce-trade/test/testLock.ts +0 -11
@@ -0,0 +1,25 @@
1
+ services:
2
+ collector:
3
+ image: otel/opentelemetry-collector-contrib:0.134.1
4
+ command: [--config=/etc/otelcol-contrib/config.yaml]
5
+ ports:
6
+ - '127.0.0.1:4318:4318'
7
+ - '127.0.0.1:9464:9464'
8
+ volumes:
9
+ - ./collector/otel-collector.yaml:/etc/otelcol-contrib/config.yaml:ro
10
+
11
+ prometheus:
12
+ image: prom/prometheus:v3.5.0
13
+ depends_on: [collector]
14
+ ports:
15
+ - '127.0.0.1:9090:9090'
16
+ volumes:
17
+ - ./prometheus/prometheus.yaml:/etc/prometheus/prometheus.yml:ro
18
+
19
+ grafana:
20
+ image: grafana/grafana:12.1.0
21
+ depends_on: [prometheus]
22
+ ports:
23
+ - '127.0.0.1:3000:3000'
24
+ volumes:
25
+ - ./grafana/provisioning:/etc/grafana/provisioning:ro
@@ -0,0 +1,8 @@
1
+ apiVersion: 1
2
+
3
+ datasources:
4
+ - name: Prometheus
5
+ type: prometheus
6
+ access: proxy
7
+ url: http://prometheus:9090
8
+ isDefault: true
@@ -0,0 +1,7 @@
1
+ global:
2
+ scrape_interval: 15s
3
+
4
+ scrape_configs:
5
+ - job_name: cabloy-collector
6
+ static_configs:
7
+ - targets: [collector:9464]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cabloy",
3
- "version": "5.1.116",
3
+ "version": "5.1.118",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "A Node.js fullstack framework",
6
6
  "keywords": [
package/vona/env/.env CHANGED
@@ -34,6 +34,12 @@ LOGGER_ROTATE_DATEPATTERN = YYYY-MM-DD
34
34
  LOGGER_ROTATE_MAXSIZE = 20m
35
35
  LOGGER_ROTATE_MAXFILES = 7d
36
36
 
37
+ # telemetry
38
+ TELEMETRY_ENABLED = false
39
+
40
+ # metrics
41
+ METRICS_ENABLED = true
42
+
37
43
  # build
38
44
 
39
45
  BUILD_OUTDIR =
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-cli",
3
- "version": "1.1.132",
3
+ "version": "1.1.134",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "vona cli",
6
6
  "keywords": [
@@ -4,7 +4,7 @@ import { $makeMetadata } from 'vona-module-a-openapiutils';
4
4
  import { $Dto } from 'vona-module-a-orm';
5
5
  import { Dto } from 'vona-module-a-web';
6
6
  import { Model<%=argv.detailResourceNameCapitalize%> } from '<%=argv.detailPackageName%>';
7
- import { ZovaRender } from 'zova-rest-cabloy-basic-admin';
7
+ import { ZovaRender } from '<%=argv.restAdminNpm%>';
8
8
 
9
9
  export interface IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%> extends IDecoratorDtoOptions {}
10
10
 
@@ -3,14 +3,14 @@ import type { IDecoratorDtoOptions } from 'vona-module-a-web';
3
3
  import { $Dto } from 'vona-module-a-orm';
4
4
  import { Dto } from 'vona-module-a-web';
5
5
  import { Model<%=argv.detailResourceNameCapitalize%> } from '<%=argv.detailPackageName%>';
6
- import { ZovaRender } from 'zova-rest-cabloy-basic-admin';
6
+ import { ZovaRender } from '<%=argv.restAdminNpm%>';
7
7
 
8
8
  import { Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%> } from './<%=argv.detailDtoBaseName%>.tsx';
9
9
 
10
10
  export interface IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoMutateName)%> extends IDecoratorDtoOptions {}
11
11
 
12
12
  @Dto<IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoMutateName)%>>({
13
- blocks: [ZovaRender.block('basic-details:blockForm')],
13
+ blocks: [ZovaRender.block('<%=argv.detailsModuleName%>:blockForm')],
14
14
  })
15
15
  export class Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoMutateName)%> extends $Dto.mutate(() => Model<%=argv.detailResourceNameCapitalize%>, {
16
16
  dtoClass: Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%>,
@@ -4,7 +4,7 @@ import { $makeMetadata, Api, v } from 'vona-module-a-openapiutils';
4
4
  import { $Dto } from 'vona-module-a-orm';
5
5
  import { Dto } from 'vona-module-a-web';
6
6
  import { Model<%=argv.detailResourceNameCapitalize%> } from '<%=argv.detailPackageName%>';
7
- import { ZovaRender } from 'zova-rest-cabloy-basic-admin';
7
+ import { ZovaRender } from '<%=argv.restAdminNpm%>';
8
8
 
9
9
  import { $locale } from '../.metadata/locales.ts';
10
10
  import { Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%> } from './<%=argv.detailDtoBaseName%>.tsx';
@@ -13,23 +13,23 @@ export interface IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoRes
13
13
 
14
14
  @Dto<IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoResItemName)%>>({
15
15
  blocks: [
16
- ZovaRender.block('basic-details:blockDetails', {
16
+ ZovaRender.block('<%=argv.detailsModuleName%>:blockDetails', {
17
17
  blocks: [
18
- ZovaRender.block('basic-details:blockToolbarBulk', {
18
+ ZovaRender.block('<%=argv.detailsModuleName%>:blockToolbarBulk', {
19
19
  actions: [
20
- ZovaRender.detailsActionBulk('basic-details:actionCreate', {
20
+ ZovaRender.detailsActionBulk('<%=argv.detailsModuleName%>:actionCreate', {
21
21
  dialogOptions: { title: $locale('Add<%=argv.detailDialogTitleCapitalize%>') },
22
22
  permission: { formScene: ['create', 'edit'] },
23
23
  }),
24
24
  ],
25
25
  }),
26
- ZovaRender.block('basic-details:blockTable'),
26
+ ZovaRender.block('<%=argv.detailsModuleName%>:blockTable'),
27
27
  ],
28
28
  }),
29
29
  ],
30
30
  fields: {
31
31
  name: $makeMetadata(
32
- ZovaRender.cell('basic-details:actionView', {
32
+ ZovaRender.cell('<%=argv.detailsModuleName%>:actionView', {
33
33
  dialogOptions: { title: $locale('View<%=argv.detailDialogTitleCapitalize%>') },
34
34
  }),
35
35
  ),
@@ -38,19 +38,19 @@ export interface IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoRes
38
38
  export class Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoResItemName)%> extends $Dto.get(() => Model<%=argv.detailResourceNameCapitalize%>, {
39
39
  dtoClass: Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%>,
40
40
  }) {
41
- @Api.field(v.title('#'), ZovaRender.order(1, 'core'), ZovaRender.cell('basic-details:lineNumber'))
41
+ @Api.field(v.title('#'), ZovaRender.order(1, 'core'), ZovaRender.cell('<%=argv.detailsModuleName%>:lineNumber'))
42
42
  _lineNumber?: number;
43
43
 
44
44
  @Api.field(
45
45
  v.title($locale('Operations')),
46
46
  ZovaRender.order(1, 'max'),
47
- ZovaRender.cell('basic-details:actionOperationsRow', {
47
+ ZovaRender.cell('<%=argv.detailsModuleName%>:actionOperationsRow', {
48
48
  actions: [
49
- ZovaRender.detailsActionRow('basic-details:actionUpdate', {
49
+ ZovaRender.detailsActionRow('<%=argv.detailsModuleName%>:actionUpdate', {
50
50
  dialogOptions: { title: $locale('Edit<%=argv.detailDialogTitleCapitalize%>') },
51
51
  permission: { formScene: ['create', 'edit'] },
52
52
  }),
53
- ZovaRender.detailsActionRow('basic-details:actionDelete', {
53
+ ZovaRender.detailsActionRow('<%=argv.detailsModuleName%>:actionDelete', {
54
54
  permission: { formScene: ['create', 'edit'] },
55
55
  }),
56
56
  ],
@@ -3,14 +3,14 @@ import type { IDecoratorDtoOptions } from 'vona-module-a-web';
3
3
  import { $Dto } from 'vona-module-a-orm';
4
4
  import { Dto } from 'vona-module-a-web';
5
5
  import { Model<%=argv.detailResourceNameCapitalize%> } from '<%=argv.detailPackageName%>';
6
- import { ZovaRender } from 'zova-rest-cabloy-basic-admin';
6
+ import { ZovaRender } from '<%=argv.restAdminNpm%>';
7
7
 
8
8
  import { Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%> } from './<%=argv.detailDtoBaseName%>.tsx';
9
9
 
10
10
  export interface IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoViewName)%> extends IDecoratorDtoOptions {}
11
11
 
12
12
  @Dto<IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoViewName)%>>({
13
- blocks: [ZovaRender.block('basic-details:blockForm')],
13
+ blocks: [ZovaRender.block('<%=argv.detailsModuleName%>:blockForm')],
14
14
  })
15
15
  export class Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoViewName)%> extends $Dto.get(() => Model<%=argv.detailResourceNameCapitalize%>, {
16
16
  dtoClass: Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%>,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-cli-set-api",
3
- "version": "1.1.130",
3
+ "version": "1.1.132",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "vona cli-set-api",
6
6
  "keywords": [
@@ -36,6 +36,9 @@ declare module '@cabloy/cli' {
36
36
  detailDialogTitleCapitalize: string;
37
37
  createdDetailModule?: boolean;
38
38
  createdDetailResource?: boolean;
39
+ restAdminNpm: string;
40
+ detailsModuleName: string;
41
+ detailCrudCommand: string;
39
42
  }
40
43
  }
41
44
 
@@ -82,6 +85,12 @@ export class CliToolsMasterDetail extends BeanCliBase {
82
85
  argv.detailDtoResItemName = `detail${argv.detailResourceNameCapitalize}ResItem`;
83
86
  argv.detailFieldPrivateName = `_${argv.relationName}`;
84
87
  argv.detailDialogTitleCapitalize = argv.detailModuleCapitalize;
88
+ const editionName = fs.existsSync(path.join(argv.projectPath, '__CABLOY_START__'))
89
+ ? 'start'
90
+ : 'basic';
91
+ argv.restAdminNpm = `zova-rest-cabloy-${editionName}-admin`;
92
+ argv.detailsModuleName = `${editionName}-details`;
93
+ argv.detailCrudCommand = `:tools:crud${this._capitalize(editionName)}`;
85
94
  }
86
95
 
87
96
  private async _ensureDetailModule() {
@@ -437,8 +446,8 @@ export class CliToolsMasterDetail extends BeanCliBase {
437
446
  if (!content.includes("import { $locale } from '../.metadata/locales.ts';")) {
438
447
  content = this._replaceStrict(
439
448
  content,
440
- "import { ZovaRender } from 'zova-rest-cabloy-basic-admin';\n",
441
- "import { ZovaRender } from 'zova-rest-cabloy-basic-admin';\n\nimport { $locale } from '../.metadata/locales.ts';\n",
449
+ `import { ZovaRender } from '${argv.restAdminNpm}';\n`,
450
+ `import { ZovaRender } from '${argv.restAdminNpm}';\n\nimport { $locale } from '../.metadata/locales.ts';\n`,
442
451
  fileName,
443
452
  );
444
453
  }
@@ -498,7 +507,7 @@ export class CliToolsMasterDetail extends BeanCliBase {
498
507
 
499
508
  private _masterDtoFieldCode(scene: MasterDtoScene) {
500
509
  const { argv } = this.context;
501
- return ` ${argv.relationName}: $makeMetadata(\n v.title($locale('${argv.relationNameCapitalize}')),\n ZovaRender.order(5),\n ZovaRender.field('basic-details:formFieldDetails'),\n${scene === 'Create' ? ' v.optional(),\n' : ''} ),\n`;
510
+ return ` ${argv.relationName}: $makeMetadata(\n v.title($locale('${argv.relationNameCapitalize}')),\n ZovaRender.order(5),\n ZovaRender.field('${argv.detailsModuleName}:formFieldDetails'),\n${scene === 'Create' ? ' v.optional(),\n' : ''} ),\n`;
502
511
  }
503
512
 
504
513
  private _masterDtoClassReplaceSource(scene: MasterDtoScene) {
@@ -546,7 +555,7 @@ export class CliToolsMasterDetail extends BeanCliBase {
546
555
  const { argv } = this.context;
547
556
  await this.helper.invokeCli(
548
557
  [
549
- ':tools:crudBasic',
558
+ argv.detailCrudCommand,
550
559
  argv.detailResourceName,
551
560
  `--module=${argv.detailModule}`,
552
561
  '--nometadata',
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona",
3
- "version": "5.1.80",
3
+ "version": "5.1.82",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "Vona is an intuitive, elegant and powerful Node.js framework for rapidly developing enterprise applications of any size",
6
6
  "keywords": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-core",
3
- "version": "5.1.33",
3
+ "version": "5.1.35",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "vona",
6
6
  "keywords": [
@@ -44,9 +44,18 @@ export const formatLoggerErrors = (opts: ILoggerFormatOpts) => {
44
44
 
45
45
  export const formatLoggerCtx = Winston.format((info, _opts: any) => {
46
46
  const app = useApp();
47
- if (!app.ctx || !app.ctx.method || !app.ctx.path) return info;
48
- info.method = app.ctx.method;
49
- info.path = app.ctx.path;
47
+ if (!app.ctx) return info;
48
+ if (app.ctx.method) info.method = app.ctx.method;
49
+ if (app.ctx.path) info.path = app.ctx.path;
50
+ const telemetry = (app.ctx.state as any).telemetry;
51
+ if (telemetry?.requestId) info.request_id = telemetry.requestId;
52
+ const span = telemetry?.span ?? telemetry?.serverSpan;
53
+ const spanContext = span?.spanContext();
54
+ if (spanContext?.traceId && spanContext?.spanId) {
55
+ info.trace_id = spanContext.traceId;
56
+ info.span_id = spanContext.spanId;
57
+ info.trace_flags = spanContext.traceFlags;
58
+ }
50
59
  return info;
51
60
  });
52
61
 
@@ -21,7 +21,7 @@ async function _closeInner() {
21
21
  }
22
22
 
23
23
  export function handleProcessWork() {
24
- ['SIGINT', 'SIGUSR2'].forEach(signal => {
24
+ ['SIGINT', 'SIGTERM', 'SIGUSR2'].forEach(signal => {
25
25
  process.on(signal, async () => {
26
26
  if (__closing) return;
27
27
  __closing = true;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-mock",
3
- "version": "6.1.33",
3
+ "version": "6.1.35",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "vona mock",
6
6
  "keywords": [
@@ -4,6 +4,8 @@ import type { VonaApplication } from 'vona-core';
4
4
  import { parseModuleInfo, ParseModuleNameLevelInit } from '@cabloy/module-info-pro';
5
5
  import { useApp } from 'vona-core';
6
6
 
7
+ export { acquireTestLock } from './lib/testLock.ts';
8
+
7
9
  const ParseModuleNameLevel = ParseModuleNameLevelInit + 2;
8
10
 
9
11
  export const app: VonaApplication = useApp();
@@ -0,0 +1,21 @@
1
+ const pendingScenes = new Map<string, Promise<void>>();
2
+
3
+ export async function acquireTestLock(scene: string): Promise<() => void> {
4
+ const previous = pendingScenes.get(scene) ?? Promise.resolve();
5
+ let resolve: () => void;
6
+ const pending = new Promise<void>(pendingResolve => {
7
+ resolve = pendingResolve;
8
+ });
9
+ pendingScenes.set(scene, pending);
10
+ await previous;
11
+
12
+ let released = false;
13
+ return () => {
14
+ if (released) return;
15
+ released = true;
16
+ resolve!();
17
+ if (pendingScenes.get(scene) === pending) {
18
+ pendingScenes.delete(scene);
19
+ }
20
+ };
21
+ }