@saiden/browse 0.2.5

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.

Potentially problematic release.


This version of @saiden/browse might be problematic. Click here for more details.

Files changed (50) hide show
  1. package/README.md +210 -0
  2. package/dist/browser.d.ts +48 -0
  3. package/dist/browser.d.ts.map +1 -0
  4. package/dist/browser.integration.test.d.ts +2 -0
  5. package/dist/browser.integration.test.d.ts.map +1 -0
  6. package/dist/browser.integration.test.js +173 -0
  7. package/dist/browser.integration.test.js.map +1 -0
  8. package/dist/browser.js +250 -0
  9. package/dist/browser.js.map +1 -0
  10. package/dist/browser.test.d.ts +2 -0
  11. package/dist/browser.test.d.ts.map +1 -0
  12. package/dist/browser.test.js +73 -0
  13. package/dist/browser.test.js.map +1 -0
  14. package/dist/cli.d.ts +3 -0
  15. package/dist/cli.d.ts.map +1 -0
  16. package/dist/cli.js +247 -0
  17. package/dist/cli.js.map +1 -0
  18. package/dist/image.d.ts +21 -0
  19. package/dist/image.d.ts.map +1 -0
  20. package/dist/image.js +131 -0
  21. package/dist/image.js.map +1 -0
  22. package/dist/index.d.ts +6 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +4 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/logger.d.ts +41 -0
  27. package/dist/logger.d.ts.map +1 -0
  28. package/dist/logger.js +103 -0
  29. package/dist/logger.js.map +1 -0
  30. package/dist/logger.test.d.ts +2 -0
  31. package/dist/logger.test.d.ts.map +1 -0
  32. package/dist/logger.test.js +146 -0
  33. package/dist/logger.test.js.map +1 -0
  34. package/dist/mcp.d.ts +3 -0
  35. package/dist/mcp.d.ts.map +1 -0
  36. package/dist/mcp.js +541 -0
  37. package/dist/mcp.js.map +1 -0
  38. package/dist/server.d.ts +20 -0
  39. package/dist/server.d.ts.map +1 -0
  40. package/dist/server.js +88 -0
  41. package/dist/server.js.map +1 -0
  42. package/dist/server.test.d.ts +2 -0
  43. package/dist/server.test.d.ts.map +1 -0
  44. package/dist/server.test.js +164 -0
  45. package/dist/server.test.js.map +1 -0
  46. package/dist/types.d.ts +125 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +2 -0
  49. package/dist/types.js.map +1 -0
  50. package/package.json +74 -0
