uniweb 0.25.1 → 0.25.2
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
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "uniweb",
|
|
3
|
-
"version": "0.25.
|
|
3
|
+
"version": "0.25.2",
|
|
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/
|
|
44
|
+
"@uniweb/core": "^0.10.1",
|
|
45
45
|
"@uniweb/kit": "^0.12.3",
|
|
46
|
-
"@uniweb/
|
|
47
|
-
"@uniweb/
|
|
46
|
+
"@uniweb/semantic-parser": "^1.2.3",
|
|
47
|
+
"@uniweb/runtime": "^0.12.2"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
|
-
"@uniweb/
|
|
50
|
+
"@uniweb/semantic-parser": "^1.2.3",
|
|
51
51
|
"@uniweb/content-reader": "^1.2.3",
|
|
52
|
-
"@uniweb/
|
|
52
|
+
"@uniweb/build": "^0.24.2"
|
|
53
53
|
},
|
|
54
54
|
"peerDependenciesMeta": {
|
|
55
55
|
"@uniweb/build": {
|
package/src/commands/publish.js
CHANGED
|
@@ -87,6 +87,7 @@ import {
|
|
|
87
87
|
bringExtensionsAlong
|
|
88
88
|
} from '../backend/foundation-bring-along.js'
|
|
89
89
|
import { settlePaymentIfNeeded } from '../backend/payment-handoff.js'
|
|
90
|
+
import { reportSchemalessCollections } from '../utils/schemaless-report.js'
|
|
90
91
|
|
|
91
92
|
const c = {
|
|
92
93
|
reset: '\x1b[0m',
|
|
@@ -481,6 +482,10 @@ export async function publish(args = []) {
|
|
|
481
482
|
return { exitCode: 1 }
|
|
482
483
|
}
|
|
483
484
|
const schemalessNames = (probe.schemaless || []).map((col) => col.name)
|
|
485
|
+
// A product decision the author is usually making unknowingly — say it at warn
|
|
486
|
+
// level, not dim among everything else. See the helper for what the old
|
|
487
|
+
// message got wrong.
|
|
488
|
+
reportSchemalessCollections(probe.schemaless, say)
|
|
484
489
|
const localAssets = probe.localAssets || []
|
|
485
490
|
|
|
486
491
|
// 3a. A clone with no `$uuid` is bound to no backend site, so every cached map
|
package/src/commands/push.js
CHANGED
|
@@ -68,6 +68,7 @@ import { updateAssetMap, ASSET_MAP_FILE } from '@uniweb/build/uwx'
|
|
|
68
68
|
import { BackendClient } from '../backend/client.js'
|
|
69
69
|
import { resolveSiteDir, resolveSiteBackend } from './deploy.js'
|
|
70
70
|
import { warnIfContentDoesNotConform } from '../utils/conformance.js'
|
|
71
|
+
import { reportSchemalessCollections } from '../utils/schemaless-report.js'
|
|
71
72
|
import { readOrgFlag } from '../utils/args.js'
|
|
72
73
|
import { checkFlags } from '../utils/flag-guard.js'
|
|
73
74
|
import {
|
|
@@ -104,6 +105,7 @@ const success = (m) => log(`${colors.green}✓${colors.reset} ${m}`)
|
|
|
104
105
|
const error = (m) => console.error(`${colors.red}✗${colors.reset} ${m}`)
|
|
105
106
|
const info = (m) => log(`${colors.blue}→${colors.reset} ${m}`)
|
|
106
107
|
const note = (m) => log(` ${colors.dim}${m}${colors.reset}`)
|
|
108
|
+
const warn = (m) => log(`${colors.yellow}\u26a0${colors.reset} ${m}`)
|
|
107
109
|
|
|
108
110
|
function flagValue(args, name) {
|
|
109
111
|
const eq = args.find((a) => a.startsWith(`${name}=`))
|
|
@@ -362,6 +364,8 @@ export async function push(args = [], deps = {}) {
|
|
|
362
364
|
const { siteContent, collections, siteContentUuid, warnings, skipped } = pkg
|
|
363
365
|
log('')
|
|
364
366
|
for (const w of warnings) note(`! ${w}`)
|
|
367
|
+
// Warn level, not dim: this is the author choosing entities vs static files.
|
|
368
|
+
reportSchemalessCollections(pkg.schemaless, { warn, dim: note })
|
|
365
369
|
|
|
366
370
|
const totalEntities =
|
|
367
371
|
(siteContent?.entityCount || 0) + (collections?.entityCount || 0)
|
package/src/framework-index.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"generatedAt": "2026-08-
|
|
3
|
+
"generatedAt": "2026-08-18T16:05:00.154Z",
|
|
4
4
|
"packages": {
|
|
5
5
|
"@uniweb/build": {
|
|
6
|
-
"version": "0.24.
|
|
6
|
+
"version": "0.24.2",
|
|
7
7
|
"path": "framework/build",
|
|
8
8
|
"deps": [
|
|
9
9
|
"@uniweb/content-reader",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
]
|
|
77
77
|
},
|
|
78
78
|
"@uniweb/runtime": {
|
|
79
|
-
"version": "0.12.
|
|
79
|
+
"version": "0.12.2",
|
|
80
80
|
"path": "framework/runtime",
|
|
81
81
|
"deps": [
|
|
82
82
|
"@uniweb/core",
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Report collections publishing without a data schema.
|
|
3
|
+
*
|
|
4
|
+
* ⭐ This is a PRODUCT decision the author is making, usually without knowing:
|
|
5
|
+
* entities or static files. It is reported at warn level for that reason — the
|
|
6
|
+
* producer deliberately emits a structured entry rather than a prose warning so
|
|
7
|
+
* this can say what the trade actually is.
|
|
8
|
+
*
|
|
9
|
+
* The old line said `"… — not synced"`, dim, among everything else. The data IS
|
|
10
|
+
* delivered (as static files), so that read as "my data did not upload" to
|
|
11
|
+
* anyone who did not skim past it. Neither reading tells an author what they
|
|
12
|
+
* gave up or how to get it back.
|
|
13
|
+
*
|
|
14
|
+
* @param {Array<{name: string, model?: string}>} schemaless
|
|
15
|
+
* @param {{ warn: (m: string) => void, dim: (m: string) => void }} out
|
|
16
|
+
*/
|
|
17
|
+
export function reportSchemalessCollections(schemaless, out) {
|
|
18
|
+
if (!schemaless?.length) return
|
|
19
|
+
const names = schemaless.map((c) => c.name)
|
|
20
|
+
const label = names.length === 1 ? 'collection' : 'collections'
|
|
21
|
+
out.warn(
|
|
22
|
+
`${names.length} ${label} shipping as STATIC FILES, not entities: ${names.join(', ')}`
|
|
23
|
+
)
|
|
24
|
+
out.dim('No queries, no editor, no detail projection — and a republish to change the data.')
|
|
25
|
+
out.dim(
|
|
26
|
+
`Declare a data schema to get entities. Each resolves its schema by subfolder name (${schemaless
|
|
27
|
+
.map((c) => `${c.name} → ${c.model || c.name}`)
|
|
28
|
+
.join(', ')}), or set \`schema:\` on the collection.`
|
|
29
|
+
)
|
|
30
|
+
}
|