sweetlink 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 (300) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE +21 -0
  3. package/README.md +237 -0
  4. package/dist/daemon/src/codename.d.ts +8 -0
  5. package/dist/daemon/src/codename.d.ts.map +1 -0
  6. package/dist/daemon/src/codename.js +42 -0
  7. package/dist/daemon/src/codename.js.map +1 -0
  8. package/dist/daemon/src/index.d.ts +3 -0
  9. package/dist/daemon/src/index.d.ts.map +1 -0
  10. package/dist/daemon/src/index.js +675 -0
  11. package/dist/daemon/src/index.js.map +1 -0
  12. package/dist/shared/src/env.d.ts +24 -0
  13. package/dist/shared/src/env.d.ts.map +1 -0
  14. package/dist/shared/src/env.js +39 -0
  15. package/dist/shared/src/env.js.map +1 -0
  16. package/dist/shared/src/index.d.ts +211 -0
  17. package/dist/shared/src/index.d.ts.map +1 -0
  18. package/dist/shared/src/index.js +73 -0
  19. package/dist/shared/src/index.js.map +1 -0
  20. package/dist/shared/src/node.d.ts +12 -0
  21. package/dist/shared/src/node.d.ts.map +1 -0
  22. package/dist/shared/src/node.js +67 -0
  23. package/dist/shared/src/node.js.map +1 -0
  24. package/dist/src/codex.d.ts +11 -0
  25. package/dist/src/codex.d.ts.map +1 -0
  26. package/dist/src/codex.js +67 -0
  27. package/dist/src/codex.js.map +1 -0
  28. package/dist/src/commands/click.d.ts +3 -0
  29. package/dist/src/commands/click.d.ts.map +1 -0
  30. package/dist/src/commands/click.js +93 -0
  31. package/dist/src/commands/click.js.map +1 -0
  32. package/dist/src/commands/run-js.d.ts +4 -0
  33. package/dist/src/commands/run-js.d.ts.map +1 -0
  34. package/dist/src/commands/run-js.js +28 -0
  35. package/dist/src/commands/run-js.js.map +1 -0
  36. package/dist/src/commands/trust-ca.d.ts +3 -0
  37. package/dist/src/commands/trust-ca.d.ts.map +1 -0
  38. package/dist/src/commands/trust-ca.js +43 -0
  39. package/dist/src/commands/trust-ca.js.map +1 -0
  40. package/dist/src/core/config-file.d.ts +41 -0
  41. package/dist/src/core/config-file.d.ts.map +1 -0
  42. package/dist/src/core/config-file.js +284 -0
  43. package/dist/src/core/config-file.js.map +1 -0
  44. package/dist/src/core/config.d.ts +23 -0
  45. package/dist/src/core/config.d.ts.map +1 -0
  46. package/dist/src/core/config.js +132 -0
  47. package/dist/src/core/config.js.map +1 -0
  48. package/dist/src/core/env.d.ts +11 -0
  49. package/dist/src/core/env.d.ts.map +1 -0
  50. package/dist/src/core/env.js +30 -0
  51. package/dist/src/core/env.js.map +1 -0
  52. package/dist/src/devtools-registry.d.ts +3 -0
  53. package/dist/src/devtools-registry.d.ts.map +1 -0
  54. package/dist/src/devtools-registry.js +294 -0
  55. package/dist/src/devtools-registry.js.map +1 -0
  56. package/dist/src/env.d.ts +16 -0
  57. package/dist/src/env.d.ts.map +1 -0
  58. package/dist/src/env.js +17 -0
  59. package/dist/src/env.js.map +1 -0
  60. package/dist/src/http.d.ts +2 -0
  61. package/dist/src/http.d.ts.map +1 -0
  62. package/dist/src/http.js +53 -0
  63. package/dist/src/http.js.map +1 -0
  64. package/dist/src/index.d.ts +19 -0
  65. package/dist/src/index.d.ts.map +1 -0
  66. package/dist/src/index.js +1941 -0
  67. package/dist/src/index.js.map +1 -0
  68. package/dist/src/runtime/browser/client.d.ts +10 -0
  69. package/dist/src/runtime/browser/client.d.ts.map +1 -0
  70. package/dist/src/runtime/browser/client.js +497 -0
  71. package/dist/src/runtime/browser/client.js.map +1 -0
  72. package/dist/src/runtime/browser/commands/index.d.ts +10 -0
  73. package/dist/src/runtime/browser/commands/index.d.ts.map +1 -0
  74. package/dist/src/runtime/browser/commands/index.js +219 -0
  75. package/dist/src/runtime/browser/commands/index.js.map +1 -0
  76. package/dist/src/runtime/browser/dom-to-image-loader.d.ts +6 -0
  77. package/dist/src/runtime/browser/dom-to-image-loader.d.ts.map +1 -0
  78. package/dist/src/runtime/browser/dom-to-image-loader.js +50 -0
  79. package/dist/src/runtime/browser/dom-to-image-loader.js.map +1 -0
  80. package/dist/src/runtime/browser/index.d.ts +4 -0
  81. package/dist/src/runtime/browser/index.d.ts.map +1 -0
  82. package/dist/src/runtime/browser/index.js +4 -0
  83. package/dist/src/runtime/browser/index.js.map +1 -0
  84. package/dist/src/runtime/browser/module-loader.d.ts +6 -0
  85. package/dist/src/runtime/browser/module-loader.d.ts.map +1 -0
  86. package/dist/src/runtime/browser/module-loader.js +26 -0
  87. package/dist/src/runtime/browser/module-loader.js.map +1 -0
  88. package/dist/src/runtime/browser/screenshot/hooks.d.ts +71 -0
  89. package/dist/src/runtime/browser/screenshot/hooks.d.ts.map +1 -0
  90. package/dist/src/runtime/browser/screenshot/hooks.js +219 -0
  91. package/dist/src/runtime/browser/screenshot/hooks.js.map +1 -0
  92. package/dist/src/runtime/browser/screenshot/index.d.ts +9 -0
  93. package/dist/src/runtime/browser/screenshot/index.d.ts.map +1 -0
  94. package/dist/src/runtime/browser/screenshot/index.js +90 -0
  95. package/dist/src/runtime/browser/screenshot/index.js.map +1 -0
  96. package/dist/src/runtime/browser/screenshot/renderers/dom-to-image.d.ts +13 -0
  97. package/dist/src/runtime/browser/screenshot/renderers/dom-to-image.d.ts.map +1 -0
  98. package/dist/src/runtime/browser/screenshot/renderers/dom-to-image.js +51 -0
  99. package/dist/src/runtime/browser/screenshot/renderers/dom-to-image.js.map +1 -0
  100. package/dist/src/runtime/browser/screenshot/renderers/html2canvas.d.ts +12 -0
  101. package/dist/src/runtime/browser/screenshot/renderers/html2canvas.d.ts.map +1 -0
  102. package/dist/src/runtime/browser/screenshot/renderers/html2canvas.js +136 -0
  103. package/dist/src/runtime/browser/screenshot/renderers/html2canvas.js.map +1 -0
  104. package/dist/src/runtime/browser/screenshot/targets.d.ts +6 -0
  105. package/dist/src/runtime/browser/screenshot/targets.d.ts.map +1 -0
  106. package/dist/src/runtime/browser/screenshot/targets.js +53 -0
  107. package/dist/src/runtime/browser/screenshot/targets.js.map +1 -0
  108. package/dist/src/runtime/browser/screenshot/utils.d.ts +9 -0
  109. package/dist/src/runtime/browser/screenshot/utils.d.ts.map +1 -0
  110. package/dist/src/runtime/browser/screenshot/utils.js +471 -0
  111. package/dist/src/runtime/browser/screenshot/utils.js.map +1 -0
  112. package/dist/src/runtime/browser/selector-discovery.d.ts +9 -0
  113. package/dist/src/runtime/browser/selector-discovery.d.ts.map +1 -0
  114. package/dist/src/runtime/browser/selector-discovery.js +218 -0
  115. package/dist/src/runtime/browser/selector-discovery.js.map +1 -0
  116. package/dist/src/runtime/browser/storage/session-storage.d.ts +13 -0
  117. package/dist/src/runtime/browser/storage/session-storage.d.ts.map +1 -0
  118. package/dist/src/runtime/browser/storage/session-storage.js +119 -0
  119. package/dist/src/runtime/browser/storage/session-storage.js.map +1 -0
  120. package/dist/src/runtime/browser/types.d.ts +96 -0
  121. package/dist/src/runtime/browser/types.d.ts.map +1 -0
  122. package/dist/src/runtime/browser/types.js +6 -0
  123. package/dist/src/runtime/browser/types.js.map +1 -0
  124. package/dist/src/runtime/browser/utils/console.d.ts +5 -0
  125. package/dist/src/runtime/browser/utils/console.d.ts.map +1 -0
  126. package/dist/src/runtime/browser/utils/console.js +54 -0
  127. package/dist/src/runtime/browser/utils/console.js.map +1 -0
  128. package/dist/src/runtime/browser/utils/environment.d.ts +3 -0
  129. package/dist/src/runtime/browser/utils/environment.d.ts.map +1 -0
  130. package/dist/src/runtime/browser/utils/environment.js +13 -0
  131. package/dist/src/runtime/browser/utils/environment.js.map +1 -0
  132. package/dist/src/runtime/browser/utils/errors.d.ts +3 -0
  133. package/dist/src/runtime/browser/utils/errors.d.ts.map +1 -0
  134. package/dist/src/runtime/browser/utils/errors.js +42 -0
  135. package/dist/src/runtime/browser/utils/errors.js.map +1 -0
  136. package/dist/src/runtime/browser/utils/number.d.ts +2 -0
  137. package/dist/src/runtime/browser/utils/number.d.ts.map +1 -0
  138. package/dist/src/runtime/browser/utils/number.js +2 -0
  139. package/dist/src/runtime/browser/utils/number.js.map +1 -0
  140. package/dist/src/runtime/browser/utils/object.d.ts +3 -0
  141. package/dist/src/runtime/browser/utils/object.d.ts.map +1 -0
  142. package/dist/src/runtime/browser/utils/object.js +9 -0
  143. package/dist/src/runtime/browser/utils/object.js.map +1 -0
  144. package/dist/src/runtime/browser/utils/sanitize.d.ts +2 -0
  145. package/dist/src/runtime/browser/utils/sanitize.d.ts.map +1 -0
  146. package/dist/src/runtime/browser/utils/sanitize.js +28 -0
  147. package/dist/src/runtime/browser/utils/sanitize.js.map +1 -0
  148. package/dist/src/runtime/browser/utils/time.d.ts +2 -0
  149. package/dist/src/runtime/browser/utils/time.d.ts.map +1 -0
  150. package/dist/src/runtime/browser/utils/time.js +7 -0
  151. package/dist/src/runtime/browser/utils/time.js.map +1 -0
  152. package/dist/src/runtime/chrome/constants.d.ts +5 -0
  153. package/dist/src/runtime/chrome/constants.d.ts.map +1 -0
  154. package/dist/src/runtime/chrome/constants.js +5 -0
  155. package/dist/src/runtime/chrome/constants.js.map +1 -0
  156. package/dist/src/runtime/chrome/cookies.d.ts +20 -0
  157. package/dist/src/runtime/chrome/cookies.d.ts.map +1 -0
  158. package/dist/src/runtime/chrome/cookies.js +139 -0
  159. package/dist/src/runtime/chrome/cookies.js.map +1 -0
  160. package/dist/src/runtime/chrome/diagnostics.d.ts +6 -0
  161. package/dist/src/runtime/chrome/diagnostics.d.ts.map +1 -0
  162. package/dist/src/runtime/chrome/diagnostics.js +49 -0
  163. package/dist/src/runtime/chrome/diagnostics.js.map +1 -0
  164. package/dist/src/runtime/chrome/focus.d.ts +2 -0
  165. package/dist/src/runtime/chrome/focus.d.ts.map +1 -0
  166. package/dist/src/runtime/chrome/focus.js +41 -0
  167. package/dist/src/runtime/chrome/focus.js.map +1 -0
  168. package/dist/src/runtime/chrome/launch.d.ts +23 -0
  169. package/dist/src/runtime/chrome/launch.d.ts.map +1 -0
  170. package/dist/src/runtime/chrome/launch.js +102 -0
  171. package/dist/src/runtime/chrome/launch.js.map +1 -0
  172. package/dist/src/runtime/chrome/puppeteer.d.ts +7 -0
  173. package/dist/src/runtime/chrome/puppeteer.d.ts.map +1 -0
  174. package/dist/src/runtime/chrome/puppeteer.js +87 -0
  175. package/dist/src/runtime/chrome/puppeteer.js.map +1 -0
  176. package/dist/src/runtime/chrome/reuse/constants.d.ts +4 -0
  177. package/dist/src/runtime/chrome/reuse/constants.d.ts.map +1 -0
  178. package/dist/src/runtime/chrome/reuse/constants.js +4 -0
  179. package/dist/src/runtime/chrome/reuse/constants.js.map +1 -0
  180. package/dist/src/runtime/chrome/reuse.d.ts +13 -0
  181. package/dist/src/runtime/chrome/reuse.d.ts.map +1 -0
  182. package/dist/src/runtime/chrome/reuse.js +183 -0
  183. package/dist/src/runtime/chrome/reuse.js.map +1 -0
  184. package/dist/src/runtime/chrome/session.d.ts +13 -0
  185. package/dist/src/runtime/chrome/session.d.ts.map +1 -0
  186. package/dist/src/runtime/chrome/session.js +47 -0
  187. package/dist/src/runtime/chrome/session.js.map +1 -0
  188. package/dist/src/runtime/chrome.d.ts +9 -0
  189. package/dist/src/runtime/chrome.d.ts.map +1 -0
  190. package/dist/src/runtime/chrome.js +10 -0
  191. package/dist/src/runtime/chrome.js.map +1 -0
  192. package/dist/src/runtime/cookies.d.ts +37 -0
  193. package/dist/src/runtime/cookies.d.ts.map +1 -0
  194. package/dist/src/runtime/cookies.js +592 -0
  195. package/dist/src/runtime/cookies.js.map +1 -0
  196. package/dist/src/runtime/devstack.d.ts +14 -0
  197. package/dist/src/runtime/devstack.d.ts.map +1 -0
  198. package/dist/src/runtime/devstack.js +174 -0
  199. package/dist/src/runtime/devstack.js.map +1 -0
  200. package/dist/src/runtime/devtools/background.d.ts +5 -0
  201. package/dist/src/runtime/devtools/background.d.ts.map +1 -0
  202. package/dist/src/runtime/devtools/background.js +109 -0
  203. package/dist/src/runtime/devtools/background.js.map +1 -0
  204. package/dist/src/runtime/devtools/cdp.d.ts +16 -0
  205. package/dist/src/runtime/devtools/cdp.d.ts.map +1 -0
  206. package/dist/src/runtime/devtools/cdp.js +392 -0
  207. package/dist/src/runtime/devtools/cdp.js.map +1 -0
  208. package/dist/src/runtime/devtools/config.d.ts +12 -0
  209. package/dist/src/runtime/devtools/config.d.ts.map +1 -0
  210. package/dist/src/runtime/devtools/config.js +78 -0
  211. package/dist/src/runtime/devtools/config.js.map +1 -0
  212. package/dist/src/runtime/devtools/constants.d.ts +10 -0
  213. package/dist/src/runtime/devtools/constants.d.ts.map +1 -0
  214. package/dist/src/runtime/devtools/constants.js +18 -0
  215. package/dist/src/runtime/devtools/constants.js.map +1 -0
  216. package/dist/src/runtime/devtools/diagnostics.d.ts +8 -0
  217. package/dist/src/runtime/devtools/diagnostics.d.ts.map +1 -0
  218. package/dist/src/runtime/devtools/diagnostics.js +189 -0
  219. package/dist/src/runtime/devtools/diagnostics.js.map +1 -0
  220. package/dist/src/runtime/devtools/oauth.d.ts +9 -0
  221. package/dist/src/runtime/devtools/oauth.d.ts.map +1 -0
  222. package/dist/src/runtime/devtools/oauth.js +130 -0
  223. package/dist/src/runtime/devtools/oauth.js.map +1 -0
  224. package/dist/src/runtime/devtools/types.d.ts +108 -0
  225. package/dist/src/runtime/devtools/types.d.ts.map +1 -0
  226. package/dist/src/runtime/devtools/types.js +2 -0
  227. package/dist/src/runtime/devtools/types.js.map +1 -0
  228. package/dist/src/runtime/devtools.d.ts +8 -0
  229. package/dist/src/runtime/devtools.d.ts.map +1 -0
  230. package/dist/src/runtime/devtools.js +9 -0
  231. package/dist/src/runtime/devtools.js.map +1 -0
  232. package/dist/src/runtime/next-devtools.d.ts +2 -0
  233. package/dist/src/runtime/next-devtools.d.ts.map +1 -0
  234. package/dist/src/runtime/next-devtools.js +72 -0
  235. package/dist/src/runtime/next-devtools.js.map +1 -0
  236. package/dist/src/runtime/screenshot.d.ts +78 -0
  237. package/dist/src/runtime/screenshot.d.ts.map +1 -0
  238. package/dist/src/runtime/screenshot.js +232 -0
  239. package/dist/src/runtime/screenshot.js.map +1 -0
  240. package/dist/src/runtime/scripts.d.ts +16 -0
  241. package/dist/src/runtime/scripts.d.ts.map +1 -0
  242. package/dist/src/runtime/scripts.js +110 -0
  243. package/dist/src/runtime/scripts.js.map +1 -0
  244. package/dist/src/runtime/session.d.ts +64 -0
  245. package/dist/src/runtime/session.d.ts.map +1 -0
  246. package/dist/src/runtime/session.js +205 -0
  247. package/dist/src/runtime/session.js.map +1 -0
  248. package/dist/src/runtime/smoke.d.ts +36 -0
  249. package/dist/src/runtime/smoke.d.ts.map +1 -0
  250. package/dist/src/runtime/smoke.js +417 -0
  251. package/dist/src/runtime/smoke.js.map +1 -0
  252. package/dist/src/runtime/url.d.ts +10 -0
  253. package/dist/src/runtime/url.d.ts.map +1 -0
  254. package/dist/src/runtime/url.js +147 -0
  255. package/dist/src/runtime/url.js.map +1 -0
  256. package/dist/src/screenshot-hooks.d.ts +13 -0
  257. package/dist/src/screenshot-hooks.d.ts.map +1 -0
  258. package/dist/src/screenshot-hooks.js +56 -0
  259. package/dist/src/screenshot-hooks.js.map +1 -0
  260. package/dist/src/shared/env.d.ts +23 -0
  261. package/dist/src/shared/env.d.ts.map +1 -0
  262. package/dist/src/shared/env.js +38 -0
  263. package/dist/src/shared/env.js.map +1 -0
  264. package/dist/src/shared/index.d.ts +211 -0
  265. package/dist/src/shared/index.d.ts.map +1 -0
  266. package/dist/src/shared/index.js +73 -0
  267. package/dist/src/shared/index.js.map +1 -0
  268. package/dist/src/shared/node.d.ts +12 -0
  269. package/dist/src/shared/node.d.ts.map +1 -0
  270. package/dist/src/shared/node.js +67 -0
  271. package/dist/src/shared/node.js.map +1 -0
  272. package/dist/src/token.d.ts +4 -0
  273. package/dist/src/token.d.ts.map +1 -0
  274. package/dist/src/token.js +58 -0
  275. package/dist/src/token.js.map +1 -0
  276. package/dist/src/types.d.ts +17 -0
  277. package/dist/src/types.d.ts.map +1 -0
  278. package/dist/src/types.js +2 -0
  279. package/dist/src/types.js.map +1 -0
  280. package/dist/src/util/app-label.d.ts +5 -0
  281. package/dist/src/util/app-label.d.ts.map +1 -0
  282. package/dist/src/util/app-label.js +21 -0
  283. package/dist/src/util/app-label.js.map +1 -0
  284. package/dist/src/util/errors.d.ts +9 -0
  285. package/dist/src/util/errors.d.ts.map +1 -0
  286. package/dist/src/util/errors.js +56 -0
  287. package/dist/src/util/errors.js.map +1 -0
  288. package/dist/src/util/path.d.ts +3 -0
  289. package/dist/src/util/path.d.ts.map +1 -0
  290. package/dist/src/util/path.js +6 -0
  291. package/dist/src/util/path.js.map +1 -0
  292. package/dist/src/util/regex.d.ts +4 -0
  293. package/dist/src/util/regex.d.ts.map +1 -0
  294. package/dist/src/util/regex.js +5 -0
  295. package/dist/src/util/regex.js.map +1 -0
  296. package/dist/src/util/time.d.ts +3 -0
  297. package/dist/src/util/time.d.ts.map +1 -0
  298. package/dist/src/util/time.js +7 -0
  299. package/dist/src/util/time.js.map +1 -0
  300. package/package.json +86 -0
