jumpy-lion 0.1.6-beta.9 → 1.0.0-beta.4

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 (450) hide show
  1. package/README.md +1 -607
  2. package/browser/fonts/macos-bundle/41-macos-remaining.conf +157 -0
  3. package/browser/fonts/macos-bundle/README.md +24 -0
  4. package/browser/fonts/macos-bundle/build-metric-fonts.py +1010 -0
  5. package/browser/fonts/macos-bundle/generated/AmericanTypewriter-Bold.ttf +0 -0
  6. package/browser/fonts/macos-bundle/generated/AmericanTypewriter-Regular.ttf +0 -0
  7. package/browser/fonts/macos-bundle/generated/AndaleMono-Bold.ttf +0 -0
  8. package/browser/fonts/macos-bundle/generated/AndaleMono-BoldItalic.ttf +0 -0
  9. package/browser/fonts/macos-bundle/generated/AndaleMono-Italic.ttf +0 -0
  10. package/browser/fonts/macos-bundle/generated/AndaleMono-Regular.ttf +0 -0
  11. package/browser/fonts/macos-bundle/generated/AppleChancery-Bold.ttf +0 -0
  12. package/browser/fonts/macos-bundle/generated/AppleChancery-BoldItalic.ttf +0 -0
  13. package/browser/fonts/macos-bundle/generated/AppleChancery-Italic.ttf +0 -0
  14. package/browser/fonts/macos-bundle/generated/AppleChancery-Regular.ttf +0 -0
  15. package/browser/fonts/macos-bundle/generated/Arial-Bold.ttf +0 -0
  16. package/browser/fonts/macos-bundle/generated/Arial-BoldItalic.ttf +0 -0
  17. package/browser/fonts/macos-bundle/generated/Arial-Italic.ttf +0 -0
  18. package/browser/fonts/macos-bundle/generated/Arial-Regular.ttf +0 -0
  19. package/browser/fonts/macos-bundle/generated/ArialBlack-Bold.ttf +0 -0
  20. package/browser/fonts/macos-bundle/generated/ArialBlack-BoldItalic.ttf +0 -0
  21. package/browser/fonts/macos-bundle/generated/ArialBlack-Italic.ttf +0 -0
  22. package/browser/fonts/macos-bundle/generated/ArialBlack-Regular.ttf +0 -0
  23. package/browser/fonts/macos-bundle/generated/ArialNarrow-Bold.ttf +0 -0
  24. package/browser/fonts/macos-bundle/generated/ArialNarrow-BoldItalic.ttf +0 -0
  25. package/browser/fonts/macos-bundle/generated/ArialNarrow-Italic.ttf +0 -0
  26. package/browser/fonts/macos-bundle/generated/ArialNarrow-Regular.ttf +0 -0
  27. package/browser/fonts/macos-bundle/generated/Avenir-Bold.ttf +0 -0
  28. package/browser/fonts/macos-bundle/generated/Avenir-BoldItalic.ttf +0 -0
  29. package/browser/fonts/macos-bundle/generated/Avenir-Italic.ttf +0 -0
  30. package/browser/fonts/macos-bundle/generated/Avenir-Regular.ttf +0 -0
  31. package/browser/fonts/macos-bundle/generated/AvenirNext-Bold.ttf +0 -0
  32. package/browser/fonts/macos-bundle/generated/AvenirNext-BoldItalic.ttf +0 -0
  33. package/browser/fonts/macos-bundle/generated/AvenirNext-Italic.ttf +0 -0
  34. package/browser/fonts/macos-bundle/generated/AvenirNext-Regular.ttf +0 -0
  35. package/browser/fonts/macos-bundle/generated/AvenirNextCondensed-Bold.ttf +0 -0
  36. package/browser/fonts/macos-bundle/generated/AvenirNextCondensed-BoldItalic.ttf +0 -0
  37. package/browser/fonts/macos-bundle/generated/AvenirNextCondensed-Italic.ttf +0 -0
  38. package/browser/fonts/macos-bundle/generated/AvenirNextCondensed-Regular.ttf +0 -0
  39. package/browser/fonts/macos-bundle/generated/Baskerville-Bold.ttf +0 -0
  40. package/browser/fonts/macos-bundle/generated/Baskerville-BoldItalic.ttf +0 -0
  41. package/browser/fonts/macos-bundle/generated/Baskerville-Italic.ttf +0 -0
  42. package/browser/fonts/macos-bundle/generated/Baskerville-Regular.ttf +0 -0
  43. package/browser/fonts/macos-bundle/generated/BigCaslon-Bold.ttf +0 -0
  44. package/browser/fonts/macos-bundle/generated/BigCaslon-BoldItalic.ttf +0 -0
  45. package/browser/fonts/macos-bundle/generated/BigCaslon-Italic.ttf +0 -0
  46. package/browser/fonts/macos-bundle/generated/BigCaslon-Regular.ttf +0 -0
  47. package/browser/fonts/macos-bundle/generated/BlinkMacSystemFont-Bold.ttf +0 -0
  48. package/browser/fonts/macos-bundle/generated/BlinkMacSystemFont-BoldItalic.ttf +0 -0
  49. package/browser/fonts/macos-bundle/generated/BlinkMacSystemFont-Italic.ttf +0 -0
  50. package/browser/fonts/macos-bundle/generated/BlinkMacSystemFont-Regular.ttf +0 -0
  51. package/browser/fonts/macos-bundle/generated/Bodoni72-Bold.ttf +0 -0
  52. package/browser/fonts/macos-bundle/generated/Bodoni72-BoldItalic.ttf +0 -0
  53. package/browser/fonts/macos-bundle/generated/Bodoni72-Italic.ttf +0 -0
  54. package/browser/fonts/macos-bundle/generated/Bodoni72-Regular.ttf +0 -0
  55. package/browser/fonts/macos-bundle/generated/Bodoni72Oldstyle-Bold.ttf +0 -0
  56. package/browser/fonts/macos-bundle/generated/Bodoni72Oldstyle-BoldItalic.ttf +0 -0
  57. package/browser/fonts/macos-bundle/generated/Bodoni72Oldstyle-Italic.ttf +0 -0
  58. package/browser/fonts/macos-bundle/generated/Bodoni72Oldstyle-Regular.ttf +0 -0
  59. package/browser/fonts/macos-bundle/generated/Bodoni72Smallcaps-Bold.ttf +0 -0
  60. package/browser/fonts/macos-bundle/generated/Bodoni72Smallcaps-BoldItalic.ttf +0 -0
  61. package/browser/fonts/macos-bundle/generated/Bodoni72Smallcaps-Italic.ttf +0 -0
  62. package/browser/fonts/macos-bundle/generated/Bodoni72Smallcaps-Regular.ttf +0 -0
  63. package/browser/fonts/macos-bundle/generated/BradleyHand-Regular.ttf +0 -0
  64. package/browser/fonts/macos-bundle/generated/BrushScriptMT-Regular.ttf +0 -0
  65. package/browser/fonts/macos-bundle/generated/Chalkboard-Bold.ttf +0 -0
  66. package/browser/fonts/macos-bundle/generated/Chalkboard-BoldItalic.ttf +0 -0
  67. package/browser/fonts/macos-bundle/generated/Chalkboard-Italic.ttf +0 -0
  68. package/browser/fonts/macos-bundle/generated/Chalkboard-Regular.ttf +0 -0
  69. package/browser/fonts/macos-bundle/generated/ChalkboardSE-Bold.ttf +0 -0
  70. package/browser/fonts/macos-bundle/generated/ChalkboardSE-BoldItalic.ttf +0 -0
  71. package/browser/fonts/macos-bundle/generated/ChalkboardSE-Italic.ttf +0 -0
  72. package/browser/fonts/macos-bundle/generated/ChalkboardSE-Regular.ttf +0 -0
  73. package/browser/fonts/macos-bundle/generated/Chalkduster-Bold.ttf +0 -0
  74. package/browser/fonts/macos-bundle/generated/Chalkduster-BoldItalic.ttf +0 -0
  75. package/browser/fonts/macos-bundle/generated/Chalkduster-Italic.ttf +0 -0
  76. package/browser/fonts/macos-bundle/generated/Chalkduster-Regular.ttf +0 -0
  77. package/browser/fonts/macos-bundle/generated/Charter-Bold.ttf +0 -0
  78. package/browser/fonts/macos-bundle/generated/Charter-BoldItalic.ttf +0 -0
  79. package/browser/fonts/macos-bundle/generated/Charter-Italic.ttf +0 -0
  80. package/browser/fonts/macos-bundle/generated/Charter-Regular.ttf +0 -0
  81. package/browser/fonts/macos-bundle/generated/Cochin-Bold.ttf +0 -0
  82. package/browser/fonts/macos-bundle/generated/Cochin-BoldItalic.ttf +0 -0
  83. package/browser/fonts/macos-bundle/generated/Cochin-Italic.ttf +0 -0
  84. package/browser/fonts/macos-bundle/generated/Cochin-Regular.ttf +0 -0
  85. package/browser/fonts/macos-bundle/generated/ComicSansMS-Bold.ttf +0 -0
  86. package/browser/fonts/macos-bundle/generated/ComicSansMS-BoldItalic.ttf +0 -0
  87. package/browser/fonts/macos-bundle/generated/ComicSansMS-Italic.ttf +0 -0
  88. package/browser/fonts/macos-bundle/generated/ComicSansMS-Regular.ttf +0 -0
  89. package/browser/fonts/macos-bundle/generated/Copperplate-Bold.ttf +0 -0
  90. package/browser/fonts/macos-bundle/generated/Copperplate-Regular.ttf +0 -0
  91. package/browser/fonts/macos-bundle/generated/Courier-Bold.ttf +0 -0
  92. package/browser/fonts/macos-bundle/generated/Courier-BoldItalic.ttf +0 -0
  93. package/browser/fonts/macos-bundle/generated/Courier-Italic.ttf +0 -0
  94. package/browser/fonts/macos-bundle/generated/Courier-Regular.ttf +0 -0
  95. package/browser/fonts/macos-bundle/generated/CourierNew-Regular.ttf +0 -0
  96. package/browser/fonts/macos-bundle/generated/Didot-Bold.ttf +0 -0
  97. package/browser/fonts/macos-bundle/generated/Didot-BoldItalic.ttf +0 -0
  98. package/browser/fonts/macos-bundle/generated/Didot-Italic.ttf +0 -0
  99. package/browser/fonts/macos-bundle/generated/Didot-Regular.ttf +0 -0
  100. package/browser/fonts/macos-bundle/generated/Futura-Bold.ttf +0 -0
  101. package/browser/fonts/macos-bundle/generated/Futura-BoldItalic.ttf +0 -0
  102. package/browser/fonts/macos-bundle/generated/Futura-Italic.ttf +0 -0
  103. package/browser/fonts/macos-bundle/generated/Futura-Regular.ttf +0 -0
  104. package/browser/fonts/macos-bundle/generated/Geneva-Regular.ttf +0 -0
  105. package/browser/fonts/macos-bundle/generated/Georgia-Bold.ttf +0 -0
  106. package/browser/fonts/macos-bundle/generated/Georgia-BoldItalic.ttf +0 -0
  107. package/browser/fonts/macos-bundle/generated/Georgia-Italic.ttf +0 -0
  108. package/browser/fonts/macos-bundle/generated/Georgia-Regular.ttf +0 -0
  109. package/browser/fonts/macos-bundle/generated/GillSans-Bold.ttf +0 -0
  110. package/browser/fonts/macos-bundle/generated/GillSans-BoldItalic.ttf +0 -0
  111. package/browser/fonts/macos-bundle/generated/GillSans-Italic.ttf +0 -0
  112. package/browser/fonts/macos-bundle/generated/GillSans-Regular.ttf +0 -0
  113. package/browser/fonts/macos-bundle/generated/Helvetica-Bold.ttf +0 -0
  114. package/browser/fonts/macos-bundle/generated/Helvetica-BoldItalic.ttf +0 -0
  115. package/browser/fonts/macos-bundle/generated/Helvetica-Italic.ttf +0 -0
  116. package/browser/fonts/macos-bundle/generated/Helvetica-Regular.ttf +0 -0
  117. package/browser/fonts/macos-bundle/generated/HelveticaNeue-Bold.ttf +0 -0
  118. package/browser/fonts/macos-bundle/generated/HelveticaNeue-BoldItalic.ttf +0 -0
  119. package/browser/fonts/macos-bundle/generated/HelveticaNeue-Italic.ttf +0 -0
  120. package/browser/fonts/macos-bundle/generated/HelveticaNeue-Regular.ttf +0 -0
  121. package/browser/fonts/macos-bundle/generated/Herculanum-Bold.ttf +0 -0
  122. package/browser/fonts/macos-bundle/generated/Herculanum-BoldItalic.ttf +0 -0
  123. package/browser/fonts/macos-bundle/generated/Herculanum-Italic.ttf +0 -0
  124. package/browser/fonts/macos-bundle/generated/Herculanum-Regular.ttf +0 -0
  125. package/browser/fonts/macos-bundle/generated/HoeflerText-Bold.ttf +0 -0
  126. package/browser/fonts/macos-bundle/generated/HoeflerText-BoldItalic.ttf +0 -0
  127. package/browser/fonts/macos-bundle/generated/HoeflerText-Italic.ttf +0 -0
  128. package/browser/fonts/macos-bundle/generated/HoeflerText-Regular.ttf +0 -0
  129. package/browser/fonts/macos-bundle/generated/Impact-Bold.ttf +0 -0
  130. package/browser/fonts/macos-bundle/generated/Impact-BoldItalic.ttf +0 -0
  131. package/browser/fonts/macos-bundle/generated/Impact-Italic.ttf +0 -0
  132. package/browser/fonts/macos-bundle/generated/Impact-Regular.ttf +0 -0
  133. package/browser/fonts/macos-bundle/generated/LucidaGrande-Bold.ttf +0 -0
  134. package/browser/fonts/macos-bundle/generated/LucidaGrande-Regular.ttf +0 -0
  135. package/browser/fonts/macos-bundle/generated/MarkerFelt-Bold.ttf +0 -0
  136. package/browser/fonts/macos-bundle/generated/MarkerFelt-BoldItalic.ttf +0 -0
  137. package/browser/fonts/macos-bundle/generated/MarkerFelt-Italic.ttf +0 -0
  138. package/browser/fonts/macos-bundle/generated/MarkerFelt-Regular.ttf +0 -0
  139. package/browser/fonts/macos-bundle/generated/Menlo-Regular.ttf +0 -0
  140. package/browser/fonts/macos-bundle/generated/Monaco-Bold.ttf +0 -0
  141. package/browser/fonts/macos-bundle/generated/Monaco-BoldItalic.ttf +0 -0
  142. package/browser/fonts/macos-bundle/generated/Monaco-Italic.ttf +0 -0
  143. package/browser/fonts/macos-bundle/generated/Monaco-Regular.ttf +0 -0
  144. package/browser/fonts/macos-bundle/generated/Noteworthy-Bold.ttf +0 -0
  145. package/browser/fonts/macos-bundle/generated/Noteworthy-Regular.ttf +0 -0
  146. package/browser/fonts/macos-bundle/generated/Optima-Bold.ttf +0 -0
  147. package/browser/fonts/macos-bundle/generated/Optima-BoldItalic.ttf +0 -0
  148. package/browser/fonts/macos-bundle/generated/Optima-Italic.ttf +0 -0
  149. package/browser/fonts/macos-bundle/generated/Optima-Regular.ttf +0 -0
  150. package/browser/fonts/macos-bundle/generated/Palatino-Bold.ttf +0 -0
  151. package/browser/fonts/macos-bundle/generated/Palatino-BoldItalic.ttf +0 -0
  152. package/browser/fonts/macos-bundle/generated/Palatino-Italic.ttf +0 -0
  153. package/browser/fonts/macos-bundle/generated/Palatino-Regular.ttf +0 -0
  154. package/browser/fonts/macos-bundle/generated/Papyrus-Bold.ttf +0 -0
  155. package/browser/fonts/macos-bundle/generated/Papyrus-BoldItalic.ttf +0 -0
  156. package/browser/fonts/macos-bundle/generated/Papyrus-Italic.ttf +0 -0
  157. package/browser/fonts/macos-bundle/generated/Papyrus-Regular.ttf +0 -0
  158. package/browser/fonts/macos-bundle/generated/PartyLET-Bold.ttf +0 -0
  159. package/browser/fonts/macos-bundle/generated/PartyLET-BoldItalic.ttf +0 -0
  160. package/browser/fonts/macos-bundle/generated/PartyLET-Italic.ttf +0 -0
  161. package/browser/fonts/macos-bundle/generated/PartyLET-Regular.ttf +0 -0
  162. package/browser/fonts/macos-bundle/generated/Phosphate-Regular.ttf +0 -0
  163. package/browser/fonts/macos-bundle/generated/README.md +132 -0
  164. package/browser/fonts/macos-bundle/generated/Rockwell-Bold.ttf +0 -0
  165. package/browser/fonts/macos-bundle/generated/Rockwell-BoldItalic.ttf +0 -0
  166. package/browser/fonts/macos-bundle/generated/Rockwell-Italic.ttf +0 -0
  167. package/browser/fonts/macos-bundle/generated/Rockwell-Regular.ttf +0 -0
  168. package/browser/fonts/macos-bundle/generated/SavoyeLET-Bold.ttf +0 -0
  169. package/browser/fonts/macos-bundle/generated/SavoyeLET-BoldItalic.ttf +0 -0
  170. package/browser/fonts/macos-bundle/generated/SavoyeLET-Italic.ttf +0 -0
  171. package/browser/fonts/macos-bundle/generated/SavoyeLET-Regular.ttf +0 -0
  172. package/browser/fonts/macos-bundle/generated/Seravek-Bold.ttf +0 -0
  173. package/browser/fonts/macos-bundle/generated/Seravek-BoldItalic.ttf +0 -0
  174. package/browser/fonts/macos-bundle/generated/Seravek-Italic.ttf +0 -0
  175. package/browser/fonts/macos-bundle/generated/Seravek-Regular.ttf +0 -0
  176. package/browser/fonts/macos-bundle/generated/SignPainter-Bold.ttf +0 -0
  177. package/browser/fonts/macos-bundle/generated/SignPainter-Regular.ttf +0 -0
  178. package/browser/fonts/macos-bundle/generated/Skia-Bold.ttf +0 -0
  179. package/browser/fonts/macos-bundle/generated/Skia-BoldItalic.ttf +0 -0
  180. package/browser/fonts/macos-bundle/generated/Skia-Italic.ttf +0 -0
  181. package/browser/fonts/macos-bundle/generated/Skia-Regular.ttf +0 -0
  182. package/browser/fonts/macos-bundle/generated/SnellRoundhand-Bold.ttf +0 -0
  183. package/browser/fonts/macos-bundle/generated/SnellRoundhand-Regular.ttf +0 -0
  184. package/browser/fonts/macos-bundle/generated/Tahoma-Bold.ttf +0 -0
  185. package/browser/fonts/macos-bundle/generated/Tahoma-Regular.ttf +0 -0
  186. package/browser/fonts/macos-bundle/generated/Times-Bold.ttf +0 -0
  187. package/browser/fonts/macos-bundle/generated/Times-BoldItalic.ttf +0 -0
  188. package/browser/fonts/macos-bundle/generated/Times-Italic.ttf +0 -0
  189. package/browser/fonts/macos-bundle/generated/Times-Regular.ttf +0 -0
  190. package/browser/fonts/macos-bundle/generated/TimesNewRoman-Bold.ttf +0 -0
  191. package/browser/fonts/macos-bundle/generated/TimesNewRoman-BoldItalic.ttf +0 -0
  192. package/browser/fonts/macos-bundle/generated/TimesNewRoman-Italic.ttf +0 -0
  193. package/browser/fonts/macos-bundle/generated/TimesNewRoman-Regular.ttf +0 -0
  194. package/browser/fonts/macos-bundle/generated/Trattatello-Regular.ttf +0 -0
  195. package/browser/fonts/macos-bundle/generated/TrebuchetMS-Bold.ttf +0 -0
  196. package/browser/fonts/macos-bundle/generated/TrebuchetMS-BoldItalic.ttf +0 -0
  197. package/browser/fonts/macos-bundle/generated/TrebuchetMS-Italic.ttf +0 -0
  198. package/browser/fonts/macos-bundle/generated/TrebuchetMS-Regular.ttf +0 -0
  199. package/browser/fonts/macos-bundle/generated/Verdana-Bold.ttf +0 -0
  200. package/browser/fonts/macos-bundle/generated/Verdana-BoldItalic.ttf +0 -0
  201. package/browser/fonts/macos-bundle/generated/Verdana-Italic.ttf +0 -0
  202. package/browser/fonts/macos-bundle/generated/Verdana-Regular.ttf +0 -0
  203. package/browser/fonts/macos-bundle/generated/Webdings-Bold.ttf +0 -0
  204. package/browser/fonts/macos-bundle/generated/Webdings-BoldItalic.ttf +0 -0
  205. package/browser/fonts/macos-bundle/generated/Webdings-Italic.ttf +0 -0
  206. package/browser/fonts/macos-bundle/generated/Webdings-Regular.ttf +0 -0
  207. package/browser/fonts/macos-bundle/generated/Zapfino-Bold.ttf +0 -0
  208. package/browser/fonts/macos-bundle/generated/Zapfino-BoldItalic.ttf +0 -0
  209. package/browser/fonts/macos-bundle/generated/Zapfino-Italic.ttf +0 -0
  210. package/browser/fonts/macos-bundle/generated/Zapfino-Regular.ttf +0 -0
  211. package/browser/fonts/macos-bundle/generated/manifest.json +2928 -0
  212. package/browser/fonts/macos-bundle/generated/systemui-Bold.ttf +0 -0
  213. package/browser/fonts/macos-bundle/generated/systemui-BoldItalic.ttf +0 -0
  214. package/browser/fonts/macos-bundle/generated/systemui-Italic.ttf +0 -0
  215. package/browser/fonts/macos-bundle/generated/systemui-Regular.ttf +0 -0
  216. package/browser/fonts/macos-bundle/install.sh +136 -0
  217. package/browser/fonts/macos-bundle/vendor/README.md +30 -0
  218. package/browser/fonts/macos-bundle/vendor/anton/Anton-Regular.ttf +0 -0
  219. package/browser/fonts/macos-bundle/vendor/anton/OFL.txt +93 -0
  220. package/browser/fonts/macos-bundle/vendor/gelasio/Gelasio-Italic-VariableFont_wght.ttf +0 -0
  221. package/browser/fonts/macos-bundle/vendor/gelasio/Gelasio-VariableFont_wght.ttf +0 -0
  222. package/browser/fonts/macos-bundle/vendor/gelasio/OFL.txt +93 -0
  223. package/browser/fonts/macos-bundle/verify-metric-fonts.py +171 -0
  224. package/dist/browser-controller.d.ts +47 -4
  225. package/dist/browser-controller.d.ts.map +1 -1
  226. package/dist/browser-controller.js +219 -278
  227. package/dist/browser-controller.js.map +1 -1
  228. package/dist/browser-plugin.d.ts +82 -110
  229. package/dist/browser-plugin.d.ts.map +1 -1
  230. package/dist/browser-plugin.js +405 -379
  231. package/dist/browser-plugin.js.map +1 -1
  232. package/dist/browser-process/align-fingerprint-config.d.ts +36 -0
  233. package/dist/browser-process/align-fingerprint-config.d.ts.map +1 -0
  234. package/dist/browser-process/align-fingerprint-config.js +74 -0
  235. package/dist/browser-process/align-fingerprint-config.js.map +1 -0
  236. package/dist/browser-process/anti-detect-browser.d.ts +2 -2
  237. package/dist/browser-process/anti-detect-browser.js +7 -7
  238. package/dist/browser-process/anti-detect-config.d.ts +146 -2
  239. package/dist/browser-process/anti-detect-config.d.ts.map +1 -1
  240. package/dist/browser-process/anti-detect-config.js +432 -127
  241. package/dist/browser-process/anti-detect-config.js.map +1 -1
  242. package/dist/browser-process/browser.d.ts +25 -92
  243. package/dist/browser-process/browser.d.ts.map +1 -1
  244. package/dist/browser-process/browser.js +467 -79
  245. package/dist/browser-process/browser.js.map +1 -1
  246. package/dist/browser-process/fingerprint-config.d.ts +146 -0
  247. package/dist/browser-process/fingerprint-config.d.ts.map +1 -0
  248. package/dist/browser-process/fingerprint-config.js +351 -0
  249. package/dist/browser-process/fingerprint-config.js.map +1 -0
  250. package/dist/browser-process/get-chrome-executable.d.ts +6 -0
  251. package/dist/browser-process/get-chrome-executable.d.ts.map +1 -1
  252. package/dist/browser-process/get-chrome-executable.js +79 -4
  253. package/dist/browser-process/get-chrome-executable.js.map +1 -1
  254. package/dist/browser-process/gpu-family-profiles.d.ts +58 -0
  255. package/dist/browser-process/gpu-family-profiles.d.ts.map +1 -0
  256. package/dist/browser-process/gpu-family-profiles.js +480 -0
  257. package/dist/browser-process/gpu-family-profiles.js.map +1 -0
  258. package/dist/browser-process/launch-options.d.ts +301 -0
  259. package/dist/browser-process/launch-options.d.ts.map +1 -0
  260. package/dist/browser-process/launch-options.js +2 -0
  261. package/dist/browser-process/launch-options.js.map +1 -0
  262. package/dist/browser-process/port-allocator.d.ts +64 -0
  263. package/dist/browser-process/port-allocator.d.ts.map +1 -0
  264. package/dist/browser-process/port-allocator.js +198 -0
  265. package/dist/browser-process/port-allocator.js.map +1 -0
  266. package/dist/browser-process/process.d.ts +85 -0
  267. package/dist/browser-process/process.d.ts.map +1 -1
  268. package/dist/browser-process/process.js +235 -19
  269. package/dist/browser-process/process.js.map +1 -1
  270. package/dist/browser-process/signal-cleanup.d.ts +40 -0
  271. package/dist/browser-process/signal-cleanup.d.ts.map +1 -0
  272. package/dist/browser-process/signal-cleanup.js +105 -0
  273. package/dist/browser-process/signal-cleanup.js.map +1 -0
  274. package/dist/browser-process/widevine-cdm.d.ts +144 -0
  275. package/dist/browser-process/widevine-cdm.d.ts.map +1 -0
  276. package/dist/browser-process/widevine-cdm.js +298 -0
  277. package/dist/browser-process/widevine-cdm.js.map +1 -0
  278. package/dist/browser-profiles/chrome/populate-profile.d.ts.map +1 -1
  279. package/dist/browser-profiles/chrome/populate-profile.js +21 -22
  280. package/dist/browser-profiles/chrome/populate-profile.js.map +1 -1
  281. package/dist/connection/cdp-reconnection.d.ts +50 -0
  282. package/dist/connection/cdp-reconnection.d.ts.map +1 -0
  283. package/dist/connection/cdp-reconnection.js +75 -0
  284. package/dist/connection/cdp-reconnection.js.map +1 -0
  285. package/dist/connection/page-session.d.ts +114 -0
  286. package/dist/connection/page-session.d.ts.map +1 -0
  287. package/dist/connection/page-session.js +237 -0
  288. package/dist/connection/page-session.js.map +1 -0
  289. package/dist/connection/session-client.d.ts +34 -0
  290. package/dist/connection/session-client.d.ts.map +1 -0
  291. package/dist/connection/session-client.js +129 -0
  292. package/dist/connection/session-client.js.map +1 -0
  293. package/dist/crawler.d.ts +9 -88
  294. package/dist/crawler.d.ts.map +1 -1
  295. package/dist/crawler.js +157 -8
  296. package/dist/crawler.js.map +1 -1
  297. package/dist/fingerprinting/fingerprint-injector.d.ts +24 -114
  298. package/dist/fingerprinting/fingerprint-injector.d.ts.map +1 -1
  299. package/dist/fingerprinting/fingerprint-injector.js +305 -611
  300. package/dist/fingerprinting/fingerprint-injector.js.map +1 -1
  301. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.d.ts +1 -1
  302. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.d.ts.map +1 -1
  303. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js +16 -14
  304. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js.map +1 -1
  305. package/dist/fingerprinting/fingerprint-overrides/index.d.ts +6 -2
  306. package/dist/fingerprinting/fingerprint-overrides/index.d.ts.map +1 -1
  307. package/dist/fingerprinting/fingerprint-overrides/index.js +6 -2
  308. package/dist/fingerprinting/fingerprint-overrides/index.js.map +1 -1
  309. package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.d.ts +1 -1
  310. package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js +4 -4
  311. package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js.map +1 -1
  312. package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.js +4 -4
  313. package/dist/fingerprinting/fingerprint-overrides/navigator-override.d.ts +18 -0
  314. package/dist/fingerprinting/fingerprint-overrides/navigator-override.d.ts.map +1 -0
  315. package/dist/fingerprinting/fingerprint-overrides/navigator-override.js +136 -0
  316. package/dist/fingerprinting/fingerprint-overrides/navigator-override.js.map +1 -0
  317. package/dist/fingerprinting/fingerprint-overrides/override.d.ts +151 -0
  318. package/dist/fingerprinting/fingerprint-overrides/override.d.ts.map +1 -0
  319. package/dist/fingerprinting/fingerprint-overrides/override.js +14 -0
  320. package/dist/fingerprinting/fingerprint-overrides/override.js.map +1 -0
  321. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.d.ts.map +1 -1
  322. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js +46 -15
  323. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js.map +1 -1
  324. package/dist/fingerprinting/fingerprint-overrides/registry.d.ts +43 -0
  325. package/dist/fingerprinting/fingerprint-overrides/registry.d.ts.map +1 -0
  326. package/dist/fingerprinting/fingerprint-overrides/registry.js +342 -0
  327. package/dist/fingerprinting/fingerprint-overrides/registry.js.map +1 -0
  328. package/dist/fingerprinting/fingerprint-overrides/screen-override.d.ts +16 -0
  329. package/dist/fingerprinting/fingerprint-overrides/screen-override.d.ts.map +1 -0
  330. package/dist/fingerprinting/fingerprint-overrides/screen-override.js +175 -0
  331. package/dist/fingerprinting/fingerprint-overrides/screen-override.js.map +1 -0
  332. package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.d.ts +1 -1
  333. package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js +4 -4
  334. package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js.map +1 -1
  335. package/dist/fingerprinting/fingerprint-overrides/stealth-script.d.ts.map +1 -1
  336. package/dist/fingerprinting/fingerprint-overrides/stealth-script.js +75 -9
  337. package/dist/fingerprinting/fingerprint-overrides/stealth-script.js.map +1 -1
  338. package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts +1 -1
  339. package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts.map +1 -1
  340. package/dist/fingerprinting/fingerprint-overrides/ua-ch.js +34 -20
  341. package/dist/fingerprinting/fingerprint-overrides/ua-ch.js.map +1 -1
  342. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.d.ts.map +1 -1
  343. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js +28 -9
  344. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js.map +1 -1
  345. package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.js +1 -1
  346. package/dist/fingerprinting/hardware-realism.d.ts +74 -0
  347. package/dist/fingerprinting/hardware-realism.d.ts.map +1 -0
  348. package/dist/fingerprinting/hardware-realism.js +155 -0
  349. package/dist/fingerprinting/hardware-realism.js.map +1 -0
  350. package/dist/fingerprinting/injection-planner.d.ts +133 -0
  351. package/dist/fingerprinting/injection-planner.d.ts.map +1 -0
  352. package/dist/fingerprinting/injection-planner.js +497 -0
  353. package/dist/fingerprinting/injection-planner.js.map +1 -0
  354. package/dist/fingerprinting/locale-resolver.d.ts +8 -1
  355. package/dist/fingerprinting/locale-resolver.d.ts.map +1 -1
  356. package/dist/fingerprinting/locale-resolver.js +26 -3
  357. package/dist/fingerprinting/locale-resolver.js.map +1 -1
  358. package/dist/fingerprinting/non-apify-fingerprint-generator.d.ts +4 -4
  359. package/dist/fingerprinting/non-apify-fingerprint-generator.d.ts.map +1 -1
  360. package/dist/fingerprinting/non-apify-fingerprint-generator.js +35 -69
  361. package/dist/fingerprinting/non-apify-fingerprint-generator.js.map +1 -1
  362. package/dist/fingerprinting/non-apify-profiles.json +10515 -8494
  363. package/dist/fingerprinting/os-consistency.d.ts +28 -0
  364. package/dist/fingerprinting/os-consistency.d.ts.map +1 -0
  365. package/dist/fingerprinting/os-consistency.js +45 -0
  366. package/dist/fingerprinting/os-consistency.js.map +1 -0
  367. package/dist/fingerprinting/profile-quality.d.ts +25 -0
  368. package/dist/fingerprinting/profile-quality.d.ts.map +1 -0
  369. package/dist/fingerprinting/profile-quality.js +310 -0
  370. package/dist/fingerprinting/profile-quality.js.map +1 -0
  371. package/dist/fingerprinting/profile-selector.d.ts +102 -0
  372. package/dist/fingerprinting/profile-selector.d.ts.map +1 -0
  373. package/dist/fingerprinting/profile-selector.js +168 -0
  374. package/dist/fingerprinting/profile-selector.js.map +1 -0
  375. package/dist/fingerprinting/ua-alignment.d.ts +83 -0
  376. package/dist/fingerprinting/ua-alignment.d.ts.map +1 -0
  377. package/dist/fingerprinting/ua-alignment.js +197 -0
  378. package/dist/fingerprinting/ua-alignment.js.map +1 -0
  379. package/dist/fingerprinting/ua-ch-brands.d.ts +88 -0
  380. package/dist/fingerprinting/ua-ch-brands.d.ts.map +1 -0
  381. package/dist/fingerprinting/ua-ch-brands.js +174 -0
  382. package/dist/fingerprinting/ua-ch-brands.js.map +1 -0
  383. package/dist/index.d.ts +5 -0
  384. package/dist/index.d.ts.map +1 -1
  385. package/dist/index.js +6 -0
  386. package/dist/index.js.map +1 -1
  387. package/dist/input/dropdown-selector.d.ts +90 -0
  388. package/dist/input/dropdown-selector.d.ts.map +1 -0
  389. package/dist/input/dropdown-selector.js +394 -0
  390. package/dist/input/dropdown-selector.js.map +1 -0
  391. package/dist/input/element-target.d.ts +152 -0
  392. package/dist/input/element-target.d.ts.map +1 -0
  393. package/dist/input/element-target.js +461 -0
  394. package/dist/input/element-target.js.map +1 -0
  395. package/dist/input/input-emulator.d.ts +85 -0
  396. package/dist/input/input-emulator.d.ts.map +1 -0
  397. package/dist/input/input-emulator.js +325 -0
  398. package/dist/input/input-emulator.js.map +1 -0
  399. package/dist/input/input-transport.d.ts +60 -0
  400. package/dist/input/input-transport.d.ts.map +1 -0
  401. package/dist/input/input-transport.js +28 -0
  402. package/dist/input/input-transport.js.map +1 -0
  403. package/dist/input/recording-transport.d.ts +32 -0
  404. package/dist/input/recording-transport.d.ts.map +1 -0
  405. package/dist/input/recording-transport.js +43 -0
  406. package/dist/input/recording-transport.js.map +1 -0
  407. package/dist/keyboard-layout.d.ts +2 -2
  408. package/dist/keyboard-layout.js +2 -2
  409. package/dist/navigation/page-navigation.d.ts +67 -0
  410. package/dist/navigation/page-navigation.d.ts.map +1 -0
  411. package/dist/navigation/page-navigation.js +122 -0
  412. package/dist/navigation/page-navigation.js.map +1 -0
  413. package/dist/network/network-watch.d.ts +110 -0
  414. package/dist/network/network-watch.d.ts.map +1 -0
  415. package/dist/network/network-watch.js +223 -0
  416. package/dist/network/network-watch.js.map +1 -0
  417. package/dist/page.d.ts +123 -104
  418. package/dist/page.d.ts.map +1 -1
  419. package/dist/page.js +348 -1129
  420. package/dist/page.js.map +1 -1
  421. package/dist/session/inject-hook.d.ts +24 -0
  422. package/dist/session/inject-hook.d.ts.map +1 -0
  423. package/dist/session/inject-hook.js +80 -0
  424. package/dist/session/inject-hook.js.map +1 -0
  425. package/dist/session/save.d.ts +21 -0
  426. package/dist/session/save.d.ts.map +1 -0
  427. package/dist/session/save.js +163 -0
  428. package/dist/session/save.js.map +1 -0
  429. package/dist/session/tar-data-dir.d.ts +18 -0
  430. package/dist/session/tar-data-dir.d.ts.map +1 -0
  431. package/dist/session/tar-data-dir.js +105 -0
  432. package/dist/session/tar-data-dir.js.map +1 -0
  433. package/dist/session/types.d.ts +80 -0
  434. package/dist/session/types.d.ts.map +1 -0
  435. package/dist/session/types.js +29 -0
  436. package/dist/session/types.js.map +1 -0
  437. package/dist/session-profile.d.ts +102 -0
  438. package/dist/session-profile.d.ts.map +1 -0
  439. package/dist/session-profile.js +163 -0
  440. package/dist/session-profile.js.map +1 -0
  441. package/dist/tsconfig.build.tsbuildinfo +1 -1
  442. package/package.json +15 -6
  443. package/dist/fingerprinting/custom-fingerprint-injector.d.ts +0 -87
  444. package/dist/fingerprinting/custom-fingerprint-injector.d.ts.map +0 -1
  445. package/dist/fingerprinting/custom-fingerprint-injector.js +0 -342
  446. package/dist/fingerprinting/custom-fingerprint-injector.js.map +0 -1
  447. package/dist/launcher-wrap.d.ts +0 -10
  448. package/dist/launcher-wrap.d.ts.map +0 -1
  449. package/dist/launcher-wrap.js +0 -11
  450. package/dist/launcher-wrap.js.map +0 -1
