@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.
Files changed (126) hide show
  1. package/dist/commands/add-widget.d.ts.map +1 -1
  2. package/dist/commands/add-widget.js +5 -4
  3. package/dist/commands/add-widget.js.map +1 -1
  4. package/dist/commands/app.d.ts.map +1 -1
  5. package/dist/commands/app.js +10 -0
  6. package/dist/commands/app.js.map +1 -1
  7. package/dist/commands/build.d.ts.map +1 -1
  8. package/dist/commands/build.js +5 -1
  9. package/dist/commands/build.js.map +1 -1
  10. package/dist/commands/call.d.ts +16 -0
  11. package/dist/commands/call.d.ts.map +1 -0
  12. package/dist/commands/call.js +100 -0
  13. package/dist/commands/call.js.map +1 -0
  14. package/dist/commands/check.d.ts +10 -1
  15. package/dist/commands/check.d.ts.map +1 -1
  16. package/dist/commands/check.js +43 -28
  17. package/dist/commands/check.js.map +1 -1
  18. package/dist/commands/explain.d.ts.map +1 -1
  19. package/dist/commands/explain.js +2 -1
  20. package/dist/commands/explain.js.map +1 -1
  21. package/dist/commands/impact.js +1 -1
  22. package/dist/commands/impact.js.map +1 -1
  23. package/dist/commands/inspect.d.ts.map +1 -1
  24. package/dist/commands/inspect.js +9 -0
  25. package/dist/commands/inspect.js.map +1 -1
  26. package/dist/commands/map.d.ts.map +1 -1
  27. package/dist/commands/map.js +7 -2
  28. package/dist/commands/map.js.map +1 -1
  29. package/dist/commands/migrate.d.ts +17 -16
  30. package/dist/commands/migrate.d.ts.map +1 -1
  31. package/dist/commands/migrate.js +205 -297
  32. package/dist/commands/migrate.js.map +1 -1
  33. package/dist/commands/scaffold.d.ts.map +1 -1
  34. package/dist/commands/scaffold.js +8 -4
  35. package/dist/commands/scaffold.js.map +1 -1
  36. package/dist/contract.d.ts +84 -1
  37. package/dist/contract.d.ts.map +1 -1
  38. package/dist/load.d.ts +2 -1
  39. package/dist/load.d.ts.map +1 -1
  40. package/dist/load.js +5 -4
  41. package/dist/load.js.map +1 -1
  42. package/dist/main.d.ts.map +1 -1
  43. package/dist/main.js +33 -5
  44. package/dist/main.js.map +1 -1
  45. package/dist/migrate/ast.d.ts +31 -0
  46. package/dist/migrate/ast.d.ts.map +1 -0
  47. package/dist/migrate/ast.js +61 -0
  48. package/dist/migrate/ast.js.map +1 -0
  49. package/dist/migrate/record-ir.d.ts +2 -0
  50. package/dist/migrate/record-ir.d.ts.map +1 -0
  51. package/dist/migrate/record-ir.js +16 -0
  52. package/dist/migrate/record-ir.js.map +1 -0
  53. package/dist/migrate/step-0.11.d.ts +15 -0
  54. package/dist/migrate/step-0.11.d.ts.map +1 -0
  55. package/dist/migrate/step-0.11.js +88 -0
  56. package/dist/migrate/step-0.11.js.map +1 -0
  57. package/dist/migrate/step-0.12.d.ts +6 -0
  58. package/dist/migrate/step-0.12.d.ts.map +1 -0
  59. package/dist/migrate/step-0.12.js +14 -0
  60. package/dist/migrate/step-0.12.js.map +1 -0
  61. package/dist/migrate/steps.d.ts +28 -0
  62. package/dist/migrate/steps.d.ts.map +1 -0
  63. package/dist/migrate/steps.js +42 -0
  64. package/dist/migrate/steps.js.map +1 -0
  65. package/dist/output.d.ts.map +1 -1
  66. package/dist/output.js +2 -0
  67. package/dist/output.js.map +1 -1
  68. package/package.json +8 -8
  69. package/schema/call.schema.json +136 -0
  70. package/schema/check.schema.json +26 -2
  71. package/schema/explain.schema.json +14 -1
  72. package/schema/impact.schema.json +22 -1
  73. package/schema/inspect.schema.json +75 -4
  74. package/schema/map.schema.json +17 -0
  75. package/schema/migrate.schema.json +740 -0
  76. package/schema/plan.schema.json +4 -2
  77. package/schema/render.schema.json +3 -1
  78. package/schema/validate.schema.json +3 -1
  79. package/dist/commands/migrate-agent.d.ts +0 -12
  80. package/dist/commands/migrate-agent.d.ts.map +0 -1
  81. package/dist/commands/migrate-agent.js +0 -6
  82. package/dist/commands/migrate-agent.js.map +0 -1
  83. package/dist/commands/migrate-app.d.ts +0 -15
  84. package/dist/commands/migrate-app.d.ts.map +0 -1
  85. package/dist/commands/migrate-app.js +0 -334
  86. package/dist/commands/migrate-app.js.map +0 -1
  87. package/dist/commands/migrate-ast.d.ts +0 -63
  88. package/dist/commands/migrate-ast.d.ts.map +0 -1
  89. package/dist/commands/migrate-ast.js +0 -257
  90. package/dist/commands/migrate-ast.js.map +0 -1
  91. package/dist/commands/migrate-forms.d.ts +0 -4
  92. package/dist/commands/migrate-forms.d.ts.map +0 -1
  93. package/dist/commands/migrate-forms.js +0 -120
  94. package/dist/commands/migrate-forms.js.map +0 -1
  95. package/dist/commands/migrate-freshness.d.ts +0 -4
  96. package/dist/commands/migrate-freshness.d.ts.map +0 -1
  97. package/dist/commands/migrate-freshness.js +0 -47
  98. package/dist/commands/migrate-freshness.js.map +0 -1
  99. package/dist/commands/migrate-head.d.ts +0 -8
  100. package/dist/commands/migrate-head.d.ts.map +0 -1
  101. package/dist/commands/migrate-head.js +0 -132
  102. package/dist/commands/migrate-head.js.map +0 -1
  103. package/dist/commands/migrate-links.d.ts +0 -5
  104. package/dist/commands/migrate-links.d.ts.map +0 -1
  105. package/dist/commands/migrate-links.js +0 -55
  106. package/dist/commands/migrate-links.js.map +0 -1
  107. package/dist/commands/migrate-lists.d.ts +0 -9
  108. package/dist/commands/migrate-lists.d.ts.map +0 -1
  109. package/dist/commands/migrate-lists.js +0 -225
  110. package/dist/commands/migrate-lists.js.map +0 -1
  111. package/dist/commands/migrate-normalize.d.ts +0 -27
  112. package/dist/commands/migrate-normalize.d.ts.map +0 -1
  113. package/dist/commands/migrate-normalize.js +0 -252
  114. package/dist/commands/migrate-normalize.js.map +0 -1
  115. package/dist/commands/migrate-ops.d.ts +0 -4
  116. package/dist/commands/migrate-ops.d.ts.map +0 -1
  117. package/dist/commands/migrate-ops.js +0 -192
  118. package/dist/commands/migrate-ops.js.map +0 -1
  119. package/dist/commands/migrate-parts.d.ts +0 -7
  120. package/dist/commands/migrate-parts.d.ts.map +0 -1
  121. package/dist/commands/migrate-parts.js +0 -166
  122. package/dist/commands/migrate-parts.js.map +0 -1
  123. package/dist/commands/migrate-stale.d.ts +0 -24
  124. package/dist/commands/migrate-stale.d.ts.map +0 -1
  125. package/dist/commands/migrate-stale.js +0 -114
  126. package/dist/commands/migrate-stale.js.map +0 -1