@@ -0,0 +1,592 @@
1
+ import { regex } from 'arkregex';
2
+ import { spawn } from 'node:child_process';
3
+ import { loadSweetLinkFileConfig } from '../core/config-file.js';
4
+ import { cloneProcessEnv } from '../core/env.js';
5
+ import { cliEnv } from '../env.js';
6
+ import { describeUnknown } from '../util/errors.js';
7
+ let tldPatchedForLocalhost;
8
+ let attemptedSqliteRebuild;
9
+ const PROTOCOL_PREFIX_PATTERN = regex.as('^[a-z]+://', 'i');
10
+ const LEADING_DOT_PATTERN = regex.as(String.raw `^\.`);
11
+ const SECURE_PREFIX_PATTERN = regex.as('^__Secure-');
12
+ const HOST_PREFIX_PATTERN = regex.as('^__Host-');
13
+ const SQLITE_NODE_PATTERN = regex.as(String.raw `node_sqlite3\.node`, 'i');
14
+ const SQLITE_BINDINGS_PATTERN = regex.as('bindings file', 'i');
15
+ const SQLITE_SELF_REGISTER_PATTERN = regex.as('Module did not self-register', 'i');
16
+ /** Collects cookies from the main Chrome profile matching the provided URL. */
17
+ export async function collectChromeCookies(targetUrl) {
18
+ await ensureTldPatchedForLocalhost();
19
+ const secureModule = await loadChromeCookiesModule();
20
+ if (!secureModule) {
21
+ return [];
22
+ }
23
+ const profileOverride = cliEnv.chromeProfilePath ?? undefined;
24
+ const origins = buildCookieOrigins(targetUrl);
25
+ const collected = new Map();
26
+ const debugCookies = cliEnv.cookieDebug;
27
+ const targetBaseUrl = new URL(targetUrl);
28
+ if (debugCookies) {
29
+ console.log('Cookie sync debug enabled.');
30
+ }
31
+ await Promise.all(origins.map((origin) => collectCookiesForOrigin({
32
+ origin,
33
+ secureModule,
34
+ profileOverride,
35
+ collected,
36
+ debugCookies,
37
+ targetBaseUrl,
38
+ })));
39
+ pruneIncompatibleCookies(targetBaseUrl, collected);
40
+ return [...collected.values()];
41
+ }
42
+ /** Collects cookies for each domain and groups them by the originating host. */
43
+ export async function collectChromeCookiesForDomains(domains) {
44
+ await ensureTldPatchedForLocalhost();
45
+ const secureModule = await loadChromeCookiesModule();
46
+ if (!secureModule) {
47
+ return {};
48
+ }
49
+ const profileOverride = cliEnv.chromeProfilePath ?? undefined;
50
+ const debugCookies = cliEnv.cookieDebug;
51
+ const results = {};
52
+ await Promise.all(domains.map(async (domainCandidate) => {
53
+ if (!domainCandidate) {
54
+ return;
55
+ }
56
+ const domain = domainCandidate;
57
+ const origins = new Set(normalizeDomainToOrigins(domain));
58
+ const hostCandidate = extractHostCandidate(domain);
59
+ if (hostCandidate) {
60
+ for (const extra of resolveConfiguredCookieOrigins(hostCandidate)) {
61
+ origins.add(extra);
62
+ }
63
+ }
64
+ const collected = new Map();
65
+ const originList = [...origins.values()].filter((origin) => Boolean(origin));
66
+ await Promise.all(originList.map((origin) => collectCookiesForOrigin({
67
+ origin,
68
+ secureModule,
69
+ profileOverride,
70
+ collected,
71
+ debugCookies,
72
+ targetBaseUrl: new URL(origin),
73
+ })));
74
+ const targetIterator = origins.values().next();
75
+ const targetCandidate = targetIterator.done ? domain : targetIterator.value;
76
+ const targetBase = targetCandidate ? tryParseUrl(targetCandidate) : null;
77
+ if (targetBase) {
78
+ pruneIncompatibleCookies(targetBase, collected);
79
+ }
80
+ results[domain] = [...collected.values()];
81
+ }));
82
+ return results;
83
+ }
84
+ /** Returns the full set of origins SweetLink cares about for authentication. */
85
+ export function buildCookieOrigins(targetUrl) {
86
+ const base = new URL(targetUrl);
87
+ const origins = new Set([base.origin]);
88
+ const host = base.hostname.toLowerCase();
89
+ for (const origin of resolveConfiguredCookieOrigins(host)) {
90
+ origins.add(origin);
91
+ }
92
+ return [...origins];
93
+ }
94
+ async function collectCookiesForOrigin({ origin, secureModule, profileOverride, collected, debugCookies, targetBaseUrl, }) {
95
+ const cookieOrigin = origin.endsWith('/') ? origin : `${origin}/`;
96
+ let sourceBaseUrl = null;
97
+ try {
98
+ sourceBaseUrl = new URL(cookieOrigin);
99
+ }
100
+ catch {
101
+ if (debugCookies) {
102
+ console.log(`Skipping malformed cookie origin candidate ${cookieOrigin}`);
103
+ }
104
+ return;
105
+ }
106
+ const fallbackOrigins = deriveCookieOriginFallbacks(sourceBaseUrl);
107
+ const attemptCookieRead = async (candidateOrigin, reason) => {
108
+ if (debugCookies) {
109
+ if (reason === 'primary') {
110
+ console.log(`Reading Chrome cookies for ${candidateOrigin}`);
111
+ }
112
+ else {
113
+ console.log(`Retrying cookie collection for ${cookieOrigin} using fallback ${candidateOrigin}`);
114
+ }
115
+ }
116
+ try {
117
+ let candidateBase = null;
118
+ try {
119
+ candidateBase = new URL(candidateOrigin);
120
+ }
121
+ catch {
122
+ candidateBase = null;
123
+ }
124
+ if (!candidateBase) {
125
+ return 'parse-error';
126
+ }
127
+ sourceBaseUrl = candidateBase;
128
+ const beforeSize = collected.size;
129
+ const raw = (await secureModule.getCookiesPromised(candidateOrigin, 'puppeteer', profileOverride));
130
+ if (raw && raw.length > 0) {
131
+ ingestChromeCookies({
132
+ rawCookies: raw,
133
+ sourceBaseUrl: candidateBase,
134
+ targetBaseUrl,
135
+ collected,
136
+ sourceOrigin: candidateOrigin,
137
+ debug: debugCookies,
138
+ });
139
+ return collected.size > beforeSize ? 'added' : 'empty';
140
+ }
141
+ return 'empty';
142
+ }
143
+ catch (error) {
144
+ const message = error instanceof Error ? error.message : String(error);
145
+ if (message.includes('Could not parse domain from URI')) {
146
+ if (reason === 'fallback' && debugCookies) {
147
+ console.log(`Fallback cookie origin ${candidateOrigin} also failed: ${message}`);
148
+ }
149
+ return 'parse-error';
150
+ }
151
+ if (reason === 'primary') {
152
+ console.warn(`Failed to read cookies from Chrome for ${candidateOrigin}:`, message);
153
+ console.warn('If this persists, ensure Chrome is running and you are logged in, then rerun the command.');
154
+ }
155
+ else if (debugCookies) {
156
+ console.log(`Fallback cookie origin ${candidateOrigin} also failed: ${message}`);
157
+ }
158
+ return 'failed';
159
+ }
160
+ };
161
+ const primaryResult = await attemptCookieRead(cookieOrigin, 'primary');
162
+ const shouldAttemptFallback = fallbackOrigins.length > 0 && (primaryResult === 'empty' || primaryResult === 'parse-error');
163
+ if (!shouldAttemptFallback) {
164
+ if (primaryResult === 'parse-error' && debugCookies) {
165
+ console.log(`Giving up on cookie sync for ${cookieOrigin}; chrome-cookies-secure cannot parse the host.`);
166
+ }
167
+ return;
168
+ }
169
+ let sawParseError = primaryResult === 'parse-error';
170
+ for (const fallbackOrigin of fallbackOrigins) {
171
+ // biome-ignore lint/performance/noAwaitInLoops: fallback attempts must run sequentially to stop on the first success.
172
+ const result = await attemptCookieRead(fallbackOrigin, 'fallback');
173
+ if (result === 'added') {
174
+ return;
175
+ }
176
+ if (result === 'parse-error') {
177
+ sawParseError = true;
178
+ }
179
+ }
180
+ if (debugCookies) {
181
+ const reasonMessage = sawParseError
182
+ ? 'chrome-cookies-secure cannot parse the host.'
183
+ : 'no cookies were found after fallback candidates.';
184
+ console.log(`Giving up on cookie sync for ${cookieOrigin}; ${reasonMessage}`);
185
+ }
186
+ }
187
+ function ingestChromeCookies({ rawCookies, sourceBaseUrl, targetBaseUrl, collected, sourceOrigin, debug, }) {
188
+ if (!rawCookies?.length) {
189
+ return;
190
+ }
191
+ for (const cookie of rawCookies) {
192
+ if (debug) {
193
+ console.log(`Saw cookie ${describeUnknown(cookie.name, 'unknown')} from ${sourceOrigin}`);
194
+ }
195
+ const mapped = normalizePuppeteerCookie(cookie, {
196
+ sourceBase: sourceBaseUrl,
197
+ targetBase: targetBaseUrl,
198
+ });
199
+ if (!mapped) {
200
+ continue;
201
+ }
202
+ const key = `${mapped.domain ?? mapped.url ?? sourceBaseUrl.origin}|${mapped.path ?? '/'}|${mapped.name}`;
203
+ if (!collected.has(key)) {
204
+ collected.set(key, mapped);
205
+ }
206
+ }
207
+ if (debug) {
208
+ console.log(`${collected.size} cookies captured so far after ${sourceOrigin}`);
209
+ }
210
+ }
211
+ function deriveCookieOriginFallbacks(baseUrl) {
212
+ if (!baseUrl) {
213
+ return [];
214
+ }
215
+ const protocol = baseUrl.protocol || 'https:';
216
+ const host = baseUrl.hostname;
217
+ if (!host) {
218
+ return [];
219
+ }
220
+ const candidates = new Set();
221
+ const originWithSlash = `${protocol}//${host}/`;
222
+ if (host === 'localhost' || host === '127.0.0.1') {
223
+ candidates.add(originWithSlash);
224
+ candidates.add('http://localhost/');
225
+ candidates.add('http://127.0.0.1/');
226
+ candidates.add('https://localhost/');
227
+ candidates.add('https://127.0.0.1/');
228
+ if (host === 'localhost') {
229
+ candidates.add(`${protocol}//${host}.localdomain/`);
230
+ }
231
+ }
232
+ candidates.delete(`${baseUrl.origin}/`);
233
+ return [...candidates];
234
+ }
235
+ function normalizeDomainToOrigins(domain) {
236
+ const trimmed = domain.trim();
237
+ if (!trimmed) {
238
+ return [];
239
+ }
240
+ const candidates = new Set();
241
+ const addCandidate = (value) => {
242
+ try {
243
+ const url = new URL(value);
244
+ candidates.add(`${url.origin}/`);
245
+ }
246
+ catch {
247
+ /* ignore malformed candidates */
248
+ }
249
+ };
250
+ if (PROTOCOL_PREFIX_PATTERN.test(trimmed)) {
251
+ addCandidate(trimmed);
252
+ }
253
+ else {
254
+ addCandidate(`https://${trimmed}`);
255
+ addCandidate(`http://${trimmed}`);
256
+ }
257
+ return [...candidates];
258
+ }
259
+ function extractHostCandidate(domain) {
260
+ const trimmed = domain.trim();
261
+ if (!trimmed) {
262
+ return null;
263
+ }
264
+ try {
265
+ const url = new URL(trimmed.includes('://') ? trimmed : `https://${trimmed}`);
266
+ return url.hostname.toLowerCase();
267
+ }
268
+ catch {
269
+ return trimmed.toLowerCase();
270
+ }
271
+ }
272
+ function resolveConfiguredCookieOrigins(host) {
273
+ const { config } = loadSweetLinkFileConfig();
274
+ const mappings = config.cookieMappings ?? [];
275
+ const results = [];
276
+ for (const mapping of mappings) {
277
+ if (mappingMatchesHost(mapping, host)) {
278
+ for (const origin of mapping.origins) {
279
+ const normalized = normalizeOrigin(origin);
280
+ if (normalized) {
281
+ results.push(normalized);
282
+ }
283
+ }
284
+ }
285
+ }
286
+ return results;
287
+ }
288
+ function mappingMatchesHost(mapping, host) {
289
+ for (const candidate of mapping.hosts) {
290
+ const extracted = extractHostCandidate(candidate);
291
+ if (!extracted) {
292
+ continue;
293
+ }
294
+ if (isHostMatch(host, extracted)) {
295
+ return true;
296
+ }
297
+ }
298
+ return false;
299
+ }
300
+ function isConfiguredCookieDomain(host) {
301
+ const normalizedHost = host.toLowerCase();
302
+ const { config } = loadSweetLinkFileConfig();
303
+ const mappings = config.cookieMappings ?? [];
304
+ for (const mapping of mappings) {
305
+ if (mappingMatchesHost(mapping, normalizedHost)) {
306
+ return true;
307
+ }
308
+ }
309
+ return false;
310
+ }
311
+ function isHostMatch(host, pattern) {
312
+ const normalizedHost = host.toLowerCase();
313
+ let normalizedPattern = pattern.toLowerCase();
314
+ if (normalizedPattern.startsWith('*.')) {
315
+ normalizedPattern = normalizedPattern.slice(2);
316
+ }
317
+ if (!normalizedPattern) {
318
+ return false;
319
+ }
320
+ if (normalizedHost === normalizedPattern) {
321
+ return true;
322
+ }
323
+ if (normalizedHost.endsWith(`.${normalizedPattern}`)) {
324
+ return true;
325
+ }
326
+ return false;
327
+ }
328
+ function normalizeOrigin(value) {
329
+ try {
330
+ const url = new URL(value);
331
+ return url.origin;
332
+ }
333
+ catch {
334
+ try {
335
+ const url = new URL(`https://${value}`);
336
+ return url.origin;
337
+ }
338
+ catch {
339
+ return null;
340
+ }
341
+ }
342
+ }
343
+ export function normalizePuppeteerCookie(cookie, bases) {
344
+ const originalName = typeof cookie.name === 'string' ? cookie.name : null;
345
+ const value = typeof cookie.value === 'string' ? cookie.value : null;
346
+ if (!originalName || value === null) {
347
+ return null;
348
+ }
349
+ const result = {
350
+ name: originalName,
351
+ value,
352
+ };
353
+ const domain = typeof cookie.domain === 'string' && cookie.domain.length > 0 ? cookie.domain : null;
354
+ const path = typeof cookie.path === 'string' && cookie.path.length > 0 ? cookie.path : '/';
355
+ const targetHost = bases.targetBase.hostname;
356
+ const isLocalTarget = targetHost === 'localhost' || targetHost === '127.0.0.1';
357
+ const normalizedDomain = domain?.replace(LEADING_DOT_PATTERN, '') ?? null;
358
+ const isConfiguredDomain = normalizedDomain ? isConfiguredCookieDomain(normalizedDomain) : false;
359
+ const isLocalDomain = normalizedDomain === 'localhost' || normalizedDomain === '127.0.0.1' || normalizedDomain === '::1';
360
+ if (isLocalTarget && result.name.startsWith('__Secure-better-auth.')) {
361
+ result.name = result.name.replace(SECURE_PREFIX_PATTERN, '');
362
+ }
363
+ if (domain && domain !== 'localhost') {
364
+ if (isLocalTarget && (isConfiguredDomain || isLocalDomain)) {
365
+ result.url = bases.targetBase.origin;
366
+ }
367
+ else {
368
+ result.domain = domain;
369
+ }
370
+ }
371
+ else {
372
+ result.url = bases.targetBase.origin;
373
+ }
374
+ if (path) {
375
+ result.path = path;
376
+ }
377
+ if (cookie.Secure === true || cookie.secure === true) {
378
+ result.secure = true;
379
+ }
380
+ if (cookie.HttpOnly === true || cookie.httpOnly === true) {
381
+ result.httpOnly = true;
382
+ }
383
+ const sameSiteSource = typeof cookie.sameSite === 'string' ? cookie.sameSite : undefined;
384
+ const sameSite = normalizeSameSite(sameSiteSource);
385
+ if (sameSite) {
386
+ result.sameSite = sameSite;
387
+ }
388
+ if (sameSite === 'None' && !result.secure) {
389
+ result.secure = true;
390
+ }
391
+ if (typeof cookie.expires === 'number' && Number.isFinite(cookie.expires) && cookie.expires > 0) {
392
+ result.expires = Math.round(cookie.expires);
393
+ }
394
+ const rehomedToTarget = typeof result.url === 'string' && result.url.length > 0 && result.url === bases.targetBase.origin;
395
+ if (rehomedToTarget && bases.targetBase.protocol === 'http:') {
396
+ if (result.secure) {
397
+ result.secure = false;
398
+ }
399
+ if (result.sameSite === 'None') {
400
+ result.sameSite = 'Lax';
401
+ }
402
+ if (result.name.startsWith('__Secure-')) {
403
+ result.name = result.name.replace(SECURE_PREFIX_PATTERN, '');
404
+ }
405
+ if (result.name.startsWith('__Host-')) {
406
+ result.name = result.name.replace(HOST_PREFIX_PATTERN, '');
407
+ result.path = '/';
408
+ }
409
+ }
410
+ return result;
411
+ }
412
+ function normalizeSameSite(value) {
413
+ if (!value) {
414
+ return;
415
+ }
416
+ const normalized = value.toLowerCase();
417
+ if (normalized === 'strict') {
418
+ return 'Strict';
419
+ }
420
+ if (normalized === 'lax') {
421
+ return 'Lax';
422
+ }
423
+ if (normalized === 'no_restriction' || normalized === 'none') {
424
+ return 'None';
425
+ }
426
+ return;
427
+ }
428
+ function pruneIncompatibleCookies(targetBaseUrl, collected) {
429
+ if (collected.size === 0) {
430
+ return;
431
+ }
432
+ const localHosts = new Set(['localhost', '127.0.0.1', '::1']);
433
+ if (!localHosts.has(targetBaseUrl.hostname)) {
434
+ return;
435
+ }
436
+ const disallowedNames = new Set(['_vercel_session', '_vercel_jwt']);
437
+ for (const [key, cookie] of collected.entries()) {
438
+ const name = cookie.name?.toLowerCase();
439
+ if (name && disallowedNames.has(name)) {
440
+ collected.delete(key);
441
+ }
442
+ }
443
+ }
444
+ function tryParseUrl(candidate) {
445
+ try {
446
+ return new URL(candidate);
447
+ }
448
+ catch {
449
+ try {
450
+ return new URL(candidate.includes('://') ? candidate : `http://${candidate}`);
451
+ }
452
+ catch {
453
+ return null;
454
+ }
455
+ }
456
+ }
457
+ async function ensureTldPatchedForLocalhost() {
458
+ if (tldPatchedForLocalhost) {
459
+ return;
460
+ }
461
+ try {
462
+ const importedModule = await import('tldjs');
463
+ const tld = resolveTldModule(importedModule);
464
+ if (tld && typeof tld.getDomain === 'function') {
465
+ const originalGetDomain = tld.getDomain.bind(tld);
466
+ tld.getDomain = (uri) => {
467
+ const domain = originalGetDomain(uri);
468
+ if (domain) {
469
+ return domain;
470
+ }
471
+ try {
472
+ return new URL(uri).hostname ?? null;
473
+ }
474
+ catch {
475
+ return null;
476
+ }
477
+ };
478
+ tldPatchedForLocalhost = true;
479
+ }
480
+ }
481
+ catch (error) {
482
+ console.warn('Failed to patch tldjs for localhost support:', error);
483
+ }
484
+ }
485
+ const SQLITE_BINDING_HINT = [
486
+ 'SweetLink needs chrome-cookies-secure to read your Chrome cookie DB.',
487
+ 'Rebuild the native modules once per workspace so Node 25 picks up the sqlite3 binding:',
488
+ ' PYTHON=/usr/bin/python3 npm_config_build_from_source=1 pnpm rebuild chrome-cookies-secure sqlite3 keytar --workspace-root',
489
+ ].join('\n');
490
+ const isSqliteBindingError = (error) => {
491
+ if (!(error instanceof Error)) {
492
+ return false;
493
+ }
494
+ const message = error.message ?? '';
495
+ return (SQLITE_NODE_PATTERN.test(message) ||
496
+ SQLITE_BINDINGS_PATTERN.test(message) ||
497
+ SQLITE_SELF_REGISTER_PATTERN.test(message));
498
+ };
499
+ async function loadChromeCookiesModule() {
500
+ let imported;
501
+ try {
502
+ imported = await import('chrome-cookies-secure');
503
+ }
504
+ catch (error) {
505
+ console.warn('Failed to load chrome-cookies-secure to copy cookies:', error);
506
+ if (isSqliteBindingError(error)) {
507
+ const rebuilt = await attemptSqliteRebuild();
508
+ if (rebuilt) {
509
+ return loadChromeCookiesModule();
510
+ }
511
+ console.warn(SQLITE_BINDING_HINT);
512
+ }
513
+ else {
514
+ console.warn('If this persists, run `pnpm rebuild chrome-cookies-secure sqlite3 keytar --workspace-root`.');
515
+ }
516
+ return null;
517
+ }
518
+ const secureModule = resolveChromeCookieModule(imported);
519
+ if (!secureModule) {
520
+ console.warn('chrome-cookies-secure does not expose getCookiesPromised(); skipping cookie copy.');
521
+ return null;
522
+ }
523
+ return secureModule;
524
+ }
525
+ function resolveChromeCookieModule(candidate) {
526
+ if (hasGetCookiesPromised(candidate)) {
527
+ return candidate;
528
+ }
529
+ if (typeof candidate === 'object' && candidate !== null) {
530
+ const defaultExport = Reflect.get(candidate, 'default');
531
+ if (hasGetCookiesPromised(defaultExport)) {
532
+ return defaultExport;
533
+ }
534
+ }
535
+ return null;
536
+ }
537
+ function hasGetCookiesPromised(value) {
538
+ return Boolean(value && typeof value.getCookiesPromised === 'function');
539
+ }
540
+ function resolveTldModule(value) {
541
+ if (typeof value !== 'object' || value === null) {
542
+ return null;
543
+ }
544
+ const record = value;
545
+ if (typeof record.getDomain === 'function') {
546
+ return record;
547
+ }
548
+ const defaultExport = record.default;
549
+ if (typeof defaultExport === 'object' && defaultExport !== null) {
550
+ const defaultRecord = defaultExport;
551
+ if (typeof defaultRecord.getDomain === 'function') {
552
+ return defaultRecord;
553
+ }
554
+ }
555
+ return null;
556
+ }
557
+ function attemptSqliteRebuild() {
558
+ if (attemptedSqliteRebuild) {
559
+ return Promise.resolve(false);
560
+ }
561
+ attemptedSqliteRebuild = true;
562
+ const pnpmCommand = process.platform === 'win32' ? 'pnpm.cmd' : 'pnpm';
563
+ const args = ['rebuild', 'chrome-cookies-secure', 'sqlite3', 'keytar', '--workspace-root'];
564
+ const childEnv = cloneProcessEnv();
565
+ const pythonBinary = childEnv.PYTHON ?? '/usr/bin/python3';
566
+ const rebuildCommand = `${pnpmCommand} ${args.join(' ')}`;
567
+ console.warn('[SweetLink] Attempting to rebuild sqlite3 bindings automatically…');
568
+ console.warn(`[SweetLink] Running: npm_config_build_from_source=1 PYTHON=${pythonBinary} ${rebuildCommand}`);
569
+ return new Promise((resolve) => {
570
+ childEnv.npm_config_build_from_source = '1';
571
+ childEnv.PYTHON = childEnv.PYTHON ?? '/usr/bin/python3';
572
+ const child = spawn(pnpmCommand, args, {
573
+ stdio: 'inherit',
574
+ env: childEnv,
575
+ });
576
+ child.on('exit', (code) => {
577
+ if (code === 0) {
578
+ console.warn('[SweetLink] sqlite3 rebuild completed successfully.');
579
+ resolve(true);
580
+ }
581
+ else {
582
+ console.warn('[SweetLink] sqlite3 rebuild failed with exit code', code ?? 0);
583
+ resolve(false);
584
+ }
585
+ });
586
+ child.on('error', (spawnError) => {
587
+ console.warn('[SweetLink] Unable to spawn pnpm to rebuild sqlite3:', spawnError);
588
+ resolve(false);
589
+ });
590
+ });
591
+ }
592
+ //# sourceMappingURL=cookies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookies.js","sourceRoot":"","sources":["../../../src/runtime/cookies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { ServerConfig } from '../types.js';
2
+ /** Registers the mkcert CA with undici so HTTPS requests succeed without NODE_TLS_REJECT_UNAUTHORIZED hacks. */
3
+ export declare function maybeInstallMkcertDispatcher(): void;
4
+ interface EnsureDevStackOptions {
5
+ readonly repoRoot: string;
6
+ readonly healthPaths?: readonly string[];
7
+ readonly server?: ServerConfig;
8
+ }
9
+ /** Ensures the local dev server is online, optionally attempting to start it via configured command. */
10
+ export declare function ensureDevStackRunning(targetUrl: URL, options: EnsureDevStackOptions): Promise<void>;
11
+ /** Performs lightweight HEAD requests to confirm the web app responds. */
12
+ export declare function isAppReachable(appBaseUrl: string, healthPaths?: readonly string[]): Promise<boolean>;
13
+ export {};
14
+ //# sourceMappingURL=devstack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devstack.d.ts","sourceRoot":"","sources":["../../../src/runtime/devstack.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKhD,gHAAgH;AAChH,wBAAgB,4BAA4B,IAAI,IAAI,CAwBnD;AAED,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC;AAED,wGAAwG;AACxG,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CzG;AAED,0EAA0E;AAC1E,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CA6C1G"}