@rakay-technology/kraft 0.7.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 (504) hide show
  1. package/README.md +263 -0
  2. package/dist/bare-HL2GUYE2.js +27 -0
  3. package/dist/bowser-HNOTPGJO.js +2825 -0
  4. package/dist/chunk-3CJLKL6E.js +124 -0
  5. package/dist/chunk-3NQQXMDR.js +2098 -0
  6. package/dist/chunk-42WQABXM.js +439 -0
  7. package/dist/chunk-5GPXMTE4.js +25 -0
  8. package/dist/chunk-AJ4QZLZ2.js +1069 -0
  9. package/dist/chunk-AO252K7Z.js +137 -0
  10. package/dist/chunk-BQMFIXHI.js +975 -0
  11. package/dist/chunk-DM3PKWDC.js +2453 -0
  12. package/dist/chunk-DOD2BXHQ.js +1364 -0
  13. package/dist/chunk-DRK3MEDS.js +2870 -0
  14. package/dist/chunk-EW4PHKB2.js +13914 -0
  15. package/dist/chunk-HMJUFZK7.js +340 -0
  16. package/dist/chunk-I2TOOF2A.js +517 -0
  17. package/dist/chunk-I3DPMTSF.js +29 -0
  18. package/dist/chunk-JSCZT76F.js +2588 -0
  19. package/dist/chunk-MNV2QFHW.js +138 -0
  20. package/dist/chunk-MOLPYPVH.js +2529 -0
  21. package/dist/chunk-N4OALTFK.js +295 -0
  22. package/dist/chunk-OFXBNFNL.js +458 -0
  23. package/dist/chunk-ONKEYSMY.js +1388 -0
  24. package/dist/chunk-PDW4L3NV.js +17 -0
  25. package/dist/chunk-PNNXWA2A.js +1947 -0
  26. package/dist/chunk-PNRPKRJU.js +11105 -0
  27. package/dist/chunk-PVOWHIND.js +26781 -0
  28. package/dist/chunk-PXKCZB2I.js +46 -0
  29. package/dist/chunk-PZVKPCKE.js +475 -0
  30. package/dist/chunk-QWHBRY2K.js +4945 -0
  31. package/dist/chunk-RFOBMHQ7.js +338 -0
  32. package/dist/chunk-RHLNVZMS.js +28 -0
  33. package/dist/chunk-RVER2EOO.js +577 -0
  34. package/dist/chunk-S3QBGGVP.js +81 -0
  35. package/dist/chunk-TAML5WMA.js +198 -0
  36. package/dist/chunk-THTEUDBC.js +3188 -0
  37. package/dist/chunk-WYNM7L22.js +329 -0
  38. package/dist/chunk-XGCG4MD5.js +102 -0
  39. package/dist/chunk-XVKUFMIB.js +148 -0
  40. package/dist/chunk-XZYFZ6A5.js +50 -0
  41. package/dist/chunk-Y7PVJUXJ.js +2275 -0
  42. package/dist/chunk-YRSZPVMB.js +306 -0
  43. package/dist/chunk-YZUKHG3S.js +362 -0
  44. package/dist/chunk-ZVFS4LUA.js +116 -0
  45. package/dist/chunk-ZWLDLTJP.js +1417 -0
  46. package/dist/detect-676SNZK4.js +48 -0
  47. package/dist/dist-es-2YRDXMUU.js +73 -0
  48. package/dist/dist-es-CCVZEFRZ.js +91 -0
  49. package/dist/dist-es-EDUSMF6Q.js +488 -0
  50. package/dist/dist-es-IOH6G4GM.js +380 -0
  51. package/dist/dist-es-KWSMDPIP.js +26 -0
  52. package/dist/dist-es-UYDDOVZ3.js +173 -0
  53. package/dist/dist-es-XUOR4NQN.js +321 -0
  54. package/dist/docker-GOT3Q7DJ.js +41 -0
  55. package/dist/docker-edge-executor-VO6JHHW2.js +19 -0
  56. package/dist/edge-import-NFCHIW7G.js +50 -0
  57. package/dist/edge-preflight-QUJ757C6.js +45 -0
  58. package/dist/ensure-container-edge-Q7IZXHGM.js +38 -0
  59. package/dist/event-streams-TR4GAC53.js +46 -0
  60. package/dist/executor-GKXKN52K.js +42 -0
  61. package/dist/host-channel-preflight-Z6HYSPKO.js +48 -0
  62. package/dist/index.d.ts +2 -0
  63. package/dist/index.js +9469 -0
  64. package/dist/loadSso-UGF4JMRK.js +581 -0
  65. package/dist/local-executor-OMMDKXCM.js +13 -0
  66. package/dist/nginx-VITTWZZU.js +42 -0
  67. package/dist/node-bootstrap.js +277 -0
  68. package/dist/node-entry.js +55 -0
  69. package/dist/noop-CLLJHCPL.js +11 -0
  70. package/dist/openresty-lua-6I3Z6PEQ.js +90 -0
  71. package/dist/privilege-UQAI2HV4.js +20 -0
  72. package/dist/server/engine/ChangeLog +2289 -0
  73. package/dist/server/engine/Documentations +5 -0
  74. package/dist/server/engine/LICENSE +674 -0
  75. package/dist/server/engine/README.md +34 -0
  76. package/dist/server/engine/conf/amavisd +150 -0
  77. package/dist/server/engine/conf/clamav +71 -0
  78. package/dist/server/engine/conf/core +632 -0
  79. package/dist/server/engine/conf/dovecot +151 -0
  80. package/dist/server/engine/conf/fail2ban +72 -0
  81. package/dist/server/engine/conf/global +698 -0
  82. package/dist/server/engine/conf/iredapd +52 -0
  83. package/dist/server/engine/conf/logwatch +28 -0
  84. package/dist/server/engine/conf/postfix +97 -0
  85. package/dist/server/engine/conf/postgresql +93 -0
  86. package/dist/server/engine/conf/spamassassin +39 -0
  87. package/dist/server/engine/dialog/config_via_dialog.sh +258 -0
  88. package/dist/server/engine/dialog/optional_components.sh +122 -0
  89. package/dist/server/engine/dialog/pgsql_config.sh +52 -0
  90. package/dist/server/engine/dialog/virtual_domain_config.sh +94 -0
  91. package/dist/server/engine/functions/amavisd.sh +267 -0
  92. package/dist/server/engine/functions/backend.sh +85 -0
  93. package/dist/server/engine/functions/clamav.sh +100 -0
  94. package/dist/server/engine/functions/cleanup.sh +393 -0
  95. package/dist/server/engine/functions/dovecot.sh +583 -0
  96. package/dist/server/engine/functions/fail2ban.sh +209 -0
  97. package/dist/server/engine/functions/iredapd.sh +356 -0
  98. package/dist/server/engine/functions/optional_components.sh +24 -0
  99. package/dist/server/engine/functions/packages.sh +522 -0
  100. package/dist/server/engine/functions/packages_freebsd.sh +179 -0
  101. package/dist/server/engine/functions/postfix.sh +457 -0
  102. package/dist/server/engine/functions/postgresql.sh +239 -0
  103. package/dist/server/engine/functions/spamassassin.sh +49 -0
  104. package/dist/server/engine/functions/system_accounts.sh +128 -0
  105. package/dist/server/engine/iRedMail.sh +144 -0
  106. package/dist/server/engine/pkgs/get_all.sh +338 -0
  107. package/dist/server/engine/pkgs/pkgs.freebsd.sha256 +3 -0
  108. package/dist/server/engine/pkgs/pkgs.openbsd.sha256 +6 -0
  109. package/dist/server/engine/pkgs/pkgs.sha256 +1 -0
  110. package/dist/server/engine/samples/amavisd/amavisd.conf +702 -0
  111. package/dist/server/engine/samples/amavisd/amavisd.mysql +278 -0
  112. package/dist/server/engine/samples/amavisd/amavisd.pgsql +253 -0
  113. package/dist/server/engine/samples/amavisd/amavisd.schema +942 -0
  114. package/dist/server/engine/samples/amavisd/default_spam_policy.sql +46 -0
  115. package/dist/server/engine/samples/dovecot/dovecot-2.4-mariadb.conf +758 -0
  116. package/dist/server/engine/samples/dovecot/dovecot-2.4-openldap.conf +767 -0
  117. package/dist/server/engine/samples/dovecot/dovecot-2.4-pgsql.conf +762 -0
  118. package/dist/server/engine/samples/dovecot/dovecot-last-login.conf +50 -0
  119. package/dist/server/engine/samples/dovecot/dovecot-ldap.conf +21 -0
  120. package/dist/server/engine/samples/dovecot/dovecot-share-folder.conf +22 -0
  121. package/dist/server/engine/samples/dovecot/dovecot-sql.conf +28 -0
  122. package/dist/server/engine/samples/dovecot/dovecot-used-quota.conf +13 -0
  123. package/dist/server/engine/samples/dovecot/dovecot.conf +484 -0
  124. package/dist/server/engine/samples/dovecot/dovecot.sieve +7 -0
  125. package/dist/server/engine/samples/dovecot/dovecot2-quota-warning.sh +38 -0
  126. package/dist/server/engine/samples/dovecot/sql/imap_share_folder.mysql +16 -0
  127. package/dist/server/engine/samples/dovecot/sql/last_login.mysql +12 -0
  128. package/dist/server/engine/samples/dovecot/sql/used_quota.mysql +26 -0
  129. package/dist/server/engine/samples/dovecot/systemd/override.conf +3 -0
  130. package/dist/server/engine/samples/fail2ban/action.d/banned_db.conf +9 -0
  131. package/dist/server/engine/samples/fail2ban/bin/fail2ban_banned_db +268 -0
  132. package/dist/server/engine/samples/fail2ban/fail2ban.local +17 -0
  133. package/dist/server/engine/samples/fail2ban/filter.d/dovecot.iredmail.conf +5 -0
  134. package/dist/server/engine/samples/fail2ban/filter.d/postfix-pregreet.iredmail.conf +16 -0
  135. package/dist/server/engine/samples/fail2ban/filter.d/postfix.iredmail.conf +18 -0
  136. package/dist/server/engine/samples/fail2ban/filter.d/roundcube.iredmail.conf +9 -0
  137. package/dist/server/engine/samples/fail2ban/jail.d/dovecot.local +8 -0
  138. package/dist/server/engine/samples/fail2ban/jail.d/nginx-http-auth.local +8 -0
  139. package/dist/server/engine/samples/fail2ban/jail.d/postfix-pregreet.local +9 -0
  140. package/dist/server/engine/samples/fail2ban/jail.d/postfix.local +8 -0
  141. package/dist/server/engine/samples/fail2ban/jail.d/roundcube.local +9 -0
  142. package/dist/server/engine/samples/fail2ban/jail.d/sogo.local +8 -0
  143. package/dist/server/engine/samples/fail2ban/jail.d/sshd.local +11 -0
  144. package/dist/server/engine/samples/fail2ban/jail.local +6 -0
  145. package/dist/server/engine/samples/fail2ban/openbsd/rc +27 -0
  146. package/dist/server/engine/samples/fail2ban/sql/fail2ban.mysql +49 -0
  147. package/dist/server/engine/samples/fail2ban/sql/fail2ban.pgsql +48 -0
  148. package/dist/server/engine/samples/firewall/firewalld/services/ssh.xml +6 -0
  149. package/dist/server/engine/samples/firewall/firewalld/zones/iredmail.xml +15 -0
  150. package/dist/server/engine/samples/firewall/iptables/ip6tables.init.debian +362 -0
  151. package/dist/server/engine/samples/firewall/iptables/ip6tables.rules +53 -0
  152. package/dist/server/engine/samples/firewall/iptables/iptables.init.debian +363 -0
  153. package/dist/server/engine/samples/firewall/iptables/iptables.rules +54 -0
  154. package/dist/server/engine/samples/firewall/nftables.conf +58 -0
  155. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/dovecot.conf +3 -0
  156. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/iredapd.conf +1 -0
  157. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/mlmmjadmin.conf +1 -0
  158. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/php-fpm.conf +2 -0
  159. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/slapd.conf +1 -0
  160. package/dist/server/engine/samples/freebsd/syslog.d/dovecot.conf +2 -0
  161. package/dist/server/engine/samples/freebsd/syslog.d/fail2ban.conf +2 -0
  162. package/dist/server/engine/samples/freebsd/syslog.d/iredapd.conf +2 -0
  163. package/dist/server/engine/samples/freebsd/syslog.d/mlmmjadmin.conf +2 -0
  164. package/dist/server/engine/samples/freebsd/syslog.d/php-fpm.conf +2 -0
  165. package/dist/server/engine/samples/freebsd/syslog.d/slapd.conf +2 -0
  166. package/dist/server/engine/samples/iredmail/iredmail.mysql +491 -0
  167. package/dist/server/engine/samples/iredmail/iredmail.pgsql +465 -0
  168. package/dist/server/engine/samples/iredmail/iredmail.schema +456 -0
  169. package/dist/server/engine/samples/iredmail/used_quota_triggers_dovecot_2.3.pgsql +40 -0
  170. package/dist/server/engine/samples/iredmail/used_quota_triggers_dovecot_2.4.pgsql +18 -0
  171. package/dist/server/engine/samples/logrotate/dovecot +13 -0
  172. package/dist/server/engine/samples/logrotate/iredapd +13 -0
  173. package/dist/server/engine/samples/logrotate/mlmmjadmin +13 -0
  174. package/dist/server/engine/samples/logrotate/openldap +19 -0
  175. package/dist/server/engine/samples/logrotate/php-fpm +13 -0
  176. package/dist/server/engine/samples/openbsd/ldapd.conf +58 -0
  177. package/dist/server/engine/samples/openbsd/pf.conf +28 -0
  178. package/dist/server/engine/samples/postfix/command_filter.pcre +3 -0
  179. package/dist/server/engine/samples/postfix/freebsd/mailer.conf +9 -0
  180. package/dist/server/engine/samples/postfix/helo_access.pcre +180 -0
  181. package/dist/server/engine/samples/postfix/ldap/catchall_maps.cf +11 -0
  182. package/dist/server/engine/samples/postfix/ldap/recipient_bcc_maps_domain.cf +11 -0
  183. package/dist/server/engine/samples/postfix/ldap/recipient_bcc_maps_user.cf +11 -0
  184. package/dist/server/engine/samples/postfix/ldap/relay_domains.cf +11 -0
  185. package/dist/server/engine/samples/postfix/ldap/sender_bcc_maps_domain.cf +11 -0
  186. package/dist/server/engine/samples/postfix/ldap/sender_bcc_maps_user.cf +11 -0
  187. package/dist/server/engine/samples/postfix/ldap/sender_dependent_relayhost_maps_domain.cf +11 -0
  188. package/dist/server/engine/samples/postfix/ldap/sender_dependent_relayhost_maps_user.cf +11 -0
  189. package/dist/server/engine/samples/postfix/ldap/sender_login_maps.cf +11 -0
  190. package/dist/server/engine/samples/postfix/ldap/transport_maps_domain.cf +11 -0
  191. package/dist/server/engine/samples/postfix/ldap/transport_maps_user.cf +11 -0
  192. package/dist/server/engine/samples/postfix/ldap/virtual_alias_maps.cf +11 -0
  193. package/dist/server/engine/samples/postfix/ldap/virtual_group_maps.cf +11 -0
  194. package/dist/server/engine/samples/postfix/ldap/virtual_group_members_maps.cf +11 -0
  195. package/dist/server/engine/samples/postfix/ldap/virtual_mailbox_domains.cf +11 -0
  196. package/dist/server/engine/samples/postfix/ldap/virtual_mailbox_maps.cf +12 -0
  197. package/dist/server/engine/samples/postfix/main.cf +282 -0
  198. package/dist/server/engine/samples/postfix/main.cf.amavisd +7 -0
  199. package/dist/server/engine/samples/postfix/main.cf.dovecot +8 -0
  200. package/dist/server/engine/samples/postfix/main.cf.ldap +39 -0
  201. package/dist/server/engine/samples/postfix/main.cf.mlmmj +5 -0
  202. package/dist/server/engine/samples/postfix/main.cf.mysql +39 -0
  203. package/dist/server/engine/samples/postfix/main.cf.pgsql +39 -0
  204. package/dist/server/engine/samples/postfix/main.cf.postscreen +30 -0
  205. package/dist/server/engine/samples/postfix/master.cf +101 -0
  206. package/dist/server/engine/samples/postfix/mysql/catchall_maps.cf +5 -0
  207. package/dist/server/engine/samples/postfix/mysql/domain_alias_catchall_maps.cf +5 -0
  208. package/dist/server/engine/samples/postfix/mysql/domain_alias_maps.cf +5 -0
  209. package/dist/server/engine/samples/postfix/mysql/recipient_bcc_maps_domain.cf +5 -0
  210. package/dist/server/engine/samples/postfix/mysql/recipient_bcc_maps_user.cf +5 -0
  211. package/dist/server/engine/samples/postfix/mysql/relay_domains.cf +5 -0
  212. package/dist/server/engine/samples/postfix/mysql/sender_bcc_maps_domain.cf +5 -0
  213. package/dist/server/engine/samples/postfix/mysql/sender_bcc_maps_user.cf +5 -0
  214. package/dist/server/engine/samples/postfix/mysql/sender_dependent_relayhost_maps.cf +6 -0
  215. package/dist/server/engine/samples/postfix/mysql/sender_login_maps.cf +5 -0
  216. package/dist/server/engine/samples/postfix/mysql/transport_maps_domain.cf +5 -0
  217. package/dist/server/engine/samples/postfix/mysql/transport_maps_maillist.cf +5 -0
  218. package/dist/server/engine/samples/postfix/mysql/transport_maps_user.cf +5 -0
  219. package/dist/server/engine/samples/postfix/mysql/virtual_alias_maps.cf +5 -0
  220. package/dist/server/engine/samples/postfix/mysql/virtual_mailbox_domains.cf +5 -0
  221. package/dist/server/engine/samples/postfix/mysql/virtual_mailbox_maps.cf +5 -0
  222. package/dist/server/engine/samples/postfix/pgsql/catchall_maps.cf +5 -0
  223. package/dist/server/engine/samples/postfix/pgsql/domain_alias_catchall_maps.cf +5 -0
  224. package/dist/server/engine/samples/postfix/pgsql/domain_alias_maps.cf +5 -0
  225. package/dist/server/engine/samples/postfix/pgsql/recipient_bcc_maps_domain.cf +5 -0
  226. package/dist/server/engine/samples/postfix/pgsql/recipient_bcc_maps_user.cf +5 -0
  227. package/dist/server/engine/samples/postfix/pgsql/relay_domains.cf +5 -0
  228. package/dist/server/engine/samples/postfix/pgsql/sender_bcc_maps_domain.cf +5 -0
  229. package/dist/server/engine/samples/postfix/pgsql/sender_bcc_maps_user.cf +5 -0
  230. package/dist/server/engine/samples/postfix/pgsql/sender_dependent_relayhost_maps.cf +6 -0
  231. package/dist/server/engine/samples/postfix/pgsql/sender_login_maps.cf +5 -0
  232. package/dist/server/engine/samples/postfix/pgsql/transport_maps_domain.cf +5 -0
  233. package/dist/server/engine/samples/postfix/pgsql/transport_maps_maillist.cf +5 -0
  234. package/dist/server/engine/samples/postfix/pgsql/transport_maps_user.cf +5 -0
  235. package/dist/server/engine/samples/postfix/pgsql/virtual_alias_maps.cf +5 -0
  236. package/dist/server/engine/samples/postfix/pgsql/virtual_mailbox_domains.cf +5 -0
  237. package/dist/server/engine/samples/postfix/pgsql/virtual_mailbox_maps.cf +5 -0
  238. package/dist/server/engine/samples/postfix/postscreen_access.cidr +6 -0
  239. package/dist/server/engine/samples/postgresql/sql/add_first_domain_and_user.sql +34 -0
  240. package/dist/server/engine/samples/postgresql/sql/grant_permissions.sql +14 -0
  241. package/dist/server/engine/samples/postgresql/sql/init_vmail_db.sql +15 -0
  242. package/dist/server/engine/samples/rsyslog.d/1-iredmail-dovecot.conf +23 -0
  243. package/dist/server/engine/samples/rsyslog.d/1-iredmail-fail2ban.conf +2 -0
  244. package/dist/server/engine/samples/rsyslog.d/1-iredmail-iredapd.conf +12 -0
  245. package/dist/server/engine/samples/rsyslog.d/1-iredmail-mlmmjadmin.conf +12 -0
  246. package/dist/server/engine/samples/rsyslog.d/1-iredmail-openldap.conf +2 -0
  247. package/dist/server/engine/samples/rsyslog.d/1-iredmail-phpfpm.conf +3 -0
  248. package/dist/server/engine/samples/spamassassin/local.cf +186 -0
  249. package/dist/server/engine/samples/spamassassin/razor.conf +1 -0
  250. package/dist/server/engine/samples/systemd/clamd.service.d/override.conf +2 -0
  251. package/dist/server/engine/samples/systemd/mariadb.service.d/override.conf +3 -0
  252. package/dist/server/engine/samples/systemd/slapd.service.d/override.conf +6 -0
  253. package/dist/server/engine/samples/yum/CentOS-Linux-AppStream.repo +6 -0
  254. package/dist/server/engine/samples/yum/CentOS-Linux-PowerTools.repo +6 -0
  255. package/dist/server/engine/samples/yum/CentOS-Stream-AppStream.repo +7 -0
  256. package/dist/server/engine/samples/yum/CentOS-Stream-PowerTools.repo +7 -0
  257. package/dist/server/engine/samples/yum/symas-openldap.repo +6 -0
  258. package/dist/server/engine/tools/add_enabled_service.py +60 -0
  259. package/dist/server/engine/tools/backup_mysql.sh +238 -0
  260. package/dist/server/engine/tools/backup_openldap.sh +230 -0
  261. package/dist/server/engine/tools/backup_pgsql.sh +217 -0
  262. package/dist/server/engine/tools/backup_sogo.sh +156 -0
  263. package/dist/server/engine/tools/create_mail_user_OpenLDAP.py +335 -0
  264. package/dist/server/engine/tools/create_mail_user_OpenLDAP.sh +287 -0
  265. package/dist/server/engine/tools/create_mail_user_SQL.sh +127 -0
  266. package/dist/server/engine/tools/enable_postscreen.sh +144 -0
  267. package/dist/server/engine/tools/fail2ban_unban_ip.sh +39 -0
  268. package/dist/server/engine/tools/find_sasl_login_ip.sh +20 -0
  269. package/dist/server/engine/tools/find_top_sasl_usernames.sh +28 -0
  270. package/dist/server/engine/tools/generate_ssl_keys.sh +85 -0
  271. package/dist/server/engine/tools/kill_high_cpu_sogo_process.sh +32 -0
  272. package/dist/server/engine/tools/ldap_assign_user_to_groups.py +151 -0
  273. package/dist/server/engine/tools/ldap_move_members_to_another_group.py +129 -0
  274. package/dist/server/engine/tools/migrate_sql_alias_table.py +177 -0
  275. package/dist/server/engine/update/0.9.8/amavisd.mysql +29 -0
  276. package/dist/server/engine/update/0.9.8/amavisd.pgsql +39 -0
  277. package/dist/server/engine/update/0.9.8/iredmail.mysql +53 -0
  278. package/dist/server/engine/update/0.9.8/iredmail.pgsql +61 -0
  279. package/dist/server/engine/update/0.9.9/iredmail.mysql +2 -0
  280. package/dist/server/engine/update/0.9.9/iredmail.pgsql +2 -0
  281. package/dist/server/engine/update/1.0/iredmail.mysql +2 -0
  282. package/dist/server/engine/update/1.0/iredmail.pgsql +2 -0
  283. package/dist/server/engine/update/1.2/last_login.mysql +16 -0
  284. package/dist/server/engine/update/1.4.0/iredmail.mysql +22 -0
  285. package/dist/server/engine/update/1.4.0/iredmail.pgsql +20 -0
  286. package/dist/server/engine/update/1.4.1/iredmail.mysql +3 -0
  287. package/dist/server/engine/update/1.4.1/iredmail.pgsql +3 -0
  288. package/dist/server/engine/update/1.4.1/sogo.mysql +11 -0
  289. package/dist/server/engine/update/1.4.1/sogo.pgsql +30 -0
  290. package/dist/server/engine/update/1.4.1/update-ldap.py +66 -0
  291. package/dist/server/engine/update/1.4.2/iredmail.mysql +9 -0
  292. package/dist/server/engine/update/1.4.2/iredmail.pgsql +9 -0
  293. package/dist/server/engine/update/1.4.2/sogo.pgsql +30 -0
  294. package/dist/server/engine/update/1.6.0/sogo_view.pgsql +27 -0
  295. package/dist/server/engine/update/1.6.3/iredmail.mysql +1 -0
  296. package/dist/server/engine/update/1.7.0/fail2ban.mysql +11 -0
  297. package/dist/server/engine/update/1.7.0/fail2ban.pgsql +12 -0
  298. package/dist/server/engine/update/1.7.1/amavisd.mysql +1 -0
  299. package/dist/server/engine/update/1.7.2/vmail.mysql +30 -0
  300. package/dist/server/engine/update/1.7.3/deleted_mailboxes.mysql +43 -0
  301. package/dist/server/engine/update/1.7.3/iredadmin.mysql +26 -0
  302. package/dist/server/engine/update/1.7.3/vmail.mysql +79 -0
  303. package/dist/server/engine/update/1.7.3/vmail.pgsql +9 -0
  304. package/dist/server/engine/update/README.md +1 -0
  305. package/dist/server/engine/update/ldap/README.md +39 -0
  306. package/dist/server/engine/update/ldap/update-ldap-dovecot-2.3.py +69 -0
  307. package/dist/server/index.js +349016 -0
  308. package/dist/server/lua/geo_country.lua +127 -0
  309. package/dist/server/lua/maxminddb.lua +403 -0
  310. package/dist/server/lua/mgmt_api.lua +654 -0
  311. package/dist/server/lua/pipe_stream.lua +103 -0
  312. package/dist/server/lua/rules_guard.lua +132 -0
  313. package/dist/server/lua/rules_lib.lua +176 -0
  314. package/dist/server/lua/site_logger.lua +405 -0
  315. package/dist/server/lua/webhook_handler.lua +126 -0
  316. package/dist/server/migrations/0000_init.sql +666 -0
  317. package/dist/server/migrations/0001_brief_tomorrow_man.sql +47 -0
  318. package/dist/server/migrations/0002_funny_dazzler.sql +2 -0
  319. package/dist/server/migrations/0003_third_killer_shrike.sql +1 -0
  320. package/dist/server/migrations/0004_session_active_org_not_null.sql +10 -0
  321. package/dist/server/migrations/0005_warm_amazoness.sql +3 -0
  322. package/dist/server/migrations/0006_lumpy_joystick.sql +1 -0
  323. package/dist/server/migrations/0007_outgoing_maginty.sql +2 -0
  324. package/dist/server/migrations/0008_frozen_cutover.sql +3 -0
  325. package/dist/server/migrations/0009_credits_billing.sql +142 -0
  326. package/dist/server/migrations/0010_credit_grant_dedupe.sql +14 -0
  327. package/dist/server/migrations/0011_remove_credit_ledger.sql +23 -0
  328. package/dist/server/migrations/0012_smart_deploys_and_git_rollback.sql +81 -0
  329. package/dist/server/migrations/0013_fix_check_run_rollup_unique.sql +38 -0
  330. package/dist/server/migrations/0014_default_rollback_git.sql +9 -0
  331. package/dist/server/migrations/0015_billing_idempotency_grants.sql +41 -0
  332. package/dist/server/migrations/0016_github_auth_high_findings.sql +30 -0
  333. package/dist/server/migrations/0017_spooky_rumiko_fujikawa.sql +6 -0
  334. package/dist/server/migrations/0018_calm_shatterstar.sql +1 -0
  335. package/dist/server/migrations/0019_rename_workspace_install_to_prepare.sql +1 -0
  336. package/dist/server/migrations/0020_uneven_the_renegades.sql +13 -0
  337. package/dist/server/migrations/0021_shiny_firestar.sql +2 -0
  338. package/dist/server/migrations/0022_version_on_success_backfill.sql +6 -0
  339. package/dist/server/migrations/0023_productive_gorilla_man.sql +17 -0
  340. package/dist/server/migrations/0024_sleepy_peter_quill.sql +2 -0
  341. package/dist/server/migrations/0025_smooth_blue_shield.sql +1 -0
  342. package/dist/server/migrations/0026_mail_backup_source.sql +11 -0
  343. package/dist/server/migrations/0027_opposite_anthem.sql +6 -0
  344. package/dist/server/migrations/0028_stale_rogue.sql +18 -0
  345. package/dist/server/migrations/0029_bouncy_loners.sql +16 -0
  346. package/dist/server/migrations/0030_bright_darkstar.sql +6 -0
  347. package/dist/server/migrations/0031_conscious_catseye.sql +13 -0
  348. package/dist/server/migrations/0032_wet_mimic.sql +51 -0
  349. package/dist/server/migrations/0033_eminent_molly_hayes.sql +2 -0
  350. package/dist/server/migrations/0034_nervous_surge.sql +1 -0
  351. package/dist/server/migrations/0035_thankful_morgan_stark.sql +1 -0
  352. package/dist/server/migrations/0036_gorgeous_scalphunter.sql +17 -0
  353. package/dist/server/migrations/0037_clever_makkari.sql +28 -0
  354. package/dist/server/migrations/0038_young_magneto.sql +1 -0
  355. package/dist/server/migrations/0039_secret_lady_ursula.sql +15 -0
  356. package/dist/server/migrations/0040_sharp_red_wolf.sql +16 -0
  357. package/dist/server/migrations/0041_round_spyke.sql +4 -0
  358. package/dist/server/migrations/0042_dapper_havok.sql +1 -0
  359. package/dist/server/migrations/0043_fast_sharon_ventura.sql +15 -0
  360. package/dist/server/migrations/0044_amused_shape.sql +8 -0
  361. package/dist/server/migrations/0045_amusing_korath.sql +1 -0
  362. package/dist/server/migrations/0046_white_harrier.sql +35 -0
  363. package/dist/server/migrations/0047_sloppy_strong_guy.sql +2 -0
  364. package/dist/server/migrations/0048_funny_emma_frost.sql +2 -0
  365. package/dist/server/migrations/0049_nappy_piledriver.sql +3 -0
  366. package/dist/server/migrations/0050_add_service_deployment_image_digest.sql +1 -0
  367. package/dist/server/migrations/0051_add_update_status.sql +19 -0
  368. package/dist/server/migrations/0052_add_notice_target.sql +2 -0
  369. package/dist/server/migrations/0053_colossal_sandman.sql +14 -0
  370. package/dist/server/migrations/0054_add_instance_smtp.sql +5 -0
  371. package/dist/server/migrations/0055_rainy_klaw.sql +22 -0
  372. package/dist/server/migrations/0056_moaning_daredevil.sql +2 -0
  373. package/dist/server/migrations/0057_complete_prism.sql +18 -0
  374. package/dist/server/migrations/0058_add_server_is_local.sql +1 -0
  375. package/dist/server/migrations/0059_legal_fixer.sql +18 -0
  376. package/dist/server/migrations/0060_add_route_strategy_host_port.sql +3 -0
  377. package/dist/server/migrations/0061_notification_default_multi_kind.sql +3 -0
  378. package/dist/server/migrations/0062_add_incoming_webhook.sql +21 -0
  379. package/dist/server/migrations/0063_add_migration_logs.sql +1 -0
  380. package/dist/server/migrations/0064_add_migration_partial.sql +2 -0
  381. package/dist/server/migrations/0065_custom_app_template.sql +14 -0
  382. package/dist/server/migrations/0066_ensure_migration_partial_columns.sql +2 -0
  383. package/dist/server/migrations/0067_webhook_delivery.sql +28 -0
  384. package/dist/server/migrations/0068_add_migration_target_volumes.sql +1 -0
  385. package/dist/server/migrations/0069_add_project_composite_routes.sql +1 -0
  386. package/dist/server/migrations/0070_forward_git_to_server.sql +1 -0
  387. package/dist/server/migrations/0071_gh_device_token.sql +3 -0
  388. package/dist/server/migrations/0072_gh_device_token_method.sql +1 -0
  389. package/dist/server/migrations/0073_project_volumes_object_storage.sql +3 -0
  390. package/dist/server/migrations/0074_project_compose_path.sql +1 -0
  391. package/dist/server/migrations/0075_service_command_argv.sql +1 -0
  392. package/dist/server/migrations/0076_rollback_retention.sql +17 -0
  393. package/dist/server/migrations/0077_domain_redirect.sql +13 -0
  394. package/dist/server/migrations/0078_grant_source_scope.sql +30 -0
  395. package/dist/server/migrations/0079_project_readiness.sql +18 -0
  396. package/dist/server/migrations/0080_deployment_error_classification.sql +26 -0
  397. package/dist/server/migrations/0081_project_readiness_repair.sql +34 -0
  398. package/dist/server/migrations/0082_edge_target_verification.sql +39 -0
  399. package/dist/server/migrations/0083_service_incident.sql +84 -0
  400. package/dist/server/migrations/0084_analytics_daily_rollup.sql +72 -0
  401. package/dist/server/migrations/0085_resource_usage.sql +68 -0
  402. package/dist/server/migrations/0086_remote_infra_updates.sql +41 -0
  403. package/dist/server/migrations/0087_server_container_version_columns.sql +17 -0
  404. package/dist/server/migrations/0088_audit_source_and_settings.sql +27 -0
  405. package/dist/server/migrations/0089_auto_scan_infra.sql +7 -0
  406. package/dist/server/migrations/0090_project_collect_paths.sql +18 -0
  407. package/dist/server/migrations/0091_project_server_id.sql +26 -0
  408. package/dist/server/migrations/0092_project_internal_alias.sql +13 -0
  409. package/dist/server/migrations/0093_service_incident_org_index.sql +13 -0
  410. package/dist/server/migrations/0094_backup_restore_meta.sql +15 -0
  411. package/dist/server/migrations/0095_backup_restore_cancel.sql +19 -0
  412. package/dist/server/migrations/0096_backup_policy_retention_defaults.sql +20 -0
  413. package/dist/server/migrations/0097_update_status_upstream_only.sql +35 -0
  414. package/dist/server/migrations/0098_instance_product_mode.sql +12 -0
  415. package/dist/server/migrations/0099_mail_webmail_project.sql +24 -0
  416. package/dist/server/migrations/0100_server_ssh_private_key.sql +11 -0
  417. package/dist/server/migrations/0101_mail_resume_step.sql +12 -0
  418. package/dist/server/migrations/0102_project_workload_axes.sql +19 -0
  419. package/dist/server/migrations/0103_dns_credential.sql +41 -0
  420. package/dist/server/migrations/0104_instance_host_control.sql +15 -0
  421. package/dist/server/migrations/0105_mail_inbound_rules.sql +80 -0
  422. package/dist/server/migrations/0106_mcp_call_tracking.sql +23 -0
  423. package/dist/server/migrations/0107_build_minute_metering_indexes.sql +20 -0
  424. package/dist/server/migrations/0108_credential.sql +68 -0
  425. package/dist/server/migrations/0109_service_build_args.sql +9 -0
  426. package/dist/server/migrations/0110_service_deployment_host_ports.sql +18 -0
  427. package/dist/server/migrations/0111_host_port_claim.sql +381 -0
  428. package/dist/server/migrations/0112_backup_run_execution_lease.sql +12 -0
  429. package/dist/server/migrations/0113_docker_migration_execution_lease.sql +11 -0
  430. package/dist/server/migrations/0114_build_session_execution_lease_index.sql +6 -0
  431. package/dist/server/migrations/0115_orphan_target_key.sql +3 -0
  432. package/dist/server/migrations/0116_domain_ssl_challenge.sql +2 -0
  433. package/dist/server/migrations/0117_github_installation_workspace_scope.sql +24 -0
  434. package/dist/server/migrations/0118_git_sources.sql +66 -0
  435. package/dist/server/migrations/0119_backup_run_batch.sql +8 -0
  436. package/dist/server/migrations/0120_domain_primary_unique.sql +24 -0
  437. package/dist/server/migrations/0121_host_port_claim_overlap.sql +14 -0
  438. package/dist/server/migrations/0122_data_transfer_staging.sql +45 -0
  439. package/dist/server/migrations/0123_drop_cloud_infra.sql +7 -0
  440. package/dist/server/migrations/0124_mail_dmarc_report.sql +23 -0
  441. package/dist/server/migrations/0125_server_security_snapshot.sql +22 -0
  442. package/dist/server/migrations/meta/0000_snapshot.json +4848 -0
  443. package/dist/server/migrations/meta/0001_snapshot.json +4991 -0
  444. package/dist/server/migrations/meta/0002_snapshot.json +5013 -0
  445. package/dist/server/migrations/meta/0003_snapshot.json +5020 -0
  446. package/dist/server/migrations/meta/0004_snapshot.json +5020 -0
  447. package/dist/server/migrations/meta/0005_snapshot.json +5039 -0
  448. package/dist/server/migrations/meta/0006_snapshot.json +5045 -0
  449. package/dist/server/migrations/meta/0007_snapshot.json +5057 -0
  450. package/dist/server/migrations/meta/0016_snapshot.json +6053 -0
  451. package/dist/server/migrations/meta/0017_snapshot.json +6091 -0
  452. package/dist/server/migrations/meta/0018_snapshot.json +6098 -0
  453. package/dist/server/migrations/meta/0019_snapshot.json +6098 -0
  454. package/dist/server/migrations/meta/0020_snapshot.json +6201 -0
  455. package/dist/server/migrations/meta/0021_snapshot.json +6213 -0
  456. package/dist/server/migrations/meta/0022_snapshot.json +6213 -0
  457. package/dist/server/migrations/meta/0023_snapshot.json +6331 -0
  458. package/dist/server/migrations/meta/0024_snapshot.json +6343 -0
  459. package/dist/server/migrations/meta/0025_snapshot.json +6350 -0
  460. package/dist/server/migrations/meta/0026_snapshot.json +6440 -0
  461. package/dist/server/migrations/meta/0027_snapshot.json +6447 -0
  462. package/dist/server/migrations/meta/0028_snapshot.json +6581 -0
  463. package/dist/server/migrations/meta/0029_snapshot.json +6710 -0
  464. package/dist/server/migrations/meta/0030_snapshot.json +6748 -0
  465. package/dist/server/migrations/meta/0031_snapshot.json +6859 -0
  466. package/dist/server/migrations/meta/0032_snapshot.json +7222 -0
  467. package/dist/server/migrations/meta/0033_snapshot.json +7249 -0
  468. package/dist/server/migrations/meta/0034_snapshot.json +7255 -0
  469. package/dist/server/migrations/meta/0035_snapshot.json +7262 -0
  470. package/dist/server/migrations/meta/0036_snapshot.json +7392 -0
  471. package/dist/server/migrations/meta/0037_snapshot.json +7602 -0
  472. package/dist/server/migrations/meta/0038_snapshot.json +7609 -0
  473. package/dist/server/migrations/meta/0039_snapshot.json +7714 -0
  474. package/dist/server/migrations/meta/0040_snapshot.json +7820 -0
  475. package/dist/server/migrations/meta/0041_snapshot.json +7833 -0
  476. package/dist/server/migrations/meta/0042_snapshot.json +7839 -0
  477. package/dist/server/migrations/meta/0043_snapshot.json +7938 -0
  478. package/dist/server/migrations/meta/0044_snapshot.json +7982 -0
  479. package/dist/server/migrations/meta/0045_snapshot.json +7989 -0
  480. package/dist/server/migrations/meta/0046_snapshot.json +8263 -0
  481. package/dist/server/migrations/meta/0047_snapshot.json +8275 -0
  482. package/dist/server/migrations/meta/0048_snapshot.json +8289 -0
  483. package/dist/server/migrations/meta/0049_snapshot.json +8308 -0
  484. package/dist/server/migrations/meta/0050_snapshot.json +8314 -0
  485. package/dist/server/migrations/meta/0051_snapshot.json +8460 -0
  486. package/dist/server/migrations/meta/0052_snapshot.json +8472 -0
  487. package/dist/server/migrations/meta/0053_snapshot.json +8556 -0
  488. package/dist/server/migrations/meta/0054_snapshot.json +8586 -0
  489. package/dist/server/migrations/meta/0055_snapshot.json +8756 -0
  490. package/dist/server/migrations/meta/0056_snapshot.json +8777 -0
  491. package/dist/server/migrations/meta/0057_snapshot.json +8904 -0
  492. package/dist/server/migrations/meta/0058_snapshot.json +8911 -0
  493. package/dist/server/migrations/meta/0059_snapshot.json +9061 -0
  494. package/dist/server/migrations/meta/0060_snapshot.json +9081 -0
  495. package/dist/server/migrations/meta/_journal.json +888 -0
  496. package/dist/server/pglite/pglite.data +0 -0
  497. package/dist/server/pglite/pglite.wasm +0 -0
  498. package/dist/setup-JWKZIECM.js +25 -0
  499. package/dist/signin-3M3UPB6K.js +667 -0
  500. package/dist/ssh-client-NWQVRCV7.js +29 -0
  501. package/dist/sso-oidc-3VDIYOEJ.js +834 -0
  502. package/dist/sts-B3WIYLXR.js +1426 -0
  503. package/dist/up-P5DMQ5YO.js +55 -0
  504. package/package.json +58 -0
