cabloy 5.1.174 → 5.1.176
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.
- package/.cabloy-version +1 -1
- package/.claude/scheduled_tasks.lock +1 -1
- package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +4 -0
- package/CHANGELOG.md +25 -0
- package/package.json +2 -2
- package/repo-docs/.vitepress/config.mjs +7 -0
- package/repo-docs/frontend/a-model-under-the-hood.md +11 -0
- package/repo-docs/frontend/behavior-guide.md +73 -0
- package/repo-docs/frontend/column-configuration-guide.md +254 -0
- package/repo-docs/frontend/component-guide.md +2 -29
- package/repo-docs/frontend/controller-boundary-guide.md +229 -0
- package/repo-docs/frontend/introduction.md +4 -0
- package/repo-docs/frontend/page-route-guide.md +6 -0
- package/repo-docs/frontend/resource-picker-guide.md +223 -0
- package/repo-docs/frontend/rest-resource-source-reading-map.md +37 -21
- package/repo-docs/frontend/rest-resource-under-the-hood.md +50 -30
- package/repo-docs/frontend/routed-dialog-guide.md +471 -0
- package/repo-docs/frontend/router-stack-guide.md +4 -2
- package/repo-docs/frontend/router-view-hosts-guide.md +3 -2
- package/repo-docs/frontend/ssr-client-only.md +6 -0
- package/repo-docs/frontend/table-guide.md +2 -1
- package/repo-docs/frontend/table-resource-crud-cookbook.md +1 -0
- package/repo-docs/frontend/use-state-data-best-practices.md +26 -0
- package/repo-docs/fullstack/a-pay-payment-suite.md +31 -17
- package/repo-e2e/specs/cabloy-basic.spec.ts +11 -0
- package/repo-e2e/specs/controller-boundary.spec.ts +1 -2
- package/test-results/.last-run.json +1 -1
- package/vona/packages-cli/cli/package.json +1 -1
- package/vona/packages-cli/cli-set-api/package.json +1 -1
- package/vona/packages-vona/vona/package.json +1 -1
- package/vona/packages-vona/vona-core/package.json +1 -1
- package/vona/packages-vona/vona-core/src/lib/utils/util.ts +1 -0
- package/vona/packages-vona/vona-mock/package.json +1 -1
- package/vona/src/suite/a-training/modules/training-student/test/student.test.ts +1 -1
- package/vona/src/suite-vendor/a-cabloy/modules/a-layoutprofile/package.json +1 -1
- package/vona/src/suite-vendor/a-cabloy/modules/a-layoutprofile/test/layoutprofile.test.ts +2 -3
- package/vona/src/suite-vendor/a-cabloy/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-executor/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-executor/src/service/executor.ts +6 -1
- package/vona/src/suite-vendor/a-vona/package.json +1 -1
- package/zova/package.original.json +1 -1
- package/zova/packages-zova/zova/package.json +2 -2
- package/zova/pnpm-lock.yaml +45 -38
- package/zova/src/suite/a-commerce/modules/commerce-catalog/src/page/product/controller.tsx +4 -3
- package/zova/src/suite/a-commerce/modules/commerce-member/src/page/address/controller.tsx +4 -3
- package/zova/src/suite/a-commerce/modules/commerce-trade/package.json +3 -1
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/component/tableCellActionAdjustStock/controller.tsx +3 -2
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/component/tableCellActionRefund/controller.tsx +16 -20
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/component/tableCellActionShip/controller.tsx +3 -2
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/cart/controller.tsx +6 -5
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/checkout/controller.tsx +5 -4
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/order/controller.tsx +4 -4
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/payment/controller.tsx +1 -1
- package/zova/src/suite/a-demo/modules/demo-basic/src/page/controllerBoundary/controller.tsx +2 -2
- package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionDeleteForce.tsx +4 -4
- package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionSummary.tsx +4 -4
- package/zova/src/suite/cabloy-basic/modules/basic-app/src/monkey.ts +11 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/src/types/appModal.ts +1 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/test/lib/routedDialogContext.test.ts +60 -0
- package/zova/src/suite/cabloy-basic/modules/basic-details/src/bean/tableCell.actionUpdate.tsx +4 -4
- package/zova/src/suite/cabloy-basic/modules/basic-details/src/component/actionCreate/controller.tsx +4 -4
- package/zova/src/suite/cabloy-basic/modules/basic-metrics/src/page/dashboard/controller.tsx +8 -2
- package/zova/src/{suite-vendor/a-zova/modules/a-boundary → suite/cabloy-basic/modules/basic-pay}/package.json +13 -5
- package/zova/src/{suite-vendor/a-pay/modules/a-pay → suite/cabloy-basic/modules/basic-pay}/src/.metadata/component/paymentNextAction.ts +2 -2
- package/zova/src/suite/cabloy-basic/modules/basic-pay/src/.metadata/index.ts +68 -0
- package/zova/src/suite/cabloy-basic/modules/basic-pay/src/.metadata/this.ts +2 -0
- package/zova/src/{suite-vendor/a-pay/modules/a-pay → suite/cabloy-basic/modules/basic-pay}/src/component/paymentNextAction/controller.tsx +13 -24
- package/zova/src/suite/cabloy-basic/modules/basic-table/src/bean/tableCell.actionUpdate.tsx +4 -4
- package/zova/src/suite/cabloy-basic/modules/basic-table/src/component/actionCreate/controller.tsx +4 -4
- package/zova/src/suite/cabloy-basic/modules/basic-table/src/component/actionDeleteBulk/controller.tsx +4 -4
- package/zova/src/suite/cabloy-basic/package.json +1 -0
- package/zova/src/suite-vendor/a-pay/modules/a-pay/package.json +1 -1
- package/zova/src/suite-vendor/a-pay/modules/a-pay/src/.metadata/index.ts +4 -46
- package/zova/src/suite-vendor/a-pay/modules/a-pay/src/types/payment.ts +13 -0
- package/zova/src/suite-vendor/a-pay/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-router/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-router/src/monkey.ts +17 -3
- package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +1 -2
- package/zova/src/suite-vendor/a-zova/package.json +3 -4
- package/zova/src/suite-vendor/a-zova/modules/a-boundary/LICENSE +0 -21
- package/zova/src/suite-vendor/a-zova/modules/a-boundary/src/.metadata/index.ts +0 -26
- package/zova/src/suite-vendor/a-zova/modules/a-boundary/src/.metadata/this.ts +0 -2
- /package/zova/src/{suite-vendor/a-zova/modules/a-boundary → suite/cabloy-basic/modules/basic-pay}/src/index.ts +0 -0
- /package/zova/src/{suite-vendor/a-zova/modules/a-boundary → suite/cabloy-basic/modules/basic-pay}/tsconfig.build.json +0 -0
- /package/zova/src/{suite-vendor/a-zova/modules/a-boundary → suite/cabloy-basic/modules/basic-pay}/tsconfig.json +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# A-Pay Payment Suite
|
|
2
2
|
|
|
3
|
-
This guide explains the current payment architecture
|
|
3
|
+
This guide explains the current payment architecture shared by Cabloy Basic and Cabloy Start across Vona, Zova, and the Commerce domain.
|
|
4
4
|
|
|
5
5
|
It is a source-oriented architecture guide for:
|
|
6
6
|
|
|
@@ -50,12 +50,26 @@ zova/src/suite-vendor/a-pay/
|
|
|
50
50
|
|
|
51
51
|
The general suite/module organization is described in [Suites and Modules](/fullstack/suites-and-modules). The payment suite follows the vendor-suite layout rather than being a complete user-facing page package.
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
53
|
+
The shared suite contains payment-domain state and browser-safe coordination only. Presentation is owned by the active edition:
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
zova/src/suite/cabloy-basic/modules/basic-pay/
|
|
57
|
+
└── paymentNextAction # DaisyUI and Tailwind CSS presenter
|
|
58
|
+
|
|
59
|
+
zova/src/suite/cabloy-start/modules/start-pay/
|
|
60
|
+
└── paymentNextAction # Vuetify presenter
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Each edition module exposes its own `ZPaymentNextAction` wrapper, while consuming the neutral `IPaymentNextActionProps` contract and `ServicePaymentCoordinator` from `a-pay`.
|
|
64
|
+
|
|
65
|
+
| Module | Vona responsibility | Zova responsibility |
|
|
66
|
+
| ------------ | --------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
|
|
67
|
+
| `a-pay` | Payment sessions, provider operations, callbacks, webhooks, normalized contracts, audit/outbox boundaries | Payment-session API/model, generated contracts, normalized next-action input, redirect coordinator |
|
|
68
|
+
| `basic-pay` | — | Cabloy Basic next-action presentation using DaisyUI and Tailwind CSS |
|
|
69
|
+
| `start-pay` | — | Cabloy Start next-action presentation using Vuetify |
|
|
70
|
+
| `pay-mock` | Deterministic development/test provider and simulator webhook path | Mock completion mutation used by the Commerce test surface |
|
|
71
|
+
| `pay-paypal` | PayPal API, capture, query, refund, and webhook translation | Provider identity and metadata surface; no PayPal SDK execution in the browser |
|
|
72
|
+
| `pay-stripe` | Stripe Checkout, query, refund, and webhook translation | Provider identity and metadata surface; no Stripe SDK execution in the browser |
|
|
59
73
|
|
|
60
74
|
The actual Web payment page is owned by the Commerce consumer, not by `zova-module-a-pay`:
|
|
61
75
|
|
|
@@ -143,7 +157,7 @@ The following flow is source-confirmed by the current Commerce and A-Pay impleme
|
|
|
143
157
|
6. Commerce navigates to an authenticated Commerce payment route with the payment-session and order identifiers. Callback continuation remains server-selected and allowlisted; do not derive it from provider or browser input.
|
|
144
158
|
7. The customer starts the session. Zova calls `POST /api/pay/payment-session/{id}/start`; A-Pay claims a provider operation with a stable idempotency key before making the external provider call.
|
|
145
159
|
8. The provider adapter returns a normalized snapshot and optional `nextAction`. Redirect-capable providers normally return `requires_action` with a redirect action.
|
|
146
|
-
9. Zova renders the
|
|
160
|
+
9. Zova renders the edition-owned next-action presenter: `ZPaymentNextAction` from `basic-pay` in Cabloy Basic or from `start-pay` in Cabloy Start. On the client, the shared redirect coordinator uses `window.location.assign(...)`; it does not call a provider SDK or decide whether the order is paid.
|
|
147
161
|
10. The provider returns through the server callback route, or sends a webhook to the public webhook route. A return callback can request confirmation or reconciliation, but cannot assert success.
|
|
148
162
|
11. A-Pay verifies provider webhook input using the selected server-side client and the raw request body, then correlates provider, client, environment, amount, currency, and identifiers with the persisted session.
|
|
149
163
|
12. Verified facts are deduplicated and applied to payment state. The state transition, audit entry, and `payment.outcome.v1` outbox record are written durably.
|
|
@@ -212,9 +226,9 @@ Read the frontend in Zova’s own roles first:
|
|
|
212
226
|
| Zova role | Current A-Pay responsibility |
|
|
213
227
|
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
|
|
214
228
|
| `ModelPaymentSession` | Model-owned query and mutation state for `view`, `start`, and `reconcile`, including invalidation after mutations |
|
|
215
|
-
| `
|
|
229
|
+
| `IPaymentNextActionProps` | Shared neutral input contract for edition-owned next-action presenters |
|
|
216
230
|
| `ServicePaymentCoordinator` | Client-only execution of a normalized redirect action |
|
|
217
|
-
| `
|
|
231
|
+
| `basic-pay` / `start-pay` | Edition-owned `ControllerPaymentNextAction` and `ZPaymentNextAction` presentation wrappers |
|
|
218
232
|
| Commerce payment page controller | Route state, start/reconcile decisions, settlement polling, and order navigation |
|
|
219
233
|
|
|
220
234
|
This is not page-local Vue fetching rewritten with classes. The model bean owns remote query/mutation state; the controller owns interaction and lifecycle decisions; the service bean owns reusable browser-side behavior; the render/component wrapper exposes the controller to consumers.
|
|
@@ -223,10 +237,10 @@ The core frontend reading path is:
|
|
|
223
237
|
|
|
224
238
|
1. `zova/src/suite-vendor/a-pay/modules/a-pay/src/types/payment.ts`
|
|
225
239
|
2. `zova/src/suite-vendor/a-pay/modules/a-pay/src/model/paymentSession.ts`
|
|
226
|
-
3. `zova/src/suite-vendor/a-pay/modules/a-pay/src/api/
|
|
227
|
-
4. `zova/src/suite-vendor/a-pay/modules/a-pay/src/apiSchema/
|
|
240
|
+
3. `zova/src/suite-vendor/a-pay/modules/a-pay/src/api/payPaymentSession.ts`
|
|
241
|
+
4. `zova/src/suite-vendor/a-pay/modules/a-pay/src/apiSchema/payPaymentSession.ts`
|
|
228
242
|
5. `zova/src/suite-vendor/a-pay/modules/a-pay/src/service/paymentCoordinator.ts`
|
|
229
|
-
6. `zova/src/suite-
|
|
243
|
+
6. `zova/src/suite/cabloy-basic/modules/basic-pay/src/component/paymentNextAction/controller.tsx` or `zova/src/suite/cabloy-start/modules/start-pay/src/component/paymentNextAction/controller.tsx`
|
|
230
244
|
7. `zova/src/suite/a-commerce/modules/commerce-trade/src/page/payment/controller.tsx`
|
|
231
245
|
|
|
232
246
|
When a consumer uses `controllerRef` on `ZPaymentNextAction`, it receives the Zova component controller instance. It is not a generic DOM or Vue component reference.
|
|
@@ -235,7 +249,7 @@ When a consumer uses `controllerRef` on `ZPaymentNextAction`, it receives the Zo
|
|
|
235
249
|
|
|
236
250
|
- Keep payment-session query/mutation state in `ModelPaymentSession`.
|
|
237
251
|
- Consume generated API types and schemas; do not hand-patch generated files.
|
|
238
|
-
- Pass the normalized `nextAction` to the
|
|
252
|
+
- Pass the normalized `nextAction` and shared `IPaymentNextActionProps` to the active edition's action component instead of adding provider-specific branches to Commerce pages.
|
|
239
253
|
- Execute redirects only in the browser.
|
|
240
254
|
- Keep mock simulator controls limited to mock sessions and development/test surfaces.
|
|
241
255
|
- Treat payment-session terminal state and Commerce order settlement as separate observations.
|
|
@@ -303,10 +317,10 @@ For frontend contracts and consumption:
|
|
|
303
317
|
|
|
304
318
|
1. `zova/src/suite-vendor/a-pay/modules/a-pay/src/types/payment.ts`
|
|
305
319
|
2. `zova/src/suite-vendor/a-pay/modules/a-pay/src/model/paymentSession.ts`
|
|
306
|
-
3. `zova/src/suite-vendor/a-pay/modules/a-pay/src/api/
|
|
307
|
-
4. `zova/src/suite-vendor/a-pay/modules/a-pay/src/apiSchema/
|
|
320
|
+
3. `zova/src/suite-vendor/a-pay/modules/a-pay/src/api/payPaymentSession.ts`
|
|
321
|
+
4. `zova/src/suite-vendor/a-pay/modules/a-pay/src/apiSchema/payPaymentSession.ts`
|
|
308
322
|
5. `zova/src/suite-vendor/a-pay/modules/a-pay/src/service/paymentCoordinator.ts`
|
|
309
|
-
6. `zova/src/suite-
|
|
323
|
+
6. `zova/src/suite/cabloy-basic/modules/basic-pay/src/component/paymentNextAction/controller.tsx` or `zova/src/suite/cabloy-start/modules/start-pay/src/component/paymentNextAction/controller.tsx`
|
|
310
324
|
7. `zova/src/suite/a-commerce/modules/commerce-trade/src/routes.ts`
|
|
311
325
|
8. `zova/src/suite/a-commerce/modules/commerce-trade/src/page/checkout/controller.tsx`
|
|
312
326
|
9. `zova/src/suite/a-commerce/modules/commerce-trade/src/page/payment/controller.tsx`
|
|
@@ -916,6 +916,17 @@ test(
|
|
|
916
916
|
await expect(selectionStatus).toHaveText('Selected 2 items');
|
|
917
917
|
await expect(rowFor(selectedNames[0])).toHaveAttribute('aria-selected', 'true');
|
|
918
918
|
await expect(rowFor(selectedNames[1])).toHaveAttribute('aria-selected', 'true');
|
|
919
|
+
|
|
920
|
+
const errorDialog = page.getByRole('dialog').filter({
|
|
921
|
+
hasText: 'Bulk deletion temporarily unavailable',
|
|
922
|
+
});
|
|
923
|
+
await expect(errorDialog).toBeVisible();
|
|
924
|
+
await expect(errorDialog.getByRole('button', { name: 'Close', exact: true })).toBeVisible();
|
|
925
|
+
await errorDialog.getByRole('button', { name: 'Close', exact: true }).click();
|
|
926
|
+
await expect(errorDialog).toHaveCount(0);
|
|
927
|
+
await expect(deleteBulk).toBeEnabled();
|
|
928
|
+
await expect(deleteBulk).not.toHaveAttribute('aria-busy', 'true');
|
|
929
|
+
await expect(deleteBulk.locator('.loading.loading-spinner')).toHaveCount(0);
|
|
919
930
|
} finally {
|
|
920
931
|
await page.unroute(bulkDeleteRoute, bulkDeleteFailureHandler);
|
|
921
932
|
}
|
|
@@ -155,10 +155,9 @@ test(
|
|
|
155
155
|
const ready = overrideHost.getByText('Override Controller boundary probe ready', {
|
|
156
156
|
exact: true,
|
|
157
157
|
});
|
|
158
|
-
const initialOverrideLoading = loading.
|
|
158
|
+
const initialOverrideLoading = expect(loading).toHaveText('Override loading mode: inline');
|
|
159
159
|
await page.getByRole('button', { name: 'Mount override failing probe', exact: true }).click();
|
|
160
160
|
await initialOverrideLoading;
|
|
161
|
-
await expect(loading).toHaveText('Override loading mode: inline');
|
|
162
161
|
await expect(error).toHaveText(
|
|
163
162
|
'Override legacy error: Override Controller boundary probe initialization failed',
|
|
164
163
|
);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vona",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.94",
|
|
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": [
|
|
@@ -183,6 +183,7 @@ export class AppUtil extends BeanSimple {
|
|
|
183
183
|
createError(data, returnObject?: boolean) {
|
|
184
184
|
const error = returnObject ? ({} as any) : new Error();
|
|
185
185
|
error.code = data.code !== undefined ? data.code : 500;
|
|
186
|
+
if (data.status !== undefined) error.status = data.status;
|
|
186
187
|
if (data.message && typeof data.message === 'object') {
|
|
187
188
|
error.message = JSON.stringify(data.message, null, 2);
|
|
188
189
|
} else {
|
|
@@ -541,7 +541,7 @@ describe('student.test.ts', { concurrency: false }, () => {
|
|
|
541
541
|
const deleted = await app.bean.executor.performAction(
|
|
542
542
|
'post',
|
|
543
543
|
'/training/student/bulk/delete',
|
|
544
|
-
{ body: { ids: [studentId, studentId, '
|
|
544
|
+
{ body: { ids: [studentId, studentId, '-1'] } },
|
|
545
545
|
);
|
|
546
546
|
assert.equal(deleted, null);
|
|
547
547
|
assert.equal(
|
|
@@ -4,6 +4,7 @@ import { catchError } from '@cabloy/utils';
|
|
|
4
4
|
import assert from 'node:assert';
|
|
5
5
|
import { randomUUID } from 'node:crypto';
|
|
6
6
|
import { describe, it } from 'node:test';
|
|
7
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
7
8
|
import { app } from 'vona-mock';
|
|
8
9
|
|
|
9
10
|
import type { ILayoutProfile } from '../src/types/layoutprofile.ts';
|
|
@@ -200,9 +201,7 @@ describe('layoutprofile.test.ts', { concurrency: false }, () => {
|
|
|
200
201
|
});
|
|
201
202
|
});
|
|
202
203
|
assert.equal(persisted.length, 1);
|
|
203
|
-
assert.ok(
|
|
204
|
-
profiles.some(profile => JSON.stringify(profile) === JSON.stringify(persisted[0].profile)),
|
|
205
|
-
);
|
|
204
|
+
assert.ok(profiles.some(profile => isDeepStrictEqual(profile, persisted[0].profile)));
|
|
206
205
|
|
|
207
206
|
const loaded = await app.bean.executor.mockCtx(async () => {
|
|
208
207
|
return await performAs(fixture.token, 'get', `${actionPath}/load`, {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vona-suite-a-cabloy",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.54",
|
|
4
4
|
"gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
|
|
5
5
|
"description": "",
|
|
6
6
|
"author": "",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "module",
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"vona-module-a-cabloy": "workspace:^",
|
|
11
|
-
"vona-module-a-layoutprofile": "^5.0.
|
|
11
|
+
"vona-module-a-layoutprofile": "^5.0.2",
|
|
12
12
|
"vona-module-a-markdown": "^5.0.3",
|
|
13
13
|
"vona-module-a-rbac": "^5.0.6",
|
|
14
14
|
"vona-module-a-socket": "workspace:^",
|
|
@@ -64,10 +64,15 @@ export class ServiceExecutor extends BeanBase {
|
|
|
64
64
|
throw app.util.createError(ctx.body);
|
|
65
65
|
}
|
|
66
66
|
if (ctx.body && typeof ctx.body === 'object') {
|
|
67
|
-
throw app.util.createError(
|
|
67
|
+
throw app.util.createError({
|
|
68
|
+
...ctx.body,
|
|
69
|
+
status: ctx.status,
|
|
70
|
+
code: (ctx.body as { code?: unknown }).code ?? ctx.status,
|
|
71
|
+
});
|
|
68
72
|
}
|
|
69
73
|
throw app.util.createError({
|
|
70
74
|
code: ctx.status,
|
|
75
|
+
status: ctx.status,
|
|
71
76
|
message: ctx.message,
|
|
72
77
|
});
|
|
73
78
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zova",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.164",
|
|
4
4
|
"gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
|
|
5
5
|
"description": "A vue3 framework with ioc",
|
|
6
6
|
"keywords": [
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"zova-core": "^5.1.90",
|
|
49
|
-
"zova-suite-a-zova": "^5.1.
|
|
49
|
+
"zova-suite-a-zova": "^5.1.163"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"clean-package": "^2.2.0",
|
package/zova/pnpm-lock.yaml
CHANGED
|
@@ -77,7 +77,7 @@ importers:
|
|
|
77
77
|
version: 10.6.0(postcss@8.5.28)
|
|
78
78
|
axios:
|
|
79
79
|
specifier: ^1.18.1
|
|
80
|
-
version: 1.20.0
|
|
80
|
+
version: 1.20.0(supports-color@10.2.2)
|
|
81
81
|
compression:
|
|
82
82
|
specifier: ^1.8.1
|
|
83
83
|
version: 1.8.2
|
|
@@ -153,9 +153,6 @@ importers:
|
|
|
153
153
|
zova-module-a-behaviors:
|
|
154
154
|
specifier: workspace:^
|
|
155
155
|
version: link:src/suite-vendor/a-zova/modules/a-behaviors
|
|
156
|
-
zova-module-a-boundary:
|
|
157
|
-
specifier: workspace:^
|
|
158
|
-
version: link:src/suite-vendor/a-zova/modules/a-boundary
|
|
159
156
|
zova-module-a-command:
|
|
160
157
|
specifier: workspace:^
|
|
161
158
|
version: link:src/suite-vendor/a-zova/modules/a-command
|
|
@@ -273,6 +270,9 @@ importers:
|
|
|
273
270
|
zova-module-basic-pageentry:
|
|
274
271
|
specifier: workspace:^
|
|
275
272
|
version: link:src/suite/cabloy-basic/modules/basic-pageentry
|
|
273
|
+
zova-module-basic-pay:
|
|
274
|
+
specifier: workspace:^
|
|
275
|
+
version: link:src/suite/cabloy-basic/modules/basic-pay
|
|
276
276
|
zova-module-basic-resource:
|
|
277
277
|
specifier: workspace:^
|
|
278
278
|
version: link:src/suite/cabloy-basic/modules/basic-resource
|
|
@@ -369,10 +369,10 @@ importers:
|
|
|
369
369
|
devDependencies:
|
|
370
370
|
'@cabloy/cli':
|
|
371
371
|
specifier: ^3.1.29
|
|
372
|
-
version: 3.1.29(vue@3.5.42(typescript@5.9.3))
|
|
372
|
+
version: 3.1.29(supports-color@10.2.2)(vue@3.5.42(typescript@5.9.3))
|
|
373
373
|
'@cabloy/lint':
|
|
374
|
-
specifier: ^5.1.
|
|
375
|
-
version: 5.1.
|
|
374
|
+
specifier: ^5.1.35
|
|
375
|
+
version: 5.1.35(@typescript-eslint/eslint-plugin@8.70.0(@typescript-eslint/parser@8.70.0(eslint@10.10.0(jiti@2.7.0))(supports-color@10.2.2)(typescript@5.9.3))(eslint@10.10.0(jiti@2.7.0))(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.70.0(typescript@5.9.3))(@typescript-eslint/utils@8.70.0(eslint@10.10.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.10.0(jiti@2.7.0))(oxfmt@0.62.0)(oxlint@1.82.0)(supports-color@10.2.2)(typescript@5.9.3)(vue-eslint-parser@10.4.1(eslint@10.10.0(jiti@2.7.0)))
|
|
376
376
|
'@cabloy/openapi-typescript':
|
|
377
377
|
specifier: ^7.9.2
|
|
378
378
|
version: 7.9.2(typescript@5.9.3)
|
|
@@ -444,7 +444,7 @@ importers:
|
|
|
444
444
|
dependencies:
|
|
445
445
|
'@cabloy/cli':
|
|
446
446
|
specifier: ^3.1.29
|
|
447
|
-
version: 3.1.29(vue@3.5.42(typescript@5.9.3))
|
|
447
|
+
version: 3.1.29(supports-color@10.2.2)(vue@3.5.42(typescript@5.9.3))
|
|
448
448
|
'@cabloy/process-helper':
|
|
449
449
|
specifier: ^3.1.8
|
|
450
450
|
version: 3.1.8
|
|
@@ -478,7 +478,7 @@ importers:
|
|
|
478
478
|
version: 7.29.7(@babel/core@7.29.7)
|
|
479
479
|
'@cabloy/cli':
|
|
480
480
|
specifier: ^3.1.29
|
|
481
|
-
version: 3.1.29(vue@3.5.42(typescript@5.9.3))
|
|
481
|
+
version: 3.1.29(supports-color@10.2.2)(vue@3.5.42(typescript@5.9.3))
|
|
482
482
|
'@cabloy/extend':
|
|
483
483
|
specifier: ^3.2.8
|
|
484
484
|
version: 3.2.8
|
|
@@ -876,7 +876,7 @@ importers:
|
|
|
876
876
|
specifier: ^5.1.90
|
|
877
877
|
version: link:../zova-core
|
|
878
878
|
zova-suite-a-zova:
|
|
879
|
-
specifier: ^5.1.
|
|
879
|
+
specifier: ^5.1.163
|
|
880
880
|
version: link:../../src/suite-vendor/a-zova
|
|
881
881
|
devDependencies:
|
|
882
882
|
clean-package:
|
|
@@ -1019,7 +1019,7 @@ importers:
|
|
|
1019
1019
|
src/suite-vendor/a-pay:
|
|
1020
1020
|
dependencies:
|
|
1021
1021
|
zova-module-a-pay:
|
|
1022
|
-
specifier: ^5.0.
|
|
1022
|
+
specifier: ^5.0.8
|
|
1023
1023
|
version: link:modules/a-pay
|
|
1024
1024
|
zova-module-pay-mock:
|
|
1025
1025
|
specifier: ^5.0.5
|
|
@@ -1084,9 +1084,6 @@ importers:
|
|
|
1084
1084
|
zova-module-a-behaviors:
|
|
1085
1085
|
specifier: ^5.1.22
|
|
1086
1086
|
version: link:modules/a-behaviors
|
|
1087
|
-
zova-module-a-boundary:
|
|
1088
|
-
specifier: ^5.1.22
|
|
1089
|
-
version: link:modules/a-boundary
|
|
1090
1087
|
zova-module-a-command:
|
|
1091
1088
|
specifier: ^5.1.35
|
|
1092
1089
|
version: link:modules/a-command
|
|
@@ -1115,7 +1112,7 @@ importers:
|
|
|
1115
1112
|
specifier: ^5.1.54
|
|
1116
1113
|
version: link:modules/a-openapi
|
|
1117
1114
|
zova-module-a-router:
|
|
1118
|
-
specifier: ^5.1.
|
|
1115
|
+
specifier: ^5.1.39
|
|
1119
1116
|
version: link:modules/a-router
|
|
1120
1117
|
zova-module-a-routerstack:
|
|
1121
1118
|
specifier: ^5.1.29
|
|
@@ -1142,7 +1139,7 @@ importers:
|
|
|
1142
1139
|
specifier: ^5.1.37
|
|
1143
1140
|
version: link:modules/a-zod
|
|
1144
1141
|
zova-module-a-zova:
|
|
1145
|
-
specifier: ^5.1.
|
|
1142
|
+
specifier: ^5.1.106
|
|
1146
1143
|
version: link:modules/a-zova
|
|
1147
1144
|
|
|
1148
1145
|
src/suite-vendor/a-zova/modules/a-api:
|
|
@@ -1194,15 +1191,6 @@ importers:
|
|
|
1194
1191
|
specifier: ^6.1.3
|
|
1195
1192
|
version: 6.1.3
|
|
1196
1193
|
|
|
1197
|
-
src/suite-vendor/a-zova/modules/a-boundary:
|
|
1198
|
-
devDependencies:
|
|
1199
|
-
clean-package:
|
|
1200
|
-
specifier: ^2.2.0
|
|
1201
|
-
version: 2.2.0
|
|
1202
|
-
rimraf:
|
|
1203
|
-
specifier: ^6.1.3
|
|
1204
|
-
version: 6.1.3
|
|
1205
|
-
|
|
1206
1194
|
src/suite-vendor/a-zova/modules/a-command:
|
|
1207
1195
|
devDependencies:
|
|
1208
1196
|
clean-package:
|
|
@@ -1216,7 +1204,7 @@ importers:
|
|
|
1216
1204
|
dependencies:
|
|
1217
1205
|
axios:
|
|
1218
1206
|
specifier: ^1.18.1
|
|
1219
|
-
version: 1.20.0
|
|
1207
|
+
version: 1.20.0(supports-color@10.2.2)
|
|
1220
1208
|
devDependencies:
|
|
1221
1209
|
clean-package:
|
|
1222
1210
|
specifier: ^2.2.0
|
|
@@ -1489,7 +1477,7 @@ importers:
|
|
|
1489
1477
|
devDependencies:
|
|
1490
1478
|
'@cabloy/cli':
|
|
1491
1479
|
specifier: ^3.1.29
|
|
1492
|
-
version: 3.1.29(vue@3.5.42(typescript@5.9.3))
|
|
1480
|
+
version: 3.1.29(supports-color@10.2.2)(vue@3.5.42(typescript@5.9.3))
|
|
1493
1481
|
'@types/luxon':
|
|
1494
1482
|
specifier: ^3.7.1
|
|
1495
1483
|
version: 3.7.5
|
|
@@ -1593,6 +1581,9 @@ importers:
|
|
|
1593
1581
|
zova-module-a-pay:
|
|
1594
1582
|
specifier: workspace:^
|
|
1595
1583
|
version: link:../../../../suite-vendor/a-pay/modules/a-pay
|
|
1584
|
+
zova-module-basic-pay:
|
|
1585
|
+
specifier: workspace:^
|
|
1586
|
+
version: link:../../../cabloy-basic/modules/basic-pay
|
|
1596
1587
|
zova-module-pay-mock:
|
|
1597
1588
|
specifier: workspace:^
|
|
1598
1589
|
version: link:../../../../suite-vendor/a-pay/modules/pay-mock
|
|
@@ -1895,6 +1886,9 @@ importers:
|
|
|
1895
1886
|
zova-module-basic-pageentry:
|
|
1896
1887
|
specifier: ^5.0.7
|
|
1897
1888
|
version: link:modules/basic-pageentry
|
|
1889
|
+
zova-module-basic-pay:
|
|
1890
|
+
specifier: ^5.0.0
|
|
1891
|
+
version: link:modules/basic-pay
|
|
1898
1892
|
zova-module-basic-resource:
|
|
1899
1893
|
specifier: ^5.0.0
|
|
1900
1894
|
version: link:modules/basic-resource
|
|
@@ -2103,6 +2097,19 @@ importers:
|
|
|
2103
2097
|
specifier: ^6.1.3
|
|
2104
2098
|
version: 6.1.3
|
|
2105
2099
|
|
|
2100
|
+
src/suite/cabloy-basic/modules/basic-pay:
|
|
2101
|
+
dependencies:
|
|
2102
|
+
zova-module-a-pay:
|
|
2103
|
+
specifier: workspace:^
|
|
2104
|
+
version: link:../../../../suite-vendor/a-pay/modules/a-pay
|
|
2105
|
+
devDependencies:
|
|
2106
|
+
clean-package:
|
|
2107
|
+
specifier: ^2.2.0
|
|
2108
|
+
version: 2.2.0
|
|
2109
|
+
rimraf:
|
|
2110
|
+
specifier: ^6.1.3
|
|
2111
|
+
version: 6.1.3
|
|
2112
|
+
|
|
2106
2113
|
src/suite/cabloy-basic/modules/basic-resource:
|
|
2107
2114
|
devDependencies:
|
|
2108
2115
|
clean-package:
|
|
@@ -2362,8 +2369,8 @@ packages:
|
|
|
2362
2369
|
'@cabloy/json5@1.1.9':
|
|
2363
2370
|
resolution: {integrity: sha512-jV0WqPaTuLOw5UvFWOVD/1HNaWHKABs8Xd652C7jq7vhKPZsKzBy5de+Az4kd3jgn4JxaPLJgVTID/svynAzFA==}
|
|
2364
2371
|
|
|
2365
|
-
'@cabloy/lint@5.1.
|
|
2366
|
-
resolution: {integrity: sha512-
|
|
2372
|
+
'@cabloy/lint@5.1.35':
|
|
2373
|
+
resolution: {integrity: sha512-aWrGyzwYI3ZFgIxuilA0pov18cKcyAmIe3slTgokrNfv8I4xTl2JXxcEPoR+/gk1/qB3N+ESA8199LR6wBBAMA==}
|
|
2367
2374
|
peerDependencies:
|
|
2368
2375
|
oxfmt: '>=0.62.0'
|
|
2369
2376
|
oxlint: '>=1.77.0'
|
|
@@ -8844,7 +8851,7 @@ snapshots:
|
|
|
8844
8851
|
|
|
8845
8852
|
'@bufbuild/protobuf@2.15.0': {}
|
|
8846
8853
|
|
|
8847
|
-
'@cabloy/cli@3.1.29(vue@3.5.42(typescript@5.9.3))':
|
|
8854
|
+
'@cabloy/cli@3.1.29(supports-color@10.2.2)(vue@3.5.42(typescript@5.9.3))':
|
|
8848
8855
|
dependencies:
|
|
8849
8856
|
'@babel/parser': 7.29.8
|
|
8850
8857
|
'@cabloy/module-glob': 5.3.18
|
|
@@ -8853,7 +8860,7 @@ snapshots:
|
|
|
8853
8860
|
'@cabloy/utils': 2.1.27
|
|
8854
8861
|
'@cabloy/word-utils': link:packages-utils/word-utils
|
|
8855
8862
|
'@npmcli/config': 10.12.0
|
|
8856
|
-
'@zhennann/common-bin': 4.0.1
|
|
8863
|
+
'@zhennann/common-bin': 4.0.1(supports-color@10.2.2)
|
|
8857
8864
|
'@zhennann/ejs': 3.0.1
|
|
8858
8865
|
boxen: 4.2.0
|
|
8859
8866
|
chalk: 3.0.0
|
|
@@ -8891,7 +8898,7 @@ snapshots:
|
|
|
8891
8898
|
dependencies:
|
|
8892
8899
|
json5: 2.2.3
|
|
8893
8900
|
|
|
8894
|
-
'@cabloy/lint@5.1.
|
|
8901
|
+
'@cabloy/lint@5.1.35(@typescript-eslint/eslint-plugin@8.70.0(@typescript-eslint/parser@8.70.0(eslint@10.10.0(jiti@2.7.0))(supports-color@10.2.2)(typescript@5.9.3))(eslint@10.10.0(jiti@2.7.0))(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.70.0(typescript@5.9.3))(@typescript-eslint/utils@8.70.0(eslint@10.10.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.10.0(jiti@2.7.0))(oxfmt@0.62.0)(oxlint@1.82.0)(supports-color@10.2.2)(typescript@5.9.3)(vue-eslint-parser@10.4.1(eslint@10.10.0(jiti@2.7.0)))':
|
|
8895
8902
|
dependencies:
|
|
8896
8903
|
'@e18e/eslint-plugin': 0.2.0(eslint@10.10.0(jiti@2.7.0))(oxlint@1.82.0)
|
|
8897
8904
|
'@eslint/json': 1.2.0
|
|
@@ -11041,7 +11048,7 @@ snapshots:
|
|
|
11041
11048
|
|
|
11042
11049
|
'@vue/shared@3.5.13': {}
|
|
11043
11050
|
|
|
11044
|
-
'@zhennann/common-bin@4.0.1':
|
|
11051
|
+
'@zhennann/common-bin@4.0.1(supports-color@10.2.2)':
|
|
11045
11052
|
dependencies:
|
|
11046
11053
|
chalk: 4.1.2
|
|
11047
11054
|
change-case: 4.1.2
|
|
@@ -11075,7 +11082,7 @@ snapshots:
|
|
|
11075
11082
|
|
|
11076
11083
|
acorn@8.18.0: {}
|
|
11077
11084
|
|
|
11078
|
-
agent-base@6.0.2:
|
|
11085
|
+
agent-base@6.0.2(supports-color@10.2.2):
|
|
11079
11086
|
dependencies:
|
|
11080
11087
|
debug: 4.4.3(supports-color@10.2.2)
|
|
11081
11088
|
transitivePeerDependencies:
|
|
@@ -11183,11 +11190,11 @@ snapshots:
|
|
|
11183
11190
|
dependencies:
|
|
11184
11191
|
possible-typed-array-names: 1.1.0
|
|
11185
11192
|
|
|
11186
|
-
axios@1.20.0:
|
|
11193
|
+
axios@1.20.0(supports-color@10.2.2):
|
|
11187
11194
|
dependencies:
|
|
11188
11195
|
follow-redirects: 1.16.0
|
|
11189
11196
|
form-data: 4.0.6
|
|
11190
|
-
https-proxy-agent: 5.0.1
|
|
11197
|
+
https-proxy-agent: 5.0.1(supports-color@10.2.2)
|
|
11191
11198
|
proxy-from-env: 2.1.0
|
|
11192
11199
|
transitivePeerDependencies:
|
|
11193
11200
|
- debug
|
|
@@ -12582,9 +12589,9 @@ snapshots:
|
|
|
12582
12589
|
statuses: 2.0.2
|
|
12583
12590
|
toidentifier: 1.0.1
|
|
12584
12591
|
|
|
12585
|
-
https-proxy-agent@5.0.1:
|
|
12592
|
+
https-proxy-agent@5.0.1(supports-color@10.2.2):
|
|
12586
12593
|
dependencies:
|
|
12587
|
-
agent-base: 6.0.2
|
|
12594
|
+
agent-base: 6.0.2(supports-color@10.2.2)
|
|
12588
12595
|
debug: 4.4.3(supports-color@10.2.2)
|
|
12589
12596
|
transitivePeerDependencies:
|
|
12590
12597
|
- supports-color
|
|
@@ -5,6 +5,7 @@ import { z } from 'zod';
|
|
|
5
5
|
import { BeanControllerPageBase, Use } from 'zova';
|
|
6
6
|
import { Controller } from 'zova-module-a-bean';
|
|
7
7
|
import { $QueryEnsureLoaded } from 'zova-module-a-model';
|
|
8
|
+
import { ZButton } from 'zova-module-basic-button';
|
|
8
9
|
import { ZMarkdownHtml } from 'zova-module-basic-markdown';
|
|
9
10
|
import { ZPage } from 'zova-module-home-base';
|
|
10
11
|
|
|
@@ -88,12 +89,12 @@ export class ControllerPageProduct extends BeanControllerPageBase {
|
|
|
88
89
|
<span class="badge badge-success">
|
|
89
90
|
{this.scope.locale.AvailableCount(sku.available)}
|
|
90
91
|
</span>
|
|
91
|
-
<
|
|
92
|
+
<ZButton
|
|
92
93
|
class="btn btn-primary btn-sm"
|
|
93
|
-
|
|
94
|
+
onPerform={() => this.addItem(String(sku.id))}
|
|
94
95
|
>
|
|
95
96
|
{this.scope.locale.AddToCart()}
|
|
96
|
-
</
|
|
97
|
+
</ZButton>
|
|
97
98
|
</div>
|
|
98
99
|
))}
|
|
99
100
|
</div>
|
|
@@ -7,6 +7,7 @@ import { BeanControllerPageBase, Use } from 'zova';
|
|
|
7
7
|
import { Controller } from 'zova-module-a-bean';
|
|
8
8
|
import { ZForm } from 'zova-module-a-form';
|
|
9
9
|
import { $QueryEnsureLoaded } from 'zova-module-a-model';
|
|
10
|
+
import { ZButton } from 'zova-module-basic-button';
|
|
10
11
|
import { ZPage } from 'zova-module-home-base';
|
|
11
12
|
|
|
12
13
|
import type {
|
|
@@ -127,12 +128,12 @@ export class ControllerPageAddress extends BeanControllerPageBase {
|
|
|
127
128
|
<button class="btn btn-outline btn-sm" onClick={() => this.edit(item)}>
|
|
128
129
|
{this.scope.locale.EditAddress()}
|
|
129
130
|
</button>
|
|
130
|
-
<
|
|
131
|
+
<ZButton
|
|
131
132
|
class="btn btn-error btn-outline btn-sm"
|
|
132
|
-
|
|
133
|
+
onPerform={() => this.delete(item)}
|
|
133
134
|
>
|
|
134
135
|
{this.scope.locale.DeleteAddress()}
|
|
135
|
-
</
|
|
136
|
+
</ZButton>
|
|
136
137
|
</div>
|
|
137
138
|
</div>
|
|
138
139
|
<p>{item.addressLine1}</p>
|