@typokit/cli 0.1.4
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/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +13 -0
- package/dist/bin.js.map +1 -0
- package/dist/commands/build.d.ts +42 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +302 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/dev.d.ts +106 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +536 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/generate.d.ts +65 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +430 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/inspect.d.ts +26 -0
- package/dist/commands/inspect.d.ts.map +1 -0
- package/dist/commands/inspect.js +579 -0
- package/dist/commands/inspect.js.map +1 -0
- package/dist/commands/migrate.d.ts +70 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +570 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/scaffold.d.ts +70 -0
- package/dist/commands/scaffold.d.ts.map +1 -0
- package/dist/commands/scaffold.js +483 -0
- package/dist/commands/scaffold.js.map +1 -0
- package/dist/commands/test.d.ts +56 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +248 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/config.d.ts +20 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +69 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +245 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +12 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +33 -0
- package/dist/logger.js.map +1 -0
- package/package.json +33 -0
- package/src/bin.ts +22 -0
- package/src/commands/build.ts +433 -0
- package/src/commands/dev.ts +822 -0
- package/src/commands/generate.ts +640 -0
- package/src/commands/inspect.ts +885 -0
- package/src/commands/migrate.ts +800 -0
- package/src/commands/scaffold.ts +627 -0
- package/src/commands/test.ts +353 -0
- package/src/config.ts +93 -0
- package/src/dev.test.ts +285 -0
- package/src/env.d.ts +86 -0
- package/src/generate.test.ts +304 -0
- package/src/index.test.ts +217 -0
- package/src/index.ts +397 -0
- package/src/inspect.test.ts +411 -0
- package/src/logger.ts +49 -0
- package/src/migrate.test.ts +205 -0
- package/src/scaffold.test.ts +256 -0
- package/src/test.test.ts +230 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/logger.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface CliLogger {
|
|
2
|
+
info(message: string): void;
|
|
3
|
+
success(message: string): void;
|
|
4
|
+
warn(message: string): void;
|
|
5
|
+
error(message: string): void;
|
|
6
|
+
verbose(message: string): void;
|
|
7
|
+
step(label: string, message: string): void;
|
|
8
|
+
}
|
|
9
|
+
export declare function createLogger(options: {
|
|
10
|
+
verbose?: boolean;
|
|
11
|
+
}): CliLogger;
|
|
12
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAqCtE"}
|
package/dist/logger.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// @typokit/cli — Structured CLI logger
|
|
2
|
+
export function createLogger(options) {
|
|
3
|
+
const isVerbose = options.verbose ?? false;
|
|
4
|
+
const write = (prefix, message) => {
|
|
5
|
+
const g = globalThis;
|
|
6
|
+
const proc = g["process"];
|
|
7
|
+
const out = proc?.stderr ?? { write: () => { } };
|
|
8
|
+
out.write(`${prefix} ${message}\n`);
|
|
9
|
+
};
|
|
10
|
+
return {
|
|
11
|
+
info(message) {
|
|
12
|
+
write("[info]", message);
|
|
13
|
+
},
|
|
14
|
+
success(message) {
|
|
15
|
+
write("[ok]", message);
|
|
16
|
+
},
|
|
17
|
+
warn(message) {
|
|
18
|
+
write("[warn]", message);
|
|
19
|
+
},
|
|
20
|
+
error(message) {
|
|
21
|
+
write("[error]", message);
|
|
22
|
+
},
|
|
23
|
+
verbose(message) {
|
|
24
|
+
if (isVerbose) {
|
|
25
|
+
write("[verbose]", message);
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
step(label, message) {
|
|
29
|
+
write(`[${label}]`, message);
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,uCAAuC;AAWvC,MAAM,UAAU,YAAY,CAAC,OAA8B;IACzD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;IAE3C,MAAM,KAAK,GAAG,CAAC,MAAc,EAAE,OAAe,EAAQ,EAAE;QACtD,MAAM,CAAC,GAAG,UAAqC,CAAC;QAChD,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAKX,CAAC;QACd,MAAM,GAAG,GAAG,IAAI,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;QAChD,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,OAAO,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,CAAC,OAAe;YAClB,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,CAAC,OAAe;YACrB,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,OAAe;YAClB,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,KAAK,CAAC,OAAe;YACnB,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,CAAC,OAAe;YACrB,IAAI,SAAS,EAAE,CAAC;gBACd,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAa,EAAE,OAAe;YACjC,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,OAAO,CAAC,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@typokit/cli",
|
|
3
|
+
"exports": {
|
|
4
|
+
".": {
|
|
5
|
+
"import": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts"
|
|
7
|
+
}
|
|
8
|
+
},
|
|
9
|
+
"bin": {
|
|
10
|
+
"typokit": "./dist/bin.js"
|
|
11
|
+
},
|
|
12
|
+
"version": "0.1.4",
|
|
13
|
+
"type": "module",
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"src"
|
|
17
|
+
],
|
|
18
|
+
"main": "./dist/index.js",
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@typokit/core": "0.1.4",
|
|
22
|
+
"@typokit/types": "0.1.4",
|
|
23
|
+
"@typokit/transform-native": "0.1.4"
|
|
24
|
+
},
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/KyleBastien/typokit",
|
|
28
|
+
"directory": "packages/cli"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"test": "rstest run --passWithNoTests"
|
|
32
|
+
}
|
|
33
|
+
}
|
package/src/bin.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// @typokit/cli — CLI binary entry point
|
|
3
|
+
|
|
4
|
+
import { run } from "./index.js";
|
|
5
|
+
|
|
6
|
+
const g = globalThis as Record<string, unknown>;
|
|
7
|
+
const proc = g["process"] as { argv: string[]; exit(code: number): void };
|
|
8
|
+
|
|
9
|
+
run(proc.argv).then(
|
|
10
|
+
(code) => proc.exit(code),
|
|
11
|
+
(err) => {
|
|
12
|
+
const stderr = (
|
|
13
|
+
proc as unknown as Record<string, { write(s: string): void }>
|
|
14
|
+
)["stderr"];
|
|
15
|
+
if (stderr?.write) {
|
|
16
|
+
stderr.write(
|
|
17
|
+
`[error] ${err instanceof Error ? err.message : String(err)}\n`,
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
proc.exit(1);
|
|
21
|
+
},
|
|
22
|
+
);
|
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
// @typokit/cli — Build Command
|
|
2
|
+
|
|
3
|
+
import type { CliLogger } from "../logger.js";
|
|
4
|
+
import type { TypoKitConfig } from "../config.js";
|
|
5
|
+
import type {
|
|
6
|
+
BuildResult,
|
|
7
|
+
BuildContext,
|
|
8
|
+
GeneratedOutput,
|
|
9
|
+
} from "@typokit/types";
|
|
10
|
+
import type { TypoKitPlugin, BuildPipelineInstance } from "@typokit/core";
|
|
11
|
+
|
|
12
|
+
export interface BuildCommandOptions {
|
|
13
|
+
/** Project root directory */
|
|
14
|
+
rootDir: string;
|
|
15
|
+
/** Resolved configuration */
|
|
16
|
+
config: Required<TypoKitConfig>;
|
|
17
|
+
/** Logger instance */
|
|
18
|
+
logger: CliLogger;
|
|
19
|
+
/** Whether verbose mode is enabled */
|
|
20
|
+
verbose: boolean;
|
|
21
|
+
/** Plugins to register with the build pipeline */
|
|
22
|
+
plugins?: TypoKitPlugin[];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** Structured build error with source context */
|
|
26
|
+
export interface BuildError {
|
|
27
|
+
source: string;
|
|
28
|
+
phase: "transform" | "compile";
|
|
29
|
+
message: string;
|
|
30
|
+
file?: string;
|
|
31
|
+
line?: number;
|
|
32
|
+
errorType?: string;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Resolve glob patterns to actual file paths.
|
|
37
|
+
*/
|
|
38
|
+
async function resolveFilePatterns(
|
|
39
|
+
rootDir: string,
|
|
40
|
+
patterns: string[],
|
|
41
|
+
): Promise<string[]> {
|
|
42
|
+
const { join, resolve } = (await import(/* @vite-ignore */ "path")) as {
|
|
43
|
+
join: (...args: string[]) => string;
|
|
44
|
+
resolve: (...args: string[]) => string;
|
|
45
|
+
};
|
|
46
|
+
const { readdirSync, statSync, existsSync } = (await import(
|
|
47
|
+
/* @vite-ignore */ "fs"
|
|
48
|
+
)) as {
|
|
49
|
+
readdirSync: (p: string, opts?: { recursive?: boolean }) => string[];
|
|
50
|
+
statSync: (p: string) => { isFile(): boolean; isDirectory(): boolean };
|
|
51
|
+
existsSync: (p: string) => boolean;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const files: string[] = [];
|
|
55
|
+
|
|
56
|
+
for (const pattern of patterns) {
|
|
57
|
+
if (pattern.includes("*")) {
|
|
58
|
+
// Simple glob matching: support **/*.ext and **/name.ts patterns
|
|
59
|
+
const parts = pattern.split("/");
|
|
60
|
+
const hasDoubleGlob = parts.includes("**");
|
|
61
|
+
const lastPart = parts[parts.length - 1];
|
|
62
|
+
|
|
63
|
+
// Determine the base directory (everything before the first glob)
|
|
64
|
+
const baseParts: string[] = [];
|
|
65
|
+
for (const part of parts) {
|
|
66
|
+
if (part.includes("*")) break;
|
|
67
|
+
baseParts.push(part);
|
|
68
|
+
}
|
|
69
|
+
const baseDir =
|
|
70
|
+
baseParts.length > 0 ? join(rootDir, ...baseParts) : rootDir;
|
|
71
|
+
|
|
72
|
+
if (!existsSync(baseDir)) continue;
|
|
73
|
+
|
|
74
|
+
// List files recursively if **
|
|
75
|
+
const entries = hasDoubleGlob
|
|
76
|
+
? listFilesRecursive(baseDir, existsSync, readdirSync, statSync, join)
|
|
77
|
+
: readdirSync(baseDir).map((f) => join(baseDir, f));
|
|
78
|
+
|
|
79
|
+
// Match against the filename pattern
|
|
80
|
+
const filePattern = lastPart.replace(/\*/g, ".*");
|
|
81
|
+
const regex = new RegExp(`^${filePattern}$`);
|
|
82
|
+
|
|
83
|
+
for (const entry of entries) {
|
|
84
|
+
const name = entry.split(/[\\/]/).pop() ?? "";
|
|
85
|
+
if (regex.test(name)) {
|
|
86
|
+
files.push(resolve(entry));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
} else {
|
|
90
|
+
// Direct path
|
|
91
|
+
const fullPath = resolve(join(rootDir, pattern));
|
|
92
|
+
if (existsSync(fullPath)) {
|
|
93
|
+
files.push(fullPath);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return [...new Set(files)].sort();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function listFilesRecursive(
|
|
102
|
+
dir: string,
|
|
103
|
+
existsSync: (p: string) => boolean,
|
|
104
|
+
readdirSync: (p: string) => string[],
|
|
105
|
+
statSync: (p: string) => { isFile(): boolean; isDirectory(): boolean },
|
|
106
|
+
join: (...args: string[]) => string,
|
|
107
|
+
): string[] {
|
|
108
|
+
if (!existsSync(dir)) return [];
|
|
109
|
+
const results: string[] = [];
|
|
110
|
+
const entries = readdirSync(dir);
|
|
111
|
+
for (const entry of entries) {
|
|
112
|
+
const fullPath = join(dir, entry);
|
|
113
|
+
try {
|
|
114
|
+
const stat = statSync(fullPath);
|
|
115
|
+
if (stat.isDirectory()) {
|
|
116
|
+
if (
|
|
117
|
+
entry !== "node_modules" &&
|
|
118
|
+
entry !== "dist" &&
|
|
119
|
+
entry !== ".typokit"
|
|
120
|
+
) {
|
|
121
|
+
results.push(
|
|
122
|
+
...listFilesRecursive(
|
|
123
|
+
fullPath,
|
|
124
|
+
existsSync,
|
|
125
|
+
readdirSync,
|
|
126
|
+
statSync,
|
|
127
|
+
join,
|
|
128
|
+
),
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
} else if (stat.isFile()) {
|
|
132
|
+
results.push(fullPath);
|
|
133
|
+
}
|
|
134
|
+
} catch {
|
|
135
|
+
// Skip files that can't be stat'd
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return results;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Parse TypeScript compiler errors into structured BuildError objects.
|
|
143
|
+
*/
|
|
144
|
+
function parseCompilerErrors(stderr: string): BuildError[] {
|
|
145
|
+
const errors: BuildError[] = [];
|
|
146
|
+
const lines = stderr.split("\n");
|
|
147
|
+
|
|
148
|
+
for (const line of lines) {
|
|
149
|
+
// Match tsc error format: file(line,col): error TSxxxx: message
|
|
150
|
+
const match = line.match(/^(.+?)\((\d+),\d+\):\s*error\s+(TS\d+):\s*(.+)/);
|
|
151
|
+
if (match) {
|
|
152
|
+
errors.push({
|
|
153
|
+
source: "tsc",
|
|
154
|
+
phase: "compile",
|
|
155
|
+
message: match[4],
|
|
156
|
+
file: match[1],
|
|
157
|
+
line: parseInt(match[2], 10),
|
|
158
|
+
errorType: match[3],
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// If no structured errors found but there's stderr content, add a generic error
|
|
164
|
+
if (errors.length === 0 && stderr.trim()) {
|
|
165
|
+
errors.push({
|
|
166
|
+
source: "compiler",
|
|
167
|
+
phase: "compile",
|
|
168
|
+
message: stderr.trim().split("\n")[0],
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
return errors;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Run the TypeScript compiler step.
|
|
177
|
+
*/
|
|
178
|
+
async function runCompiler(
|
|
179
|
+
options: BuildCommandOptions,
|
|
180
|
+
): Promise<{ success: boolean; errors: BuildError[] }> {
|
|
181
|
+
const { spawnSync } = (await import(/* @vite-ignore */ "child_process")) as {
|
|
182
|
+
spawnSync: (
|
|
183
|
+
cmd: string,
|
|
184
|
+
args: string[],
|
|
185
|
+
opts: {
|
|
186
|
+
cwd?: string;
|
|
187
|
+
encoding?: string;
|
|
188
|
+
},
|
|
189
|
+
) => {
|
|
190
|
+
status: number | null;
|
|
191
|
+
stdout: string;
|
|
192
|
+
stderr: string;
|
|
193
|
+
error?: Error;
|
|
194
|
+
};
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
const { config, rootDir, logger } = options;
|
|
198
|
+
const compiler = config.compiler;
|
|
199
|
+
const args = [...config.compilerArgs];
|
|
200
|
+
|
|
201
|
+
let command: string;
|
|
202
|
+
switch (compiler) {
|
|
203
|
+
case "tsc":
|
|
204
|
+
command = "tsc";
|
|
205
|
+
if (args.length === 0) {
|
|
206
|
+
args.push("-p", "tsconfig.json");
|
|
207
|
+
}
|
|
208
|
+
break;
|
|
209
|
+
case "tsup":
|
|
210
|
+
command = "tsup";
|
|
211
|
+
break;
|
|
212
|
+
case "swc":
|
|
213
|
+
command = "swc";
|
|
214
|
+
if (args.length === 0) {
|
|
215
|
+
args.push("src", "-d", config.distDir);
|
|
216
|
+
}
|
|
217
|
+
break;
|
|
218
|
+
default:
|
|
219
|
+
command = "tsc";
|
|
220
|
+
args.push("-p", "tsconfig.json");
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
logger.step("compile", `Running ${compiler}: ${command} ${args.join(" ")}`);
|
|
224
|
+
|
|
225
|
+
const result = spawnSync(command, args, {
|
|
226
|
+
cwd: rootDir,
|
|
227
|
+
encoding: "utf-8",
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
if (result.error) {
|
|
231
|
+
return {
|
|
232
|
+
success: false,
|
|
233
|
+
errors: [
|
|
234
|
+
{
|
|
235
|
+
source: compiler,
|
|
236
|
+
phase: "compile",
|
|
237
|
+
message: result.error.message,
|
|
238
|
+
errorType: "SPAWN_ERROR",
|
|
239
|
+
},
|
|
240
|
+
],
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
if (result.status !== 0) {
|
|
245
|
+
const errors = parseCompilerErrors(result.stderr || result.stdout);
|
|
246
|
+
return { success: false, errors };
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
if (options.verbose && result.stdout) {
|
|
250
|
+
logger.verbose(result.stdout.trim());
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
return { success: true, errors: [] };
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Execute the build command.
|
|
258
|
+
*
|
|
259
|
+
* 1. Resolve type and route files from config patterns
|
|
260
|
+
* 2. Create build pipeline and let plugins register taps via onBuild()
|
|
261
|
+
* 3. Fire beforeTransform hook
|
|
262
|
+
* 4. Run the Rust native transform pipeline (buildPipeline)
|
|
263
|
+
* 5. Fire afterTypeParse, afterValidators, afterRouteTable hooks
|
|
264
|
+
* 6. Fire emit hook (plugins can add outputs)
|
|
265
|
+
* 7. Run the TypeScript compiler
|
|
266
|
+
* 8. Fire done hook
|
|
267
|
+
* 9. Return structured BuildResult
|
|
268
|
+
*/
|
|
269
|
+
export async function executeBuild(
|
|
270
|
+
options: BuildCommandOptions,
|
|
271
|
+
): Promise<BuildResult & { pipeline?: BuildPipelineInstance }> {
|
|
272
|
+
const { createBuildPipeline } = (await import(
|
|
273
|
+
/* @vite-ignore */ "@typokit/core"
|
|
274
|
+
)) as {
|
|
275
|
+
createBuildPipeline: () => BuildPipelineInstance;
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
const startTime = Date.now();
|
|
279
|
+
const { config, rootDir, logger, verbose, plugins = [] } = options;
|
|
280
|
+
const errors: string[] = [];
|
|
281
|
+
const outputs: GeneratedOutput[] = [];
|
|
282
|
+
|
|
283
|
+
// Create build pipeline and let plugins register their taps
|
|
284
|
+
const pipeline = createBuildPipeline();
|
|
285
|
+
for (const plugin of plugins) {
|
|
286
|
+
if (plugin.onBuild) {
|
|
287
|
+
plugin.onBuild(pipeline);
|
|
288
|
+
if (verbose) {
|
|
289
|
+
logger.verbose(`Plugin "${plugin.name}" registered build hooks`);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
const buildCtx: BuildContext = {
|
|
295
|
+
rootDir,
|
|
296
|
+
outDir: config.outputDir,
|
|
297
|
+
dev: false,
|
|
298
|
+
outputs,
|
|
299
|
+
};
|
|
300
|
+
|
|
301
|
+
// Step 1: Resolve file patterns
|
|
302
|
+
logger.step("build", "Resolving source files...");
|
|
303
|
+
const typeFiles = await resolveFilePatterns(rootDir, config.typeFiles);
|
|
304
|
+
const routeFiles = await resolveFilePatterns(rootDir, config.routeFiles);
|
|
305
|
+
|
|
306
|
+
if (verbose) {
|
|
307
|
+
logger.verbose(`Type files: ${typeFiles.length} found`);
|
|
308
|
+
for (const f of typeFiles) logger.verbose(` ${f}`);
|
|
309
|
+
logger.verbose(`Route files: ${routeFiles.length} found`);
|
|
310
|
+
for (const f of routeFiles) logger.verbose(` ${f}`);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
// Step 2: Fire beforeTransform hook
|
|
314
|
+
await pipeline.hooks.beforeTransform.call(buildCtx);
|
|
315
|
+
|
|
316
|
+
// Step 3: Run native transform pipeline
|
|
317
|
+
|
|
318
|
+
if (typeFiles.length > 0 || routeFiles.length > 0) {
|
|
319
|
+
logger.step("transform", "Running native transform pipeline...");
|
|
320
|
+
|
|
321
|
+
try {
|
|
322
|
+
const { buildPipeline: nativeBuildPipeline } = (await import(
|
|
323
|
+
/* @vite-ignore */ "@typokit/transform-native"
|
|
324
|
+
)) as {
|
|
325
|
+
buildPipeline: (opts: {
|
|
326
|
+
typeFiles: string[];
|
|
327
|
+
routeFiles: string[];
|
|
328
|
+
outputDir?: string;
|
|
329
|
+
}) => Promise<{
|
|
330
|
+
regenerated: boolean;
|
|
331
|
+
contentHash: string;
|
|
332
|
+
filesWritten: string[];
|
|
333
|
+
}>;
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
const result = await nativeBuildPipeline({
|
|
337
|
+
typeFiles,
|
|
338
|
+
routeFiles,
|
|
339
|
+
outputDir: config.outputDir,
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
if (result.regenerated) {
|
|
343
|
+
logger.success(
|
|
344
|
+
`Transform complete — ${result.filesWritten.length} files written`,
|
|
345
|
+
);
|
|
346
|
+
for (const f of result.filesWritten) {
|
|
347
|
+
outputs.push({ filePath: f, content: "", overwrite: true });
|
|
348
|
+
}
|
|
349
|
+
} else {
|
|
350
|
+
logger.success("Transform skipped — cache hit");
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
if (verbose) {
|
|
354
|
+
logger.verbose(`Content hash: ${result.contentHash}`);
|
|
355
|
+
for (const f of result.filesWritten) logger.verbose(` wrote: ${f}`);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
// Fire afterTypeParse hook (types extracted during transform)
|
|
359
|
+
await pipeline.hooks.afterTypeParse.call({}, buildCtx);
|
|
360
|
+
|
|
361
|
+
// Fire afterValidators hook
|
|
362
|
+
await pipeline.hooks.afterValidators.call(outputs, buildCtx);
|
|
363
|
+
|
|
364
|
+
// Fire afterRouteTable hook
|
|
365
|
+
await pipeline.hooks.afterRouteTable.call(
|
|
366
|
+
{
|
|
367
|
+
segment: "",
|
|
368
|
+
children: {},
|
|
369
|
+
handlers: {},
|
|
370
|
+
},
|
|
371
|
+
buildCtx,
|
|
372
|
+
);
|
|
373
|
+
} catch (err: unknown) {
|
|
374
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
375
|
+
logger.error(`Transform failed: ${message}`);
|
|
376
|
+
errors.push(`Transform error: ${message}`);
|
|
377
|
+
return {
|
|
378
|
+
success: false,
|
|
379
|
+
outputs,
|
|
380
|
+
duration: Date.now() - startTime,
|
|
381
|
+
errors,
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
} else {
|
|
385
|
+
logger.info("No type or route files found — skipping transform");
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
// Step 4: Fire emit hook — plugins can add their own outputs
|
|
389
|
+
await pipeline.hooks.emit.call(outputs, buildCtx);
|
|
390
|
+
|
|
391
|
+
// Step 5: Run TypeScript compiler
|
|
392
|
+
logger.step("compile", "Compiling TypeScript...");
|
|
393
|
+
const compileResult = await runCompiler(options);
|
|
394
|
+
|
|
395
|
+
if (!compileResult.success) {
|
|
396
|
+
for (const buildErr of compileResult.errors) {
|
|
397
|
+
const parts = [buildErr.message];
|
|
398
|
+
if (buildErr.file)
|
|
399
|
+
parts.unshift(`${buildErr.file}:${buildErr.line ?? 0}`);
|
|
400
|
+
if (buildErr.errorType) parts.push(`(${buildErr.errorType})`);
|
|
401
|
+
const formatted = parts.join(" — ");
|
|
402
|
+
logger.error(formatted);
|
|
403
|
+
errors.push(formatted);
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
return {
|
|
407
|
+
success: false,
|
|
408
|
+
outputs,
|
|
409
|
+
duration: Date.now() - startTime,
|
|
410
|
+
errors,
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
logger.success("Compilation complete");
|
|
415
|
+
|
|
416
|
+
const duration = Date.now() - startTime;
|
|
417
|
+
logger.success(`Build finished in ${duration}ms`);
|
|
418
|
+
|
|
419
|
+
const buildResult: BuildResult = {
|
|
420
|
+
success: true,
|
|
421
|
+
outputs,
|
|
422
|
+
duration,
|
|
423
|
+
errors: [],
|
|
424
|
+
};
|
|
425
|
+
|
|
426
|
+
// Step 6: Fire done hook
|
|
427
|
+
await pipeline.hooks.done.call(buildResult);
|
|
428
|
+
|
|
429
|
+
return {
|
|
430
|
+
...buildResult,
|
|
431
|
+
pipeline,
|
|
432
|
+
};
|
|
433
|
+
}
|