jumpy-lion 0.1.6-beta.7 → 1.0.0-beta.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 (232) hide show
  1. package/README.md +1 -607
  2. package/browser/fonts/macos-bundle/40-macos-aliases.conf +515 -0
  3. package/browser/fonts/macos-bundle/README.md +24 -0
  4. package/browser/fonts/macos-bundle/install.sh +83 -0
  5. package/dist/browser-controller.d.ts +47 -4
  6. package/dist/browser-controller.d.ts.map +1 -1
  7. package/dist/browser-controller.js +219 -278
  8. package/dist/browser-controller.js.map +1 -1
  9. package/dist/browser-plugin.d.ts +82 -110
  10. package/dist/browser-plugin.d.ts.map +1 -1
  11. package/dist/browser-plugin.js +376 -379
  12. package/dist/browser-plugin.js.map +1 -1
  13. package/dist/browser-process/align-fingerprint-config.d.ts +36 -0
  14. package/dist/browser-process/align-fingerprint-config.d.ts.map +1 -0
  15. package/dist/browser-process/align-fingerprint-config.js +74 -0
  16. package/dist/browser-process/align-fingerprint-config.js.map +1 -0
  17. package/dist/browser-process/anti-detect-browser.d.ts +2 -2
  18. package/dist/browser-process/anti-detect-browser.js +7 -7
  19. package/dist/browser-process/anti-detect-config.d.ts +131 -2
  20. package/dist/browser-process/anti-detect-config.d.ts.map +1 -1
  21. package/dist/browser-process/anti-detect-config.js +337 -127
  22. package/dist/browser-process/anti-detect-config.js.map +1 -1
  23. package/dist/browser-process/browser.d.ts +25 -92
  24. package/dist/browser-process/browser.d.ts.map +1 -1
  25. package/dist/browser-process/browser.js +429 -73
  26. package/dist/browser-process/browser.js.map +1 -1
  27. package/dist/browser-process/fingerprint-config.d.ts +146 -0
  28. package/dist/browser-process/fingerprint-config.d.ts.map +1 -0
  29. package/dist/browser-process/fingerprint-config.js +308 -0
  30. package/dist/browser-process/fingerprint-config.js.map +1 -0
  31. package/dist/browser-process/get-chrome-executable.d.ts +6 -0
  32. package/dist/browser-process/get-chrome-executable.d.ts.map +1 -1
  33. package/dist/browser-process/get-chrome-executable.js +79 -4
  34. package/dist/browser-process/get-chrome-executable.js.map +1 -1
  35. package/dist/browser-process/gpu-family-profiles.d.ts +58 -0
  36. package/dist/browser-process/gpu-family-profiles.d.ts.map +1 -0
  37. package/dist/browser-process/gpu-family-profiles.js +480 -0
  38. package/dist/browser-process/gpu-family-profiles.js.map +1 -0
  39. package/dist/browser-process/launch-options.d.ts +301 -0
  40. package/dist/browser-process/launch-options.d.ts.map +1 -0
  41. package/dist/browser-process/launch-options.js +2 -0
  42. package/dist/browser-process/launch-options.js.map +1 -0
  43. package/dist/browser-process/port-allocator.d.ts +64 -0
  44. package/dist/browser-process/port-allocator.d.ts.map +1 -0
  45. package/dist/browser-process/port-allocator.js +198 -0
  46. package/dist/browser-process/port-allocator.js.map +1 -0
  47. package/dist/browser-process/process.d.ts +85 -0
  48. package/dist/browser-process/process.d.ts.map +1 -1
  49. package/dist/browser-process/process.js +235 -19
  50. package/dist/browser-process/process.js.map +1 -1
  51. package/dist/browser-process/signal-cleanup.d.ts +40 -0
  52. package/dist/browser-process/signal-cleanup.d.ts.map +1 -0
  53. package/dist/browser-process/signal-cleanup.js +105 -0
  54. package/dist/browser-process/signal-cleanup.js.map +1 -0
  55. package/dist/browser-process/widevine-cdm.d.ts +144 -0
  56. package/dist/browser-process/widevine-cdm.d.ts.map +1 -0
  57. package/dist/browser-process/widevine-cdm.js +298 -0
  58. package/dist/browser-process/widevine-cdm.js.map +1 -0
  59. package/dist/browser-profiles/chrome/populate-profile.d.ts.map +1 -1
  60. package/dist/browser-profiles/chrome/populate-profile.js +21 -22
  61. package/dist/browser-profiles/chrome/populate-profile.js.map +1 -1
  62. package/dist/connection/cdp-reconnection.d.ts +50 -0
  63. package/dist/connection/cdp-reconnection.d.ts.map +1 -0
  64. package/dist/connection/cdp-reconnection.js +75 -0
  65. package/dist/connection/cdp-reconnection.js.map +1 -0
  66. package/dist/connection/page-session.d.ts +114 -0
  67. package/dist/connection/page-session.d.ts.map +1 -0
  68. package/dist/connection/page-session.js +237 -0
  69. package/dist/connection/page-session.js.map +1 -0
  70. package/dist/connection/session-client.d.ts +34 -0
  71. package/dist/connection/session-client.d.ts.map +1 -0
  72. package/dist/connection/session-client.js +129 -0
  73. package/dist/connection/session-client.js.map +1 -0
  74. package/dist/crawler.d.ts +9 -88
  75. package/dist/crawler.d.ts.map +1 -1
  76. package/dist/crawler.js +157 -8
  77. package/dist/crawler.js.map +1 -1
  78. package/dist/fingerprinting/fingerprint-injector.d.ts +24 -114
  79. package/dist/fingerprinting/fingerprint-injector.d.ts.map +1 -1
  80. package/dist/fingerprinting/fingerprint-injector.js +305 -611
  81. package/dist/fingerprinting/fingerprint-injector.js.map +1 -1
  82. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.d.ts +1 -1
  83. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.d.ts.map +1 -1
  84. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js +16 -14
  85. package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js.map +1 -1
  86. package/dist/fingerprinting/fingerprint-overrides/index.d.ts +6 -2
  87. package/dist/fingerprinting/fingerprint-overrides/index.d.ts.map +1 -1
  88. package/dist/fingerprinting/fingerprint-overrides/index.js +6 -2
  89. package/dist/fingerprinting/fingerprint-overrides/index.js.map +1 -1
  90. package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.d.ts +1 -1
  91. package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js +4 -4
  92. package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js.map +1 -1
  93. package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.js +4 -4
  94. package/dist/fingerprinting/fingerprint-overrides/navigator-override.d.ts +18 -0
  95. package/dist/fingerprinting/fingerprint-overrides/navigator-override.d.ts.map +1 -0
  96. package/dist/fingerprinting/fingerprint-overrides/navigator-override.js +136 -0
  97. package/dist/fingerprinting/fingerprint-overrides/navigator-override.js.map +1 -0
  98. package/dist/fingerprinting/fingerprint-overrides/override.d.ts +151 -0
  99. package/dist/fingerprinting/fingerprint-overrides/override.d.ts.map +1 -0
  100. package/dist/fingerprinting/fingerprint-overrides/override.js +14 -0
  101. package/dist/fingerprinting/fingerprint-overrides/override.js.map +1 -0
  102. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.d.ts.map +1 -1
  103. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js +46 -15
  104. package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js.map +1 -1
  105. package/dist/fingerprinting/fingerprint-overrides/registry.d.ts +43 -0
  106. package/dist/fingerprinting/fingerprint-overrides/registry.d.ts.map +1 -0
  107. package/dist/fingerprinting/fingerprint-overrides/registry.js +342 -0
  108. package/dist/fingerprinting/fingerprint-overrides/registry.js.map +1 -0
  109. package/dist/fingerprinting/fingerprint-overrides/screen-override.d.ts +16 -0
  110. package/dist/fingerprinting/fingerprint-overrides/screen-override.d.ts.map +1 -0
  111. package/dist/fingerprinting/fingerprint-overrides/screen-override.js +175 -0
  112. package/dist/fingerprinting/fingerprint-overrides/screen-override.js.map +1 -0
  113. package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.d.ts +1 -1
  114. package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js +4 -4
  115. package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js.map +1 -1
  116. package/dist/fingerprinting/fingerprint-overrides/stealth-script.d.ts.map +1 -1
  117. package/dist/fingerprinting/fingerprint-overrides/stealth-script.js +75 -9
  118. package/dist/fingerprinting/fingerprint-overrides/stealth-script.js.map +1 -1
  119. package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts +1 -1
  120. package/dist/fingerprinting/fingerprint-overrides/ua-ch.d.ts.map +1 -1
  121. package/dist/fingerprinting/fingerprint-overrides/ua-ch.js +34 -20
  122. package/dist/fingerprinting/fingerprint-overrides/ua-ch.js.map +1 -1
  123. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.d.ts.map +1 -1
  124. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js +25 -6
  125. package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js.map +1 -1
  126. package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.js +1 -1
  127. package/dist/fingerprinting/hardware-realism.d.ts +83 -0
  128. package/dist/fingerprinting/hardware-realism.d.ts.map +1 -0
  129. package/dist/fingerprinting/hardware-realism.js +156 -0
  130. package/dist/fingerprinting/hardware-realism.js.map +1 -0
  131. package/dist/fingerprinting/injection-planner.d.ts +133 -0
  132. package/dist/fingerprinting/injection-planner.d.ts.map +1 -0
  133. package/dist/fingerprinting/injection-planner.js +497 -0
  134. package/dist/fingerprinting/injection-planner.js.map +1 -0
  135. package/dist/fingerprinting/locale-resolver.d.ts +8 -1
  136. package/dist/fingerprinting/locale-resolver.d.ts.map +1 -1
  137. package/dist/fingerprinting/locale-resolver.js +26 -3
  138. package/dist/fingerprinting/locale-resolver.js.map +1 -1
  139. package/dist/fingerprinting/non-apify-fingerprint-generator.d.ts +4 -4
  140. package/dist/fingerprinting/non-apify-fingerprint-generator.d.ts.map +1 -1
  141. package/dist/fingerprinting/non-apify-fingerprint-generator.js +24 -58
  142. package/dist/fingerprinting/non-apify-fingerprint-generator.js.map +1 -1
  143. package/dist/fingerprinting/non-apify-profiles.json +10515 -8494
  144. package/dist/fingerprinting/os-consistency.d.ts +28 -0
  145. package/dist/fingerprinting/os-consistency.d.ts.map +1 -0
  146. package/dist/fingerprinting/os-consistency.js +45 -0
  147. package/dist/fingerprinting/os-consistency.js.map +1 -0
  148. package/dist/fingerprinting/profile-quality.d.ts +25 -0
  149. package/dist/fingerprinting/profile-quality.d.ts.map +1 -0
  150. package/dist/fingerprinting/profile-quality.js +310 -0
  151. package/dist/fingerprinting/profile-quality.js.map +1 -0
  152. package/dist/fingerprinting/profile-selector.d.ts +102 -0
  153. package/dist/fingerprinting/profile-selector.d.ts.map +1 -0
  154. package/dist/fingerprinting/profile-selector.js +168 -0
  155. package/dist/fingerprinting/profile-selector.js.map +1 -0
  156. package/dist/fingerprinting/ua-alignment.d.ts +83 -0
  157. package/dist/fingerprinting/ua-alignment.d.ts.map +1 -0
  158. package/dist/fingerprinting/ua-alignment.js +197 -0
  159. package/dist/fingerprinting/ua-alignment.js.map +1 -0
  160. package/dist/fingerprinting/ua-ch-brands.d.ts +88 -0
  161. package/dist/fingerprinting/ua-ch-brands.d.ts.map +1 -0
  162. package/dist/fingerprinting/ua-ch-brands.js +174 -0
  163. package/dist/fingerprinting/ua-ch-brands.js.map +1 -0
  164. package/dist/index.d.ts +5 -0
  165. package/dist/index.d.ts.map +1 -1
  166. package/dist/index.js +6 -0
  167. package/dist/index.js.map +1 -1
  168. package/dist/input/dropdown-selector.d.ts +90 -0
  169. package/dist/input/dropdown-selector.d.ts.map +1 -0
  170. package/dist/input/dropdown-selector.js +394 -0
  171. package/dist/input/dropdown-selector.js.map +1 -0
  172. package/dist/input/element-target.d.ts +152 -0
  173. package/dist/input/element-target.d.ts.map +1 -0
  174. package/dist/input/element-target.js +461 -0
  175. package/dist/input/element-target.js.map +1 -0
  176. package/dist/input/input-emulator.d.ts +85 -0
  177. package/dist/input/input-emulator.d.ts.map +1 -0
  178. package/dist/input/input-emulator.js +325 -0
  179. package/dist/input/input-emulator.js.map +1 -0
  180. package/dist/input/input-transport.d.ts +60 -0
  181. package/dist/input/input-transport.d.ts.map +1 -0
  182. package/dist/input/input-transport.js +28 -0
  183. package/dist/input/input-transport.js.map +1 -0
  184. package/dist/input/recording-transport.d.ts +32 -0
  185. package/dist/input/recording-transport.d.ts.map +1 -0
  186. package/dist/input/recording-transport.js +43 -0
  187. package/dist/input/recording-transport.js.map +1 -0
  188. package/dist/keyboard-layout.d.ts +2 -2
  189. package/dist/keyboard-layout.js +2 -2
  190. package/dist/navigation/page-navigation.d.ts +67 -0
  191. package/dist/navigation/page-navigation.d.ts.map +1 -0
  192. package/dist/navigation/page-navigation.js +122 -0
  193. package/dist/navigation/page-navigation.js.map +1 -0
  194. package/dist/network/network-watch.d.ts +110 -0
  195. package/dist/network/network-watch.d.ts.map +1 -0
  196. package/dist/network/network-watch.js +223 -0
  197. package/dist/network/network-watch.js.map +1 -0
  198. package/dist/page.d.ts +118 -104
  199. package/dist/page.d.ts.map +1 -1
  200. package/dist/page.js +311 -1130
  201. package/dist/page.js.map +1 -1
  202. package/dist/session/inject-hook.d.ts +24 -0
  203. package/dist/session/inject-hook.d.ts.map +1 -0
  204. package/dist/session/inject-hook.js +80 -0
  205. package/dist/session/inject-hook.js.map +1 -0
  206. package/dist/session/save.d.ts +21 -0
  207. package/dist/session/save.d.ts.map +1 -0
  208. package/dist/session/save.js +163 -0
  209. package/dist/session/save.js.map +1 -0
  210. package/dist/session/tar-data-dir.d.ts +18 -0
  211. package/dist/session/tar-data-dir.d.ts.map +1 -0
  212. package/dist/session/tar-data-dir.js +105 -0
  213. package/dist/session/tar-data-dir.js.map +1 -0
  214. package/dist/session/types.d.ts +80 -0
  215. package/dist/session/types.d.ts.map +1 -0
  216. package/dist/session/types.js +29 -0
  217. package/dist/session/types.js.map +1 -0
  218. package/dist/session-profile.d.ts +102 -0
  219. package/dist/session-profile.d.ts.map +1 -0
  220. package/dist/session-profile.js +163 -0
  221. package/dist/session-profile.js.map +1 -0
  222. package/dist/tsconfig.build.tsbuildinfo +1 -1
  223. package/package.json +17 -6
  224. package/scripts/postinstall.cjs +58 -0
  225. package/dist/fingerprinting/custom-fingerprint-injector.d.ts +0 -87
  226. package/dist/fingerprinting/custom-fingerprint-injector.d.ts.map +0 -1
  227. package/dist/fingerprinting/custom-fingerprint-injector.js +0 -342
  228. package/dist/fingerprinting/custom-fingerprint-injector.js.map +0 -1
  229. package/dist/launcher-wrap.d.ts +0 -10
  230. package/dist/launcher-wrap.d.ts.map +0 -1
  231. package/dist/launcher-wrap.js +0 -11
  232. package/dist/launcher-wrap.js.map +0 -1
