@hozu/cli 0.27.0 → 0.29.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/CHANGELOG.md +42 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +11 -0
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/browse-page.d.ts.map +1 -1
- package/dist/commands/browse-page.js +21 -2
- package/dist/commands/browse-page.js.map +1 -1
- package/dist/commands/browse-tab.d.ts +1 -0
- package/dist/commands/browse-tab.d.ts.map +1 -1
- package/dist/commands/browse-tab.js +25 -2
- package/dist/commands/browse-tab.js.map +1 -1
- package/dist/commands/browse.d.ts.map +1 -1
- package/dist/commands/browse.js +18 -3
- package/dist/commands/browse.js.map +1 -1
- package/dist/commands/scaffold.js +1 -1
- package/dist/commands/target.d.ts.map +1 -1
- package/dist/commands/target.js +42 -6
- package/dist/commands/target.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +5 -3
- package/dist/main.js.map +1 -1
- package/dist/migrate/steps.d.ts.map +1 -1
- package/dist/migrate/steps.js +23 -0
- package/dist/migrate/steps.js.map +1 -1
- package/package.json +8 -8
- package/skill/topics/data.md +2 -2
- package/skill/topics/diagnostics.md +1 -1
- package/skill/topics/env.md +3 -0
- package/skill/topics/feature.md +1 -1
- package/skill/topics/recipes.md +29 -3
- package/skill/topics/testing.md +4 -1
- package/skill/topics/views.md +5 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/migrate/steps.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/migrate/steps.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hozu/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.0",
|
|
4
4
|
"description": "The hozu command: check, map, why, show, get, browse, call, plan, add, build, export, gen, dev, serve, docs, migrate and skill (all with --json)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"hozu",
|
|
@@ -49,14 +49,14 @@
|
|
|
49
49
|
"access": "public"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@hozu/
|
|
53
|
-
"@hozu/
|
|
54
|
-
"@hozu/
|
|
55
|
-
"@hozu/
|
|
56
|
-
"@hozu/compiler": "0.
|
|
57
|
-
"@hozu/transform": "0.
|
|
52
|
+
"@hozu/core": "0.29.0",
|
|
53
|
+
"@hozu/devtools": "0.29.0",
|
|
54
|
+
"@hozu/validator": "0.29.0",
|
|
55
|
+
"@hozu/machine": "0.29.0",
|
|
56
|
+
"@hozu/compiler": "0.29.0",
|
|
57
|
+
"@hozu/transform": "0.29.0"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
|
-
"create-hozu": "0.
|
|
60
|
+
"create-hozu": "0.29.0"
|
|
61
61
|
}
|
|
62
62
|
}
|
package/skill/topics/data.md
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
| everyone's (posts, a shared board) | `'server'` / `'public'`; `access` on its mutations | the app's database |
|
|
10
10
|
| a public third-party API (quotes, weather) | `'either'` / `'public'` | nowhere: read it |
|
|
11
11
|
|
|
12
|
-
The arrays in Hozu's examples and scaffolds are stand-ins
|
|
13
|
-
|
|
12
|
+
The arrays in Hozu's examples and scaffolds are stand-ins: one list for every visitor, gone on restart. Never ship
|
|
13
|
+
one: use the store above (a demo: the JSON-file recipe).
|
|
14
14
|
|
|
15
15
|
```ts
|
|
16
16
|
export const itemsTag = tag({ param: null }) // tag({ param: z.string() }) → itemTag(id)
|
|
@@ -37,7 +37,7 @@ around the rule. `npx hozu docs HZ083` prints one code: its cause, its fix and t
|
|
|
37
37
|
| HZ025 (warning) | route params mismatch (keys, or a schema that does not fit `:x?`/`:x+`/`:x*`) / page with params but no `entries` (a user-scoped head is private: no sitemap, no warning) | align them / add `entries` |
|
|
38
38
|
| HZ026 | a class produces no CSS | fix the Tailwind class |
|
|
39
39
|
| HZ027 | a DOM field used outside an event, or wrong for this event | read `ui.dom.*` only in `ui.send` payloads |
|
|
40
|
-
| HZ028 | `img` without width/height | add both |
|
|
40
|
+
| HZ028 | `img` without width/height | add both, or classes fixing them (`aspect-video w-full`) |
|
|
41
41
|
| HZ029 | a client component's module is missing, or a handler for an event it does not emit | create the module (`hozu add component … --client`); handle declared `emits` only |
|
|
42
42
|
| HZ030 | `ui.html` of untrusted data | render text instead |
|
|
43
43
|
| HZ031 | a literal not allowed by its schema | use an allowed value (the patch suggests one) |
|
package/skill/topics/env.md
CHANGED
|
@@ -42,3 +42,6 @@ project({
|
|
|
42
42
|
- `SESSION_SECRET` (required in production with sessions);
|
|
43
43
|
- `NODE_ENV`;
|
|
44
44
|
- `HOZU_TRANSFORM_CACHE=0`.
|
|
45
|
+
- **Typed env in a feature's `server.ts`:** declare what the feature reads and let `app.ts` pass the project's
|
|
46
|
+
env: `export function booksResolvers<Env extends { DATA_FILE: string }>(implement: Implement<Session, Env>)`;
|
|
47
|
+
`ctx.env.DATA_FILE` is then a string in every resolver of the feature.
|
package/skill/topics/feature.md
CHANGED
|
@@ -67,7 +67,7 @@ Every declaration a listed module exports is registered under its name; schemas
|
|
|
67
67
|
contracts. Builders record them as data (an IR) that is validated, then rendered on the server. Only views bound
|
|
68
68
|
to the machine ship JS.
|
|
69
69
|
- **Callbacks are ordinary TypeScript** (`render`, `guard`, `assign`, `navigate`, `ui.each` / `ui.query`
|
|
70
|
-
callbacks): `===`, `!==`, `<`, `&&`, `||`, `!`, `??`, `c ? a : b`, template strings, `+`, `-`, `.length`, and in
|
|
70
|
+
callbacks): `===`, `!==`, `<`, `&&`, `||`, `!`, `??`, `c ? a : b`, template strings, `+`, `-`, `*`, `.length`, and in
|
|
71
71
|
`assign`, `ctx.x = v`, `ctx.n += 1`, `ctx.list.push(v)`, `ctx.list = ctx.list.filter((i) => i.id !== e.id)`.
|
|
72
72
|
Methods on data (`.map`, `.toUpperCase()`…) are not: use `ui.each` for lists and a `fn()` for computation.
|
|
73
73
|
- A mutation runs when the machine **enters** a state whose `invoke` calls it; that state drops other events, and
|
package/skill/topics/recipes.md
CHANGED
|
@@ -83,10 +83,13 @@ Run a fresh scaffold into a scratch app with `--with detail`, and copy the parts
|
|
|
83
83
|
choice in `localStorage`; `app.css` adds `@custom-variant dark (&:where(.dark, .dark *));`.
|
|
84
84
|
|
|
85
85
|
## A shell shared by many pages (a back office)
|
|
86
|
-
Pages are config, so a helper is the layout:
|
|
86
|
+
Pages are config, so a helper is the layout (write `head` inside the `ui.page` call: a `head` object declared on its
|
|
87
|
+
own loses the query's type, so `render`'s argument is `unknown`):
|
|
87
88
|
```ts
|
|
88
|
-
const
|
|
89
|
-
|
|
89
|
+
const staff = (route, View) => ui.page(route, {
|
|
90
|
+
views: [Sidebar, View],
|
|
91
|
+
head: { query: me, render: (m) => ({ title: `${m.name} · Admin` }), failed: { Forbidden: signIn } },
|
|
92
|
+
})
|
|
90
93
|
export default project({ /* … */ pages: [staff(orders, OrderList), staff(orderDetail, OrderPage), …] })
|
|
91
94
|
```
|
|
92
95
|
The sidebar marks its sections with `current(route)` from its render, one line per section:
|
|
@@ -114,3 +117,26 @@ the member on the view that has both `machine` and `route` (HZ048):
|
|
|
114
117
|
## A notice after saving
|
|
115
118
|
A `notice` context field set in `done` and cleared by `after: [{ ms: 4000, target: 'idle' }]` on a `saved` state;
|
|
116
119
|
the view shows `ctx.notice !== null && ui.p({ role: 'status' }, [ctx.notice])`. There is no global toast store.
|
|
120
|
+
On the next page (every link is a document load): `navigate` to a link with a `notice` search field, an enum such as
|
|
121
|
+
`z.enum(['none', 'booked']).default('none')`, and let that page map it to its words; the address never carries text.
|
|
122
|
+
|
|
123
|
+
## A JSON file for a demo
|
|
124
|
+
For a small group and one server process, a file is enough: read it in the resolvers, write it whole after each
|
|
125
|
+
mutation (write a temporary file, then rename). Put it in a folder listed in `.gitignore` (`data/`), name its path in
|
|
126
|
+
`env.server` with a default (`DATA_FILE: z.string().default('data/club.json')`), and give the container a volume for
|
|
127
|
+
that folder (`hozu build --target node` prints one). Limits: one process only (two instances overwrite each other),
|
|
128
|
+
no queries beyond what you write, back the file up. Move to a database when any of these matter.
|
|
129
|
+
|
|
130
|
+
## Confirm before deleting, without JavaScript
|
|
131
|
+
A native `details` holds the question and a form, so it works on any phone:
|
|
132
|
+
`ui.details({}, [ui.summary({}, ['刪除這本書']), ui.p({}, ['確定要刪除嗎?']), ui.form({ on: { submit:
|
|
133
|
+
ui.send(Remove, { id: ui.dom.form('id') }) } }, [ui.input({ type: 'hidden', name: 'id', value: item.id }),
|
|
134
|
+
ui.button({ type: 'submit' }, ['確定刪除'])]), ui.a({ href: ui.link(home, null) }, ['不要刪'])])`. The id travels
|
|
135
|
+
in the form (a payload read from the row would need JavaScript, HZ036). A confirm kept in the machine (`ui.set(ctx.confirm, id)`) needs JavaScript; `hozu browse
|
|
136
|
+
--js off` reports it as `js-only`.
|
|
137
|
+
|
|
138
|
+
## One person may change this (an organiser, an owner)
|
|
139
|
+
Give that person a role in the session and gate the mutation on it: `access: { allow: (session) => session.role
|
|
140
|
+
=== 'organiser' }`, with the role set where they sign in (a separate sign-in, or a check of a secret on the server).
|
|
141
|
+
A name typed at sign-in is not identity: anyone can type it, so it may decide what a page shows but never who may
|
|
142
|
+
write.
|
package/skill/topics/testing.md
CHANGED
|
@@ -37,7 +37,10 @@
|
|
|
37
37
|
it instead). Equal means tag, class, text, `name`, `id`, `href`, `src`, `type` and parent path; a node that moved is
|
|
38
38
|
no flash. Inside a list whose rows changed keys, a flash may be a new row whose child equals the removed row's at
|
|
39
39
|
that place (browse does not see keys): check the keys before changing the view. Layout that moves without input says
|
|
40
|
-
`layout shift X`. Both are problems to fix; a calm step prints neither.
|
|
40
|
+
`layout shift X`. Both are problems to fix; a calm step prints neither.
|
|
41
|
+
- **`--js both` shares one server:** the off run starts after the on run's writes, so a delete or a counter differs
|
|
42
|
+
between the modes for that reason alone. Compare reads with `--js both`, writes in one mode at a time.
|
|
43
|
+
- **Screenshots** capture the whole page; `scroll bottom|top|"<text>"` moves the page before a later step. An address changed with `replace` stays `in place`.
|
|
41
44
|
- **`hozu get`** prints the status, redirect, `set-cookie` attributes (`HttpOnly`, `SameSite`), title, alerts and
|
|
42
45
|
visible text.
|
|
43
46
|
- `--forms` lists each form: fields with their defaults, checkbox / radio groups with every value (checked ones
|
package/skill/topics/views.md
CHANGED
|
@@ -92,3 +92,8 @@ export const Board = ui.view({
|
|
|
92
92
|
- `ui.format.plural(n, { one: '# item', other: '# items' })` picks the case for the page's language (`=0` works).
|
|
93
93
|
- `null` and `false` render nothing, also inside a constant list:
|
|
94
94
|
`ui.ul({}, [...kinds.map((k) => (k === 'draft' ? null : ui.li({}, [k])))])`.
|
|
95
|
+
- A `part` returns one node; wrap several in an element (HZ014 otherwise).
|
|
96
|
+
- `current(route)` works in any render, bound or not: `'aria-current': current(home)`.
|
|
97
|
+
- `ui.format.date` takes a date-time or a `YYYY-MM-DD` string, formatted for the page's language.
|
|
98
|
+
- `ui.each(list, key, …)` keys rows by a field that is unique per row; rows without one get an id where they are made
|
|
99
|
+
(a comment's `id`, not its time).
|