designmaxxing 0.1.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.
Files changed (155) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +220 -0
  3. package/dist/cli/cleanup.d.ts +5 -0
  4. package/dist/cli/cleanup.d.ts.map +1 -0
  5. package/dist/cli/cleanup.js +8 -0
  6. package/dist/cli/cleanup.js.map +1 -0
  7. package/dist/cli/extract.d.ts +3 -0
  8. package/dist/cli/extract.d.ts.map +1 -0
  9. package/dist/cli/extract.js +105 -0
  10. package/dist/cli/extract.js.map +1 -0
  11. package/dist/cli/index.d.ts +3 -0
  12. package/dist/cli/index.d.ts.map +1 -0
  13. package/dist/cli/index.js +44 -0
  14. package/dist/cli/index.js.map +1 -0
  15. package/dist/cli/install-claude.d.ts +3 -0
  16. package/dist/cli/install-claude.d.ts.map +1 -0
  17. package/dist/cli/install-claude.js +39 -0
  18. package/dist/cli/install-claude.js.map +1 -0
  19. package/dist/cli/report.d.ts +3 -0
  20. package/dist/cli/report.d.ts.map +1 -0
  21. package/dist/cli/report.js +115 -0
  22. package/dist/cli/report.js.map +1 -0
  23. package/dist/cli/tokens.d.ts +3 -0
  24. package/dist/cli/tokens.d.ts.map +1 -0
  25. package/dist/cli/tokens.js +111 -0
  26. package/dist/cli/tokens.js.map +1 -0
  27. package/dist/cli/verify.d.ts +3 -0
  28. package/dist/cli/verify.d.ts.map +1 -0
  29. package/dist/cli/verify.js +95 -0
  30. package/dist/cli/verify.js.map +1 -0
  31. package/dist/extractors/animations.d.ts +6 -0
  32. package/dist/extractors/animations.d.ts.map +1 -0
  33. package/dist/extractors/animations.js +7 -0
  34. package/dist/extractors/animations.js.map +1 -0
  35. package/dist/extractors/assets.d.ts +6 -0
  36. package/dist/extractors/assets.d.ts.map +1 -0
  37. package/dist/extractors/assets.js +7 -0
  38. package/dist/extractors/assets.js.map +1 -0
  39. package/dist/extractors/base.d.ts +13 -0
  40. package/dist/extractors/base.d.ts.map +1 -0
  41. package/dist/extractors/base.js +27 -0
  42. package/dist/extractors/base.js.map +1 -0
  43. package/dist/extractors/behavior.d.ts +6 -0
  44. package/dist/extractors/behavior.d.ts.map +1 -0
  45. package/dist/extractors/behavior.js +7 -0
  46. package/dist/extractors/behavior.js.map +1 -0
  47. package/dist/extractors/components.d.ts +6 -0
  48. package/dist/extractors/components.d.ts.map +1 -0
  49. package/dist/extractors/components.js +7 -0
  50. package/dist/extractors/components.js.map +1 -0
  51. package/dist/extractors/framework.d.ts +6 -0
  52. package/dist/extractors/framework.d.ts.map +1 -0
  53. package/dist/extractors/framework.js +7 -0
  54. package/dist/extractors/framework.js.map +1 -0
  55. package/dist/extractors/layout.d.ts +6 -0
  56. package/dist/extractors/layout.d.ts.map +1 -0
  57. package/dist/extractors/layout.js +7 -0
  58. package/dist/extractors/layout.js.map +1 -0
  59. package/dist/extractors/network.d.ts +6 -0
  60. package/dist/extractors/network.d.ts.map +1 -0
  61. package/dist/extractors/network.js +7 -0
  62. package/dist/extractors/network.js.map +1 -0
  63. package/dist/extractors/orchestrator.d.ts +4 -0
  64. package/dist/extractors/orchestrator.d.ts.map +1 -0
  65. package/dist/extractors/orchestrator.js +96 -0
  66. package/dist/extractors/orchestrator.js.map +1 -0
  67. package/dist/extractors/typography.d.ts +6 -0
  68. package/dist/extractors/typography.d.ts.map +1 -0
  69. package/dist/extractors/typography.js +7 -0
  70. package/dist/extractors/typography.js.map +1 -0
  71. package/dist/extractors/visual.d.ts +6 -0
  72. package/dist/extractors/visual.d.ts.map +1 -0
  73. package/dist/extractors/visual.js +7 -0
  74. package/dist/extractors/visual.js.map +1 -0
  75. package/dist/generators/component-inventory.d.ts +4 -0
  76. package/dist/generators/component-inventory.d.ts.map +1 -0
  77. package/dist/generators/component-inventory.js +218 -0
  78. package/dist/generators/component-inventory.js.map +1 -0
  79. package/dist/generators/design-tokens.d.ts +5 -0
  80. package/dist/generators/design-tokens.d.ts.map +1 -0
  81. package/dist/generators/design-tokens.js +384 -0
  82. package/dist/generators/design-tokens.js.map +1 -0
  83. package/dist/generators/layout-blueprint.d.ts +4 -0
  84. package/dist/generators/layout-blueprint.d.ts.map +1 -0
  85. package/dist/generators/layout-blueprint.js +86 -0
  86. package/dist/generators/layout-blueprint.js.map +1 -0
  87. package/dist/generators/report.d.ts +3 -0
  88. package/dist/generators/report.d.ts.map +1 -0
  89. package/dist/generators/report.js +215 -0
  90. package/dist/generators/report.js.map +1 -0
  91. package/dist/index.d.ts +4 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +3 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/scripts/detect-framework.d.ts +2 -0
  96. package/dist/scripts/detect-framework.d.ts.map +1 -0
  97. package/dist/scripts/detect-framework.js +2 -0
  98. package/dist/scripts/detect-framework.js.map +1 -0
  99. package/dist/scripts/extract-components.d.ts +2 -0
  100. package/dist/scripts/extract-components.d.ts.map +1 -0
  101. package/dist/scripts/extract-components.js +2 -0
  102. package/dist/scripts/extract-components.js.map +1 -0
  103. package/dist/scripts/extract-layout.d.ts +2 -0
  104. package/dist/scripts/extract-layout.d.ts.map +1 -0
  105. package/dist/scripts/extract-layout.js +2 -0
  106. package/dist/scripts/extract-layout.js.map +1 -0
  107. package/dist/scripts/extract-styles.d.ts +2 -0
  108. package/dist/scripts/extract-styles.d.ts.map +1 -0
  109. package/dist/scripts/extract-styles.js +2 -0
  110. package/dist/scripts/extract-styles.js.map +1 -0
  111. package/dist/scripts/extract-typography.d.ts +2 -0
  112. package/dist/scripts/extract-typography.d.ts.map +1 -0
  113. package/dist/scripts/extract-typography.js +2 -0
  114. package/dist/scripts/extract-typography.js.map +1 -0
  115. package/dist/types/config.d.ts +80 -0
  116. package/dist/types/config.d.ts.map +1 -0
  117. package/dist/types/config.js +37 -0
  118. package/dist/types/config.js.map +1 -0
  119. package/dist/types/extraction.d.ts +204 -0
  120. package/dist/types/extraction.d.ts.map +1 -0
  121. package/dist/types/extraction.js +2 -0
  122. package/dist/types/extraction.js.map +1 -0
  123. package/dist/types/index.d.ts +5 -0
  124. package/dist/types/index.d.ts.map +1 -0
  125. package/dist/types/index.js +5 -0
  126. package/dist/types/index.js.map +1 -0
  127. package/dist/types/report.d.ts +18 -0
  128. package/dist/types/report.d.ts.map +1 -0
  129. package/dist/types/report.js +2 -0
  130. package/dist/types/report.js.map +1 -0
  131. package/dist/types/tokens.d.ts +62 -0
  132. package/dist/types/tokens.d.ts.map +1 -0
  133. package/dist/types/tokens.js +2 -0
  134. package/dist/types/tokens.js.map +1 -0
  135. package/dist/utils/color.d.ts +21 -0
  136. package/dist/utils/color.d.ts.map +1 -0
  137. package/dist/utils/color.js +107 -0
  138. package/dist/utils/color.js.map +1 -0
  139. package/dist/utils/css-parser.d.ts +31 -0
  140. package/dist/utils/css-parser.d.ts.map +1 -0
  141. package/dist/utils/css-parser.js +77 -0
  142. package/dist/utils/css-parser.js.map +1 -0
  143. package/dist/utils/dedup.d.ts +12 -0
  144. package/dist/utils/dedup.d.ts.map +1 -0
  145. package/dist/utils/dedup.js +44 -0
  146. package/dist/utils/dedup.js.map +1 -0
  147. package/dist/utils/fs.d.ts +6 -0
  148. package/dist/utils/fs.d.ts.map +1 -0
  149. package/dist/utils/fs.js +17 -0
  150. package/dist/utils/fs.js.map +1 -0
  151. package/dist/utils/screenshot-diff.d.ts +7 -0
  152. package/dist/utils/screenshot-diff.d.ts.map +1 -0
  153. package/dist/utils/screenshot-diff.js +43 -0
  154. package/dist/utils/screenshot-diff.js.map +1 -0
  155. package/package.json +60 -0
