@hozu/cli 0.10.0 → 0.12.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/dist/commands/add-widget.d.ts.map +1 -1
- package/dist/commands/add-widget.js +5 -4
- package/dist/commands/add-widget.js.map +1 -1
- package/dist/commands/app.d.ts.map +1 -1
- package/dist/commands/app.js +10 -0
- package/dist/commands/app.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +5 -1
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/call.d.ts +16 -0
- package/dist/commands/call.d.ts.map +1 -0
- package/dist/commands/call.js +100 -0
- package/dist/commands/call.js.map +1 -0
- package/dist/commands/check.d.ts +10 -1
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +43 -28
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/explain.d.ts.map +1 -1
- package/dist/commands/explain.js +2 -1
- package/dist/commands/explain.js.map +1 -1
- package/dist/commands/impact.js +1 -1
- package/dist/commands/impact.js.map +1 -1
- package/dist/commands/inspect.d.ts.map +1 -1
- package/dist/commands/inspect.js +9 -0
- package/dist/commands/inspect.js.map +1 -1
- package/dist/commands/map.d.ts.map +1 -1
- package/dist/commands/map.js +7 -2
- package/dist/commands/map.js.map +1 -1
- package/dist/commands/migrate.d.ts +17 -16
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +205 -297
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/scaffold.d.ts.map +1 -1
- package/dist/commands/scaffold.js +8 -4
- package/dist/commands/scaffold.js.map +1 -1
- package/dist/contract.d.ts +84 -1
- package/dist/contract.d.ts.map +1 -1
- package/dist/load.d.ts +2 -1
- package/dist/load.d.ts.map +1 -1
- package/dist/load.js +5 -4
- package/dist/load.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +33 -5
- package/dist/main.js.map +1 -1
- package/dist/migrate/ast.d.ts +31 -0
- package/dist/migrate/ast.d.ts.map +1 -0
- package/dist/migrate/ast.js +61 -0
- package/dist/migrate/ast.js.map +1 -0
- package/dist/migrate/record-ir.d.ts +2 -0
- package/dist/migrate/record-ir.d.ts.map +1 -0
- package/dist/migrate/record-ir.js +16 -0
- package/dist/migrate/record-ir.js.map +1 -0
- package/dist/migrate/step-0.11.d.ts +15 -0
- package/dist/migrate/step-0.11.d.ts.map +1 -0
- package/dist/migrate/step-0.11.js +88 -0
- package/dist/migrate/step-0.11.js.map +1 -0
- package/dist/migrate/step-0.12.d.ts +6 -0
- package/dist/migrate/step-0.12.d.ts.map +1 -0
- package/dist/migrate/step-0.12.js +14 -0
- package/dist/migrate/step-0.12.js.map +1 -0
- package/dist/migrate/steps.d.ts +28 -0
- package/dist/migrate/steps.d.ts.map +1 -0
- package/dist/migrate/steps.js +42 -0
- package/dist/migrate/steps.js.map +1 -0
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +2 -0
- package/dist/output.js.map +1 -1
- package/package.json +8 -8
- package/schema/call.schema.json +136 -0
- package/schema/check.schema.json +26 -2
- package/schema/explain.schema.json +14 -1
- package/schema/impact.schema.json +22 -1
- package/schema/inspect.schema.json +75 -4
- package/schema/map.schema.json +17 -0
- package/schema/migrate.schema.json +740 -0
- package/schema/plan.schema.json +4 -2
- package/schema/render.schema.json +3 -1
- package/schema/validate.schema.json +3 -1
- package/dist/commands/migrate-agent.d.ts +0 -12
- package/dist/commands/migrate-agent.d.ts.map +0 -1
- package/dist/commands/migrate-agent.js +0 -6
- package/dist/commands/migrate-agent.js.map +0 -1
- package/dist/commands/migrate-app.d.ts +0 -15
- package/dist/commands/migrate-app.d.ts.map +0 -1
- package/dist/commands/migrate-app.js +0 -334
- package/dist/commands/migrate-app.js.map +0 -1
- package/dist/commands/migrate-ast.d.ts +0 -63
- package/dist/commands/migrate-ast.d.ts.map +0 -1
- package/dist/commands/migrate-ast.js +0 -257
- package/dist/commands/migrate-ast.js.map +0 -1
- package/dist/commands/migrate-forms.d.ts +0 -4
- package/dist/commands/migrate-forms.d.ts.map +0 -1
- package/dist/commands/migrate-forms.js +0 -120
- package/dist/commands/migrate-forms.js.map +0 -1
- package/dist/commands/migrate-freshness.d.ts +0 -4
- package/dist/commands/migrate-freshness.d.ts.map +0 -1
- package/dist/commands/migrate-freshness.js +0 -47
- package/dist/commands/migrate-freshness.js.map +0 -1
- package/dist/commands/migrate-head.d.ts +0 -8
- package/dist/commands/migrate-head.d.ts.map +0 -1
- package/dist/commands/migrate-head.js +0 -132
- package/dist/commands/migrate-head.js.map +0 -1
- package/dist/commands/migrate-links.d.ts +0 -5
- package/dist/commands/migrate-links.d.ts.map +0 -1
- package/dist/commands/migrate-links.js +0 -55
- package/dist/commands/migrate-links.js.map +0 -1
- package/dist/commands/migrate-lists.d.ts +0 -9
- package/dist/commands/migrate-lists.d.ts.map +0 -1
- package/dist/commands/migrate-lists.js +0 -225
- package/dist/commands/migrate-lists.js.map +0 -1
- package/dist/commands/migrate-normalize.d.ts +0 -27
- package/dist/commands/migrate-normalize.d.ts.map +0 -1
- package/dist/commands/migrate-normalize.js +0 -252
- package/dist/commands/migrate-normalize.js.map +0 -1
- package/dist/commands/migrate-ops.d.ts +0 -4
- package/dist/commands/migrate-ops.d.ts.map +0 -1
- package/dist/commands/migrate-ops.js +0 -192
- package/dist/commands/migrate-ops.js.map +0 -1
- package/dist/commands/migrate-parts.d.ts +0 -7
- package/dist/commands/migrate-parts.d.ts.map +0 -1
- package/dist/commands/migrate-parts.js +0 -166
- package/dist/commands/migrate-parts.js.map +0 -1
- package/dist/commands/migrate-stale.d.ts +0 -24
- package/dist/commands/migrate-stale.d.ts.map +0 -1
- package/dist/commands/migrate-stale.js +0 -114
- package/dist/commands/migrate-stale.js.map +0 -1
package/schema/plan.schema.json
CHANGED
|
@@ -140,8 +140,10 @@
|
|
|
140
140
|
"static",
|
|
141
141
|
"isr",
|
|
142
142
|
"swr",
|
|
143
|
-
"request"
|
|
144
|
-
|
|
143
|
+
"request",
|
|
144
|
+
"browser"
|
|
145
|
+
],
|
|
146
|
+
"description": "`browser`: read in the browser after hydration (ADR 0049); the server renders `pending` and never sees the data."
|
|
145
147
|
},
|
|
146
148
|
"NodePlan": {
|
|
147
149
|
"type": "object",
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export type { BlockResult } from 'create-hozu';
|
|
2
|
-
export { BEGIN, currentGuide, END, GUIDE_07, migrateGuide, TARGETS } from 'create-hozu';
|
|
3
|
-
export declare const skillTargets: (dir: string) => ({
|
|
4
|
-
readonly guide: 'CLAUDE.md';
|
|
5
|
-
readonly skill: '.claude/skills/hozu';
|
|
6
|
-
readonly read: 'Use the `hozu` skill (`__SKILL__/SKILL.md`).';
|
|
7
|
-
} | {
|
|
8
|
-
readonly guide: 'AGENTS.md';
|
|
9
|
-
readonly skill: '.agents/skills/hozu';
|
|
10
|
-
readonly read: 'Read `__SKILL__/SKILL.md` before writing or changing any Hozu code.';
|
|
11
|
-
})[];
|
|
12
|
-
//# sourceMappingURL=migrate-agent.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-agent.d.ts","sourceRoot":"","sources":["../../src/commands/migrate-agent.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAEvF,eAAO,MAAM,YAAY,QAAS,MAAM;;;;;;;;IAA0D,CAAA"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { existsSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { TARGETS } from 'create-hozu';
|
|
4
|
-
export { BEGIN, currentGuide, END, GUIDE_07, migrateGuide, TARGETS } from 'create-hozu';
|
|
5
|
-
export const skillTargets = (dir) => TARGETS.filter((t) => existsSync(join(dir, t.skill)));
|
|
6
|
-
//# sourceMappingURL=migrate-agent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-agent.js","sourceRoot":"","sources":["../../src/commands/migrate-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAGrC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAEvF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { type Note } from './migrate-ast.ts';
|
|
2
|
-
export interface AppRewrite {
|
|
3
|
-
entry: string | null;
|
|
4
|
-
write: Map<string, string>;
|
|
5
|
-
remove: string[];
|
|
6
|
-
notes: Note[];
|
|
7
|
-
}
|
|
8
|
-
/** `serve.ts` + `createResolvers()` → the app module and `project({ app })` (ADR 0043 E). */
|
|
9
|
-
export declare function migrateApp(dir: string, config: string, files: Map<string, string>): AppRewrite;
|
|
10
|
-
/** `scripts.start` → `hozu serve`, entry scripts → `hozu serve` / `hozu-dev`, plus `@hozu/runtime-server`. */
|
|
11
|
-
export declare function migratePackage(source: string, entry: string | null): {
|
|
12
|
-
code: string;
|
|
13
|
-
notes: Note[];
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=migrate-app.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-app.d.ts","sourceRoot":"","sources":["../../src/commands/migrate-app.ts"],"names":[],"mappings":"AAEA,OAAO,EAaL,KAAK,IAAI,EAKV,MAAM,kBAAkB,CAAA;AAGzB,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,EAAE,IAAI,EAAE,CAAA;CACd;AAgED,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,UAAU,CAuP9F;AAED,8GAA8G;AAC9G,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CA0CpG"}
|
|
@@ -1,334 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
-
import { basename, dirname, join, relative, resolve } from 'node:path';
|
|
3
|
-
import { addImport, apply, callOf, importItems, importsFrom, importText, insertImport, keyName, lineOf, localOf, parse, property, styleOf, walk, } from './migrate-ast.js';
|
|
4
|
-
import { insertProperty } from './migrate-head.js';
|
|
5
|
-
const DERIVED = new Set([
|
|
6
|
-
'build',
|
|
7
|
-
'styles',
|
|
8
|
-
'images',
|
|
9
|
-
'env',
|
|
10
|
-
'readFile',
|
|
11
|
-
'publicDir',
|
|
12
|
-
'manifest',
|
|
13
|
-
'render',
|
|
14
|
-
'port',
|
|
15
|
-
]);
|
|
16
|
-
const RESOLVERS = 'createResolvers';
|
|
17
|
-
const rel = (dir, file) => {
|
|
18
|
-
const r = relative(dir, file);
|
|
19
|
-
return r.startsWith('.') ? r : `./${r}`;
|
|
20
|
-
};
|
|
21
|
-
function freeNames(n) {
|
|
22
|
-
const out = new Set();
|
|
23
|
-
walk(n, (x, p) => {
|
|
24
|
-
if (x.type !== 'Identifier')
|
|
25
|
-
return;
|
|
26
|
-
if (p?.type === 'MemberExpression' && p.property === x && !p.computed)
|
|
27
|
-
return;
|
|
28
|
-
if (p?.type === 'Property' && p.key === x && !p.computed && !p.shorthand)
|
|
29
|
-
return;
|
|
30
|
-
out.add(x.name);
|
|
31
|
-
});
|
|
32
|
-
return out;
|
|
33
|
-
}
|
|
34
|
-
function topLevel(program) {
|
|
35
|
-
const out = new Map();
|
|
36
|
-
for (const s of program.body) {
|
|
37
|
-
const d = s.type === 'ExportNamedDeclaration' ? s.declaration : s;
|
|
38
|
-
if (d?.type === 'VariableDeclaration')
|
|
39
|
-
for (const v of d.declarations)
|
|
40
|
-
walk(v.id, (x) => x.type === 'Identifier' && out.set(x.name, s));
|
|
41
|
-
else if ((d?.type === 'FunctionDeclaration' || d?.type === 'ClassDeclaration') && d.id)
|
|
42
|
-
out.set(d.id.name, s);
|
|
43
|
-
else if (s.type === 'ImportDeclaration')
|
|
44
|
-
for (const x of s.specifiers)
|
|
45
|
-
out.set(x.local.name, s);
|
|
46
|
-
}
|
|
47
|
-
return out;
|
|
48
|
-
}
|
|
49
|
-
const resolversCall = (n) => callOf(n, null, RESOLVERS) && n.arguments.length === 0;
|
|
50
|
-
/** The object literal that holds `resolvers: createResolvers()`. */
|
|
51
|
-
function optionsOf(program) {
|
|
52
|
-
let found = null;
|
|
53
|
-
walk(program, (n) => {
|
|
54
|
-
if (!found && n.type === 'ObjectExpression' && resolversCall(property(n, 'resolvers')?.value))
|
|
55
|
-
found = n;
|
|
56
|
-
});
|
|
57
|
-
return found;
|
|
58
|
-
}
|
|
59
|
-
function entryOf(dir, pkg) {
|
|
60
|
-
for (const key of ['start', 'serve', 'dev']) {
|
|
61
|
-
const script = pkg.scripts?.[key];
|
|
62
|
-
const file = typeof script === 'string' ? /([\w./-]+\.ts)\b/.exec(script)?.[1] : null;
|
|
63
|
-
if (file && existsSync(join(dir, file)))
|
|
64
|
-
return join(dir, file);
|
|
65
|
-
}
|
|
66
|
-
return null;
|
|
67
|
-
}
|
|
68
|
-
/** `serve.ts` + `createResolvers()` → the app module and `project({ app })` (ADR 0043 E). */
|
|
69
|
-
export function migrateApp(dir, config, files) {
|
|
70
|
-
const out = { entry: null, write: new Map(), remove: [], notes: [] };
|
|
71
|
-
const note = (file, line, message, see = 'deploy', behaviour = false) => out.notes.push({ file, line, rule: 'app', message, see, behaviour });
|
|
72
|
-
const users = [...files].filter(([, s]) => /\bcreateResolvers\b/.test(s));
|
|
73
|
-
if (!users.length)
|
|
74
|
-
return out;
|
|
75
|
-
const pkgPath = join(dir, 'package.json');
|
|
76
|
-
const pkg = existsSync(pkgPath) ? JSON.parse(readFileSync(pkgPath, 'utf8')) : {};
|
|
77
|
-
const entry = entryOf(dir, pkg);
|
|
78
|
-
out.entry = entry;
|
|
79
|
-
let defining = null;
|
|
80
|
-
for (const [file, source] of users) {
|
|
81
|
-
const program = parse(source);
|
|
82
|
-
for (const s of program.body) {
|
|
83
|
-
const d = s.type === 'ExportNamedDeclaration' ? s.declaration : null;
|
|
84
|
-
if (d?.type === 'FunctionDeclaration' && d.id?.name === RESOLVERS)
|
|
85
|
-
defining = { file, program, stmt: s, fn: d };
|
|
86
|
-
if (d?.type === 'VariableDeclaration')
|
|
87
|
-
for (const v of d.declarations)
|
|
88
|
-
if (v.id.name === RESOLVERS && v.init && /Function/.test(v.init.type))
|
|
89
|
-
defining = { file, program, stmt: s, fn: v.init };
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
if (!defining)
|
|
93
|
-
return out;
|
|
94
|
-
const target = join(dirname(defining.file), 'app.ts');
|
|
95
|
-
const appSource = files.get(target) ?? (existsSync(target) ? readFileSync(target, 'utf8') : null);
|
|
96
|
-
if (appSource !== null && appSource !== undefined) {
|
|
97
|
-
note(target, 1, `${rel(dir, target)} exists: move createResolvers() into it by hand (export default app({ resolvers }))`);
|
|
98
|
-
return out;
|
|
99
|
-
}
|
|
100
|
-
if (defining.fn.params.length) {
|
|
101
|
-
note(defining.file, lineOf(files.get(defining.file), defining.fn.start), 'createResolvers() takes parameters: make the app module by hand (export default app({ resolvers }))');
|
|
102
|
-
return out;
|
|
103
|
-
}
|
|
104
|
-
const source = files.get(defining.file);
|
|
105
|
-
const body = defining.fn.body;
|
|
106
|
-
const statements = body.type === 'BlockStatement' ? body.body : [{ type: 'ReturnStatement', argument: body }];
|
|
107
|
-
const ret = statements[statements.length - 1];
|
|
108
|
-
if (ret?.type !== 'ReturnStatement' || !ret.argument) {
|
|
109
|
-
note(defining.file, lineOf(source, defining.fn.start), 'createResolvers() does not end in a return: make the app module by hand');
|
|
110
|
-
return out;
|
|
111
|
-
}
|
|
112
|
-
const setup = statements
|
|
113
|
-
.slice(0, -1)
|
|
114
|
-
.map((s) => source.slice(s.start, s.end).replace(/\n {2}/g, '\n'));
|
|
115
|
-
const resolversText = source.slice(ret.argument.start, ret.argument.end).replace(/\n {2}/g, '\n');
|
|
116
|
-
const serves = (f) => {
|
|
117
|
-
const t = files.get(f);
|
|
118
|
-
return !!t && /from '@hozu\/adapter-node'/.test(t) && optionsOf(parse(t)) !== null;
|
|
119
|
-
};
|
|
120
|
-
const hostFile = entry && files.get(entry) && optionsOf(parse(files.get(entry)))
|
|
121
|
-
? entry
|
|
122
|
-
: (users.find(([f]) => f !== defining.file && serves(f))?.[0] ?? null);
|
|
123
|
-
if (!out.entry && hostFile)
|
|
124
|
-
out.entry = hostFile;
|
|
125
|
-
const host = hostFile
|
|
126
|
-
? hostFile
|
|
127
|
-
: (users.find(([f, s]) => f !== defining.file && optionsOf(parse(s)))?.[0] ?? null);
|
|
128
|
-
const carried = [];
|
|
129
|
-
const named = new Map();
|
|
130
|
-
const defaults = [];
|
|
131
|
-
const options = [` resolvers: ${resolversText.replace(/\n/g, '\n ')},`];
|
|
132
|
-
const appImports = source.slice(0, defining.stmt.start);
|
|
133
|
-
let wrapper = false;
|
|
134
|
-
if (host) {
|
|
135
|
-
const hs = files.get(host);
|
|
136
|
-
const hp = parse(hs);
|
|
137
|
-
const obj = optionsOf(hp);
|
|
138
|
-
const decls = topLevel(hp);
|
|
139
|
-
const need = new Set();
|
|
140
|
-
for (const p of obj.properties) {
|
|
141
|
-
const k = keyName(p);
|
|
142
|
-
if (!k || k === 'resolvers' || DERIVED.has(k))
|
|
143
|
-
continue;
|
|
144
|
-
if (k === 'widgets') {
|
|
145
|
-
options.push(' widgets: bundleWidgets,');
|
|
146
|
-
need.add('bundleWidgets');
|
|
147
|
-
continue;
|
|
148
|
-
}
|
|
149
|
-
const cookie = importsFrom(hp, '@hozu/runtime-server').get('sessionCookie') ?? '';
|
|
150
|
-
const stateless = (v) => callOf(v, null, cookie) ||
|
|
151
|
-
(v.type === 'Identifier' &&
|
|
152
|
-
decls.get(v.name)?.type === 'VariableDeclaration' &&
|
|
153
|
-
decls
|
|
154
|
-
.get(v.name)
|
|
155
|
-
.declarations.some((d) => d.id.name === v.name && callOf(d.init, null, cookie)));
|
|
156
|
-
if (k === 'session' && stateless(p.value)) {
|
|
157
|
-
note(host, lineOf(hs, p.start), 'sessionCookie(...) dropped: sessions are a server-side store (memorySessions) by default; set SESSION_SECRET in production, and everyone signs in once more after the upgrade', 'deploy', true);
|
|
158
|
-
continue;
|
|
159
|
-
}
|
|
160
|
-
options.push(` ${hs.slice(p.start, p.end).replace(/\n/g, '\n ')},`);
|
|
161
|
-
for (const n of freeNames(p.value))
|
|
162
|
-
need.add(n);
|
|
163
|
-
}
|
|
164
|
-
const seen = new Set();
|
|
165
|
-
const visit = (name) => {
|
|
166
|
-
const s = decls.get(name);
|
|
167
|
-
if (!s || seen.has(s))
|
|
168
|
-
return;
|
|
169
|
-
seen.add(s);
|
|
170
|
-
if (s.type === 'ImportDeclaration') {
|
|
171
|
-
const x = s.specifiers.find((y) => y.local.name === name);
|
|
172
|
-
const from = String(s.source.value).startsWith('.')
|
|
173
|
-
? rel(dirname(target), resolve(dirname(host), s.source.value))
|
|
174
|
-
: s.source.value;
|
|
175
|
-
if (x.type === 'ImportSpecifier')
|
|
176
|
-
named.set(from, [...(named.get(from) ?? []), hs.slice(x.start, x.end)]);
|
|
177
|
-
else
|
|
178
|
-
defaults.push({
|
|
179
|
-
from,
|
|
180
|
-
text: `import ${hs.slice(x.start, x.end)} from ${styleOf(hs).quote}${from}${styleOf(hs).quote}${styleOf(hs).semi}`,
|
|
181
|
-
});
|
|
182
|
-
return;
|
|
183
|
-
}
|
|
184
|
-
for (const n of freeNames(s))
|
|
185
|
-
if (n !== name)
|
|
186
|
-
visit(n);
|
|
187
|
-
carried.push(hs.slice(s.start, s.end));
|
|
188
|
-
};
|
|
189
|
-
for (const n of need)
|
|
190
|
-
visit(n);
|
|
191
|
-
if (host === hostFile) {
|
|
192
|
-
const known = (s) => {
|
|
193
|
-
if (s.type === 'ImportDeclaration' || seen.has(s))
|
|
194
|
-
return true;
|
|
195
|
-
const text = hs.slice(s.start, s.end);
|
|
196
|
-
if (/^const (port|build|widgets)\b/.test(text))
|
|
197
|
-
return true;
|
|
198
|
-
if (/^for \(const \w+ of widgets\.diagnostics\)/.test(text))
|
|
199
|
-
return true;
|
|
200
|
-
let holds = false;
|
|
201
|
-
walk(s, (x) => {
|
|
202
|
-
if (x === obj)
|
|
203
|
-
holds = true;
|
|
204
|
-
});
|
|
205
|
-
return holds && /\.listen\(/.test(text) && !/writeHead|setHeader|\.on\(|res\.|req\./.test(text);
|
|
206
|
-
};
|
|
207
|
-
const unknown = hp.body.filter((s) => !known(s));
|
|
208
|
-
for (const s of unknown) {
|
|
209
|
-
wrapper = true;
|
|
210
|
-
note(host, lineOf(hs, s.start), `${basename(host)} wraps the server: ${hs.slice(s.start, s.end).split('\n')[0].slice(0, 80)} — there is no wrapper position in 0.8: headers go through project({ http }), statuses through head.failed / endpoint failed, lang through site.locales`, 'deploy', true);
|
|
211
|
-
}
|
|
212
|
-
if (!wrapper)
|
|
213
|
-
out.remove.push(host);
|
|
214
|
-
else
|
|
215
|
-
note(host, 1, `${basename(host)} is kept for you to move by hand; npm start now runs hozu serve`, 'deploy', true);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
const edits = [];
|
|
219
|
-
const header = parse(appImports);
|
|
220
|
-
if (options.some((o) => o.startsWith(' widgets: bundleWidgets')))
|
|
221
|
-
named.set('@hozu/bundle', ['bundleWidgets']);
|
|
222
|
-
named.set('@hozu/runtime-server', [...(named.get('@hozu/runtime-server') ?? []), 'app']);
|
|
223
|
-
const style = styleOf(source);
|
|
224
|
-
for (const [from, names] of [...named].sort(([a], [b]) => a.localeCompare(b))) {
|
|
225
|
-
const held = header.body.some((x) => x.type === 'ImportDeclaration' && x.source.value === from);
|
|
226
|
-
const e = held
|
|
227
|
-
? addImport(appImports, header, from, names)
|
|
228
|
-
: insertImport(appImports, header, from, importText(names, from, style));
|
|
229
|
-
if (e)
|
|
230
|
-
edits.push(e);
|
|
231
|
-
}
|
|
232
|
-
for (const d of defaults)
|
|
233
|
-
edits.push(insertImport(appImports, header, d.from, d.text));
|
|
234
|
-
const imports = apply(appImports, edits).trimEnd();
|
|
235
|
-
const tail = source.slice(defining.stmt.end).trim();
|
|
236
|
-
const code = `${[imports, '', ...carried, ...setup].join('\n').replace(/\n{3,}/g, '\n\n')}\n\nexport default app({\n${options.join('\n')}\n})${tail ? `\n\n${tail}` : ''}\n`;
|
|
237
|
-
out.write.set(target, code);
|
|
238
|
-
out.remove.push(defining.file);
|
|
239
|
-
note(target, 1, `${rel(dir, defining.file)} and ${host ? rel(dir, host) : 'createResolvers()'} → ${rel(dir, target)} (export default app({ resolvers${options.length > 1 ? ', …' : ''} }))`);
|
|
240
|
-
for (const [file, s] of users) {
|
|
241
|
-
if (file === defining.file || (file === host && out.remove.includes(host)))
|
|
242
|
-
continue;
|
|
243
|
-
const program = parse(s);
|
|
244
|
-
const imp = program.body.find((x) => x.type === 'ImportDeclaration' && x.specifiers.some((y) => y.local.name === RESOLVERS));
|
|
245
|
-
if (!imp)
|
|
246
|
-
continue;
|
|
247
|
-
const e = [];
|
|
248
|
-
const taken = new Set();
|
|
249
|
-
walk(program, (n) => n.type === 'Identifier' && taken.add(n.name));
|
|
250
|
-
const local = taken.has('app') ? 'hozuApp' : 'app';
|
|
251
|
-
const kept = importItems(s, imp).filter((x) => localOf(x) !== RESOLVERS);
|
|
252
|
-
const { quote, semi } = styleOf(s);
|
|
253
|
-
const appImport = `import ${local} from ${quote}${rel(dirname(file), target)}${quote}${semi}`;
|
|
254
|
-
e.push([
|
|
255
|
-
imp.start,
|
|
256
|
-
imp.end,
|
|
257
|
-
kept.length
|
|
258
|
-
? `${appImport}\n${importText(kept, imp.source.value, styleOf(s), s.slice(imp.start, imp.end).includes('\n'))}`
|
|
259
|
-
: appImport,
|
|
260
|
-
]);
|
|
261
|
-
walk(program, (n) => {
|
|
262
|
-
if (resolversCall(n))
|
|
263
|
-
e.push([n.start, n.end, `appOptionsOf(${local})!.resolvers`]);
|
|
264
|
-
});
|
|
265
|
-
const aux = addImport(s, program, '@hozu/runtime-server', ['appOptionsOf']);
|
|
266
|
-
if (aux)
|
|
267
|
-
e.push(aux);
|
|
268
|
-
out.write.set(file, apply(s, e));
|
|
269
|
-
note(file, lineOf(s, imp.start), 'createResolvers() → appOptionsOf(app)!.resolvers from the app module', 'testing');
|
|
270
|
-
}
|
|
271
|
-
const cfg = files.get(config);
|
|
272
|
-
if (cfg && !/\bapp\s*:\s*new URL\(/.test(cfg)) {
|
|
273
|
-
const program = parse(cfg);
|
|
274
|
-
let call = null;
|
|
275
|
-
walk(program, (n) => {
|
|
276
|
-
if (!call && callOf(n, null, importsFrom(program, '@hozu/core').get('project') ?? 'project'))
|
|
277
|
-
call = n;
|
|
278
|
-
});
|
|
279
|
-
const opts = call?.arguments[0];
|
|
280
|
-
if (opts?.type === 'ObjectExpression')
|
|
281
|
-
out.write.set(config, apply(cfg, [
|
|
282
|
-
insertProperty(cfg, opts, `app: new URL('${rel(dirname(config), target)}', import.meta.url)`),
|
|
283
|
-
]));
|
|
284
|
-
else
|
|
285
|
-
note(config, 1, "add app: new URL('./app.ts', import.meta.url) to project({ … })");
|
|
286
|
-
}
|
|
287
|
-
return out;
|
|
288
|
-
}
|
|
289
|
-
/** `scripts.start` → `hozu serve`, entry scripts → `hozu serve` / `hozu-dev`, plus `@hozu/runtime-server`. */
|
|
290
|
-
export function migratePackage(source, entry) {
|
|
291
|
-
const pkg = JSON.parse(source);
|
|
292
|
-
const notes = [];
|
|
293
|
-
const file = 'package.json';
|
|
294
|
-
const scripts = pkg.scripts ?? {};
|
|
295
|
-
const name = entry ? basename(entry).replace(/[.*+?^${}()|[\]\\]/g, '\\$&') : null;
|
|
296
|
-
for (const [k, v] of Object.entries(scripts)) {
|
|
297
|
-
if (!name)
|
|
298
|
-
break;
|
|
299
|
-
const next = v
|
|
300
|
-
.replace(new RegExp(`^node (--import @hozu/transform/register )?(\\./)?${name}$`), 'hozu serve')
|
|
301
|
-
.replace(new RegExp(`^hozu-dev (\\./)?${name}$`), 'hozu-dev');
|
|
302
|
-
if (next !== v) {
|
|
303
|
-
scripts[k] = next;
|
|
304
|
-
notes.push({ file, line: 1, rule: 'package', message: `scripts.${k}: ${v} → ${next}`, see: 'deploy' });
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
if (scripts.start !== 'hozu serve') {
|
|
308
|
-
notes.push({
|
|
309
|
-
file,
|
|
310
|
-
line: 1,
|
|
311
|
-
rule: 'package',
|
|
312
|
-
message: `scripts.start: ${scripts.start ?? '(none)'} → hozu serve`,
|
|
313
|
-
see: 'deploy',
|
|
314
|
-
});
|
|
315
|
-
scripts.start = 'hozu serve';
|
|
316
|
-
}
|
|
317
|
-
pkg.scripts = scripts;
|
|
318
|
-
const deps = pkg.dependencies ?? {};
|
|
319
|
-
if (!deps['@hozu/runtime-server'] && deps['@hozu/core']) {
|
|
320
|
-
deps['@hozu/runtime-server'] = deps['@hozu/core'].replace('hozu-core-', 'hozu-runtime-server-');
|
|
321
|
-
pkg.dependencies = Object.fromEntries(Object.entries(deps).sort(([a], [b]) => a.localeCompare(b)));
|
|
322
|
-
notes.push({
|
|
323
|
-
file,
|
|
324
|
-
line: 1,
|
|
325
|
-
rule: 'package',
|
|
326
|
-
message: 'dependencies: + @hozu/runtime-server (app())',
|
|
327
|
-
see: 'deploy',
|
|
328
|
-
});
|
|
329
|
-
}
|
|
330
|
-
const indent = /^\{\n(\s+)"/.exec(source)?.[1] ?? ' ';
|
|
331
|
-
const code = `${JSON.stringify(pkg, null, indent)}\n`;
|
|
332
|
-
return { code: code === source ? source : code, notes };
|
|
333
|
-
}
|
|
334
|
-
//# sourceMappingURL=migrate-app.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-app.js","sourceRoot":"","sources":["../../src/commands/migrate-app.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import type { MigrateNote } from '../contract.ts';
|
|
2
|
-
export type Node = {
|
|
3
|
-
type: string;
|
|
4
|
-
start: number;
|
|
5
|
-
end: number;
|
|
6
|
-
[key: string]: any;
|
|
7
|
-
};
|
|
8
|
-
export type Note = MigrateNote;
|
|
9
|
-
export interface Rewrite {
|
|
10
|
-
code: string;
|
|
11
|
-
notes: Note[];
|
|
12
|
-
}
|
|
13
|
-
export type Edit = [start: number, end: number, text: string];
|
|
14
|
-
/** Parses TypeScript with Node's type stripping; positions match `source`. */
|
|
15
|
-
export declare function parse(source: string): Node;
|
|
16
|
-
export declare const children: (n: Node) => Node[];
|
|
17
|
-
export declare function walk(n: Node, visit: (n: Node, parent: Node | null) => void, parent?: Node | null): void;
|
|
18
|
-
export declare function parents(program: Node): Map<Node, Node>;
|
|
19
|
-
export declare const lineOf: (source: string, at: number) => number;
|
|
20
|
-
export declare function apply(source: string, edits: Edit[]): string;
|
|
21
|
-
export declare const keyName: (p: Node) => string | null;
|
|
22
|
-
export declare const property: (obj: Node | undefined, name: string) => Node | null;
|
|
23
|
-
/** Local names of the named imports from `from` (imported name → local name). */
|
|
24
|
-
export declare function importsFrom(program: Node, from: string | RegExp): Map<string, string>;
|
|
25
|
-
/** `obj.name(...)` or `name(...)` where `obj` / `name` is the given local. */
|
|
26
|
-
export declare const callOf: (n: Node | undefined, object: string | null, name: string) => boolean;
|
|
27
|
-
/** The specifier texts of a named import as written, `type X` included (the parser sees stripped code). */
|
|
28
|
-
export declare function importItems(source: string, decl: Node): string[];
|
|
29
|
-
export declare const localOf: (item: string) => string;
|
|
30
|
-
/** How a module is written, so rewritten lines look like their neighbours without a formatter. */
|
|
31
|
-
export interface Style {
|
|
32
|
-
quote: "'" | '"';
|
|
33
|
-
semi: '' | ';';
|
|
34
|
-
indent: string;
|
|
35
|
-
width: number;
|
|
36
|
-
}
|
|
37
|
-
export declare function styleOf(source: string): Style;
|
|
38
|
-
export declare function importText(items: string[], from: string, style?: Style, multiline?: boolean): string;
|
|
39
|
-
/** An edit that inserts a whole import line: in source order when the imports are sorted, else after the last. */
|
|
40
|
-
export declare function insertImport(source: string, program: Node, from: string, text: string): Edit;
|
|
41
|
-
/** Adds names to the `import { … } from '<from>'` of a module, or a new import in its place among the imports. */
|
|
42
|
-
export declare function addImport(source: string, program: Node, from: string, names: string[]): Edit | null;
|
|
43
|
-
/** Keeps only the named specifiers `keep` accepts; drops the declaration when nothing is left. */
|
|
44
|
-
export declare function filterImport(source: string, decl: Node, keep: (local: string) => boolean): Edit | null;
|
|
45
|
-
/** The leading whitespace of the line holding `at`. */
|
|
46
|
-
export declare const indentAt: (source: string, at: number) => string;
|
|
47
|
-
export interface Declaration {
|
|
48
|
-
file: string;
|
|
49
|
-
source: string;
|
|
50
|
-
program: Node;
|
|
51
|
-
init: Node;
|
|
52
|
-
}
|
|
53
|
-
export declare const forget: () => void;
|
|
54
|
-
export declare function module(file: string): {
|
|
55
|
-
source: string;
|
|
56
|
-
program: Node;
|
|
57
|
-
} | null;
|
|
58
|
-
/** The initializer of `name` as seen from `file`: a local const, a named import or `ns.name`. */
|
|
59
|
-
export declare function declaration(file: string, program: Node, ref: Node, depth?: number): Declaration | null;
|
|
60
|
-
export declare const literal: (n: Node | undefined) => {
|
|
61
|
-
value: unknown;
|
|
62
|
-
} | null;
|
|
63
|
-
//# sourceMappingURL=migrate-ast.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-ast.d.ts","sourceRoot":"","sources":["../../src/commands/migrate-ast.ts"],"names":[],"mappings":"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"}
|