@@ -0,0 +1,480 @@
1
+ /**
2
+ * Per-GPU-family WebGL profile knowledge (M1–M7): the seven families the C++
3
+ * EmulatedConfig understands, the per-family constants table, and the
4
+ * renderer-string classifier. `deriveWebglFamilyProfile(renderer)` is the
5
+ * single seam `generateFingerprintConfig` consumes - config assembly never
6
+ * touches the table or the classification rules directly.
7
+ *
8
+ * Family ids must stay identical to the C++ `BaselineData::ForFamily(GpuFamily)`
9
+ * ids (third_party/blink/renderer/platform/graphics/emulated/baseline_data.cc).
10
+ */
11
+ const PLATFORM_GPU_TABLE = {
12
+ // Apple Silicon (M1/M2/M3/M4) via ANGLE Metal backend. Verified against
13
+ // 2026-05 harvest on real M3 Pro running Chromium 147.
14
+ apple_metal: {
15
+ maxTextureSize: 16384,
16
+ maxViewportDim: 16384,
17
+ maxDrawBuffers: 8,
18
+ maxSamples: 4,
19
+ max3dTextureSize: 16384,
20
+ maxArrayTextureLayers: 2048,
21
+ subpixelBits: 4,
22
+ maxTransformFeedbackInterleavedComponents: 64,
23
+ aliasedLineWidthRange: [1, 1],
24
+ aliasedPointSizeRange: [1, 511],
25
+ extensions: [
26
+ // TWO namespaces in one field, by design of the C++ consumers:
27
+ // GL_* -> the emulated GLES2 GL_EXTENSIONS string (context creation)
28
+ // rest -> the allowlist getSupportedExtensions() filters against
29
+ // The GL_ set is derived from what each WebGL extension Supported()
30
+ // check requires in blink/renderer/modules/webgl/*.cc; the WebGL set is
31
+ // the exact 36 real Chrome 151 reports on macOS 26.5.2.
32
+ 'GL_ANGLE_clip_cull_distance',
33
+ 'GL_ANGLE_compressed_texture_etc',
34
+ 'GL_ANGLE_instanced_arrays',
35
+ 'GL_ANGLE_multi_draw',
36
+ 'GL_ANGLE_polygon_mode',
37
+ 'GL_ANGLE_provoking_vertex',
38
+ 'GL_ANGLE_stencil_texturing',
39
+ 'GL_ANGLE_texture_compression_dxt1',
40
+ 'GL_ANGLE_texture_compression_dxt3',
41
+ 'GL_ANGLE_texture_compression_dxt5',
42
+ 'GL_ANGLE_translated_shader_source',
43
+ 'GL_EXT_blend_func_extended',
44
+ 'GL_EXT_clip_control',
45
+ 'GL_EXT_color_buffer_float',
46
+ 'GL_EXT_color_buffer_half_float',
47
+ 'GL_EXT_conservative_depth',
48
+ 'GL_EXT_depth_clamp',
49
+ 'GL_EXT_disjoint_timer_query',
50
+ 'GL_EXT_disjoint_timer_query_webgl2',
51
+ 'GL_EXT_float_blend',
52
+ 'GL_EXT_polygon_offset_clamp',
53
+ 'GL_EXT_render_snorm',
54
+ 'GL_EXT_texture_compression_bptc',
55
+ 'GL_EXT_texture_compression_dxt1',
56
+ 'GL_EXT_texture_compression_rgtc',
57
+ 'GL_EXT_texture_compression_s3tc',
58
+ 'GL_EXT_texture_compression_s3tc_srgb',
59
+ 'GL_EXT_texture_filter_anisotropic',
60
+ 'GL_EXT_texture_mirror_clamp_to_edge',
61
+ 'GL_EXT_texture_norm16',
62
+ 'GL_IMG_texture_compression_pvrtc',
63
+ 'GL_KHR_parallel_shader_compile',
64
+ 'GL_KHR_texture_compression_astc_hdr',
65
+ 'GL_KHR_texture_compression_astc_ldr',
66
+ 'GL_NV_shader_noperspective_interpolation',
67
+ 'GL_OES_compressed_ETC1_RGB8_texture',
68
+ 'GL_OES_draw_buffers_indexed',
69
+ 'GL_OES_packed_depth_stencil',
70
+ 'GL_OES_sample_variables',
71
+ 'GL_OES_shader_multisample_interpolation',
72
+ 'GL_OES_texture_float_linear',
73
+ 'GL_OES_texture_half_float',
74
+ 'GL_QCOM_render_shared_exponent',
75
+ 'GL_WEBGL_multi_draw',
76
+ 'EXT_clip_control',
77
+ 'EXT_color_buffer_float',
78
+ 'EXT_color_buffer_half_float',
79
+ 'EXT_conservative_depth',
80
+ 'EXT_depth_clamp',
81
+ 'EXT_disjoint_timer_query_webgl2',
82
+ 'EXT_float_blend',
83
+ 'EXT_polygon_offset_clamp',
84
+ 'EXT_render_snorm',
85
+ 'EXT_texture_compression_bptc',
86
+ 'EXT_texture_compression_rgtc',
87
+ 'EXT_texture_filter_anisotropic',
88
+ 'EXT_texture_mirror_clamp_to_edge',
89
+ 'EXT_texture_norm16',
90
+ 'KHR_parallel_shader_compile',
91
+ 'NV_shader_noperspective_interpolation',
92
+ 'OES_draw_buffers_indexed',
93
+ 'OES_sample_variables',
94
+ 'OES_shader_multisample_interpolation',
95
+ 'OES_texture_float_linear',
96
+ 'WEBGL_blend_func_extended',
97
+ 'WEBGL_clip_cull_distance',
98
+ 'WEBGL_compressed_texture_astc',
99
+ 'WEBGL_compressed_texture_etc',
100
+ 'WEBGL_compressed_texture_etc1',
101
+ 'WEBGL_compressed_texture_pvrtc',
102
+ 'WEBGL_compressed_texture_s3tc',
103
+ 'WEBGL_compressed_texture_s3tc_srgb',
104
+ 'WEBGL_debug_renderer_info',
105
+ 'WEBGL_debug_shaders',
106
+ 'WEBGL_lose_context',
107
+ 'WEBGL_multi_draw',
108
+ 'WEBGL_polygon_mode',
109
+ 'WEBGL_provoking_vertex',
110
+ 'WEBGL_render_shared_exponent',
111
+ 'WEBGL_stencil_texturing',
112
+ ],
113
+ },
114
+ // Linux + Mesa AMD radeonsi (radeon Vega/RDNA on a recent kernel + Mesa).
115
+ // Calibration: ANGLE OpenGL backend reports the underlying GLES strings.
116
+ linux_mesa_amd: {
117
+ maxTextureSize: 16384,
118
+ maxViewportDim: 16384,
119
+ maxDrawBuffers: 8,
120
+ maxSamples: 8,
121
+ max3dTextureSize: 16384,
122
+ maxArrayTextureLayers: 2048,
123
+ subpixelBits: 8, // Mesa typically advertises 8-bit subpixel precision
124
+ maxTransformFeedbackInterleavedComponents: 128,
125
+ aliasedLineWidthRange: [1, 16],
126
+ aliasedPointSizeRange: [1, 2047],
127
+ extensions: [
128
+ 'GL_OES_packed_depth_stencil',
129
+ 'GL_OES_texture_float',
130
+ 'GL_OES_texture_float_linear',
131
+ 'GL_OES_texture_half_float',
132
+ 'GL_OES_texture_half_float_linear',
133
+ 'GL_OES_element_index_uint',
134
+ 'GL_OES_vertex_array_object',
135
+ 'GL_OES_standard_derivatives',
136
+ 'GL_OES_fbo_render_mipmap',
137
+ 'GL_EXT_blend_minmax',
138
+ 'GL_EXT_color_buffer_float',
139
+ 'GL_EXT_color_buffer_half_float',
140
+ 'GL_EXT_disjoint_timer_query',
141
+ 'GL_EXT_float_blend',
142
+ 'GL_EXT_frag_depth',
143
+ 'GL_EXT_shader_texture_lod',
144
+ 'GL_EXT_sRGB',
145
+ 'GL_EXT_texture_compression_bptc',
146
+ 'GL_EXT_texture_compression_rgtc',
147
+ 'GL_EXT_texture_filter_anisotropic',
148
+ 'GL_KHR_parallel_shader_compile',
149
+ 'GL_WEBGL_color_buffer_float',
150
+ 'GL_WEBGL_compressed_texture_s3tc',
151
+ 'GL_WEBGL_compressed_texture_s3tc_srgb',
152
+ 'GL_WEBGL_debug_renderer_info',
153
+ 'GL_WEBGL_debug_shaders',
154
+ 'GL_WEBGL_depth_texture',
155
+ 'GL_WEBGL_draw_buffers',
156
+ 'GL_WEBGL_lose_context',
157
+ 'GL_WEBGL_multi_draw',
158
+ ],
159
+ },
160
+ // Linux + Mesa NVIDIA (open-source nouveau driver). Less common than the
161
+ // proprietary driver but a real population (Debian default w/o nonfree).
162
+ linux_mesa_nvidia: {
163
+ maxTextureSize: 16384,
164
+ maxViewportDim: 16384,
165
+ maxDrawBuffers: 8,
166
+ maxSamples: 8,
167
+ max3dTextureSize: 16384,
168
+ maxArrayTextureLayers: 2048,
169
+ subpixelBits: 8,
170
+ maxTransformFeedbackInterleavedComponents: 128,
171
+ aliasedLineWidthRange: [1, 10.4375],
172
+ aliasedPointSizeRange: [1, 63.375],
173
+ extensions: [
174
+ 'GL_OES_packed_depth_stencil',
175
+ 'GL_OES_texture_float',
176
+ 'GL_OES_texture_float_linear',
177
+ 'GL_OES_texture_half_float',
178
+ 'GL_OES_texture_half_float_linear',
179
+ 'GL_OES_element_index_uint',
180
+ 'GL_OES_vertex_array_object',
181
+ 'GL_OES_standard_derivatives',
182
+ 'GL_OES_fbo_render_mipmap',
183
+ 'GL_EXT_blend_minmax',
184
+ 'GL_EXT_color_buffer_float',
185
+ 'GL_EXT_color_buffer_half_float',
186
+ 'GL_EXT_disjoint_timer_query',
187
+ 'GL_EXT_float_blend',
188
+ 'GL_EXT_frag_depth',
189
+ 'GL_EXT_shader_texture_lod',
190
+ 'GL_EXT_sRGB',
191
+ 'GL_EXT_texture_compression_bptc',
192
+ 'GL_EXT_texture_compression_rgtc',
193
+ 'GL_EXT_texture_filter_anisotropic',
194
+ 'GL_KHR_parallel_shader_compile',
195
+ 'GL_WEBGL_color_buffer_float',
196
+ 'GL_WEBGL_compressed_texture_s3tc',
197
+ 'GL_WEBGL_compressed_texture_s3tc_srgb',
198
+ 'GL_WEBGL_debug_renderer_info',
199
+ 'GL_WEBGL_debug_shaders',
200
+ 'GL_WEBGL_depth_texture',
201
+ 'GL_WEBGL_draw_buffers',
202
+ 'GL_WEBGL_lose_context',
203
+ 'GL_WEBGL_multi_draw',
204
+ ],
205
+ },
206
+ // Linux + Mesa Intel (most common Linux laptop config - UHD/Iris/Iris Xe).
207
+ linux_mesa_intel: {
208
+ maxTextureSize: 16384,
209
+ maxViewportDim: 16384,
210
+ maxDrawBuffers: 8,
211
+ maxSamples: 8, // Intel UHD typically 8; older HD 4000 family = 4
212
+ max3dTextureSize: 2048, // Intel HD class iGPU is limited here vs discrete
213
+ maxArrayTextureLayers: 2048,
214
+ subpixelBits: 8,
215
+ maxTransformFeedbackInterleavedComponents: 128,
216
+ aliasedLineWidthRange: [1, 7.375],
217
+ aliasedPointSizeRange: [1, 255],
218
+ extensions: [
219
+ 'GL_OES_packed_depth_stencil',
220
+ 'GL_OES_texture_float',
221
+ 'GL_OES_texture_float_linear',
222
+ 'GL_OES_texture_half_float',
223
+ 'GL_OES_texture_half_float_linear',
224
+ 'GL_OES_element_index_uint',
225
+ 'GL_OES_vertex_array_object',
226
+ 'GL_OES_standard_derivatives',
227
+ 'GL_OES_fbo_render_mipmap',
228
+ 'GL_EXT_blend_minmax',
229
+ 'GL_EXT_color_buffer_float',
230
+ 'GL_EXT_color_buffer_half_float',
231
+ 'GL_EXT_disjoint_timer_query',
232
+ 'GL_EXT_float_blend',
233
+ 'GL_EXT_frag_depth',
234
+ 'GL_EXT_shader_texture_lod',
235
+ 'GL_EXT_sRGB',
236
+ 'GL_EXT_texture_compression_bptc',
237
+ 'GL_EXT_texture_compression_rgtc',
238
+ 'GL_EXT_texture_filter_anisotropic',
239
+ 'GL_KHR_parallel_shader_compile',
240
+ 'GL_WEBGL_color_buffer_float',
241
+ 'GL_WEBGL_compressed_texture_s3tc',
242
+ 'GL_WEBGL_compressed_texture_s3tc_srgb',
243
+ 'GL_WEBGL_debug_renderer_info',
244
+ 'GL_WEBGL_debug_shaders',
245
+ 'GL_WEBGL_depth_texture',
246
+ 'GL_WEBGL_draw_buffers',
247
+ 'GL_WEBGL_lose_context',
248
+ 'GL_WEBGL_multi_draw',
249
+ ],
250
+ },
251
+ // Windows + D3D11 NVIDIA - calibrated against a real GeForce RTX session.
252
+ // Notable D3D quirks: ALIASED_LINE_WIDTH_RANGE = [1, 7.375], MAX_SAMPLES = 8.
253
+ windows_d3d_nvidia: {
254
+ maxTextureSize: 16384,
255
+ maxViewportDim: 16384,
256
+ maxDrawBuffers: 8,
257
+ maxSamples: 8,
258
+ max3dTextureSize: 2048,
259
+ maxArrayTextureLayers: 2048,
260
+ subpixelBits: 4,
261
+ maxTransformFeedbackInterleavedComponents: 128,
262
+ aliasedLineWidthRange: [1, 7.375],
263
+ aliasedPointSizeRange: [1, 1023],
264
+ extensions: [
265
+ 'GL_OES_packed_depth_stencil',
266
+ 'GL_OES_texture_float',
267
+ 'GL_OES_texture_float_linear',
268
+ 'GL_OES_texture_half_float',
269
+ 'GL_OES_texture_half_float_linear',
270
+ 'GL_OES_element_index_uint',
271
+ 'GL_OES_vertex_array_object',
272
+ 'GL_OES_standard_derivatives',
273
+ 'GL_OES_fbo_render_mipmap',
274
+ 'GL_EXT_blend_minmax',
275
+ 'GL_EXT_color_buffer_float',
276
+ 'GL_EXT_color_buffer_half_float',
277
+ 'GL_EXT_disjoint_timer_query',
278
+ 'GL_EXT_float_blend',
279
+ 'GL_EXT_frag_depth',
280
+ 'GL_EXT_shader_texture_lod',
281
+ 'GL_EXT_sRGB',
282
+ 'GL_EXT_texture_compression_bptc',
283
+ 'GL_EXT_texture_compression_rgtc',
284
+ 'GL_EXT_texture_filter_anisotropic',
285
+ 'GL_KHR_parallel_shader_compile',
286
+ 'GL_WEBGL_color_buffer_float',
287
+ 'GL_WEBGL_compressed_texture_s3tc',
288
+ 'GL_WEBGL_compressed_texture_s3tc_srgb',
289
+ 'GL_WEBGL_debug_renderer_info',
290
+ 'GL_WEBGL_debug_shaders',
291
+ 'GL_WEBGL_depth_texture',
292
+ 'GL_WEBGL_draw_buffers',
293
+ 'GL_WEBGL_lose_context',
294
+ 'GL_WEBGL_multi_draw',
295
+ ],
296
+ },
297
+ // Windows + D3D11 AMD Radeon - calibrated against a real Radeon RX session.
298
+ windows_d3d_amd: {
299
+ maxTextureSize: 16384,
300
+ maxViewportDim: 16384,
301
+ maxDrawBuffers: 8,
302
+ maxSamples: 8,
303
+ max3dTextureSize: 2048,
304
+ maxArrayTextureLayers: 2048,
305
+ subpixelBits: 4,
306
+ maxTransformFeedbackInterleavedComponents: 128,
307
+ aliasedLineWidthRange: [1, 7.375],
308
+ aliasedPointSizeRange: [1, 1023],
309
+ extensions: [
310
+ 'GL_OES_packed_depth_stencil',
311
+ 'GL_OES_texture_float',
312
+ 'GL_OES_texture_float_linear',
313
+ 'GL_OES_texture_half_float',
314
+ 'GL_OES_texture_half_float_linear',
315
+ 'GL_OES_element_index_uint',
316
+ 'GL_OES_vertex_array_object',
317
+ 'GL_OES_standard_derivatives',
318
+ 'GL_OES_fbo_render_mipmap',
319
+ 'GL_EXT_blend_minmax',
320
+ 'GL_EXT_color_buffer_float',
321
+ 'GL_EXT_color_buffer_half_float',
322
+ 'GL_EXT_disjoint_timer_query',
323
+ 'GL_EXT_float_blend',
324
+ 'GL_EXT_frag_depth',
325
+ 'GL_EXT_shader_texture_lod',
326
+ 'GL_EXT_sRGB',
327
+ 'GL_EXT_texture_compression_bptc',
328
+ 'GL_EXT_texture_compression_rgtc',
329
+ 'GL_EXT_texture_filter_anisotropic',
330
+ 'GL_KHR_parallel_shader_compile',
331
+ 'GL_WEBGL_color_buffer_float',
332
+ 'GL_WEBGL_compressed_texture_s3tc',
333
+ 'GL_WEBGL_compressed_texture_s3tc_srgb',
334
+ 'GL_WEBGL_debug_renderer_info',
335
+ 'GL_WEBGL_debug_shaders',
336
+ 'GL_WEBGL_depth_texture',
337
+ 'GL_WEBGL_draw_buffers',
338
+ 'GL_WEBGL_lose_context',
339
+ 'GL_WEBGL_multi_draw',
340
+ ],
341
+ },
342
+ // Windows + D3D11 Intel - UHD 620/630/770 + Iris Xe. Notably lower
343
+ // max3dTextureSize on older HD class. Iris Xe in practice matches modern
344
+ // limits; we use the conservative iGPU values here.
345
+ windows_d3d_intel: {
346
+ maxTextureSize: 16384,
347
+ maxViewportDim: 16384,
348
+ maxDrawBuffers: 8,
349
+ maxSamples: 8,
350
+ max3dTextureSize: 2048,
351
+ maxArrayTextureLayers: 2048,
352
+ subpixelBits: 4,
353
+ maxTransformFeedbackInterleavedComponents: 64,
354
+ aliasedLineWidthRange: [1, 7.375],
355
+ aliasedPointSizeRange: [1, 255],
356
+ extensions: [
357
+ 'GL_OES_packed_depth_stencil',
358
+ 'GL_OES_texture_float',
359
+ 'GL_OES_texture_float_linear',
360
+ 'GL_OES_texture_half_float',
361
+ 'GL_OES_texture_half_float_linear',
362
+ 'GL_OES_element_index_uint',
363
+ 'GL_OES_vertex_array_object',
364
+ 'GL_OES_standard_derivatives',
365
+ 'GL_OES_fbo_render_mipmap',
366
+ 'GL_EXT_blend_minmax',
367
+ 'GL_EXT_color_buffer_float',
368
+ 'GL_EXT_color_buffer_half_float',
369
+ 'GL_EXT_disjoint_timer_query',
370
+ 'GL_EXT_float_blend',
371
+ 'GL_EXT_frag_depth',
372
+ 'GL_EXT_shader_texture_lod',
373
+ 'GL_EXT_sRGB',
374
+ 'GL_EXT_texture_compression_bptc',
375
+ 'GL_EXT_texture_compression_rgtc',
376
+ 'GL_EXT_texture_filter_anisotropic',
377
+ 'GL_KHR_parallel_shader_compile',
378
+ 'GL_WEBGL_color_buffer_float',
379
+ 'GL_WEBGL_compressed_texture_s3tc',
380
+ 'GL_WEBGL_compressed_texture_s3tc_srgb',
381
+ 'GL_WEBGL_debug_renderer_info',
382
+ 'GL_WEBGL_debug_shaders',
383
+ 'GL_WEBGL_depth_texture',
384
+ 'GL_WEBGL_draw_buffers',
385
+ 'GL_WEBGL_lose_context',
386
+ 'GL_WEBGL_multi_draw',
387
+ ],
388
+ },
389
+ };
390
+ /**
391
+ * Classify the renderer string emitted by fingerprint-generator into one of the
392
+ * seven GPU families known to the C++ EmulatedConfig. Returns undefined when
393
+ * the renderer doesn't match a known family (e.g. SwiftShader / llvmpipe ANGLE
394
+ * fallback) - the caller should not write a familyHint in that case so the
395
+ * binary falls through to its current Mac-realistic defaults.
396
+ *
397
+ * The match order matters: more specific patterns (D3D11 vs OpenGL ES) must
398
+ * come before broader ones (vendor-only) so e.g. "ANGLE (NVIDIA, ... Direct3D11"
399
+ * is classified as windows_d3d_nvidia rather than linux_mesa_nvidia.
400
+ */
401
+ export function classifyWebglRenderer(renderer) {
402
+ const r = renderer.toLowerCase();
403
+ // Windows + D3D11 backend - distinctive substring "direct3d11" or " d3d11"
404
+ // (ANGLE renderer strings on Windows always contain Direct3D11).
405
+ if (r.includes('direct3d11') || r.includes('d3d11')) {
406
+ if (r.includes('nvidia'))
407
+ return 'windows_d3d_nvidia';
408
+ if (r.includes('amd') || r.includes('radeon') || r.includes('ati '))
409
+ return 'windows_d3d_amd';
410
+ if (r.includes('intel'))
411
+ return 'windows_d3d_intel';
412
+ // Unknown vendor on D3D11 - fall through to default
413
+ return undefined;
414
+ }
415
+ // Apple Metal - "ANGLE Metal Renderer:" or "Apple M[0-9]"
416
+ if (r.includes('apple metal') || r.includes('angle metal') || /apple m[0-9]/i.test(r) || r.includes('apple silicon')) {
417
+ return 'apple_metal';
418
+ }
419
+ // Linux + Mesa - distinctive substrings: "mesa ", "(radeonsi", "(nouveau"
420
+ // or "OpenGL ES" or "OpenGL 4." outside of an Apple/D3D context.
421
+ if (r.includes('mesa') || r.includes('radeonsi') || r.includes('nouveau') || r.includes('llvmpipe')) {
422
+ if (r.includes('nvidia') || r.includes('nouveau'))
423
+ return 'linux_mesa_nvidia';
424
+ if (r.includes('amd') || r.includes('radeon') || r.includes('radeonsi') || r.includes('ati '))
425
+ return 'linux_mesa_amd';
426
+ if (r.includes('intel'))
427
+ return 'linux_mesa_intel';
428
+ return undefined;
429
+ }
430
+ // Bare "OpenGL ES" with a vendor - common Mesa shape that doesn't include
431
+ // the word "mesa" in the renderer string (e.g. "ANGLE (NVIDIA, ..., OpenGL ES 3.2)").
432
+ if (r.includes('opengl es') || r.includes(', opengl 4.')) {
433
+ if (r.includes('nvidia'))
434
+ return 'linux_mesa_nvidia';
435
+ if (r.includes('amd') || r.includes('radeon'))
436
+ return 'linux_mesa_amd';
437
+ if (r.includes('intel'))
438
+ return 'linux_mesa_intel';
439
+ }
440
+ return undefined;
441
+ }
442
+ /**
443
+ * Default GPU family for a navigator.platform when the renderer string itself
444
+ * didn't classify (SwiftShader / llvmpipe / exotic strings). Picking the
445
+ * platform's most common iGPU family keeps the emulated WebGL *parameters*
446
+ * (max_samples, aliased_*_range, extensions, …) coherent with the OS instead
447
+ * of leaking Apple-Silicon param values onto a Linux/Windows profile.
448
+ *
449
+ * Returns undefined for an unknown/absent platform so the caller preserves the
450
+ * historical apple_metal fallback (back-compat for callers that don't thread a
451
+ * platform through).
452
+ */
453
+ function defaultFamilyForPlatform(platform) {
454
+ if (!platform)
455
+ return undefined;
456
+ if (platform === 'Linux x86_64' || /linux/i.test(platform))
457
+ return 'linux_mesa_intel';
458
+ if (platform === 'Win32' || /win/i.test(platform))
459
+ return 'windows_d3d_intel';
460
+ if (platform === 'MacIntel' || /mac/i.test(platform))
461
+ return 'apple_metal';
462
+ return undefined;
463
+ }
464
+ /**
465
+ * Resolve the WebglFamilyProfile to use for a given renderer string.
466
+ *
467
+ * Priority: classify the renderer → else a platform-appropriate default family
468
+ * (so emulated WebGL params stay OS-coherent) → else the apple_metal profile
469
+ * (the C++ EmulatedConfig's historical hardcoded default) when neither the
470
+ * renderer nor the platform is known.
471
+ *
472
+ * Threading `platform` is what stops a Linux/Windows profile whose renderer the
473
+ * classifier missed from inheriting Apple-Silicon WebGL parameters.
474
+ */
475
+ export function deriveWebglFamilyProfile(renderer, platform) {
476
+ const family = classifyWebglRenderer(renderer) ?? defaultFamilyForPlatform(platform);
477
+ const profile = family ? PLATFORM_GPU_TABLE[family] : PLATFORM_GPU_TABLE.apple_metal;
478
+ return { family, profile };
479
+ }
480
+ //# sourceMappingURL=gpu-family-profiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gpu-family-profiles.js","sourceRoot":"","sources":["../../src/browser-process/gpu-family-profiles.ts"],"names":[],"mappings":"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"}