@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
package/dist/lib/diff.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import pixelmatch from "pixelmatch";
|
|
4
|
+
import { PNG } from "pngjs";
|
|
5
|
+
const readPng = (filePath) => PNG.sync.read(fs.readFileSync(filePath));
|
|
6
|
+
/**
|
|
7
|
+
* Compare two PNG files using pixelmatch and write the diff visualization.
|
|
8
|
+
* If dimensions differ, returns layout-diff without writing a diff image.
|
|
9
|
+
*/
|
|
10
|
+
export const diffImages = async (baseline, current, diffPath, options = {}) => {
|
|
11
|
+
const a = readPng(baseline);
|
|
12
|
+
const b = readPng(current);
|
|
13
|
+
if (a.width !== b.width || a.height !== b.height) {
|
|
14
|
+
return {
|
|
15
|
+
match: false,
|
|
16
|
+
reason: "layout-diff",
|
|
17
|
+
canonical: { width: a.width, height: a.height },
|
|
18
|
+
staging: { width: b.width, height: b.height },
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const { width, height } = a;
|
|
22
|
+
const diff = new PNG({ width, height });
|
|
23
|
+
const diffCount = pixelmatch(a.data, b.data, diff.data, width, height, {
|
|
24
|
+
threshold: options.pixelThreshold ?? 0.1,
|
|
25
|
+
// pixelmatch's `includeAA: true` means "check AA pixels" (= flag them).
|
|
26
|
+
// Our `ignoreAntiAliasing` defaults true (= skip AA), so we invert.
|
|
27
|
+
includeAA: options.ignoreAntiAliasing === false,
|
|
28
|
+
});
|
|
29
|
+
if (diffCount === 0) {
|
|
30
|
+
return { match: true };
|
|
31
|
+
}
|
|
32
|
+
fs.mkdirSync(path.dirname(diffPath), { recursive: true });
|
|
33
|
+
fs.writeFileSync(diffPath, PNG.sync.write(diff));
|
|
34
|
+
return {
|
|
35
|
+
match: false,
|
|
36
|
+
reason: "pixel-diff",
|
|
37
|
+
diffCount,
|
|
38
|
+
diffPercentage: (diffCount / (width * height)) * 100,
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/lib/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAgD5B,MAAM,OAAO,GAAG,CAAC,QAAgB,EAAO,EAAE,CACzC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC9B,QAAgB,EAChB,OAAe,EACf,QAAgB,EAChB,UAAuB,EAAE,EACH,EAAE;IACxB,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3B,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAClD,OAAO;YACN,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,aAAa;YACrB,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;YAC/C,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SAC7C,CAAC;IACH,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAExC,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;QACtE,SAAS,EAAE,OAAO,CAAC,cAAc,IAAI,GAAG;QACxC,wEAAwE;QACxE,oEAAoE;QACpE,SAAS,EAAE,OAAO,CAAC,kBAAkB,KAAK,KAAK;KAC/C,CAAC,CAAC;IAEH,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAEjD,OAAO;QACN,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,YAAY;QACpB,SAAS;QACT,cAAc,EAAE,CAAC,SAAS,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,GAAG;KACpD,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marker error thrown by `kagemusha login` after it has already printed a
|
|
3
|
+
* friendly diagnostic + screenshot path to stderr. Callers (e.g. capture)
|
|
4
|
+
* should treat this as "already explained, just exit" ā no extra log, no
|
|
5
|
+
* stack trace.
|
|
6
|
+
*/
|
|
7
|
+
export declare class LoginError extends Error {
|
|
8
|
+
constructor(message: string);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=login-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login-error.d.ts","sourceRoot":"","sources":["../../src/lib/login-error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,UAAW,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI3B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marker error thrown by `kagemusha login` after it has already printed a
|
|
3
|
+
* friendly diagnostic + screenshot path to stderr. Callers (e.g. capture)
|
|
4
|
+
* should treat this as "already explained, just exit" ā no extra log, no
|
|
5
|
+
* stack trace.
|
|
6
|
+
*/
|
|
7
|
+
export class LoginError extends Error {
|
|
8
|
+
constructor(message) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = "LoginError";
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=login-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login-error.js","sourceRoot":"","sources":["../../src/lib/login-error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IACpC,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC1B,CAAC;CACD"}
|
package/dist/lib/screenshot.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export
|
|
1
|
+
import type { KagemushaConfig, ScreenshotDefinition } from "../types.js";
|
|
2
|
+
export interface CaptureFailure {
|
|
3
|
+
id: string;
|
|
4
|
+
reason: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const captureScreenshots: (config: KagemushaConfig, definitions: ScreenshotDefinition[], projectRoot: string, options?: {
|
|
7
|
+
outputDir?: string;
|
|
8
|
+
}) => Promise<CaptureFailure[]>;
|
|
3
9
|
//# sourceMappingURL=screenshot.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../src/lib/screenshot.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEX,
|
|
1
|
+
{"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../src/lib/screenshot.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEX,eAAe,EACf,oBAAoB,EACpB,MAAM,aAAa,CAAC;AAmBrB,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,kBAAkB,GAC9B,QAAQ,eAAe,EACvB,aAAa,oBAAoB,EAAE,EACnC,aAAa,MAAM,EACnB,UAAS;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,KAClC,OAAO,CAAC,cAAc,EAAE,CA6B1B,CAAC"}
|
package/dist/lib/screenshot.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
|
|
3
|
+
import { drawAnnotations } from "./annotate.js";
|
|
4
|
+
import { defaultContextOptions } from "./auth.js";
|
|
5
|
+
import { getOutputDir } from "./canonical.js";
|
|
6
|
+
const loadPlaywright = async () => {
|
|
4
7
|
try {
|
|
5
8
|
return await import("playwright-chromium");
|
|
6
9
|
}
|
|
@@ -8,43 +11,33 @@ async function loadPlaywright() {
|
|
|
8
11
|
throw new Error("Playwright is required for screenshot capture.\n" +
|
|
9
12
|
"Install it with: npm install -D playwright && npx playwright install chromium");
|
|
10
13
|
}
|
|
11
|
-
}
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
const outputDir = path.join(projectRoot, SCREENSHOTS_DIR);
|
|
14
|
+
};
|
|
15
|
+
export const captureScreenshots = async (config, definitions, projectRoot, options = {}) => {
|
|
16
|
+
const outputDir = options.outputDir ?? getOutputDir(config, projectRoot);
|
|
15
17
|
fs.mkdirSync(outputDir, { recursive: true });
|
|
16
18
|
const { chromium } = await loadPlaywright();
|
|
17
19
|
const browser = await chromium.launch({ headless: true });
|
|
18
|
-
const
|
|
20
|
+
const failures = [];
|
|
19
21
|
try {
|
|
20
|
-
const context = await
|
|
22
|
+
const context = await browser.newContext(defaultContextOptions(config, projectRoot));
|
|
21
23
|
for (const def of definitions) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
try {
|
|
25
|
+
await captureOne(context, config, def, outputDir);
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
const reason = e instanceof Error ? e.message : String(e);
|
|
29
|
+
failures.push({ id: def.id, reason });
|
|
30
|
+
console.error(` ā ${def.id}: ${reason}`);
|
|
31
|
+
}
|
|
24
32
|
}
|
|
25
33
|
await context.close();
|
|
26
34
|
}
|
|
27
35
|
finally {
|
|
28
36
|
await browser.close();
|
|
29
37
|
}
|
|
30
|
-
return
|
|
31
|
-
}
|
|
32
|
-
async
|
|
33
|
-
const viewport = config.screenshot.defaultViewport;
|
|
34
|
-
const context = await browser.newContext({
|
|
35
|
-
viewport: { width: viewport.width, height: viewport.height },
|
|
36
|
-
deviceScaleFactor: viewport.deviceScaleFactor ?? 2,
|
|
37
|
-
});
|
|
38
|
-
if (config.auth) {
|
|
39
|
-
const page = await context.newPage();
|
|
40
|
-
const loginUrl = new URL(config.auth.loginUrl, config.app.baseUrl).toString();
|
|
41
|
-
await page.goto(loginUrl);
|
|
42
|
-
await executeActions(page, config.auth.steps);
|
|
43
|
-
await page.close();
|
|
44
|
-
}
|
|
45
|
-
return context;
|
|
46
|
-
}
|
|
47
|
-
async function captureOne(context, config, def, outputDir) {
|
|
38
|
+
return failures;
|
|
39
|
+
};
|
|
40
|
+
const captureOne = async (context, config, def, outputDir) => {
|
|
48
41
|
const page = await context.newPage();
|
|
49
42
|
if (def.viewport) {
|
|
50
43
|
await page.setViewportSize({
|
|
@@ -53,43 +46,31 @@ async function captureOne(context, config, def, outputDir) {
|
|
|
53
46
|
});
|
|
54
47
|
}
|
|
55
48
|
const url = resolveUrl(config.app.baseUrl, def.url, def.urlParams);
|
|
56
|
-
await page.goto(url, { waitUntil: "networkidle" });
|
|
49
|
+
await page.goto(url, { waitUntil: "networkidle", timeout: 60000 });
|
|
57
50
|
if (def.hideElements?.length) {
|
|
58
51
|
await hideElements(page, def.hideElements);
|
|
59
52
|
}
|
|
60
53
|
if (def.beforeCapture?.length) {
|
|
61
54
|
await executeActions(page, def.beforeCapture);
|
|
62
55
|
}
|
|
63
|
-
const
|
|
64
|
-
await takeScreenshot(page, def, rawPath);
|
|
56
|
+
const buffer = await takeScreenshotBuffer(page, def);
|
|
65
57
|
await page.close();
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
58
|
+
const finalPath = path.join(outputDir, `${def.id}.png`);
|
|
59
|
+
if (def.decorations?.length) {
|
|
60
|
+
const dpr = config.screenshot.defaultViewport.deviceScaleFactor ?? 2;
|
|
61
|
+
await drawAnnotations(buffer, finalPath, def.decorations, def.capture, dpr);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
fs.writeFileSync(finalPath, buffer);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
const takeScreenshotBuffer = async (page, def) => {
|
|
75
68
|
switch (def.capture.mode) {
|
|
76
69
|
case "fullPage":
|
|
77
|
-
await page.screenshot({
|
|
78
|
-
break;
|
|
79
|
-
case "selector": {
|
|
80
|
-
const element = await page.waitForSelector(def.capture.selector, {
|
|
81
|
-
timeout: 10000,
|
|
82
|
-
});
|
|
83
|
-
if (!element) {
|
|
84
|
-
throw new Error(`Element not found: ${def.capture.selector} (definition: ${def.id})`);
|
|
85
|
-
}
|
|
86
|
-
await element.screenshot({ path: outputPath });
|
|
87
|
-
break;
|
|
88
|
-
}
|
|
70
|
+
return await page.screenshot({ fullPage: true });
|
|
89
71
|
case "crop": {
|
|
90
72
|
const { start, end } = def.capture.crop;
|
|
91
|
-
await page.screenshot({
|
|
92
|
-
path: outputPath,
|
|
73
|
+
return await page.screenshot({
|
|
93
74
|
clip: {
|
|
94
75
|
x: start.x,
|
|
95
76
|
y: start.y,
|
|
@@ -97,11 +78,13 @@ async function takeScreenshot(page, def, outputPath) {
|
|
|
97
78
|
height: end.y - start.y,
|
|
98
79
|
},
|
|
99
80
|
});
|
|
100
|
-
break;
|
|
101
81
|
}
|
|
82
|
+
default:
|
|
83
|
+
console.warn(` ā ${def.id}: unknown capture mode "${def.capture.mode}", falling back to fullPage.`);
|
|
84
|
+
return await page.screenshot({ fullPage: true });
|
|
102
85
|
}
|
|
103
|
-
}
|
|
104
|
-
async
|
|
86
|
+
};
|
|
87
|
+
const executeActions = async (page, actions) => {
|
|
105
88
|
for (const action of actions) {
|
|
106
89
|
switch (action.action) {
|
|
107
90
|
case "click":
|
|
@@ -144,8 +127,8 @@ async function executeActions(page, actions) {
|
|
|
144
127
|
break;
|
|
145
128
|
}
|
|
146
129
|
}
|
|
147
|
-
}
|
|
148
|
-
async
|
|
130
|
+
};
|
|
131
|
+
const hideElements = async (page, selectors) => {
|
|
149
132
|
for (const selector of selectors) {
|
|
150
133
|
await page.evaluate((sel) => {
|
|
151
134
|
document.querySelectorAll(sel).forEach((el) => {
|
|
@@ -153,8 +136,8 @@ async function hideElements(page, selectors) {
|
|
|
153
136
|
});
|
|
154
137
|
}, selector);
|
|
155
138
|
}
|
|
156
|
-
}
|
|
157
|
-
|
|
139
|
+
};
|
|
140
|
+
const resolveUrl = (baseUrl, urlPath, params) => {
|
|
158
141
|
let resolved = urlPath;
|
|
159
142
|
if (params) {
|
|
160
143
|
for (const [key, value] of Object.entries(params)) {
|
|
@@ -162,5 +145,5 @@ function resolveUrl(baseUrl, urlPath, params) {
|
|
|
162
145
|
}
|
|
163
146
|
}
|
|
164
147
|
return new URL(resolved, baseUrl).toString();
|
|
165
|
-
}
|
|
148
|
+
};
|
|
166
149
|
//# sourceMappingURL=screenshot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../src/lib/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../src/lib/screenshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const getStagingDir: (projectRoot: string) => string;
|
|
2
|
+
export declare const getStagingPath: (projectRoot: string, id: string) => string;
|
|
3
|
+
export declare const getReportDiffPath: (projectRoot: string, id: string) => string;
|
|
4
|
+
export declare const ensureStagingDirs: (projectRoot: string) => void;
|
|
5
|
+
/** Move staging file to canonical location, overwriting if it exists. */
|
|
6
|
+
export declare const promoteToCanonical: (stagingPath: string, canonicalPath: string) => void;
|
|
7
|
+
export declare const cleanupStaging: (projectRoot: string) => void;
|
|
8
|
+
//# sourceMappingURL=staging.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staging.d.ts","sourceRoot":"","sources":["../../src/lib/staging.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,GAAI,aAAa,MAAM,KAAG,MAChB,CAAC;AAErC,eAAO,MAAM,cAAc,GAAI,aAAa,MAAM,EAAE,IAAI,MAAM,KAAG,MAChB,CAAC;AAElD,eAAO,MAAM,iBAAiB,GAAI,aAAa,MAAM,EAAE,IAAI,MAAM,KAAG,MACd,CAAC;AAEvD,eAAO,MAAM,iBAAiB,GAAI,aAAa,MAAM,KAAG,IAGvD,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,GAC9B,aAAa,MAAM,EACnB,eAAe,MAAM,KACnB,IAIF,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,aAAa,MAAM,KAAG,IAKpD,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
const STAGING_DIR = path.join(".kagemusha", ".staging");
|
|
4
|
+
const REPORTS_DIR = path.join("reports", "diff");
|
|
5
|
+
export const getStagingDir = (projectRoot) => path.join(projectRoot, STAGING_DIR);
|
|
6
|
+
export const getStagingPath = (projectRoot, id) => path.join(projectRoot, STAGING_DIR, `${id}.png`);
|
|
7
|
+
export const getReportDiffPath = (projectRoot, id) => path.join(projectRoot, REPORTS_DIR, `${id}.diff.png`);
|
|
8
|
+
export const ensureStagingDirs = (projectRoot) => {
|
|
9
|
+
fs.mkdirSync(getStagingDir(projectRoot), { recursive: true });
|
|
10
|
+
fs.mkdirSync(path.join(projectRoot, REPORTS_DIR), { recursive: true });
|
|
11
|
+
};
|
|
12
|
+
/** Move staging file to canonical location, overwriting if it exists. */
|
|
13
|
+
export const promoteToCanonical = (stagingPath, canonicalPath) => {
|
|
14
|
+
fs.mkdirSync(path.dirname(canonicalPath), { recursive: true });
|
|
15
|
+
fs.copyFileSync(stagingPath, canonicalPath);
|
|
16
|
+
fs.rmSync(stagingPath, { force: true });
|
|
17
|
+
};
|
|
18
|
+
export const cleanupStaging = (projectRoot) => {
|
|
19
|
+
const dir = getStagingDir(projectRoot);
|
|
20
|
+
if (fs.existsSync(dir)) {
|
|
21
|
+
fs.rmSync(dir, { recursive: true, force: true });
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=staging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staging.js","sourceRoot":"","sources":["../../src/lib/staging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACxD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAEjD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,WAAmB,EAAU,EAAE,CAC5D,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAErC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,WAAmB,EAAE,EAAU,EAAU,EAAE,CACzE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAElD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,WAAmB,EAAE,EAAU,EAAU,EAAE,CAC5E,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,WAAmB,EAAQ,EAAE;IAC9D,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,yEAAyE;AACzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CACjC,WAAmB,EACnB,aAAqB,EACd,EAAE;IACT,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC5C,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,WAAmB,EAAQ,EAAE;IAC3D,MAAM,GAAG,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IACvC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;AACF,CAAC,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -2,14 +2,13 @@ export interface KagemushaConfig {
|
|
|
2
2
|
app: {
|
|
3
3
|
baseUrl: string;
|
|
4
4
|
};
|
|
5
|
-
auth?: {
|
|
6
|
-
loginUrl: string;
|
|
7
|
-
steps: CaptureAction[];
|
|
8
|
-
};
|
|
9
5
|
screenshot: {
|
|
10
6
|
defaultViewport: Viewport;
|
|
11
7
|
defaultDiffThreshold: number;
|
|
12
8
|
};
|
|
9
|
+
auth?: {
|
|
10
|
+
scriptPath?: string;
|
|
11
|
+
};
|
|
13
12
|
publish?: {
|
|
14
13
|
destination: "local" | "s3" | "intercom";
|
|
15
14
|
outputDir?: string;
|
|
@@ -39,7 +38,7 @@ export interface ScreenshotDefinition {
|
|
|
39
38
|
urlParams?: Record<string, string>;
|
|
40
39
|
viewport?: Viewport;
|
|
41
40
|
beforeCapture?: CaptureAction[];
|
|
42
|
-
capture:
|
|
41
|
+
capture: CaptureSpec;
|
|
43
42
|
decorations?: Decoration[];
|
|
44
43
|
hideElements?: string[];
|
|
45
44
|
intercom?: {
|
|
@@ -79,11 +78,8 @@ export type CaptureAction = {
|
|
|
79
78
|
action: "evaluate";
|
|
80
79
|
script: string;
|
|
81
80
|
};
|
|
82
|
-
export type
|
|
81
|
+
export type CaptureSpec = {
|
|
83
82
|
mode: "fullPage";
|
|
84
|
-
} | {
|
|
85
|
-
mode: "selector";
|
|
86
|
-
selector: string;
|
|
87
83
|
} | {
|
|
88
84
|
mode: "crop";
|
|
89
85
|
crop: {
|
|
@@ -151,18 +147,4 @@ export interface LabelDecoration {
|
|
|
151
147
|
background?: string;
|
|
152
148
|
};
|
|
153
149
|
}
|
|
154
|
-
export interface CaptureResult {
|
|
155
|
-
id: string;
|
|
156
|
-
rawPath: string;
|
|
157
|
-
annotatedPath: string;
|
|
158
|
-
timestamp: string;
|
|
159
|
-
}
|
|
160
|
-
export interface CompareResult {
|
|
161
|
-
id: string;
|
|
162
|
-
status: "unchanged" | "minor" | "changed";
|
|
163
|
-
diffRate: number;
|
|
164
|
-
beforePath?: string;
|
|
165
|
-
afterPath?: string;
|
|
166
|
-
diffPath?: string;
|
|
167
|
-
}
|
|
168
150
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC/B,GAAG,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wasao/kagemusha",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Auto-update help center screenshots when your code changes. The shadow warrior for your documentation.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -12,15 +12,9 @@
|
|
|
12
12
|
"files": [
|
|
13
13
|
"dist"
|
|
14
14
|
],
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"typecheck": "tsc --noEmit",
|
|
19
|
-
"lint": "bunx biome check .",
|
|
20
|
-
"format": "bunx biome format --write .",
|
|
21
|
-
"test": "bun test",
|
|
22
|
-
"prepare": "husky",
|
|
23
|
-
"prepublishOnly": "bun run build"
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"registry": "https://registry.npmjs.org/",
|
|
17
|
+
"access": "public"
|
|
24
18
|
},
|
|
25
19
|
"keywords": [
|
|
26
20
|
"screenshot",
|
|
@@ -47,7 +41,9 @@
|
|
|
47
41
|
"commander": "^13.0.0",
|
|
48
42
|
"glob": "^11.0.0",
|
|
49
43
|
"inquirer": "^12.0.0",
|
|
44
|
+
"pixelmatch": "^7.0.0",
|
|
50
45
|
"playwright-chromium": "^1.50.0",
|
|
46
|
+
"pngjs": "^7.0.0",
|
|
51
47
|
"sharp": "^0.34.5",
|
|
52
48
|
"yaml": "^2.7.0"
|
|
53
49
|
},
|
|
@@ -56,8 +52,19 @@
|
|
|
56
52
|
"@types/bun": "latest",
|
|
57
53
|
"@types/inquirer": "^9.0.0",
|
|
58
54
|
"@types/node": "^22.0.0",
|
|
55
|
+
"@types/pixelmatch": "^5.2.6",
|
|
56
|
+
"@types/pngjs": "^6.0.5",
|
|
59
57
|
"@types/sharp": "^0.32.0",
|
|
60
58
|
"husky": "^9.1.7",
|
|
61
59
|
"typescript": "^5.7.0"
|
|
60
|
+
},
|
|
61
|
+
"scripts": {
|
|
62
|
+
"build": "tsc",
|
|
63
|
+
"build:clean": "rm -rf dist && tsc",
|
|
64
|
+
"dev": "bun --watch src/index.ts",
|
|
65
|
+
"typecheck": "tsc --noEmit",
|
|
66
|
+
"lint": "bunx biome check .",
|
|
67
|
+
"format": "bunx biome format --write .",
|
|
68
|
+
"test": "bun test"
|
|
62
69
|
}
|
|
63
|
-
}
|
|
70
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/commands/preview.ts"],"names":[],"mappings":"AAMA,UAAU,cAAc;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC3E"}
|
package/dist/commands/preview.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import { chromium } from "playwright-chromium";
|
|
3
|
-
import { annotateScreenshots } from "../lib/annotate.js";
|
|
4
|
-
import { findProjectRoot, loadConfig, loadDefinitions } from "../lib/config.js";
|
|
5
|
-
import { captureScreenshots } from "../lib/screenshot.js";
|
|
6
|
-
export async function previewCommand(options) {
|
|
7
|
-
console.log(chalk.bold("\nš„· Kagemusha ā Preview\n"));
|
|
8
|
-
const projectRoot = findProjectRoot();
|
|
9
|
-
const config = loadConfig(projectRoot);
|
|
10
|
-
let definitions = loadDefinitions(projectRoot);
|
|
11
|
-
if (options.id) {
|
|
12
|
-
definitions = definitions.filter((d) => d.id === options.id);
|
|
13
|
-
if (definitions.length === 0) {
|
|
14
|
-
console.log(chalk.red(`Definition not found: ${options.id}`));
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
console.log(chalk.blue(`šø Capturing ${definitions.length} screenshot(s)...`));
|
|
19
|
-
const results = await captureScreenshots(config, definitions, projectRoot);
|
|
20
|
-
const annotated = await annotateScreenshots(definitions, results, projectRoot);
|
|
21
|
-
console.log(chalk.green("\nā
Screenshots captured. Opening preview...\n"));
|
|
22
|
-
// Open annotated screenshots in browser
|
|
23
|
-
const browser = await chromium.launch({ headless: false });
|
|
24
|
-
const context = await browser.newContext();
|
|
25
|
-
for (const result of annotated) {
|
|
26
|
-
const page = await context.newPage();
|
|
27
|
-
await page.goto(`file://${result.annotatedPath}`);
|
|
28
|
-
}
|
|
29
|
-
console.log(chalk.gray("Press Ctrl+C to close preview.\n"));
|
|
30
|
-
// Keep process alive until user closes
|
|
31
|
-
await new Promise(() => { });
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=preview.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/commands/preview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,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;AAM1D,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAuB;IAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAEtD,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAEvC,IAAI,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9D,OAAO;QACR,CAAC;IACF,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;IAC3E,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAC1C,WAAW,EACX,OAAO,EACP,WAAW,CACX,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC,CAAC;IAE3E,wCAAwC;IACxC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;IAE3C,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAE5D,uCAAuC;IACvC,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAC7B,CAAC"}
|
package/dist/commands/run.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAMA,UAAU,UAAU;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DnE"}
|
package/dist/commands/run.js
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import { annotateScreenshots } from "../lib/annotate.js";
|
|
3
|
-
import { findProjectRoot, loadConfig, loadDefinitions } from "../lib/config.js";
|
|
4
|
-
import { captureScreenshots } from "../lib/screenshot.js";
|
|
5
|
-
import { uploadToS3 } from "../lib/upload.js";
|
|
6
|
-
export async function runCommand(options) {
|
|
7
|
-
console.log(chalk.bold("\nš„· Kagemusha ā Running pipeline\n"));
|
|
8
|
-
const projectRoot = findProjectRoot();
|
|
9
|
-
const config = loadConfig(projectRoot);
|
|
10
|
-
let definitions = loadDefinitions(projectRoot);
|
|
11
|
-
if (options.ids) {
|
|
12
|
-
const ids = options.ids.split(",").map((s) => s.trim());
|
|
13
|
-
definitions = definitions.filter((d) => ids.includes(d.id));
|
|
14
|
-
}
|
|
15
|
-
if (definitions.length === 0) {
|
|
16
|
-
console.log(chalk.yellow("No screenshot definitions to process. Skipping."));
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
console.log(chalk.gray(` Found ${definitions.length} definition(s) to process\n`));
|
|
20
|
-
// Step 1: Capture
|
|
21
|
-
console.log(chalk.blue("šø Capturing screenshots..."));
|
|
22
|
-
const captureResults = await captureScreenshots(config, definitions, projectRoot);
|
|
23
|
-
console.log(chalk.green(` ā Captured ${captureResults.length} screenshot(s)\n`));
|
|
24
|
-
// Step 2: Annotate
|
|
25
|
-
console.log(chalk.blue("šØ Drawing annotations..."));
|
|
26
|
-
const annotatedResults = await annotateScreenshots(definitions, captureResults, projectRoot);
|
|
27
|
-
console.log(chalk.green(` ā Annotated ${annotatedResults.length} screenshot(s)\n`));
|
|
28
|
-
// Step 3: Publish
|
|
29
|
-
if (config.publish?.destination === "s3") {
|
|
30
|
-
console.log(chalk.blue("āļø Uploading to S3..."));
|
|
31
|
-
const uploadResults = await uploadToS3(config, annotatedResults, projectRoot);
|
|
32
|
-
console.log(chalk.green(` ā Uploaded ${uploadResults.length} screenshot(s)\n`));
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
console.log(chalk.green(` Screenshots saved locally\n`));
|
|
36
|
-
}
|
|
37
|
-
console.log(chalk.bold.green("ā
Pipeline complete!\n"));
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=run.js.map
|
package/dist/commands/run.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.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;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM9C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAmB;IACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;IAE/D,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,CACV,KAAK,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAC/D,CAAC;QACF,OAAO;IACR,CAAC;IAED,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,IAAI,CAAC,WAAW,WAAW,CAAC,MAAM,6BAA6B,CAAC,CACtE,CAAC;IAEF,kBAAkB;IAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAC9C,MAAM,EACN,WAAW,EACX,WAAW,CACX,CAAC;IACF,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,KAAK,CAAC,gBAAgB,cAAc,CAAC,MAAM,kBAAkB,CAAC,CACpE,CAAC;IAEF,mBAAmB;IACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACrD,MAAM,gBAAgB,GAAG,MAAM,mBAAmB,CACjD,WAAW,EACX,cAAc,EACd,WAAW,CACX,CAAC;IACF,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,KAAK,CAAC,iBAAiB,gBAAgB,CAAC,MAAM,kBAAkB,CAAC,CACvE,CAAC;IAEF,kBAAkB;IAClB,IAAI,MAAM,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,MAAM,UAAU,CACrC,MAAM,EACN,gBAAgB,EAChB,WAAW,CACX,CAAC;QACF,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,KAAK,CAAC,gBAAgB,aAAa,CAAC,MAAM,kBAAkB,CAAC,CACnE,CAAC;IACH,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;AACzD,CAAC"}
|
package/dist/lib/upload.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { CaptureResult, KagemushaConfig } from "../types.js";
|
|
2
|
-
export interface UploadResult {
|
|
3
|
-
id: string;
|
|
4
|
-
url: string;
|
|
5
|
-
bucket: string;
|
|
6
|
-
key: string;
|
|
7
|
-
}
|
|
8
|
-
export declare function uploadToS3(config: KagemushaConfig, results: CaptureResult[], _projectRoot: string): Promise<UploadResult[]>;
|
|
9
|
-
//# sourceMappingURL=upload.d.ts.map
|
package/dist/lib/upload.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/lib/upload.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAElE,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,wBAAsB,UAAU,CAC/B,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,aAAa,EAAE,EACxB,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,EAAE,CAAC,CAmDzB"}
|