@@ -0,0 +1,2825 @@
1
+ #!/usr/bin/env sh
2
+ ":" //# ; exec "$(command -v node || command -v bun)" "$0" "$@"
3
+ import { createRequire as __ospCreateRequire } from "node:module";
4
+ const require = __ospCreateRequire(import.meta.url);
5
+ import "./chunk-PXKCZB2I.js";
6
+
7
+ // ../../node_modules/bowser/src/constants.js
8
+ var BROWSER_ALIASES_MAP = {
9
+ AmazonBot: "amazonbot",
10
+ "Amazon Silk": "amazon_silk",
11
+ "Android Browser": "android",
12
+ BaiduSpider: "baiduspider",
13
+ Bada: "bada",
14
+ BingCrawler: "bingcrawler",
15
+ Brave: "brave",
16
+ BlackBerry: "blackberry",
17
+ "ChatGPT-User": "chatgpt_user",
18
+ Chrome: "chrome",
19
+ ClaudeBot: "claudebot",
20
+ Chromium: "chromium",
21
+ Diffbot: "diffbot",
22
+ DuckDuckBot: "duckduckbot",
23
+ DuckDuckGo: "duckduckgo",
24
+ Electron: "electron",
25
+ Epiphany: "epiphany",
26
+ FacebookExternalHit: "facebookexternalhit",
27
+ Firefox: "firefox",
28
+ Focus: "focus",
29
+ Generic: "generic",
30
+ "Google Search": "google_search",
31
+ Googlebot: "googlebot",
32
+ GPTBot: "gptbot",
33
+ "Internet Explorer": "ie",
34
+ InternetArchiveCrawler: "internetarchivecrawler",
35
+ "K-Meleon": "k_meleon",
36
+ LibreWolf: "librewolf",
37
+ Linespider: "linespider",
38
+ Maxthon: "maxthon",
39
+ "Meta-ExternalAds": "meta_externalads",
40
+ "Meta-ExternalAgent": "meta_externalagent",
41
+ "Meta-ExternalFetcher": "meta_externalfetcher",
42
+ "Meta-WebIndexer": "meta_webindexer",
43
+ "Microsoft Edge": "edge",
44
+ "MZ Browser": "mz",
45
+ "NAVER Whale Browser": "naver",
46
+ "OAI-SearchBot": "oai_searchbot",
47
+ Omgilibot: "omgilibot",
48
+ Opera: "opera",
49
+ "Opera Coast": "opera_coast",
50
+ "Pale Moon": "pale_moon",
51
+ PerplexityBot: "perplexitybot",
52
+ "Perplexity-User": "perplexity_user",
53
+ PhantomJS: "phantomjs",
54
+ PingdomBot: "pingdombot",
55
+ Puffin: "puffin",
56
+ QQ: "qq",
57
+ QQLite: "qqlite",
58
+ QupZilla: "qupzilla",
59
+ Roku: "roku",
60
+ Safari: "safari",
61
+ Sailfish: "sailfish",
62
+ "Samsung Internet for Android": "samsung_internet",
63
+ SlackBot: "slackbot",
64
+ SeaMonkey: "seamonkey",
65
+ Sleipnir: "sleipnir",
66
+ "Sogou Browser": "sogou",
67
+ Swing: "swing",
68
+ Tizen: "tizen",
69
+ "UC Browser": "uc",
70
+ Vivaldi: "vivaldi",
71
+ "WebOS Browser": "webos",
72
+ WeChat: "wechat",
73
+ YahooSlurp: "yahooslurp",
74
+ "Yandex Browser": "yandex",
75
+ YandexBot: "yandexbot",
76
+ YouBot: "youbot"
77
+ };
78
+ var BROWSER_MAP = {
79
+ amazonbot: "AmazonBot",
80
+ amazon_silk: "Amazon Silk",
81
+ android: "Android Browser",
82
+ baiduspider: "BaiduSpider",
83
+ bada: "Bada",
84
+ bingcrawler: "BingCrawler",
85
+ blackberry: "BlackBerry",
86
+ brave: "Brave",
87
+ chatgpt_user: "ChatGPT-User",
88
+ chrome: "Chrome",
89
+ claudebot: "ClaudeBot",
90
+ chromium: "Chromium",
91
+ diffbot: "Diffbot",
92
+ duckduckbot: "DuckDuckBot",
93
+ duckduckgo: "DuckDuckGo",
94
+ edge: "Microsoft Edge",
95
+ electron: "Electron",
96
+ epiphany: "Epiphany",
97
+ facebookexternalhit: "FacebookExternalHit",
98
+ firefox: "Firefox",
99
+ focus: "Focus",
100
+ generic: "Generic",
101
+ google_search: "Google Search",
102
+ googlebot: "Googlebot",
103
+ gptbot: "GPTBot",
104
+ ie: "Internet Explorer",
105
+ internetarchivecrawler: "InternetArchiveCrawler",
106
+ k_meleon: "K-Meleon",
107
+ librewolf: "LibreWolf",
108
+ linespider: "Linespider",
109
+ maxthon: "Maxthon",
110
+ meta_externalads: "Meta-ExternalAds",
111
+ meta_externalagent: "Meta-ExternalAgent",
112
+ meta_externalfetcher: "Meta-ExternalFetcher",
113
+ meta_webindexer: "Meta-WebIndexer",
114
+ mz: "MZ Browser",
115
+ naver: "NAVER Whale Browser",
116
+ oai_searchbot: "OAI-SearchBot",
117
+ omgilibot: "Omgilibot",
118
+ opera: "Opera",
119
+ opera_coast: "Opera Coast",
120
+ pale_moon: "Pale Moon",
121
+ perplexitybot: "PerplexityBot",
122
+ perplexity_user: "Perplexity-User",
123
+ phantomjs: "PhantomJS",
124
+ pingdombot: "PingdomBot",
125
+ puffin: "Puffin",
126
+ qq: "QQ Browser",
127
+ qqlite: "QQ Browser Lite",
128
+ qupzilla: "QupZilla",
129
+ roku: "Roku",
130
+ safari: "Safari",
131
+ sailfish: "Sailfish",
132
+ samsung_internet: "Samsung Internet for Android",
133
+ seamonkey: "SeaMonkey",
134
+ slackbot: "SlackBot",
135
+ sleipnir: "Sleipnir",
136
+ sogou: "Sogou Browser",
137
+ swing: "Swing",
138
+ tizen: "Tizen",
139
+ uc: "UC Browser",
140
+ vivaldi: "Vivaldi",
141
+ webos: "WebOS Browser",
142
+ wechat: "WeChat",
143
+ yahooslurp: "YahooSlurp",
144
+ yandex: "Yandex Browser",
145
+ yandexbot: "YandexBot",
146
+ youbot: "YouBot"
147
+ };
148
+ var PLATFORMS_MAP = {
149
+ bot: "bot",
150
+ desktop: "desktop",
151
+ mobile: "mobile",
152
+ tablet: "tablet",
153
+ tv: "tv"
154
+ };
155
+ var OS_MAP = {
156
+ Android: "Android",
157
+ Bada: "Bada",
158
+ BlackBerry: "BlackBerry",
159
+ ChromeOS: "Chrome OS",
160
+ HarmonyOS: "HarmonyOS",
161
+ iOS: "iOS",
162
+ Linux: "Linux",
163
+ MacOS: "macOS",
164
+ PlayStation4: "PlayStation 4",
165
+ Roku: "Roku",
166
+ Tizen: "Tizen",
167
+ WebOS: "WebOS",
168
+ Windows: "Windows",
169
+ WindowsPhone: "Windows Phone"
170
+ };
171
+ var ENGINE_MAP = {
172
+ Blink: "Blink",
173
+ EdgeHTML: "EdgeHTML",
174
+ Gecko: "Gecko",
175
+ Presto: "Presto",
176
+ Trident: "Trident",
177
+ WebKit: "WebKit"
178
+ };
179
+
180
+ // ../../node_modules/bowser/src/utils.js
181
+ var Utils = class _Utils {
182
+ /**
183
+ * Get first matched item for a string
184
+ * @param {RegExp} regexp
185
+ * @param {String} ua
186
+ * @return {Array|{index: number, input: string}|*|boolean|string}
187
+ */
188
+ static getFirstMatch(regexp, ua) {
189
+ const match = ua.match(regexp);
190
+ return match && match.length > 0 && match[1] || "";
191
+ }
192
+ /**
193
+ * Get second matched item for a string
194
+ * @param regexp
195
+ * @param {String} ua
196
+ * @return {Array|{index: number, input: string}|*|boolean|string}
197
+ */
198
+ static getSecondMatch(regexp, ua) {
199
+ const match = ua.match(regexp);
200
+ return match && match.length > 1 && match[2] || "";
201
+ }
202
+ /**
203
+ * Match a regexp and return a constant or undefined
204
+ * @param {RegExp} regexp
205
+ * @param {String} ua
206
+ * @param {*} _const Any const that will be returned if regexp matches the string
207
+ * @return {*}
208
+ */
209
+ static matchAndReturnConst(regexp, ua, _const) {
210
+ if (regexp.test(ua)) {
211
+ return _const;
212
+ }
213
+ return void 0;
214
+ }
215
+ static getWindowsVersionName(version) {
216
+ switch (version) {
217
+ case "NT":
218
+ return "NT";
219
+ case "XP":
220
+ return "XP";
221
+ case "NT 5.0":
222
+ return "2000";
223
+ case "NT 5.1":
224
+ return "XP";
225
+ case "NT 5.2":
226
+ return "2003";
227
+ case "NT 6.0":
228
+ return "Vista";
229
+ case "NT 6.1":
230
+ return "7";
231
+ case "NT 6.2":
232
+ return "8";
233
+ case "NT 6.3":
234
+ return "8.1";
235
+ case "NT 10.0":
236
+ return "10";
237
+ default:
238
+ return void 0;
239
+ }
240
+ }
241
+ /**
242
+ * Get macOS version name
243
+ * 10.5 - Leopard
244
+ * 10.6 - Snow Leopard
245
+ * 10.7 - Lion
246
+ * 10.8 - Mountain Lion
247
+ * 10.9 - Mavericks
248
+ * 10.10 - Yosemite
249
+ * 10.11 - El Capitan
250
+ * 10.12 - Sierra
251
+ * 10.13 - High Sierra
252
+ * 10.14 - Mojave
253
+ * 10.15 - Catalina
254
+ * 11 - Big Sur
255
+ * 12 - Monterey
256
+ * 13 - Ventura
257
+ * 14 - Sonoma
258
+ * 15 - Sequoia
259
+ *
260
+ * @example
261
+ * getMacOSVersionName("10.14") // 'Mojave'
262
+ *
263
+ * @param {string} version
264
+ * @return {string} versionName
265
+ */
266
+ static getMacOSVersionName(version) {
267
+ const v = version.split(".").splice(0, 2).map((s) => parseInt(s, 10) || 0);
268
+ v.push(0);
269
+ const major = v[0];
270
+ const minor = v[1];
271
+ if (major === 10) {
272
+ switch (minor) {
273
+ case 5:
274
+ return "Leopard";
275
+ case 6:
276
+ return "Snow Leopard";
277
+ case 7:
278
+ return "Lion";
279
+ case 8:
280
+ return "Mountain Lion";
281
+ case 9:
282
+ return "Mavericks";
283
+ case 10:
284
+ return "Yosemite";
285
+ case 11:
286
+ return "El Capitan";
287
+ case 12:
288
+ return "Sierra";
289
+ case 13:
290
+ return "High Sierra";
291
+ case 14:
292
+ return "Mojave";
293
+ case 15:
294
+ return "Catalina";
295
+ default:
296
+ return void 0;
297
+ }
298
+ }
299
+ switch (major) {
300
+ case 11:
301
+ return "Big Sur";
302
+ case 12:
303
+ return "Monterey";
304
+ case 13:
305
+ return "Ventura";
306
+ case 14:
307
+ return "Sonoma";
308
+ case 15:
309
+ return "Sequoia";
310
+ default:
311
+ return void 0;
312
+ }
313
+ }
314
+ /**
315
+ * Get Android version name
316
+ * 1.5 - Cupcake
317
+ * 1.6 - Donut
318
+ * 2.0 - Eclair
319
+ * 2.1 - Eclair
320
+ * 2.2 - Froyo
321
+ * 2.x - Gingerbread
322
+ * 3.x - Honeycomb
323
+ * 4.0 - Ice Cream Sandwich
324
+ * 4.1 - Jelly Bean
325
+ * 4.4 - KitKat
326
+ * 5.x - Lollipop
327
+ * 6.x - Marshmallow
328
+ * 7.x - Nougat
329
+ * 8.x - Oreo
330
+ * 9.x - Pie
331
+ *
332
+ * @example
333
+ * getAndroidVersionName("7.0") // 'Nougat'
334
+ *
335
+ * @param {string} version
336
+ * @return {string} versionName
337
+ */
338
+ static getAndroidVersionName(version) {
339
+ const v = version.split(".").splice(0, 2).map((s) => parseInt(s, 10) || 0);
340
+ v.push(0);
341
+ if (v[0] === 1 && v[1] < 5) return void 0;
342
+ if (v[0] === 1 && v[1] < 6) return "Cupcake";
343
+ if (v[0] === 1 && v[1] >= 6) return "Donut";
344
+ if (v[0] === 2 && v[1] < 2) return "Eclair";
345
+ if (v[0] === 2 && v[1] === 2) return "Froyo";
346
+ if (v[0] === 2 && v[1] > 2) return "Gingerbread";
347
+ if (v[0] === 3) return "Honeycomb";
348
+ if (v[0] === 4 && v[1] < 1) return "Ice Cream Sandwich";
349
+ if (v[0] === 4 && v[1] < 4) return "Jelly Bean";
350
+ if (v[0] === 4 && v[1] >= 4) return "KitKat";
351
+ if (v[0] === 5) return "Lollipop";
352
+ if (v[0] === 6) return "Marshmallow";
353
+ if (v[0] === 7) return "Nougat";
354
+ if (v[0] === 8) return "Oreo";
355
+ if (v[0] === 9) return "Pie";
356
+ return void 0;
357
+ }
358
+ /**
359
+ * Get version precisions count
360
+ *
361
+ * @example
362
+ * getVersionPrecision("1.10.3") // 3
363
+ *
364
+ * @param {string} version
365
+ * @return {number}
366
+ */
367
+ static getVersionPrecision(version) {
368
+ return version.split(".").length;
369
+ }
370
+ /**
371
+ * Calculate browser version weight
372
+ *
373
+ * @example
374
+ * compareVersions('1.10.2.1', '1.8.2.1.90') // 1
375
+ * compareVersions('1.010.2.1', '1.09.2.1.90'); // 1
376
+ * compareVersions('1.10.2.1', '1.10.2.1'); // 0
377
+ * compareVersions('1.10.2.1', '1.0800.2'); // -1
378
+ * compareVersions('1.10.2.1', '1.10', true); // 0
379
+ *
380
+ * @param {String} versionA versions versions to compare
381
+ * @param {String} versionB versions versions to compare
382
+ * @param {boolean} [isLoose] enable loose comparison
383
+ * @return {Number} comparison result: -1 when versionA is lower,
384
+ * 1 when versionA is bigger, 0 when both equal
385
+ */
386
+ /* eslint consistent-return: 1 */
387
+ static compareVersions(versionA, versionB, isLoose = false) {
388
+ const versionAPrecision = _Utils.getVersionPrecision(versionA);
389
+ const versionBPrecision = _Utils.getVersionPrecision(versionB);
390
+ let precision = Math.max(versionAPrecision, versionBPrecision);
391
+ let lastPrecision = 0;
392
+ const chunks = _Utils.map([versionA, versionB], (version) => {
393
+ const delta = precision - _Utils.getVersionPrecision(version);
394
+ const _version = version + new Array(delta + 1).join(".0");
395
+ return _Utils.map(_version.split("."), (chunk) => new Array(20 - chunk.length).join("0") + chunk).reverse();
396
+ });
397
+ if (isLoose) {
398
+ lastPrecision = precision - Math.min(versionAPrecision, versionBPrecision);
399
+ }
400
+ precision -= 1;
401
+ while (precision >= lastPrecision) {
402
+ if (chunks[0][precision] > chunks[1][precision]) {
403
+ return 1;
404
+ }
405
+ if (chunks[0][precision] === chunks[1][precision]) {
406
+ if (precision === lastPrecision) {
407
+ return 0;
408
+ }
409
+ precision -= 1;
410
+ } else if (chunks[0][precision] < chunks[1][precision]) {
411
+ return -1;
412
+ }
413
+ }
414
+ return void 0;
415
+ }
416
+ /**
417
+ * Array::map polyfill
418
+ *
419
+ * @param {Array} arr
420
+ * @param {Function} iterator
421
+ * @return {Array}
422
+ */
423
+ static map(arr, iterator) {
424
+ const result = [];
425
+ let i;
426
+ if (Array.prototype.map) {
427
+ return Array.prototype.map.call(arr, iterator);
428
+ }
429
+ for (i = 0; i < arr.length; i += 1) {
430
+ result.push(iterator(arr[i]));
431
+ }
432
+ return result;
433
+ }
434
+ /**
435
+ * Array::find polyfill
436
+ *
437
+ * @param {Array} arr
438
+ * @param {Function} predicate
439
+ * @return {Array}
440
+ */
441
+ static find(arr, predicate) {
442
+ let i;
443
+ let l;
444
+ if (Array.prototype.find) {
445
+ return Array.prototype.find.call(arr, predicate);
446
+ }
447
+ for (i = 0, l = arr.length; i < l; i += 1) {
448
+ const value = arr[i];
449
+ if (predicate(value, i)) {
450
+ return value;
451
+ }
452
+ }
453
+ return void 0;
454
+ }
455
+ /**
456
+ * Object::assign polyfill
457
+ *
458
+ * @param {Object} obj
459
+ * @param {Object} ...objs
460
+ * @return {Object}
461
+ */
462
+ static assign(obj, ...assigners) {
463
+ const result = obj;
464
+ let i;
465
+ let l;
466
+ if (Object.assign) {
467
+ return Object.assign(obj, ...assigners);
468
+ }
469
+ for (i = 0, l = assigners.length; i < l; i += 1) {
470
+ const assigner = assigners[i];
471
+ if (typeof assigner === "object" && assigner !== null) {
472
+ const keys = Object.keys(assigner);
473
+ keys.forEach((key) => {
474
+ result[key] = assigner[key];
475
+ });
476
+ }
477
+ }
478
+ return obj;
479
+ }
480
+ /**
481
+ * Get short version/alias for a browser name
482
+ *
483
+ * @example
484
+ * getBrowserAlias('Microsoft Edge') // edge
485
+ *
486
+ * @param {string} browserName
487
+ * @return {string}
488
+ */
489
+ static getBrowserAlias(browserName) {
490
+ return BROWSER_ALIASES_MAP[browserName];
491
+ }
492
+ /**
493
+ * Get browser name for a short version/alias
494
+ *
495
+ * @example
496
+ * getBrowserTypeByAlias('edge') // Microsoft Edge
497
+ *
498
+ * @param {string} browserAlias
499
+ * @return {string}
500
+ */
501
+ static getBrowserTypeByAlias(browserAlias) {
502
+ return BROWSER_MAP[browserAlias] || "";
503
+ }
504
+ };
505
+
506
+ // ../../node_modules/bowser/src/parser-browsers.js
507
+ var commonVersionIdentifier = /version\/(\d+(\.?_?\d+)+)/i;
508
+ var browsersList = [
509
+ /* GPTBot */
510
+ {
511
+ test: [/gptbot/i],
512
+ describe(ua) {
513
+ const browser = {
514
+ name: "GPTBot"
515
+ };
516
+ const version = Utils.getFirstMatch(/gptbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
517
+ if (version) {
518
+ browser.version = version;
519
+ }
520
+ return browser;
521
+ }
522
+ },
523
+ /* ChatGPT-User */
524
+ {
525
+ test: [/chatgpt-user/i],
526
+ describe(ua) {
527
+ const browser = {
528
+ name: "ChatGPT-User"
529
+ };
530
+ const version = Utils.getFirstMatch(/chatgpt-user\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
531
+ if (version) {
532
+ browser.version = version;
533
+ }
534
+ return browser;
535
+ }
536
+ },
537
+ /* OAI-SearchBot */
538
+ {
539
+ test: [/oai-searchbot/i],
540
+ describe(ua) {
541
+ const browser = {
542
+ name: "OAI-SearchBot"
543
+ };
544
+ const version = Utils.getFirstMatch(/oai-searchbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
545
+ if (version) {
546
+ browser.version = version;
547
+ }
548
+ return browser;
549
+ }
550
+ },
551
+ /* ClaudeBot */
552
+ {
553
+ test: [/claudebot/i, /claude-web/i, /claude-user/i, /claude-searchbot/i],
554
+ describe(ua) {
555
+ const browser = {
556
+ name: "ClaudeBot"
557
+ };
558
+ const version = Utils.getFirstMatch(/(?:claudebot|claude-web|claude-user|claude-searchbot)\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
559
+ if (version) {
560
+ browser.version = version;
561
+ }
562
+ return browser;
563
+ }
564
+ },
565
+ /* Omgilibot */
566
+ {
567
+ test: [/omgilibot/i, /webzio-extended/i],
568
+ describe(ua) {
569
+ const browser = {
570
+ name: "Omgilibot"
571
+ };
572
+ const version = Utils.getFirstMatch(/(?:omgilibot|webzio-extended)\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
573
+ if (version) {
574
+ browser.version = version;
575
+ }
576
+ return browser;
577
+ }
578
+ },
579
+ /* Diffbot */
580
+ {
581
+ test: [/diffbot/i],
582
+ describe(ua) {
583
+ const browser = {
584
+ name: "Diffbot"
585
+ };
586
+ const version = Utils.getFirstMatch(/diffbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
587
+ if (version) {
588
+ browser.version = version;
589
+ }
590
+ return browser;
591
+ }
592
+ },
593
+ /* PerplexityBot */
594
+ {
595
+ test: [/perplexitybot/i],
596
+ describe(ua) {
597
+ const browser = {
598
+ name: "PerplexityBot"
599
+ };
600
+ const version = Utils.getFirstMatch(/perplexitybot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
601
+ if (version) {
602
+ browser.version = version;
603
+ }
604
+ return browser;
605
+ }
606
+ },
607
+ /* Perplexity-User */
608
+ {
609
+ test: [/perplexity-user/i],
610
+ describe(ua) {
611
+ const browser = {
612
+ name: "Perplexity-User"
613
+ };
614
+ const version = Utils.getFirstMatch(/perplexity-user\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
615
+ if (version) {
616
+ browser.version = version;
617
+ }
618
+ return browser;
619
+ }
620
+ },
621
+ /* YouBot */
622
+ {
623
+ test: [/youbot/i],
624
+ describe(ua) {
625
+ const browser = {
626
+ name: "YouBot"
627
+ };
628
+ const version = Utils.getFirstMatch(/youbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
629
+ if (version) {
630
+ browser.version = version;
631
+ }
632
+ return browser;
633
+ }
634
+ },
635
+ /* Meta-WebIndexer */
636
+ {
637
+ test: [/meta-webindexer/i],
638
+ describe(ua) {
639
+ const browser = {
640
+ name: "Meta-WebIndexer"
641
+ };
642
+ const version = Utils.getFirstMatch(/meta-webindexer\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
643
+ if (version) {
644
+ browser.version = version;
645
+ }
646
+ return browser;
647
+ }
648
+ },
649
+ /* Meta-ExternalAds */
650
+ {
651
+ test: [/meta-externalads/i],
652
+ describe(ua) {
653
+ const browser = {
654
+ name: "Meta-ExternalAds"
655
+ };
656
+ const version = Utils.getFirstMatch(/meta-externalads\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
657
+ if (version) {
658
+ browser.version = version;
659
+ }
660
+ return browser;
661
+ }
662
+ },
663
+ /* Meta-ExternalAgent */
664
+ {
665
+ test: [/meta-externalagent/i],
666
+ describe(ua) {
667
+ const browser = {
668
+ name: "Meta-ExternalAgent"
669
+ };
670
+ const version = Utils.getFirstMatch(/meta-externalagent\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
671
+ if (version) {
672
+ browser.version = version;
673
+ }
674
+ return browser;
675
+ }
676
+ },
677
+ /* Meta-ExternalFetcher */
678
+ {
679
+ test: [/meta-externalfetcher/i],
680
+ describe(ua) {
681
+ const browser = {
682
+ name: "Meta-ExternalFetcher"
683
+ };
684
+ const version = Utils.getFirstMatch(/meta-externalfetcher\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
685
+ if (version) {
686
+ browser.version = version;
687
+ }
688
+ return browser;
689
+ }
690
+ },
691
+ /* Googlebot */
692
+ {
693
+ test: [/googlebot/i],
694
+ describe(ua) {
695
+ const browser = {
696
+ name: "Googlebot"
697
+ };
698
+ const version = Utils.getFirstMatch(/googlebot\/(\d+(\.\d+))/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
699
+ if (version) {
700
+ browser.version = version;
701
+ }
702
+ return browser;
703
+ }
704
+ },
705
+ /* Linespider */
706
+ {
707
+ test: [/linespider/i],
708
+ describe(ua) {
709
+ const browser = {
710
+ name: "Linespider"
711
+ };
712
+ const version = Utils.getFirstMatch(/(?:linespider)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
713
+ if (version) {
714
+ browser.version = version;
715
+ }
716
+ return browser;
717
+ }
718
+ },
719
+ /* AmazonBot */
720
+ {
721
+ test: [/amazonbot/i],
722
+ describe(ua) {
723
+ const browser = {
724
+ name: "AmazonBot"
725
+ };
726
+ const version = Utils.getFirstMatch(/amazonbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
727
+ if (version) {
728
+ browser.version = version;
729
+ }
730
+ return browser;
731
+ }
732
+ },
733
+ /* BingCrawler */
734
+ {
735
+ test: [/bingbot/i],
736
+ describe(ua) {
737
+ const browser = {
738
+ name: "BingCrawler"
739
+ };
740
+ const version = Utils.getFirstMatch(/bingbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
741
+ if (version) {
742
+ browser.version = version;
743
+ }
744
+ return browser;
745
+ }
746
+ },
747
+ /* BaiduSpider */
748
+ {
749
+ test: [/baiduspider/i],
750
+ describe(ua) {
751
+ const browser = {
752
+ name: "BaiduSpider"
753
+ };
754
+ const version = Utils.getFirstMatch(/baiduspider\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
755
+ if (version) {
756
+ browser.version = version;
757
+ }
758
+ return browser;
759
+ }
760
+ },
761
+ /* DuckDuckBot */
762
+ {
763
+ test: [/duckduckbot/i],
764
+ describe(ua) {
765
+ const browser = {
766
+ name: "DuckDuckBot"
767
+ };
768
+ const version = Utils.getFirstMatch(/duckduckbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
769
+ if (version) {
770
+ browser.version = version;
771
+ }
772
+ return browser;
773
+ }
774
+ },
775
+ /* InternetArchiveCrawler */
776
+ {
777
+ test: [/ia_archiver/i],
778
+ describe(ua) {
779
+ const browser = {
780
+ name: "InternetArchiveCrawler"
781
+ };
782
+ const version = Utils.getFirstMatch(/ia_archiver\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
783
+ if (version) {
784
+ browser.version = version;
785
+ }
786
+ return browser;
787
+ }
788
+ },
789
+ /* FacebookExternalHit */
790
+ {
791
+ test: [/facebookexternalhit/i, /facebookcatalog/i],
792
+ describe() {
793
+ return {
794
+ name: "FacebookExternalHit"
795
+ };
796
+ }
797
+ },
798
+ /* SlackBot */
799
+ {
800
+ test: [/slackbot/i, /slack-imgProxy/i],
801
+ describe(ua) {
802
+ const browser = {
803
+ name: "SlackBot"
804
+ };
805
+ const version = Utils.getFirstMatch(/(?:slackbot|slack-imgproxy)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
806
+ if (version) {
807
+ browser.version = version;
808
+ }
809
+ return browser;
810
+ }
811
+ },
812
+ /* YahooSlurp */
813
+ {
814
+ test: [/yahoo!?[\s/]*slurp/i],
815
+ describe() {
816
+ return {
817
+ name: "YahooSlurp"
818
+ };
819
+ }
820
+ },
821
+ /* YandexBot */
822
+ {
823
+ test: [/yandexbot/i, /yandexmobilebot/i],
824
+ describe() {
825
+ return {
826
+ name: "YandexBot"
827
+ };
828
+ }
829
+ },
830
+ /* PingdomBot */
831
+ {
832
+ test: [/pingdom/i],
833
+ describe() {
834
+ return {
835
+ name: "PingdomBot"
836
+ };
837
+ }
838
+ },
839
+ /* Opera < 13.0 */
840
+ {
841
+ test: [/opera/i],
842
+ describe(ua) {
843
+ const browser = {
844
+ name: "Opera"
845
+ };
846
+ const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i, ua);
847
+ if (version) {
848
+ browser.version = version;
849
+ }
850
+ return browser;
851
+ }
852
+ },
853
+ /* Opera > 13.0 */
854
+ {
855
+ test: [/opr\/|opios/i],
856
+ describe(ua) {
857
+ const browser = {
858
+ name: "Opera"
859
+ };
860
+ const version = Utils.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
861
+ if (version) {
862
+ browser.version = version;
863
+ }
864
+ return browser;
865
+ }
866
+ },
867
+ {
868
+ test: [/SamsungBrowser/i],
869
+ describe(ua) {
870
+ const browser = {
871
+ name: "Samsung Internet for Android"
872
+ };
873
+ const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i, ua);
874
+ if (version) {
875
+ browser.version = version;
876
+ }
877
+ return browser;
878
+ }
879
+ },
880
+ {
881
+ test: [/Whale/i],
882
+ describe(ua) {
883
+ const browser = {
884
+ name: "NAVER Whale Browser"
885
+ };
886
+ const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i, ua);
887
+ if (version) {
888
+ browser.version = version;
889
+ }
890
+ return browser;
891
+ }
892
+ },
893
+ {
894
+ test: [/PaleMoon/i],
895
+ describe(ua) {
896
+ const browser = {
897
+ name: "Pale Moon"
898
+ };
899
+ const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:PaleMoon)[\s/](\d+(?:\.\d+)+)/i, ua);
900
+ if (version) {
901
+ browser.version = version;
902
+ }
903
+ return browser;
904
+ }
905
+ },
906
+ {
907
+ test: [/MZBrowser/i],
908
+ describe(ua) {
909
+ const browser = {
910
+ name: "MZ Browser"
911
+ };
912
+ const version = Utils.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
913
+ if (version) {
914
+ browser.version = version;
915
+ }
916
+ return browser;
917
+ }
918
+ },
919
+ {
920
+ test: [/focus/i],
921
+ describe(ua) {
922
+ const browser = {
923
+ name: "Focus"
924
+ };
925
+ const version = Utils.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
926
+ if (version) {
927
+ browser.version = version;
928
+ }
929
+ return browser;
930
+ }
931
+ },
932
+ {
933
+ test: [/swing/i],
934
+ describe(ua) {
935
+ const browser = {
936
+ name: "Swing"
937
+ };
938
+ const version = Utils.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
939
+ if (version) {
940
+ browser.version = version;
941
+ }
942
+ return browser;
943
+ }
944
+ },
945
+ {
946
+ test: [/coast/i],
947
+ describe(ua) {
948
+ const browser = {
949
+ name: "Opera Coast"
950
+ };
951
+ const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i, ua);
952
+ if (version) {
953
+ browser.version = version;
954
+ }
955
+ return browser;
956
+ }
957
+ },
958
+ {
959
+ test: [/opt\/\d+(?:.?_?\d+)+/i],
960
+ describe(ua) {
961
+ const browser = {
962
+ name: "Opera Touch"
963
+ };
964
+ const version = Utils.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
965
+ if (version) {
966
+ browser.version = version;
967
+ }
968
+ return browser;
969
+ }
970
+ },
971
+ {
972
+ test: [/yabrowser/i],
973
+ describe(ua) {
974
+ const browser = {
975
+ name: "Yandex Browser"
976
+ };
977
+ const version = Utils.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
978
+ if (version) {
979
+ browser.version = version;
980
+ }
981
+ return browser;
982
+ }
983
+ },
984
+ {
985
+ test: [/ucbrowser/i],
986
+ describe(ua) {
987
+ const browser = {
988
+ name: "UC Browser"
989
+ };
990
+ const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i, ua);
991
+ if (version) {
992
+ browser.version = version;
993
+ }
994
+ return browser;
995
+ }
996
+ },
997
+ {
998
+ test: [/Maxthon|mxios/i],
999
+ describe(ua) {
1000
+ const browser = {
1001
+ name: "Maxthon"
1002
+ };
1003
+ const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i, ua);
1004
+ if (version) {
1005
+ browser.version = version;
1006
+ }
1007
+ return browser;
1008
+ }
1009
+ },
1010
+ {
1011
+ test: [/epiphany/i],
1012
+ describe(ua) {
1013
+ const browser = {
1014
+ name: "Epiphany"
1015
+ };
1016
+ const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i, ua);
1017
+ if (version) {
1018
+ browser.version = version;
1019
+ }
1020
+ return browser;
1021
+ }
1022
+ },
1023
+ {
1024
+ test: [/puffin/i],
1025
+ describe(ua) {
1026
+ const browser = {
1027
+ name: "Puffin"
1028
+ };
1029
+ const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i, ua);
1030
+ if (version) {
1031
+ browser.version = version;
1032
+ }
1033
+ return browser;
1034
+ }
1035
+ },
1036
+ {
1037
+ test: [/sleipnir/i],
1038
+ describe(ua) {
1039
+ const browser = {
1040
+ name: "Sleipnir"
1041
+ };
1042
+ const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i, ua);
1043
+ if (version) {
1044
+ browser.version = version;
1045
+ }
1046
+ return browser;
1047
+ }
1048
+ },
1049
+ {
1050
+ test: [/k-meleon/i],
1051
+ describe(ua) {
1052
+ const browser = {
1053
+ name: "K-Meleon"
1054
+ };
1055
+ const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i, ua);
1056
+ if (version) {
1057
+ browser.version = version;
1058
+ }
1059
+ return browser;
1060
+ }
1061
+ },
1062
+ {
1063
+ test: [/micromessenger/i],
1064
+ describe(ua) {
1065
+ const browser = {
1066
+ name: "WeChat"
1067
+ };
1068
+ const version = Utils.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
1069
+ if (version) {
1070
+ browser.version = version;
1071
+ }
1072
+ return browser;
1073
+ }
1074
+ },
1075
+ {
1076
+ test: [/qqbrowser/i],
1077
+ describe(ua) {
1078
+ const browser = {
1079
+ name: /qqbrowserlite/i.test(ua) ? "QQ Browser Lite" : "QQ Browser"
1080
+ };
1081
+ const version = Utils.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
1082
+ if (version) {
1083
+ browser.version = version;
1084
+ }
1085
+ return browser;
1086
+ }
1087
+ },
1088
+ {
1089
+ test: [/msie|trident/i],
1090
+ describe(ua) {
1091
+ const browser = {
1092
+ name: "Internet Explorer"
1093
+ };
1094
+ const version = Utils.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i, ua);
1095
+ if (version) {
1096
+ browser.version = version;
1097
+ }
1098
+ return browser;
1099
+ }
1100
+ },
1101
+ {
1102
+ test: [/\sedg\//i],
1103
+ describe(ua) {
1104
+ const browser = {
1105
+ name: "Microsoft Edge"
1106
+ };
1107
+ const version = Utils.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i, ua);
1108
+ if (version) {
1109
+ browser.version = version;
1110
+ }
1111
+ return browser;
1112
+ }
1113
+ },
1114
+ {
1115
+ test: [/edg([ea]|ios)/i],
1116
+ describe(ua) {
1117
+ const browser = {
1118
+ name: "Microsoft Edge"
1119
+ };
1120
+ const version = Utils.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i, ua);
1121
+ if (version) {
1122
+ browser.version = version;
1123
+ }
1124
+ return browser;
1125
+ }
1126
+ },
1127
+ {
1128
+ test: [/vivaldi/i],
1129
+ describe(ua) {
1130
+ const browser = {
1131
+ name: "Vivaldi"
1132
+ };
1133
+ const version = Utils.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i, ua);
1134
+ if (version) {
1135
+ browser.version = version;
1136
+ }
1137
+ return browser;
1138
+ }
1139
+ },
1140
+ {
1141
+ test: [/seamonkey/i],
1142
+ describe(ua) {
1143
+ const browser = {
1144
+ name: "SeaMonkey"
1145
+ };
1146
+ const version = Utils.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i, ua);
1147
+ if (version) {
1148
+ browser.version = version;
1149
+ }
1150
+ return browser;
1151
+ }
1152
+ },
1153
+ {
1154
+ test: [/sailfish/i],
1155
+ describe(ua) {
1156
+ const browser = {
1157
+ name: "Sailfish"
1158
+ };
1159
+ const version = Utils.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i, ua);
1160
+ if (version) {
1161
+ browser.version = version;
1162
+ }
1163
+ return browser;
1164
+ }
1165
+ },
1166
+ {
1167
+ test: [/silk/i],
1168
+ describe(ua) {
1169
+ const browser = {
1170
+ name: "Amazon Silk"
1171
+ };
1172
+ const version = Utils.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i, ua);
1173
+ if (version) {
1174
+ browser.version = version;
1175
+ }
1176
+ return browser;
1177
+ }
1178
+ },
1179
+ {
1180
+ test: [/phantom/i],
1181
+ describe(ua) {
1182
+ const browser = {
1183
+ name: "PhantomJS"
1184
+ };
1185
+ const version = Utils.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i, ua);
1186
+ if (version) {
1187
+ browser.version = version;
1188
+ }
1189
+ return browser;
1190
+ }
1191
+ },
1192
+ {
1193
+ test: [/slimerjs/i],
1194
+ describe(ua) {
1195
+ const browser = {
1196
+ name: "SlimerJS"
1197
+ };
1198
+ const version = Utils.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i, ua);
1199
+ if (version) {
1200
+ browser.version = version;
1201
+ }
1202
+ return browser;
1203
+ }
1204
+ },
1205
+ {
1206
+ test: [/blackberry|\bbb\d+/i, /rim\stablet/i],
1207
+ describe(ua) {
1208
+ const browser = {
1209
+ name: "BlackBerry"
1210
+ };
1211
+ const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i, ua);
1212
+ if (version) {
1213
+ browser.version = version;
1214
+ }
1215
+ return browser;
1216
+ }
1217
+ },
1218
+ {
1219
+ test: [/(web|hpw)[o0]s/i],
1220
+ describe(ua) {
1221
+ const browser = {
1222
+ name: "WebOS Browser"
1223
+ };
1224
+ const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i, ua);
1225
+ if (version) {
1226
+ browser.version = version;
1227
+ }
1228
+ return browser;
1229
+ }
1230
+ },
1231
+ {
1232
+ test: [/bada/i],
1233
+ describe(ua) {
1234
+ const browser = {
1235
+ name: "Bada"
1236
+ };
1237
+ const version = Utils.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i, ua);
1238
+ if (version) {
1239
+ browser.version = version;
1240
+ }
1241
+ return browser;
1242
+ }
1243
+ },
1244
+ {
1245
+ test: [/tizen/i],
1246
+ describe(ua) {
1247
+ const browser = {
1248
+ name: "Tizen"
1249
+ };
1250
+ const version = Utils.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
1251
+ if (version) {
1252
+ browser.version = version;
1253
+ }
1254
+ return browser;
1255
+ }
1256
+ },
1257
+ {
1258
+ test: [/qupzilla/i],
1259
+ describe(ua) {
1260
+ const browser = {
1261
+ name: "QupZilla"
1262
+ };
1263
+ const version = Utils.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
1264
+ if (version) {
1265
+ browser.version = version;
1266
+ }
1267
+ return browser;
1268
+ }
1269
+ },
1270
+ {
1271
+ test: [/librewolf/i],
1272
+ describe(ua) {
1273
+ const browser = {
1274
+ name: "LibreWolf"
1275
+ };
1276
+ const version = Utils.getFirstMatch(/(?:librewolf)[\s/](\d+(\.?_?\d+)+)/i, ua);
1277
+ if (version) {
1278
+ browser.version = version;
1279
+ }
1280
+ return browser;
1281
+ }
1282
+ },
1283
+ {
1284
+ test: [/firefox|iceweasel|fxios/i],
1285
+ describe(ua) {
1286
+ const browser = {
1287
+ name: "Firefox"
1288
+ };
1289
+ const version = Utils.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i, ua);
1290
+ if (version) {
1291
+ browser.version = version;
1292
+ }
1293
+ return browser;
1294
+ }
1295
+ },
1296
+ {
1297
+ test: [/electron/i],
1298
+ describe(ua) {
1299
+ const browser = {
1300
+ name: "Electron"
1301
+ };
1302
+ const version = Utils.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i, ua);
1303
+ if (version) {
1304
+ browser.version = version;
1305
+ }
1306
+ return browser;
1307
+ }
1308
+ },
1309
+ {
1310
+ test: [/sogoumobilebrowser/i, /metasr/i, /se 2\.[x]/i],
1311
+ describe(ua) {
1312
+ const browser = {
1313
+ name: "Sogou Browser"
1314
+ };
1315
+ const sogouMobileVersion = Utils.getFirstMatch(/(?:sogoumobilebrowser)[\s/](\d+(\.?_?\d+)+)/i, ua);
1316
+ const chromiumVersion = Utils.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i, ua);
1317
+ const seVersion = Utils.getFirstMatch(/se ([\d.]+)x/i, ua);
1318
+ const version = sogouMobileVersion || chromiumVersion || seVersion;
1319
+ if (version) {
1320
+ browser.version = version;
1321
+ }
1322
+ return browser;
1323
+ }
1324
+ },
1325
+ {
1326
+ test: [/MiuiBrowser/i],
1327
+ describe(ua) {
1328
+ const browser = {
1329
+ name: "Miui"
1330
+ };
1331
+ const version = Utils.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i, ua);
1332
+ if (version) {
1333
+ browser.version = version;
1334
+ }
1335
+ return browser;
1336
+ }
1337
+ },
1338
+ /* DuckDuckGo Browser */
1339
+ {
1340
+ test(parser) {
1341
+ if (parser.hasBrand("DuckDuckGo")) {
1342
+ return true;
1343
+ }
1344
+ return parser.test(/\sDdg\/[\d.]+$/i);
1345
+ },
1346
+ describe(ua, parser) {
1347
+ const browser = {
1348
+ name: "DuckDuckGo"
1349
+ };
1350
+ if (parser) {
1351
+ const hintsVersion = parser.getBrandVersion("DuckDuckGo");
1352
+ if (hintsVersion) {
1353
+ browser.version = hintsVersion;
1354
+ return browser;
1355
+ }
1356
+ }
1357
+ const uaVersion = Utils.getFirstMatch(/\sDdg\/([\d.]+)$/i, ua);
1358
+ if (uaVersion) {
1359
+ browser.version = uaVersion;
1360
+ }
1361
+ return browser;
1362
+ }
1363
+ },
1364
+ /* Brave Browser */
1365
+ {
1366
+ test(parser) {
1367
+ return parser.hasBrand("Brave");
1368
+ },
1369
+ describe(ua, parser) {
1370
+ const browser = {
1371
+ name: "Brave"
1372
+ };
1373
+ if (parser) {
1374
+ const hintsVersion = parser.getBrandVersion("Brave");
1375
+ if (hintsVersion) {
1376
+ browser.version = hintsVersion;
1377
+ return browser;
1378
+ }
1379
+ }
1380
+ return browser;
1381
+ }
1382
+ },
1383
+ {
1384
+ test: [/chromium/i],
1385
+ describe(ua) {
1386
+ const browser = {
1387
+ name: "Chromium"
1388
+ };
1389
+ const version = Utils.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);
1390
+ if (version) {
1391
+ browser.version = version;
1392
+ }
1393
+ return browser;
1394
+ }
1395
+ },
1396
+ {
1397
+ test: [/chrome|crios|crmo/i],
1398
+ describe(ua) {
1399
+ const browser = {
1400
+ name: "Chrome"
1401
+ };
1402
+ const version = Utils.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i, ua);
1403
+ if (version) {
1404
+ browser.version = version;
1405
+ }
1406
+ return browser;
1407
+ }
1408
+ },
1409
+ {
1410
+ test: [/GSA/i],
1411
+ describe(ua) {
1412
+ const browser = {
1413
+ name: "Google Search"
1414
+ };
1415
+ const version = Utils.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i, ua);
1416
+ if (version) {
1417
+ browser.version = version;
1418
+ }
1419
+ return browser;
1420
+ }
1421
+ },
1422
+ /* Android Browser */
1423
+ {
1424
+ test(parser) {
1425
+ const notLikeAndroid = !parser.test(/like android/i);
1426
+ const butAndroid = parser.test(/android/i);
1427
+ return notLikeAndroid && butAndroid;
1428
+ },
1429
+ describe(ua) {
1430
+ const browser = {
1431
+ name: "Android Browser"
1432
+ };
1433
+ const version = Utils.getFirstMatch(commonVersionIdentifier, ua);
1434
+ if (version) {
1435
+ browser.version = version;
1436
+ }
1437
+ return browser;
1438
+ }
1439
+ },
1440
+ /* PlayStation 4 */
1441
+ {
1442
+ test: [/playstation 4/i],
1443
+ describe(ua) {
1444
+ const browser = {
1445
+ name: "PlayStation 4"
1446
+ };
1447
+ const version = Utils.getFirstMatch(commonVersionIdentifier, ua);
1448
+ if (version) {
1449
+ browser.version = version;
1450
+ }
1451
+ return browser;
1452
+ }
1453
+ },
1454
+ /* Safari */
1455
+ {
1456
+ test: [/safari|applewebkit/i],
1457
+ describe(ua) {
1458
+ const browser = {
1459
+ name: "Safari"
1460
+ };
1461
+ const version = Utils.getFirstMatch(commonVersionIdentifier, ua);
1462
+ if (version) {
1463
+ browser.version = version;
1464
+ }
1465
+ return browser;
1466
+ }
1467
+ },
1468
+ /* Something else */
1469
+ {
1470
+ test: [/.*/i],
1471
+ describe(ua) {
1472
+ const regexpWithoutDeviceSpec = /^(.*)\/(.*) /;
1473
+ const regexpWithDeviceSpec = /^(.*)\/(.*)[ \t]\((.*)/;
1474
+ const hasDeviceSpec = ua.search("\\(") !== -1;
1475
+ const regexp = hasDeviceSpec ? regexpWithDeviceSpec : regexpWithoutDeviceSpec;
1476
+ return {
1477
+ name: Utils.getFirstMatch(regexp, ua),
1478
+ version: Utils.getSecondMatch(regexp, ua)
1479
+ };
1480
+ }
1481
+ }
1482
+ ];
1483
+ var parser_browsers_default = browsersList;
1484
+
1485
+ // ../../node_modules/bowser/src/parser-os.js
1486
+ var parser_os_default = [
1487
+ /* Roku */
1488
+ {
1489
+ test: [/Roku\/DVP/],
1490
+ describe(ua) {
1491
+ const version = Utils.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i, ua);
1492
+ return {
1493
+ name: OS_MAP.Roku,
1494
+ version
1495
+ };
1496
+ }
1497
+ },
1498
+ /* Windows Phone */
1499
+ {
1500
+ test: [/windows phone/i],
1501
+ describe(ua) {
1502
+ const version = Utils.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i, ua);
1503
+ return {
1504
+ name: OS_MAP.WindowsPhone,
1505
+ version
1506
+ };
1507
+ }
1508
+ },
1509
+ /* Windows */
1510
+ {
1511
+ test: [/windows /i],
1512
+ describe(ua) {
1513
+ const version = Utils.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i, ua);
1514
+ const versionName = Utils.getWindowsVersionName(version);
1515
+ return {
1516
+ name: OS_MAP.Windows,
1517
+ version,
1518
+ versionName
1519
+ };
1520
+ }
1521
+ },
1522
+ /* Firefox on iPad */
1523
+ {
1524
+ test: [/Macintosh(.*?) FxiOS(.*?)\//],
1525
+ describe(ua) {
1526
+ const result = {
1527
+ name: OS_MAP.iOS
1528
+ };
1529
+ const version = Utils.getSecondMatch(/(Version\/)(\d[\d.]+)/, ua);
1530
+ if (version) {
1531
+ result.version = version;
1532
+ }
1533
+ return result;
1534
+ }
1535
+ },
1536
+ /* macOS */
1537
+ {
1538
+ test: [/macintosh/i],
1539
+ describe(ua) {
1540
+ const version = Utils.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i, ua).replace(/[_\s]/g, ".");
1541
+ const versionName = Utils.getMacOSVersionName(version);
1542
+ const os = {
1543
+ name: OS_MAP.MacOS,
1544
+ version
1545
+ };
1546
+ if (versionName) {
1547
+ os.versionName = versionName;
1548
+ }
1549
+ return os;
1550
+ }
1551
+ },
1552
+ /* iOS */
1553
+ {
1554
+ test: [/(ipod|iphone|ipad)/i],
1555
+ describe(ua) {
1556
+ const version = Utils.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i, ua).replace(/[_\s]/g, ".");
1557
+ return {
1558
+ name: OS_MAP.iOS,
1559
+ version
1560
+ };
1561
+ }
1562
+ },
1563
+ /* HarmonyOS */
1564
+ {
1565
+ test: [/OpenHarmony/i],
1566
+ describe(ua) {
1567
+ const version = Utils.getFirstMatch(/OpenHarmony\s+(\d+(\.\d+)*)/i, ua);
1568
+ return {
1569
+ name: OS_MAP.HarmonyOS,
1570
+ version
1571
+ };
1572
+ }
1573
+ },
1574
+ /* Android */
1575
+ {
1576
+ test(parser) {
1577
+ const notLikeAndroid = !parser.test(/like android/i);
1578
+ const butAndroid = parser.test(/android/i);
1579
+ return notLikeAndroid && butAndroid;
1580
+ },
1581
+ describe(ua) {
1582
+ const version = Utils.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i, ua);
1583
+ const versionName = Utils.getAndroidVersionName(version);
1584
+ const os = {
1585
+ name: OS_MAP.Android,
1586
+ version
1587
+ };
1588
+ if (versionName) {
1589
+ os.versionName = versionName;
1590
+ }
1591
+ return os;
1592
+ }
1593
+ },
1594
+ /* WebOS */
1595
+ {
1596
+ test: [/(web|hpw)[o0]s/i],
1597
+ describe(ua) {
1598
+ const version = Utils.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i, ua);
1599
+ const os = {
1600
+ name: OS_MAP.WebOS
1601
+ };
1602
+ if (version && version.length) {
1603
+ os.version = version;
1604
+ }
1605
+ return os;
1606
+ }
1607
+ },
1608
+ /* BlackBerry */
1609
+ {
1610
+ test: [/blackberry|\bbb\d+/i, /rim\stablet/i],
1611
+ describe(ua) {
1612
+ const version = Utils.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i, ua) || Utils.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i, ua) || Utils.getFirstMatch(/\bbb(\d+)/i, ua);
1613
+ return {
1614
+ name: OS_MAP.BlackBerry,
1615
+ version
1616
+ };
1617
+ }
1618
+ },
1619
+ /* Bada */
1620
+ {
1621
+ test: [/bada/i],
1622
+ describe(ua) {
1623
+ const version = Utils.getFirstMatch(/bada\/(\d+(\.\d+)*)/i, ua);
1624
+ return {
1625
+ name: OS_MAP.Bada,
1626
+ version
1627
+ };
1628
+ }
1629
+ },
1630
+ /* Tizen */
1631
+ {
1632
+ test: [/tizen/i],
1633
+ describe(ua) {
1634
+ const version = Utils.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i, ua);
1635
+ return {
1636
+ name: OS_MAP.Tizen,
1637
+ version
1638
+ };
1639
+ }
1640
+ },
1641
+ /* Linux */
1642
+ {
1643
+ test: [/linux/i],
1644
+ describe() {
1645
+ return {
1646
+ name: OS_MAP.Linux
1647
+ };
1648
+ }
1649
+ },
1650
+ /* Chrome OS */
1651
+ {
1652
+ test: [/CrOS/],
1653
+ describe() {
1654
+ return {
1655
+ name: OS_MAP.ChromeOS
1656
+ };
1657
+ }
1658
+ },
1659
+ /* Playstation 4 */
1660
+ {
1661
+ test: [/PlayStation 4/],
1662
+ describe(ua) {
1663
+ const version = Utils.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i, ua);
1664
+ return {
1665
+ name: OS_MAP.PlayStation4,
1666
+ version
1667
+ };
1668
+ }
1669
+ }
1670
+ ];
1671
+
1672
+ // ../../node_modules/bowser/src/parser-platforms.js
1673
+ var parser_platforms_default = [
1674
+ /* Googlebot */
1675
+ {
1676
+ test: [/googlebot/i],
1677
+ describe() {
1678
+ return {
1679
+ type: PLATFORMS_MAP.bot,
1680
+ vendor: "Google"
1681
+ };
1682
+ }
1683
+ },
1684
+ /* LineSpider */
1685
+ {
1686
+ test: [/linespider/i],
1687
+ describe() {
1688
+ return {
1689
+ type: PLATFORMS_MAP.bot,
1690
+ vendor: "Line"
1691
+ };
1692
+ }
1693
+ },
1694
+ /* AmazonBot */
1695
+ {
1696
+ test: [/amazonbot/i],
1697
+ describe() {
1698
+ return {
1699
+ type: PLATFORMS_MAP.bot,
1700
+ vendor: "Amazon"
1701
+ };
1702
+ }
1703
+ },
1704
+ /* GPTBot */
1705
+ {
1706
+ test: [/gptbot/i],
1707
+ describe() {
1708
+ return {
1709
+ type: PLATFORMS_MAP.bot,
1710
+ vendor: "OpenAI"
1711
+ };
1712
+ }
1713
+ },
1714
+ /* ChatGPT-User */
1715
+ {
1716
+ test: [/chatgpt-user/i],
1717
+ describe() {
1718
+ return {
1719
+ type: PLATFORMS_MAP.bot,
1720
+ vendor: "OpenAI"
1721
+ };
1722
+ }
1723
+ },
1724
+ /* OAI-SearchBot */
1725
+ {
1726
+ test: [/oai-searchbot/i],
1727
+ describe() {
1728
+ return {
1729
+ type: PLATFORMS_MAP.bot,
1730
+ vendor: "OpenAI"
1731
+ };
1732
+ }
1733
+ },
1734
+ /* Baidu */
1735
+ {
1736
+ test: [/baiduspider/i],
1737
+ describe() {
1738
+ return {
1739
+ type: PLATFORMS_MAP.bot,
1740
+ vendor: "Baidu"
1741
+ };
1742
+ }
1743
+ },
1744
+ /* Bingbot */
1745
+ {
1746
+ test: [/bingbot/i],
1747
+ describe() {
1748
+ return {
1749
+ type: PLATFORMS_MAP.bot,
1750
+ vendor: "Bing"
1751
+ };
1752
+ }
1753
+ },
1754
+ /* DuckDuckBot */
1755
+ {
1756
+ test: [/duckduckbot/i],
1757
+ describe() {
1758
+ return {
1759
+ type: PLATFORMS_MAP.bot,
1760
+ vendor: "DuckDuckGo"
1761
+ };
1762
+ }
1763
+ },
1764
+ /* ClaudeBot */
1765
+ {
1766
+ test: [/claudebot/i, /claude-web/i, /claude-user/i, /claude-searchbot/i],
1767
+ describe() {
1768
+ return {
1769
+ type: PLATFORMS_MAP.bot,
1770
+ vendor: "Anthropic"
1771
+ };
1772
+ }
1773
+ },
1774
+ /* Omgilibot */
1775
+ {
1776
+ test: [/omgilibot/i, /webzio-extended/i],
1777
+ describe() {
1778
+ return {
1779
+ type: PLATFORMS_MAP.bot,
1780
+ vendor: "Webz.io"
1781
+ };
1782
+ }
1783
+ },
1784
+ /* Diffbot */
1785
+ {
1786
+ test: [/diffbot/i],
1787
+ describe() {
1788
+ return {
1789
+ type: PLATFORMS_MAP.bot,
1790
+ vendor: "Diffbot"
1791
+ };
1792
+ }
1793
+ },
1794
+ /* PerplexityBot */
1795
+ {
1796
+ test: [/perplexitybot/i],
1797
+ describe() {
1798
+ return {
1799
+ type: PLATFORMS_MAP.bot,
1800
+ vendor: "Perplexity AI"
1801
+ };
1802
+ }
1803
+ },
1804
+ /* Perplexity-User */
1805
+ {
1806
+ test: [/perplexity-user/i],
1807
+ describe() {
1808
+ return {
1809
+ type: PLATFORMS_MAP.bot,
1810
+ vendor: "Perplexity AI"
1811
+ };
1812
+ }
1813
+ },
1814
+ /* YouBot */
1815
+ {
1816
+ test: [/youbot/i],
1817
+ describe() {
1818
+ return {
1819
+ type: PLATFORMS_MAP.bot,
1820
+ vendor: "You.com"
1821
+ };
1822
+ }
1823
+ },
1824
+ /* Internet Archive Crawler */
1825
+ {
1826
+ test: [/ia_archiver/i],
1827
+ describe() {
1828
+ return {
1829
+ type: PLATFORMS_MAP.bot,
1830
+ vendor: "Internet Archive"
1831
+ };
1832
+ }
1833
+ },
1834
+ /* Meta-WebIndexer */
1835
+ {
1836
+ test: [/meta-webindexer/i],
1837
+ describe() {
1838
+ return {
1839
+ type: PLATFORMS_MAP.bot,
1840
+ vendor: "Meta"
1841
+ };
1842
+ }
1843
+ },
1844
+ /* Meta-ExternalAds */
1845
+ {
1846
+ test: [/meta-externalads/i],
1847
+ describe() {
1848
+ return {
1849
+ type: PLATFORMS_MAP.bot,
1850
+ vendor: "Meta"
1851
+ };
1852
+ }
1853
+ },
1854
+ /* Meta-ExternalAgent */
1855
+ {
1856
+ test: [/meta-externalagent/i],
1857
+ describe() {
1858
+ return {
1859
+ type: PLATFORMS_MAP.bot,
1860
+ vendor: "Meta"
1861
+ };
1862
+ }
1863
+ },
1864
+ /* Meta-ExternalFetcher */
1865
+ {
1866
+ test: [/meta-externalfetcher/i],
1867
+ describe() {
1868
+ return {
1869
+ type: PLATFORMS_MAP.bot,
1870
+ vendor: "Meta"
1871
+ };
1872
+ }
1873
+ },
1874
+ /* Meta Web Crawler */
1875
+ {
1876
+ test: [/facebookexternalhit/i, /facebookcatalog/i],
1877
+ describe() {
1878
+ return {
1879
+ type: PLATFORMS_MAP.bot,
1880
+ vendor: "Meta"
1881
+ };
1882
+ }
1883
+ },
1884
+ /* SlackBot */
1885
+ {
1886
+ test: [/slackbot/i, /slack-imgProxy/i],
1887
+ describe() {
1888
+ return {
1889
+ type: PLATFORMS_MAP.bot,
1890
+ vendor: "Slack"
1891
+ };
1892
+ }
1893
+ },
1894
+ /* Yahoo! Slurp */
1895
+ {
1896
+ test: [/yahoo/i],
1897
+ describe() {
1898
+ return {
1899
+ type: PLATFORMS_MAP.bot,
1900
+ vendor: "Yahoo"
1901
+ };
1902
+ }
1903
+ },
1904
+ /* Yandex */
1905
+ {
1906
+ test: [/yandexbot/i, /yandexmobilebot/i],
1907
+ describe() {
1908
+ return {
1909
+ type: PLATFORMS_MAP.bot,
1910
+ vendor: "Yandex"
1911
+ };
1912
+ }
1913
+ },
1914
+ /* Pingdom */
1915
+ {
1916
+ test: [/pingdom/i],
1917
+ describe() {
1918
+ return {
1919
+ type: PLATFORMS_MAP.bot,
1920
+ vendor: "Pingdom"
1921
+ };
1922
+ }
1923
+ },
1924
+ /* Huawei */
1925
+ {
1926
+ test: [/huawei/i],
1927
+ describe(ua) {
1928
+ const model = Utils.getFirstMatch(/(can-l01)/i, ua) && "Nova";
1929
+ const platform = {
1930
+ type: PLATFORMS_MAP.mobile,
1931
+ vendor: "Huawei"
1932
+ };
1933
+ if (model) {
1934
+ platform.model = model;
1935
+ }
1936
+ return platform;
1937
+ }
1938
+ },
1939
+ /* Nexus Tablet */
1940
+ {
1941
+ test: [/nexus\s*(?:7|8|9|10).*/i],
1942
+ describe() {
1943
+ return {
1944
+ type: PLATFORMS_MAP.tablet,
1945
+ vendor: "Nexus"
1946
+ };
1947
+ }
1948
+ },
1949
+ /* iPad */
1950
+ {
1951
+ test: [/ipad/i],
1952
+ describe() {
1953
+ return {
1954
+ type: PLATFORMS_MAP.tablet,
1955
+ vendor: "Apple",
1956
+ model: "iPad"
1957
+ };
1958
+ }
1959
+ },
1960
+ /* Firefox on iPad */
1961
+ {
1962
+ test: [/Macintosh(.*?) FxiOS(.*?)\//],
1963
+ describe() {
1964
+ return {
1965
+ type: PLATFORMS_MAP.tablet,
1966
+ vendor: "Apple",
1967
+ model: "iPad"
1968
+ };
1969
+ }
1970
+ },
1971
+ /* Amazon Kindle Fire */
1972
+ {
1973
+ test: [/kftt build/i],
1974
+ describe() {
1975
+ return {
1976
+ type: PLATFORMS_MAP.tablet,
1977
+ vendor: "Amazon",
1978
+ model: "Kindle Fire HD 7"
1979
+ };
1980
+ }
1981
+ },
1982
+ /* Another Amazon Tablet with Silk */
1983
+ {
1984
+ test: [/silk/i],
1985
+ describe() {
1986
+ return {
1987
+ type: PLATFORMS_MAP.tablet,
1988
+ vendor: "Amazon"
1989
+ };
1990
+ }
1991
+ },
1992
+ /* Tablet */
1993
+ {
1994
+ test: [/tablet(?! pc)/i],
1995
+ describe() {
1996
+ return {
1997
+ type: PLATFORMS_MAP.tablet
1998
+ };
1999
+ }
2000
+ },
2001
+ /* iPod/iPhone */
2002
+ {
2003
+ test(parser) {
2004
+ const iDevice = parser.test(/ipod|iphone/i);
2005
+ const likeIDevice = parser.test(/like (ipod|iphone)/i);
2006
+ return iDevice && !likeIDevice;
2007
+ },
2008
+ describe(ua) {
2009
+ const model = Utils.getFirstMatch(/(ipod|iphone)/i, ua);
2010
+ return {
2011
+ type: PLATFORMS_MAP.mobile,
2012
+ vendor: "Apple",
2013
+ model
2014
+ };
2015
+ }
2016
+ },
2017
+ /* Nexus Mobile */
2018
+ {
2019
+ test: [/nexus\s*[0-6].*/i, /galaxy nexus/i],
2020
+ describe() {
2021
+ return {
2022
+ type: PLATFORMS_MAP.mobile,
2023
+ vendor: "Nexus"
2024
+ };
2025
+ }
2026
+ },
2027
+ /* Nokia */
2028
+ {
2029
+ test: [/Nokia/i],
2030
+ describe(ua) {
2031
+ const model = Utils.getFirstMatch(/Nokia\s+([0-9]+(\.[0-9]+)?)/i, ua);
2032
+ const platform = {
2033
+ type: PLATFORMS_MAP.mobile,
2034
+ vendor: "Nokia"
2035
+ };
2036
+ if (model) {
2037
+ platform.model = model;
2038
+ }
2039
+ return platform;
2040
+ }
2041
+ },
2042
+ /* Mobile */
2043
+ {
2044
+ test: [/[^-]mobi/i],
2045
+ describe() {
2046
+ return {
2047
+ type: PLATFORMS_MAP.mobile
2048
+ };
2049
+ }
2050
+ },
2051
+ /* BlackBerry */
2052
+ {
2053
+ test(parser) {
2054
+ return parser.getBrowserName(true) === "blackberry";
2055
+ },
2056
+ describe() {
2057
+ return {
2058
+ type: PLATFORMS_MAP.mobile,
2059
+ vendor: "BlackBerry"
2060
+ };
2061
+ }
2062
+ },
2063
+ /* Bada */
2064
+ {
2065
+ test(parser) {
2066
+ return parser.getBrowserName(true) === "bada";
2067
+ },
2068
+ describe() {
2069
+ return {
2070
+ type: PLATFORMS_MAP.mobile
2071
+ };
2072
+ }
2073
+ },
2074
+ /* Windows Phone */
2075
+ {
2076
+ test(parser) {
2077
+ return parser.getBrowserName() === "windows phone";
2078
+ },
2079
+ describe() {
2080
+ return {
2081
+ type: PLATFORMS_MAP.mobile,
2082
+ vendor: "Microsoft"
2083
+ };
2084
+ }
2085
+ },
2086
+ /* Android Tablet */
2087
+ {
2088
+ test(parser) {
2089
+ const osMajorVersion = Number(String(parser.getOSVersion()).split(".")[0]);
2090
+ return parser.getOSName(true) === "android" && osMajorVersion >= 3;
2091
+ },
2092
+ describe() {
2093
+ return {
2094
+ type: PLATFORMS_MAP.tablet
2095
+ };
2096
+ }
2097
+ },
2098
+ /* Android Mobile */
2099
+ {
2100
+ test(parser) {
2101
+ return parser.getOSName(true) === "android";
2102
+ },
2103
+ describe() {
2104
+ return {
2105
+ type: PLATFORMS_MAP.mobile
2106
+ };
2107
+ }
2108
+ },
2109
+ /* Smart TV */
2110
+ {
2111
+ test: [/smart-?tv|smarttv/i],
2112
+ describe() {
2113
+ return {
2114
+ type: PLATFORMS_MAP.tv
2115
+ };
2116
+ }
2117
+ },
2118
+ /* NetCast (LG Smart TV) */
2119
+ {
2120
+ test: [/netcast/i],
2121
+ describe() {
2122
+ return {
2123
+ type: PLATFORMS_MAP.tv
2124
+ };
2125
+ }
2126
+ },
2127
+ /* desktop */
2128
+ {
2129
+ test(parser) {
2130
+ return parser.getOSName(true) === "macos";
2131
+ },
2132
+ describe() {
2133
+ return {
2134
+ type: PLATFORMS_MAP.desktop,
2135
+ vendor: "Apple"
2136
+ };
2137
+ }
2138
+ },
2139
+ /* Windows */
2140
+ {
2141
+ test(parser) {
2142
+ return parser.getOSName(true) === "windows";
2143
+ },
2144
+ describe() {
2145
+ return {
2146
+ type: PLATFORMS_MAP.desktop
2147
+ };
2148
+ }
2149
+ },
2150
+ /* Linux */
2151
+ {
2152
+ test(parser) {
2153
+ return parser.getOSName(true) === "linux";
2154
+ },
2155
+ describe() {
2156
+ return {
2157
+ type: PLATFORMS_MAP.desktop
2158
+ };
2159
+ }
2160
+ },
2161
+ /* PlayStation 4 */
2162
+ {
2163
+ test(parser) {
2164
+ return parser.getOSName(true) === "playstation 4";
2165
+ },
2166
+ describe() {
2167
+ return {
2168
+ type: PLATFORMS_MAP.tv
2169
+ };
2170
+ }
2171
+ },
2172
+ /* Roku */
2173
+ {
2174
+ test(parser) {
2175
+ return parser.getOSName(true) === "roku";
2176
+ },
2177
+ describe() {
2178
+ return {
2179
+ type: PLATFORMS_MAP.tv
2180
+ };
2181
+ }
2182
+ }
2183
+ ];
2184
+
2185
+ // ../../node_modules/bowser/src/parser-engines.js
2186
+ var parser_engines_default = [
2187
+ /* EdgeHTML */
2188
+ {
2189
+ test(parser) {
2190
+ return parser.getBrowserName(true) === "microsoft edge";
2191
+ },
2192
+ describe(ua) {
2193
+ const isBlinkBased = /\sedg\//i.test(ua);
2194
+ if (isBlinkBased) {
2195
+ return {
2196
+ name: ENGINE_MAP.Blink
2197
+ };
2198
+ }
2199
+ const version = Utils.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i, ua);
2200
+ return {
2201
+ name: ENGINE_MAP.EdgeHTML,
2202
+ version
2203
+ };
2204
+ }
2205
+ },
2206
+ /* Trident */
2207
+ {
2208
+ test: [/trident/i],
2209
+ describe(ua) {
2210
+ const engine = {
2211
+ name: ENGINE_MAP.Trident
2212
+ };
2213
+ const version = Utils.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i, ua);
2214
+ if (version) {
2215
+ engine.version = version;
2216
+ }
2217
+ return engine;
2218
+ }
2219
+ },
2220
+ /* Presto */
2221
+ {
2222
+ test(parser) {
2223
+ return parser.test(/presto/i);
2224
+ },
2225
+ describe(ua) {
2226
+ const engine = {
2227
+ name: ENGINE_MAP.Presto
2228
+ };
2229
+ const version = Utils.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i, ua);
2230
+ if (version) {
2231
+ engine.version = version;
2232
+ }
2233
+ return engine;
2234
+ }
2235
+ },
2236
+ /* Gecko */
2237
+ {
2238
+ test(parser) {
2239
+ const isGecko = parser.test(/gecko/i);
2240
+ const likeGecko = parser.test(/like gecko/i);
2241
+ return isGecko && !likeGecko;
2242
+ },
2243
+ describe(ua) {
2244
+ const engine = {
2245
+ name: ENGINE_MAP.Gecko
2246
+ };
2247
+ const version = Utils.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i, ua);
2248
+ if (version) {
2249
+ engine.version = version;
2250
+ }
2251
+ return engine;
2252
+ }
2253
+ },
2254
+ /* Blink */
2255
+ {
2256
+ test: [/(apple)?webkit\/537\.36/i],
2257
+ describe() {
2258
+ return {
2259
+ name: ENGINE_MAP.Blink
2260
+ };
2261
+ }
2262
+ },
2263
+ /* WebKit */
2264
+ {
2265
+ test: [/(apple)?webkit/i],
2266
+ describe(ua) {
2267
+ const engine = {
2268
+ name: ENGINE_MAP.WebKit
2269
+ };
2270
+ const version = Utils.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i, ua);
2271
+ if (version) {
2272
+ engine.version = version;
2273
+ }
2274
+ return engine;
2275
+ }
2276
+ }
2277
+ ];
2278
+
2279
+ // ../../node_modules/bowser/src/parser.js
2280
+ var Parser = class {
2281
+ /**
2282
+ * Create instance of Parser
2283
+ *
2284
+ * @param {String} UA User-Agent string
2285
+ * @param {Boolean|ClientHints} [skipParsingOrHints=false] Either a boolean to skip parsing,
2286
+ * or a ClientHints object containing User-Agent Client Hints data
2287
+ * @param {ClientHints} [clientHints] User-Agent Client Hints data (navigator.userAgentData)
2288
+ *
2289
+ * @throw {Error} in case of empty UA String
2290
+ *
2291
+ * @constructor
2292
+ */
2293
+ constructor(UA, skipParsingOrHints = false, clientHints = null) {
2294
+ if (UA === void 0 || UA === null || UA === "") {
2295
+ throw new Error("UserAgent parameter can't be empty");
2296
+ }
2297
+ this._ua = UA;
2298
+ let skipParsing = false;
2299
+ if (typeof skipParsingOrHints === "boolean") {
2300
+ skipParsing = skipParsingOrHints;
2301
+ this._hints = clientHints;
2302
+ } else if (skipParsingOrHints != null && typeof skipParsingOrHints === "object") {
2303
+ this._hints = skipParsingOrHints;
2304
+ } else {
2305
+ this._hints = null;
2306
+ }
2307
+ this.parsedResult = {};
2308
+ if (skipParsing !== true) {
2309
+ this.parse();
2310
+ }
2311
+ }
2312
+ /**
2313
+ * Get Client Hints data
2314
+ * @return {ClientHints|null}
2315
+ *
2316
+ * @public
2317
+ * @example
2318
+ * const parser = Bowser.getParser(UA, clientHints);
2319
+ * const hints = parser.getHints();
2320
+ * console.log(hints.platform); // 'Windows'
2321
+ * console.log(hints.mobile); // false
2322
+ */
2323
+ getHints() {
2324
+ return this._hints;
2325
+ }
2326
+ /**
2327
+ * Check if a brand exists in Client Hints brands array
2328
+ * @param {string} brandName The brand name to check for
2329
+ * @return {boolean}
2330
+ *
2331
+ * @public
2332
+ * @example
2333
+ * const parser = Bowser.getParser(UA, clientHints);
2334
+ * if (parser.hasBrand('Google Chrome')) {
2335
+ * console.log('Chrome detected!');
2336
+ * }
2337
+ */
2338
+ hasBrand(brandName) {
2339
+ if (!this._hints || !Array.isArray(this._hints.brands)) {
2340
+ return false;
2341
+ }
2342
+ const brandLower = brandName.toLowerCase();
2343
+ return this._hints.brands.some(
2344
+ (b) => b.brand && b.brand.toLowerCase() === brandLower
2345
+ );
2346
+ }
2347
+ /**
2348
+ * Get brand version from Client Hints
2349
+ * @param {string} brandName The brand name to get version for
2350
+ * @return {string|undefined}
2351
+ *
2352
+ * @public
2353
+ * @example
2354
+ * const parser = Bowser.getParser(UA, clientHints);
2355
+ * const version = parser.getBrandVersion('Google Chrome');
2356
+ * console.log(version); // '131'
2357
+ */
2358
+ getBrandVersion(brandName) {
2359
+ if (!this._hints || !Array.isArray(this._hints.brands)) {
2360
+ return void 0;
2361
+ }
2362
+ const brandLower = brandName.toLowerCase();
2363
+ const brand = this._hints.brands.find(
2364
+ (b) => b.brand && b.brand.toLowerCase() === brandLower
2365
+ );
2366
+ return brand ? brand.version : void 0;
2367
+ }
2368
+ /**
2369
+ * Get UserAgent string of current Parser instance
2370
+ * @return {String} User-Agent String of the current <Parser> object
2371
+ *
2372
+ * @public
2373
+ */
2374
+ getUA() {
2375
+ return this._ua;
2376
+ }
2377
+ /**
2378
+ * Test a UA string for a regexp
2379
+ * @param {RegExp} regex
2380
+ * @return {Boolean}
2381
+ */
2382
+ test(regex) {
2383
+ return regex.test(this._ua);
2384
+ }
2385
+ /**
2386
+ * Get parsed browser object
2387
+ * @return {Object}
2388
+ */
2389
+ parseBrowser() {
2390
+ this.parsedResult.browser = {};
2391
+ const browserDescriptor = Utils.find(parser_browsers_default, (_browser) => {
2392
+ if (typeof _browser.test === "function") {
2393
+ return _browser.test(this);
2394
+ }
2395
+ if (Array.isArray(_browser.test)) {
2396
+ return _browser.test.some((condition) => this.test(condition));
2397
+ }
2398
+ throw new Error("Browser's test function is not valid");
2399
+ });
2400
+ if (browserDescriptor) {
2401
+ this.parsedResult.browser = browserDescriptor.describe(this.getUA(), this);
2402
+ }
2403
+ return this.parsedResult.browser;
2404
+ }
2405
+ /**
2406
+ * Get parsed browser object
2407
+ * @return {Object}
2408
+ *
2409
+ * @public
2410
+ */
2411
+ getBrowser() {
2412
+ if (this.parsedResult.browser) {
2413
+ return this.parsedResult.browser;
2414
+ }
2415
+ return this.parseBrowser();
2416
+ }
2417
+ /**
2418
+ * Get browser's name
2419
+ * @return {String} Browser's name or an empty string
2420
+ *
2421
+ * @public
2422
+ */
2423
+ getBrowserName(toLowerCase) {
2424
+ if (toLowerCase) {
2425
+ return String(this.getBrowser().name).toLowerCase() || "";
2426
+ }
2427
+ return this.getBrowser().name || "";
2428
+ }
2429
+ /**
2430
+ * Get browser's version
2431
+ * @return {String} version of browser
2432
+ *
2433
+ * @public
2434
+ */
2435
+ getBrowserVersion() {
2436
+ return this.getBrowser().version;
2437
+ }
2438
+ /**
2439
+ * Get OS
2440
+ * @return {Object}
2441
+ *
2442
+ * @example
2443
+ * this.getOS();
2444
+ * {
2445
+ * name: 'macOS',
2446
+ * version: '10.11.12'
2447
+ * }
2448
+ */
2449
+ getOS() {
2450
+ if (this.parsedResult.os) {
2451
+ return this.parsedResult.os;
2452
+ }
2453
+ return this.parseOS();
2454
+ }
2455
+ /**
2456
+ * Parse OS and save it to this.parsedResult.os
2457
+ * @return {*|{}}
2458
+ */
2459
+ parseOS() {
2460
+ this.parsedResult.os = {};
2461
+ const os = Utils.find(parser_os_default, (_os) => {
2462
+ if (typeof _os.test === "function") {
2463
+ return _os.test(this);
2464
+ }
2465
+ if (Array.isArray(_os.test)) {
2466
+ return _os.test.some((condition) => this.test(condition));
2467
+ }
2468
+ throw new Error("Browser's test function is not valid");
2469
+ });
2470
+ if (os) {
2471
+ this.parsedResult.os = os.describe(this.getUA());
2472
+ }
2473
+ return this.parsedResult.os;
2474
+ }
2475
+ /**
2476
+ * Get OS name
2477
+ * @param {Boolean} [toLowerCase] return lower-cased value
2478
+ * @return {String} name of the OS — macOS, Windows, Linux, etc.
2479
+ */
2480
+ getOSName(toLowerCase) {
2481
+ const { name } = this.getOS();
2482
+ if (toLowerCase) {
2483
+ return String(name).toLowerCase() || "";
2484
+ }
2485
+ return name || "";
2486
+ }
2487
+ /**
2488
+ * Get OS version
2489
+ * @return {String} full version with dots ('10.11.12', '5.6', etc)
2490
+ */
2491
+ getOSVersion() {
2492
+ return this.getOS().version;
2493
+ }
2494
+ /**
2495
+ * Get parsed platform
2496
+ * @return {{}}
2497
+ */
2498
+ getPlatform() {
2499
+ if (this.parsedResult.platform) {
2500
+ return this.parsedResult.platform;
2501
+ }
2502
+ return this.parsePlatform();
2503
+ }
2504
+ /**
2505
+ * Get platform name
2506
+ * @param {Boolean} [toLowerCase=false]
2507
+ * @return {*}
2508
+ */
2509
+ getPlatformType(toLowerCase = false) {
2510
+ const { type } = this.getPlatform();
2511
+ if (toLowerCase) {
2512
+ return String(type).toLowerCase() || "";
2513
+ }
2514
+ return type || "";
2515
+ }
2516
+ /**
2517
+ * Get parsed platform
2518
+ * @return {{}}
2519
+ */
2520
+ parsePlatform() {
2521
+ this.parsedResult.platform = {};
2522
+ const platform = Utils.find(parser_platforms_default, (_platform) => {
2523
+ if (typeof _platform.test === "function") {
2524
+ return _platform.test(this);
2525
+ }
2526
+ if (Array.isArray(_platform.test)) {
2527
+ return _platform.test.some((condition) => this.test(condition));
2528
+ }
2529
+ throw new Error("Browser's test function is not valid");
2530
+ });
2531
+ if (platform) {
2532
+ this.parsedResult.platform = platform.describe(this.getUA());
2533
+ }
2534
+ return this.parsedResult.platform;
2535
+ }
2536
+ /**
2537
+ * Get parsed engine
2538
+ * @return {{}}
2539
+ */
2540
+ getEngine() {
2541
+ if (this.parsedResult.engine) {
2542
+ return this.parsedResult.engine;
2543
+ }
2544
+ return this.parseEngine();
2545
+ }
2546
+ /**
2547
+ * Get engines's name
2548
+ * @return {String} Engines's name or an empty string
2549
+ *
2550
+ * @public
2551
+ */
2552
+ getEngineName(toLowerCase) {
2553
+ if (toLowerCase) {
2554
+ return String(this.getEngine().name).toLowerCase() || "";
2555
+ }
2556
+ return this.getEngine().name || "";
2557
+ }
2558
+ /**
2559
+ * Get parsed platform
2560
+ * @return {{}}
2561
+ */
2562
+ parseEngine() {
2563
+ this.parsedResult.engine = {};
2564
+ const engine = Utils.find(parser_engines_default, (_engine) => {
2565
+ if (typeof _engine.test === "function") {
2566
+ return _engine.test(this);
2567
+ }
2568
+ if (Array.isArray(_engine.test)) {
2569
+ return _engine.test.some((condition) => this.test(condition));
2570
+ }
2571
+ throw new Error("Browser's test function is not valid");
2572
+ });
2573
+ if (engine) {
2574
+ this.parsedResult.engine = engine.describe(this.getUA());
2575
+ }
2576
+ return this.parsedResult.engine;
2577
+ }
2578
+ /**
2579
+ * Parse full information about the browser
2580
+ * @returns {Parser}
2581
+ */
2582
+ parse() {
2583
+ this.parseBrowser();
2584
+ this.parseOS();
2585
+ this.parsePlatform();
2586
+ this.parseEngine();
2587
+ return this;
2588
+ }
2589
+ /**
2590
+ * Get parsed result
2591
+ * @return {ParsedResult}
2592
+ */
2593
+ getResult() {
2594
+ return Utils.assign({}, this.parsedResult);
2595
+ }
2596
+ /**
2597
+ * Check if parsed browser matches certain conditions
2598
+ *
2599
+ * @param {Object} checkTree It's one or two layered object,
2600
+ * which can include a platform or an OS on the first layer
2601
+ * and should have browsers specs on the bottom-laying layer
2602
+ *
2603
+ * @returns {Boolean|undefined} Whether the browser satisfies the set conditions or not.
2604
+ * Returns `undefined` when the browser is no described in the checkTree object.
2605
+ *
2606
+ * @example
2607
+ * const browser = Bowser.getParser(window.navigator.userAgent);
2608
+ * if (browser.satisfies({chrome: '>118.01.1322' }))
2609
+ * // or with os
2610
+ * if (browser.satisfies({windows: { chrome: '>118.01.1322' } }))
2611
+ * // or with platforms
2612
+ * if (browser.satisfies({desktop: { chrome: '>118.01.1322' } }))
2613
+ */
2614
+ satisfies(checkTree) {
2615
+ const platformsAndOSes = {};
2616
+ let platformsAndOSCounter = 0;
2617
+ const browsers = {};
2618
+ let browsersCounter = 0;
2619
+ const allDefinitions = Object.keys(checkTree);
2620
+ allDefinitions.forEach((key) => {
2621
+ const currentDefinition = checkTree[key];
2622
+ if (typeof currentDefinition === "string") {
2623
+ browsers[key] = currentDefinition;
2624
+ browsersCounter += 1;
2625
+ } else if (typeof currentDefinition === "object") {
2626
+ platformsAndOSes[key] = currentDefinition;
2627
+ platformsAndOSCounter += 1;
2628
+ }
2629
+ });
2630
+ if (platformsAndOSCounter > 0) {
2631
+ const platformsAndOSNames = Object.keys(platformsAndOSes);
2632
+ const OSMatchingDefinition = Utils.find(platformsAndOSNames, (name) => this.isOS(name));
2633
+ if (OSMatchingDefinition) {
2634
+ const osResult = this.satisfies(platformsAndOSes[OSMatchingDefinition]);
2635
+ if (osResult !== void 0) {
2636
+ return osResult;
2637
+ }
2638
+ }
2639
+ const platformMatchingDefinition = Utils.find(
2640
+ platformsAndOSNames,
2641
+ (name) => this.isPlatform(name)
2642
+ );
2643
+ if (platformMatchingDefinition) {
2644
+ const platformResult = this.satisfies(platformsAndOSes[platformMatchingDefinition]);
2645
+ if (platformResult !== void 0) {
2646
+ return platformResult;
2647
+ }
2648
+ }
2649
+ }
2650
+ if (browsersCounter > 0) {
2651
+ const browserNames = Object.keys(browsers);
2652
+ const matchingDefinition = Utils.find(browserNames, (name) => this.isBrowser(name, true));
2653
+ if (matchingDefinition !== void 0) {
2654
+ return this.compareVersion(browsers[matchingDefinition]);
2655
+ }
2656
+ }
2657
+ return void 0;
2658
+ }
2659
+ /**
2660
+ * Check if the browser name equals the passed string
2661
+ * @param {string} browserName The string to compare with the browser name
2662
+ * @param [includingAlias=false] The flag showing whether alias will be included into comparison
2663
+ * @returns {boolean}
2664
+ */
2665
+ isBrowser(browserName, includingAlias = false) {
2666
+ const defaultBrowserName = this.getBrowserName().toLowerCase();
2667
+ let browserNameLower = browserName.toLowerCase();
2668
+ const alias = Utils.getBrowserTypeByAlias(browserNameLower);
2669
+ if (includingAlias && alias) {
2670
+ browserNameLower = alias.toLowerCase();
2671
+ }
2672
+ return browserNameLower === defaultBrowserName;
2673
+ }
2674
+ compareVersion(version) {
2675
+ let expectedResults = [0];
2676
+ let comparableVersion = version;
2677
+ let isLoose = false;
2678
+ const currentBrowserVersion = this.getBrowserVersion();
2679
+ if (typeof currentBrowserVersion !== "string") {
2680
+ return void 0;
2681
+ }
2682
+ if (version[0] === ">" || version[0] === "<") {
2683
+ comparableVersion = version.substr(1);
2684
+ if (version[1] === "=") {
2685
+ isLoose = true;
2686
+ comparableVersion = version.substr(2);
2687
+ } else {
2688
+ expectedResults = [];
2689
+ }
2690
+ if (version[0] === ">") {
2691
+ expectedResults.push(1);
2692
+ } else {
2693
+ expectedResults.push(-1);
2694
+ }
2695
+ } else if (version[0] === "=") {
2696
+ comparableVersion = version.substr(1);
2697
+ } else if (version[0] === "~") {
2698
+ isLoose = true;
2699
+ comparableVersion = version.substr(1);
2700
+ }
2701
+ return expectedResults.indexOf(
2702
+ Utils.compareVersions(currentBrowserVersion, comparableVersion, isLoose)
2703
+ ) > -1;
2704
+ }
2705
+ /**
2706
+ * Check if the OS name equals the passed string
2707
+ * @param {string} osName The string to compare with the OS name
2708
+ * @returns {boolean}
2709
+ */
2710
+ isOS(osName) {
2711
+ return this.getOSName(true) === String(osName).toLowerCase();
2712
+ }
2713
+ /**
2714
+ * Check if the platform type equals the passed string
2715
+ * @param {string} platformType The string to compare with the platform type
2716
+ * @returns {boolean}
2717
+ */
2718
+ isPlatform(platformType) {
2719
+ return this.getPlatformType(true) === String(platformType).toLowerCase();
2720
+ }
2721
+ /**
2722
+ * Check if the engine name equals the passed string
2723
+ * @param {string} engineName The string to compare with the engine name
2724
+ * @returns {boolean}
2725
+ */
2726
+ isEngine(engineName) {
2727
+ return this.getEngineName(true) === String(engineName).toLowerCase();
2728
+ }
2729
+ /**
2730
+ * Is anything? Check if the browser is called "anything",
2731
+ * the OS called "anything" or the platform called "anything"
2732
+ * @param {String} anything
2733
+ * @param [includingAlias=false] The flag showing whether alias will be included into comparison
2734
+ * @returns {Boolean}
2735
+ */
2736
+ is(anything, includingAlias = false) {
2737
+ return this.isBrowser(anything, includingAlias) || this.isOS(anything) || this.isPlatform(anything);
2738
+ }
2739
+ /**
2740
+ * Check if any of the given values satisfies this.is(anything)
2741
+ * @param {String[]} anythings
2742
+ * @returns {Boolean}
2743
+ */
2744
+ some(anythings = []) {
2745
+ return anythings.some((anything) => this.is(anything));
2746
+ }
2747
+ };
2748
+ var parser_default = Parser;
2749
+
2750
+ // ../../node_modules/bowser/src/bowser.js
2751
+ var Bowser = class {
2752
+ /**
2753
+ * Creates a {@link Parser} instance
2754
+ *
2755
+ * @param {String} UA UserAgent string
2756
+ * @param {Boolean|Object} [skipParsingOrHints=false] Either a boolean to skip parsing,
2757
+ * or a ClientHints object (navigator.userAgentData)
2758
+ * @param {Object} [clientHints] User-Agent Client Hints data (navigator.userAgentData)
2759
+ * @returns {Parser}
2760
+ * @throws {Error} when UA is not a String
2761
+ *
2762
+ * @example
2763
+ * const parser = Bowser.getParser(window.navigator.userAgent);
2764
+ * const result = parser.getResult();
2765
+ *
2766
+ * @example
2767
+ * // With User-Agent Client Hints
2768
+ * const parser = Bowser.getParser(
2769
+ * window.navigator.userAgent,
2770
+ * window.navigator.userAgentData
2771
+ * );
2772
+ */
2773
+ static getParser(UA, skipParsingOrHints = false, clientHints = null) {
2774
+ if (typeof UA !== "string") {
2775
+ throw new Error("UserAgent should be a string");
2776
+ }
2777
+ return new parser_default(UA, skipParsingOrHints, clientHints);
2778
+ }
2779
+ /**
2780
+ * Creates a {@link Parser} instance and runs {@link Parser.getResult} immediately
2781
+ *
2782
+ * @param {String} UA UserAgent string
2783
+ * @param {Object} [clientHints] User-Agent Client Hints data (navigator.userAgentData)
2784
+ * @return {ParsedResult}
2785
+ *
2786
+ * @example
2787
+ * const result = Bowser.parse(window.navigator.userAgent);
2788
+ *
2789
+ * @example
2790
+ * // With User-Agent Client Hints
2791
+ * const result = Bowser.parse(
2792
+ * window.navigator.userAgent,
2793
+ * window.navigator.userAgentData
2794
+ * );
2795
+ */
2796
+ static parse(UA, clientHints = null) {
2797
+ return new parser_default(UA, clientHints).getResult();
2798
+ }
2799
+ static get BROWSER_MAP() {
2800
+ return BROWSER_MAP;
2801
+ }
2802
+ static get ENGINE_MAP() {
2803
+ return ENGINE_MAP;
2804
+ }
2805
+ static get OS_MAP() {
2806
+ return OS_MAP;
2807
+ }
2808
+ static get PLATFORMS_MAP() {
2809
+ return PLATFORMS_MAP;
2810
+ }
2811
+ };
2812
+ var bowser_default = Bowser;
2813
+ export {
2814
+ bowser_default as default
2815
+ };
2816
+ /*! Bundled license information:
2817
+
2818
+ bowser/src/bowser.js:
2819
+ (*!
2820
+ * Bowser - a browser detector
2821
+ * https://github.com/bowser-js/bowser
2822
+ * MIT License | (c) Dustin Diaz 2012-2015
2823
+ * MIT License | (c) Denis Demchenko 2015-2019
2824
+ *)
2825
+ */