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,392 @@
1
+ import { regex } from 'arkregex';
2
+ import { compact } from 'es-toolkit';
3
+ import { chromium, } from 'playwright-core';
4
+ import { WebSocket } from 'undici';
5
+ import { sweetLinkDebug } from '../../env.js';
6
+ import { describeUnknown, extractEventMessage } from '../../util/errors.js';
7
+ import { delay } from '../../util/time.js';
8
+ import { DEVTOOLS_PORT_SCAN_END, DEVTOOLS_PORT_SCAN_START } from '../chrome/reuse/constants.js';
9
+ import { urlsRoughlyMatch } from '../url.js';
10
+ const isDevToolsResponse = (value) => {
11
+ if (typeof value !== 'object' || value === null) {
12
+ return false;
13
+ }
14
+ const record = value;
15
+ if (record.id !== undefined && typeof record.id !== 'number') {
16
+ return false;
17
+ }
18
+ if (record.error !== undefined) {
19
+ if (typeof record.error !== 'object' || record.error === null) {
20
+ return false;
21
+ }
22
+ const errorRecord = record.error;
23
+ if (errorRecord.message !== undefined && typeof errorRecord.message !== 'string') {
24
+ return false;
25
+ }
26
+ }
27
+ return true;
28
+ };
29
+ const ECONNREFUSED_PATTERN = regex.as('ECONNREFUSED');
30
+ export async function collectBootstrapDiagnostics(devtoolsUrl, candidates) {
31
+ for (const candidate of candidates) {
32
+ try {
33
+ // biome-ignore lint/performance/noAwaitInLoops: stop after the first tab that yields diagnostics.
34
+ const result = await evaluateInDevToolsTab(devtoolsUrl, candidate, `(function () {
35
+ const summary = {
36
+ readyState: document.readyState,
37
+ autoFlag: Boolean(window.__sweetlinkCliAuto),
38
+ bootstrapEmits: Number(window.__sweetlinkBootstrapEmits || 0),
39
+ sessionStorageAuto: null,
40
+ locationHref: location.href,
41
+ locationPathname: location.pathname,
42
+ errors: [],
43
+ overlayText: null,
44
+ nextRouteError: null,
45
+ };
46
+
47
+ try {
48
+ summary.sessionStorageAuto = sessionStorage.getItem('sweetlink:auto');
49
+ } catch {
50
+ summary.sessionStorageAuto = null;
51
+ }
52
+
53
+ const store = window.__sweetlinkCliErrors;
54
+ if (Array.isArray(store) && store.length) {
55
+ summary.errors = store.slice(-5).map((entry) => {
56
+ const safe = entry && typeof entry === 'object' ? entry : {};
57
+ const type =
58
+ typeof safe.type === 'string' ? safe.type : safe.type != null ? String(safe.type) : 'error';
59
+ const message =
60
+ typeof safe.message === 'string' ? safe.message : String(safe.message ?? '');
61
+ const source = typeof safe.source === 'string' ? safe.source : null;
62
+ const stack = typeof safe.stack === 'string' ? safe.stack : null;
63
+ const timestamp = typeof safe.timestamp === 'number' ? safe.timestamp : null;
64
+ const status = typeof safe.status === 'number' ? safe.status : null;
65
+ return { type, message, source, stack, status, timestamp };
66
+ });
67
+ }
68
+
69
+ const overlay =
70
+ document.querySelector('[data-nextjs-error-overlay-root]') ||
71
+ document.querySelector('[data-nextjs-error-overlay]') ||
72
+ document.querySelector('#__nextjs__container_errors');
73
+ if (overlay && typeof overlay.textContent === 'string') {
74
+ summary.overlayText = overlay.textContent.slice(0, 500);
75
+ }
76
+
77
+ const nextData = typeof window.__NEXT_DATA__ === 'object' ? window.__NEXT_DATA__ : null;
78
+ if (nextData && nextData.err) {
79
+ const err = nextData.err;
80
+ const message =
81
+ err && typeof err === 'object' && 'message' in err ? String(err.message ?? '') : String(err);
82
+ const digest =
83
+ err && typeof err === 'object' && 'digest' in err ? String(err.digest ?? '') : null;
84
+ summary.nextRouteError = { message, digest };
85
+ }
86
+
87
+ return summary;
88
+ })()`);
89
+ if (result && typeof result === 'object') {
90
+ return result;
91
+ }
92
+ }
93
+ catch {
94
+ /* ignore and try next candidate */
95
+ }
96
+ }
97
+ return null;
98
+ }
99
+ export async function discoverDevToolsEndpoints() {
100
+ const ports = [];
101
+ for (let port = DEVTOOLS_PORT_SCAN_START; port <= DEVTOOLS_PORT_SCAN_END; port += 1) {
102
+ ports.push(port);
103
+ }
104
+ const results = await Promise.all(ports.map(async (port) => {
105
+ const baseUrl = `http://127.0.0.1:${port}`;
106
+ try {
107
+ const response = await fetch(`${baseUrl}/json/version`, { method: 'GET' });
108
+ if (response.ok) {
109
+ return baseUrl;
110
+ }
111
+ }
112
+ catch {
113
+ /* ignore */
114
+ }
115
+ return null;
116
+ }));
117
+ return results.filter((url) => typeof url === 'string');
118
+ }
119
+ export async function fetchDevToolsTabs(devtoolsUrl) {
120
+ const response = await fetch(`${devtoolsUrl}/json/list`, { method: 'GET' });
121
+ if (!response.ok) {
122
+ throw new Error(`DevTools endpoint responded with ${response.status}`);
123
+ }
124
+ const payload = (await response.json());
125
+ if (!Array.isArray(payload)) {
126
+ throw new TypeError('DevTools endpoint returned unexpected payload');
127
+ }
128
+ return compact(payload.map((entry) => {
129
+ if (!entry || typeof entry !== 'object') {
130
+ return null;
131
+ }
132
+ const record = entry;
133
+ const id = typeof record.id === 'string' ? record.id : null;
134
+ const title = typeof record.title === 'string' ? record.title : '';
135
+ const url = typeof record.url === 'string' ? record.url : '';
136
+ const type = typeof record.type === 'string' ? record.type : undefined;
137
+ const webSocketDebuggerUrl = typeof record.webSocketDebuggerUrl === 'string' ? record.webSocketDebuggerUrl : undefined;
138
+ if (!(id && url)) {
139
+ return null;
140
+ }
141
+ return { id, title, url, type, webSocketDebuggerUrl };
142
+ }));
143
+ }
144
+ export async function fetchDevToolsTabsWithRetry(devtoolsUrl, attempts = 5) {
145
+ const delayMs = 200;
146
+ for (let attempt = 0; attempt < attempts; attempt += 1) {
147
+ try {
148
+ // biome-ignore lint/performance/noAwaitInLoops: retries must run sequentially with backoff.
149
+ const tabs = await fetchDevToolsTabs(devtoolsUrl);
150
+ if (tabs.length > 0) {
151
+ return tabs;
152
+ }
153
+ }
154
+ catch (error) {
155
+ const message = error instanceof Error ? error.message : String(error);
156
+ if (!ECONNREFUSED_PATTERN.test(message)) {
157
+ throw error;
158
+ }
159
+ }
160
+ await delay(delayMs);
161
+ }
162
+ return [];
163
+ }
164
+ export async function evaluateInDevToolsTab(devtoolsUrl, targetUrl, expression) {
165
+ const tabs = await fetchDevToolsTabsWithRetry(devtoolsUrl);
166
+ if (tabs.length === 0) {
167
+ throw new Error('No DevTools tabs available');
168
+ }
169
+ const candidate = tabs.find((tab) => urlsRoughlyMatch(tab.url, targetUrl) && tab.webSocketDebuggerUrl) ||
170
+ tabs.find((tab) => tab.webSocketDebuggerUrl);
171
+ if (!candidate?.webSocketDebuggerUrl) {
172
+ throw new Error('DevTools tab does not expose a debugger WebSocket URL');
173
+ }
174
+ const socket = new WebSocket(candidate.webSocketDebuggerUrl);
175
+ let nextId = 0;
176
+ const pending = new Map();
177
+ const sendCommand = (method, params = {}) => {
178
+ nextId += 1;
179
+ const id = nextId;
180
+ return new Promise((resolve, reject) => {
181
+ pending.set(id, {
182
+ resolve: (value) => resolve(value),
183
+ reject,
184
+ });
185
+ const payload = JSON.stringify({ id, method, params });
186
+ socket.send(payload);
187
+ });
188
+ };
189
+ const awaitDocumentReady = async () => {
190
+ for (let attempt = 0; attempt < 50; attempt += 1) {
191
+ try {
192
+ // biome-ignore lint/performance/noAwaitInLoops: document readiness must be polled sequentially.
193
+ const result = await sendCommand('Runtime.evaluate', {
194
+ expression: 'document.readyState',
195
+ returnByValue: true,
196
+ });
197
+ const state = result.result?.value ??
198
+ (typeof result.result?.result === 'object' && result.result?.result !== null
199
+ ? result.result.result.value
200
+ : undefined);
201
+ if (state === 'complete' || state === 'interactive') {
202
+ return;
203
+ }
204
+ }
205
+ catch {
206
+ /* ignore and retry */
207
+ }
208
+ await delay(150);
209
+ }
210
+ };
211
+ const cleanup = () => {
212
+ pending.clear();
213
+ try {
214
+ socket.close();
215
+ }
216
+ catch (error) {
217
+ if (sweetLinkDebug) {
218
+ console.warn('DevTools socket close failed during cleanup.', error);
219
+ }
220
+ }
221
+ };
222
+ return await new Promise((resolve, reject) => {
223
+ const handleOpen = async () => {
224
+ try {
225
+ await sendCommand('Runtime.enable');
226
+ await awaitDocumentReady();
227
+ const evalResult = await sendCommand('Runtime.evaluate', {
228
+ expression,
229
+ awaitPromise: true,
230
+ returnByValue: true,
231
+ });
232
+ cleanup();
233
+ resolve(evalResult.result?.value ??
234
+ (typeof evalResult.result?.result === 'object' && evalResult.result?.result !== null
235
+ ? evalResult.result.result.value
236
+ : null));
237
+ }
238
+ catch (error) {
239
+ cleanup();
240
+ const rejection = error instanceof Error ? error : new Error(describeUnknown(error, 'DevTools evaluation failed'));
241
+ reject(rejection);
242
+ }
243
+ };
244
+ socket.addEventListener('open', () => {
245
+ handleOpen().catch((error) => {
246
+ if (sweetLinkDebug) {
247
+ console.warn('DevTools open handler failed before evaluation began.', error);
248
+ }
249
+ });
250
+ });
251
+ socket.addEventListener('message', (event) => {
252
+ let data = null;
253
+ if (typeof event.data === 'string') {
254
+ try {
255
+ const parsed = JSON.parse(event.data);
256
+ if (isDevToolsResponse(parsed)) {
257
+ data = parsed;
258
+ }
259
+ else if (sweetLinkDebug) {
260
+ console.warn('Received DevTools payload with unexpected shape.', parsed);
261
+ }
262
+ }
263
+ catch (parseError) {
264
+ if (sweetLinkDebug) {
265
+ console.warn('Received malformed DevTools response.', parseError);
266
+ }
267
+ }
268
+ }
269
+ else if (sweetLinkDebug) {
270
+ const payloadSummary = typeof event.data === 'string' || typeof event.data === 'number' || typeof event.data === 'boolean'
271
+ ? event.data
272
+ : (() => {
273
+ try {
274
+ return JSON.stringify(event.data);
275
+ }
276
+ catch {
277
+ return '[unserializable payload]';
278
+ }
279
+ })();
280
+ console.warn('Received non-string DevTools response.', { data: payloadSummary });
281
+ }
282
+ if (!data || typeof data.id !== 'number') {
283
+ return;
284
+ }
285
+ const handlers = pending.get(data.id);
286
+ if (!handlers) {
287
+ return;
288
+ }
289
+ pending.delete(data.id);
290
+ if (data.error) {
291
+ handlers.reject(new Error(data.error.message ?? 'DevTools command failed'));
292
+ }
293
+ else {
294
+ handlers.resolve(data.result);
295
+ }
296
+ });
297
+ socket.addEventListener('error', (event) => {
298
+ cleanup();
299
+ const message = extractEventMessage(event, 'DevTools socket error');
300
+ reject(new Error(message));
301
+ });
302
+ socket.addEventListener('close', () => {
303
+ if (pending.size > 0) {
304
+ reject(new Error('DevTools socket closed before command completed'));
305
+ }
306
+ });
307
+ });
308
+ }
309
+ export async function connectToDevTools(config) {
310
+ try {
311
+ const browser = await chromium.connectOverCDP(config.devtoolsUrl, { timeout: 10_000 });
312
+ const page = resolveDevToolsPage(browser, config);
313
+ return { browser, page };
314
+ }
315
+ catch (error) {
316
+ throw new Error(`ConnectOverCDP failed: ${extractEventMessage(error)}`);
317
+ }
318
+ }
319
+ export function resolveDevToolsPage(browser, config) {
320
+ const contexts = browser.contexts();
321
+ const allPages = contexts.flatMap((ctx) => ctx.pages());
322
+ const { targetUrl } = config;
323
+ if (targetUrl) {
324
+ const match = allPages.find((p) => urlsRoughlyMatch(p.url(), targetUrl));
325
+ if (match) {
326
+ return match;
327
+ }
328
+ }
329
+ if (allPages.length > 0) {
330
+ const [firstPage] = allPages;
331
+ if (firstPage) {
332
+ return firstPage;
333
+ }
334
+ }
335
+ throw new Error('No pages found in controlled Chrome window');
336
+ }
337
+ export async function serializeConsoleMessage(message) {
338
+ const args = await Promise.all(message.args().map(async (handle) => {
339
+ try {
340
+ return await handle.jsonValue();
341
+ }
342
+ catch {
343
+ try {
344
+ return await handle.evaluate((value) => {
345
+ if (typeof value === 'string') {
346
+ return value;
347
+ }
348
+ if (typeof value === 'number' || typeof value === 'boolean' || value === null) {
349
+ return String(value);
350
+ }
351
+ try {
352
+ return JSON.stringify(value);
353
+ }
354
+ catch {
355
+ return Object.prototype.toString.call(value);
356
+ }
357
+ });
358
+ }
359
+ catch {
360
+ return '[unserializable]';
361
+ }
362
+ }
363
+ }));
364
+ const location = message.location();
365
+ return {
366
+ ts: Date.now(),
367
+ type: message.type(),
368
+ text: message.text(),
369
+ args,
370
+ location: location?.url
371
+ ? {
372
+ url: location.url,
373
+ lineNumber: location.lineNumber,
374
+ columnNumber: location.columnNumber,
375
+ }
376
+ : undefined,
377
+ };
378
+ }
379
+ export function createEmptyDevToolsState(endpoint) {
380
+ return {
381
+ endpoint,
382
+ console: [],
383
+ network: [],
384
+ updatedAt: Date.now(),
385
+ };
386
+ }
387
+ export function trimBuffer(buffer, limit) {
388
+ if (buffer.length > limit) {
389
+ buffer.splice(0, buffer.length - limit);
390
+ }
391
+ }
392
+ //# sourceMappingURL=cdp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdp.js","sourceRoot":"","sources":["../../../../src/runtime/devtools/cdp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { DevToolsConfig, DevToolsState } from './types.js';
2
+ export declare function loadDevToolsConfig(): Promise<DevToolsConfig | null>;
3
+ export declare function saveDevToolsConfig(patch: Partial<DevToolsConfig> & {
4
+ devtoolsUrl: string;
5
+ }): Promise<void>;
6
+ export declare function loadDevToolsState(): Promise<DevToolsState | null>;
7
+ export declare function saveDevToolsState(state: DevToolsState): Promise<void>;
8
+ export declare function deriveDevtoolsLinkInfo(config: DevToolsConfig | null, state: DevToolsState | null): {
9
+ endpoint: string | null;
10
+ sessionIds: Set<string>;
11
+ };
12
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/runtime/devtools/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAczE;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAehH;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAcvE;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3E;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,cAAc,GAAG,IAAI,EAC7B,KAAK,EAAE,aAAa,GAAG,IAAI,GAC1B;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,CAWtD"}
@@ -0,0 +1,78 @@
1
+ import { mkdir, readFile, writeFile } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { sweetLinkDebug } from '../../env.js';
4
+ import { isErrnoException } from '../../util/errors.js';
5
+ import { DEVTOOLS_CONFIG_PATH, DEVTOOLS_STATE_PATH } from './constants.js';
6
+ export async function loadDevToolsConfig() {
7
+ try {
8
+ const raw = await readFile(DEVTOOLS_CONFIG_PATH, 'utf8');
9
+ const parsed = JSON.parse(raw);
10
+ if (!parsed.devtoolsUrl) {
11
+ return null;
12
+ }
13
+ return parsed;
14
+ }
15
+ catch (error) {
16
+ if (sweetLinkDebug && (!isErrnoException(error) || error.code !== 'ENOENT')) {
17
+ console.warn('Failed to read DevTools config:', error);
18
+ }
19
+ return null;
20
+ }
21
+ }
22
+ export async function saveDevToolsConfig(patch) {
23
+ const existing = await loadDevToolsConfig();
24
+ const next = {
25
+ devtoolsUrl: patch.devtoolsUrl,
26
+ port: ensureConfigField(patch.port ?? existing?.port, 'DevTools port is required'),
27
+ userDataDir: ensureConfigField(patch.userDataDir ?? existing?.userDataDir, 'DevTools userDataDir is required'),
28
+ updatedAt: patch.updatedAt ?? existing?.updatedAt ?? Date.now(),
29
+ targetUrl: patch.targetUrl ?? existing?.targetUrl,
30
+ sessionId: patch.sessionId ?? existing?.sessionId,
31
+ viewport: patch.viewport ?? existing?.viewport,
32
+ };
33
+ const configDirectory = path.dirname(DEVTOOLS_CONFIG_PATH);
34
+ await mkdir(configDirectory, { recursive: true });
35
+ await writeFile(DEVTOOLS_CONFIG_PATH, JSON.stringify(next, null, 2), 'utf8');
36
+ }
37
+ export async function loadDevToolsState() {
38
+ try {
39
+ const raw = await readFile(DEVTOOLS_STATE_PATH, 'utf8');
40
+ const parsed = JSON.parse(raw);
41
+ if (!parsed.console)
42
+ parsed.console = [];
43
+ if (!parsed.network)
44
+ parsed.network = [];
45
+ return parsed;
46
+ }
47
+ catch (error) {
48
+ if (isErrnoException(error) && error.code === 'ENOENT') {
49
+ return null;
50
+ }
51
+ console.warn('Failed to read DevTools state:', error);
52
+ return null;
53
+ }
54
+ }
55
+ export async function saveDevToolsState(state) {
56
+ state.updatedAt = Date.now();
57
+ const stateDirectory = path.dirname(DEVTOOLS_STATE_PATH);
58
+ await mkdir(stateDirectory, { recursive: true });
59
+ await writeFile(DEVTOOLS_STATE_PATH, JSON.stringify(state, null, 2), 'utf8');
60
+ }
61
+ export function deriveDevtoolsLinkInfo(config, state) {
62
+ const sessionIds = new Set();
63
+ if (config?.sessionId) {
64
+ sessionIds.add(config.sessionId);
65
+ }
66
+ if (state?.sessionId) {
67
+ sessionIds.add(state.sessionId);
68
+ }
69
+ const endpoint = config?.devtoolsUrl ?? state?.endpoint ?? null;
70
+ return { endpoint, sessionIds };
71
+ }
72
+ function ensureConfigField(value, message) {
73
+ if (value === undefined || value === null) {
74
+ throw new Error(message);
75
+ }
76
+ return value;
77
+ }
78
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/runtime/devtools/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare const DEVTOOLS_CONFIG_PATH: string;
2
+ export declare const DEVTOOLS_STATE_PATH: string;
3
+ export declare const DEVTOOLS_LISTENER_PID_PATH: string;
4
+ export declare const DEVTOOLS_CONSOLE_LIMIT = 500;
5
+ export declare const DEVTOOLS_NETWORK_LIMIT = 500;
6
+ export declare const DEFAULT_CLI_ENTRYPOINT: string;
7
+ export declare const PUPPETEER_CONNECT_TIMEOUT_MS = 45000;
8
+ export declare const BENIGN_CONSOLE_TYPES: Set<string>;
9
+ export declare const IGNORABLE_DIAGNOSTIC_MESSAGES: string[];
10
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/runtime/devtools/constants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB,QAAyD,CAAC;AAC3F,eAAO,MAAM,mBAAmB,QAA+D,CAAC;AAChG,eAAO,MAAM,0BAA0B,QAAiE,CAAC;AACzG,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAK1C,eAAO,MAAM,sBAAsB,QAA6C,CAAC;AAEjF,eAAO,MAAM,4BAA4B,QAAS,CAAC;AAEnD,eAAO,MAAM,oBAAoB,aAAuE,CAAC;AAEzG,eAAO,MAAM,6BAA6B,UAGzC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import os from 'node:os';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ export const DEVTOOLS_CONFIG_PATH = path.join(os.homedir(), '.sweetlink', 'devtools.json');
5
+ export const DEVTOOLS_STATE_PATH = path.join(os.homedir(), '.sweetlink', 'devtools-state.json');
6
+ export const DEVTOOLS_LISTENER_PID_PATH = path.join(os.homedir(), '.sweetlink', 'devtools-listener.pid');
7
+ export const DEVTOOLS_CONSOLE_LIMIT = 500;
8
+ export const DEVTOOLS_NETWORK_LIMIT = 500;
9
+ const moduleFilename = fileURLToPath(import.meta.url);
10
+ const moduleDirname = path.dirname(moduleFilename);
11
+ export const DEFAULT_CLI_ENTRYPOINT = path.join(moduleDirname, '..', 'index.ts');
12
+ export const PUPPETEER_CONNECT_TIMEOUT_MS = 45_000;
13
+ export const BENIGN_CONSOLE_TYPES = new Set(['log', 'info', 'debug', 'dir', 'dirxml', 'trace', 'table']);
14
+ export const IGNORABLE_DIAGNOSTIC_MESSAGES = [
15
+ 'Intentional break for SweetLink session test',
16
+ 'Intentional failure for SweetLink diagnostics test',
17
+ ];
18
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/runtime/devtools/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;AAC3F,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC;AAChG,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,uBAAuB,CAAC,CAAC;AACzG,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAC1C,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAEnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAEjF,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAEnD,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAEzG,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,8CAA8C;IAC9C,oDAAoD;CACrD,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Request } from 'playwright-core';
2
+ import type { DevToolsConsoleEntry, DevToolsNetworkEntry, SweetLinkBootstrapDiagnostics } from './types.js';
3
+ export declare function logBootstrapDiagnostics(label: string, diagnostics: SweetLinkBootstrapDiagnostics): void;
4
+ export declare function logDevtoolsConsoleSummary(label: string, entries: readonly DevToolsConsoleEntry[], limit?: number): void;
5
+ export declare function diagnosticsContainBlockingIssues(diagnostics: SweetLinkBootstrapDiagnostics): boolean;
6
+ export declare function formatConsoleArg(value: unknown): string;
7
+ export declare function createNetworkEntryFromRequest(request: Request, status?: number, failureText?: string): DevToolsNetworkEntry;
8
+ //# sourceMappingURL=diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../../src/runtime/devtools/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,KAAK,EAEV,oBAAoB,EACpB,oBAAoB,EACpB,6BAA6B,EAC9B,MAAM,YAAY,CAAC;AAgHpB,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,6BAA6B,GAAG,IAAI,CAYvG;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,oBAAoB,EAAE,EAAE,KAAK,SAAK,GAAG,IAAI,CAmDnH;AAED,wBAAgB,gCAAgC,CAAC,WAAW,EAAE,6BAA6B,GAAG,OAAO,CAmCpG;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CASvD;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,oBAAoB,CAStB"}