@ytspar/sweetlink 1.21.0 → 1.22.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 (68) hide show
  1. package/dist/browser/consoleCapture.js +1 -1
  2. package/dist/browser/consoleCapture.js.map +1 -1
  3. package/dist/browser/earlyConsoleCapture.d.ts +1 -1
  4. package/dist/browser/earlyConsoleCapture.d.ts.map +1 -1
  5. package/dist/cli/sweetlink.js +136 -64
  6. package/dist/cli/sweetlink.js.map +1 -1
  7. package/dist/daemon/demo.d.ts.map +1 -1
  8. package/dist/daemon/demo.js +3 -19
  9. package/dist/daemon/demo.js.map +1 -1
  10. package/dist/daemon/recording.d.ts +1 -1
  11. package/dist/daemon/recording.d.ts.map +1 -1
  12. package/dist/daemon/recording.js +1 -19
  13. package/dist/daemon/recording.js.map +1 -1
  14. package/dist/daemon/server.js +5 -9
  15. package/dist/daemon/server.js.map +1 -1
  16. package/dist/daemon/session.d.ts +8 -1
  17. package/dist/daemon/session.d.ts.map +1 -1
  18. package/dist/daemon/types.d.ts +7 -2
  19. package/dist/daemon/types.d.ts.map +1 -1
  20. package/dist/daemon/types.js.map +1 -1
  21. package/dist/daemon/utils.d.ts +22 -0
  22. package/dist/daemon/utils.d.ts.map +1 -0
  23. package/dist/daemon/utils.js +44 -0
  24. package/dist/daemon/utils.js.map +1 -0
  25. package/dist/daemon/viewer.d.ts.map +1 -1
  26. package/dist/daemon/viewer.js +2 -8
  27. package/dist/daemon/viewer.js.map +1 -1
  28. package/dist/daemon/visualDiff.d.ts +9 -0
  29. package/dist/daemon/visualDiff.d.ts.map +1 -1
  30. package/dist/daemon/visualDiff.js +12 -1
  31. package/dist/daemon/visualDiff.js.map +1 -1
  32. package/dist/runs.d.ts +15 -3
  33. package/dist/runs.d.ts.map +1 -1
  34. package/dist/runs.js +29 -13
  35. package/dist/runs.js.map +1 -1
  36. package/dist/server/index.d.ts +1 -1
  37. package/dist/server/index.d.ts.map +1 -1
  38. package/dist/simulator/android.d.ts +6 -0
  39. package/dist/simulator/android.d.ts.map +1 -1
  40. package/dist/simulator/android.js +81 -4
  41. package/dist/simulator/android.js.map +1 -1
  42. package/dist/simulator/androidTaps.d.ts +12 -2
  43. package/dist/simulator/androidTaps.d.ts.map +1 -1
  44. package/dist/simulator/androidTaps.js +57 -11
  45. package/dist/simulator/androidTaps.js.map +1 -1
  46. package/dist/simulator/ios.d.ts +7 -0
  47. package/dist/simulator/ios.d.ts.map +1 -1
  48. package/dist/simulator/ios.js +70 -25
  49. package/dist/simulator/ios.js.map +1 -1
  50. package/dist/term/cast.d.ts +24 -0
  51. package/dist/term/cast.d.ts.map +1 -0
  52. package/dist/term/cast.js +24 -0
  53. package/dist/term/cast.js.map +1 -0
  54. package/dist/term/player.d.ts.map +1 -1
  55. package/dist/term/player.js +36 -14
  56. package/dist/term/player.js.map +1 -1
  57. package/dist/term/recorder.d.ts +7 -0
  58. package/dist/term/recorder.d.ts.map +1 -1
  59. package/dist/term/recorder.js +35 -1
  60. package/dist/term/recorder.js.map +1 -1
  61. package/dist/types.d.ts +2 -1
  62. package/dist/types.d.ts.map +1 -1
  63. package/dist/types.js.map +1 -1
  64. package/package.json +1 -1
  65. package/dist/term/ansi.d.ts +0 -37
  66. package/dist/term/ansi.d.ts.map +0 -1
  67. package/dist/term/ansi.js +0 -205
  68. package/dist/term/ansi.js.map +0 -1
