uniweb 0.38.0 → 0.40.0
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/package.json +6 -6
- package/partials/agents.md +1 -1
- package/src/commands/register.js +19 -1
- package/src/framework-index.json +9 -9
- package/src/utils/conformance.js +24 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "uniweb",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.40.0",
|
|
4
4
|
"description": "Create structured Vite + React sites with content/code separation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -41,15 +41,15 @@
|
|
|
41
41
|
"js-yaml": "^4.1.0",
|
|
42
42
|
"prompts": "^2.4.2",
|
|
43
43
|
"tar": "^7.0.0",
|
|
44
|
-
"@uniweb/core": "^0.
|
|
45
|
-
"@uniweb/kit": "^0.15.
|
|
44
|
+
"@uniweb/core": "^0.19.0",
|
|
45
|
+
"@uniweb/kit": "^0.15.6",
|
|
46
46
|
"@uniweb/semantic-parser": "^1.4.0",
|
|
47
|
-
"@uniweb/runtime": "^0.
|
|
47
|
+
"@uniweb/runtime": "^0.14.0"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
|
+
"@uniweb/build": "^0.36.0",
|
|
50
51
|
"@uniweb/content-reader": "^1.2.4",
|
|
51
|
-
"@uniweb/semantic-parser": "^1.4.0"
|
|
52
|
-
"@uniweb/build": "^0.34.0"
|
|
52
|
+
"@uniweb/semantic-parser": "^1.4.0"
|
|
53
53
|
},
|
|
54
54
|
"peerDependenciesMeta": {
|
|
55
55
|
"@uniweb/build": {
|
package/partials/agents.md
CHANGED
|
@@ -851,7 +851,7 @@ team:
|
|
|
851
851
|
|
|
852
852
|
You can keep the same declarations under `queries:` in `site.yml` instead, if you would rather have one file.
|
|
853
853
|
|
|
854
|
-
**Show a query on a page** with `data:` in `page.yml` (the whole result), or `fetch:` in a section's frontmatter (a subset):
|
|
854
|
+
**Show a query on a page** with `data:` in `page.yml` (the whole result), or `fetch:` in a section's frontmatter (a subset). A list — `data: [team, articles]` — declares several, each arriving under its own `content.data` key:
|
|
855
855
|
|
|
856
856
|
```yaml
|
|
857
857
|
# pages/blog/page.yml | # a section on the homepage
|
package/src/commands/register.js
CHANGED
|
@@ -653,7 +653,25 @@ async function runRegister(args = []) {
|
|
|
653
653
|
` ${colors.dim}Supply a registry bearer with --token <bearer> (or UNIWEB_TOKEN); an existing one may be wrong or expired.${colors.reset}`
|
|
654
654
|
)
|
|
655
655
|
}
|
|
656
|
-
|
|
656
|
+
// ⭐ **Surface `detail` as a sentence, not as a JSON dump.** The registry
|
|
657
|
+
// answers with problem+json (RFC 9457), and its `detail` is written for a
|
|
658
|
+
// human — it carries the actual next step, which for a rejected
|
|
659
|
+
// re-register is "bump the version". Printing the whole body dimmed put
|
|
660
|
+
// that sentence inside a blob, at the end of a 500-char truncation, in the
|
|
661
|
+
// one moment the reader most needs it.
|
|
662
|
+
//
|
|
663
|
+
// ⚖️ Keyed on the SHAPE, not on any particular code: a new refusal the CLI
|
|
664
|
+
// has never seen explains itself the day the backend ships it, with no
|
|
665
|
+
// release here. That is the property worth having — this branch exists
|
|
666
|
+
// because a 422 the CLI did not know about arrived exactly that way.
|
|
667
|
+
if (parsedBody?.detail) {
|
|
668
|
+
log(` ${parsedBody.detail}`)
|
|
669
|
+
if (parsedBody.code) {
|
|
670
|
+
log(` ${colors.dim}(${parsedBody.code})${colors.reset}`)
|
|
671
|
+
}
|
|
672
|
+
} else if (rawBody) {
|
|
673
|
+
log(` ${colors.dim}${rawBody.slice(0, 500)}${colors.reset}`)
|
|
674
|
+
}
|
|
657
675
|
return { exitCode: 1 }
|
|
658
676
|
}
|
|
659
677
|
}
|
package/src/framework-index.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"generatedAt": "2026-09-
|
|
3
|
+
"generatedAt": "2026-09-03T00:30:06.307Z",
|
|
4
4
|
"packages": {
|
|
5
5
|
"@uniweb/api": {
|
|
6
|
-
"version": "0.2.
|
|
6
|
+
"version": "0.2.5",
|
|
7
7
|
"path": "framework/api",
|
|
8
8
|
"deps": [
|
|
9
9
|
"@uniweb/core"
|
|
10
10
|
]
|
|
11
11
|
},
|
|
12
12
|
"@uniweb/build": {
|
|
13
|
-
"version": "0.
|
|
13
|
+
"version": "0.36.0",
|
|
14
14
|
"path": "framework/build",
|
|
15
15
|
"deps": [
|
|
16
16
|
"@uniweb/content-reader",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"deps": []
|
|
35
35
|
},
|
|
36
36
|
"@uniweb/core": {
|
|
37
|
-
"version": "0.
|
|
37
|
+
"version": "0.19.0",
|
|
38
38
|
"path": "framework/core",
|
|
39
39
|
"deps": [
|
|
40
40
|
"@uniweb/semantic-parser",
|
|
@@ -47,14 +47,14 @@
|
|
|
47
47
|
"deps": []
|
|
48
48
|
},
|
|
49
49
|
"@uniweb/icons": {
|
|
50
|
-
"version": "0.4.
|
|
50
|
+
"version": "0.4.10",
|
|
51
51
|
"path": "framework/icons",
|
|
52
52
|
"deps": [
|
|
53
53
|
"@uniweb/core"
|
|
54
54
|
]
|
|
55
55
|
},
|
|
56
56
|
"@uniweb/kit": {
|
|
57
|
-
"version": "0.15.
|
|
57
|
+
"version": "0.15.6",
|
|
58
58
|
"path": "framework/kit",
|
|
59
59
|
"deps": [
|
|
60
60
|
"@uniweb/core",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"deps": []
|
|
74
74
|
},
|
|
75
75
|
"@uniweb/projections": {
|
|
76
|
-
"version": "0.5.
|
|
76
|
+
"version": "0.5.7",
|
|
77
77
|
"path": "framework/projections",
|
|
78
78
|
"deps": [
|
|
79
79
|
"@uniweb/content-writer",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
]
|
|
82
82
|
},
|
|
83
83
|
"@uniweb/runtime": {
|
|
84
|
-
"version": "0.
|
|
84
|
+
"version": "0.14.0",
|
|
85
85
|
"path": "framework/runtime",
|
|
86
86
|
"deps": [
|
|
87
87
|
"@uniweb/core",
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
"deps": []
|
|
120
120
|
},
|
|
121
121
|
"@uniweb/unipress": {
|
|
122
|
-
"version": "0.9.
|
|
122
|
+
"version": "0.9.2",
|
|
123
123
|
"path": "framework/unipress",
|
|
124
124
|
"deps": [
|
|
125
125
|
"@uniweb/build",
|
package/src/utils/conformance.js
CHANGED
|
@@ -162,10 +162,30 @@ export function formatConformanceWarning(result, siteDir = '') {
|
|
|
162
162
|
const total = violations.length + setupErrors.length
|
|
163
163
|
if (total === 0) return null
|
|
164
164
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
165
|
+
// ⛔ **Two different kinds of finding share this block, and one sentence cannot
|
|
166
|
+
// describe both.** A `violation` is a record whose VALUE disagrees with a
|
|
167
|
+
// schema. A `setupError` is data that could not be read, or that never reached
|
|
168
|
+
// the section meant to read it — *no record is involved*. Counting the second
|
|
169
|
+
// as "content records that do not match" sends the reader hunting through their
|
|
170
|
+
// data for a fault that is in their configuration, which is the worse of the
|
|
171
|
+
// two searches and the one that ends in "the framework is wrong".
|
|
172
|
+
//
|
|
173
|
+
// The total still leads the block; only the naming is split.
|
|
174
|
+
const parts = []
|
|
175
|
+
if (violations.length > 0) {
|
|
176
|
+
parts.push(
|
|
177
|
+
`${violations.length} content record${violations.length === 1 ? '' : 's'} ` +
|
|
178
|
+
`that ${violations.length === 1 ? 'does' : 'do'} not match the schemas ` +
|
|
179
|
+
`${c.bold}${result.foundation}${c.reset} declares`
|
|
180
|
+
)
|
|
181
|
+
}
|
|
182
|
+
if (setupErrors.length > 0) {
|
|
183
|
+
parts.push(
|
|
184
|
+
`${setupErrors.length} problem${setupErrors.length === 1 ? '' : 's'} ` +
|
|
185
|
+
`with how data reaches your sections`
|
|
186
|
+
)
|
|
187
|
+
}
|
|
188
|
+
const headline = `Found ${parts.join(' and ')}.`
|
|
169
189
|
|
|
170
190
|
const lines = [
|
|
171
191
|
// A finding on the record itself carries no `field` — "expected a list of
|