@@ -0,0 +1,144 @@
1
+ /**
2
+ * widevine-cdm.ts - make EME report Widevine support, the way every real Chrome does.
3
+ *
4
+ * Real Chrome bundles the Widevine CDM, so `requestMediaKeySystemAccess('com.widevine.alpha')`
5
+ * resolves from the first millisecond of the first navigation. Our binary cannot bundle it -
6
+ * `bundle_widevine_cdm` requires Chrome or Chrome-for-Testing branding - so it is built with
7
+ * `enable_widevine = true` and `ENABLE_WIDEVINE_CDM_COMPONENT`, which means the CDM has to
8
+ * arrive through the component updater. Without one, a page sees `NotSupportedError` where
9
+ * every real Chrome resolves: a one-line detection check.
10
+ *
11
+ * The trap, measured 2026-08-05 (#141): Google's component server refuses BACKGROUND update
12
+ * checks from this client and serves the byte-identical foreground request in full.
13
+ *
14
+ * X-Goog-Update-Interactivity: bg -> {"status":"noupdate","info":"bandwidth limit"}
15
+ * X-Goog-Update-Interactivity: fg -> {"status":"ok", …4.10.3050.0, 20189918 bytes}
16
+ *
17
+ * The header comes from `is_foreground()` (components/update_client/protocol_serializer.cc:98).
18
+ * Every periodic check is `bg`, so waiting does not help - and the next one is 18000 s away.
19
+ * Only an on-demand check is `fg`. Nothing in the browser issues one for Widevine, because
20
+ * upstream Chrome never needs to: it bundles the CDM.
21
+ *
22
+ * So this module issues that foreground check itself, through the one surface that exposes it
23
+ * without a C++ change - chrome://components' "Check for update", i.e. `chrome.send('checkUpdate')` -
24
+ * and then waits for the CDM to land before the crawler navigates anywhere.
25
+ *
26
+ * PLATFORM ASYMMETRY, and it lands on the OS that ships (widevine_cdm_component_installer.cc):
27
+ *
28
+ * * mac / win (:429-436) - `RegisterWidevineCdmWithChrome` calls `CdmRegistry::RegisterCdm`
29
+ * at runtime, so a CDM fetched mid-session is usable in that same session.
30
+ * * linux (:399-404) - only the hint file is written. The CDM is loaded at startup before
31
+ * the zygote is locked down (`cdm_registration.cc` reads `GetHintedWidevineCdmDirectory()`),
32
+ * so a CDM fetched mid-session is NOT usable until the next launch.
33
+ *
34
+ * That is why fetching is only half the job. Whatever a fetch lands is also copied into a
35
+ * per-host cache, and every subsequent launch seeds its fresh profile from that cache BEFORE
36
+ * the browser starts - which is the only shape that works on Linux, and which makes the fetch
37
+ * a once-per-host cost rather than a once-per-session one. Nothing is added to the shipped
38
+ * artifact: the cache only ever holds a payload Google delivered to this host.
39
+ */
40
+ /** Where a CDM lives once installed, and whether Linux's startup hint points at it. */
41
+ export interface InstalledCdm {
42
+ /** Version directory name, e.g. `4.10.3050.0`. */
43
+ version: string;
44
+ /** Absolute path of `<user-data-dir>/WidevineCdm/<version>`. */
45
+ baseDir: string;
46
+ /** Absolute path of the platform CDM library. */
47
+ libraryPath: string;
48
+ /** Whether the Linux startup hint file is present. Irrelevant on mac/win. */
49
+ hintFilePresent: boolean;
50
+ }
51
+ export type EnsureWidevineOutcome =
52
+ /**
53
+ * The browser already reports Widevine support - a seeded/reused profile, or a
54
+ * build that bundles the CDM (every real Chrome). Nothing to fetch.
55
+ */
56
+ 'already-present'
57
+ /** Fetched and registered with the running browser; EME works this session. */
58
+ | 'installed'
59
+ /** Fetched, but Linux only loads the CDM at startup, so it works from the NEXT launch. */
60
+ | 'installed-pending-restart'
61
+ /** The binary has no Widevine component registered - stock Chrome, or built without it. */
62
+ | 'component-absent'
63
+ /** The foreground check did not produce a CDM before the timeout. */
64
+ | 'timeout'
65
+ /** Something in the CDP conversation failed. Never fatal to a crawl. */
66
+ | 'error';
67
+ export interface EnsureWidevineResult {
68
+ outcome: EnsureWidevineOutcome;
69
+ version?: string;
70
+ elapsedMs: number;
71
+ /** Whether EME can report Widevine support for the rest of THIS session. */
72
+ usableThisSession: boolean;
73
+ }
74
+ /**
75
+ * Minimal slice of a chrome-remote-interface browser-level client. Declared
76
+ * structurally so tests can hand in a plain object and no CDP is needed.
77
+ */
78
+ export interface CdpBrowserSession {
79
+ Target: {
80
+ createTarget(params: {
81
+ url: string;
82
+ }): Promise<{
83
+ targetId: string;
84
+ }>;
85
+ attachToTarget(params: {
86
+ targetId: string;
87
+ flatten: boolean;
88
+ }): Promise<{
89
+ sessionId: string;
90
+ }>;
91
+ closeTarget(params: {
92
+ targetId: string;
93
+ }): Promise<unknown>;
94
+ };
95
+ send(method: string, params: unknown, sessionId: string): Promise<{
96
+ result?: {
97
+ value?: unknown;
98
+ };
99
+ exceptionDetails?: unknown;
100
+ }>;
101
+ }
102
+ export interface EnsureWidevineCdmOptions {
103
+ session: CdpBrowserSession;
104
+ /** The profile the browser launched with - `BrowserProcess.getUserDataDir()`. */
105
+ userDataDir: string;
106
+ /** Overall budget for the fetch. Default 30 s; a fetch measured 11 s end to end. */
107
+ timeoutMs?: number;
108
+ /** Where to keep the fetched payload for future profiles. Default: OS temp. */
109
+ cacheDir?: string;
110
+ /** `process.platform`, injectable so the Linux branch is testable off Linux. */
111
+ platform?: NodeJS.Platform;
112
+ }
113
+ /** Default per-host cache location. One directory, reused by every later profile. */
114
+ export declare const defaultWidevineCacheDir: () => string;
115
+ /**
116
+ * Locate an installed CDM under a profile (or a cache directory laid out the same way).
117
+ *
118
+ * Walks `<root>/WidevineCdm/<version>/_platform_specific/<platform>/` looking for the platform
119
+ * library rather than trusting the version directory to be complete - an interrupted unpack
120
+ * leaves the directory but not the library, and registering that would fail at load time.
121
+ */
122
+ export declare const findInstalledCdm: (root: string) => Promise<InstalledCdm | null>;
123
+ /**
124
+ * Copy a fetched CDM into the per-host cache, so later profiles start with it.
125
+ * Best-effort: a cache we cannot write costs a re-fetch, never a failed launch.
126
+ */
127
+ export declare const cacheWidevineCdm: (userDataDir: string, cacheDir?: string) => Promise<boolean>;
128
+ /**
129
+ * Seed a profile from the per-host cache BEFORE the browser starts, so the CDM is registered
130
+ * during normal startup registration - no network, no wait, and the only shape Linux can use.
131
+ *
132
+ * The Linux hint file stores an ABSOLUTE path (`{"Path": "<user-data-dir>/WidevineCdm/<version>"}`,
133
+ * component_widevine_cdm_hint_file_linux.cc:84), so it is rewritten for the destination rather
134
+ * than copied - a copied hint would point every profile at the one it was cached from.
135
+ */
136
+ export declare const seedWidevineCdm: (userDataDir: string, cacheDir?: string) => Promise<InstalledCdm | null>;
137
+ /**
138
+ * Ensure the running browser can report Widevine support, and wait for it before returning.
139
+ *
140
+ * Never throws: a crawl must not die because DRM did not land. Every failure path returns an
141
+ * outcome the caller can log.
142
+ */
143
+ export declare const ensureWidevineCdm: (options: EnsureWidevineCdmOptions) => Promise<EnsureWidevineResult>;
144
+ //# sourceMappingURL=widevine-cdm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widevine-cdm.d.ts","sourceRoot":"","sources":["../../src/browser-process/widevine-cdm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAuBH,uFAAuF;AACvF,MAAM,WAAW,YAAY;IACzB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,eAAe,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,MAAM,qBAAqB;AAC7B;;;GAGG;AACD,iBAAiB;AACnB,+EAA+E;GAC7E,WAAW;AACb,0FAA0F;GACxF,2BAA2B;AAC7B,2FAA2F;GACzF,kBAAkB;AACpB,qEAAqE;GACnE,SAAS;AACX,wEAAwE;GACtE,OAAO,CAAC;AAEd,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,iBAAiB,EAAE,OAAO,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE;QACJ,YAAY,CAAC,MAAM,EAAE;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACrE,cAAc,CAAC,MAAM,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAA;SAAE,GAAG,OAAO,CAAC;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC/F,WAAW,CAAC,MAAM,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KAC/D,CAAC;IACF,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAC9D,MAAM,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;QAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC9B,CAAC,CAAC;CACN;AAED,MAAM,WAAW,wBAAwB;IACrC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,iFAAiF;IACjF,WAAW,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC9B;AAED,qFAAqF;AACrF,eAAO,MAAM,uBAAuB,QAAO,MAA8D,CAAC;AAW1G;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,SAAgB,MAAM,KAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAqChF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,gBAAuB,MAAM,wBAAyC,OAAO,CAAC,OAAO,CAcjH,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,gBACX,MAAM,wBAEpB,OAAO,CAAC,YAAY,GAAG,IAAI,CAqB7B,CAAC;AA2CF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,YAAmB,wBAAwB,KAAG,OAAO,CAAC,oBAAoB,CA2GvG,CAAC"}
@@ -0,0 +1,298 @@
1
+ /**
2
+ * widevine-cdm.ts - make EME report Widevine support, the way every real Chrome does.
3
+ *
4
+ * Real Chrome bundles the Widevine CDM, so `requestMediaKeySystemAccess('com.widevine.alpha')`
5
+ * resolves from the first millisecond of the first navigation. Our binary cannot bundle it -
6
+ * `bundle_widevine_cdm` requires Chrome or Chrome-for-Testing branding - so it is built with
7
+ * `enable_widevine = true` and `ENABLE_WIDEVINE_CDM_COMPONENT`, which means the CDM has to
8
+ * arrive through the component updater. Without one, a page sees `NotSupportedError` where
9
+ * every real Chrome resolves: a one-line detection check.
10
+ *
11
+ * The trap, measured 2026-08-05 (#141): Google's component server refuses BACKGROUND update
12
+ * checks from this client and serves the byte-identical foreground request in full.
13
+ *
14
+ * X-Goog-Update-Interactivity: bg -> {"status":"noupdate","info":"bandwidth limit"}
15
+ * X-Goog-Update-Interactivity: fg -> {"status":"ok", …4.10.3050.0, 20189918 bytes}
16
+ *
17
+ * The header comes from `is_foreground()` (components/update_client/protocol_serializer.cc:98).
18
+ * Every periodic check is `bg`, so waiting does not help - and the next one is 18000 s away.
19
+ * Only an on-demand check is `fg`. Nothing in the browser issues one for Widevine, because
20
+ * upstream Chrome never needs to: it bundles the CDM.
21
+ *
22
+ * So this module issues that foreground check itself, through the one surface that exposes it
23
+ * without a C++ change - chrome://components' "Check for update", i.e. `chrome.send('checkUpdate')` -
24
+ * and then waits for the CDM to land before the crawler navigates anywhere.
25
+ *
26
+ * PLATFORM ASYMMETRY, and it lands on the OS that ships (widevine_cdm_component_installer.cc):
27
+ *
28
+ * * mac / win (:429-436) - `RegisterWidevineCdmWithChrome` calls `CdmRegistry::RegisterCdm`
29
+ * at runtime, so a CDM fetched mid-session is usable in that same session.
30
+ * * linux (:399-404) - only the hint file is written. The CDM is loaded at startup before
31
+ * the zygote is locked down (`cdm_registration.cc` reads `GetHintedWidevineCdmDirectory()`),
32
+ * so a CDM fetched mid-session is NOT usable until the next launch.
33
+ *
34
+ * That is why fetching is only half the job. Whatever a fetch lands is also copied into a
35
+ * per-host cache, and every subsequent launch seeds its fresh profile from that cache BEFORE
36
+ * the browser starts - which is the only shape that works on Linux, and which makes the fetch
37
+ * a once-per-host cost rather than a once-per-session one. Nothing is added to the shipped
38
+ * artifact: the cache only ever holds a payload Google delivered to this host.
39
+ */
40
+ import { promises as fs } from 'fs';
41
+ import os from 'os';
42
+ import path from 'path';
43
+ import { log } from '@crawlee/core';
44
+ /** Component id of the Widevine CDM, as it appears in chrome://components. */
45
+ const WIDEVINE_COMPONENT_ID = 'oimompecagnajdejgnnjijobebaeigek';
46
+ /** `kWidevineCdmBaseDirectory` - third_party/widevine/cdm/widevine_cdm_common.h:19. */
47
+ const CDM_BASE_DIRECTORY = 'WidevineCdm';
48
+ /** `kComponentUpdatedWidevineCdmHint` - chrome/common/chrome_paths.cc:66-67. */
49
+ const CDM_HINT_FILE = 'latest-component-updated-widevine-cdm';
50
+ /** `base::GetNativeLibraryName("widevinecdm")` per platform. */
51
+ const CDM_LIBRARY_NAMES = ['libwidevinecdm.dylib', 'libwidevinecdm.so', 'widevinecdm.dll'];
52
+ const DEFAULT_TIMEOUT_MS = 30000;
53
+ const POLL_INTERVAL_MS = 250;
54
+ /** Default per-host cache location. One directory, reused by every later profile. */
55
+ export const defaultWidevineCacheDir = () => path.join(os.tmpdir(), 'cdp-crawler-widevine-cache');
56
+ const pathExists = async (target) => {
57
+ try {
58
+ await fs.access(target);
59
+ return true;
60
+ }
61
+ catch {
62
+ return false;
63
+ }
64
+ };
65
+ /**
66
+ * Locate an installed CDM under a profile (or a cache directory laid out the same way).
67
+ *
68
+ * Walks `<root>/WidevineCdm/<version>/_platform_specific/<platform>/` looking for the platform
69
+ * library rather than trusting the version directory to be complete - an interrupted unpack
70
+ * leaves the directory but not the library, and registering that would fail at load time.
71
+ */
72
+ export const findInstalledCdm = async (root) => {
73
+ const cdmRoot = path.join(root, CDM_BASE_DIRECTORY);
74
+ let versions;
75
+ try {
76
+ versions = (await fs.readdir(cdmRoot, { withFileTypes: true }))
77
+ .filter(entry => entry.isDirectory())
78
+ .map(entry => entry.name)
79
+ // Newest first, so a profile carrying two versions registers the newer.
80
+ .sort()
81
+ .reverse();
82
+ }
83
+ catch {
84
+ return null;
85
+ }
86
+ const hintFilePresent = await pathExists(path.join(cdmRoot, CDM_HINT_FILE));
87
+ for (const version of versions) {
88
+ const baseDir = path.join(cdmRoot, version);
89
+ const platformRoot = path.join(baseDir, '_platform_specific');
90
+ let platformDirs;
91
+ try {
92
+ platformDirs = (await fs.readdir(platformRoot, { withFileTypes: true }))
93
+ .filter(entry => entry.isDirectory())
94
+ .map(entry => entry.name);
95
+ }
96
+ catch {
97
+ continue;
98
+ }
99
+ for (const platformDir of platformDirs) {
100
+ for (const libraryName of CDM_LIBRARY_NAMES) {
101
+ const libraryPath = path.join(platformRoot, platformDir, libraryName);
102
+ if (await pathExists(libraryPath)) {
103
+ return { version, baseDir, libraryPath, hintFilePresent };
104
+ }
105
+ }
106
+ }
107
+ }
108
+ return null;
109
+ };
110
+ /**
111
+ * Copy a fetched CDM into the per-host cache, so later profiles start with it.
112
+ * Best-effort: a cache we cannot write costs a re-fetch, never a failed launch.
113
+ */
114
+ export const cacheWidevineCdm = async (userDataDir, cacheDir = defaultWidevineCacheDir()) => {
115
+ const installed = await findInstalledCdm(userDataDir);
116
+ if (!installed)
117
+ return false;
118
+ const destination = path.join(cacheDir, CDM_BASE_DIRECTORY, installed.version);
119
+ try {
120
+ if (await pathExists(path.join(destination, '_platform_specific')))
121
+ return true; // already cached
122
+ await fs.mkdir(path.dirname(destination), { recursive: true });
123
+ await fs.cp(installed.baseDir, destination, { recursive: true });
124
+ log.debug(`[AntiDetect] Cached Widevine CDM ${installed.version} for future profiles`, { cacheDir });
125
+ return true;
126
+ }
127
+ catch (error) {
128
+ log.debug(`[AntiDetect] Could not cache the Widevine CDM: ${error}`);
129
+ return false;
130
+ }
131
+ };
132
+ /**
133
+ * Seed a profile from the per-host cache BEFORE the browser starts, so the CDM is registered
134
+ * during normal startup registration - no network, no wait, and the only shape Linux can use.
135
+ *
136
+ * The Linux hint file stores an ABSOLUTE path (`{"Path": "<user-data-dir>/WidevineCdm/<version>"}`,
137
+ * component_widevine_cdm_hint_file_linux.cc:84), so it is rewritten for the destination rather
138
+ * than copied - a copied hint would point every profile at the one it was cached from.
139
+ */
140
+ export const seedWidevineCdm = async (userDataDir, cacheDir = defaultWidevineCacheDir()) => {
141
+ const cached = await findInstalledCdm(cacheDir);
142
+ if (!cached)
143
+ return null;
144
+ const destinationBase = path.join(userDataDir, CDM_BASE_DIRECTORY, cached.version);
145
+ try {
146
+ if (!await pathExists(path.join(destinationBase, '_platform_specific'))) {
147
+ await fs.mkdir(path.dirname(destinationBase), { recursive: true });
148
+ await fs.cp(cached.baseDir, destinationBase, { recursive: true });
149
+ }
150
+ await fs.writeFile(path.join(userDataDir, CDM_BASE_DIRECTORY, CDM_HINT_FILE), JSON.stringify({ Path: destinationBase }), 'utf8');
151
+ log.debug(`[AntiDetect] Seeded Widevine CDM ${cached.version} into the profile`);
152
+ return await findInstalledCdm(userDataDir);
153
+ }
154
+ catch (error) {
155
+ log.debug(`[AntiDetect] Could not seed the Widevine CDM into the profile: ${error}`);
156
+ return null;
157
+ }
158
+ };
159
+ /** Read the appid of the Widevine row straight off chrome://components. */
160
+ const COMPONENT_LOOKUP_EXPRESSION = `(() => {
161
+ const name = [...document.querySelectorAll('.component-name')]
162
+ .find(el => el.textContent.includes('Widevine'));
163
+ if (!name) return JSON.stringify({ present: false });
164
+ const row = name.closest('.component');
165
+ // Component ids are 32 chars of [a-p]; the row also carries version-<id> and status-<id>.
166
+ const id = row
167
+ ? [...row.querySelectorAll('[id]')].map(el => el.id).find(value => /^[a-p]{32}$/.test(value))
168
+ : null;
169
+ return JSON.stringify({ present: true, id: id ?? null });
170
+ })()`;
171
+ /**
172
+ * Ask the browser the question a site would ask. `chrome://` is a potentially
173
+ * trustworthy origin, so EME is available on the WebUI page we already have open
174
+ * (verified: `isSecureContext === true` on both our binary and stock Chrome).
175
+ *
176
+ * This is the gate that keeps a bundled-CDM browser from stalling: real Chrome
177
+ * LISTS the Widevine component in chrome://components while keeping the CDM inside
178
+ * the app bundle, so the component row proves nothing and polling the profile for a
179
+ * file that will never appear there burns the whole timeout. Support does not lie.
180
+ */
181
+ const EME_PROBE_EXPRESSION = `(async () => {
182
+ try {
183
+ const access = await navigator.requestMediaKeySystemAccess('com.widevine.alpha', [{
184
+ initDataTypes: ['cenc'],
185
+ videoCapabilities: [{ contentType: 'video/mp4;codecs="avc1.42E01E"' }],
186
+ }]);
187
+ return access.keySystem === 'com.widevine.alpha' ? 'supported' : 'unsupported';
188
+ } catch {
189
+ return 'unsupported';
190
+ }
191
+ })()`;
192
+ const checkUpdateExpression = (componentId) => `(() => {
193
+ if (typeof chrome === 'undefined' || typeof chrome.send !== 'function') return 'no-chrome-send';
194
+ chrome.send('checkUpdate', ['${componentId}']);
195
+ return 'dispatched';
196
+ })()`;
197
+ /**
198
+ * Ensure the running browser can report Widevine support, and wait for it before returning.
199
+ *
200
+ * Never throws: a crawl must not die because DRM did not land. Every failure path returns an
201
+ * outcome the caller can log.
202
+ */
203
+ export const ensureWidevineCdm = async (options) => {
204
+ const { session, userDataDir, timeoutMs = DEFAULT_TIMEOUT_MS, cacheDir = defaultWidevineCacheDir(), platform = process.platform, } = options;
205
+ const startedAt = Date.now();
206
+ const elapsed = () => Date.now() - startedAt;
207
+ // On Linux the CDM is bound at startup, so only a profile that already had it can use it now.
208
+ const registersAtRuntime = platform !== 'linux';
209
+ const preexisting = await findInstalledCdm(userDataDir);
210
+ if (preexisting) {
211
+ // Seeded or reused profile: startup registration already picked it up.
212
+ // Awaited, not fire-and-forget: an unawaited copy outlives this call and
213
+ // races profile cleanup on browser close, reading a directory being deleted.
214
+ await cacheWidevineCdm(userDataDir, cacheDir);
215
+ return {
216
+ outcome: 'already-present',
217
+ version: preexisting.version,
218
+ elapsedMs: elapsed(),
219
+ usableThisSession: true,
220
+ };
221
+ }
222
+ let targetId;
223
+ try {
224
+ ({ targetId } = await session.Target.createTarget({ url: 'chrome://components' }));
225
+ const { sessionId } = await session.Target.attachToTarget({ targetId, flatten: true });
226
+ const evaluate = async (expression) => {
227
+ const response = await session.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId);
228
+ if (response.exceptionDetails)
229
+ throw new Error(`evaluate threw: ${JSON.stringify(response.exceptionDetails)}`);
230
+ return response.result?.value;
231
+ };
232
+ // If the browser already reports support, there is nothing to do - and nothing
233
+ // to wait for. Cheapest correct answer for every bundled-CDM build.
234
+ if (await evaluate(EME_PROBE_EXPRESSION) === 'supported') {
235
+ return { outcome: 'already-present', elapsedMs: elapsed(), usableThisSession: true };
236
+ }
237
+ // The WebUI needs a moment to render its component rows before they can be read.
238
+ const lookupDeadline = Date.now() + Math.min(10000, timeoutMs);
239
+ let componentId = null;
240
+ let componentPresent = false;
241
+ while (Date.now() < lookupDeadline) {
242
+ const raw = await evaluate(COMPONENT_LOOKUP_EXPRESSION);
243
+ const parsed = JSON.parse(String(raw));
244
+ if (parsed.present) {
245
+ componentPresent = true;
246
+ componentId = parsed.id ?? WIDEVINE_COMPONENT_ID;
247
+ break;
248
+ }
249
+ await new Promise(resolve => setTimeout(resolve, POLL_INTERVAL_MS));
250
+ }
251
+ if (!componentPresent) {
252
+ // Stock Chrome (CDM is bundled, nothing to fetch) or a build without
253
+ // enable_widevine. Either way there is nothing to wait for.
254
+ return { outcome: 'component-absent', elapsedMs: elapsed(), usableThisSession: false };
255
+ }
256
+ await evaluate(checkUpdateExpression(componentId));
257
+ while (elapsed() < timeoutMs) {
258
+ await new Promise(resolve => setTimeout(resolve, POLL_INTERVAL_MS));
259
+ const installed = await findInstalledCdm(userDataDir);
260
+ if (!installed)
261
+ continue;
262
+ // The library appears at unpack; on mac/win registration follows on
263
+ // another thread. Confirm against the surface a site reads rather than
264
+ // sleeping a guessed interval - and keep polling it until the deadline,
265
+ // because the library landing is not itself the readiness signal.
266
+ // On Linux there is nothing to confirm: the CDM is bound at startup, so
267
+ // this session will keep reporting no support however long we wait.
268
+ if (registersAtRuntime) {
269
+ let supported = false;
270
+ while (!supported && elapsed() < timeoutMs) {
271
+ supported = await evaluate(EME_PROBE_EXPRESSION) === 'supported';
272
+ if (!supported)
273
+ await new Promise(resolve => setTimeout(resolve, POLL_INTERVAL_MS));
274
+ }
275
+ if (!supported)
276
+ break;
277
+ }
278
+ await cacheWidevineCdm(userDataDir, cacheDir);
279
+ return {
280
+ outcome: registersAtRuntime ? 'installed' : 'installed-pending-restart',
281
+ version: installed.version,
282
+ elapsedMs: elapsed(),
283
+ usableThisSession: registersAtRuntime,
284
+ };
285
+ }
286
+ return { outcome: 'timeout', elapsedMs: elapsed(), usableThisSession: false };
287
+ }
288
+ catch (error) {
289
+ log.debug(`[AntiDetect] Widevine CDM warm-up failed: ${error}`);
290
+ return { outcome: 'error', elapsedMs: elapsed(), usableThisSession: false };
291
+ }
292
+ finally {
293
+ if (targetId) {
294
+ await session.Target.closeTarget({ targetId }).catch(() => { });
295
+ }
296
+ }
297
+ };
298
+ //# sourceMappingURL=widevine-cdm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widevine-cdm.js","sourceRoot":"","sources":["../../src/browser-process/widevine-cdm.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"populate-profile.d.ts","sourceRoot":"","sources":["../../../src/browser-profiles/chrome/populate-profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH;;GAEG;AACH,QAAA,MAAM,YAAY;;;;GAWjB,CAAC;AAoBF;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAqDrC,CAAC;AAiBF;;GAEG;AACH,eAAO,MAAM,sBAAsB,WAAW,OAAO,YAAY,KAAkB,MAmBlF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,QAAO,MAiB1C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,sCAAsC;IACtC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+BAA+B;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gCAAgC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,0CAA0C;IAC1C,WAAW,CAAC,EAAE,OAAO,YAAY,CAAC;IAClC,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,gBACjB,MAAM,YACV,sBAAsB,KAChC,OAAO,CAAC,IAAI,CAsDd,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,WAAY,MAAM,EAAE,KAAG,MAkC7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B,QAAO,MA0B/C,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,+BAA+B,WAAY,MAAM,KAAG,aAAa,EAoC7E,CAAC"}
1
+ {"version":3,"file":"populate-profile.d.ts","sourceRoot":"","sources":["../../../src/browser-profiles/chrome/populate-profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH;;GAEG;AACH,QAAA,MAAM,YAAY;;;;GAWjB,CAAC;AAoBF;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAqDrC,CAAC;AAiBF;;GAEG;AACH,eAAO,MAAM,sBAAsB,WAAW,OAAO,YAAY,KAAkB,MAmBlF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,QAAO,MAiB1C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,sCAAsC;IACtC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+BAA+B;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gCAAgC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,0CAA0C;IAC1C,WAAW,CAAC,EAAE,OAAO,YAAY,CAAC;IAClC,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,gBACjB,MAAM,YACV,sBAAsB,KAChC,OAAO,CAAC,IAAI,CAkDd,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,WAAY,MAAM,EAAE,KAAG,MAkC7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B,QAAO,MA0B/C,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,+BAA+B,WAAY,MAAM,KAAG,aAAa,EAoC7E,CAAC"}
@@ -11,6 +11,7 @@
11
11
  */
12
12
  import fs from 'fs/promises';
13
13
  import path from 'path';
14
+ import { DEFAULT_PROFILE } from './default.js';
14
15
  /**
15
16
  * Popular sites for realistic browsing history
16
17
  */
@@ -160,22 +161,18 @@ export const populateChromeProfile = async (profilePath, options = {}) => {
160
161
  // historyDays is unused but kept for future extensions
161
162
  } = options;
162
163
  const defaultPath = path.join(profilePath, 'Default');
163
- // Ensure Default directory exists
164
- await fs.mkdir(defaultPath, { recursive: true });
165
- // Generate and write Local State
166
164
  const localStatePath = path.join(profilePath, 'Local State');
167
- const localState = generateLocalState();
168
- await fs.writeFile(localStatePath, JSON.stringify(localState, null, 2));
169
- // Read existing Preferences or create new
170
165
  const preferencesPath = path.join(defaultPath, 'Preferences');
171
- let preferences = {};
172
- try {
173
- const existing = await fs.readFile(preferencesPath, 'utf-8');
174
- preferences = JSON.parse(existing);
175
- }
176
- catch {
177
- // File doesn't exist, start fresh
178
- }
166
+ // Build the merged Preferences object entirely in memory, then write it a
167
+ // single time. This is the sole Preferences writer on the populate path -
168
+ // the previous createChromeProfile → write → readFile → parse → rewrite
169
+ // round-trip is gone. Cloning DEFAULT_PROFILE via JSON round-trip yields the
170
+ // exact object the old read-back produced (createChromeProfile serialized
171
+ // DEFAULT_PROFILE and populate parsed it straight back), and overwriting the
172
+ // same keys DEFAULT_PROFILE already declares preserves key order, so the
173
+ // emitted bytes are identical to the historical two-write path.
174
+ const localState = generateLocalState();
175
+ const preferences = JSON.parse(JSON.stringify(DEFAULT_PROFILE));
179
176
  // Add site engagement data
180
177
  if (addEngagement) {
181
178
  preferences.site_engagement = generateSiteEngagement(customSites);
@@ -194,7 +191,9 @@ export const populateChromeProfile = async (profilePath, options = {}) => {
194
191
  startup_urls: [],
195
192
  };
196
193
  }
197
- // Write updated Preferences
194
+ // Ensure Default directory exists, then write Local State and Preferences.
195
+ await fs.mkdir(defaultPath, { recursive: true });
196
+ await fs.writeFile(localStatePath, JSON.stringify(localState, null, 2));
198
197
  await fs.writeFile(preferencesPath, JSON.stringify(preferences, null, 2));
199
198
  };
