dembrandt 0.19.6 → 0.19.7

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.
@@ -1,3 +1,4 @@
1
+ import { DOM_COLOR_SNAPSHOT_SCRIPT, extractPlatformColors, resolvePlatformColors } from './platform-colors.js';
1
2
  export async function extractSiteName(page) {
2
3
  return await page.evaluate(() => {
3
4
  const ogSiteName = document.querySelector('meta[property="og:site_name"]');
@@ -82,6 +83,19 @@ export async function extractLogo(page, url) {
82
83
  }
83
84
  catch { }
84
85
  }
86
+ // Platform-specific color hints (meta/link tags) — fills gaps not covered by manifest
87
+ const domSnap = await page.evaluate(DOM_COLOR_SNAPSHOT_SCRIPT);
88
+ const platformHints = extractPlatformColors(domSnap);
89
+ const resolved = resolvePlatformColors(platformHints, {
90
+ themeColor: manifestMeta.themeColor,
91
+ backgroundColor: manifestMeta.backgroundColor,
92
+ });
93
+ if (resolved.themeColor)
94
+ manifestMeta.themeColor = resolved.themeColor;
95
+ if (resolved.darkThemeColor)
96
+ manifestMeta.darkThemeColor = resolved.darkThemeColor;
97
+ if (resolved.backgroundColor)
98
+ manifestMeta.backgroundColor = resolved.backgroundColor;
85
99
  const result = await page.evaluate((baseUrl) => {
86
100
  const siteDomain = new URL(baseUrl).hostname.replace('www.', '').split('.')[0].toLowerCase();
87
101
  // Canvas for background color detection
@@ -1 +1 @@
1
- {"version":3,"file":"logo.js","sourceRoot":"","sources":["../../../lib/extractors/logo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logo.js","sourceRoot":"","sources":["../../../lib/extractors/logo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Platform-specific brand color hints extracted from HTML meta / link tags.
3
+ *
4
+ * All sources documented with real-world prevalence notes so priority decisions
5
+ * are auditable without researching specs from scratch.
6
+ *
7
+ * Sources covered:
8
+ * theme-color W3C / Chrome Android, Safari 15+, Edge — most common
9
+ * theme-color (dark) Same tag with media="(prefers-color-scheme: dark)"
10
+ * mask-icon color Safari pinned tab — explicit brand hex, high signal
11
+ * msapplication-* IE11 / Windows pinned tiles — legacy but widespread
12
+ * apple-mobile-web-app-status-bar-style iOS Safari — value is black|default|#hex
13
+ * og:image Not a color, skip
14
+ */
15
+ export interface PlatformColorHint {
16
+ value: string;
17
+ source: string;
18
+ scheme?: 'light' | 'dark';
19
+ }
20
+ /**
21
+ * Snapshot of the DOM fields we need. Passed in so the logic is pure and
22
+ * unit-testable without a browser page object.
23
+ */
24
+ export interface DomColorSnapshot {
25
+ /** All <meta> elements serialized as { name, property, content, media } */
26
+ metas: Array<{
27
+ name?: string;
28
+ property?: string;
29
+ content?: string;
30
+ media?: string;
31
+ }>;
32
+ /** All <link> elements serialized as { rel, href, color } */
33
+ links: Array<{
34
+ rel?: string;
35
+ href?: string;
36
+ color?: string;
37
+ }>;
38
+ }
39
+ /** Run inside page.evaluate() to produce the snapshot. */
40
+ export declare const DOM_COLOR_SNAPSHOT_SCRIPT = "(() => {\n const metas = Array.from(document.querySelectorAll('meta')).map(m => ({\n name: m.getAttribute('name') || undefined,\n property: m.getAttribute('property') || undefined,\n content: m.getAttribute('content') || undefined,\n media: m.getAttribute('media') || undefined,\n }));\n const links = Array.from(document.querySelectorAll('link')).map(l => ({\n rel: l.getAttribute('rel') || undefined,\n href: l.getAttribute('href') || undefined,\n color: l.getAttribute('color') || undefined,\n }));\n return { metas, links };\n})()";
41
+ /**
42
+ * Returns color hints ordered by trust: manifest (already handled upstream) >
43
+ * explicit hex sources > inferred. Only includes entries with a non-empty value
44
+ * that looks like a color (hex, rgb, named). Does NOT normalize — caller normalizes
45
+ * via page.evaluate so CSS named colors resolve correctly.
46
+ */
47
+ export declare function extractPlatformColors(snap: DomColorSnapshot): PlatformColorHint[];
48
+ /**
49
+ * Collapse hints into { themeColor, darkThemeColor, backgroundColor } using source
50
+ * priority. Manifest values (already in manifestMeta upstream) take precedence — pass
51
+ * them as `existing` so this function only fills gaps.
52
+ */
53
+ export declare function resolvePlatformColors(hints: PlatformColorHint[], existing: {
54
+ themeColor?: string;
55
+ backgroundColor?: string;
56
+ }): {
57
+ themeColor?: string;
58
+ darkThemeColor?: string;
59
+ backgroundColor?: string;
60
+ };
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Platform-specific brand color hints extracted from HTML meta / link tags.
3
+ *
4
+ * All sources documented with real-world prevalence notes so priority decisions
5
+ * are auditable without researching specs from scratch.
6
+ *
7
+ * Sources covered:
8
+ * theme-color W3C / Chrome Android, Safari 15+, Edge — most common
9
+ * theme-color (dark) Same tag with media="(prefers-color-scheme: dark)"
10
+ * mask-icon color Safari pinned tab — explicit brand hex, high signal
11
+ * msapplication-* IE11 / Windows pinned tiles — legacy but widespread
12
+ * apple-mobile-web-app-status-bar-style iOS Safari — value is black|default|#hex
13
+ * og:image Not a color, skip
14
+ */
15
+ /** Run inside page.evaluate() to produce the snapshot. */
16
+ export const DOM_COLOR_SNAPSHOT_SCRIPT = `(() => {
17
+ const metas = Array.from(document.querySelectorAll('meta')).map(m => ({
18
+ name: m.getAttribute('name') || undefined,
19
+ property: m.getAttribute('property') || undefined,
20
+ content: m.getAttribute('content') || undefined,
21
+ media: m.getAttribute('media') || undefined,
22
+ }));
23
+ const links = Array.from(document.querySelectorAll('link')).map(l => ({
24
+ rel: l.getAttribute('rel') || undefined,
25
+ href: l.getAttribute('href') || undefined,
26
+ color: l.getAttribute('color') || undefined,
27
+ }));
28
+ return { metas, links };
29
+ })()`;
30
+ /**
31
+ * Returns color hints ordered by trust: manifest (already handled upstream) >
32
+ * explicit hex sources > inferred. Only includes entries with a non-empty value
33
+ * that looks like a color (hex, rgb, named). Does NOT normalize — caller normalizes
34
+ * via page.evaluate so CSS named colors resolve correctly.
35
+ */
36
+ export function extractPlatformColors(snap) {
37
+ const hints = [];
38
+ const addMeta = (name, source, scheme) => {
39
+ for (const m of snap.metas) {
40
+ if (m.name?.toLowerCase() !== name.toLowerCase())
41
+ continue;
42
+ const val = m.content?.trim();
43
+ if (!val || val === 'yes' || val === 'no')
44
+ continue;
45
+ // For theme-color: respect media queries to distinguish light/dark
46
+ if (name === 'theme-color' && m.media) {
47
+ const media = m.media.toLowerCase();
48
+ if (media.includes('dark')) {
49
+ hints.push({ value: val, source, scheme: 'dark' });
50
+ }
51
+ else if (media.includes('light')) {
52
+ hints.push({ value: val, source, scheme: 'light' });
53
+ }
54
+ else {
55
+ hints.push({ value: val, source });
56
+ }
57
+ }
58
+ else {
59
+ hints.push({ value: val, source, ...(scheme ? { scheme } : {}) });
60
+ }
61
+ }
62
+ };
63
+ // 1. theme-color — covers all media variants in one pass
64
+ addMeta('theme-color', 'meta:theme-color');
65
+ // 2. Safari pinned tab — <link rel="mask-icon" color="#hex"> — explicit, high trust
66
+ for (const l of snap.links) {
67
+ if (l.rel?.toLowerCase().includes('mask-icon') && l.color?.trim()) {
68
+ hints.push({ value: l.color.trim(), source: 'link:mask-icon' });
69
+ }
70
+ }
71
+ // 3. Windows tile color
72
+ addMeta('msapplication-TileColor', 'meta:msapplication-TileColor');
73
+ addMeta('msapplication-navbutton-color', 'meta:msapplication-navbutton-color');
74
+ // 4. iOS status bar — value is usually "black", "default", or "black-translucent",
75
+ // but some sites set a hex. Skip non-hex values — they carry no color information.
76
+ for (const m of snap.metas) {
77
+ if (m.name?.toLowerCase() !== 'apple-mobile-web-app-status-bar-style')
78
+ continue;
79
+ const val = m.content?.trim();
80
+ if (val && /^#[0-9a-f]{3,8}$/i.test(val)) {
81
+ hints.push({ value: val, source: 'meta:apple-status-bar' });
82
+ }
83
+ }
84
+ return hints;
85
+ }
86
+ /**
87
+ * Collapse hints into { themeColor, darkThemeColor, backgroundColor } using source
88
+ * priority. Manifest values (already in manifestMeta upstream) take precedence — pass
89
+ * them as `existing` so this function only fills gaps.
90
+ */
91
+ export function resolvePlatformColors(hints, existing) {
92
+ const result = {};
93
+ // Priority order for light/unschemed theme color:
94
+ // meta:theme-color (light/none) > link:mask-icon > msapplication-navbutton-color
95
+ const lightOrder = ['meta:theme-color', 'link:mask-icon', 'meta:msapplication-navbutton-color'];
96
+ const bgOrder = ['meta:msapplication-TileColor'];
97
+ if (!existing.themeColor) {
98
+ for (const src of lightOrder) {
99
+ const match = hints.find(h => h.source === src && h.scheme !== 'dark');
100
+ if (match) {
101
+ result.themeColor = match.value;
102
+ break;
103
+ }
104
+ }
105
+ }
106
+ // Dark variant — always populate if present, no upstream equivalent
107
+ const darkMatch = hints.find(h => h.scheme === 'dark' && h.source === 'meta:theme-color');
108
+ if (darkMatch)
109
+ result.darkThemeColor = darkMatch.value;
110
+ if (!existing.backgroundColor) {
111
+ for (const src of bgOrder) {
112
+ const match = hints.find(h => h.source === src);
113
+ if (match) {
114
+ result.backgroundColor = match.value;
115
+ break;
116
+ }
117
+ }
118
+ }
119
+ return result;
120
+ }
121
+ //# sourceMappingURL=platform-colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-colors.js","sourceRoot":"","sources":["../../../lib/extractors/platform-colors.ts"],"names":[],"mappings":"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"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dembrandt",
3
- "version": "0.19.6",
3
+ "version": "0.19.7",
4
4
  "description": "Extract design tokens and publicly visible CSS information from any website",
5
5
  "mcpName": "io.github.dembrandt/dembrandt",
6
6
  "main": "dist/index.js",
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,173 @@
1
+ import assert from 'node:assert/strict';
2
+ import { test } from 'node:test';
3
+ import { extractPlatformColors, resolvePlatformColors } from '../lib/extractors/platform-colors.js';
4
+ // ---------------------------------------------------------------------------
5
+ // extractPlatformColors
6
+ // ---------------------------------------------------------------------------
7
+ test('extracts theme-color meta without media attribute', () => {
8
+ const snap = {
9
+ metas: [{ name: 'theme-color', content: '#1a73e8' }],
10
+ links: [],
11
+ };
12
+ const hints = extractPlatformColors(snap);
13
+ assert.equal(hints.length, 1);
14
+ assert.equal(hints[0].value, '#1a73e8');
15
+ assert.equal(hints[0].source, 'meta:theme-color');
16
+ assert.equal(hints[0].scheme, undefined);
17
+ });
18
+ test('splits theme-color into light and dark via media attribute', () => {
19
+ const snap = {
20
+ metas: [
21
+ { name: 'theme-color', content: '#ffffff', media: '(prefers-color-scheme: light)' },
22
+ { name: 'theme-color', content: '#000000', media: '(prefers-color-scheme: dark)' },
23
+ ],
24
+ links: [],
25
+ };
26
+ const hints = extractPlatformColors(snap);
27
+ assert.equal(hints.length, 2);
28
+ const light = hints.find(h => h.scheme === 'light');
29
+ const dark = hints.find(h => h.scheme === 'dark');
30
+ assert.equal(light?.value, '#ffffff');
31
+ assert.equal(dark?.value, '#000000');
32
+ });
33
+ test('extracts mask-icon color from link tag', () => {
34
+ const snap = {
35
+ metas: [],
36
+ links: [{ rel: 'mask-icon', href: '/icon.svg', color: '#5bbad5' }],
37
+ };
38
+ const hints = extractPlatformColors(snap);
39
+ assert.equal(hints.length, 1);
40
+ assert.equal(hints[0].source, 'link:mask-icon');
41
+ assert.equal(hints[0].value, '#5bbad5');
42
+ });
43
+ test('ignores mask-icon without color attribute', () => {
44
+ const snap = {
45
+ metas: [],
46
+ links: [{ rel: 'mask-icon', href: '/icon.svg' }],
47
+ };
48
+ assert.equal(extractPlatformColors(snap).length, 0);
49
+ });
50
+ test('extracts msapplication-TileColor', () => {
51
+ const snap = {
52
+ metas: [{ name: 'msapplication-TileColor', content: '#da532c' }],
53
+ links: [],
54
+ };
55
+ const hints = extractPlatformColors(snap);
56
+ assert.equal(hints[0].source, 'meta:msapplication-TileColor');
57
+ assert.equal(hints[0].value, '#da532c');
58
+ });
59
+ test('extracts msapplication-navbutton-color', () => {
60
+ const snap = {
61
+ metas: [{ name: 'msapplication-navbutton-color', content: '#ff6600' }],
62
+ links: [],
63
+ };
64
+ const hints = extractPlatformColors(snap);
65
+ assert.equal(hints[0].source, 'meta:msapplication-navbutton-color');
66
+ });
67
+ test('apple status bar: skips non-hex values like "black" or "default"', () => {
68
+ const snap = {
69
+ metas: [
70
+ { name: 'apple-mobile-web-app-status-bar-style', content: 'black' },
71
+ { name: 'apple-mobile-web-app-status-bar-style', content: 'default' },
72
+ { name: 'apple-mobile-web-app-status-bar-style', content: 'black-translucent' },
73
+ ],
74
+ links: [],
75
+ };
76
+ assert.equal(extractPlatformColors(snap).length, 0);
77
+ });
78
+ test('apple status bar: accepts hex value', () => {
79
+ const snap = {
80
+ metas: [{ name: 'apple-mobile-web-app-status-bar-style', content: '#007aff' }],
81
+ links: [],
82
+ };
83
+ const hints = extractPlatformColors(snap);
84
+ assert.equal(hints.length, 1);
85
+ assert.equal(hints[0].source, 'meta:apple-status-bar');
86
+ assert.equal(hints[0].value, '#007aff');
87
+ });
88
+ test('case-insensitive name matching', () => {
89
+ const snap = {
90
+ metas: [{ name: 'Theme-Color', content: '#abcdef' }],
91
+ links: [],
92
+ };
93
+ assert.equal(extractPlatformColors(snap).length, 1);
94
+ });
95
+ test('ignores meta with empty or boolean-like content', () => {
96
+ const snap = {
97
+ metas: [
98
+ { name: 'theme-color', content: '' },
99
+ { name: 'theme-color', content: 'yes' },
100
+ { name: 'theme-color', content: 'no' },
101
+ ],
102
+ links: [],
103
+ };
104
+ assert.equal(extractPlatformColors(snap).length, 0);
105
+ });
106
+ test('empty snapshot yields no hints', () => {
107
+ assert.equal(extractPlatformColors({ metas: [], links: [] }).length, 0);
108
+ });
109
+ // ---------------------------------------------------------------------------
110
+ // resolvePlatformColors
111
+ // ---------------------------------------------------------------------------
112
+ test('sets themeColor from first matching light/unschemed hint', () => {
113
+ const hints = extractPlatformColors({
114
+ metas: [{ name: 'theme-color', content: '#aabbcc' }],
115
+ links: [],
116
+ });
117
+ const result = resolvePlatformColors(hints, {});
118
+ assert.equal(result.themeColor, '#aabbcc');
119
+ });
120
+ test('does not overwrite existing themeColor from manifest', () => {
121
+ const hints = extractPlatformColors({
122
+ metas: [{ name: 'theme-color', content: '#aabbcc' }],
123
+ links: [],
124
+ });
125
+ const result = resolvePlatformColors(hints, { themeColor: '#manifest' });
126
+ assert.equal(result.themeColor, undefined);
127
+ });
128
+ test('always populates darkThemeColor even when light is set', () => {
129
+ const snap = {
130
+ metas: [
131
+ { name: 'theme-color', content: '#ffffff', media: '(prefers-color-scheme: light)' },
132
+ { name: 'theme-color', content: '#111111', media: '(prefers-color-scheme: dark)' },
133
+ ],
134
+ links: [],
135
+ };
136
+ const hints = extractPlatformColors(snap);
137
+ const result = resolvePlatformColors(hints, {});
138
+ assert.equal(result.themeColor, '#ffffff');
139
+ assert.equal(result.darkThemeColor, '#111111');
140
+ });
141
+ test('mask-icon used as themeColor fallback when no theme-color meta', () => {
142
+ const hints = extractPlatformColors({
143
+ metas: [],
144
+ links: [{ rel: 'mask-icon', color: '#5bbad5' }],
145
+ });
146
+ const result = resolvePlatformColors(hints, {});
147
+ assert.equal(result.themeColor, '#5bbad5');
148
+ });
149
+ test('theme-color meta takes priority over mask-icon', () => {
150
+ const hints = extractPlatformColors({
151
+ metas: [{ name: 'theme-color', content: '#ff0000' }],
152
+ links: [{ rel: 'mask-icon', color: '#00ff00' }],
153
+ });
154
+ const result = resolvePlatformColors(hints, {});
155
+ assert.equal(result.themeColor, '#ff0000');
156
+ });
157
+ test('msapplication-TileColor maps to backgroundColor', () => {
158
+ const hints = extractPlatformColors({
159
+ metas: [{ name: 'msapplication-TileColor', content: '#da532c' }],
160
+ links: [],
161
+ });
162
+ const result = resolvePlatformColors(hints, {});
163
+ assert.equal(result.backgroundColor, '#da532c');
164
+ });
165
+ test('does not overwrite existing backgroundColor from manifest', () => {
166
+ const hints = extractPlatformColors({
167
+ metas: [{ name: 'msapplication-TileColor', content: '#da532c' }],
168
+ links: [],
169
+ });
170
+ const result = resolvePlatformColors(hints, { backgroundColor: '#from-manifest' });
171
+ assert.equal(result.backgroundColor, undefined);
172
+ });
173
+ //# sourceMappingURL=platform-colors.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-colors.test.js","sourceRoot":"","sources":["../../test/platform-colors.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAyB,MAAM,sCAAsC,CAAC;AAE3H,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;IAC7D,MAAM,IAAI,GAAqB;QAC7B,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QACpD,KAAK,EAAE,EAAE;KACV,CAAC;IACF,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACxC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;IACtE,MAAM,IAAI,GAAqB;QAC7B,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,+BAA+B,EAAE;YACnF,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,8BAA8B,EAAE;SACnF;QACD,KAAK,EAAE,EAAE;KACV,CAAC;IACF,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACtC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;IAClD,MAAM,IAAI,GAAqB;QAC7B,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;KACnE,CAAC;IACF,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;IACrD,MAAM,IAAI,GAAqB;QAC7B,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;KACjD,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAC5C,MAAM,IAAI,GAAqB;QAC7B,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAChE,KAAK,EAAE,EAAE;KACV,CAAC;IACF,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;IAClD,MAAM,IAAI,GAAqB;QAC7B,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,+BAA+B,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QACtE,KAAK,EAAE,EAAE;KACV,CAAC;IACF,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,oCAAoC,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kEAAkE,EAAE,GAAG,EAAE;IAC5E,MAAM,IAAI,GAAqB;QAC7B,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,uCAAuC,EAAE,OAAO,EAAE,OAAO,EAAE;YACnE,EAAE,IAAI,EAAE,uCAAuC,EAAE,OAAO,EAAE,SAAS,EAAE;YACrE,EAAE,IAAI,EAAE,uCAAuC,EAAE,OAAO,EAAE,mBAAmB,EAAE;SAChF;QACD,KAAK,EAAE,EAAE;KACV,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;IAC/C,MAAM,IAAI,GAAqB;QAC7B,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,uCAAuC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAC9E,KAAK,EAAE,EAAE;KACV,CAAC;IACF,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IACvD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC1C,MAAM,IAAI,GAAqB;QAC7B,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QACpD,KAAK,EAAE,EAAE;KACV,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;IAC3D,MAAM,IAAI,GAAqB;QAC7B,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;YACpC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE;YACvC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE;SACvC;QACD,KAAK,EAAE,EAAE;KACV,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC1C,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,IAAI,CAAC,0DAA0D,EAAE,GAAG,EAAE;IACpE,MAAM,KAAK,GAAG,qBAAqB,CAAC;QAClC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QACpD,KAAK,EAAE,EAAE;KACV,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;IAChE,MAAM,KAAK,GAAG,qBAAqB,CAAC;QAClC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QACpD,KAAK,EAAE,EAAE;KACV,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;IACzE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wDAAwD,EAAE,GAAG,EAAE;IAClE,MAAM,IAAI,GAAqB;QAC7B,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,+BAA+B,EAAE;YACnF,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,8BAA8B,EAAE;SACnF;QACD,KAAK,EAAE,EAAE;KACV,CAAC;IACF,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC3C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gEAAgE,EAAE,GAAG,EAAE;IAC1E,MAAM,KAAK,GAAG,qBAAqB,CAAC;QAClC,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;KAChD,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC1D,MAAM,KAAK,GAAG,qBAAqB,CAAC;QAClC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QACpD,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;KAChD,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;IAC3D,MAAM,KAAK,GAAG,qBAAqB,CAAC;QAClC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAChE,KAAK,EAAE,EAAE;KACV,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2DAA2D,EAAE,GAAG,EAAE;IACrE,MAAM,KAAK,GAAG,qBAAqB,CAAC;QAClC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAChE,KAAK,EAAE,EAAE;KACV,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,EAAE,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACnF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,118 @@
1
+ import assert from 'node:assert/strict';
2
+ import { test } from 'node:test';
3
+ const SPOOFED_VENDOR = 'Google Inc. (NVIDIA)';
4
+ const SPOOFED_RENDERER = 'ANGLE (NVIDIA, NVIDIA GeForce RTX 3060 Direct3D11 vs_5_0 ps_5_0, D3D11)';
5
+ function makeWebGLProto() {
6
+ const store = {
7
+ 37445: 'Google Inc. (SwiftShader)',
8
+ 37446: 'SwiftShader ANGLE (Google, Vulkan 1.3.0)',
9
+ 9729: 'some-other-value',
10
+ };
11
+ return {
12
+ getParameter(param) {
13
+ return store[param];
14
+ },
15
+ };
16
+ }
17
+ function applyWebGLPatch(proto) {
18
+ const orig = proto.getParameter.bind(proto);
19
+ proto.getParameter = function (param) {
20
+ if (param === 37445)
21
+ return SPOOFED_VENDOR;
22
+ if (param === 37446)
23
+ return SPOOFED_RENDERER;
24
+ return orig(param);
25
+ };
26
+ }
27
+ test('WebGL patch overrides vendor (37445)', () => {
28
+ const proto = makeWebGLProto();
29
+ applyWebGLPatch(proto);
30
+ assert.equal(proto.getParameter(37445), SPOOFED_VENDOR);
31
+ });
32
+ test('WebGL patch overrides renderer (37446)', () => {
33
+ const proto = makeWebGLProto();
34
+ applyWebGLPatch(proto);
35
+ assert.equal(proto.getParameter(37446), SPOOFED_RENDERER);
36
+ });
37
+ test('WebGL patch passes through other parameters', () => {
38
+ const proto = makeWebGLProto();
39
+ applyWebGLPatch(proto);
40
+ assert.equal(proto.getParameter(9729), 'some-other-value');
41
+ });
42
+ test('WebGL patch works independently on two prototypes (WebGL1 + WebGL2)', () => {
43
+ const proto1 = makeWebGLProto();
44
+ const proto2 = makeWebGLProto();
45
+ applyWebGLPatch(proto1);
46
+ applyWebGLPatch(proto2);
47
+ assert.equal(proto1.getParameter(37445), SPOOFED_VENDOR);
48
+ assert.equal(proto2.getParameter(37445), SPOOFED_VENDOR);
49
+ assert.equal(proto1.getParameter(9729), proto2.getParameter(9729));
50
+ });
51
+ // --- Audio fingerprint ---
52
+ function makeSessionNoise(seed) {
53
+ return (index) => {
54
+ const x = Math.sin(seed * 9301 + index * 49297 + 233720) * 10000;
55
+ return 1e-7 + (x - Math.floor(x)) * 9e-7;
56
+ };
57
+ }
58
+ function makeOfflineAudioContextProto() {
59
+ return {
60
+ startRendering() {
61
+ const data = new Float32Array(128).fill(0.5);
62
+ return Promise.resolve({ getChannelData: (_ch) => data });
63
+ },
64
+ };
65
+ }
66
+ function applyAudioPatch(proto, sessionNoise) {
67
+ const orig = proto.startRendering.bind(proto);
68
+ proto.startRendering = function () {
69
+ return orig().then((buffer) => {
70
+ const data = buffer.getChannelData(0);
71
+ for (let i = 0; i < Math.min(data.length, 20); i++) {
72
+ data[i] += sessionNoise(i);
73
+ }
74
+ return buffer;
75
+ });
76
+ };
77
+ }
78
+ test('audio patch mutates only first 20 samples of the rendered buffer', async () => {
79
+ const proto = makeOfflineAudioContextProto();
80
+ const baseline = new Float32Array(128).fill(0.5);
81
+ applyAudioPatch(proto, makeSessionNoise(0.73));
82
+ const buffer = await proto.startRendering();
83
+ const data = buffer.getChannelData(0);
84
+ for (let i = 0; i < 20; i++) {
85
+ assert.ok(data[i] !== baseline[i], `sample ${i} unchanged`);
86
+ assert.ok(Math.abs(data[i] - baseline[i]) < 1e-5, `sample ${i} noise too large`);
87
+ }
88
+ for (let i = 20; i < 128; i++) {
89
+ assert.equal(data[i], baseline[i], `sample ${i} unexpectedly modified`);
90
+ }
91
+ });
92
+ test('audio patch is session-stable: two startRendering calls produce identical output', async () => {
93
+ const noise = makeSessionNoise(0.42);
94
+ const proto = makeOfflineAudioContextProto();
95
+ applyAudioPatch(proto, noise);
96
+ const b1 = await proto.startRendering();
97
+ const d1 = Float32Array.from(b1.getChannelData(0));
98
+ // Reset underlying data to simulate a second fingerprint probe on the same page.
99
+ const proto2 = makeOfflineAudioContextProto();
100
+ applyAudioPatch(proto2, noise);
101
+ const b2 = await proto2.startRendering();
102
+ const d2 = b2.getChannelData(0);
103
+ for (let i = 0; i < 20; i++) {
104
+ assert.equal(d1[i], d2[i], `sample ${i} differs between reads`);
105
+ }
106
+ });
107
+ test('audio patch noise differs across sessions (different seeds)', async () => {
108
+ async function render(seed) {
109
+ const proto = makeOfflineAudioContextProto();
110
+ applyAudioPatch(proto, makeSessionNoise(seed));
111
+ const buf = await proto.startRendering();
112
+ return buf.getChannelData(0)[0];
113
+ }
114
+ const v1 = await render(0.1);
115
+ const v2 = await render(0.9);
116
+ assert.notEqual(v1, v2);
117
+ });
118
+ //# sourceMappingURL=stealth.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stealth.test.js","sourceRoot":"","sources":["../../test/stealth.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dembrandt",
3
- "version": "0.19.6",
3
+ "version": "0.19.7",
4
4
  "description": "Extract design tokens and publicly visible CSS information from any website",
5
5
  "mcpName": "io.github.dembrandt/dembrandt",
6
6
  "main": "dist/index.js",