sweetlink 0.1.0 → 0.2.1

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 (232) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/LICENSE +1 -1
  3. package/README.md +22 -11
  4. package/dist/daemon/src/codename.d.ts.map +1 -1
  5. package/dist/daemon/src/codename.js +11 -11
  6. package/dist/daemon/src/codename.js.map +1 -1
  7. package/dist/daemon/src/index.d.ts +1 -1
  8. package/dist/daemon/src/index.js +131 -122
  9. package/dist/daemon/src/index.js.map +1 -1
  10. package/dist/shared/src/env.d.ts.map +1 -1
  11. package/dist/shared/src/env.js +12 -12
  12. package/dist/shared/src/env.js.map +1 -1
  13. package/dist/shared/src/index.d.ts +30 -30
  14. package/dist/shared/src/index.d.ts.map +1 -1
  15. package/dist/shared/src/index.js +17 -17
  16. package/dist/shared/src/index.js.map +1 -1
  17. package/dist/shared/src/node.d.ts +1 -1
  18. package/dist/shared/src/node.d.ts.map +1 -1
  19. package/dist/shared/src/node.js +18 -18
  20. package/dist/shared/src/node.js.map +1 -1
  21. package/dist/src/codex.d.ts +1 -1
  22. package/dist/src/codex.js +19 -19
  23. package/dist/src/codex.js.map +1 -1
  24. package/dist/src/commands/click.d.ts +1 -1
  25. package/dist/src/commands/click.d.ts.map +1 -1
  26. package/dist/src/commands/click.js +32 -24
  27. package/dist/src/commands/click.js.map +1 -1
  28. package/dist/src/commands/run-js.d.ts +1 -1
  29. package/dist/src/commands/run-js.d.ts.map +1 -1
  30. package/dist/src/commands/run-js.js +10 -10
  31. package/dist/src/commands/run-js.js.map +1 -1
  32. package/dist/src/commands/trust-ca.d.ts +1 -1
  33. package/dist/src/commands/trust-ca.js +15 -15
  34. package/dist/src/core/config-file.d.ts +6 -0
  35. package/dist/src/core/config-file.d.ts.map +1 -1
  36. package/dist/src/core/config-file.js +73 -38
  37. package/dist/src/core/config-file.js.map +1 -1
  38. package/dist/src/core/config.d.ts +3 -2
  39. package/dist/src/core/config.d.ts.map +1 -1
  40. package/dist/src/core/config.js +31 -18
  41. package/dist/src/core/config.js.map +1 -1
  42. package/dist/src/core/dev-bootstrap.d.ts +10 -0
  43. package/dist/src/core/dev-bootstrap.d.ts.map +1 -0
  44. package/dist/src/core/dev-bootstrap.js +112 -0
  45. package/dist/src/core/dev-bootstrap.js.map +1 -0
  46. package/dist/src/core/env.d.ts +1 -1
  47. package/dist/src/core/env.d.ts.map +1 -1
  48. package/dist/src/core/env.js +3 -3
  49. package/dist/src/core/env.js.map +1 -1
  50. package/dist/src/devtools-registry.d.ts.map +1 -1
  51. package/dist/src/devtools-registry.js +48 -46
  52. package/dist/src/devtools-registry.js.map +1 -1
  53. package/dist/src/env.d.ts +1 -1
  54. package/dist/src/env.js +1 -1
  55. package/dist/src/http.d.ts.map +1 -1
  56. package/dist/src/http.js +7 -6
  57. package/dist/src/http.js.map +1 -1
  58. package/dist/src/index.d.ts +7 -7
  59. package/dist/src/index.d.ts.map +1 -1
  60. package/dist/src/index.js +450 -363
  61. package/dist/src/index.js.map +1 -1
  62. package/dist/src/runtime/browser/client.d.ts +3 -3
  63. package/dist/src/runtime/browser/client.d.ts.map +1 -1
  64. package/dist/src/runtime/browser/client.js +79 -72
  65. package/dist/src/runtime/browser/client.js.map +1 -1
  66. package/dist/src/runtime/browser/commands/index.d.ts +2 -2
  67. package/dist/src/runtime/browser/commands/index.js +17 -17
  68. package/dist/src/runtime/browser/commands/index.js.map +1 -1
  69. package/dist/src/runtime/browser/dom-to-image-loader.d.ts.map +1 -1
  70. package/dist/src/runtime/browser/dom-to-image-loader.js +7 -7
  71. package/dist/src/runtime/browser/dom-to-image-loader.js.map +1 -1
  72. package/dist/src/runtime/browser/index.d.ts +3 -3
  73. package/dist/src/runtime/browser/index.js +2 -2
  74. package/dist/src/runtime/browser/module-loader.js +2 -2
  75. package/dist/src/runtime/browser/screenshot/hooks.d.ts +25 -53
  76. package/dist/src/runtime/browser/screenshot/hooks.d.ts.map +1 -1
  77. package/dist/src/runtime/browser/screenshot/hooks.js +32 -29
  78. package/dist/src/runtime/browser/screenshot/hooks.js.map +1 -1
  79. package/dist/src/runtime/browser/screenshot/index.d.ts +3 -3
  80. package/dist/src/runtime/browser/screenshot/index.d.ts.map +1 -1
  81. package/dist/src/runtime/browser/screenshot/index.js +17 -15
  82. package/dist/src/runtime/browser/screenshot/index.js.map +1 -1
  83. package/dist/src/runtime/browser/screenshot/renderers/dom-to-image.d.ts +1 -1
  84. package/dist/src/runtime/browser/screenshot/renderers/dom-to-image.js +13 -13
  85. package/dist/src/runtime/browser/screenshot/renderers/dom-to-image.js.map +1 -1
  86. package/dist/src/runtime/browser/screenshot/renderers/html2canvas.d.ts +1 -1
  87. package/dist/src/runtime/browser/screenshot/renderers/html2canvas.d.ts.map +1 -1
  88. package/dist/src/runtime/browser/screenshot/renderers/html2canvas.js +24 -24
  89. package/dist/src/runtime/browser/screenshot/renderers/html2canvas.js.map +1 -1
  90. package/dist/src/runtime/browser/screenshot/targets.d.ts +2 -2
  91. package/dist/src/runtime/browser/screenshot/targets.js +9 -9
  92. package/dist/src/runtime/browser/screenshot/utils.d.ts +1 -1
  93. package/dist/src/runtime/browser/screenshot/utils.d.ts.map +1 -1
  94. package/dist/src/runtime/browser/screenshot/utils.js +73 -71
  95. package/dist/src/runtime/browser/screenshot/utils.js.map +1 -1
  96. package/dist/src/runtime/browser/selector-discovery.d.ts +1 -1
  97. package/dist/src/runtime/browser/selector-discovery.d.ts.map +1 -1
  98. package/dist/src/runtime/browser/selector-discovery.js +24 -22
  99. package/dist/src/runtime/browser/selector-discovery.js.map +1 -1
  100. package/dist/src/runtime/browser/storage/session-storage.d.ts +1 -1
  101. package/dist/src/runtime/browser/storage/session-storage.d.ts.map +1 -1
  102. package/dist/src/runtime/browser/storage/session-storage.js +12 -10
  103. package/dist/src/runtime/browser/storage/session-storage.js.map +1 -1
  104. package/dist/src/runtime/browser/types.d.ts +7 -7
  105. package/dist/src/runtime/browser/types.js +1 -1
  106. package/dist/src/runtime/browser/utils/console.d.ts +1 -1
  107. package/dist/src/runtime/browser/utils/console.js +16 -16
  108. package/dist/src/runtime/browser/utils/console.js.map +1 -1
  109. package/dist/src/runtime/browser/utils/environment.js +2 -2
  110. package/dist/src/runtime/browser/utils/errors.d.ts.map +1 -1
  111. package/dist/src/runtime/browser/utils/errors.js +11 -11
  112. package/dist/src/runtime/browser/utils/number.d.ts.map +1 -1
  113. package/dist/src/runtime/browser/utils/number.js.map +1 -1
  114. package/dist/src/runtime/browser/utils/object.d.ts.map +1 -1
  115. package/dist/src/runtime/browser/utils/object.js +2 -2
  116. package/dist/src/runtime/browser/utils/object.js.map +1 -1
  117. package/dist/src/runtime/browser/utils/sanitize.js +2 -2
  118. package/dist/src/runtime/browser/utils/time.d.ts.map +1 -1
  119. package/dist/src/runtime/browser/utils/time.js +1 -1
  120. package/dist/src/runtime/chrome/cookies.d.ts +4 -4
  121. package/dist/src/runtime/chrome/cookies.d.ts.map +1 -1
  122. package/dist/src/runtime/chrome/cookies.js +31 -31
  123. package/dist/src/runtime/chrome/cookies.js.map +1 -1
  124. package/dist/src/runtime/chrome/deep-link.d.ts +13 -0
  125. package/dist/src/runtime/chrome/deep-link.d.ts.map +1 -0
  126. package/dist/src/runtime/chrome/deep-link.js +292 -0
  127. package/dist/src/runtime/chrome/deep-link.js.map +1 -0
  128. package/dist/src/runtime/chrome/diagnostics.d.ts.map +1 -1
  129. package/dist/src/runtime/chrome/diagnostics.js +13 -11
  130. package/dist/src/runtime/chrome/diagnostics.js.map +1 -1
  131. package/dist/src/runtime/chrome/focus.d.ts.map +1 -1
  132. package/dist/src/runtime/chrome/focus.js +5 -5
  133. package/dist/src/runtime/chrome/focus.js.map +1 -1
  134. package/dist/src/runtime/chrome/launch.d.ts.map +1 -1
  135. package/dist/src/runtime/chrome/launch.js +30 -30
  136. package/dist/src/runtime/chrome/launch.js.map +1 -1
  137. package/dist/src/runtime/chrome/puppeteer.d.ts +2 -2
  138. package/dist/src/runtime/chrome/puppeteer.d.ts.map +1 -1
  139. package/dist/src/runtime/chrome/puppeteer.js +16 -11
  140. package/dist/src/runtime/chrome/puppeteer.js.map +1 -1
  141. package/dist/src/runtime/chrome/reuse.d.ts.map +1 -1
  142. package/dist/src/runtime/chrome/reuse.js +38 -35
  143. package/dist/src/runtime/chrome/reuse.js.map +1 -1
  144. package/dist/src/runtime/chrome/session.d.ts +1 -1
  145. package/dist/src/runtime/chrome/session.d.ts.map +1 -1
  146. package/dist/src/runtime/chrome/session.js +12 -10
  147. package/dist/src/runtime/chrome/session.js.map +1 -1
  148. package/dist/src/runtime/chrome.d.ts +8 -8
  149. package/dist/src/runtime/chrome.js +8 -8
  150. package/dist/src/runtime/cookies.d.ts +1 -16
  151. package/dist/src/runtime/cookies.d.ts.map +1 -1
  152. package/dist/src/runtime/cookies.js +177 -281
  153. package/dist/src/runtime/cookies.js.map +1 -1
  154. package/dist/src/runtime/devstack.d.ts +1 -1
  155. package/dist/src/runtime/devstack.d.ts.map +1 -1
  156. package/dist/src/runtime/devstack.js +31 -28
  157. package/dist/src/runtime/devstack.js.map +1 -1
  158. package/dist/src/runtime/devtools/background.js +22 -22
  159. package/dist/src/runtime/devtools/cdp.d.ts +3 -2
  160. package/dist/src/runtime/devtools/cdp.d.ts.map +1 -1
  161. package/dist/src/runtime/devtools/cdp.js +61 -56
  162. package/dist/src/runtime/devtools/cdp.js.map +1 -1
  163. package/dist/src/runtime/devtools/config.d.ts +44 -1
  164. package/dist/src/runtime/devtools/config.d.ts.map +1 -1
  165. package/dist/src/runtime/devtools/config.js +15 -15
  166. package/dist/src/runtime/devtools/config.js.map +1 -1
  167. package/dist/src/runtime/devtools/constants.d.ts.map +1 -1
  168. package/dist/src/runtime/devtools/constants.js +18 -10
  169. package/dist/src/runtime/devtools/constants.js.map +1 -1
  170. package/dist/src/runtime/devtools/diagnostics.d.ts +6 -3
  171. package/dist/src/runtime/devtools/diagnostics.d.ts.map +1 -1
  172. package/dist/src/runtime/devtools/diagnostics.js +40 -38
  173. package/dist/src/runtime/devtools/diagnostics.js.map +1 -1
  174. package/dist/src/runtime/devtools/oauth.d.ts +1 -1
  175. package/dist/src/runtime/devtools/oauth.d.ts.map +1 -1
  176. package/dist/src/runtime/devtools/oauth.js +35 -28
  177. package/dist/src/runtime/devtools/oauth.js.map +1 -1
  178. package/dist/src/runtime/devtools/types.d.ts +3 -48
  179. package/dist/src/runtime/devtools/types.d.ts.map +1 -1
  180. package/dist/src/runtime/devtools.d.ts +7 -7
  181. package/dist/src/runtime/devtools.js +7 -7
  182. package/dist/src/runtime/next-devtools.d.ts.map +1 -1
  183. package/dist/src/runtime/next-devtools.js +12 -12
  184. package/dist/src/runtime/next-devtools.js.map +1 -1
  185. package/dist/src/runtime/screenshot.d.ts +9 -9
  186. package/dist/src/runtime/screenshot.d.ts.map +1 -1
  187. package/dist/src/runtime/screenshot.js +65 -46
  188. package/dist/src/runtime/screenshot.js.map +1 -1
  189. package/dist/src/runtime/scripts.d.ts +1 -1
  190. package/dist/src/runtime/scripts.d.ts.map +1 -1
  191. package/dist/src/runtime/scripts.js +28 -28
  192. package/dist/src/runtime/scripts.js.map +1 -1
  193. package/dist/src/runtime/session.d.ts +6 -6
  194. package/dist/src/runtime/session.d.ts.map +1 -1
  195. package/dist/src/runtime/session.js +35 -35
  196. package/dist/src/runtime/session.js.map +1 -1
  197. package/dist/src/runtime/smoke.d.ts +3 -3
  198. package/dist/src/runtime/smoke.d.ts.map +1 -1
  199. package/dist/src/runtime/smoke.js +85 -79
  200. package/dist/src/runtime/smoke.js.map +1 -1
  201. package/dist/src/runtime/url.d.ts +2 -2
  202. package/dist/src/runtime/url.d.ts.map +1 -1
  203. package/dist/src/runtime/url.js +20 -20
  204. package/dist/src/runtime/url.js.map +1 -1
  205. package/dist/src/screenshot-hooks.d.ts +1 -1
  206. package/dist/src/screenshot-hooks.d.ts.map +1 -1
  207. package/dist/src/screenshot-hooks.js +12 -12
  208. package/dist/src/screenshot-hooks.js.map +1 -1
  209. package/dist/src/shared/env.d.ts.map +1 -1
  210. package/dist/src/shared/env.js +11 -11
  211. package/dist/src/shared/env.js.map +1 -1
  212. package/dist/src/shared/index.d.ts +30 -30
  213. package/dist/src/shared/index.d.ts.map +1 -1
  214. package/dist/src/shared/index.js +17 -17
  215. package/dist/src/shared/index.js.map +1 -1
  216. package/dist/src/shared/node.d.ts +1 -1
  217. package/dist/src/shared/node.d.ts.map +1 -1
  218. package/dist/src/shared/node.js +18 -18
  219. package/dist/src/shared/node.js.map +1 -1
  220. package/dist/src/token.d.ts +1 -1
  221. package/dist/src/token.d.ts.map +1 -1
  222. package/dist/src/token.js +21 -18
  223. package/dist/src/token.js.map +1 -1
  224. package/dist/src/types.d.ts +7 -1
  225. package/dist/src/types.d.ts.map +1 -1
  226. package/dist/src/util/app-label.js +4 -4
  227. package/dist/src/util/errors.d.ts.map +1 -1
  228. package/dist/src/util/errors.js +12 -10
  229. package/dist/src/util/errors.js.map +1 -1
  230. package/dist/src/util/path.js +2 -2
  231. package/dist/src/util/regex.js +4 -4
  232. package/package.json +48 -40
