@wasao/kagemusha 0.1.0 ā 0.2.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 +497 -58
- package/dist/commands/add.d.ts +6 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +26 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/capture.d.ts +4 -2
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +236 -11
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/discover.d.ts +2 -0
- package/dist/commands/discover.d.ts.map +1 -0
- package/dist/commands/discover.js +62 -0
- package/dist/commands/discover.js.map +1 -0
- package/dist/commands/edit.d.ts +6 -0
- package/dist/commands/edit.d.ts.map +1 -0
- package/dist/commands/edit.js +120 -0
- package/dist/commands/edit.js.map +1 -0
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +220 -118
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts +2 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +33 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/login.d.ts +6 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +142 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/validate.js +1 -1
- package/dist/commands/validate.js.map +1 -1
- package/dist/editor/inject-script.d.ts +2 -0
- package/dist/editor/inject-script.d.ts.map +1 -0
- package/dist/editor/inject-script.js +768 -0
- package/dist/editor/inject-script.js.map +1 -0
- package/dist/index.js +32 -20
- package/dist/index.js.map +1 -1
- package/dist/lib/annotate.d.ts +2 -2
- package/dist/lib/annotate.d.ts.map +1 -1
- package/dist/lib/annotate.js +36 -44
- package/dist/lib/annotate.js.map +1 -1
- package/dist/lib/auth.d.ts +18 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +45 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/aws-error.d.ts +7 -0
- package/dist/lib/aws-error.d.ts.map +1 -0
- package/dist/lib/aws-error.js +74 -0
- package/dist/lib/aws-error.js.map +1 -0
- package/dist/lib/canonical.d.ts +22 -0
- package/dist/lib/canonical.d.ts.map +1 -0
- package/dist/lib/canonical.js +92 -0
- package/dist/lib/canonical.js.map +1 -0
- package/dist/lib/config.d.ts +2 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +23 -13
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/crawl.d.ts +1 -1
- package/dist/lib/crawl.d.ts.map +1 -1
- package/dist/lib/crawl.js +213 -20
- package/dist/lib/crawl.js.map +1 -1
- package/dist/lib/definition.d.ts +2 -0
- package/dist/lib/definition.d.ts.map +1 -0
- package/dist/lib/definition.js +6 -0
- package/dist/lib/definition.js.map +1 -0
- package/dist/lib/diff.d.ts +52 -0
- package/dist/lib/diff.d.ts.map +1 -0
- package/dist/lib/diff.js +41 -0
- package/dist/lib/diff.js.map +1 -0
- package/dist/lib/login-error.d.ts +10 -0
- package/dist/lib/login-error.d.ts.map +1 -0
- package/dist/lib/login-error.js +13 -0
- package/dist/lib/login-error.js.map +1 -0
- package/dist/lib/screenshot.d.ts +8 -2
- package/dist/lib/screenshot.d.ts.map +1 -1
- package/dist/lib/screenshot.js +44 -61
- package/dist/lib/screenshot.js.map +1 -1
- package/dist/lib/staging.d.ts +8 -0
- package/dist/lib/staging.d.ts.map +1 -0
- package/dist/lib/staging.js +24 -0
- package/dist/lib/staging.js.map +1 -0
- package/dist/types.d.ts +5 -23
- package/dist/types.d.ts.map +1 -1
- package/package.json +18 -11
- package/dist/commands/preview.d.ts +0 -6
- package/dist/commands/preview.d.ts.map +0 -1
- package/dist/commands/preview.js +0 -33
- package/dist/commands/preview.js.map +0 -1
- package/dist/commands/run.d.ts +0 -6
- package/dist/commands/run.d.ts.map +0 -1
- package/dist/commands/run.js +0 -39
- package/dist/commands/run.js.map +0 -1
- package/dist/lib/upload.d.ts +0 -9
- package/dist/lib/upload.d.ts.map +0 -1
- package/dist/lib/upload.js +0 -43
- package/dist/lib/upload.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"AAsBA,UAAU,cAAc;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AA+CD,eAAO,MAAM,cAAc,GAC1B,SAAS,cAAc,KACrB,OAAO,CAAC,IAAI,CAUd,CAAC"}
|
package/dist/commands/capture.js
CHANGED
|
@@ -1,9 +1,56 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
1
4
|
import chalk from "chalk";
|
|
2
|
-
import {
|
|
5
|
+
import { hasAuthState, resolveLoginScriptPath } from "../lib/auth.js";
|
|
6
|
+
import { handleAwsError } from "../lib/aws-error.js";
|
|
7
|
+
import { createS3Canonical, getCanonicalPath, getOutputDir, } from "../lib/canonical.js";
|
|
3
8
|
import { findProjectRoot, loadConfig, loadDefinitions } from "../lib/config.js";
|
|
9
|
+
import { diffImages } from "../lib/diff.js";
|
|
4
10
|
import { captureScreenshots } from "../lib/screenshot.js";
|
|
5
|
-
|
|
6
|
-
|
|
11
|
+
import { cleanupStaging, ensureStagingDirs, getReportDiffPath, getStagingDir, getStagingPath, } from "../lib/staging.js";
|
|
12
|
+
// Schema version of `reports/summary.json`. Bump on any breaking change.
|
|
13
|
+
const SUMMARY_SCHEMA_VERSION = "1";
|
|
14
|
+
const writeSummaryReport = (projectRoot, report) => {
|
|
15
|
+
const reportPath = path.join(projectRoot, "reports", "summary.json");
|
|
16
|
+
fs.mkdirSync(path.dirname(reportPath), { recursive: true });
|
|
17
|
+
fs.writeFileSync(reportPath, JSON.stringify(report, null, 2));
|
|
18
|
+
};
|
|
19
|
+
// Open a file with the OS's default viewer (Preview on macOS, etc.).
|
|
20
|
+
// `detached + unref` lets the kagemusha process exit while the viewer keeps
|
|
21
|
+
// running. We deliberately avoid `shell: true` so paths with spaces don't get
|
|
22
|
+
// re-split ā argv is passed straight through to the program.
|
|
23
|
+
const openInDefaultApp = (filePath) => {
|
|
24
|
+
if (process.platform === "darwin") {
|
|
25
|
+
spawn("open", [filePath], { detached: true, stdio: "ignore" }).unref();
|
|
26
|
+
}
|
|
27
|
+
else if (process.platform === "win32") {
|
|
28
|
+
// `start` is a cmd.exe builtin; we invoke cmd directly. The empty
|
|
29
|
+
// string after `start` is the (required) window title placeholder.
|
|
30
|
+
spawn("cmd", ["/c", "start", "", filePath], {
|
|
31
|
+
detached: true,
|
|
32
|
+
stdio: "ignore",
|
|
33
|
+
}).unref();
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
spawn("xdg-open", [filePath], { detached: true, stdio: "ignore" }).unref();
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
export const captureCommand = async (options) => {
|
|
40
|
+
try {
|
|
41
|
+
await runCapture(options);
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
if (handleAwsError(e)) {
|
|
45
|
+
process.exitCode = 1;
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
throw e;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
const runCapture = async (options) => {
|
|
52
|
+
const dryRun = options.dryRun === true;
|
|
53
|
+
console.log(chalk.bold(`\nš„· Kagemusha ā Capture${dryRun ? " (dry-run)" : ""}\n`));
|
|
7
54
|
const projectRoot = findProjectRoot();
|
|
8
55
|
const config = loadConfig(projectRoot);
|
|
9
56
|
let definitions = loadDefinitions(projectRoot);
|
|
@@ -12,16 +59,194 @@ export async function captureCommand(options) {
|
|
|
12
59
|
definitions = definitions.filter((d) => ids.includes(d.id));
|
|
13
60
|
}
|
|
14
61
|
if (definitions.length === 0) {
|
|
15
|
-
console.log(chalk.yellow("No screenshot definitions
|
|
62
|
+
console.log(chalk.yellow("No screenshot definitions to capture.\n"));
|
|
16
63
|
return;
|
|
17
64
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
65
|
+
// Auto-login: if a login script exists (auth.scriptPath, or default
|
|
66
|
+
// .kagemusha/login.mjs) but no saved session is on disk, run it before
|
|
67
|
+
// capturing. This is what makes CI work with no pre-baked storage state.
|
|
68
|
+
if (!hasAuthState(projectRoot) &&
|
|
69
|
+
resolveLoginScriptPath(config, projectRoot)) {
|
|
70
|
+
console.log(chalk.blue("š No saved session found, running login script...\n"));
|
|
71
|
+
const { loginCommand } = await import("./login.js");
|
|
72
|
+
await loginCommand();
|
|
73
|
+
// loginCommand absorbs LoginError and sets exitCode internally.
|
|
74
|
+
// If no auth-state was produced, abort capture so we don't screenshot
|
|
75
|
+
// the login screen.
|
|
76
|
+
if (!hasAuthState(projectRoot)) {
|
|
77
|
+
process.exitCode = 1;
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
ensureStagingDirs(projectRoot);
|
|
82
|
+
const threshold = options.threshold
|
|
83
|
+
? Number.parseFloat(options.threshold)
|
|
84
|
+
: (config.screenshot.defaultDiffThreshold ?? 0.005);
|
|
85
|
+
const remote = createS3Canonical(config);
|
|
86
|
+
const outputDir = getOutputDir(config, projectRoot);
|
|
87
|
+
const stagingDir = getStagingDir(projectRoot);
|
|
88
|
+
if (remote) {
|
|
89
|
+
console.log(chalk.gray(` canonical: ${remote.label()}`));
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
console.log(chalk.gray(` canonical: ${outputDir} (local)`));
|
|
93
|
+
}
|
|
94
|
+
// 1. Capture into staging (annotated)
|
|
95
|
+
console.log(chalk.blue(`\nšø Capturing ${definitions.length} screenshot(s) to staging...\n`));
|
|
96
|
+
const failures = await captureScreenshots(config, definitions, projectRoot, {
|
|
97
|
+
outputDir: stagingDir,
|
|
98
|
+
});
|
|
99
|
+
const failureReasons = new Map(failures.map((f) => [f.id, f.reason]));
|
|
100
|
+
// 2. Diff each staging vs canonical
|
|
101
|
+
const results = [];
|
|
102
|
+
// Track final paths (where the user can find each capture after the run)
|
|
103
|
+
const finalPathFor = new Map();
|
|
104
|
+
const promote = async (id, stagingPath, canonicalPath) => {
|
|
105
|
+
fs.mkdirSync(outputDir, { recursive: true });
|
|
106
|
+
// Push to remote first so a failure doesn't leave local ahead of S3
|
|
107
|
+
if (remote) {
|
|
108
|
+
await remote.push(id, stagingPath);
|
|
109
|
+
}
|
|
110
|
+
fs.copyFileSync(stagingPath, canonicalPath);
|
|
111
|
+
fs.rmSync(stagingPath, { force: true });
|
|
112
|
+
finalPathFor.set(id, canonicalPath);
|
|
113
|
+
};
|
|
114
|
+
// Either copy staging ā canonical (default), or just remember the staging
|
|
115
|
+
// path so the user can inspect it (dry-run).
|
|
116
|
+
const applyOrStage = async (id, stagingPath, canonicalPath) => {
|
|
117
|
+
if (dryRun) {
|
|
118
|
+
finalPathFor.set(id, stagingPath);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
await promote(id, stagingPath, canonicalPath);
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
for (const def of definitions) {
|
|
125
|
+
const canonicalPath = getCanonicalPath(config, projectRoot, def.id);
|
|
126
|
+
const stagingPath = getStagingPath(projectRoot, def.id);
|
|
127
|
+
const diffPath = getReportDiffPath(projectRoot, def.id);
|
|
128
|
+
if (!fs.existsSync(stagingPath)) {
|
|
129
|
+
results.push({
|
|
130
|
+
id: def.id,
|
|
131
|
+
status: "missing",
|
|
132
|
+
reason: failureReasons.get(def.id),
|
|
133
|
+
});
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
// Pull canonical from remote (S3) into outputDir; for local mode just check existence
|
|
137
|
+
const fetchResult = remote
|
|
138
|
+
? await remote.fetch(def.id, canonicalPath)
|
|
139
|
+
: fs.existsSync(canonicalPath)
|
|
140
|
+
? "ok"
|
|
141
|
+
: "not-found";
|
|
142
|
+
// New: no canonical yet ā adopt staging as canonical (unless dry-run)
|
|
143
|
+
if (fetchResult === "not-found") {
|
|
144
|
+
await applyOrStage(def.id, stagingPath, canonicalPath);
|
|
145
|
+
results.push({ id: def.id, status: "new" });
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
const result = await diffImages(canonicalPath, stagingPath, diffPath);
|
|
149
|
+
if (result.match) {
|
|
150
|
+
results.push({ id: def.id, status: "unchanged" });
|
|
151
|
+
fs.rmSync(diffPath, { force: true });
|
|
152
|
+
fs.rmSync(stagingPath, { force: true });
|
|
153
|
+
finalPathFor.set(def.id, canonicalPath);
|
|
154
|
+
}
|
|
155
|
+
else if (result.reason === "layout-diff") {
|
|
156
|
+
await applyOrStage(def.id, stagingPath, canonicalPath);
|
|
157
|
+
results.push({
|
|
158
|
+
id: def.id,
|
|
159
|
+
status: "changed",
|
|
160
|
+
reason: "layout-diff",
|
|
161
|
+
canonical: result.canonical,
|
|
162
|
+
staging: result.staging,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
await applyOrStage(def.id, stagingPath, canonicalPath);
|
|
167
|
+
results.push({
|
|
168
|
+
id: def.id,
|
|
169
|
+
status: "changed",
|
|
170
|
+
reason: "pixel-diff",
|
|
171
|
+
diffPercentage: result.diffPercentage,
|
|
172
|
+
diffPath,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// 3. Print summary
|
|
177
|
+
const changed = results.filter((r) => r.status === "changed");
|
|
178
|
+
const unchanged = results.filter((r) => r.status === "unchanged");
|
|
179
|
+
const newly = results.filter((r) => r.status === "new");
|
|
180
|
+
const missing = results.filter((r) => r.status === "missing");
|
|
23
181
|
for (const r of results) {
|
|
24
|
-
|
|
182
|
+
if (r.status === "unchanged") {
|
|
183
|
+
console.log(chalk.gray(` ā ${r.id}`));
|
|
184
|
+
}
|
|
185
|
+
else if (r.status === "new") {
|
|
186
|
+
const action = dryRun ? "would be added" : "added to canonical";
|
|
187
|
+
console.log(chalk.cyan(` + ${r.id} (${action})`));
|
|
188
|
+
}
|
|
189
|
+
else if (r.status === "missing") {
|
|
190
|
+
const detail = r.reason ? `: ${r.reason}` : "";
|
|
191
|
+
console.log(chalk.red(` ā ${r.id} (capture failed${detail})`));
|
|
192
|
+
}
|
|
193
|
+
else if (r.status === "changed") {
|
|
194
|
+
const detail = r.reason === "pixel-diff"
|
|
195
|
+
? `${r.diffPercentage.toFixed(2)}%`
|
|
196
|
+
: `layout-diff: ${r.canonical.width}Ć${r.canonical.height} ā ${r.staging.width}Ć${r.staging.height}`;
|
|
197
|
+
const action = dryRun ? "ā would update" : "ā updated";
|
|
198
|
+
console.log(chalk.yellow(` ~ ${r.id} (${detail}) ${chalk.gray(action)}`));
|
|
199
|
+
if (r.reason === "pixel-diff") {
|
|
200
|
+
console.log(chalk.gray(` ā³ ${r.diffPath}`));
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// 4. Cleanup staging ā applied entries are already removed individually,
|
|
205
|
+
// so this only matters when nothing changed (everything was unchanged).
|
|
206
|
+
if (changed.length === 0 && newly.length === 0) {
|
|
207
|
+
cleanupStaging(projectRoot);
|
|
208
|
+
}
|
|
209
|
+
console.log("");
|
|
210
|
+
console.log(chalk.bold(`changed: ${changed.length} / unchanged: ${unchanged.length} / new: ${newly.length}` +
|
|
211
|
+
(missing.length > 0 ? ` / missing: ${missing.length}` : "")));
|
|
212
|
+
if (dryRun && (changed.length > 0 || newly.length > 0)) {
|
|
213
|
+
console.log(chalk.gray(`\nDrop --dry-run to update canonical${remote ? ` (${remote.label()})` : ""}.`));
|
|
214
|
+
}
|
|
215
|
+
// 5. Write the structured report.
|
|
216
|
+
// `reports/summary.json` is part of kagemusha's PUBLIC API ā see README
|
|
217
|
+
// "Notifications" section. Bump `schemaVersion` (or kagemusha major) on
|
|
218
|
+
// breaking changes to the shape.
|
|
219
|
+
writeSummaryReport(projectRoot, {
|
|
220
|
+
schemaVersion: SUMMARY_SCHEMA_VERSION,
|
|
221
|
+
timestamp: new Date().toISOString(),
|
|
222
|
+
dryRun,
|
|
223
|
+
canonical: remote ? remote.label() : `${outputDir} (local)`,
|
|
224
|
+
counts: {
|
|
225
|
+
changed: changed.length,
|
|
226
|
+
unchanged: unchanged.length,
|
|
227
|
+
new: newly.length,
|
|
228
|
+
missing: missing.length,
|
|
229
|
+
},
|
|
230
|
+
results,
|
|
231
|
+
});
|
|
232
|
+
// 6. Open changed/new results in default viewer
|
|
233
|
+
if (options.open) {
|
|
234
|
+
for (const r of [...changed, ...newly]) {
|
|
235
|
+
const p = finalPathFor.get(r.id);
|
|
236
|
+
if (p && fs.existsSync(p)) {
|
|
237
|
+
openInDefaultApp(p);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// Exit code: 1 if dry-run found pixel diffs over threshold (CI gate use case)
|
|
242
|
+
if (dryRun) {
|
|
243
|
+
const overThreshold = changed.filter((r) => r.status === "changed" &&
|
|
244
|
+
r.reason === "pixel-diff" &&
|
|
245
|
+
r.diffPercentage / 100 > threshold);
|
|
246
|
+
if (overThreshold.length > 0) {
|
|
247
|
+
process.exitCode = 1;
|
|
248
|
+
}
|
|
25
249
|
}
|
|
26
|
-
|
|
250
|
+
console.log("");
|
|
251
|
+
};
|
|
27
252
|
//# sourceMappingURL=capture.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO1D,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAuB;IAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;IAElE,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACvC,IAAI,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAE/C,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAC9D,OAAO;IACR,CAAC;IAED,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,IAAI,CAAC,gBAAgB,WAAW,CAAC,MAAM,mBAAmB,CAAC,CACjE,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAE3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACrD,MAAM,mBAAmB,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAE7D,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,+CAA+C,CAAC,CACjE,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,eAAe,QAAa,OAAO,CAAC,IAAI,CAsEpD,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { findProjectRoot, loadConfig, loadDefinitions, saveDefinitions, } from "../lib/config.js";
|
|
3
|
+
import { discoverPages } from "../lib/crawl.js";
|
|
4
|
+
import { deriveIdFromPath } from "../lib/definition.js";
|
|
5
|
+
export const discoverCommand = async () => {
|
|
6
|
+
console.log(chalk.bold("\nš„· Kagemusha ā Discover Pages\n"));
|
|
7
|
+
const projectRoot = findProjectRoot();
|
|
8
|
+
const config = loadConfig(projectRoot);
|
|
9
|
+
console.log(chalk.blue(`š Crawling ${config.app.baseUrl} for pages...\n`));
|
|
10
|
+
let pages = [];
|
|
11
|
+
try {
|
|
12
|
+
pages = await discoverPages(config.app.baseUrl, projectRoot);
|
|
13
|
+
}
|
|
14
|
+
catch (e) {
|
|
15
|
+
console.log(chalk.red(`\nā Failed to crawl: ${e instanceof Error ? e.message : e}\n`));
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (pages.length === 0) {
|
|
19
|
+
console.log(chalk.yellow("\nā No pages discovered.\n"));
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
console.log(chalk.green(`\n Found ${pages.length} page(s)\n`));
|
|
23
|
+
const inquirer = await import("inquirer");
|
|
24
|
+
const { selected } = await inquirer.default.prompt({
|
|
25
|
+
type: "checkbox",
|
|
26
|
+
name: "selected",
|
|
27
|
+
message: `Select pages to add (${pages.length} found):`,
|
|
28
|
+
choices: pages.map((p) => ({
|
|
29
|
+
name: `${p.path} ${chalk.gray(p.title)}`,
|
|
30
|
+
value: p.path,
|
|
31
|
+
checked: true,
|
|
32
|
+
})),
|
|
33
|
+
pageSize: 30,
|
|
34
|
+
loop: false,
|
|
35
|
+
});
|
|
36
|
+
// Clear inquirer's verbose answer output
|
|
37
|
+
process.stdout.write("\x1B[1A\x1B[2K");
|
|
38
|
+
if (selected.length === 0) {
|
|
39
|
+
console.log(chalk.yellow("\nā No pages selected.\n"));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const definitions = loadDefinitions(projectRoot);
|
|
43
|
+
const existingIds = new Set(definitions.map((d) => d.id));
|
|
44
|
+
let added = 0;
|
|
45
|
+
for (const pagePath of selected) {
|
|
46
|
+
const id = deriveIdFromPath(pagePath);
|
|
47
|
+
if (existingIds.has(id))
|
|
48
|
+
continue;
|
|
49
|
+
definitions.push({
|
|
50
|
+
id,
|
|
51
|
+
name: id,
|
|
52
|
+
url: pagePath,
|
|
53
|
+
capture: { mode: "fullPage" },
|
|
54
|
+
hideElements: [],
|
|
55
|
+
decorations: [],
|
|
56
|
+
});
|
|
57
|
+
added++;
|
|
58
|
+
}
|
|
59
|
+
saveDefinitions(definitions, projectRoot);
|
|
60
|
+
console.log(chalk.bold.green(`ā
Added ${added} new definition(s)\n`));
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=discover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../src/commands/edit.ts"],"names":[],"mappings":"AAaA,UAAU,WAAW;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;CACZ;AAUD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgJrE"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
import { defaultContextOptions } from "../lib/auth.js";
|
|
6
|
+
import { findProjectRoot, loadConfig, loadDefinitions, saveDefinitions, } from "../lib/config.js";
|
|
7
|
+
const loadEditorScript = () => {
|
|
8
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
const scriptPath = path.join(__dirname, "..", "editor", "inject-script.js");
|
|
10
|
+
return fs
|
|
11
|
+
.readFileSync(scriptPath, "utf-8")
|
|
12
|
+
.replace(/^export\s*\{\s*\};?\s*$/m, "");
|
|
13
|
+
};
|
|
14
|
+
export async function editCommand(options) {
|
|
15
|
+
console.log(chalk.bold("\nš„· Kagemusha ā Annotation Editor\n"));
|
|
16
|
+
const projectRoot = findProjectRoot();
|
|
17
|
+
const config = loadConfig(projectRoot);
|
|
18
|
+
let definitions = loadDefinitions(projectRoot);
|
|
19
|
+
if (options.id) {
|
|
20
|
+
definitions = definitions.filter((d) => d.id === options.id);
|
|
21
|
+
}
|
|
22
|
+
if (definitions.length === 0) {
|
|
23
|
+
console.log(chalk.red("No definitions found."));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (definitions.length > 1) {
|
|
27
|
+
const inquirer = await import("inquirer");
|
|
28
|
+
const { selected } = await inquirer.default.prompt({
|
|
29
|
+
type: "list",
|
|
30
|
+
name: "selected",
|
|
31
|
+
message: "Which page to edit?",
|
|
32
|
+
choices: definitions.map((d) => ({ name: d.id, value: d.id })),
|
|
33
|
+
});
|
|
34
|
+
definitions = definitions.filter((d) => d.id === selected);
|
|
35
|
+
}
|
|
36
|
+
const def = definitions[0];
|
|
37
|
+
const { chromium } = await import("playwright-chromium");
|
|
38
|
+
const browser = await chromium.launch({
|
|
39
|
+
headless: false,
|
|
40
|
+
args: ["--start-maximized"],
|
|
41
|
+
});
|
|
42
|
+
const context = await browser.newContext(defaultContextOptions(config, projectRoot));
|
|
43
|
+
const page = await context.newPage();
|
|
44
|
+
// Maximize the OS window via CDP ā `--start-maximized` is a hint that
|
|
45
|
+
// macOS often ignores. CDP's setWindowBounds is authoritative.
|
|
46
|
+
const cdp = await context.newCDPSession(page);
|
|
47
|
+
try {
|
|
48
|
+
const { windowId } = (await cdp.send("Browser.getWindowForTarget"));
|
|
49
|
+
await cdp.send("Browser.setWindowBounds", {
|
|
50
|
+
windowId,
|
|
51
|
+
bounds: { windowState: "maximized" },
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// CDP unavailable on some channels ā fall through with default size
|
|
56
|
+
}
|
|
57
|
+
const urlPath = def.url.replace(/\{(\w+)\}/g, (_, key) => def.urlParams?.[key] ?? "");
|
|
58
|
+
const fullUrl = new URL(urlPath, config.app.baseUrl).toString();
|
|
59
|
+
console.log(chalk.blue(`š Opening ${fullUrl}...`));
|
|
60
|
+
await page.goto(fullUrl, { waitUntil: "networkidle" });
|
|
61
|
+
if (def.hideElements?.length) {
|
|
62
|
+
for (const selector of def.hideElements) {
|
|
63
|
+
await page.evaluate((sel) => {
|
|
64
|
+
document.querySelectorAll(sel).forEach((el) => {
|
|
65
|
+
el.style.display = "none";
|
|
66
|
+
});
|
|
67
|
+
}, selector);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Expose save function from Node.js to browser
|
|
71
|
+
let savedCount = 0;
|
|
72
|
+
let saveResolve;
|
|
73
|
+
const savePromise = new Promise((resolve) => {
|
|
74
|
+
saveResolve = resolve;
|
|
75
|
+
});
|
|
76
|
+
// Expose save function BEFORE injecting script
|
|
77
|
+
await page.exposeFunction("__kagemusha_save", (payloadJson) => {
|
|
78
|
+
const payload = JSON.parse(payloadJson);
|
|
79
|
+
savedCount = payload.decorations?.length ?? 0;
|
|
80
|
+
// Update this definition in the full list and save
|
|
81
|
+
const allDefs = loadDefinitions(projectRoot);
|
|
82
|
+
const idx = allDefs.findIndex((d) => d.id === def.id);
|
|
83
|
+
if (idx >= 0) {
|
|
84
|
+
allDefs[idx] = {
|
|
85
|
+
...def,
|
|
86
|
+
decorations: payload.decorations,
|
|
87
|
+
capture: payload.capture,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
saveDefinitions(allDefs, projectRoot);
|
|
91
|
+
saveResolve();
|
|
92
|
+
});
|
|
93
|
+
// Inject editor script ā DPR is read from window.devicePixelRatio inside,
|
|
94
|
+
// which matches the value set on the browser context above.
|
|
95
|
+
const editorScript = loadEditorScript();
|
|
96
|
+
await page.evaluate(editorScript);
|
|
97
|
+
// Load existing annotations (script is now loaded)
|
|
98
|
+
if (def.decorations?.length) {
|
|
99
|
+
await page.evaluate((decs) => {
|
|
100
|
+
window.__kagemusha_loadAnnotations(decs);
|
|
101
|
+
}, def.decorations);
|
|
102
|
+
}
|
|
103
|
+
// Load existing capture config
|
|
104
|
+
await page.evaluate((cap) => {
|
|
105
|
+
window.__kagemusha_loadCapture(cap);
|
|
106
|
+
}, def.capture);
|
|
107
|
+
console.log(chalk.blue("šØ Editor ready. Draw annotations, then click Save.\n"));
|
|
108
|
+
// Wait for save or browser close
|
|
109
|
+
try {
|
|
110
|
+
await savePromise;
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
console.log(chalk.yellow("\nā Editor closed without saving.\n"));
|
|
114
|
+
await browser.close().catch(() => { });
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
await browser.close();
|
|
118
|
+
console.log(chalk.bold.green(`\nā
Saved ${savedCount} annotation(s) for ${def.id}\n`));
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/commands/edit.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare
|
|
1
|
+
export declare const initCommand: () => Promise<void>;
|
|
2
2
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CAmQhD,CAAC"}
|