@@ -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",
@@ -163,7 +163,9 @@
163
163
  "HZ077",
164
164
  "HZ078",
165
165
  "HZ079",
166
- "HZ080"
166
+ "HZ080",
167
+ "HZ081",
168
+ "HZ082"
167
169
  ]
168
170
  },
169
171
  "Severity": {
@@ -207,7 +207,9 @@
207
207
  "HZ077",
208
208
  "HZ078",
209
209
  "HZ079",
210
- "HZ080"
210
+ "HZ080",
211
+ "HZ081",
212
+ "HZ082"
211
213
  ]
212
214
  },
213
215
  "Severity": {
@@ -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":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjD,MAAM,MAAM,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAA;AAEnF,MAAM,MAAM,IAAI,GAAG,WAAW,CAAA;AAE9B,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,IAAI,EAAE,CAAA;CACd;AAED,MAAM,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AAoB7D,8EAA8E;AAC9E,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE1C;AAKD,eAAO,MAAM,QAAQ,MAAO,IAAI,KAAG,IAAI,EAC6D,CAAA;AAEpG,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,EAAE,MAAM,GAAE,IAAI,GAAG,IAAW,QAGtG;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAMtD;AAED,eAAO,MAAM,MAAM,WAAY,MAAM,MAAM,MAAM,WAA2C,CAAA;AAE5F,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAU3D;AAED,eAAO,MAAM,OAAO,MAAO,IAAI,KAAG,MAAM,GAAG,IAO7B,CAAA;AAEd,eAAO,MAAM,QAAQ,QAAS,IAAI,GAAG,SAAS,QAAQ,MAAM,KAAG,IAAI,GAAG,IACqC,CAAA;AAE3G,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAUrF;AAED,8EAA8E;AAC9E,eAAO,MAAM,MAAM,MAAO,IAAI,GAAG,SAAS,UAAU,MAAM,GAAG,IAAI,QAAQ,MAAM,KAAG,OAQ5C,CAAA;AAEtC,2GAA2G;AAC3G,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,CAUhE;AAED,eAAO,MAAM,OAAO,SAAU,MAAM,WAIzB,CAAA;AAIX,kGAAkG;AAClG,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,GAAG,GAAG,GAAG,CAAA;IAChB,IAAI,EAAE,EAAE,GAAG,GAAG,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAe7C;AAID,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,KAAa,EAAE,SAAS,UAAQ,GAAG,MAAM,CAMzG;AAID,kHAAkH;AAClH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAS5F;AAED,kHAAkH;AAClH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CAkBnG;AAKD,kGAAkG;AAClG,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI,CAStG;AAED,uDAAuD;AACvD,eAAO,MAAM,QAAQ,WAAY,MAAM,MAAM,MAAM,WACqB,CAAA;AAExE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,IAAI,CAAA;IACb,IAAI,EAAE,IAAI,CAAA;CACX;AAGD,eAAO,MAAM,MAAM,YAAsB,CAAA;AAEzC,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,GAAG,IAAI,CAa7E;AAaD,iGAAiG;AACjG,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,SAAI,GAAG,WAAW,GAAG,IAAI,CAwCjG;AAED,eAAO,MAAM,OAAO,MAAO,IAAI,GAAG,SAAS,KAAG;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,IAQlE,CAAA"}