200
199
  /**
@@ -212,10 +211,10 @@ export const generateLocalStorageScript = (sites) => {
212
211
  storageData[`${domain}_consent`] = 'accepted';
213
212
  });
214
213
  // Add some generic keys that real browsers have
215
- storageData['_ga_session'] = `1.${Date.now()}`;
216
- storageData['_consent_shown'] = 'true';
217
- storageData['cookie_notice_dismissed'] = 'true';
218
- storageData['preferred_theme'] = 'light';
214
+ storageData._ga_session = `1.${Date.now()}`;
215
+ storageData._consent_shown = 'true';
216
+ storageData.cookie_notice_dismissed = 'true';
217
+ storageData.preferred_theme = 'light';
219
218
  return `
220
219
  (() => {
221
220
  const data = ${JSON.stringify(storageData)};
@@ -268,7 +267,7 @@ export const generateReturningVisitorCookies = (domain) => {
268
267
  {
269
268
  name: '_returning_visitor',
270
269
  value: '1',
271
- domain: domain,
270
+ domain,
272
271
  path: '/',
273
272
  secure: true,
274
273
  httpOnly: false,
@@ -278,7 +277,7 @@ export const generateReturningVisitorCookies = (domain) => {
278
277
  {
279
278
  name: '_first_visit',
280
279
  value: String(now - Math.floor(Math.random() * 30 * 24 * 60 * 60 * 1000)), // Random date in last 30 days
281
- domain: domain,
280
+ domain,
282
281
  path: '/',
283
282
  secure: true,
284
283
  httpOnly: false,
@@ -288,7 +287,7 @@ export const generateReturningVisitorCookies = (domain) => {
288
287
  {
289
288
  name: 'consent_given',
290
289
  value: 'true',
291
- domain: domain,
290
+ domain,
292
291
  path: '/',
293
292
  secure: true,
294
293
  httpOnly: false,
@@ -1 +1 @@
1
- {"version":3,"file":"populate-profile.js","sourceRoot":"","sources":["../../../src/browser-profiles/chrome/populate-profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"populate-profile.js","sourceRoot":"","sources":["../../../src/browser-profiles/chrome/populate-profile.ts"],"names":[],"mappings":"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"}