bruniai 0.1.11 → 0.1.13
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/compare-images.d.ts.map +1 -1
- package/dist/compare-images.js +4 -19
- package/dist/compare-images.js.map +1 -1
- package/dist/compare-urls.d.ts.map +1 -1
- package/dist/compare-urls.js +4 -19
- package/dist/compare-urls.js.map +1 -1
- package/dist/runtime/image/fetch.d.ts.map +1 -1
- package/dist/runtime/image/fetch.js +4 -0
- package/dist/runtime/image/fetch.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare-images.d.ts","sourceRoot":"","sources":["../src/compare-images.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"compare-images.d.ts","sourceRoot":"","sources":["../src/compare-images.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAsCpB;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,mBAAmB,CAAC,CA2C9B"}
|
package/dist/compare-images.js
CHANGED
|
@@ -1,24 +1,9 @@
|
|
|
1
1
|
import { join } from "path";
|
|
2
|
-
import { fileURLToPath } from "url";
|
|
3
2
|
import { mkdirSync, existsSync } from "fs";
|
|
4
3
|
import { tmpdir } from "os";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
async function loadImageToImageComparisonModule() {
|
|
10
|
-
try {
|
|
11
|
-
return await importRuntimeModule("./runtime/comparison/image-image-core.js");
|
|
12
|
-
}
|
|
13
|
-
catch {
|
|
14
|
-
try {
|
|
15
|
-
return await importRuntimeModule("../../../dist/comparison/image-image-core.js");
|
|
16
|
-
}
|
|
17
|
-
catch {
|
|
18
|
-
return await importRuntimeModule("../../../src/comparison/image-image-core.js");
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
4
|
+
const imageToImageComparisonModulePromise = import.meta.url.includes("/packages/bruniai/src/")
|
|
5
|
+
? import("../../../dist/comparison/image-image-core.js")
|
|
6
|
+
: import("./runtime/comparison/image-image-core.js");
|
|
22
7
|
function isSupportedImageInput(input) {
|
|
23
8
|
if (!input) {
|
|
24
9
|
return false;
|
|
@@ -56,7 +41,7 @@ export async function compareImages(input) {
|
|
|
56
41
|
const { baseImage, previewImage } = input;
|
|
57
42
|
assertSupportedImageInput(baseImage, "baseImage");
|
|
58
43
|
assertSupportedImageInput(previewImage, "previewImage");
|
|
59
|
-
const { performImageToImageComparison } = await
|
|
44
|
+
const { performImageToImageComparison } = await imageToImageComparisonModulePromise;
|
|
60
45
|
const imagesDir = join(tmpdir(), `bruniai-${Date.now()}`);
|
|
61
46
|
if (!existsSync(imagesDir)) {
|
|
62
47
|
mkdirSync(imagesDir, { recursive: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare-images.js","sourceRoot":"","sources":["../src/compare-images.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"compare-images.js","sourceRoot":"","sources":["../src/compare-images.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare-urls.d.ts","sourceRoot":"","sources":["../src/compare-urls.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"compare-urls.d.ts","sourceRoot":"","sources":["../src/compare-urls.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAYtE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAiE5B"}
|
package/dist/compare-urls.js
CHANGED
|
@@ -1,25 +1,10 @@
|
|
|
1
1
|
import { Stagehand } from "@browserbasehq/stagehand";
|
|
2
2
|
import { join } from "path";
|
|
3
|
-
import { fileURLToPath } from "url";
|
|
4
3
|
import { mkdirSync, existsSync } from "fs";
|
|
5
4
|
import { tmpdir } from "os";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
async function loadComparisonCoreModule() {
|
|
11
|
-
try {
|
|
12
|
-
return await importRuntimeModule("./runtime/comparison/core.js");
|
|
13
|
-
}
|
|
14
|
-
catch {
|
|
15
|
-
try {
|
|
16
|
-
return await importRuntimeModule("../../../dist/comparison/core.js");
|
|
17
|
-
}
|
|
18
|
-
catch {
|
|
19
|
-
return await importRuntimeModule("../../../src/comparison/core.js");
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
5
|
+
const comparisonCoreModulePromise = import.meta.url.includes("/packages/bruniai/src/")
|
|
6
|
+
? import("../../../dist/comparison/core.js")
|
|
7
|
+
: import("./runtime/comparison/core.js");
|
|
23
8
|
/**
|
|
24
9
|
* Compare two URLs visually and return analysis results.
|
|
25
10
|
*
|
|
@@ -47,7 +32,7 @@ async function loadComparisonCoreModule() {
|
|
|
47
32
|
*/
|
|
48
33
|
export async function compareUrls(input) {
|
|
49
34
|
const { baseUrl, previewUrl, page = "/" } = input;
|
|
50
|
-
const { performComparison } = await
|
|
35
|
+
const { performComparison } = await comparisonCoreModulePromise;
|
|
51
36
|
// Create temporary directory for images.
|
|
52
37
|
const imagesDir = join(tmpdir(), `bruniai-${Date.now()}`);
|
|
53
38
|
if (!existsSync(imagesDir)) {
|
package/dist/compare-urls.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare-urls.js","sourceRoot":"","sources":["../src/compare-urls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"compare-urls.js","sourceRoot":"","sources":["../src/compare-urls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAI5B,MAAM,2BAA2B,GAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAChD,CAAC,CAAC,MAAM,CAAC,kCAAkC,CAAC;IAC5C,CAAC,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAuB;IAEvB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC;IAClD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,2BAA2B,CAAC;IAEhE,yCAAyC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,wBAAwB;IACxB,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;QAC9B,GAAG,EAAE,OAAO;QACZ,yBAAyB,EAAE;YACzB,QAAQ,EAAE,IAAI;SACf;KACF,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAEvB,+BAA+B;QAC/B,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;YACrC,SAAS;YACT,OAAO;YACP,UAAU;YACV,IAAI;YACJ,SAAS;YACT,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAC;QAEH,0BAA0B;QAC1B,kFAAkF;QAClF,MAAM,MAAM,GACV,MAAM,CAAC,eAAe,CAAC,MAAM,KAAK,MAAM;YACtC,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;QAEpC,MAAM,MAAM,GAAsB;YAChC,MAAM;YACN,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,MAAM,EAAE;gBACN,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;gBAC7C,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,mBAAmB,EACjB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,MAAM,GAAG,CAAC;oBAChD,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAC5C,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;wBAChB,GAAG;wBACH,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;qBAC7C,CACF,CACF;oBACH,CAAC,CAAC,SAAS;aAChB;SACF,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/image/fetch.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/image/fetch.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAwCf"}
|
|
@@ -33,6 +33,10 @@ export async function downloadImageToPng(imageUrl, outputPngPath) {
|
|
|
33
33
|
if (!res.ok) {
|
|
34
34
|
throw new Error(`Failed to download image: ${res.status} ${res.statusText}`);
|
|
35
35
|
}
|
|
36
|
+
const contentType = res.headers.get("content-type");
|
|
37
|
+
if (contentType && !contentType.toLowerCase().startsWith("image/")) {
|
|
38
|
+
throw new Error(`URL did not return an image: received ${contentType}`);
|
|
39
|
+
}
|
|
36
40
|
const arrayBuffer = await res.arrayBuffer();
|
|
37
41
|
const buf = Buffer.from(arrayBuffer);
|
|
38
42
|
const png = await sharp(buf).png().toBuffer();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/image/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,aAAqB;IAErB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,6BAA6B;IAC7B,IAAI,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC9C,aAAa,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;QAChC,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE;YACP,4DAA4D;YAC5D,YAAY,EAAE,aAAa;YAC3B,MAAM,EAAE,mBAAmB;SAC5B;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC9C,aAAa,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC"}
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/image/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,aAAqB;IAErB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,6BAA6B;IAC7B,IAAI,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC9C,aAAa,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;QAChC,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE;YACP,4DAA4D;YAC5D,YAAY,EAAE,aAAa;YAC3B,MAAM,EAAE,mBAAmB;SAC5B;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACpD,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,yCAAyC,WAAW,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC9C,aAAa,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC"}
|