@hozu/cli 0.2.0 → 0.3.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/README.md +2 -0
- package/dist/commands/add.d.ts +3 -15
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +198 -245
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/map.d.ts +5 -0
- package/dist/commands/map.d.ts.map +1 -0
- package/dist/commands/map.js +125 -0
- package/dist/commands/map.js.map +1 -0
- package/dist/commands/request.d.ts +4 -1
- package/dist/commands/request.d.ts.map +1 -1
- package/dist/commands/request.js +77 -1
- package/dist/commands/request.js.map +1 -1
- package/dist/commands/scaffold.d.ts +32 -0
- package/dist/commands/scaffold.d.ts.map +1 -0
- package/dist/commands/scaffold.js +533 -0
- package/dist/commands/scaffold.js.map +1 -0
- package/dist/contract.d.ts +85 -0
- package/dist/contract.d.ts.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +17 -1
- package/dist/main.js.map +1 -1
- package/package.json +6 -6
- package/schema/add.schema.json +35 -1
- package/schema/map.schema.json +383 -0
- package/schema/request.schema.json +68 -1
package/README.md
CHANGED
package/dist/commands/add.d.ts
CHANGED
|
@@ -1,18 +1,6 @@
|
|
|
1
1
|
import type { AddOutput } from '../contract.ts';
|
|
2
|
-
export declare function
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
New: string;
|
|
6
|
-
list: string;
|
|
7
|
-
add: string;
|
|
8
|
-
tag: string;
|
|
9
|
-
machine: string;
|
|
10
|
-
View: string;
|
|
11
|
-
feature: string;
|
|
12
|
-
resolvers: string;
|
|
13
|
-
title: string;
|
|
14
|
-
one: string;
|
|
15
|
-
};
|
|
16
|
-
export declare function runAddFeature(cwd: string, config: string | undefined, name: string | undefined, page: string | undefined): Promise<AddOutput>;
|
|
2
|
+
export declare function runAddFeature(cwd: string, config: string | undefined, name: string | undefined, page: string | undefined, parts?: string | undefined): Promise<AddOutput>;
|
|
3
|
+
export declare function declarationsOf(source: string): Record<string, string[]>;
|
|
4
|
+
export declare function textsOf(source: string, file: string): AddOutput['texts'];
|
|
17
5
|
export declare function describeAdd(out: AddOutput): string;
|
|
18
6
|
//# sourceMappingURL=add.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAqD/C,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,KAAK,GAAE,MAAM,GAAG,SAAqB,GACpC,OAAO,CAAC,SAAS,CAAC,CAoMpB;AAYD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CASvE;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAmBxE;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAgBlD"}
|
package/dist/commands/add.js
CHANGED
|
@@ -1,212 +1,9 @@
|
|
|
1
|
+
import { randomBytes } from 'node:crypto';
|
|
1
2
|
import { existsSync } from 'node:fs';
|
|
2
3
|
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
3
4
|
import { dirname, join, relative, resolve } from 'node:path';
|
|
4
5
|
import { HozuCliError } from '../errors.js';
|
|
5
|
-
|
|
6
|
-
export function namesOf(name) {
|
|
7
|
-
const one = name.endsWith('s') && name.length > 1 ? name.slice(0, -1) : name;
|
|
8
|
-
const many = name.endsWith('s') ? name : `${name}s`;
|
|
9
|
-
return {
|
|
10
|
-
id: name,
|
|
11
|
-
Item: cap(one),
|
|
12
|
-
New: `New${cap(one)}`,
|
|
13
|
-
list: `list${cap(many)}`,
|
|
14
|
-
add: `add${cap(one)}`,
|
|
15
|
-
tag: `${name}Tag`,
|
|
16
|
-
machine: `${name}Machine`,
|
|
17
|
-
View: `${cap(name)}Board`,
|
|
18
|
-
feature: name,
|
|
19
|
-
resolvers: `${name}Resolvers`,
|
|
20
|
-
title: cap(name),
|
|
21
|
-
one,
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
const model = (n) => `import { event, invoke, machine, mutation, on, op, query, tag } from '@hozu/core'
|
|
25
|
-
import { z } from 'zod'
|
|
26
|
-
|
|
27
|
-
export const ${n.Item} = z.object({ id: z.string(), title: z.string() })
|
|
28
|
-
export const ${n.New} = z.object({
|
|
29
|
-
title: z.string().min(2, 'Use at least 2 characters').max(80, 'Use at most 80 characters'),
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
export const Draft = event({ payload: z.object({ text: z.string() }) })
|
|
33
|
-
export const Add = event({ payload: z.object({ title: z.string() }) })
|
|
34
|
-
|
|
35
|
-
export const ${n.tag} = tag({ param: null })
|
|
36
|
-
|
|
37
|
-
export const ${n.list} = query({
|
|
38
|
-
input: z.object({}),
|
|
39
|
-
output: z.array(${n.Item}),
|
|
40
|
-
scope: 'public',
|
|
41
|
-
freshness: 'static',
|
|
42
|
-
tags: () => [${n.tag}()],
|
|
43
|
-
})
|
|
44
|
-
|
|
45
|
-
export const ${n.add} = mutation({
|
|
46
|
-
input: ${n.New},
|
|
47
|
-
output: ${n.Item},
|
|
48
|
-
errors: { Duplicate: z.object({ title: z.string() }) },
|
|
49
|
-
invalidates: () => [${n.tag}()],
|
|
50
|
-
})
|
|
51
|
-
|
|
52
|
-
export const DUPLICATE = 'This ${n.one} already exists'
|
|
53
|
-
|
|
54
|
-
export const ${n.machine} = machine({
|
|
55
|
-
context: z.object({
|
|
56
|
-
draft: z.string(),
|
|
57
|
-
error: z.string().nullable(),
|
|
58
|
-
fields: z.object({ title: z.string().nullable() }),
|
|
59
|
-
}),
|
|
60
|
-
initialContext: { draft: '', error: null, fields: { title: null } },
|
|
61
|
-
initial: 'idle',
|
|
62
|
-
states: ({ ctx }) => ({
|
|
63
|
-
idle: {
|
|
64
|
-
on: [
|
|
65
|
-
on(Draft, { target: 'idle', assign: (e) => [op.set(ctx.draft, e.text)] }),
|
|
66
|
-
on(Add, {
|
|
67
|
-
target: 'adding',
|
|
68
|
-
assign: (e) => [
|
|
69
|
-
op.set(ctx.draft, e.title),
|
|
70
|
-
op.set(ctx.error, null),
|
|
71
|
-
op.set(ctx.fields, { title: null }),
|
|
72
|
-
],
|
|
73
|
-
}),
|
|
74
|
-
],
|
|
75
|
-
},
|
|
76
|
-
adding: {
|
|
77
|
-
ignore: [Draft, Add],
|
|
78
|
-
invoke: invoke(${n.add}, {
|
|
79
|
-
input: { title: ctx.draft },
|
|
80
|
-
done: [{ target: 'idle', assign: () => [op.set(ctx.draft, '')] }],
|
|
81
|
-
failed: {
|
|
82
|
-
Duplicate: [{ target: 'idle', assign: () => [op.set(ctx.error, DUPLICATE)] }],
|
|
83
|
-
Invalid: [{ target: 'idle', assign: (e) => [op.set(ctx.fields, e.fields)] }],
|
|
84
|
-
Unexpected: [{ target: 'idle', assign: (e) => [op.set(ctx.error, e.message)] }],
|
|
85
|
-
},
|
|
86
|
-
}),
|
|
87
|
-
},
|
|
88
|
-
}),
|
|
89
|
-
})
|
|
90
|
-
`;
|
|
91
|
-
const views = (n) => `import { contract, feature, op, ui } from '@hozu/core'
|
|
92
|
-
import { Add, ${n.add}, DUPLICATE, Draft, ${n.list}, ${n.machine}, ${n.tag} } from './model.ts'
|
|
93
|
-
|
|
94
|
-
export const ${n.View} = ui.view({
|
|
95
|
-
machine: ${n.machine},
|
|
96
|
-
render: ({ ctx, when }) =>
|
|
97
|
-
ui.main({ class: 'mx-auto max-w-xl space-y-6 px-4 py-12' }, [
|
|
98
|
-
ui.h1({ class: 'text-3xl font-bold' }, ['${n.title}']),
|
|
99
|
-
ui.form({ class: 'flex gap-2', on: { submit: ui.send(Add, { title: ui.dom.form('title') }) } }, [
|
|
100
|
-
ui.label({ for: '${n.id}-title', class: 'sr-only' }, ['Title']),
|
|
101
|
-
ui.input({
|
|
102
|
-
id: '${n.id}-title',
|
|
103
|
-
name: 'title',
|
|
104
|
-
required: true,
|
|
105
|
-
minlength: 2,
|
|
106
|
-
maxlength: 80,
|
|
107
|
-
value: ctx.draft,
|
|
108
|
-
'aria-invalid': op.neq(ctx.fields.title, null),
|
|
109
|
-
'aria-describedby': '${n.id}-title-error',
|
|
110
|
-
class: 'flex-1 rounded border px-3 py-2',
|
|
111
|
-
on: { input: ui.send(Draft, { text: ui.dom.value }) },
|
|
112
|
-
}),
|
|
113
|
-
ui.button({ type: 'submit', class: 'rounded bg-indigo-600 px-4 py-2 text-white' }, ['Add']),
|
|
114
|
-
]),
|
|
115
|
-
ui.p({ id: '${n.id}-title-error', class: 'text-sm text-rose-600' }, [ctx.fields.title]),
|
|
116
|
-
ui.if(op.neq(ctx.error, null), [ui.p({ role: 'alert', class: 'text-rose-600' }, [ctx.error])], []),
|
|
117
|
-
when(['adding'], [ui.p({ class: 'opacity-50', 'aria-busy': 'true' }, ['Adding ', ctx.draft, '…'])]),
|
|
118
|
-
ui.query(
|
|
119
|
-
${n.list},
|
|
120
|
-
{},
|
|
121
|
-
{
|
|
122
|
-
ready: (items) =>
|
|
123
|
-
ui.ul({ class: 'divide-y rounded border' }, [
|
|
124
|
-
ui.each(items, 'id', (item) => ui.li({ class: 'px-4 py-3' }, [item.title])),
|
|
125
|
-
]),
|
|
126
|
-
pending: ui.p({}, ['Loading…']),
|
|
127
|
-
failed: { Unexpected: () => ui.p({ role: 'alert' }, ['Unavailable']) },
|
|
128
|
-
},
|
|
129
|
-
),
|
|
130
|
-
]),
|
|
131
|
-
})
|
|
132
|
-
|
|
133
|
-
export const typesDraft = contract(${n.machine}, {
|
|
134
|
-
given: { state: 'idle' },
|
|
135
|
-
when: [{ send: Draft, payload: { text: 'Ship' } }],
|
|
136
|
-
expect: { state: 'idle', changes: { draft: 'Ship' } },
|
|
137
|
-
})
|
|
138
|
-
|
|
139
|
-
export const adds = contract(${n.machine}, {
|
|
140
|
-
given: { state: 'idle' },
|
|
141
|
-
when: [
|
|
142
|
-
{ send: Add, payload: { title: 'Ship' } },
|
|
143
|
-
{ done: ${n.add}, result: { id: 'x1', title: 'Ship' } },
|
|
144
|
-
],
|
|
145
|
-
expect: { state: 'idle', effects: [{ effect: ${n.add}, input: { title: 'Ship' } }] },
|
|
146
|
-
})
|
|
147
|
-
|
|
148
|
-
export const rejectsDuplicate = contract(${n.machine}, {
|
|
149
|
-
given: { state: 'adding' },
|
|
150
|
-
when: [{ failed: ${n.add}, error: 'Duplicate', data: { title: 'Ship' } }],
|
|
151
|
-
expect: { state: 'idle', changes: { error: DUPLICATE } },
|
|
152
|
-
})
|
|
153
|
-
|
|
154
|
-
export const rejectsInvalid = contract(${n.machine}, {
|
|
155
|
-
given: { state: 'adding' },
|
|
156
|
-
when: [
|
|
157
|
-
{
|
|
158
|
-
failed: ${n.add},
|
|
159
|
-
error: 'Invalid',
|
|
160
|
-
data: { message: 'title: Use at least 2 characters', fields: { title: 'Use at least 2 characters' } },
|
|
161
|
-
},
|
|
162
|
-
],
|
|
163
|
-
expect: { state: 'idle', changes: { fields: { title: 'Use at least 2 characters' } } },
|
|
164
|
-
})
|
|
165
|
-
|
|
166
|
-
export const addFails = contract(${n.machine}, {
|
|
167
|
-
given: { state: 'adding' },
|
|
168
|
-
when: [{ failed: ${n.add}, error: 'Unexpected', data: { message: 'offline' } }],
|
|
169
|
-
expect: { state: 'idle', changes: { error: 'offline' } },
|
|
170
|
-
})
|
|
171
|
-
|
|
172
|
-
export const ${n.feature} = feature({
|
|
173
|
-
id: '${n.id}',
|
|
174
|
-
intent: { summary: '${n.title}: add one with a title; titles are unique, case-insensitive.' },
|
|
175
|
-
declarations: {
|
|
176
|
-
Draft,
|
|
177
|
-
Add,
|
|
178
|
-
${n.tag},
|
|
179
|
-
${n.list},
|
|
180
|
-
${n.add},
|
|
181
|
-
${n.machine},
|
|
182
|
-
${n.View},
|
|
183
|
-
typesDraft,
|
|
184
|
-
adds,
|
|
185
|
-
rejectsDuplicate,
|
|
186
|
-
rejectsInvalid,
|
|
187
|
-
addFails,
|
|
188
|
-
},
|
|
189
|
-
})
|
|
190
|
-
`;
|
|
191
|
-
const server = (n) => `import type { Implement } from '@hozu/data'
|
|
192
|
-
import { ${n.add}, ${n.list} } from './model.ts'
|
|
193
|
-
|
|
194
|
-
export function ${n.resolvers}<Session, Env>(implement: Implement<Session, Env>) {
|
|
195
|
-
const items: { id: string; title: string }[] = []
|
|
196
|
-
let seq = 0
|
|
197
|
-
return [
|
|
198
|
-
implement(${n.list}, () => items.map((item) => ({ ...item }))),
|
|
199
|
-
implement(${n.add}, ({ title }, { fail }) => {
|
|
200
|
-
const clean = title.trim()
|
|
201
|
-
if (items.some((item) => item.title.toLowerCase() === clean.toLowerCase()))
|
|
202
|
-
return fail('Duplicate', { title: clean })
|
|
203
|
-
const item = { id: \`${n.one.charAt(0)}\${++seq}\`, title: clean }
|
|
204
|
-
items.unshift(item)
|
|
205
|
-
return { ...item }
|
|
206
|
-
}),
|
|
207
|
-
]
|
|
208
|
-
}
|
|
209
|
-
`;
|
|
6
|
+
import { accountModel, accountServer, accountViews, model, namesOf, PARTS, server, views, } from './scaffold.js';
|
|
210
7
|
const addImport = (source, line) => {
|
|
211
8
|
const imports = [...source.matchAll(/^import[\s\S]*?from '[^']+'\n/gm)];
|
|
212
9
|
const last = imports.at(-1);
|
|
@@ -215,6 +12,33 @@ const addImport = (source, line) => {
|
|
|
215
12
|
const at = last.index + last[0].length;
|
|
216
13
|
return source.slice(0, at) + line + source.slice(at);
|
|
217
14
|
};
|
|
15
|
+
const callEnd = (source, open) => {
|
|
16
|
+
let depth = 0;
|
|
17
|
+
let quote = null;
|
|
18
|
+
for (let i = open; i < source.length; i++) {
|
|
19
|
+
const c = source[i];
|
|
20
|
+
if (quote) {
|
|
21
|
+
if (c === '\\')
|
|
22
|
+
i++;
|
|
23
|
+
else if (c === quote)
|
|
24
|
+
quote = null;
|
|
25
|
+
}
|
|
26
|
+
else if (c === "'" || c === '"' || c === '`')
|
|
27
|
+
quote = c;
|
|
28
|
+
else if (c === '(')
|
|
29
|
+
depth++;
|
|
30
|
+
else if (c === ')' && --depth === 0)
|
|
31
|
+
return i + 1;
|
|
32
|
+
}
|
|
33
|
+
return -1;
|
|
34
|
+
};
|
|
35
|
+
const replacePage = (source, route, text) => {
|
|
36
|
+
const m = new RegExp(`ui\\.page\\(\\s*${route}\\s*,`).exec(source);
|
|
37
|
+
if (!m)
|
|
38
|
+
return null;
|
|
39
|
+
const end = callEnd(source, m.index + 'ui.page'.length);
|
|
40
|
+
return end < 0 ? null : source.slice(0, m.index) + text + source.slice(end);
|
|
41
|
+
};
|
|
218
42
|
const append = (source, pattern, item) => {
|
|
219
43
|
const m = pattern.exec(source);
|
|
220
44
|
if (!m)
|
|
@@ -223,7 +47,25 @@ const append = (source, pattern, item) => {
|
|
|
223
47
|
const replaced = m[0].replace(m[1], inner ? `${inner}, ${item}` : item);
|
|
224
48
|
return source.slice(0, m.index) + replaced + source.slice(m.index + m[0].length);
|
|
225
49
|
};
|
|
226
|
-
export async function runAddFeature(cwd, config, name, page) {
|
|
50
|
+
export async function runAddFeature(cwd, config, name, page, parts = undefined) {
|
|
51
|
+
const asked = (parts ?? '')
|
|
52
|
+
.split(',')
|
|
53
|
+
.map((p) => p.trim())
|
|
54
|
+
.filter(Boolean);
|
|
55
|
+
for (const p of asked)
|
|
56
|
+
if (!PARTS.includes(p))
|
|
57
|
+
throw new HozuCliError('usage', `Unknown --with part "${p}"`, [`--with ${PARTS.join(',')}`]);
|
|
58
|
+
const w = Object.fromEntries(PARTS.map((p) => [p, asked.includes(p)]));
|
|
59
|
+
if (w.filter)
|
|
60
|
+
w.toggle = true;
|
|
61
|
+
if (w.detail && page === undefined)
|
|
62
|
+
throw new HozuCliError('usage', '--with detail needs --page, so the detail page can link back', [
|
|
63
|
+
`hozu add feature ${name ?? 'tasks'} --page / --with detail`,
|
|
64
|
+
]);
|
|
65
|
+
if (w.auth && page === undefined)
|
|
66
|
+
throw new HozuCliError('usage', '--with auth needs --page, the page that signed-in users land on', [
|
|
67
|
+
`hozu add feature ${name ?? 'notes'} --page / --with auth`,
|
|
68
|
+
]);
|
|
227
69
|
if (!name || !/^[a-z][a-zA-Z0-9]*$/.test(name))
|
|
228
70
|
throw new HozuCliError('usage', 'Give the feature a lower-case identifier', [
|
|
229
71
|
'hozu add feature tasks --page /',
|
|
@@ -238,15 +80,35 @@ export async function runAddFeature(cwd, config, name, page) {
|
|
|
238
80
|
if (existsSync(dir))
|
|
239
81
|
throw new HozuCliError('usage', `features/${name} already exists`, []);
|
|
240
82
|
const n = namesOf(name);
|
|
241
|
-
const out = { created: [], edited: [], manual: [] };
|
|
83
|
+
const out = { created: [], edited: [], manual: [], declarations: {}, texts: [] };
|
|
242
84
|
await mkdir(dir, { recursive: true });
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
85
|
+
const routesPath = join(root, 'routes.ts');
|
|
86
|
+
const routesSource = existsSync(routesPath) ? await readFile(routesPath, 'utf8') : '';
|
|
87
|
+
const existing = page === undefined
|
|
88
|
+
? null
|
|
89
|
+
: new RegExp(`export const (\\w+) = route\\(\\{\\s*path: '${page.replace(/[/-]/g, '\\$&')}'`).exec(routesSource);
|
|
90
|
+
const pageRoute = page === undefined ? null : (existing?.[1] ?? `${name}Page`);
|
|
91
|
+
const newRoute = page !== undefined && !existing;
|
|
92
|
+
const detailPath = page === undefined ? null : page === '/' ? `/${n.many}/:id` : `${page}/:id`;
|
|
93
|
+
const accountDir = join(root, 'features', 'account');
|
|
94
|
+
const newAccount = w.auth && !existsSync(accountDir);
|
|
95
|
+
const newLogin = newAccount && !/export const login = route\(/.test(routesSource);
|
|
96
|
+
const files = [
|
|
97
|
+
[join(dir, 'model.ts'), model(n, w)],
|
|
98
|
+
[join(dir, 'views.ts'), views(n, w, pageRoute)],
|
|
99
|
+
[join(dir, 'server.ts'), server(n, w)],
|
|
100
|
+
...(newAccount && pageRoute && page
|
|
101
|
+
? [
|
|
102
|
+
[join(accountDir, 'model.ts'), accountModel(pageRoute)],
|
|
103
|
+
[join(accountDir, 'views.ts'), accountViews(page)],
|
|
104
|
+
[join(accountDir, 'server.ts'), accountServer()],
|
|
105
|
+
]
|
|
106
|
+
: []),
|
|
107
|
+
];
|
|
108
|
+
for (const [path, text] of files) {
|
|
109
|
+
await mkdir(dirname(path), { recursive: true });
|
|
110
|
+
await writeFile(path, text);
|
|
111
|
+
out.created.push(relative(cwd, path));
|
|
250
112
|
}
|
|
251
113
|
const edit = async (file, change, manual) => {
|
|
252
114
|
const path = join(root, file);
|
|
@@ -261,55 +123,146 @@ export async function runAddFeature(cwd, config, name, page) {
|
|
|
261
123
|
}
|
|
262
124
|
};
|
|
263
125
|
await edit('server.ts', (s) => {
|
|
264
|
-
const wired = s.replace(/resolvers\(project,\s*\((?:implement)?\)\s*=>\s*\[/, `resolvers(project, (implement) => [\n ...${n.resolvers}(implement),`);
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
126
|
+
const wired = s.replace(/resolvers\(project,\s*\((?:implement)?\)\s*=>\s*\[/, `resolvers(project, (implement) => [\n ${newAccount ? '...accountResolvers(implement),\n ' : ''}...${n.resolvers}(implement),`);
|
|
127
|
+
if (wired === s)
|
|
128
|
+
return null;
|
|
129
|
+
const withFeature = addImport(wired, `import { ${n.resolvers} } from './features/${name}/server.ts'\n`);
|
|
130
|
+
return newAccount && withFeature
|
|
131
|
+
? addImport(withFeature, `import { accountResolvers } from './features/account/server.ts'\n`)
|
|
132
|
+
: withFeature;
|
|
268
133
|
}, `import { ${n.resolvers} } from './features/${name}/server.ts' and add ...${n.resolvers}(implement) to resolvers(project, (implement) => [...])`);
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
newRoute
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
134
|
+
if (newAccount)
|
|
135
|
+
await edit('serve.ts', (s) => {
|
|
136
|
+
const next = s.replace(/resolvers: createResolvers\(\),/, `resolvers: createResolvers(),\n session: sessionCookie({\n name: 'sid',\n secret: process.env.SESSION_SECRET ?? '${randomBytes(24).toString('hex')}',\n secure: process.env.SESSION_SECURE === 'true',\n }),`);
|
|
137
|
+
return next === s ? null : addImport(next, `import { sessionCookie } from '@hozu/runtime-server'\n`);
|
|
138
|
+
}, "createServer({ ..., session: sessionCookie({ name: 'sid', secret: process.env.SESSION_SECRET, secure: false }) }) with sessionCookie from '@hozu/runtime-server'");
|
|
139
|
+
const newRoutes = [
|
|
140
|
+
...(newLogin ? [`export const login = route({ path: '/login', params: null, search: null })`] : []),
|
|
141
|
+
...(newRoute
|
|
142
|
+
? [`export const ${pageRoute} = route({ path: '${page}', params: null, search: null })`]
|
|
143
|
+
: []),
|
|
144
|
+
...(w.detail
|
|
145
|
+
? [
|
|
146
|
+
`export const ${n.detailRoute} = route({ path: '${detailPath}', params: z.object({ id: z.string() }), search: null })`,
|
|
147
|
+
]
|
|
148
|
+
: []),
|
|
149
|
+
];
|
|
150
|
+
if (newRoutes.length)
|
|
151
|
+
await edit('routes.ts', (source) => {
|
|
152
|
+
const withZod = w.detail && !/from 'zod'/.test(source) ? addImport(source, `import { z } from 'zod'\n`) : source;
|
|
153
|
+
return withZod === null ? null : `${withZod.trimEnd()}\n${newRoutes.join('\n')}\n`;
|
|
154
|
+
}, newRoutes.join('; '));
|
|
280
155
|
await edit(config ?? 'hozu.config.ts', (s) => {
|
|
281
|
-
let next = addImport(s, `import { ${n.View
|
|
156
|
+
let next = addImport(s, `import { ${[n.View, n.feature, ...(w.detail ? [n.Detail] : [])].sort().join(', ')} } from './features/${name}/views.ts'\n`);
|
|
157
|
+
if (next && w.detail)
|
|
158
|
+
next = addImport(next, `import { ${[n.get, n.list].sort().join(', ')} } from './features/${name}/model.ts'\n`);
|
|
159
|
+
if (next && newAccount) {
|
|
160
|
+
next = addImport(next, `import { me, Session } from './features/account/model.ts'\n`);
|
|
161
|
+
if (next)
|
|
162
|
+
next = addImport(next, `import { AccountBar, account, Login } from './features/account/views.ts'\n`);
|
|
163
|
+
if (next && !/\bsession:/.test(next))
|
|
164
|
+
next = next.replace(/(schema: \w+,\n)/, `$1 session: Session,\n`);
|
|
165
|
+
if (next)
|
|
166
|
+
next = append(next, /features:\s*\[([^\]]*)\]/, 'account');
|
|
167
|
+
}
|
|
282
168
|
if (next)
|
|
283
169
|
next = append(next, /features:\s*\[([^\]]*)\]/, n.feature);
|
|
284
|
-
|
|
285
|
-
|
|
170
|
+
const routeNames = [
|
|
171
|
+
...(newLogin ? ['login'] : []),
|
|
172
|
+
...(newRoute && pageRoute ? [pageRoute] : []),
|
|
173
|
+
...(w.detail ? [n.detailRoute] : []),
|
|
174
|
+
];
|
|
175
|
+
for (const r of routeNames)
|
|
176
|
+
if (next)
|
|
177
|
+
next = append(next, /routes:\s*\{([^}]*)\}/, r);
|
|
178
|
+
if (next && routeNames.length)
|
|
286
179
|
next =
|
|
287
|
-
next
|
|
180
|
+
next.replace(/import \{([^}]*)\} from '\.\/routes\.ts'/, (all, names) => all.replace(names, ` ${[
|
|
288
181
|
...names
|
|
289
182
|
.split(',')
|
|
290
183
|
.map((x) => x.trim())
|
|
291
184
|
.filter(Boolean),
|
|
292
|
-
|
|
185
|
+
...routeNames,
|
|
293
186
|
]
|
|
294
187
|
.sort()
|
|
295
188
|
.join(', ')} `)) ?? null;
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
189
|
+
if (next && w.detail)
|
|
190
|
+
next = next.replace(/pages:\s*\[/, (m) => `${m}\n ui.page(${n.detailRoute}, {\n views: [${n.Detail}],\n head: { query: ${n.get}, input: (params) => ({ id: params.id }), render: (item) => ({ title: item.title }) },\n entries: { query: ${n.list}, input: {}, params: (item) => ({ id: item.id }) },\n }),`);
|
|
191
|
+
if (next && newAccount)
|
|
192
|
+
next = next.replace(/pages:\s*\[/, (m) => `${m}\n ui.page(login, { views: [Login], head: { render: () => ({ title: 'Sign in' }) } }),`);
|
|
193
|
+
if (next && pageRoute) {
|
|
194
|
+
const text = w.auth
|
|
195
|
+
? `ui.page(${pageRoute}, {\n views: [AccountBar, ${n.View}],\n head: {\n query: me,\n input: () => ({}),\n render: () => ({ title: '${n.title}', noindex: true }),\n redirects: { Unauthorized: login },\n },\n })`
|
|
196
|
+
: `ui.page(${pageRoute}, { views: [${n.View}], head: { render: () => ({ title: '${n.title}' }) } })`;
|
|
197
|
+
next = newRoute
|
|
198
|
+
? next.replace(/pages:\s*\[/, (m) => `${m}\n ${text},`)
|
|
199
|
+
: replacePage(next, pageRoute, text);
|
|
302
200
|
}
|
|
303
|
-
return next;
|
|
201
|
+
return next?.replace(/\),\s*ui\.page\(/g, '),\n ui.page(') ?? null;
|
|
304
202
|
}, `import { ${n.View}, ${n.feature} } from './features/${name}/views.ts', add ${n.feature} to features${pageRoute ? ` and ui.page(${pageRoute}, { views: [${n.View}], head: { render: () => ({ title: '${n.title}' }) } }) to pages` : ''}`);
|
|
203
|
+
for (const file of out.created) {
|
|
204
|
+
const source = await readFile(resolve(cwd, file), 'utf8');
|
|
205
|
+
for (const [kind, names] of Object.entries(declarationsOf(source)))
|
|
206
|
+
out.declarations[kind] = [...(out.declarations[kind] ?? []), ...names];
|
|
207
|
+
out.texts.push(...textsOf(source, file));
|
|
208
|
+
}
|
|
305
209
|
return out;
|
|
306
210
|
}
|
|
211
|
+
const KINDS = {
|
|
212
|
+
event: 'events',
|
|
213
|
+
query: 'queries',
|
|
214
|
+
mutation: 'mutations',
|
|
215
|
+
fn: 'fns',
|
|
216
|
+
machine: 'machine',
|
|
217
|
+
'ui.view': 'views',
|
|
218
|
+
contract: 'contracts',
|
|
219
|
+
};
|
|
220
|
+
export function declarationsOf(source) {
|
|
221
|
+
const out = {};
|
|
222
|
+
for (const m of source.matchAll(/^export const (\w+) = (event|query|mutation|fn|machine|ui\.view|contract)\(/gm)) {
|
|
223
|
+
const kind = KINDS[m[2]];
|
|
224
|
+
out[kind] = [...(out[kind] ?? []), m[1]];
|
|
225
|
+
}
|
|
226
|
+
return out;
|
|
227
|
+
}
|
|
228
|
+
export function textsOf(source, file) {
|
|
229
|
+
const texts = [];
|
|
230
|
+
source.split('\n').forEach((line, i) => {
|
|
231
|
+
if (/^\s*((given|when|expect|data|result|input|payload):|\{ (send|done|failed):)/.test(line))
|
|
232
|
+
return;
|
|
233
|
+
const message = /^export const [A-Z_]+ = '([^']+)'$/.exec(line);
|
|
234
|
+
if (message)
|
|
235
|
+
texts.push({ file, line: i + 1, text: message[1] });
|
|
236
|
+
const label = /\blabel: '([^']+)'/.exec(line);
|
|
237
|
+
if (label)
|
|
238
|
+
texts.push({ file, line: i + 1, text: label[1] });
|
|
239
|
+
if (file.endsWith('model.ts'))
|
|
240
|
+
return;
|
|
241
|
+
const scan = line.replace(/when\(\[[^\]]*\]/g, '');
|
|
242
|
+
const found = new Set();
|
|
243
|
+
for (const lead of scan.matchAll(/\[\s*'([^']*)'\s*,/g))
|
|
244
|
+
found.add(lead[1]);
|
|
245
|
+
for (const group of scan.matchAll(/\[([^[\]]*)\]/g))
|
|
246
|
+
for (const lit of group[1].matchAll(/'([^']*)'/g))
|
|
247
|
+
if ((/[A-Za-z…]/.test(lit[1]) && !/^[a-z]+$/.test(lit[1])) || /^(done|open)$/.test(lit[1]))
|
|
248
|
+
found.add(lit[1]);
|
|
249
|
+
for (const text of found)
|
|
250
|
+
if (/[A-Za-z…]/.test(text))
|
|
251
|
+
texts.push({ file, line: i + 1, text });
|
|
252
|
+
});
|
|
253
|
+
return texts;
|
|
254
|
+
}
|
|
307
255
|
export function describeAdd(out) {
|
|
308
256
|
const lines = [
|
|
309
|
-
...out.created.map((f) => `created
|
|
310
|
-
...out.edited.map((f) => `edited
|
|
311
|
-
...out.manual.map((m) => `todo
|
|
312
|
-
'
|
|
257
|
+
...out.created.map((f) => `created ${f}`),
|
|
258
|
+
...out.edited.map((f) => `edited ${f}`),
|
|
259
|
+
...out.manual.map((m) => `todo ${m}`),
|
|
260
|
+
...Object.entries(out.declarations).map(([k, names]) => `${k.padEnd(10)}${names.join(' ')}`),
|
|
261
|
+
...[...new Map(out.texts.map((t) => [`${t.file}:${t.line}`, []])).keys()].map((at) => `text ${at} ${out.texts
|
|
262
|
+
.filter((t) => `${t.file}:${t.line}` === at)
|
|
263
|
+
.map((t) => JSON.stringify(t.text))
|
|
264
|
+
.join(' ')}`),
|
|
265
|
+
'next edit the texts above to the spec (no need to print the files; hozu map shows the structure), then hozu check',
|
|
313
266
|
];
|
|
314
267
|
return `${lines.join('\n')}\n`;
|
|
315
268
|
}
|
package/dist/commands/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/commands/map.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAc,SAAS,EAAY,MAAM,gBAAgB,CAAA;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAYxC,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAmF7D;AAID,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAyClD"}
|