@@ -1,10 +1,10 @@
1
- import { getBrowserWindow } from '../../utils/environment.js';
2
- import { commandSelectorSummary, HTML2CANVAS_TARGET_ATTR } from '../targets.js';
3
- import { normalizeOklchColors, patchHtml2canvasColorParser, recordScreenshotError } from '../utils.js';
1
+ import { getBrowserWindow } from "../../utils/environment.js";
2
+ import { commandSelectorSummary, HTML2CANVAS_TARGET_ATTR } from "../targets.js";
3
+ import { normalizeOklchColors, patchHtml2canvasColorParser, recordScreenshotError, } from "../utils.js";
4
4
  let html2canvasModulePromise = null;
5
5
  async function loadHtml2Canvas() {
6
6
  if (!html2canvasModulePromise) {
7
- html2canvasModulePromise = import('html2canvas');
7
+ html2canvasModulePromise = import("html2canvas");
8
8
  }
9
9
  const html2canvasModule = await html2canvasModulePromise;
10
10
  patchHtml2canvasColorParser(html2canvasModule);
@@ -19,15 +19,15 @@ export async function captureWithHtml2Canvas(targetInfo, quality) {
19
19
  targetInfo.base.setAttribute(HTML2CANVAS_TARGET_ATTR, markerValue);
20
20
  }
21
21
  const html2canvas = await loadHtml2Canvas();
22
- if (typeof html2canvas !== 'function') {
22
+ if (typeof html2canvas !== "function") {
23
23
  restoreColors();
24
- throw new TypeError('html2canvas is unavailable');
24
+ throw new TypeError("html2canvas is unavailable");
25
25
  }
26
26
  const timeoutMs = 6000;
27
27
  let canvasResult;
28
28
  let timer;
29
29
  try {
30
- console.info('[SweetLink] html2canvas capture starting', {
30
+ console.info("[SweetLink] html2canvas capture starting", {
31
31
  selector: commandSelectorSummary(targetInfo.target),
32
32
  clip: targetInfo.clip ?? null,
33
33
  });
@@ -54,7 +54,7 @@ export async function captureWithHtml2Canvas(targetInfo, quality) {
54
54
  onclone: (clonedDocument) => {
55
55
  const cloneWindow = clonedDocument.defaultView;
56
56
  const cloneTarget = clonedDocument.querySelector(`[${HTML2CANVAS_TARGET_ATTR}="${markerValue}"]`);
57
- if (!((cloneWindow && cloneTarget) && (cloneTarget instanceof cloneWindow.HTMLElement))) {
57
+ if (!(cloneWindow && cloneTarget && cloneTarget instanceof cloneWindow.HTMLElement)) {
58
58
  return;
59
59
  }
60
60
  const rect = targetInfo.base.getBoundingClientRect();
@@ -67,14 +67,14 @@ export async function captureWithHtml2Canvas(targetInfo, quality) {
67
67
  cloneTarget.style.height = `${heightPx}px`;
68
68
  cloneTarget.style.minHeight = cloneTarget.style.height;
69
69
  cloneTarget.style.maxHeight = cloneTarget.style.height;
70
- cloneTarget.style.boxSizing = 'border-box';
71
- const wrapper = clonedDocument.createElement('div');
72
- wrapper.style.display = 'inline-block';
73
- wrapper.style.padding = '0';
74
- wrapper.style.margin = '0';
75
- wrapper.style.border = 'none';
70
+ cloneTarget.style.boxSizing = "border-box";
71
+ const wrapper = clonedDocument.createElement("div");
72
+ wrapper.style.display = "inline-block";
73
+ wrapper.style.padding = "0";
74
+ wrapper.style.margin = "0";
75
+ wrapper.style.border = "none";
76
76
  const computedBackground = getComputedStyle(targetInfo.base).backgroundColor;
77
- wrapper.style.background = computedBackground || 'transparent';
77
+ wrapper.style.background = computedBackground || "transparent";
78
78
  wrapper.style.width = cloneTarget.style.width;
79
79
  wrapper.style.height = cloneTarget.style.height;
80
80
  cloneTarget.replaceWith(wrapper);
@@ -91,10 +91,10 @@ export async function captureWithHtml2Canvas(targetInfo, quality) {
91
91
  if (timer) {
92
92
  clearTimeout(timer);
93
93
  }
94
- console.info('[SweetLink] html2canvas capture finished');
94
+ console.info("[SweetLink] html2canvas capture finished");
95
95
  }
96
96
  if (!(canvasResult instanceof HTMLCanvasElement)) {
97
- throw new TypeError('html2canvas did not return a canvas element');
97
+ throw new TypeError("html2canvas did not return a canvas element");
98
98
  }
99
99
  const canvas = canvasResult;
100
100
  const blob = await new Promise((resolve, reject) => {
@@ -103,28 +103,28 @@ export async function captureWithHtml2Canvas(targetInfo, quality) {
103
103
  resolve(value);
104
104
  }
105
105
  else {
106
- reject(new Error('Failed to encode screenshot to JPEG'));
106
+ reject(new Error("Failed to encode screenshot to JPEG"));
107
107
  }
108
- }, 'image/jpeg', quality);
108
+ }, "image/jpeg", quality);
109
109
  }).catch((error) => {
110
- recordScreenshotError('html2canvas', error);
110
+ recordScreenshotError("html2canvas", error);
111
111
  throw error;
112
112
  });
113
113
  const base64 = await blobToBase64(blob).catch((error) => {
114
- recordScreenshotError('html2canvas', error);
114
+ recordScreenshotError("html2canvas", error);
115
115
  throw error;
116
116
  });
117
117
  return {
118
- mimeType: 'image/jpeg',
118
+ mimeType: "image/jpeg",
119
119
  base64,
120
120
  width: canvas.width,
121
121
  height: canvas.height,
122
- renderer: 'html2canvas',
122
+ renderer: "html2canvas",
123
123
  };
124
124
  }
125
125
  async function blobToBase64(blob) {
126
126
  const buffer = await blob.arrayBuffer();
127
- let binary = '';
127
+ let binary = "";
128
128
  const bytes = new Uint8Array(buffer);
129
129
  const chunkSize = 32_768;
130
130
  for (let index = 0; index < bytes.length; index += chunkSize) {
@@ -1 +1 @@
1
- {"version":3,"file":"html2canvas.js","sourceRoot":"","sources":["../../../../../../src/runtime/browser/screenshot/renderers/html2canvas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html2canvas.js","sourceRoot":"","sources":["../../../../../../src/runtime/browser/screenshot/renderers/html2canvas.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { SweetLinkScreenshotCommand } from '@sweetlink/shared';
2
- import type { ScreenshotTargetInfo } from '../types.js';
1
+ import type { SweetLinkScreenshotCommand } from "@sweetlink/shared";
2
+ import type { ScreenshotTargetInfo } from "../types.js";
3
3
  export declare const HTML2CANVAS_TARGET_ATTR = "data-sweetlink-html2canvas-target";
4
4
  export declare function resolveScreenshotTarget(command: SweetLinkScreenshotCommand): ScreenshotTargetInfo;
5
5
  export declare function commandSelectorSummary(element: HTMLElement): string;
@@ -1,22 +1,22 @@
1
- export const HTML2CANVAS_TARGET_ATTR = 'data-sweetlink-html2canvas-target';
1
+ export const HTML2CANVAS_TARGET_ATTR = "data-sweetlink-html2canvas-target";
2
2
  export function resolveScreenshotTarget(command) {
3
- if (command.mode === 'element') {
3
+ if (command.mode === "element") {
4
4
  const selector = command.selector?.trim();
5
5
  if (!selector) {
6
- throw new Error('Screenshot selector is required for element mode');
6
+ throw new Error("Screenshot selector is required for element mode");
7
7
  }
8
8
  const directMatch = document.querySelector(selector);
9
- const dataHookMatch = !directMatch && selector.startsWith('#')
9
+ const dataHookMatch = !directMatch && selector.startsWith("#")
10
10
  ? document.querySelector(`[data-sweetlink-target="${selector.slice(1)}"]`)
11
11
  : null;
12
12
  const element = directMatch ?? dataHookMatch;
13
13
  if (!element) {
14
14
  throw new Error(`Element not found for selector "${selector}"\n` +
15
- 'Tips:\n' +
16
- ' • Ensure the target section is mounted and visible (expand menus or switch tabs if needed).\n' +
15
+ "Tips:\n" +
16
+ " • Ensure the target section is mounted and visible (expand menus or switch tabs if needed).\n" +
17
17
  ' • Add a stable hook such as data-sweetlink-target="analytics-card" or an id, then reference it directly.\n' +
18
- ' • If the layout shifts on smaller widths, widen the window (>= 1280px) so the card renders in the DOM.\n' +
19
- ' • As a last resort, re-run with --method puppeteer after opening a controlled Chrome window.');
18
+ " • If the layout shifts on smaller widths, widen the window (>= 1280px) so the card renders in the DOM.\n" +
19
+ " • As a last resort, re-run with --method puppeteer after opening a controlled Chrome window.");
20
20
  }
21
21
  if (!(element instanceof HTMLElement)) {
22
22
  throw new TypeError(`Element for selector "${selector}" is not an HTMLElement; SweetLink's html2canvas renderer only supports HTMLElement targets.`);
@@ -46,7 +46,7 @@ export function commandSelectorSummary(element) {
46
46
  parts.push(`[data-sweetlink-target="${dataTarget}"]`);
47
47
  }
48
48
  if (parts.length > 0) {
49
- return parts.join(' ');
49
+ return parts.join(" ");
50
50
  }
51
51
  return element.tagName.toLowerCase();
52
52
  }
@@ -3,7 +3,7 @@ type DomToImageModule = {
3
3
  };
4
4
  export declare const recordScreenshotError: (kind: string, error: unknown) => void;
5
5
  export declare function loadDomToImage(): Promise<DomToImageModule>;
6
- export declare function patchHtml2canvasColorParser(html2canvasModule: typeof import('html2canvas')): void;
6
+ export declare function patchHtml2canvasColorParser(html2canvasModule: typeof import("html2canvas")): void;
7
7
  export declare function normalizeOklchColors(root: HTMLElement, contextDocument?: Document): () => void;
8
8
  export {};
9
9
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/browser/screenshot/utils.ts"],"names":[],"mappings":"AAKA,KAAK,gBAAgB,GAAG;IAAE,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AAkB9F,eAAO,MAAM,qBAAqB,GAAI,MAAM,MAAM,EAAE,OAAO,OAAO,KAAG,IASpE,CAAC;AA8BF,wBAAgB,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAiC1D;AAED,wBAAgB,2BAA2B,CAAC,iBAAiB,EAAE,cAAc,aAAa,CAAC,GAAG,IAAI,CA+BjG;AA+BD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,eAAe,GAAE,QAAmB,GAAG,MAAM,IAAI,CAsIxG"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/browser/screenshot/utils.ts"],"names":[],"mappings":"AAKA,KAAK,gBAAgB,GAAG;IAAE,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AAkB9F,eAAO,MAAM,qBAAqB,SAAU,MAAM,SAAS,OAAO,KAAG,IASpE,CAAC;AA8BF,wBAAgB,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAmC1D;AAED,wBAAgB,2BAA2B,CAAC,iBAAiB,EAAE,cAAc,aAAa,CAAC,GAAG,IAAI,CA+BjG;AAgCD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,WAAW,EACjB,eAAe,GAAE,QAAmB,GACnC,MAAM,IAAI,CA0IZ"}
@@ -1,13 +1,13 @@
1
- import { regex } from 'arkregex';
2
- import { compact } from 'es-toolkit';
3
- import { loadDomToImageFromScript } from '../dom-to-image-loader.js';
4
- import { toError } from '../utils/errors.js';
1
+ import { regex } from "arkregex";
2
+ import { compact } from "es-toolkit";
3
+ import { loadDomToImageFromScript } from "../dom-to-image-loader.js";
4
+ import { toError } from "../utils/errors.js";
5
5
  let domToImagePromise = null;
6
- let html2canvasColorPatchState = 'unpatched';
6
+ let html2canvasColorPatchState = "unpatched";
7
7
  const patchedCssWindows = new WeakSet();
8
8
  const browserWindow = globalThis.window ?? null;
9
- const SAFE_CSS_PROPERTY_PATTERN = regex.as('^[a-z-]+$', 'i');
10
- const OKLCH_PATTERN = regex.as('okl(?:ab|ch)', 'i');
9
+ const SAFE_CSS_PROPERTY_PATTERN = regex.as("^[a-z-]+$", "i");
10
+ const OKLCH_PATTERN = regex.as("okl(?:ab|ch)", "i");
11
11
  const WHITESPACE_SPLIT_PATTERN = regex.as(String.raw `\s+`);
12
12
  const TRAILING_ZERO_PATTERN = regex.as(String.raw `\.0+$`);
13
13
  const noop = () => {
@@ -22,9 +22,9 @@ export const recordScreenshotError = (kind, error) => {
22
22
  clientWindow.__sweetlinkScreenshotErrors[kind] = toError(error).message;
23
23
  };
24
24
  const isSafeCssProperty = (property) => {
25
- const normalizedProperty = typeof property === 'string' ? property : String(property);
25
+ const normalizedProperty = typeof property === "string" ? property : String(property);
26
26
  return (SAFE_CSS_PROPERTY_PATTERN.test(normalizedProperty) ||
27
- String.prototype.startsWith.call(normalizedProperty, '--'));
27
+ String.prototype.startsWith.call(normalizedProperty, "--"));
28
28
  };
29
29
  export function loadDomToImage() {
30
30
  if (domToImagePromise) {
@@ -33,34 +33,34 @@ export function loadDomToImage() {
33
33
  const resolveModule = async () => {
34
34
  try {
35
35
  const loadedModule = await loadDomToImageFromScript();
36
- if (typeof loadedModule.toJpeg === 'function') {
36
+ if (typeof loadedModule.toJpeg === "function") {
37
37
  return loadedModule;
38
38
  }
39
39
  }
40
40
  catch (error) {
41
- recordScreenshotError('domToImage', error);
42
- console.warn('[SweetLink] Failed to load dom-to-image-more via script:', error);
41
+ recordScreenshotError("domToImage", error);
42
+ console.warn("[SweetLink] Failed to load dom-to-image-more via script:", error);
43
43
  }
44
44
  const globalAny = browserWindow
45
45
  ? browserWindow
46
46
  : null;
47
47
  const fallback = globalAny?.domToImage ?? globalAny?.domtoimage ?? globalAny?.domtoImage;
48
- if (fallback && typeof fallback.toJpeg === 'function') {
48
+ if (fallback && typeof fallback.toJpeg === "function") {
49
49
  return fallback;
50
50
  }
51
- throw new Error('dom-to-image-more is unavailable; ensure it is installed or exposed globally as domtoimage');
51
+ throw new Error("dom-to-image-more is unavailable; ensure it is installed or exposed globally as domtoimage");
52
52
  };
53
53
  domToImagePromise = resolveModule();
54
54
  return domToImagePromise;
55
55
  }
56
56
  export function patchHtml2canvasColorParser(html2canvasModule) {
57
- if (html2canvasColorPatchState === 'patched') {
57
+ if (html2canvasColorPatchState === "patched") {
58
58
  return;
59
59
  }
60
60
  const moduleAny = html2canvasModule;
61
61
  const colorApi = moduleAny.Color ?? moduleAny.default?.Color;
62
- if (!colorApi || typeof colorApi.parse !== 'function') {
63
- html2canvasColorPatchState = 'patched';
62
+ if (!colorApi || typeof colorApi.parse !== "function") {
63
+ html2canvasColorPatchState = "patched";
64
64
  return;
65
65
  }
66
66
  // html2canvas bails as soon as its colour parser sees OKLAB/OKLCH tokens. Wrap the parser and
@@ -78,19 +78,20 @@ export function patchHtml2canvasColorParser(html2canvasModule) {
78
78
  throw error;
79
79
  }
80
80
  };
81
- html2canvasColorPatchState = 'patched';
81
+ html2canvasColorPatchState = "patched";
82
82
  }
83
83
  function ensureCssGetPropertyValuePatched(contextWindow) {
84
84
  if (patchedCssWindows.has(contextWindow)) {
85
85
  return;
86
86
  }
87
- const cssDeclaration = contextWindow.CSSStyleDeclaration;
87
+ const cssDeclaration = contextWindow
88
+ .CSSStyleDeclaration;
88
89
  if (!cssDeclaration) {
89
90
  patchedCssWindows.add(contextWindow);
90
91
  return;
91
92
  }
92
93
  const proto = cssDeclaration.prototype;
93
- if (typeof proto.getPropertyValue !== 'function') {
94
+ if (typeof proto.getPropertyValue !== "function") {
94
95
  patchedCssWindows.add(contextWindow);
95
96
  return;
96
97
  }
@@ -118,32 +119,32 @@ export function normalizeOklchColors(root, contextDocument = document) {
118
119
  return noop;
119
120
  }
120
121
  const properties = [
121
- 'color',
122
- 'background-color',
123
- 'background',
124
- 'background-image',
125
- 'border-top-color',
126
- 'border-right-color',
127
- 'border-bottom-color',
128
- 'border-left-color',
129
- 'outline-color',
130
- 'text-decoration-color',
131
- 'box-shadow',
132
- 'text-shadow',
133
- 'column-rule-color',
134
- 'caret-color',
135
- 'fill',
136
- 'stroke',
122
+ "color",
123
+ "background-color",
124
+ "background",
125
+ "background-image",
126
+ "border-top-color",
127
+ "border-right-color",
128
+ "border-bottom-color",
129
+ "border-left-color",
130
+ "outline-color",
131
+ "text-decoration-color",
132
+ "box-shadow",
133
+ "text-shadow",
134
+ "column-rule-color",
135
+ "caret-color",
136
+ "fill",
137
+ "stroke",
137
138
  ];
138
139
  const documentElement = contextDocument.documentElement;
139
140
  const elements = root === documentElement
140
- ? [documentElement, ...contextDocument.querySelectorAll('*')]
141
- : [root, ...root.querySelectorAll('*')];
142
- const sandbox = contextDocument.createElement('span');
143
- sandbox.style.position = 'absolute';
144
- sandbox.style.visibility = 'hidden';
145
- sandbox.style.pointerEvents = 'none';
146
- sandbox.style.zIndex = '-1';
141
+ ? [documentElement, ...contextDocument.querySelectorAll("*")]
142
+ : [root, ...root.querySelectorAll("*")];
143
+ const sandbox = contextDocument.createElement("span");
144
+ sandbox.style.position = "absolute";
145
+ sandbox.style.visibility = "hidden";
146
+ sandbox.style.pointerEvents = "none";
147
+ sandbox.style.zIndex = "-1";
147
148
  body.append(sandbox);
148
149
  const revertStyles = [];
149
150
  for (const element of elements) {
@@ -151,7 +152,7 @@ export function normalizeOklchColors(root, contextDocument = document) {
151
152
  const customProperties = [];
152
153
  for (let index = 0; index < computed.length; index += 1) {
153
154
  const name = computed.item(index);
154
- if (name.startsWith('--')) {
155
+ if (name.startsWith("--")) {
155
156
  customProperties.push(name);
156
157
  }
157
158
  }
@@ -161,7 +162,7 @@ export function normalizeOklchColors(root, contextDocument = document) {
161
162
  continue;
162
163
  }
163
164
  const lowerValue = currentValue.toLowerCase();
164
- if (!(lowerValue.includes('oklch') || lowerValue.includes('oklab'))) {
165
+ if (!(lowerValue.includes("oklch") || lowerValue.includes("oklab"))) {
165
166
  continue;
166
167
  }
167
168
  const converted = replaceOkColorFunctions(currentValue);
@@ -176,12 +177,13 @@ export function normalizeOklchColors(root, contextDocument = document) {
176
177
  continue;
177
178
  }
178
179
  const resolvedLower = resolved.toLowerCase();
179
- if (resolvedLower.includes('oklch') || resolvedLower.includes('oklab')) {
180
+ if (resolvedLower.includes("oklch") || resolvedLower.includes("oklab")) {
180
181
  continue;
181
182
  }
182
183
  const inlineValue = element.style.getPropertyValue(property);
183
184
  const inlinePriority = element.style.getPropertyPriority(property);
184
- if (inlineValue === resolved && inlinePriority === element.style.getPropertyPriority(property)) {
185
+ if (inlineValue === resolved &&
186
+ inlinePriority === element.style.getPropertyPriority(property)) {
185
187
  continue;
186
188
  }
187
189
  revertStyles.push(() => {
@@ -226,14 +228,14 @@ export function normalizeOklchColors(root, contextDocument = document) {
226
228
  };
227
229
  }
228
230
  function replaceOkColorFunctions(input) {
229
- let result = '';
231
+ let result = "";
230
232
  let cursor = 0;
231
233
  let changed = false;
232
234
  const lower = input.toLowerCase();
233
235
  while (cursor < input.length) {
234
236
  const nextIndex = (() => {
235
- const oklchIndex = lower.indexOf('oklch(', cursor);
236
- const oklabIndex = lower.indexOf('oklab(', cursor);
237
+ const oklchIndex = lower.indexOf("oklch(", cursor);
238
+ const oklabIndex = lower.indexOf("oklab(", cursor);
237
239
  if (oklchIndex === -1) {
238
240
  return oklabIndex;
239
241
  }
@@ -246,17 +248,17 @@ function replaceOkColorFunctions(input) {
246
248
  result += input.slice(cursor);
247
249
  break;
248
250
  }
249
- const token = lower.startsWith('oklch(', nextIndex) ? 'oklch' : 'oklab';
251
+ const token = lower.startsWith("oklch(", nextIndex) ? "oklch" : "oklab";
250
252
  const openIndex = nextIndex + token.length;
251
253
  result += input.slice(cursor, nextIndex);
252
254
  let end = openIndex + 1;
253
255
  let depth = 1;
254
256
  while (end < input.length && depth > 0) {
255
257
  const char = input.charAt(end);
256
- if (char === '(') {
258
+ if (char === "(") {
257
259
  depth += 1;
258
260
  }
259
- else if (char === ')') {
261
+ else if (char === ")") {
260
262
  depth -= 1;
261
263
  }
262
264
  end += 1;
@@ -265,7 +267,7 @@ function replaceOkColorFunctions(input) {
265
267
  return null;
266
268
  }
267
269
  const inside = input.slice(openIndex + 1, end - 1);
268
- const replacement = token === 'oklch' ? convertOklchToRgb(inside) : convertOklabToRgb(inside);
270
+ const replacement = token === "oklch" ? convertOklchToRgb(inside) : convertOklabToRgb(inside);
269
271
  if (replacement) {
270
272
  result += replacement;
271
273
  changed = true;
@@ -276,9 +278,9 @@ function replaceOkColorFunctions(input) {
276
278
  cursor = end;
277
279
  }
278
280
  let output = result;
279
- const colorMixPattern = regex.as(String.raw `color-mix\(\s*in\s+okl(?:ab|ch)`, 'gi');
281
+ const colorMixPattern = regex.as(String.raw `color-mix\(\s*in\s+okl(?:ab|ch)`, "gi");
280
282
  if (colorMixPattern.test(output)) {
281
- output = output.replaceAll(colorMixPattern, (segment) => segment.replace(OKLCH_PATTERN, 'srgb'));
283
+ output = output.replaceAll(colorMixPattern, (segment) => segment.replace(OKLCH_PATTERN, "srgb"));
282
284
  changed = true;
283
285
  }
284
286
  if (!changed || output === input) {
@@ -287,8 +289,8 @@ function replaceOkColorFunctions(input) {
287
289
  return output;
288
290
  }
289
291
  function convertOklchToRgb(payload) {
290
- const [colorPartRaw, alphaPartRaw] = payload.split('/');
291
- const colorPart = colorPartRaw?.trim() ?? '';
292
+ const [colorPartRaw, alphaPartRaw] = payload.split("/");
293
+ const colorPart = colorPartRaw?.trim() ?? "";
292
294
  if (!colorPart) {
293
295
  return null;
294
296
  }
@@ -296,7 +298,7 @@ function convertOklchToRgb(payload) {
296
298
  if (components.length < 3) {
297
299
  return null;
298
300
  }
299
- const [lightnessToken = '', chromaToken = '', hueToken = ''] = components;
301
+ const [lightnessToken = "", chromaToken = "", hueToken = ""] = components;
300
302
  const lightness = parseOklchComponent(lightnessToken, { isPercentage: true });
301
303
  const chroma = parseOklchComponent(chromaToken, { clampZero: true });
302
304
  const hue = parseHueComponent(hueToken);
@@ -311,11 +313,11 @@ function convertOklchToRgb(payload) {
311
313
  if (alpha >= 0.999) {
312
314
  return `rgb(${String(r)}, ${String(g)}, ${String(b)})`;
313
315
  }
314
- return `rgba(${String(r)}, ${String(g)}, ${String(b)}, ${alpha.toFixed(3).replace(TRAILING_ZERO_PATTERN, '')})`;
316
+ return `rgba(${String(r)}, ${String(g)}, ${String(b)}, ${alpha.toFixed(3).replace(TRAILING_ZERO_PATTERN, "")})`;
315
317
  }
316
318
  function convertOklabToRgb(payload) {
317
- const [colorPartRaw, alphaPartRaw] = payload.split('/');
318
- const colorPart = colorPartRaw?.trim() ?? '';
319
+ const [colorPartRaw, alphaPartRaw] = payload.split("/");
320
+ const colorPart = colorPartRaw?.trim() ?? "";
319
321
  if (!colorPart) {
320
322
  return null;
321
323
  }
@@ -323,7 +325,7 @@ function convertOklabToRgb(payload) {
323
325
  if (components.length < 3) {
324
326
  return null;
325
327
  }
326
- const [lightnessToken = '', aToken = '', bToken = ''] = components;
328
+ const [lightnessToken = "", aToken = "", bToken = ""] = components;
327
329
  const lightness = parseOklchComponent(lightnessToken, { isPercentage: true });
328
330
  const aComponent = parseOklabComponent(aToken);
329
331
  const bComponent = parseOklabComponent(bToken);
@@ -338,12 +340,12 @@ function convertOklabToRgb(payload) {
338
340
  if (alpha >= 0.999) {
339
341
  return `rgb(${String(r)}, ${String(g)}, ${String(b)})`;
340
342
  }
341
- return `rgba(${String(r)}, ${String(g)}, ${String(b)}, ${alpha.toFixed(3).replace(TRAILING_ZERO_PATTERN, '')})`;
343
+ return `rgba(${String(r)}, ${String(g)}, ${String(b)}, ${alpha.toFixed(3).replace(TRAILING_ZERO_PATTERN, "")})`;
342
344
  }
343
345
  function parseOklchComponent(value, options) {
344
346
  const trimmed = value.toLowerCase();
345
347
  let numeric;
346
- if (trimmed.endsWith('%')) {
348
+ if (trimmed.endsWith("%")) {
347
349
  const parsed = Number.parseFloat(trimmed.slice(0, -1));
348
350
  if (Number.isNaN(parsed)) {
349
351
  return null;
@@ -370,7 +372,7 @@ function parseOklabComponent(value) {
370
372
  if (!trimmed) {
371
373
  return null;
372
374
  }
373
- if (trimmed.endsWith('%')) {
375
+ if (trimmed.endsWith("%")) {
374
376
  const parsed = Number.parseFloat(trimmed.slice(0, -1));
375
377
  if (Number.isNaN(parsed)) {
376
378
  return null;
@@ -389,19 +391,19 @@ function parseFloatOrNull(input) {
389
391
  }
390
392
  function parseHueComponent(value) {
391
393
  const trimmed = value.trim().toLowerCase();
392
- if (trimmed.endsWith('deg')) {
394
+ if (trimmed.endsWith("deg")) {
393
395
  const parsed = parseFloatOrNull(trimmed.slice(0, -3));
394
396
  return parsed === null ? null : parsed;
395
397
  }
396
- if (trimmed.endsWith('grad')) {
398
+ if (trimmed.endsWith("grad")) {
397
399
  const parsed = parseFloatOrNull(trimmed.slice(0, -4));
398
400
  return parsed === null ? null : parsed * (9 / 10);
399
401
  }
400
- if (trimmed.endsWith('rad')) {
402
+ if (trimmed.endsWith("rad")) {
401
403
  const parsed = parseFloatOrNull(trimmed.slice(0, -3));
402
404
  return parsed === null ? null : (parsed * 180) / Math.PI;
403
405
  }
404
- if (trimmed.endsWith('turn')) {
406
+ if (trimmed.endsWith("turn")) {
405
407
  const parsed = parseFloatOrNull(trimmed.slice(0, -4));
406
408
  return parsed === null ? null : parsed * 360;
407
409
  }
@@ -410,7 +412,7 @@ function parseHueComponent(value) {
410
412
  }
411
413
  function parseAlphaComponent(value) {
412
414
  const trimmed = value.trim();
413
- if (trimmed.endsWith('%')) {
415
+ if (trimmed.endsWith("%")) {
414
416
  const parsed = Number.parseFloat(trimmed.slice(0, -1));
415
417
  if (Number.isNaN(parsed)) {
416
418
  return null;