package/dist/image.js ADDED
@@ -0,0 +1,131 @@
1
+ import { mkdir } from 'node:fs/promises';
2
+ import { dirname, join, resolve } from 'node:path';
3
+ import sharp from 'sharp';
4
+ const THUMBNAIL_SIZES = {
5
+ small: 150,
6
+ medium: 300,
7
+ large: 600,
8
+ };
9
+ const FAVICON_SIZES = [
10
+ { name: 'favicon-16x16.png', size: 16 },
11
+ { name: 'favicon-32x32.png', size: 32 },
12
+ { name: 'favicon-48x48.png', size: 48 },
13
+ { name: 'apple-touch-icon.png', size: 180 },
14
+ { name: 'android-chrome-192x192.png', size: 192 },
15
+ { name: 'android-chrome-512x512.png', size: 512 },
16
+ ];
17
+ async function ensureDir(filePath) {
18
+ await mkdir(dirname(filePath), { recursive: true });
19
+ }
20
+ export async function createFavicon(input, outputDir) {
21
+ const resolvedDir = resolve(outputDir);
22
+ await mkdir(resolvedDir, { recursive: true });
23
+ const files = [];
24
+ const image = sharp(input);
25
+ for (const { name, size } of FAVICON_SIZES) {
26
+ const outputPath = join(resolvedDir, name);
27
+ await image.clone().resize(size, size, { fit: 'cover' }).png().toFile(outputPath);
28
+ files.push(outputPath);
29
+ }
30
+ // Create favicon.ico with multiple sizes (16, 32, 48)
31
+ const icoPath = join(resolvedDir, 'favicon.ico');
32
+ const sizes = [16, 32, 48];
33
+ const buffers = await Promise.all(sizes.map((size) => image.clone().resize(size, size, { fit: 'cover' }).png().toBuffer()));
34
+ // ICO format: simple approach - use largest PNG as ICO
35
+ // For true multi-size ICO, we'd need a dedicated library
36
+ // Sharp doesn't support ICO output, so we'll use the 32x32 PNG
37
+ await image.clone().resize(32, 32, { fit: 'cover' }).png().toFile(icoPath);
38
+ files.push(icoPath);
39
+ return { files, outputDir: resolvedDir };
40
+ }
41
+ export async function convert(input, output, format) {
42
+ const resolvedOutput = resolve(output);
43
+ await ensureDir(resolvedOutput);
44
+ const image = sharp(input);
45
+ let result;
46
+ switch (format) {
47
+ case 'png':
48
+ result = image.png();
49
+ break;
50
+ case 'jpeg':
51
+ result = image.jpeg();
52
+ break;
53
+ case 'webp':
54
+ result = image.webp();
55
+ break;
56
+ case 'avif':
57
+ result = image.avif();
58
+ break;
59
+ }
60
+ const info = await result.toFile(resolvedOutput);
61
+ return {
62
+ path: resolvedOutput,
63
+ width: info.width,
64
+ height: info.height,
65
+ format: info.format,
66
+ size: info.size,
67
+ };
68
+ }
69
+ export async function resize(input, output, width, height, fit = 'cover') {
70
+ const resolvedOutput = resolve(output);
71
+ await ensureDir(resolvedOutput);
72
+ const info = await sharp(input).resize(width, height, { fit }).toFile(resolvedOutput);
73
+ return {
74
+ path: resolvedOutput,
75
+ width: info.width,
76
+ height: info.height,
77
+ format: info.format,
78
+ size: info.size,
79
+ };
80
+ }
81
+ export async function crop(input, output, left, top, width, height) {
82
+ const resolvedOutput = resolve(output);
83
+ await ensureDir(resolvedOutput);
84
+ const info = await sharp(input).extract({ left, top, width, height }).toFile(resolvedOutput);
85
+ return {
86
+ path: resolvedOutput,
87
+ width: info.width,
88
+ height: info.height,
89
+ format: info.format,
90
+ size: info.size,
91
+ };
92
+ }
93
+ export async function compress(input, output, quality = 80) {
94
+ const resolvedOutput = resolve(output);
95
+ await ensureDir(resolvedOutput);
96
+ const image = sharp(input);
97
+ const metadata = await image.metadata();
98
+ const format = metadata.format;
99
+ let result;
100
+ switch (format) {
101
+ case 'png':
102
+ result = image.png({ quality });
103
+ break;
104
+ case 'jpeg':
105
+ case 'jpg':
106
+ result = image.jpeg({ quality });
107
+ break;
108
+ case 'webp':
109
+ result = image.webp({ quality });
110
+ break;
111
+ case 'avif':
112
+ result = image.avif({ quality });
113
+ break;
114
+ default:
115
+ // Default to PNG for unknown formats
116
+ result = image.png({ quality });
117
+ }
118
+ const info = await result.toFile(resolvedOutput);
119
+ return {
120
+ path: resolvedOutput,
121
+ width: info.width,
122
+ height: info.height,
123
+ format: info.format,
124
+ size: info.size,
125
+ };
126
+ }
127
+ export async function thumbnail(input, output, size = 'medium') {
128
+ const dimension = THUMBNAIL_SIZES[size];
129
+ return resize(input, output, dimension, dimension, 'cover');
130
+ }
131
+ //# sourceMappingURL=image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,MAAM,eAAe,GAAkC;IACrD,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,GAAG;CACX,CAAC;AAEF,MAAM,aAAa,GAAG;IACpB,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,EAAE;IACvC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,EAAE;IACvC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,EAAE;IACvC,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,GAAG,EAAE;IAC3C,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,GAAG,EAAE;IACjD,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,GAAG,EAAE;CAClD,CAAC;AAeF,KAAK,UAAU,SAAS,CAAC,QAAgB;IACvC,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAa,EAAE,SAAiB;IAClE,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAE3B,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,aAAa,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAClF,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC;IAED,sDAAsD;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CACzF,CAAC;IAEF,uDAAuD;IACvD,yDAAyD;IACzD,+DAA+D;IAC/D,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3E,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEpB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,KAAa,EACb,MAAc,EACd,MAAkB;IAElB,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,SAAS,CAAC,cAAc,CAAC,CAAC;IAEhC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,MAAmB,CAAC;IAExB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK;YACR,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YACrB,MAAM;QACR,KAAK,MAAM;YACT,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YACtB,MAAM;QACR,KAAK,MAAM;YACT,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YACtB,MAAM;QACR,KAAK,MAAM;YACT,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YACtB,MAAM;IACV,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAEjD,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,KAAa,EACb,MAAc,EACd,KAAa,EACb,MAAe,EACf,MAAe,OAAO;IAEtB,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,SAAS,CAAC,cAAc,CAAC,CAAC;IAEhC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAEtF,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,KAAa,EACb,MAAc,EACd,IAAY,EACZ,GAAW,EACX,KAAa,EACb,MAAc;IAEd,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,SAAS,CAAC,cAAc,CAAC,CAAC;IAEhC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAE7F,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,KAAa,EAAE,MAAc,EAAE,OAAO,GAAG,EAAE;IACxE,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,SAAS,CAAC,cAAc,CAAC,CAAC;IAEhC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAE/B,IAAI,MAAmB,CAAC;IACxB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK;YACR,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YAChC,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK;YACR,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YACjC,MAAM;QACR,KAAK,MAAM;YACT,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YACjC,MAAM;QACR,KAAK,MAAM;YACT,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YACjC,MAAM;QACR;YACE,qCAAqC;YACrC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAEjD,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,KAAa,EACb,MAAc,EACd,OAAsB,QAAQ;IAE9B,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { ClaudeBrowser } from './browser.js';
2
+ export { BrowserServer, startServer } from './server.js';
3
+ export { createFavicon, convert, resize, crop, compress, thumbnail, type FaviconResult, type ImageResult, type FitType, type FormatType, type ThumbnailSize, } from './image.js';
4
+ export type { BrowserOptions, BrowserCommand, CommandResponse, ElementInfo, SuccessResponse, ErrorResponse, GotoCommand, ClickCommand, TypeCommand, QueryCommand, ScreenshotCommand, UrlCommand, HtmlCommand, BackCommand, ForwardCommand, ReloadCommand, WaitCommand, NewPageCommand, CloseCommand, EvalCommand, FaviconCommand, ConvertCommand, ResizeCommand, CropCommand, CompressCommand, ThumbnailCommand, } from './types.js';
5
+ export type { ServerOptions } from './server.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EACL,aAAa,EACb,OAAO,EACP,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,WAAW,EACX,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,WAAW,EACX,cAAc,EACd,aAAa,EACb,WAAW,EACX,cAAc,EACd,YAAY,EACZ,WAAW,EACX,cAAc,EACd,cAAc,EACd,aAAa,EACb,WAAW,EACX,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { ClaudeBrowser } from './browser.js';
2
+ export { BrowserServer, startServer } from './server.js';
3
+ export { createFavicon, convert, resize, crop, compress, thumbnail, } from './image.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EACL,aAAa,EACb,OAAO,EACP,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,SAAS,GAMV,MAAM,YAAY,CAAC"}
@@ -0,0 +1,41 @@
1
+ export declare const icons: Record<string, string>;
2
+ export declare const cmdColor: Record<string, (s: string) => string>;
3
+ export declare function ts(): string;
4
+ export declare function truncate(str: string, max: number): string;
5
+ export interface CommandLike {
6
+ cmd: string;
7
+ url?: string;
8
+ selector?: string;
9
+ text?: string;
10
+ path?: string;
11
+ full?: boolean;
12
+ ms?: number;
13
+ script?: string;
14
+ }
15
+ export declare function getCommandDetail(cmd: CommandLike): string | undefined;
16
+ export declare function formatCommand(cmd: CommandLike): string;
17
+ export interface ResultLike {
18
+ ok: boolean;
19
+ error?: string;
20
+ title?: string;
21
+ url?: string;
22
+ count?: number;
23
+ path?: string;
24
+ html?: string;
25
+ result?: unknown;
26
+ }
27
+ export declare function formatResult(cmd: CommandLike, result: ResultLike): string;
28
+ export type LogFn = (msg: string) => void;
29
+ export declare function createLogger(logFn?: LogFn): {
30
+ command(cmd: CommandLike): void;
31
+ result(cmd: CommandLike, result: ResultLike): void;
32
+ };
33
+ export declare const logger: {
34
+ command(cmd: CommandLike): void;
35
+ result(cmd: CommandLike, result: ResultLike): void;
36
+ };
37
+ export declare const stderrLogger: {
38
+ command(cmd: CommandLike): void;
39
+ result(cmd: CommandLike, result: ResultLike): void;
40
+ };
41
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAexC,CAAC;AAGF,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAe1D,CAAC;AAEF,wBAAgB,EAAE,IAAI,MAAM,CAE3B;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAoBrE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAMtD;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAYD,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAQzE;AAED,MAAM,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;AAE1C,wBAAgB,YAAY,CAAC,KAAK,GAAE,KAAmB;iBAEtC,WAAW,GAAG,IAAI;gBAGnB,WAAW,UAAU,UAAU,GAAG,IAAI;EAIrD;AAGD,eAAO,MAAM,MAAM;iBAVF,WAAW,GAAG,IAAI;gBAGnB,WAAW,UAAU,UAAU,GAAG,IAAI;CAOlB,CAAC;AAGrC,eAAO,MAAM,YAAY;iBAbR,WAAW,GAAG,IAAI;gBAGnB,WAAW,UAAU,UAAU,GAAG,IAAI;CAU6B,CAAC"}
package/dist/logger.js ADDED
@@ -0,0 +1,103 @@
1
+ import chalk from 'chalk';
2
+ import logSymbols from 'log-symbols';
3
+ // Icons for commands
4
+ export const icons = {
5
+ goto: '→',
6
+ click: '◉',
7
+ type: '⌨',
8
+ query: '?',
9
+ screenshot: '📷',
10
+ url: '🔗',
11
+ html: '<>',
12
+ back: '←',
13
+ forward: '→',
14
+ reload: '↻',
15
+ wait: '⏳',
16
+ newpage: '+',
17
+ close: '✕',
18
+ eval: '⚡',
19
+ };
20
+ // Colors for command types
21
+ export const cmdColor = {
22
+ goto: chalk.cyan,
23
+ click: chalk.yellow,
24
+ type: chalk.magenta,
25
+ query: chalk.blue,
26
+ screenshot: chalk.green,
27
+ url: chalk.cyan,
28
+ html: chalk.blue,
29
+ back: chalk.yellow,
30
+ forward: chalk.yellow,
31
+ reload: chalk.yellow,
32
+ wait: chalk.gray,
33
+ newpage: chalk.green,
34
+ close: chalk.red,
35
+ eval: chalk.magenta,
36
+ };
37
+ export function ts() {
38
+ return chalk.gray(`[${new Date().toISOString()}]`);
39
+ }
40
+ export function truncate(str, max) {
41
+ return str.length > max ? `${str.slice(0, max)}...` : str;
42
+ }
43
+ export function getCommandDetail(cmd) {
44
+ switch (cmd.cmd) {
45
+ case 'goto':
46
+ return chalk.white(cmd.url);
47
+ case 'click':
48
+ case 'query':
49
+ return chalk.white(cmd.selector);
50
+ case 'type':
51
+ return `${chalk.white(cmd.selector)} ${chalk.dim(`="${cmd.text}"`)}`;
52
+ case 'screenshot':
53
+ return chalk.dim(cmd.path || 'screenshot.png');
54
+ case 'html':
55
+ return cmd.full ? chalk.dim('(full)') : undefined;
56
+ case 'wait':
57
+ return chalk.dim(`${cmd.ms || 1000}ms`);
58
+ case 'eval':
59
+ return chalk.dim(truncate(cmd.script || '', 50));
60
+ default:
61
+ return undefined;
62
+ }
63
+ }
64
+ export function formatCommand(cmd) {
65
+ const color = cmdColor[cmd.cmd] || chalk.white;
66
+ const icon = icons[cmd.cmd] || '•';
67
+ const detail = getCommandDetail(cmd);
68
+ const suffix = detail ? ` ${detail}` : '';
69
+ return `${ts()} ${chalk.bold(color(icon))} ${color(cmd.cmd.toUpperCase())}${suffix}`;
70
+ }
71
+ const resultFormatters = {
72
+ goto: (r) => r.title,
73
+ click: (r) => (r.url ? `→ ${r.url}` : undefined),
74
+ query: (r) => (r.count !== undefined ? `Found ${r.count} element(s)` : undefined),
75
+ screenshot: (r) => (r.path ? `Saved to ${r.path}` : undefined),
76
+ url: (r) => r.url,
77
+ html: (r) => (r.html !== undefined ? `${r.html.length} chars` : undefined),
78
+ eval: (r) => (r.result !== undefined ? truncate(JSON.stringify(r.result), 80) : undefined),
79
+ };
80
+ export function formatResult(cmd, result) {
81
+ if (!result.ok) {
82
+ return `${ts()} ${logSymbols.error} ${chalk.red(result.error)}`;
83
+ }
84
+ const formatter = resultFormatters[cmd.cmd];
85
+ const msg = formatter ? formatter(result) : undefined;
86
+ const suffix = msg ? ` ${chalk.dim(msg)}` : '';
87
+ return `${ts()} ${logSymbols.success}${suffix}`;
88
+ }
89
+ export function createLogger(logFn = console.log) {
90
+ return {
91
+ command(cmd) {
92
+ logFn(formatCommand(cmd));
93
+ },
94
+ result(cmd, result) {
95
+ logFn(formatResult(cmd, result));
96
+ },
97
+ };
98
+ }
99
+ // Default logger to stdout
100
+ export const logger = createLogger();
101
+ // Logger to stderr (for MCP)
102
+ export const stderrLogger = createLogger((msg) => process.stderr.write(`${msg}\n`));
103
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=logger.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.test.d.ts","sourceRoot":"","sources":["../src/logger.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,146 @@
1
+ import { describe, expect, it, vi } from 'vitest';
2
+ import { createLogger, formatCommand, formatResult, getCommandDetail, icons, truncate, } from './logger.js';
3
+ describe('truncate', () => {
4
+ it('returns string unchanged if shorter than max', () => {
5
+ expect(truncate('hello', 10)).toBe('hello');
6
+ });
7
+ it('truncates and adds ellipsis if longer than max', () => {
8
+ expect(truncate('hello world', 5)).toBe('hello...');
9
+ });
10
+ it('handles exact length', () => {
11
+ expect(truncate('hello', 5)).toBe('hello');
12
+ });
13
+ });
14
+ describe('icons', () => {
15
+ it('has icon for each command type', () => {
16
+ expect(icons.goto).toBe('→');
17
+ expect(icons.click).toBe('◉');
18
+ expect(icons.type).toBe('⌨');
19
+ expect(icons.screenshot).toBe('📷');
20
+ });
21
+ });
22
+ describe('getCommandDetail', () => {
23
+ it('returns url for goto command', () => {
24
+ const result = getCommandDetail({ cmd: 'goto', url: 'https://example.com' });
25
+ expect(result).toContain('https://example.com');
26
+ });
27
+ it('returns selector for click command', () => {
28
+ const result = getCommandDetail({ cmd: 'click', selector: '#btn' });
29
+ expect(result).toContain('#btn');
30
+ });
31
+ it('returns selector and text for type command', () => {
32
+ const result = getCommandDetail({ cmd: 'type', selector: '#input', text: 'hello' });
33
+ expect(result).toContain('#input');
34
+ expect(result).toContain('hello');
35
+ });
36
+ it('returns path for screenshot command', () => {
37
+ const result = getCommandDetail({ cmd: 'screenshot', path: 'test.png' });
38
+ expect(result).toContain('test.png');
39
+ });
40
+ it('returns default path when none provided for screenshot', () => {
41
+ const result = getCommandDetail({ cmd: 'screenshot' });
42
+ expect(result).toContain('screenshot.png');
43
+ });
44
+ it('returns undefined for url command', () => {
45
+ expect(getCommandDetail({ cmd: 'url' })).toBeUndefined();
46
+ });
47
+ it('returns ms for wait command', () => {
48
+ const result = getCommandDetail({ cmd: 'wait', ms: 500 });
49
+ expect(result).toContain('500');
50
+ });
51
+ it('returns default ms for wait command without ms', () => {
52
+ const result = getCommandDetail({ cmd: 'wait' });
53
+ expect(result).toContain('1000');
54
+ });
55
+ it('returns script for eval command', () => {
56
+ const result = getCommandDetail({ cmd: 'eval', script: 'document.title' });
57
+ expect(result).toContain('document.title');
58
+ });
59
+ it('truncates long eval scripts', () => {
60
+ const longScript = 'a'.repeat(100);
61
+ const result = getCommandDetail({ cmd: 'eval', script: longScript });
62
+ expect(result).toContain('...');
63
+ });
64
+ it('returns (full) for html command with full=true', () => {
65
+ const result = getCommandDetail({ cmd: 'html', full: true });
66
+ expect(result).toContain('full');
67
+ });
68
+ it('returns undefined for html command with full=false', () => {
69
+ expect(getCommandDetail({ cmd: 'html', full: false })).toBeUndefined();
70
+ });
71
+ it('returns selector for query command', () => {
72
+ const result = getCommandDetail({ cmd: 'query', selector: '.items' });
73
+ expect(result).toContain('.items');
74
+ });
75
+ });
76
+ describe('formatCommand', () => {
77
+ it('formats goto command', () => {
78
+ const result = formatCommand({ cmd: 'goto', url: 'https://example.com' });
79
+ expect(result).toContain('GOTO');
80
+ expect(result).toContain('https://example.com');
81
+ });
82
+ it('formats click command', () => {
83
+ const result = formatCommand({ cmd: 'click', selector: '#btn' });
84
+ expect(result).toContain('CLICK');
85
+ expect(result).toContain('#btn');
86
+ });
87
+ });
88
+ describe('formatResult', () => {
89
+ it('formats error result', () => {
90
+ const result = formatResult({ cmd: 'goto' }, { ok: false, error: 'Failed' });
91
+ expect(result).toContain('Failed');
92
+ });
93
+ it('formats successful goto result with title', () => {
94
+ const result = formatResult({ cmd: 'goto' }, { ok: true, title: 'Example' });
95
+ expect(result).toContain('Example');
96
+ });
97
+ it('formats query result with count', () => {
98
+ const result = formatResult({ cmd: 'query' }, { ok: true, count: 5 });
99
+ expect(result).toContain('5');
100
+ });
101
+ it('formats click result with url', () => {
102
+ const result = formatResult({ cmd: 'click' }, { ok: true, url: '/page' });
103
+ expect(result).toContain('/page');
104
+ });
105
+ it('formats screenshot result with path', () => {
106
+ const result = formatResult({ cmd: 'screenshot' }, { ok: true, path: 'test.png' });
107
+ expect(result).toContain('Saved to test.png');
108
+ });
109
+ it('formats url result', () => {
110
+ const result = formatResult({ cmd: 'url' }, { ok: true, url: 'https://example.com' });
111
+ expect(result).toContain('https://example.com');
112
+ });
113
+ it('formats html result with length', () => {
114
+ const result = formatResult({ cmd: 'html' }, { ok: true, html: '<html></html>' });
115
+ expect(result).toContain('13 chars');
116
+ });
117
+ it('formats eval result', () => {
118
+ const result = formatResult({ cmd: 'eval' }, { ok: true, result: { foo: 'bar' } });
119
+ expect(result).toContain('foo');
120
+ expect(result).toContain('bar');
121
+ });
122
+ it('formats result without formatter', () => {
123
+ const result = formatResult({ cmd: 'wait' }, { ok: true });
124
+ expect(result).toBeDefined();
125
+ });
126
+ });
127
+ describe('createLogger', () => {
128
+ it('creates logger with custom log function', () => {
129
+ const logs = [];
130
+ const logFn = (msg) => logs.push(msg);
131
+ const logger = createLogger(logFn);
132
+ logger.command({ cmd: 'goto', url: 'https://example.com' });
133
+ expect(logs).toHaveLength(1);
134
+ expect(logs[0]).toContain('GOTO');
135
+ logger.result({ cmd: 'goto' }, { ok: true, title: 'Example' });
136
+ expect(logs).toHaveLength(2);
137
+ });
138
+ it('logs command and result', () => {
139
+ const spy = vi.fn();
140
+ const logger = createLogger(spy);
141
+ logger.command({ cmd: 'click', selector: '#btn' });
142
+ logger.result({ cmd: 'click' }, { ok: true, url: '/page' });
143
+ expect(spy).toHaveBeenCalledTimes(2);
144
+ });
145
+ });
146
+ //# sourceMappingURL=logger.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.test.js","sourceRoot":"","sources":["../src/logger.test.ts"],"names":[],"mappings":"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"}
package/dist/mcp.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":""}