cabloy 5.1.161 → 5.1.162
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/CHANGELOG.md +13 -0
- package/CLAUDE.md +1 -1
- package/CONTRIBUTING.md +1 -1
- package/README.md +34 -58
- package/package.json +1 -1
- package/repo-docs/.vitepress/config.mjs +58 -32
- package/repo-docs/ai/ai-spec-driven-development.md +99 -0
- package/repo-docs/ai/docs-skills-rules-mapping.md +25 -8
- package/repo-docs/ai/edition-consistency-checklist.md +2 -3
- package/repo-docs/ai/introduction.md +7 -4
- package/repo-docs/ai/playbook-spec-execution.md +19 -5
- package/repo-docs/ai/playbook-spec-generation.md +69 -101
- package/repo-docs/ai/repo-guidance.md +1 -1
- package/repo-docs/ai/skills.md +31 -10
- package/repo-docs/backend/dto-guide.md +1 -0
- package/repo-docs/backend/openapi-guide.md +1 -1
- package/repo-docs/editions/overview.md +51 -120
- package/repo-docs/frontend/environment-config-guide.md +1 -1
- package/repo-docs/frontend/form-layout-guide.md +4 -2
- package/repo-docs/frontend/introduction.md +2 -1
- package/repo-docs/frontend/quickstart.md +2 -8
- package/repo-docs/frontend/scripts.md +7 -3
- package/repo-docs/frontend/ssr-architecture-overview.md +1 -1
- package/repo-docs/frontend/ssr-build-deploy-guide.md +4 -2
- package/repo-docs/fullstack/comparison-with-other-frameworks.md +6 -2
- package/repo-docs/fullstack/contract-loop-playbook.md +4 -0
- package/repo-docs/fullstack/introduction.md +13 -4
- package/repo-docs/fullstack/parallel-worktree-environment.md +2 -0
- package/repo-docs/fullstack/quickstart.md +65 -74
- package/repo-docs/fullstack/semantic-presentation-contract.md +121 -0
- package/repo-docs/fullstack/ssr-site-and-flavor-setup.md +2 -2
- package/repo-docs/index.md +16 -11
- package/repo-docs/reference/glossary.md +30 -0
- package/repo-docs/reference/package-map.md +1 -1
- package/repo-docs/reference/repo-scripts.md +6 -4
- package/vona/pnpm-lock.yaml +10 -96
- package/zova/pnpm-lock.yaml +8 -0
- package/zova/src/suite/a-home/modules/home-base/src/.metadata/component/siteEntryTables.ts +12 -0
- package/zova/src/suite/a-home/modules/home-base/src/.metadata/index.ts +13 -0
- package/zova/src/suite/a-home/modules/home-base/src/component/siteEntryTables/controller.tsx +71 -0
- package/zova/src/suite/a-home/modules/home-base/src/config/locale/en-us.ts +8 -0
- package/zova/src/suite/a-home/modules/home-base/src/config/locale/zh-cn.ts +8 -0
- package/zova/src/suite/a-home/modules/home-indexadmin/package.json +3 -0
- package/zova/src/suite/a-home/modules/home-indexadmin/src/page/dashboard/controller.tsx +6 -13
- package/zova/src/suite/a-home/modules/home-indexweb/package.json +3 -1
- package/zova/src/suite/a-home/modules/home-indexweb/src/page/home/controller.tsx +6 -14
- package/repo-docs/ai/edition-detection.md +0 -30
- package/repo-docs/editions/cabloy-basic.md +0 -26
- package/repo-docs/editions/cabloy-start.md +0 -53
- package/repo-docs/editions/choosing-between-basic-and-start.md +0 -83
- package/repo-docs/editions/detection.md +0 -31
package/repo-docs/index.md
CHANGED
|
@@ -4,7 +4,7 @@ layout: home
|
|
|
4
4
|
hero:
|
|
5
5
|
name: 'Cabloy'
|
|
6
6
|
text: 'Node.js fullstack framework for AI vibe coding'
|
|
7
|
-
tagline: One fullstack system for AI vibe coding—bidirectional type sync, CLI-first workflows,
|
|
7
|
+
tagline: One fullstack system for AI vibe coding—bidirectional type sync, CLI-first workflows, and Traceable Spec Delivery from product intent to verifiable evidence.
|
|
8
8
|
actions:
|
|
9
9
|
- theme: brand
|
|
10
10
|
text: Get Started
|
|
@@ -13,8 +13,8 @@ hero:
|
|
|
13
13
|
text: Editions
|
|
14
14
|
link: /editions/overview
|
|
15
15
|
- theme: alt
|
|
16
|
-
text: AI Development
|
|
17
|
-
link: /ai/
|
|
16
|
+
text: AI Spec-Driven Development
|
|
17
|
+
link: /ai/ai-spec-driven-development
|
|
18
18
|
|
|
19
19
|
features:
|
|
20
20
|
- title: One fullstack system
|
|
@@ -25,17 +25,21 @@ features:
|
|
|
25
25
|
details: Use explicit commands for scaffolding, generation, refactors, and verification.
|
|
26
26
|
- title: Docs and skills
|
|
27
27
|
details: Give people and AI agents reusable, source-grounded guidance for the current repository.
|
|
28
|
+
- title: AI Spec-Driven Development
|
|
29
|
+
details: Connect confirmed product intent to contracts, bounded delivery, acceptance procedures, and verifiable evidence.
|
|
28
30
|
- title: Vona + Zova
|
|
29
31
|
details: Use aligned backend and frontend layers for code sharing and cross-stack consistency.
|
|
30
32
|
- title: Modular delivery
|
|
31
33
|
details: Organize capabilities as suites and modules, then deliver SSR, SPA, Web, and Admin applications with shared conventions.
|
|
34
|
+
- title: Semantic presentation
|
|
35
|
+
details: Translate confirmed audience, task, scene, and DTO contracts into schema-driven UI without changing security or ownership authority.
|
|
32
36
|
---
|
|
33
37
|
|
|
34
38
|
# Cabloy Documentation
|
|
35
39
|
|
|
36
|
-
Cabloy is a Node.js fullstack framework for AI vibe coding. It brings backend and frontend work into one system, with bidirectional type sync, CLI-first workflows, and source-grounded docs and skills for people and AI agents.
|
|
40
|
+
Cabloy is a Node.js fullstack framework for AI vibe coding, with AI Spec-Driven Development for traceable, evidence-backed delivery. It brings backend and frontend work into one system, with bidirectional type sync, CLI-first workflows, and source-grounded docs and skills for people and AI agents.
|
|
37
41
|
|
|
38
|
-
Start with the [Contract Loop Playbook](/fullstack/contract-loop-playbook) to understand bidirectional type sync, then use the [Fullstack CLI](/fullstack/cli) and [AI Development](/ai/introduction) guides to follow the current repository. Cabloy coordinates Vona and Zova as its backend and frontend layers, while Cabloy Basic and Cabloy Start are related, complete edition baselines built on that shared architecture. See [Editions Overview](/editions/overview) for the relationship and deliberate edition differences.
|
|
42
|
+
[AI Spec-Driven Development](/ai/ai-spec-driven-development) adds Cabloy's disciplined delivery path: **Traceable Spec Delivery** connects confirmed product intent to contracts, bounded work, acceptance procedures, and verifiable evidence. Start with the [Contract Loop Playbook](/fullstack/contract-loop-playbook) to understand bidirectional type sync, then use the [Fullstack CLI](/fullstack/cli) and [AI Development](/ai/introduction) guides to follow the current repository. Cabloy coordinates Vona and Zova as its backend and frontend layers, while Cabloy Basic and Cabloy Start are related, complete edition baselines built on that shared architecture. See [Editions Overview](/editions/overview) for the relationship and deliberate edition differences.
|
|
39
43
|
|
|
40
44
|
## What you can do here
|
|
41
45
|
|
|
@@ -44,7 +48,8 @@ Start with the [Contract Loop Playbook](/fullstack/contract-loop-playbook) to un
|
|
|
44
48
|
- **Explore backend and frontend workflows** without losing the cross-stack picture
|
|
45
49
|
- **Understand Cabloy’s performance philosophy and runtime stability story** with [Framework Performance](/fullstack/framework-performance)
|
|
46
50
|
- **See how Cabloy Basic and Cabloy Start differ by edition** when UI assumptions, flavors, modules, SSR sites, or AI workflow guidance matter
|
|
47
|
-
- **Follow
|
|
51
|
+
- **Follow AI Spec-Driven Development** from confirmed product intent to evidence-backed verification
|
|
52
|
+
- **Use source-grounded AI vibe coding guidance** for prompting, workflow selection, and verification
|
|
48
53
|
|
|
49
54
|
## First reading path
|
|
50
55
|
|
|
@@ -52,9 +57,8 @@ Start with the [Contract Loop Playbook](/fullstack/contract-loop-playbook) to un
|
|
|
52
57
|
|
|
53
58
|
1. [Fullstack Quickstart](/fullstack/quickstart)
|
|
54
59
|
2. [Fullstack Quick Start Tutorials](/fullstack/tutorials-overview)
|
|
55
|
-
3. [Editions
|
|
56
|
-
4. [
|
|
57
|
-
5. [Fullstack Introduction](/fullstack/introduction)
|
|
60
|
+
3. [Cabloy Editions](/editions/overview#choosing-an-edition)
|
|
61
|
+
4. [Fullstack Introduction](/fullstack/introduction)
|
|
58
62
|
|
|
59
63
|
### For contributors and AI vibe coding workflows
|
|
60
64
|
|
|
@@ -62,8 +66,9 @@ Start with the [Contract Loop Playbook](/fullstack/contract-loop-playbook) to un
|
|
|
62
66
|
2. [Fullstack CLI](/fullstack/cli)
|
|
63
67
|
3. [VS Code Extensions](/fullstack/vscode-extensions)
|
|
64
68
|
4. [AI Development Introduction](/ai/introduction)
|
|
65
|
-
5. [
|
|
66
|
-
6. [
|
|
69
|
+
5. [AI Spec-Driven Development](/ai/ai-spec-driven-development)
|
|
70
|
+
6. [Reference Introduction](/reference/introduction)
|
|
71
|
+
7. [Editions Overview](/editions/overview)
|
|
67
72
|
|
|
68
73
|
### For performance-oriented reading
|
|
69
74
|
|
|
@@ -26,10 +26,40 @@ Vona and Zova describe architectural layers; Cabloy Basic and Cabloy Start descr
|
|
|
26
26
|
|
|
27
27
|
The process of identifying whether the current repo is Cabloy Basic or Cabloy Start before choosing a workflow, example, or skill branch.
|
|
28
28
|
|
|
29
|
+
## Vona integrated SSR
|
|
30
|
+
|
|
31
|
+
The SSR path owned by the Vona server: Vona accepts the HTTP request, selects the SSR site, and dispatches the built Zova SSR runtime before returning the response. In the Cabloy Basic default environment, this is reached through Vona's `SERVER_LISTEN_PORT` at `7102`.
|
|
32
|
+
|
|
33
|
+
## Zova standalone SSR
|
|
34
|
+
|
|
35
|
+
The SSR path served directly by the Zova development server, used for frontend page, route, and hydration iteration. In the Cabloy Basic default environment, this uses `DEV_SERVER_PORT` `9000`. It does not by itself prove Vona site matching, artifact handoff, or integrated SSR acceptance.
|
|
36
|
+
|
|
37
|
+
A Zova standalone SSR server is a runtime entry mode, not the same thing as an independently deployable SSR Site/flavor. The latter describes an application boundary and its deployment identity.
|
|
38
|
+
|
|
29
39
|
## CLI-first
|
|
30
40
|
|
|
31
41
|
The practice of using existing Vona and Zova command families before attempting manual scaffolding or refactor work.
|
|
32
42
|
|
|
43
|
+
## AI Spec-Driven Development
|
|
44
|
+
|
|
45
|
+
Cabloy's AI-assisted approach for moving from confirmed product intent to verifiable delivery evidence. It is the public entry point for [Traceable Spec Delivery](/ai/ai-spec-driven-development), not a claim of unconstrained or autonomous delivery.
|
|
46
|
+
|
|
47
|
+
## Traceable Spec Delivery
|
|
48
|
+
|
|
49
|
+
Cabloy's repository-native method for tracing `PRD → SRS → WBS → ATP → Evidence`. It keeps authority at the owning record and delivers bounded increments with evidence-backed status. See [AI Spec-Driven Development](/ai/ai-spec-driven-development).
|
|
50
|
+
|
|
51
|
+
## Evidence-gated delivery
|
|
52
|
+
|
|
53
|
+
The status discipline in which `implementation-complete` and `verified` remain distinct: `verified` requires retained, linked, redacted observed evidence for the applicable WBS checks and ATPs. See [AI Spec-Driven Development](/ai/ai-spec-driven-development).
|
|
54
|
+
|
|
55
|
+
## Contract Loop
|
|
56
|
+
|
|
57
|
+
Cabloy's bidirectional Vona↔Zova model for synchronizing contract sources, generated handoffs, and consumers through forward and reverse chains. It is complementary to, not a substitute for, Traceable Spec Delivery. See [Contract Loop Playbook](/fullstack/contract-loop-playbook).
|
|
58
|
+
|
|
59
|
+
## Semantic Presentation Contract
|
|
60
|
+
|
|
61
|
+
The design boundary that translates a confirmed audience, task, scene, information area, and operation DTO contract into presentation metadata and renderer choices without redefining API, persistence, validation, authorization, state ownership, or SSR privacy. See [Semantic Presentation Contract](/fullstack/semantic-presentation-contract).
|
|
62
|
+
|
|
33
63
|
## Read next
|
|
34
64
|
|
|
35
65
|
Use the glossary together with:
|
|
@@ -11,7 +11,7 @@ This monorepo is organized around a small set of stable top-level areas.
|
|
|
11
11
|
- `repo-docs/` — unified public docs
|
|
12
12
|
- `repo-specs/` — suite-local product, technical, delivery, ATP, progress, observed-evidence, and ADR authority
|
|
13
13
|
|
|
14
|
-
`repo-specs/` is distinct from `repo-docs/`, which explains reusable public guidance, `.claude/`, which contains executable workflow behavior, and `repo-docs-internal/`, which preserves supporting maintainer rationale. For the public planning workflow, see [
|
|
14
|
+
`repo-specs/` is distinct from `repo-docs/`, which explains reusable public guidance, `.claude/`, which contains executable workflow behavior, and `repo-docs-internal/`, which preserves supporting maintainer rationale. For the public planning workflow, see [Generate a Cabloy Suite Specification](/ai/playbook-spec-generation).
|
|
15
15
|
|
|
16
16
|
## Backend side
|
|
17
17
|
|
|
@@ -136,8 +136,10 @@ The public-package upgrade flow does not source or reconcile the Start-owned bas
|
|
|
136
136
|
|
|
137
137
|
The unified runner has two modes:
|
|
138
138
|
|
|
139
|
-
- `npm run test:e2e`: clean local run; checks the managed port, resets the database, starts one development Vona worker, and runs Playwright.
|
|
140
|
-
- `npm run test:e2e:fast`: skips the reset for quick reruns and may target either the local managed server or an externally managed `E2E_BASE_URL`.
|
|
139
|
+
- `npm run test:e2e`: clean local run; checks the managed Vona port, resets the database, starts one development Vona worker, and runs Playwright.
|
|
140
|
+
- `npm run test:e2e:fast`: skips the reset for quick reruns and may target either the local managed Vona server or an externally managed `E2E_BASE_URL`.
|
|
141
|
+
|
|
142
|
+
These browser checks target Vona integrated SSR. In the Cabloy Basic default environment, the Vona listener is `7102`; the Zova standalone SSR development server uses `9000` and is not an acceptance target.
|
|
141
143
|
|
|
142
144
|
Place spec basenames directly after the npm script name; use npm's `--` delimiter only before Playwright options. Multiple spec names are allowed. With no names, every spec in `repo-e2e/specs` is discovered:
|
|
143
145
|
|
|
@@ -160,7 +162,7 @@ The existing tags include `@web`, `@admin`, `@smoke`, `@flow`, `@ssr`, `@theme`,
|
|
|
160
162
|
|
|
161
163
|
### Cabloy Basic and Commerce
|
|
162
164
|
|
|
163
|
-
The Basic baseline exercises Web at `/` and Admin at `/admin` through Vona
|
|
165
|
+
The Basic baseline exercises Web at `/` and Admin at `/admin` through Vona integrated SSR dispatch. Prepare artifacts when frontend output has changed:
|
|
164
166
|
|
|
165
167
|
```bash
|
|
166
168
|
npm run build:zova
|
|
@@ -184,7 +186,7 @@ E2E_BASE_URL=http://127.0.0.1:7102 npm run test:e2e:fast a-commerce -- --tag @sm
|
|
|
184
186
|
|
|
185
187
|
### Cabloy Start
|
|
186
188
|
|
|
187
|
-
The Start suite exercises Web at `/` and Admin at `/admin` through Vona
|
|
189
|
+
The Start suite exercises Web at `/` and Admin at `/admin` through Vona integrated SSR dispatch. Prepare current Start artifacts before a managed local run:
|
|
188
190
|
|
|
189
191
|
```bash
|
|
190
192
|
npm run build:zova
|
package/vona/pnpm-lock.yaml
CHANGED
|
@@ -642,8 +642,8 @@ importers:
|
|
|
642
642
|
specifier: npm:@cabloy/zod@4.3.8
|
|
643
643
|
version: '@cabloy/zod@4.3.8'
|
|
644
644
|
zova:
|
|
645
|
-
specifier: ^5.1.
|
|
646
|
-
version: 5.1.
|
|
645
|
+
specifier: ^5.1.156
|
|
646
|
+
version: 5.1.156(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
|
|
647
647
|
zova-jsx:
|
|
648
648
|
specifier: ^1.1.88
|
|
649
649
|
version: 1.1.88(typescript@5.9.3)
|
|
@@ -660,8 +660,8 @@ importers:
|
|
|
660
660
|
specifier: ^5.1.34
|
|
661
661
|
version: 5.1.34
|
|
662
662
|
zova-module-a-form:
|
|
663
|
-
specifier: ^5.1.
|
|
664
|
-
version: 5.1.
|
|
663
|
+
specifier: ^5.1.51
|
|
664
|
+
version: 5.1.51(vue@3.5.39(typescript@5.9.3))
|
|
665
665
|
zova-module-a-icon:
|
|
666
666
|
specifier: ^5.1.27
|
|
667
667
|
version: 5.1.27
|
|
@@ -672,8 +672,8 @@ importers:
|
|
|
672
672
|
specifier: ^5.1.36
|
|
673
673
|
version: 5.1.36(vue@3.5.39(typescript@5.9.3))
|
|
674
674
|
zova-module-a-openapi:
|
|
675
|
-
specifier: ^5.1.
|
|
676
|
-
version: 5.1.
|
|
675
|
+
specifier: ^5.1.52
|
|
676
|
+
version: 5.1.52
|
|
677
677
|
zova-module-a-pay:
|
|
678
678
|
specifier: ^5.0.7
|
|
679
679
|
version: 5.0.7
|
|
@@ -690,14 +690,14 @@ importers:
|
|
|
690
690
|
specifier: ^5.1.35
|
|
691
691
|
version: 5.1.35
|
|
692
692
|
zova-module-a-table:
|
|
693
|
-
specifier: ^5.1.
|
|
694
|
-
version: 5.1.
|
|
693
|
+
specifier: ^5.1.39
|
|
694
|
+
version: 5.1.39(vue@3.5.39(typescript@5.9.3))
|
|
695
695
|
zova-module-pay-mock:
|
|
696
696
|
specifier: ^5.0.5
|
|
697
697
|
version: 5.0.5
|
|
698
698
|
zova-module-rest-resource:
|
|
699
|
-
specifier: ^5.1.
|
|
700
|
-
version: 5.1.
|
|
699
|
+
specifier: ^5.1.50
|
|
700
|
+
version: 5.1.50
|
|
701
701
|
|
|
702
702
|
.zova-rest/cabloy-commerce:
|
|
703
703
|
dependencies:
|
|
@@ -8986,9 +8986,6 @@ packages:
|
|
|
8986
8986
|
zova-module-a-fetch@5.1.25:
|
|
8987
8987
|
resolution: {integrity: sha512-kbMB/jIynN0dhivEZLLaY+ic9mU0rZJBeyjXwzAiWuOS330YsxipasxBZhACJD8s29RmLC9EQajI+vVLoBEveQ==}
|
|
8988
8988
|
|
|
8989
|
-
zova-module-a-form@5.1.50:
|
|
8990
|
-
resolution: {integrity: sha512-pfC9pL9SDO7HI7453oTyWbplBBTG+yz31K7Q6ERkSr3YnSPWl5gub93DL4cRPObnotDzrDDb+LWU9JuAdmHmQw==}
|
|
8991
|
-
|
|
8992
8989
|
zova-module-a-form@5.1.51:
|
|
8993
8990
|
resolution: {integrity: sha512-/UlaorIX2SpN/ozGsXMaklfNuS64as322jD3+0wlfj9FVyhV1nz0wEBpYSGgsiX+KFLJicwpNqAz/kMI7WfvUw==}
|
|
8994
8991
|
|
|
@@ -9007,9 +9004,6 @@ packages:
|
|
|
9007
9004
|
zova-module-a-model@5.1.36:
|
|
9008
9005
|
resolution: {integrity: sha512-AEiYy68vFzw3OBrJMUfq05Xh0M4TR0Qj/9p4jfZ3IS7qIXu+4w/52wsInvbfy0V9tOistp+kui6kB3Lm1/UAiQ==}
|
|
9009
9006
|
|
|
9010
|
-
zova-module-a-openapi@5.1.51:
|
|
9011
|
-
resolution: {integrity: sha512-7oi32wKEnpnVhrC5jS5rv1pDan/NjZbj4rj9sUiGvwXU5pwG5O6XiiA/IHoyLVhHu4EkeE4ldYow9sQVKDquMw==}
|
|
9012
|
-
|
|
9013
9007
|
zova-module-a-openapi@5.1.52:
|
|
9014
9008
|
resolution: {integrity: sha512-pUbyEI2tiJ2tEih/qFvfYYR/yqnWZnK0QqyCNfgkD2Nvn4EY+iyIHISLZhVtWDJbYMXcqfXlxvb8Ltvm+GD/PA==}
|
|
9015
9009
|
|
|
@@ -9037,9 +9031,6 @@ packages:
|
|
|
9037
9031
|
zova-module-a-style@5.1.35:
|
|
9038
9032
|
resolution: {integrity: sha512-i73I3wFvdQonj3l4fkovkKBZwSK4s6D4vL3AVfVvFJ4eIboKH2yw0hCILKRzLoESNQ0T+lNS6ozeimvtA4/6DQ==}
|
|
9039
9033
|
|
|
9040
|
-
zova-module-a-table@5.1.38:
|
|
9041
|
-
resolution: {integrity: sha512-q4URU+D1CbGtKAOhFnujaSMV1Py5twil3eI6lRz3bFL0p79Lr+hNyjqaLpLKoBAnHKRSW/XHy/LvCYGMJ1C89w==}
|
|
9042
|
-
|
|
9043
9034
|
zova-module-a-table@5.1.39:
|
|
9044
9035
|
resolution: {integrity: sha512-MhYYlOIFJ32m61xtDCnIHfWf/g17g2HvEL7zRd5k1As7+or/9FPe9DbmFpHvjk7vp/Yba6oTqV0D5GbueJt/OA==}
|
|
9045
9036
|
|
|
@@ -9052,21 +9043,12 @@ packages:
|
|
|
9052
9043
|
zova-module-pay-mock@5.0.5:
|
|
9053
9044
|
resolution: {integrity: sha512-PFbNz1g2MDVp3NdvKV37WFzHTQ2awSPTD5iexkkOOloAaItmt/KYoV7xadM46wHUCSQZcZQ1SZdgDaUFev+R4Q==}
|
|
9054
9045
|
|
|
9055
|
-
zova-module-rest-resource@5.1.49:
|
|
9056
|
-
resolution: {integrity: sha512-tLf3BLov4GnV1QPivvLro6T2sNdriDZ8vZMsghuUN7dl+PRCG2pI0q9hBCrqe2faRSIcVUXowwnEbEynmaM7Zg==}
|
|
9057
|
-
|
|
9058
9046
|
zova-module-rest-resource@5.1.50:
|
|
9059
9047
|
resolution: {integrity: sha512-BZp4W9j4DhuQt9mk/jlquRFemzTBHe8saNtV/EUT6smAVj+7Li8AYkeaDUofKbssouqbOxHoFb0Qrlmd+1kZOw==}
|
|
9060
9048
|
|
|
9061
|
-
zova-suite-a-zova@5.1.154:
|
|
9062
|
-
resolution: {integrity: sha512-ii1qFxaBNc4PpNSj+sKgiH0Ryefr4KE0Gb5M8o2Df0hoe8//3uM7QK02GyQDKAK+bu6Q+7mwBZFW8hcD8TrEYw==}
|
|
9063
|
-
|
|
9064
9049
|
zova-suite-a-zova@5.1.155:
|
|
9065
9050
|
resolution: {integrity: sha512-w4+mlwOJ3DF+Bl9N1hkZBbgNW0UouP3/Xaw8PtiNEpmmr/ScWj+/+l85RTr/q9F+Qw/hjDCWTLwy4GBukTiBag==}
|
|
9066
9051
|
|
|
9067
|
-
zova@5.1.155:
|
|
9068
|
-
resolution: {integrity: sha512-TbaG8D/s/ML5gGBoaLeW92bjYyDd+8AU+Vw3y3cQopOtnthGLMiLnssKmzUOavyOiVGb25tyNAqgAWrGz4z/vQ==}
|
|
9069
|
-
|
|
9070
9052
|
zova@5.1.156:
|
|
9071
9053
|
resolution: {integrity: sha512-LawJuQhiR+M+BdFkLYEz1wLz0zQa2IuZFAR0Vtq/dcNMX1Jus9g2iem/guNbavgeNP8aXRa+P4vCnaFynnWC/w==}
|
|
9072
9054
|
|
|
@@ -15408,14 +15390,6 @@ snapshots:
|
|
|
15408
15390
|
- debug
|
|
15409
15391
|
- supports-color
|
|
15410
15392
|
|
|
15411
|
-
zova-module-a-form@5.1.50(vue@3.5.39(typescript@5.9.3)):
|
|
15412
|
-
dependencies:
|
|
15413
|
-
'@tanstack/vue-form': 1.33.2(vue@3.5.39(typescript@5.9.3))
|
|
15414
|
-
'@tanstack/vue-store': 0.11.0(vue@3.5.39(typescript@5.9.3))
|
|
15415
|
-
transitivePeerDependencies:
|
|
15416
|
-
- '@vue/composition-api'
|
|
15417
|
-
- vue
|
|
15418
|
-
|
|
15419
15393
|
zova-module-a-form@5.1.51(vue@3.5.39(typescript@5.9.3)):
|
|
15420
15394
|
dependencies:
|
|
15421
15395
|
'@tanstack/vue-form': 1.33.2(vue@3.5.39(typescript@5.9.3))
|
|
@@ -15446,12 +15420,6 @@ snapshots:
|
|
|
15446
15420
|
- '@vue/composition-api'
|
|
15447
15421
|
- vue
|
|
15448
15422
|
|
|
15449
|
-
zova-module-a-openapi@5.1.51:
|
|
15450
|
-
dependencies:
|
|
15451
|
-
'@cabloy/json-schema-to-zod': 2.6.5
|
|
15452
|
-
openapi3-ts: 4.6.0
|
|
15453
|
-
typestyle: 2.4.0
|
|
15454
|
-
|
|
15455
15423
|
zova-module-a-openapi@5.1.52:
|
|
15456
15424
|
dependencies:
|
|
15457
15425
|
'@cabloy/json-schema-to-zod': 2.6.5
|
|
@@ -15485,13 +15453,6 @@ snapshots:
|
|
|
15485
15453
|
csx: 10.0.2
|
|
15486
15454
|
typestyle: 2.4.0
|
|
15487
15455
|
|
|
15488
|
-
zova-module-a-table@5.1.38(vue@3.5.39(typescript@5.9.3)):
|
|
15489
|
-
dependencies:
|
|
15490
|
-
'@tanstack/table-core': 8.21.3
|
|
15491
|
-
'@tanstack/vue-table': 8.21.3(vue@3.5.39(typescript@5.9.3))
|
|
15492
|
-
transitivePeerDependencies:
|
|
15493
|
-
- vue
|
|
15494
|
-
|
|
15495
15456
|
zova-module-a-table@5.1.39(vue@3.5.39(typescript@5.9.3)):
|
|
15496
15457
|
dependencies:
|
|
15497
15458
|
'@tanstack/table-core': 8.21.3
|
|
@@ -15524,44 +15485,8 @@ snapshots:
|
|
|
15524
15485
|
|
|
15525
15486
|
zova-module-pay-mock@5.0.5: {}
|
|
15526
15487
|
|
|
15527
|
-
zova-module-rest-resource@5.1.49: {}
|
|
15528
|
-
|
|
15529
15488
|
zova-module-rest-resource@5.1.50: {}
|
|
15530
15489
|
|
|
15531
|
-
zova-suite-a-zova@5.1.154(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
|
|
15532
|
-
dependencies:
|
|
15533
|
-
zova-module-a-api: 5.1.22
|
|
15534
|
-
zova-module-a-app: 5.1.26
|
|
15535
|
-
zova-module-a-bean: 5.1.33
|
|
15536
|
-
zova-module-a-behavior: 5.1.26
|
|
15537
|
-
zova-module-a-behaviors: 5.1.22
|
|
15538
|
-
zova-module-a-boundary: 5.1.22
|
|
15539
|
-
zova-module-a-command: 5.1.34
|
|
15540
|
-
zova-module-a-fetch: 5.1.25
|
|
15541
|
-
zova-module-a-form: 5.1.51(vue@3.5.39(typescript@5.9.3))
|
|
15542
|
-
zova-module-a-icon: 5.1.27
|
|
15543
|
-
zova-module-a-interceptor: 5.1.31
|
|
15544
|
-
zova-module-a-logger: 5.1.28
|
|
15545
|
-
zova-module-a-meta: 5.1.22
|
|
15546
|
-
zova-module-a-model: 5.1.36(vue@3.5.39(typescript@5.9.3))
|
|
15547
|
-
zova-module-a-openapi: 5.1.52
|
|
15548
|
-
zova-module-a-router: 5.1.34
|
|
15549
|
-
zova-module-a-routerstack: 5.1.27
|
|
15550
|
-
zova-module-a-routertabs: 5.1.34
|
|
15551
|
-
zova-module-a-ssr: 5.1.38
|
|
15552
|
-
zova-module-a-ssrhmr: 5.1.23
|
|
15553
|
-
zova-module-a-ssrserver: 5.1.26
|
|
15554
|
-
zova-module-a-style: 5.1.35
|
|
15555
|
-
zova-module-a-table: 5.1.39(vue@3.5.39(typescript@5.9.3))
|
|
15556
|
-
zova-module-a-zod: 5.1.37
|
|
15557
|
-
zova-module-a-zova: 5.1.103(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
|
|
15558
|
-
transitivePeerDependencies:
|
|
15559
|
-
- '@vue/composition-api'
|
|
15560
|
-
- debug
|
|
15561
|
-
- supports-color
|
|
15562
|
-
- typescript
|
|
15563
|
-
- vue
|
|
15564
|
-
|
|
15565
15490
|
zova-suite-a-zova@5.1.155(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
|
|
15566
15491
|
dependencies:
|
|
15567
15492
|
zova-module-a-api: 5.1.22
|
|
@@ -15596,17 +15521,6 @@ snapshots:
|
|
|
15596
15521
|
- typescript
|
|
15597
15522
|
- vue
|
|
15598
15523
|
|
|
15599
|
-
zova@5.1.155(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
|
|
15600
|
-
dependencies:
|
|
15601
|
-
zova-core: 5.1.88(patch_hash=144450bd7a567a6067e5857c0cf4c780981b7e90bc48745c09e1696a9b6f1b97)(typescript@5.9.3)
|
|
15602
|
-
zova-suite-a-zova: 5.1.154(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
|
|
15603
|
-
transitivePeerDependencies:
|
|
15604
|
-
- '@vue/composition-api'
|
|
15605
|
-
- debug
|
|
15606
|
-
- supports-color
|
|
15607
|
-
- typescript
|
|
15608
|
-
- vue
|
|
15609
|
-
|
|
15610
15524
|
zova@5.1.156(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
|
|
15611
15525
|
dependencies:
|
|
15612
15526
|
zova-core: 5.1.88(patch_hash=144450bd7a567a6067e5857c0cf4c780981b7e90bc48745c09e1696a9b6f1b97)(typescript@5.9.3)
|
package/zova/pnpm-lock.yaml
CHANGED
|
@@ -1695,6 +1695,10 @@ importers:
|
|
|
1695
1695
|
version: 6.1.3
|
|
1696
1696
|
|
|
1697
1697
|
src/suite/a-home/modules/home-indexadmin:
|
|
1698
|
+
dependencies:
|
|
1699
|
+
zova-module-home-base:
|
|
1700
|
+
specifier: ^5.0.0
|
|
1701
|
+
version: link:../home-base
|
|
1698
1702
|
devDependencies:
|
|
1699
1703
|
clean-package:
|
|
1700
1704
|
specifier: ^2.2.0
|
|
@@ -1704,6 +1708,10 @@ importers:
|
|
|
1704
1708
|
version: 6.1.3
|
|
1705
1709
|
|
|
1706
1710
|
src/suite/a-home/modules/home-indexweb:
|
|
1711
|
+
dependencies:
|
|
1712
|
+
zova-module-home-base:
|
|
1713
|
+
specifier: ^5.0.0
|
|
1714
|
+
version: link:../home-base
|
|
1707
1715
|
devDependencies:
|
|
1708
1716
|
clean-package:
|
|
1709
1717
|
specifier: ^2.2.0
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { defineComponent } from 'vue';
|
|
2
|
+
import { prepareComponentOptions, useController } from 'zova';
|
|
3
|
+
|
|
4
|
+
import { ControllerSiteEntryTables } from '../../component/siteEntryTables/controller.jsx';
|
|
5
|
+
export type ZSiteEntryTablesProps = {
|
|
6
|
+
controllerRef?: (ref: ControllerSiteEntryTables) => void;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export const ZSiteEntryTables = defineComponent((_props: ZSiteEntryTablesProps) => {
|
|
10
|
+
useController(ControllerSiteEntryTables, undefined, undefined);
|
|
11
|
+
return () => {};
|
|
12
|
+
}, prepareComponentOptions());
|
|
@@ -67,6 +67,7 @@ declare module 'zova' {
|
|
|
67
67
|
/** controller: begin */
|
|
68
68
|
export * from '../component/itemLink/controller.jsx';
|
|
69
69
|
export * from '../component/page/controller.jsx';
|
|
70
|
+
export * from '../component/siteEntryTables/controller.jsx';
|
|
70
71
|
export * from '../page/authCallback/controller.jsx';
|
|
71
72
|
export * from '../page/errorAccessDenied/controller.jsx';
|
|
72
73
|
export * from '../page/errorExpired/controller.jsx';
|
|
@@ -89,6 +90,11 @@ declare module 'zova-module-home-base' {
|
|
|
89
90
|
get scope(): ScopeModuleHomeBase;
|
|
90
91
|
}
|
|
91
92
|
|
|
93
|
+
export interface ControllerSiteEntryTables {
|
|
94
|
+
/** @internal */
|
|
95
|
+
get scope(): ScopeModuleHomeBase;
|
|
96
|
+
}
|
|
97
|
+
|
|
92
98
|
export interface ControllerPageAuthCallback {
|
|
93
99
|
/** @internal */
|
|
94
100
|
get scope(): ScopeModuleHomeBase;
|
|
@@ -113,6 +119,7 @@ declare module 'zova-module-home-base' {
|
|
|
113
119
|
/** controller: begin */
|
|
114
120
|
import { ControllerItemLink } from '../component/itemLink/controller.jsx';
|
|
115
121
|
import { ControllerPage } from '../component/page/controller.jsx';
|
|
122
|
+
import { ControllerSiteEntryTables } from '../component/siteEntryTables/controller.jsx';
|
|
116
123
|
import { ControllerPageAuthCallback } from '../page/authCallback/controller.jsx';
|
|
117
124
|
import { ControllerPageErrorAccessDenied } from '../page/errorAccessDenied/controller.jsx';
|
|
118
125
|
import { ControllerPageErrorExpired } from '../page/errorExpired/controller.jsx';
|
|
@@ -122,6 +129,7 @@ declare module 'zova' {
|
|
|
122
129
|
export interface IBeanRecordLocal {
|
|
123
130
|
'home-base.controller.itemLink': ControllerItemLink;
|
|
124
131
|
'home-base.controller.page': ControllerPage;
|
|
132
|
+
'home-base.controller.siteEntryTables': ControllerSiteEntryTables;
|
|
125
133
|
'home-base.controller.pageAuthCallback': ControllerPageAuthCallback;
|
|
126
134
|
'home-base.controller.pageErrorAccessDenied': ControllerPageErrorAccessDenied;
|
|
127
135
|
'home-base.controller.pageErrorExpired': ControllerPageErrorExpired;
|
|
@@ -176,19 +184,24 @@ export * from './component/itemLink.js';
|
|
|
176
184
|
import { ZItemLink } from './component/itemLink.js';
|
|
177
185
|
export * from './component/page.js';
|
|
178
186
|
import { ZPage } from './component/page.js';
|
|
187
|
+
export * from './component/siteEntryTables.js';
|
|
188
|
+
import { ZSiteEntryTables } from './component/siteEntryTables.js';
|
|
179
189
|
export const components = {
|
|
180
190
|
'itemLink': ZItemLink,
|
|
181
191
|
'page': ZPage,
|
|
192
|
+
'siteEntryTables': ZSiteEntryTables,
|
|
182
193
|
};
|
|
183
194
|
import 'zova';
|
|
184
195
|
declare module 'zova' {
|
|
185
196
|
export interface IComponentRecord {
|
|
186
197
|
'home-base:itemLink': ControllerItemLink;
|
|
187
198
|
'home-base:page': ControllerPage;
|
|
199
|
+
'home-base:siteEntryTables': ControllerSiteEntryTables;
|
|
188
200
|
}
|
|
189
201
|
export interface IZovaComponentRecord {
|
|
190
202
|
'home-base:itemLink': typeof ZItemLink;
|
|
191
203
|
'home-base:page': typeof ZPage;
|
|
204
|
+
'home-base:siteEntryTables': typeof ZSiteEntryTables;
|
|
192
205
|
}
|
|
193
206
|
}
|
|
194
207
|
/** components: end */
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { BeanControllerBase } from 'zova';
|
|
2
|
+
import { Controller } from 'zova-module-a-bean';
|
|
3
|
+
|
|
4
|
+
interface SiteEntry {
|
|
5
|
+
site: 'Web' | 'Admin' | 'CommerceWeb' | 'CommerceAdmin';
|
|
6
|
+
href: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const siteEntries: SiteEntry[] = [
|
|
10
|
+
{ site: 'Web', href: 'http://localhost:7102/' },
|
|
11
|
+
{ site: 'Admin', href: 'http://localhost:7102/admin/' },
|
|
12
|
+
{ site: 'CommerceWeb', href: 'http://localhost:7102/commerce/' },
|
|
13
|
+
{ site: 'CommerceAdmin', href: 'http://localhost:7102/commerce-admin/' },
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
@Controller()
|
|
17
|
+
export class ControllerSiteEntryTables extends BeanControllerBase {
|
|
18
|
+
protected render() {
|
|
19
|
+
const locale = this.scope.locale;
|
|
20
|
+
const siteLabels = {
|
|
21
|
+
Web: locale.SiteWeb(),
|
|
22
|
+
Admin: locale.SiteAdmin(),
|
|
23
|
+
CommerceWeb: locale.SiteCommerceWeb(),
|
|
24
|
+
CommerceAdmin: locale.SiteCommerceAdmin(),
|
|
25
|
+
};
|
|
26
|
+
const tables = [
|
|
27
|
+
{ title: locale.VonaIntegratedSsr(), entries: siteEntries },
|
|
28
|
+
{
|
|
29
|
+
title: locale.ZovaStandaloneSsr(),
|
|
30
|
+
entries: siteEntries.map(entry => ({
|
|
31
|
+
...entry,
|
|
32
|
+
href: entry.href.replace(':7102', ':9000'),
|
|
33
|
+
})),
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
return (
|
|
38
|
+
<div class="grid gap-6 lg:grid-cols-2">
|
|
39
|
+
{tables.map(table => (
|
|
40
|
+
<section class="card border border-base-300 bg-base-100 shadow-sm">
|
|
41
|
+
<div class="card-body gap-4">
|
|
42
|
+
<h2 class="card-title">{table.title}</h2>
|
|
43
|
+
<div class="overflow-x-auto">
|
|
44
|
+
<table class="table">
|
|
45
|
+
<thead>
|
|
46
|
+
<tr>
|
|
47
|
+
<th scope="col">{locale.SsrSite()}</th>
|
|
48
|
+
<th scope="col">{locale.Url()}</th>
|
|
49
|
+
</tr>
|
|
50
|
+
</thead>
|
|
51
|
+
<tbody>
|
|
52
|
+
{table.entries.map(entry => (
|
|
53
|
+
<tr>
|
|
54
|
+
<td>{siteLabels[entry.site]}</td>
|
|
55
|
+
<td>
|
|
56
|
+
<a class="link link-primary break-all" href={entry.href} rel="noreferrer">
|
|
57
|
+
{entry.href}
|
|
58
|
+
</a>
|
|
59
|
+
</td>
|
|
60
|
+
</tr>
|
|
61
|
+
))}
|
|
62
|
+
</tbody>
|
|
63
|
+
</table>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
</section>
|
|
67
|
+
))}
|
|
68
|
+
</div>
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -3,4 +3,12 @@ export default {
|
|
|
3
3
|
GoHome: 'Go Home',
|
|
4
4
|
LanguageEnglish: 'English',
|
|
5
5
|
LanguageChinese: 'Chinese',
|
|
6
|
+
VonaIntegratedSsr: 'Vona integrated SSR',
|
|
7
|
+
ZovaStandaloneSsr: 'Zova standalone SSR',
|
|
8
|
+
SsrSite: 'SSR Site',
|
|
9
|
+
Url: 'URL',
|
|
10
|
+
SiteWeb: 'Web',
|
|
11
|
+
SiteAdmin: 'Admin',
|
|
12
|
+
SiteCommerceWeb: 'Commerce-Web',
|
|
13
|
+
SiteCommerceAdmin: 'Commerce-Admin',
|
|
6
14
|
};
|
|
@@ -3,4 +3,12 @@ export default {
|
|
|
3
3
|
GoHome: '返回首页',
|
|
4
4
|
LanguageEnglish: '英语',
|
|
5
5
|
LanguageChinese: '简体中文',
|
|
6
|
+
VonaIntegratedSsr: 'Vona 集成式 SSR',
|
|
7
|
+
ZovaStandaloneSsr: 'Zova 独立式 SSR',
|
|
8
|
+
SsrSite: 'SSR 站点',
|
|
9
|
+
Url: 'URL',
|
|
10
|
+
SiteWeb: 'Web',
|
|
11
|
+
SiteAdmin: 'Admin',
|
|
12
|
+
SiteCommerceWeb: 'Commerce-Web',
|
|
13
|
+
SiteCommerceAdmin: 'Commerce-Admin',
|
|
6
14
|
};
|
|
@@ -1,23 +1,16 @@
|
|
|
1
1
|
import { BeanControllerPageBase } from 'zova';
|
|
2
2
|
import { Controller } from 'zova-module-a-bean';
|
|
3
|
+
import { ZPage, ZSiteEntryTables } from 'zova-module-home-base';
|
|
3
4
|
|
|
4
5
|
@Controller()
|
|
5
6
|
export class ControllerPageDashboard extends BeanControllerPageBase {
|
|
6
|
-
public message: string;
|
|
7
|
-
|
|
8
|
-
protected async __init__() {
|
|
9
|
-
this.message = 'Hello Zova';
|
|
10
|
-
}
|
|
11
|
-
|
|
12
7
|
protected render() {
|
|
13
8
|
return (
|
|
14
|
-
<
|
|
15
|
-
<
|
|
16
|
-
<
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
</div>
|
|
20
|
-
</div>
|
|
9
|
+
<ZPage>
|
|
10
|
+
<section class="mx-auto max-w-6xl p-6">
|
|
11
|
+
<ZSiteEntryTables />
|
|
12
|
+
</section>
|
|
13
|
+
</ZPage>
|
|
21
14
|
);
|
|
22
15
|
}
|
|
23
16
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { BeanControllerPageBase } from 'zova';
|
|
3
3
|
import { Controller } from 'zova-module-a-bean';
|
|
4
|
+
import { ZPage, ZSiteEntryTables } from 'zova-module-home-base';
|
|
4
5
|
|
|
5
6
|
export const ControllerPageHomeSchemaParams = z.object({
|
|
6
7
|
locale: z.string().optional(),
|
|
@@ -8,22 +9,13 @@ export const ControllerPageHomeSchemaParams = z.object({
|
|
|
8
9
|
|
|
9
10
|
@Controller()
|
|
10
11
|
export class ControllerPageHome extends BeanControllerPageBase {
|
|
11
|
-
public message: string;
|
|
12
|
-
|
|
13
|
-
protected async __init__() {
|
|
14
|
-
this.message = 'Hello Zova';
|
|
15
|
-
}
|
|
16
|
-
|
|
17
12
|
protected render() {
|
|
18
|
-
const localeCurrent = this.app.meta.locale.current;
|
|
19
13
|
return (
|
|
20
|
-
<
|
|
21
|
-
<
|
|
22
|
-
<
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
</div>
|
|
26
|
-
</div>
|
|
14
|
+
<ZPage>
|
|
15
|
+
<section class="mx-auto max-w-6xl p-6">
|
|
16
|
+
<ZSiteEntryTables />
|
|
17
|
+
</section>
|
|
18
|
+
</ZPage>
|
|
27
19
|
);
|
|
28
20
|
}
|
|
29
21
|
}
|