@@ -298,7 +298,7 @@ export class ConsoleCapture {
298
298
  if (event instanceof ErrorEvent)
299
299
  return;
300
300
  const target = event.target;
301
- if (!target || !target.tagName)
301
+ if (!target?.tagName)
302
302
  return;
303
303
  // Skip devbar's own resources to avoid feedback loops
304
304
  const url = target.src || target.href || '';
@@ -1 +1 @@
1
- {"version":3,"file":"consoleCapture.js","sourceRoot":"","sources":["../../src/browser/consoleCapture.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,+CAA+C;AAC/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AA6CpC,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAY;IACpC,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC3E,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE,CAAC;QACnF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;gBACvC,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;oBACzB,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;gBACvC,CAAC;gBACD,OAAO,GAAG,CAAC;YACb,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAe;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,OAAO,cAAc;IACjB,IAAI,GAAiB,EAAE,CAAC;IACxB,UAAU,GAAG,CAAC,CAAC;IACf,YAAY,GAAG,CAAC,CAAC;IACjB,SAAS,GAAG,CAAC,CAAC;IACd,eAAe,GAAkC,IAAI,CAAC;IACtD,SAAS,GAAG,KAAK,CAAC;IAClB,OAAO,CAAS;IAChB,WAAW,CAAU;IACrB,KAAK,CAA6B;IAClC,SAAS,GAAwB,EAAE,CAAC;IAE5C,YAAY,SAA+B,EAAE;QAC3C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC;QAC9C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,QAAQ;QACd,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,IAAI,GAAG,CAAC,KAAK,KAAK,OAAO;oBAAE,IAAI,CAAC,UAAU,EAAE,CAAC;qBACxC,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM;oBAAE,IAAI,CAAC,YAAY,EAAE,CAAC;qBAC9C,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAC1C,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAE3B,IAAI,CAAC,eAAe,GAAG;YACrB,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;YAC9B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;YAClC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAChC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;SACjC,CAAC;QAEF,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,IAAe,EAAE,EAAE;YACpD,MAAM,GAAG,GAAe;gBACtB,KAAK;gBACL,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC;gBACzB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEpB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,KAAK,KAAK,OAAO;oBAAE,IAAI,CAAC,UAAU,EAAE,CAAC;qBACpC,IAAI,KAAK,KAAK,MAAM;oBAAE,IAAI,CAAC,YAAY,EAAE,CAAC;qBAC1C,IAAI,KAAK,KAAK,MAAM;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9C,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YAEhB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC;QAEF,mDAAmD;QACnD,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;QACzD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAgB,CAAC,KAAK,CAAC,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;gBACtC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACxB,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;YACpB,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO;QAErD,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;QACvC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAC3C,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QACzC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAEzC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,MAAc;QAC5B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CACrB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,WAAW,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CACtF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAA2B;QACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,QAA2B;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAEO,eAAe;QACrB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/D,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;YACpB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAkB;QAC3B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,GAAG,CAAC,KAAK,KAAK,OAAO;oBAAE,IAAI,CAAC,UAAU,EAAE,CAAC;qBACxC,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM;oBAAE,IAAI,CAAC,YAAY,EAAE,CAAC;qBAC9C,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;YAClD,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,oBAAoB;YAAE,OAAO;QAE1E,MAAM,SAAS,GAAiB,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxE,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,SAAS,EACP,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ;gBAC/B,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;gBACnC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;SAC5B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3B,MAAM,CAAC,oBAAoB,GAAG,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAe;QACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,GAAG,CAAC,KAAK,KAAK,OAAO;gBAAE,IAAI,CAAC,UAAU,EAAE,CAAC;iBACxC,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM;gBAAE,IAAI,CAAC,YAAY,EAAE,CAAC;iBAC9C,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,kBAAkB;QAChB,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;QAEnD,yEAAyE;QACzE,MAAM,YAAY,GAAG,CAAC,KAAY,EAAE,EAAE;YACpC,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC;gBAAE,OAAO;YAE3C,IAAI,CAAC,MAAM,CAAC;gBACV,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,aAAa,KAAK,CAAC,OAAO,EAAE;gBACrC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,MAAM,EAAE,KAAK,CAAC,QAAQ;gBACtB,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK;aAC1B,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,wEAAwE;QACxE,MAAM,gBAAgB,GAAG,CAAC,KAA4B,EAAE,EAAE;YACxD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC;gBACV,KAAK,EAAE,OAAO;gBACd,OAAO,EACL,MAAM,YAAY,KAAK;oBACrB,CAAC,CAAC,wBAAwB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,EAAE;oBAC1D,CAAC,CAAC,wBAAwB,MAAM,CAAC,MAAM,CAAC,EAAE;gBAC9C,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,KAAK,EAAE,MAAM,EAAE,KAAK;aACrB,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,wEAAwE;QACxE,sEAAsE;QACtE,uEAAuE;QACvE,MAAM,oBAAoB,GAAG,CAAC,KAAY,EAAE,EAAE;YAC5C,oEAAoE;YACpE,IAAI,KAAK,YAAY,UAAU;gBAAE,OAAO;YAExC,MAAM,MAAM,GAAG,KAAK,CAAC,MAIpB,CAAC;YACF,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YAEvC,sDAAsD;YACtD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,OAAO;YAExE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC7C,uCAAuC;YACvC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,OAAO;YAErF,IAAI,CAAC,MAAM,CAAC;gBACV,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,4BAA4B,GAAG,EAAE;gBAC1C,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,MAAM,EAAE,GAAG;aACZ,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,wEAAwE;QACxE,MAAM,UAAU,GAAG,CAAC,KAAmC,EAAE,EAAE;YACzD,IAAI,CAAC,MAAM,CAAC;gBACV,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,mBAAmB,KAAK,CAAC,iBAAiB,aAAa,KAAK,CAAC,UAAU,IAAI,UAAU,EAAE;gBAChG,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,MAAM,EAAE,KAAK,CAAC,UAAU,IAAI,SAAS;aACtC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC/C,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;QAChE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB;QAC9E,MAAM,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,UAAU,CAAC,CAAC;QAE/D,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAClD,MAAM,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;YACnE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC;YAChE,MAAM,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,UAAU,CAAC,CAAC;QACpE,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"consoleCapture.js","sourceRoot":"","sources":["../../src/browser/consoleCapture.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,7 @@ export declare const EARLY_CONSOLE_CAPTURE_SCRIPT = "\n(function() {\n if (wind
21
21
  declare global {
22
22
  interface Window {
23
23
  __sweetlinkEarlyLogs?: Array<{
24
- level: string;
24
+ level: 'log' | 'error' | 'warn' | 'info' | 'debug' | 'trace';
25
25
  message: string;
26
26
  timestamp: string;
27
27
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"earlyConsoleCapture.d.ts","sourceRoot":"","sources":["../../src/browser/earlyConsoleCapture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,4BAA4B,21DAsDxC,CAAC;AAEF;;;GAGG;AACH,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,oBAAoB,CAAC,EAAE,KAAK,CAAC;YAC3B,KAAK,EAAE,MAAM,CAAC;YACd,OAAO,EAAE,MAAM,CAAC;YAChB,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC,CAAC;KACJ;CACF"}
1
+ {"version":3,"file":"earlyConsoleCapture.d.ts","sourceRoot":"","sources":["../../src/browser/earlyConsoleCapture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,4BAA4B,21DAsDxC,CAAC;AAEF;;;GAGG;AACH,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,oBAAoB,CAAC,EAAE,KAAK,CAAC;YAC3B,KAAK,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;YAC7D,OAAO,EAAE,MAAM,CAAC;YAChB,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC,CAAC;KACJ;CACF"}
@@ -5,6 +5,7 @@
5
5
  * Command-line interface for interacting with the Sweetlink WebSocket server.
6
6
  * Allows taking screenshots, querying DOM, getting console logs, and executing JavaScript.
7
7
  */
8
+ import * as childProcess from 'child_process';
8
9
  import * as fs from 'fs';
9
10
  import * as path from 'path';
10
11
  import { WebSocket } from 'ws';
@@ -90,6 +91,75 @@ function ensureDir(filePath) {
90
91
  fs.mkdirSync(dir, { recursive: true });
91
92
  }
92
93
  }
94
+ /**
95
+ * Find the most recent recording-session directory.
96
+ * Returns the absolute path or null if no sessions exist.
97
+ */
98
+ function findLatestSessionDir(baseDir) {
99
+ if (!fs.existsSync(baseDir))
100
+ return null;
101
+ const sessions = fs
102
+ .readdirSync(baseDir)
103
+ .filter((f) => f.startsWith('session-'))
104
+ .sort()
105
+ .reverse();
106
+ if (sessions.length === 0)
107
+ return null;
108
+ return path.join(baseDir, sessions[0]);
109
+ }
110
+ /**
111
+ * Open a file in the default GUI handler. Cross-platform helper used by
112
+ * `record stop` (auto-open viewer) and `sessions open` (browse index).
113
+ * Failure is best-effort — the path is already on disk, the user can open
114
+ * it manually if no GUI is available.
115
+ */
116
+ function openInBrowser(filePath) {
117
+ let cmd;
118
+ let args;
119
+ switch (process.platform) {
120
+ case 'darwin':
121
+ cmd = 'open';
122
+ args = [filePath];
123
+ break;
124
+ case 'win32':
125
+ cmd = 'cmd';
126
+ args = ['/c', 'start', '', filePath];
127
+ break;
128
+ default:
129
+ cmd = 'xdg-open';
130
+ args = [filePath];
131
+ break;
132
+ }
133
+ try {
134
+ childProcess.spawn(cmd, args, { detached: true, stdio: 'ignore' }).unref();
135
+ }
136
+ catch {
137
+ /* best effort — user can open manually */
138
+ }
139
+ }
140
+ /**
141
+ * Reject --output paths that escape the project root.
142
+ *
143
+ * Any path is fine when it resolves inside the project (relative or absolute);
144
+ * paths that resolve outside (e.g. `--output ../../../etc/passwd`,
145
+ * `--output /Users/victim/.zshrc`, or batch JSON `output: "/etc/cron.d/x"`)
146
+ * are blocked unless `SWEETLINK_ALLOW_OUTSIDE_OUTPUT=1` is set. Without this
147
+ * gate the batch JSON-stdin mode lets a less-trusted upstream agent write
148
+ * arbitrary content to arbitrary paths the user can write.
149
+ */
150
+ function assertOutputInRoot(outputPath) {
151
+ const projectRoot = path.resolve(findProjectRoot());
152
+ const resolved = path.resolve(outputPath);
153
+ if (process.env.SWEETLINK_ALLOW_OUTSIDE_OUTPUT === '1')
154
+ return resolved;
155
+ if (resolved !== projectRoot && !resolved.startsWith(`${projectRoot}${path.sep}`)) {
156
+ throw new Error(`Refusing to write outside project root.\n` +
157
+ ` output: ${resolved}\n` +
158
+ ` project: ${projectRoot}\n` +
159
+ `Pass a path inside the project, or set SWEETLINK_ALLOW_OUTSIDE_OUTPUT=1 to override.`);
160
+ }
161
+ return resolved;
162
+ }
93
163
  /**
94
164
  * Get the default screenshot output path (relative to project root)
95
165
  */
@@ -1518,26 +1588,33 @@ async function getVitals(options) {
1518
1588
  console.log(`\n[Sweetlink] Web Vitals`);
1519
1589
  console.log(` URL: ${vitalsData.url}`);
1520
1590
  console.log(` ${summary}`);
1521
- // Detailed breakdown
1591
+ // Detailed breakdown — pick a green/yellow/red color per Web Vitals threshold
1592
+ const ANSI_GREEN = '\x1b[32m';
1593
+ const ANSI_YELLOW = '\x1b[33m';
1594
+ const ANSI_RED = '\x1b[31m';
1595
+ const ANSI_RESET = '\x1b[0m';
1596
+ const thresholdColor = (value, good, ok) => {
1597
+ if (value <= good)
1598
+ return ANSI_GREEN;
1599
+ if (value <= ok)
1600
+ return ANSI_YELLOW;
1601
+ return ANSI_RED;
1602
+ };
1522
1603
  if (vitalsData.fcp !== null) {
1523
1604
  const fcp = vitalsData.fcp;
1524
- const color = fcp <= 1800 ? '\x1b[32m' : fcp <= 3000 ? '\x1b[33m' : '\x1b[31m';
1525
- console.log(` FCP: ${color}${fcp}ms\x1b[0m`);
1605
+ console.log(` FCP: ${thresholdColor(fcp, 1800, 3000)}${fcp}ms${ANSI_RESET}`);
1526
1606
  }
1527
1607
  if (vitalsData.lcp !== null) {
1528
1608
  const lcp = vitalsData.lcp;
1529
- const color = lcp <= 2500 ? '\x1b[32m' : lcp <= 4000 ? '\x1b[33m' : '\x1b[31m';
1530
- console.log(` LCP: ${color}${lcp}ms\x1b[0m`);
1609
+ console.log(` LCP: ${thresholdColor(lcp, 2500, 4000)}${lcp}ms${ANSI_RESET}`);
1531
1610
  }
1532
1611
  if (vitalsData.cls !== null) {
1533
1612
  const cls = vitalsData.cls;
1534
- const color = cls <= 0.1 ? '\x1b[32m' : cls <= 0.25 ? '\x1b[33m' : '\x1b[31m';
1535
- console.log(` CLS: ${color}${cls}\x1b[0m`);
1613
+ console.log(` CLS: ${thresholdColor(cls, 0.1, 0.25)}${cls}${ANSI_RESET}`);
1536
1614
  }
1537
1615
  if (vitalsData.inp !== null) {
1538
1616
  const inp = vitalsData.inp;
1539
- const color = inp <= 200 ? '\x1b[32m' : inp <= 500 ? '\x1b[33m' : '\x1b[31m';
1540
- console.log(` INP: ${color}${inp}ms\x1b[0m`);
1617
+ console.log(` INP: ${thresholdColor(inp, 200, 500)}${inp}ms${ANSI_RESET}`);
1541
1618
  }
1542
1619
  if (vitalsData.pageSize !== null) {
1543
1620
  const sizeKB = Math.round(vitalsData.pageSize / 1024);
@@ -2171,6 +2248,30 @@ async function runBatchFromStdin() {
2171
2248
  if (!allOk)
2172
2249
  process.exit(1);
2173
2250
  }
2251
+ /**
2252
+ * Resolve the on-disk path for a capture artifact (term .cast, sim .mp4).
2253
+ * Honours --app/--run for the app-scoped hierarchy (delegates to runSlot)
2254
+ * and the historical flat layout when --app is absent. Used by both the
2255
+ * batch JSON-stdin path and the direct CLI handlers so they cannot drift.
2256
+ */
2257
+ async function resolveCapturePath(opts) {
2258
+ if (opts.output)
2259
+ return assertOutputInRoot(opts.output);
2260
+ const labelSlug = (opts.label ?? 'batch')
2261
+ .replace(/[^a-z0-9]/gi, '-')
2262
+ .toLowerCase()
2263
+ .slice(0, 40);
2264
+ const stamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
2265
+ const filename = `${labelSlug}-${stamp}.${opts.ext}`;
2266
+ const { runSlot } = await import('../runs.js');
2267
+ const dir = runSlot({
2268
+ baseDir: findProjectRoot(),
2269
+ app: opts.app,
2270
+ run: opts.run,
2271
+ kind: opts.kind,
2272
+ });
2273
+ return assertOutputInRoot(path.join(dir, filename));
2274
+ }
2174
2275
  async function runOneBatchCapture(cap) {
2175
2276
  const mode = cap.mode;
2176
2277
  if (!mode)
@@ -2180,13 +2281,14 @@ async function runOneBatchCapture(cap) {
2180
2281
  if (!command)
2181
2282
  throw new Error('term capture missing "command".');
2182
2283
  const label = cap.label ?? 'batch';
2183
- const labelSlug = label
2184
- .replace(/[^a-z0-9]/gi, '-')
2185
- .toLowerCase()
2186
- .slice(0, 40);
2187
- const stamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
2188
- const output = cap.output ??
2189
- path.join(findProjectRoot(), '.sweetlink', 'term', `${labelSlug}-${stamp}.cast`);
2284
+ const output = await resolveCapturePath({
2285
+ kind: 'term',
2286
+ label,
2287
+ output: cap.output,
2288
+ app: cap.app,
2289
+ run: cap.run,
2290
+ ext: 'cast',
2291
+ });
2190
2292
  ensureDir(output);
2191
2293
  const { captureTerminal } = await import('../term/recorder.js');
2192
2294
  const { generatePlayer } = await import('../term/player.js');
@@ -2197,6 +2299,7 @@ async function runOneBatchCapture(cap) {
2197
2299
  shell: cap.shell,
2198
2300
  cols: typeof cap.cols === 'number' ? cap.cols : undefined,
2199
2301
  rows: typeof cap.rows === 'number' ? cap.rows : undefined,
2302
+ inheritEnv: cap.inheritEnv === true,
2200
2303
  });
2201
2304
  const playerPath = await generatePlayer({ castPath: output });
2202
2305
  return {
@@ -2212,13 +2315,14 @@ async function runOneBatchCapture(cap) {
2212
2315
  if (!command)
2213
2316
  throw new Error(`${mode} capture missing "command".`);
2214
2317
  const label = cap.label ?? 'batch';
2215
- const labelSlug = label
2216
- .replace(/[^a-z0-9]/gi, '-')
2217
- .toLowerCase()
2218
- .slice(0, 40);
2219
- const stamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
2220
- const output = cap.output ??
2221
- path.join(findProjectRoot(), '.sweetlink', 'sim', `${labelSlug}-${stamp}.mp4`);
2318
+ const output = await resolveCapturePath({
2319
+ kind: 'sim',
2320
+ label,
2321
+ output: cap.output,
2322
+ app: cap.app,
2323
+ run: cap.run,
2324
+ ext: 'mp4',
2325
+ });
2222
2326
  ensureDir(output);
2223
2327
  const device = cap.device;
2224
2328
  if (mode === 'sim-ios') {
@@ -2246,7 +2350,7 @@ async function runOneBatchCapture(cap) {
2246
2350
  });
2247
2351
  const data = resp.data;
2248
2352
  if (cap.output) {
2249
- const outputPath = cap.output;
2353
+ const outputPath = assertOutputInRoot(cap.output);
2250
2354
  ensureDir(outputPath);
2251
2355
  fs.writeFileSync(outputPath, Buffer.from(data.screenshot, 'base64'));
2252
2356
  return { path: outputPath, width: data.width, height: data.height };
@@ -2721,17 +2825,11 @@ async function handleStatusCommand() {
2721
2825
  process.exit(1);
2722
2826
  }
2723
2827
  const sessionDirArg = getArg('--session') ?? '.sweetlink';
2724
- // Find latest session manifest
2725
- const sessionFiles = fs
2726
- .readdirSync(sessionDirArg)
2727
- .filter((f) => f.startsWith('session-'))
2728
- .sort()
2729
- .reverse();
2730
- if (sessionFiles.length === 0) {
2828
+ const latestSession = findLatestSessionDir(sessionDirArg);
2829
+ if (!latestSession) {
2731
2830
  console.error('[Sweetlink] No session found. Run `record start` and `record stop` first.');
2732
2831
  process.exit(1);
2733
2832
  }
2734
- const latestSession = path.join(sessionDirArg, sessionFiles[0]);
2735
2833
  const manifestPath = path.join(latestSession, 'sweetlink-session.json');
2736
2834
  if (!fs.existsSync(manifestPath)) {
2737
2835
  console.error(`[Sweetlink] No manifest found at ${manifestPath}`);
@@ -2782,20 +2880,7 @@ async function handleStatusCommand() {
2782
2880
  // Auto-open the viewer (cross-platform; --no-open to suppress)
2783
2881
  if (data.viewerPath && !hasFlag('--no-open')) {
2784
2882
  console.log(` Viewer: ${data.viewerPath}`);
2785
- const { execFile } = await import('child_process');
2786
- // `start` on Windows is a cmd builtin, not an exe — must invoke via cmd.
2787
- const cmd = process.platform === 'darwin'
2788
- ? 'open'
2789
- : process.platform === 'win32'
2790
- ? 'cmd'
2791
- : 'xdg-open';
2792
- const args = process.platform === 'win32'
2793
- ? ['/c', 'start', '', data.viewerPath]
2794
- : [data.viewerPath];
2795
- execFile(cmd, args, (err) => {
2796
- if (err)
2797
- console.error(' Could not open viewer:', err.message);
2798
- });
2883
+ openInBrowser(data.viewerPath);
2799
2884
  console.log(` Opened in browser.`);
2800
2885
  }
2801
2886
  else if (data.viewerPath) {
@@ -2915,21 +3000,15 @@ async function handleStatusCommand() {
2915
3000
  }
2916
3001
  case 'report': {
2917
3002
  const sessionDirArg = getArg('--session') ?? '.sweetlink';
2918
- // Find latest session directory
2919
3003
  if (!fs.existsSync(sessionDirArg)) {
2920
3004
  console.error(`[Sweetlink] Session directory not found: ${sessionDirArg}`);
2921
3005
  process.exit(1);
2922
3006
  }
2923
- const reportSessions = fs
2924
- .readdirSync(sessionDirArg)
2925
- .filter((f) => f.startsWith('session-'))
2926
- .sort()
2927
- .reverse();
2928
- if (reportSessions.length === 0) {
3007
+ const reportSessionDir = findLatestSessionDir(sessionDirArg);
3008
+ if (!reportSessionDir) {
2929
3009
  console.error('[Sweetlink] No session found. Run `record start` and `record stop` first.');
2930
3010
  process.exit(1);
2931
3011
  }
2932
- const reportSessionDir = path.join(sessionDirArg, reportSessions[0]);
2933
3012
  if (hasFlag('--clipboard')) {
2934
3013
  // Copy SUMMARY.md to clipboard
2935
3014
  const summaryPath = path.join(reportSessionDir, 'SUMMARY.md');
@@ -2949,7 +3028,7 @@ async function handleStatusCommand() {
2949
3028
  console.error(`[Sweetlink] Failed to copy to clipboard (${clipCmd}):`, err instanceof Error ? err.message : err);
2950
3029
  process.exit(1);
2951
3030
  }
2952
- result = { mode: 'clipboard', session: reportSessions[0] };
3031
+ result = { mode: 'clipboard', session: path.basename(reportSessionDir) };
2953
3032
  }
2954
3033
  else if (hasFlag('--serve')) {
2955
3034
  // Serve viewer.html on a random port
@@ -3033,7 +3112,7 @@ async function handleStatusCommand() {
3033
3112
  }
3034
3113
  const summaryContent = fs.readFileSync(summaryPath, 'utf-8');
3035
3114
  process.stdout.write(summaryContent);
3036
- result = { mode: 'stdout', session: reportSessions[0] };
3115
+ result = { mode: 'stdout', session: path.basename(reportSessionDir) };
3037
3116
  }
3038
3117
  break;
3039
3118
  }
@@ -3295,14 +3374,7 @@ async function handleStatusCommand() {
3295
3374
  else if (sub === 'open') {
3296
3375
  // Open the index.html in the browser
3297
3376
  if (data.indexPath) {
3298
- const { execFile } = await import('child_process');
3299
- const cmd = process.platform === 'darwin'
3300
- ? 'open'
3301
- : process.platform === 'win32'
3302
- ? 'cmd'
3303
- : 'xdg-open';
3304
- const cmdArgs = process.platform === 'win32' ? ['/c', 'start', '', data.indexPath] : [data.indexPath];
3305
- execFile(cmd, cmdArgs, () => { });
3377
+ openInBrowser(data.indexPath);
3306
3378
  console.log(`[Sweetlink] Opened ${data.indexPath}`);
3307
3379
  }
3308
3380
  result = { indexPath: data.indexPath };