@@ -0,0 +1,44 @@
1
+ export function deduplicateValues(values) {
2
+ const counts = new Map();
3
+ for (const v of values) {
4
+ counts.set(v, (counts.get(v) || 0) + 1);
5
+ }
6
+ return Array.from(counts.entries())
7
+ .map(([value, count]) => ({ value, count }))
8
+ .sort((a, b) => b.count - a.count);
9
+ }
10
+ export function detectScale(values) {
11
+ if (values.length < 3)
12
+ return null;
13
+ const sorted = [...new Set(values)].sort((a, b) => a - b).filter(v => v > 0);
14
+ if (sorted.length < 3)
15
+ return null;
16
+ // Try common bases: 2, 4, 8
17
+ for (const base of [4, 8, 2]) {
18
+ const multipliers = sorted.map(v => v / base);
19
+ const allIntegers = multipliers.every(m => Math.abs(m - Math.round(m)) < 0.01);
20
+ if (allIntegers) {
21
+ return { base, multipliers: multipliers.map(m => Math.round(m)) };
22
+ }
23
+ }
24
+ // Try using the smallest value as base
25
+ const base = sorted[0];
26
+ const multipliers = sorted.map(v => v / base);
27
+ const allClean = multipliers.every(m => Math.abs(m - Math.round(m * 2) / 2) < 0.01);
28
+ if (allClean) {
29
+ return { base, multipliers: multipliers.map(m => Math.round(m * 2) / 2) };
30
+ }
31
+ return null;
32
+ }
33
+ export function suggestTokenName(value, scale) {
34
+ const index = scale.indexOf(value);
35
+ if (index === -1)
36
+ return value;
37
+ // Use t-shirt sizing for small scales, numeric for larger
38
+ if (scale.length <= 7) {
39
+ const names = ['xs', 'sm', 'md', 'lg', 'xl', '2xl', '3xl'];
40
+ return names[index] || `${index + 1}`;
41
+ }
42
+ return `${index + 1}`;
43
+ }
44
+ //# sourceMappingURL=dedup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dedup.js","sourceRoot":"","sources":["../../src/utils/dedup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ExtractionConfig } from '../types/config.js';
2
+ export declare function ensureDir(dir: string): Promise<void>;
3
+ export declare function writeJson(path: string, data: unknown): Promise<void>;
4
+ export declare function readJson<T>(path: string): Promise<T>;
5
+ export declare function resolveOutputPath(config: ExtractionConfig, filename: string): string;
6
+ //# sourceMappingURL=fs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE1D,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1D;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1E;AAED,wBAAsB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAG1D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpF"}
@@ -0,0 +1,17 @@
1
+ import { mkdir, writeFile, readFile } from 'node:fs/promises';
2
+ import { join, dirname } from 'node:path';
3
+ export async function ensureDir(dir) {
4
+ await mkdir(dir, { recursive: true });
5
+ }
6
+ export async function writeJson(path, data) {
7
+ await ensureDir(dirname(path));
8
+ await writeFile(path, JSON.stringify(data, null, 2) + '\n', 'utf-8');
9
+ }
10
+ export async function readJson(path) {
11
+ const content = await readFile(path, 'utf-8');
12
+ return JSON.parse(content);
13
+ }
14
+ export function resolveOutputPath(config, filename) {
15
+ return join(config.output, filename);
16
+ }
17
+ //# sourceMappingURL=fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGzC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW;IACzC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,IAAa;IACzD,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9B,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,IAAY;IAC5C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAwB,EAAE,QAAgB;IAC1E,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;AACtC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export interface DiffResult {
2
+ readonly diffPixels: number;
3
+ readonly totalPixels: number;
4
+ readonly diffPercent: number;
5
+ }
6
+ export declare function compareScreenshots(img1Path: string, img2Path: string, diffPath: string, threshold: number): Promise<DiffResult>;
7
+ //# sourceMappingURL=screenshot-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshot-diff.d.ts","sourceRoot":"","sources":["../../src/utils/screenshot-diff.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,CAAC,CA8BrB"}
@@ -0,0 +1,43 @@
1
+ import { readFile, writeFile } from 'node:fs/promises';
2
+ import pixelmatch from 'pixelmatch';
3
+ import { PNG } from 'pngjs';
4
+ /**
5
+ * Crops raw RGBA pixel data from srcWidth-wide image to a width×height region.
6
+ * Needed because pixelmatch requires buffers of exactly width*height*4 bytes.
7
+ */
8
+ function cropImageData(src, srcWidth, width, height) {
9
+ if (srcWidth === width) {
10
+ // No cropping needed in width — just slice the required rows
11
+ return src.subarray(0, width * height * 4);
12
+ }
13
+ const dest = Buffer.alloc(width * height * 4);
14
+ for (let y = 0; y < height; y++) {
15
+ src.copy(dest, y * width * 4, y * srcWidth * 4, y * srcWidth * 4 + width * 4);
16
+ }
17
+ return dest;
18
+ }
19
+ export async function compareScreenshots(img1Path, img2Path, diffPath, threshold) {
20
+ const [buf1, buf2] = await Promise.all([readFile(img1Path), readFile(img2Path)]);
21
+ const img1 = PNG.sync.read(buf1);
22
+ const img2 = PNG.sync.read(buf2);
23
+ // Handle size mismatches — crop pixel data to min dimensions
24
+ const width = Math.min(img1.width, img2.width);
25
+ const height = Math.min(img1.height, img2.height);
26
+ const diff = new PNG({ width, height });
27
+ // pixelmatch requires buffers of exactly width*height*4 bytes.
28
+ // If images differ in size, crop each buffer to the target region.
29
+ const data1 = cropImageData(img1.data, img1.width, width, height);
30
+ const data2 = cropImageData(img2.data, img2.width, width, height);
31
+ const diffPixels = pixelmatch(data1, data2, diff.data, width, height, {
32
+ threshold,
33
+ includeAA: false,
34
+ });
35
+ await writeFile(diffPath, PNG.sync.write(diff));
36
+ const totalPixels = width * height;
37
+ return {
38
+ diffPixels,
39
+ totalPixels,
40
+ diffPercent: diffPixels / totalPixels,
41
+ };
42
+ }
43
+ //# sourceMappingURL=screenshot-diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshot-diff.js","sourceRoot":"","sources":["../../src/utils/screenshot-diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAE3B;;;GAGG;AACH,SAAS,aAAa,CAAC,GAAW,EAAE,QAAgB,EAAE,KAAa,EAAE,MAAc;IACjF,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,6DAA6D;QAC7D,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAA;IAC5C,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAA;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAA;IAC/E,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,QAAgB,EAChB,QAAgB,EAChB,SAAiB;IAEjB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IAEhF,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEhC,6DAA6D;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAEjD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IAEvC,+DAA+D;IAC/D,mEAAmE;IACnE,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACjE,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAEjE,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;QACpE,SAAS;QACT,SAAS,EAAE,KAAK;KACjB,CAAC,CAAA;IAEF,MAAM,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IAE/C,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,CAAA;IAClC,OAAO;QACL,UAAU;QACV,WAAW;QACX,WAAW,EAAE,UAAU,GAAG,WAAW;KACtC,CAAA;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "designmaxxing",
3
+ "version": "0.1.0",
4
+ "description": "Pixel-perfect UI reverse engineering toolkit — extract design tokens, components, and layout from any web app",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "bin": {
9
+ "designmaxxing": "dist/cli/index.js"
10
+ },
11
+ "scripts": {
12
+ "build": "rm -rf dist && tsc",
13
+ "dev": "tsc --watch",
14
+ "test": "vitest run",
15
+ "test:watch": "vitest",
16
+ "lint": "tsc --noEmit",
17
+ "prepublishOnly": "npm run build && npm run test"
18
+ },
19
+ "keywords": [
20
+ "reverse-engineering",
21
+ "design-tokens",
22
+ "ui",
23
+ "css",
24
+ "playwright",
25
+ "extraction"
26
+ ],
27
+ "author": "mercuriumgroup",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "git+https://github.com/mercuriumgroup/UI-maxxing.git"
31
+ },
32
+ "license": "MIT",
33
+ "engines": {
34
+ "node": ">=18"
35
+ },
36
+ "files": [
37
+ "dist",
38
+ "!dist/**/*.test.js",
39
+ "!dist/**/*.test.js.map",
40
+ "!dist/**/*.test.d.ts",
41
+ "!dist/**/*.test.d.ts.map",
42
+ "README.md"
43
+ ],
44
+ "dependencies": {
45
+ "chalk": "^5.3.0",
46
+ "commander": "^12.0.0",
47
+ "fast-glob": "^3.3.0",
48
+ "ora": "^8.0.0",
49
+ "pixelmatch": "^7.1.0",
50
+ "playwright": "^1.48.0",
51
+ "pngjs": "^7.0.0",
52
+ "zod": "^3.23.0"
53
+ },
54
+ "devDependencies": {
55
+ "@types/node": "^20.0.0",
56
+ "@types/pngjs": "^6.0.5",
57
+ "typescript": "^5.5.0",
58
+ "vitest": "^2.0.0"
59
+ }
60
+ }