urlpurify 2.2.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/README.md +96 -45
  2. package/dist/clean.d.mts +1 -0
  3. package/dist/clean.mjs +56 -19
  4. package/dist/defaults.d.mts +7 -1
  5. package/dist/defaults.mjs +160 -3
  6. package/dist/index.d.mts +79 -4
  7. package/dist/index.mjs +79 -4
  8. package/dist/node_modules/entities/dist/decode-codepoint.mjs +2 -2
  9. package/dist/node_modules/entities/dist/decode.mjs +262 -247
  10. package/dist/node_modules/entities/dist/generated/decode-data-html.mjs +8 -4
  11. package/dist/node_modules/entities/dist/internal/decode-data-format.mjs +116 -0
  12. package/dist/node_modules/trousse/dist/is.mjs +7 -1
  13. package/dist/node_modules/trousse/dist/locales.mjs +21 -0
  14. package/dist/node_modules/trousse/dist/matching.mjs +22 -20
  15. package/dist/node_modules/trousse/dist/urls.mjs +186 -53
  16. package/dist/pathTarget.mjs +2 -2
  17. package/dist/tracking/clickAttribution.mjs +26 -1
  18. package/dist/tracking/housekeeping.mjs +13 -1
  19. package/dist/tracking/session.d.mts +2 -0
  20. package/dist/tracking/session.mjs +12 -0
  21. package/dist/types.d.mts +7 -1
  22. package/dist/unwraps/a8Net.mjs +1 -1
  23. package/dist/unwraps/acast.mjs +1 -1
  24. package/dist/unwraps/accesstrade.mjs +1 -1
  25. package/dist/unwraps/aceml.mjs +2 -2
  26. package/dist/unwraps/adcell.mjs +1 -1
  27. package/dist/unwraps/addThis.d.mts +2 -0
  28. package/dist/unwraps/addThis.mjs +17 -0
  29. package/dist/unwraps/addToAny.d.mts +2 -0
  30. package/dist/unwraps/addToAny.mjs +21 -0
  31. package/dist/unwraps/addToAnySubscribe.d.mts +2 -0
  32. package/dist/unwraps/addToAnySubscribe.mjs +8 -0
  33. package/dist/unwraps/addToMyYahoo.d.mts +2 -0
  34. package/dist/unwraps/addToMyYahoo.mjs +29 -0
  35. package/dist/unwraps/adfly.mjs +1 -1
  36. package/dist/unwraps/admitad.mjs +1 -1
  37. package/dist/unwraps/affilae.mjs +2 -1
  38. package/dist/unwraps/affiliatesOne.mjs +1 -1
  39. package/dist/unwraps/allblog.mjs +1 -1
  40. package/dist/unwraps/amazonAffiliate.mjs +5 -4
  41. package/dist/unwraps/amazonSes.mjs +2 -2
  42. package/dist/unwraps/ampCache.mjs +4 -3
  43. package/dist/unwraps/ampCacheImage.mjs +1 -1
  44. package/dist/unwraps/anchor.mjs +1 -1
  45. package/dist/unwraps/anonymouse.mjs +1 -1
  46. package/dist/unwraps/antennaPod.d.mts +2 -0
  47. package/dist/unwraps/antennaPod.mjs +15 -0
  48. package/dist/unwraps/anytimePlayer.d.mts +2 -0
  49. package/dist/unwraps/anytimePlayer.mjs +17 -0
  50. package/dist/unwraps/apptrkr.mjs +2 -1
  51. package/dist/unwraps/archiveToday.mjs +2 -2
  52. package/dist/unwraps/arquivo.mjs +1 -1
  53. package/dist/unwraps/arttrack.mjs +1 -1
  54. package/dist/unwraps/augure.mjs +3 -3
  55. package/dist/unwraps/awesound.mjs +1 -1
  56. package/dist/unwraps/axigen.mjs +2 -1
  57. package/dist/unwraps/bacLacWebArchive.mjs +1 -1
  58. package/dist/unwraps/bananatag.mjs +1 -1
  59. package/dist/unwraps/big5Gate.mjs +1 -1
  60. package/dist/unwraps/bing.mjs +7 -7
  61. package/dist/unwraps/bingAds.mjs +4 -4
  62. package/dist/unwraps/bitrix.mjs +2 -1
  63. package/dist/unwraps/bitrixBanner.mjs +2 -1
  64. package/dist/unwraps/blinkList.d.mts +2 -0
  65. package/dist/unwraps/blinkList.mjs +8 -0
  66. package/dist/unwraps/bloggerBlogThis.d.mts +2 -0
  67. package/dist/unwraps/bloggerBlogThis.mjs +16 -0
  68. package/dist/unwraps/bloggerImageProxy.mjs +2 -1
  69. package/dist/unwraps/bloglines.d.mts +2 -0
  70. package/dist/unwraps/bloglines.mjs +21 -0
  71. package/dist/unwraps/bridgyFed.mjs +1 -1
  72. package/dist/unwraps/buffer.d.mts +2 -0
  73. package/dist/unwraps/buffer.mjs +23 -0
  74. package/dist/unwraps/buybox.mjs +1 -1
  75. package/dist/unwraps/buzzstream.mjs +1 -1
  76. package/dist/unwraps/checkPointHarmony.mjs +2 -2
  77. package/dist/unwraps/cjNetwork.mjs +3 -3
  78. package/dist/unwraps/claritas.mjs +2 -2
  79. package/dist/unwraps/cleverbridge.mjs +1 -1
  80. package/dist/unwraps/cloudhq.mjs +1 -1
  81. package/dist/unwraps/cloze.mjs +1 -1
  82. package/dist/unwraps/cohst.mjs +1 -1
  83. package/dist/unwraps/contactMonkey.mjs +3 -2
  84. package/dist/unwraps/convertiser.mjs +1 -1
  85. package/dist/unwraps/cse360.mjs +1 -1
  86. package/dist/unwraps/dasBlog.mjs +1 -1
  87. package/dist/unwraps/datalifeEngine.mjs +5 -4
  88. package/dist/unwraps/delicious.d.mts +2 -0
  89. package/dist/unwraps/delicious.mjs +15 -0
  90. package/dist/unwraps/deployer.mjs +2 -2
  91. package/dist/unwraps/derefMail.mjs +4 -3
  92. package/dist/unwraps/deviantartOutgoing.mjs +1 -1
  93. package/dist/unwraps/diasporaShare.d.mts +2 -0
  94. package/dist/unwraps/diasporaShare.mjs +16 -0
  95. package/dist/unwraps/diggSubmit.d.mts +2 -0
  96. package/dist/unwraps/diggSubmit.mjs +11 -0
  97. package/dist/unwraps/digikala.mjs +3 -3
  98. package/dist/unwraps/diigoPost.d.mts +2 -0
  99. package/dist/unwraps/diigoPost.mjs +12 -0
  100. package/dist/unwraps/disqus.mjs +2 -1
  101. package/dist/unwraps/dstats.mjs +2 -2
  102. package/dist/unwraps/eClick.mjs +1 -1
  103. package/dist/unwraps/easyMarketing.mjs +3 -3
  104. package/dist/unwraps/ebayRover.mjs +1 -1
  105. package/dist/unwraps/ebuzzing.mjs +1 -1
  106. package/dist/unwraps/edgepilot.mjs +1 -1
  107. package/dist/unwraps/effiliation.mjs +1 -1
  108. package/dist/unwraps/elasticEmail.mjs +2 -1
  109. package/dist/unwraps/epn.mjs +1 -1
  110. package/dist/unwraps/eulerian.mjs +1 -1
  111. package/dist/unwraps/evernoteClip.d.mts +2 -0
  112. package/dist/unwraps/evernoteClip.mjs +8 -0
  113. package/dist/unwraps/exciteTranslate.mjs +1 -1
  114. package/dist/unwraps/facebook.mjs +1 -1
  115. package/dist/unwraps/facebookShare.d.mts +2 -0
  116. package/dist/unwraps/facebookShare.mjs +25 -0
  117. package/dist/unwraps/feed2js.d.mts +2 -0
  118. package/dist/unwraps/feed2js.mjs +16 -0
  119. package/dist/unwraps/feedStatistics.mjs +2 -2
  120. package/dist/unwraps/feedValidator.d.mts +2 -0
  121. package/dist/unwraps/feedValidator.mjs +12 -0
  122. package/dist/unwraps/feedblitz.mjs +1 -1
  123. package/dist/unwraps/feedland.d.mts +2 -0
  124. package/dist/unwraps/feedland.mjs +12 -0
  125. package/dist/unwraps/feedly.d.mts +2 -0
  126. package/dist/unwraps/feedly.mjs +28 -0
  127. package/dist/unwraps/feedsportal.mjs +1 -1
  128. package/dist/unwraps/firebaseDynamicLinks.mjs +1 -1
  129. package/dist/unwraps/firstory.mjs +3 -3
  130. package/dist/unwraps/fiveByFive.mjs +2 -2
  131. package/dist/unwraps/flattrSubmit.d.mts +2 -0
  132. package/dist/unwraps/flattrSubmit.mjs +8 -0
  133. package/dist/unwraps/flipboardShare.d.mts +2 -0
  134. package/dist/unwraps/flipboardShare.mjs +15 -0
  135. package/dist/unwraps/fortimail.mjs +2 -1
  136. package/dist/unwraps/friendFeed.d.mts +2 -0
  137. package/dist/unwraps/friendFeed.mjs +18 -0
  138. package/dist/unwraps/gabCompose.d.mts +2 -0
  139. package/dist/unwraps/gabCompose.mjs +8 -0
  140. package/dist/unwraps/genericCarrier.d.mts +2 -0
  141. package/dist/unwraps/genericCarrier.mjs +31 -0
  142. package/dist/unwraps/gfnLinkProxy.mjs +3 -3
  143. package/dist/unwraps/godcaster.mjs +2 -2
  144. package/dist/unwraps/googleAmpViewer.mjs +2 -2
  145. package/dist/unwraps/googleBookmarks.d.mts +2 -0
  146. package/dist/unwraps/googleBookmarks.mjs +8 -0
  147. package/dist/unwraps/googleBuzz.d.mts +2 -0
  148. package/dist/unwraps/googleBuzz.mjs +8 -0
  149. package/dist/unwraps/googleNewsModern.mjs +2 -3
  150. package/dist/unwraps/googlePlusShare.d.mts +2 -0
  151. package/dist/unwraps/googlePlusShare.mjs +11 -0
  152. package/dist/unwraps/googlePodcasts.d.mts +2 -0
  153. package/dist/unwraps/googlePodcasts.mjs +27 -0
  154. package/dist/unwraps/googleReader.d.mts +2 -0
  155. package/dist/unwraps/googleReader.mjs +20 -0
  156. package/dist/unwraps/googleTranslate.mjs +5 -5
  157. package/dist/unwraps/govdelivery.mjs +3 -2
  158. package/dist/unwraps/hackerNewsSubmit.d.mts +2 -0
  159. package/dist/unwraps/hackerNewsSubmit.mjs +8 -0
  160. package/dist/unwraps/hasoffers.mjs +2 -1
  161. package/dist/unwraps/hatenaBookmark.d.mts +2 -0
  162. package/dist/unwraps/hatenaBookmark.mjs +22 -0
  163. package/dist/unwraps/hirkereso.mjs +1 -1
  164. package/dist/unwraps/horde.mjs +1 -1
  165. package/dist/unwraps/hubspotSidekick.mjs +1 -1
  166. package/dist/unwraps/impact.mjs +2 -2
  167. package/dist/unwraps/indexHu.mjs +2 -1
  168. package/dist/unwraps/inoreader.d.mts +2 -0
  169. package/dist/unwraps/inoreader.mjs +22 -0
  170. package/dist/unwraps/instapaperSave.d.mts +2 -0
  171. package/dist/unwraps/instapaperSave.mjs +11 -0
  172. package/dist/unwraps/invisionNoExternalLinks.mjs +1 -1
  173. package/dist/unwraps/involveAsia.mjs +1 -1
  174. package/dist/unwraps/jive.mjs +2 -1
  175. package/dist/unwraps/klook.mjs +2 -1
  176. package/dist/unwraps/lazada.mjs +1 -1
  177. package/dist/unwraps/letscast.mjs +1 -1
  178. package/dist/unwraps/lineShare.d.mts +2 -0
  179. package/dist/unwraps/lineShare.mjs +25 -0
  180. package/dist/unwraps/linkA.mjs +1 -1
  181. package/dist/unwraps/linkedin.mjs +1 -1
  182. package/dist/unwraps/linkedinShare.d.mts +2 -0
  183. package/dist/unwraps/linkedinShare.mjs +15 -0
  184. package/dist/unwraps/linksynergy.mjs +2 -2
  185. package/dist/unwraps/linktrust.mjs +3 -3
  186. package/dist/unwraps/linkwise.mjs +1 -1
  187. package/dist/unwraps/livedoorReader.d.mts +2 -0
  188. package/dist/unwraps/livedoorReader.mjs +12 -0
  189. package/dist/unwraps/locWebArchive.mjs +1 -1
  190. package/dist/unwraps/locaweb.mjs +2 -1
  191. package/dist/unwraps/logicboard.mjs +1 -1
  192. package/dist/unwraps/magellan.mjs +1 -1
  193. package/dist/unwraps/mail2easy.mjs +1 -1
  194. package/dist/unwraps/mailchimp.mjs +1 -1
  195. package/dist/unwraps/mailinblack.mjs +6 -4
  196. package/dist/unwraps/mailstat.mjs +1 -1
  197. package/dist/unwraps/mailtrack.mjs +1 -1
  198. package/dist/unwraps/mandrill.mjs +3 -3
  199. package/dist/unwraps/medium.mjs +5 -5
  200. package/dist/unwraps/meneameSubmit.d.mts +2 -0
  201. package/dist/unwraps/meneameSubmit.mjs +11 -0
  202. package/dist/unwraps/meweShare.d.mts +2 -0
  203. package/dist/unwraps/meweShare.mjs +8 -0
  204. package/dist/unwraps/mimecast.mjs +1 -1
  205. package/dist/unwraps/ministryCloud.mjs +1 -1
  206. package/dist/unwraps/mintDownloads.mjs +1 -1
  207. package/dist/unwraps/mintFeeder.mjs +2 -1
  208. package/dist/unwraps/mohtwize.mjs +6 -4
  209. package/dist/unwraps/morss.d.mts +2 -0
  210. package/dist/unwraps/morss.mjs +13 -0
  211. package/dist/unwraps/mozillaOutgoing.mjs +3 -3
  212. package/dist/unwraps/myAolFeeds.d.mts +2 -0
  213. package/dist/unwraps/myAolFeeds.mjs +8 -0
  214. package/dist/unwraps/narrativ.mjs +1 -1
  215. package/dist/unwraps/natlibNz.mjs +1 -1
  216. package/dist/unwraps/ncls.mjs +2 -1
  217. package/dist/unwraps/ndlWarp.mjs +2 -2
  218. package/dist/unwraps/netaffiliation.mjs +1 -1
  219. package/dist/unwraps/netvibes.d.mts +2 -0
  220. package/dist/unwraps/netvibes.mjs +7 -0
  221. package/dist/unwraps/newsGator.d.mts +2 -0
  222. package/dist/unwraps/newsGator.mjs +17 -0
  223. package/dist/unwraps/newswire.mjs +3 -3
  224. package/dist/unwraps/nicoMs.mjs +1 -1
  225. package/dist/unwraps/nimble.mjs +1 -1
  226. package/dist/unwraps/nlaWebarchive.mjs +3 -3
  227. package/dist/unwraps/okShare.d.mts +2 -0
  228. package/dist/unwraps/okShare.mjs +23 -0
  229. package/dist/unwraps/op3.mjs +1 -1
  230. package/dist/unwraps/outlookSafelinks.mjs +1 -1
  231. package/dist/unwraps/pageflakes.d.mts +2 -0
  232. package/dist/unwraps/pageflakes.mjs +8 -0
  233. package/dist/unwraps/pagefreezer.mjs +2 -2
  234. package/dist/unwraps/partnerAds.mjs +2 -2
  235. package/dist/unwraps/pbs.mjs +1 -1
  236. package/dist/unwraps/pinterestPin.d.mts +2 -0
  237. package/dist/unwraps/pinterestPin.mjs +85 -0
  238. package/dist/unwraps/pipedrive.mjs +1 -1
  239. package/dist/unwraps/playerFm.d.mts +2 -0
  240. package/dist/unwraps/playerFm.mjs +16 -0
  241. package/dist/unwraps/pocketSave.d.mts +2 -0
  242. package/dist/unwraps/pocketSave.mjs +15 -0
  243. package/dist/unwraps/podcastAddict.d.mts +2 -0
  244. package/dist/unwraps/podcastAddict.mjs +14 -0
  245. package/dist/unwraps/podcastReady.d.mts +2 -0
  246. package/dist/unwraps/podcastReady.mjs +8 -0
  247. package/dist/unwraps/podcorn.mjs +1 -1
  248. package/dist/unwraps/podkite.mjs +1 -1
  249. package/dist/unwraps/podscribe.mjs +1 -1
  250. package/dist/unwraps/podsights.mjs +1 -1
  251. package/dist/unwraps/podup.mjs +2 -3
  252. package/dist/unwraps/postAffiliatePro.mjs +1 -1
  253. package/dist/unwraps/postmark.mjs +1 -1
  254. package/dist/unwraps/prNewswire.mjs +2 -2
  255. package/dist/unwraps/prezly.mjs +1 -1
  256. package/dist/unwraps/proofpointV3.mjs +3 -3
  257. package/dist/unwraps/prweb.mjs +2 -2
  258. package/dist/unwraps/prxPlayer.d.mts +2 -0
  259. package/dist/unwraps/prxPlayer.mjs +16 -0
  260. package/dist/unwraps/qqMailReader.d.mts +2 -0
  261. package/dist/unwraps/qqMailReader.mjs +8 -0
  262. package/dist/unwraps/qualityClick.mjs +2 -1
  263. package/dist/unwraps/qzoneShare.d.mts +2 -0
  264. package/dist/unwraps/qzoneShare.mjs +8 -0
  265. package/dist/unwraps/rakutenAffiliate.mjs +3 -3
  266. package/dist/unwraps/redditOut.mjs +1 -1
  267. package/dist/unwraps/redditSubmit.d.mts +2 -0
  268. package/dist/unwraps/redditSubmit.mjs +19 -0
  269. package/dist/unwraps/researchgate.mjs +1 -1
  270. package/dist/unwraps/reviveAdserver.mjs +2 -2
  271. package/dist/unwraps/rssBoardValidator.d.mts +2 -0
  272. package/dist/unwraps/rssBoardValidator.mjs +8 -0
  273. package/dist/unwraps/salesdoubler.mjs +1 -1
  274. package/dist/unwraps/saleshandy.mjs +1 -1
  275. package/dist/unwraps/segmentfault.mjs +2 -2
  276. package/dist/unwraps/serendipity.mjs +3 -3
  277. package/dist/unwraps/shareaholic.d.mts +2 -0
  278. package/dist/unwraps/shareaholic.mjs +12 -0
  279. package/dist/unwraps/slashdotBookmark.d.mts +2 -0
  280. package/dist/unwraps/slashdotBookmark.mjs +11 -0
  281. package/dist/unwraps/smartredirect.mjs +1 -1
  282. package/dist/unwraps/sophos.mjs +2 -2
  283. package/dist/unwraps/soundOn.mjs +1 -1
  284. package/dist/unwraps/stay22.mjs +1 -1
  285. package/dist/unwraps/streamsend.mjs +1 -1
  286. package/dist/unwraps/stumbleuponSubmit.d.mts +2 -0
  287. package/dist/unwraps/stumbleuponSubmit.mjs +14 -0
  288. package/dist/unwraps/subscribeByEmail.d.mts +2 -0
  289. package/dist/unwraps/subscribeByEmail.mjs +10 -0
  290. package/dist/unwraps/subscribeOnAndroid.d.mts +2 -0
  291. package/dist/unwraps/subscribeOnAndroid.mjs +10 -0
  292. package/dist/unwraps/subscribeRu.mjs +1 -1
  293. package/dist/unwraps/substack.mjs +2 -3
  294. package/dist/unwraps/surly.mjs +1 -1
  295. package/dist/unwraps/swap.mjs +1 -1
  296. package/dist/unwraps/symantecClicktime.mjs +1 -1
  297. package/dist/unwraps/symplicity.mjs +1 -1
  298. package/dist/unwraps/teacup.mjs +1 -1
  299. package/dist/unwraps/technoratiFaves.d.mts +2 -0
  300. package/dist/unwraps/technoratiFaves.mjs +10 -0
  301. package/dist/unwraps/telegramShare.d.mts +2 -0
  302. package/dist/unwraps/telegramShare.mjs +18 -0
  303. package/dist/unwraps/theRegister.mjs +1 -1
  304. package/dist/unwraps/threadsIntent.d.mts +2 -0
  305. package/dist/unwraps/threadsIntent.mjs +16 -0
  306. package/dist/unwraps/toucharcade.mjs +1 -1
  307. package/dist/unwraps/tracdelight.mjs +1 -1
  308. package/dist/unwraps/trxHub.mjs +1 -1
  309. package/dist/unwraps/tumblrShare.d.mts +2 -0
  310. package/dist/unwraps/tumblrShare.mjs +13 -0
  311. package/dist/unwraps/twitterIntent.d.mts +2 -0
  312. package/dist/unwraps/twitterIntent.mjs +17 -0
  313. package/dist/unwraps/twoCheckout.mjs +2 -1
  314. package/dist/unwraps/ukWebArchive.mjs +1 -1
  315. package/dist/unwraps/ukgwa.mjs +1 -1
  316. package/dist/unwraps/unescoWebArchive.mjs +1 -1
  317. package/dist/unwraps/unisender.mjs +3 -3
  318. package/dist/unwraps/upAudio.mjs +1 -1
  319. package/dist/unwraps/vadeSecure.mjs +1 -1
  320. package/dist/unwraps/valuePress.mjs +2 -2
  321. package/dist/unwraps/vanilla.mjs +1 -1
  322. package/dist/unwraps/vbulletin.mjs +1 -1
  323. package/dist/unwraps/vefsafn.mjs +2 -2
  324. package/dist/unwraps/vgWort.mjs +1 -1
  325. package/dist/unwraps/vkShare.d.mts +2 -0
  326. package/dist/unwraps/vkShare.mjs +16 -0
  327. package/dist/unwraps/vocus.mjs +1 -1
  328. package/dist/unwraps/voxnest.mjs +1 -1
  329. package/dist/unwraps/w3cFeedValidator.d.mts +2 -0
  330. package/dist/unwraps/w3cFeedValidator.mjs +8 -0
  331. package/dist/unwraps/webArchive.mjs +5 -5
  332. package/dist/unwraps/webcitation.mjs +1 -1
  333. package/dist/unwraps/webharvest.mjs +1 -1
  334. package/dist/unwraps/weiboShare.d.mts +2 -0
  335. package/dist/unwraps/weiboShare.mjs +8 -0
  336. package/dist/unwraps/weserv.mjs +2 -2
  337. package/dist/unwraps/wikizero.mjs +2 -2
  338. package/dist/unwraps/windowsLive.d.mts +2 -0
  339. package/dist/unwraps/windowsLive.mjs +13 -0
  340. package/dist/unwraps/windowsLiveFavorites.d.mts +2 -0
  341. package/dist/unwraps/windowsLiveFavorites.mjs +8 -0
  342. package/dist/unwraps/wpPoczta.mjs +2 -2
  343. package/dist/unwraps/wykop.d.mts +2 -0
  344. package/dist/unwraps/wykop.mjs +11 -0
  345. package/dist/unwraps/xengentr.mjs +4 -3
  346. package/dist/unwraps/xianguo.d.mts +2 -0
  347. package/dist/unwraps/xianguo.mjs +8 -0
  348. package/dist/unwraps/xiaoyuzhou.mjs +1 -1
  349. package/dist/unwraps/ximalaya.mjs +3 -3
  350. package/dist/unwraps/xingShare.d.mts +2 -0
  351. package/dist/unwraps/xingShare.mjs +16 -0
  352. package/dist/unwraps/yahooBookmarks.d.mts +2 -0
  353. package/dist/unwraps/yahooBookmarks.mjs +38 -0
  354. package/dist/unwraps/yahooJapan.mjs +2 -3
  355. package/dist/unwraps/yahooJapanAmpViewer.mjs +2 -2
  356. package/dist/unwraps/yahooMailImage.mjs +2 -1
  357. package/dist/unwraps/yahooSearch.mjs +2 -2
  358. package/dist/unwraps/yamm.mjs +2 -1
  359. package/dist/unwraps/yandexMail.mjs +4 -3
  360. package/dist/unwraps/yandexTranslate.mjs +1 -1
  361. package/dist/unwraps/yandexTurbo.mjs +4 -4
  362. package/dist/unwraps/yesware.mjs +2 -2
  363. package/dist/unwraps/yourMembership.mjs +2 -1
  364. package/dist/unwraps/zencastr.mjs +1 -1
  365. package/dist/unwraps/zix.mjs +1 -1
  366. package/dist/unwraps/zscalerIsolation.mjs +1 -1
  367. package/dist/utils.mjs +9 -42
  368. package/package.json +4 -4
  369. package/dist/node_modules/entities/dist/internal/bin-trie-flags.mjs +0 -50
  370. package/dist/node_modules/entities/dist/internal/decode-shared.mjs +0 -143
@@ -0,0 +1,13 @@
1
+ import { isAnyOf } from "../node_modules/trousse/dist/matching.mjs";
2
+ import { isHostOf } from "../node_modules/trousse/dist/urls.mjs";
3
+ import { getParamTarget } from "../utils.mjs";
4
+ // src/unwraps/tumblrShare.ts
5
+ const hosts = ["www.tumblr.com", "tumblr.com"];
6
+ const linkPathRegex = /^\/share\/link\/?$/i;
7
+ const unwrapTumblrShare = (url) => {
8
+ if (!isHostOf(url, hosts)) return;
9
+ if (isAnyOf(url.pathname, "/share")) return getParamTarget(url, "u") ?? getParamTarget(url, "canonicalUrl");
10
+ if (linkPathRegex.test(url.pathname)) return getParamTarget(url, "url");
11
+ if (isAnyOf(url.pathname, "/widgets/share/tool")) return getParamTarget(url, "canonicalUrl") ?? getParamTarget(url, "url");
12
+ };
13
+ export { unwrapTumblrShare };
@@ -0,0 +1,2 @@
1
+ import { UrlUnwrapper } from "../types.mjs";
2
+ export declare const unwrapTwitterIntent: UrlUnwrapper;
@@ -0,0 +1,17 @@
1
+ import { isAnyOf } from "../node_modules/trousse/dist/matching.mjs";
2
+ import { isHostOf } from "../node_modules/trousse/dist/urls.mjs";
3
+ import { getParamTarget } from "../utils.mjs";
4
+ // src/unwraps/twitterIntent.ts
5
+ const pathRegex = /^\/(?:intent\/(?:tweet|post)|share)\/?$/i;
6
+ const hosts = [
7
+ "twitter.com",
8
+ "www.twitter.com",
9
+ "mobile.twitter.com",
10
+ "x.com",
11
+ "www.x.com"
12
+ ];
13
+ const unwrapTwitterIntent = (url) => {
14
+ if (!isHostOf(url, hosts) || !isAnyOf(url.pathname, pathRegex)) return;
15
+ return getParamTarget(url, "url");
16
+ };
17
+ export { unwrapTwitterIntent };
@@ -1,8 +1,9 @@
1
1
  import { getQueryParam, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
+ import { isAnyOf } from "../node_modules/trousse/dist/matching.mjs";
2
3
  import { getParamTarget } from "../utils.mjs";
3
4
  // src/unwraps/twoCheckout.ts
4
5
  const unwrapTwoCheckout = (url) => {
5
- if (url.pathname !== "/affiliate.php") return;
6
+ if (!isAnyOf(url.pathname, "/affiliate.php")) return;
6
7
  if (!getQueryParam(url, "ACCOUNT") || !getQueryParam(url, "AFFILIATE")) return;
7
8
  const target = getParamTarget(url, "PATH");
8
9
  if (!target || !isHttpUrl(target)) return;
@@ -1,6 +1,6 @@
1
1
  import { isHostOf, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
2
  // src/unwraps/ukWebArchive.ts
3
- const pathRegex = /^\/wayback\/(?:en\/)?archive\/\d{14}(?:mp_)?\/(.+)$/;
3
+ const pathRegex = /^\/wayback\/(?:en\/)?archive\/\d{14}(?:mp_)?\/(.+)$/i;
4
4
  const unwrapUkWebArchive = (url) => {
5
5
  if (!isHostOf(url, "www.webarchive.org.uk")) return;
6
6
  const match = pathRegex.exec(url.pathname);
@@ -1,6 +1,6 @@
1
1
  import { isHostOf, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
2
  // src/unwraps/ukgwa.ts
3
- const pathRegex = /^(?:\/ukgwa)?\/(?:\d{14}(?:mp_)?|\+)\/(.+)$/;
3
+ const pathRegex = /^(?:\/ukgwa)?\/(?:\d{14}(?:mp_)?|\+)\/(.+)$/i;
4
4
  const schemeRegex = /^[a-z][a-z\d+-]*:/i;
5
5
  const unwrapUkgwa = (url) => {
6
6
  if (!isHostOf(url, "webarchive.nationalarchives.gov.uk")) return;
@@ -1,6 +1,6 @@
1
1
  import { isHostOf, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
2
  // src/unwraps/unescoWebArchive.ts
3
- const pathRegex = /^\/web\/\d{14}\/(.+)$/;
3
+ const pathRegex = /^\/web\/\d{14}\/(.+)$/i;
4
4
  const unwrapUnescoWebArchive = (url) => {
5
5
  if (!isHostOf(url, "webarchive.unesco.org")) return;
6
6
  const match = pathRegex.exec(url.pathname);
@@ -1,6 +1,6 @@
1
+ import { decodeBase64Url, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
1
2
  import { isAnyOf } from "../node_modules/trousse/dist/matching.mjs";
2
- import { isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
3
- import { decodeBase64Url, getParamTarget } from "../utils.mjs";
3
+ import { getParamTarget } from "../utils.mjs";
4
4
  // src/unwraps/unisender.ts
5
5
  const hosts = [
6
6
  "emlblog.com",
@@ -20,7 +20,7 @@ const hosts = [
20
20
  "usndr.com",
21
21
  /^us\d+-usndr\.com$/
22
22
  ];
23
- const pathRegex = /^\/(?:ru|ua)\/(?:mail|go2|eu1)_link_tracker$/;
23
+ const pathRegex = /^\/(?:ru|ua)\/(?:mail|go2|eu1)_link_tracker$/i;
24
24
  const unwrapUnisender = (url) => {
25
25
  if (!isAnyOf(url.hostname, hosts) || !pathRegex.test(url.pathname)) return;
26
26
  const value = getParamTarget(url, "url", -1);
@@ -1,7 +1,7 @@
1
1
  import { isHostOf } from "../node_modules/trousse/dist/urls.mjs";
2
2
  import { getPathTarget } from "../pathTarget.mjs";
3
3
  // src/unwraps/upAudio.ts
4
- const prefixRegex = /^\/s\//;
4
+ const prefixRegex = /^\/s\//i;
5
5
  const unwrapUpAudio = (url) => {
6
6
  if (!isHostOf(url, "prefix.up.audio")) return;
7
7
  return getPathTarget(url, prefixRegex);
@@ -1,6 +1,6 @@
1
1
  import { createParamExtractor } from "../utils.mjs";
2
2
  // src/unwraps/vadeSecure.ts
3
- const safeproxyPathRegex = /^\/safeproxy\/v[34]$/;
3
+ const safeproxyPathRegex = /^\/safeproxy\/v[34]$/i;
4
4
  const extractAntiphishing = createParamExtractor({
5
5
  hosts: "antiphishing.vadesecure.com",
6
6
  path: "/v4",
@@ -1,5 +1,5 @@
1
- import { isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
- import { createParamExtractor, decodeBase64 } from "../utils.mjs";
1
+ import { decodeBase64, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
+ import { createParamExtractor } from "../utils.mjs";
3
3
  // src/unwraps/valuePress.ts
4
4
  const baseExtractor = createParamExtractor({
5
5
  hosts: "www.value-press.com",
@@ -1,7 +1,7 @@
1
1
  import { isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
2
  import { getParamTarget } from "../utils.mjs";
3
3
  // src/unwraps/vanilla.ts
4
- const pathRegex = /^(?:\/[^/]+){0,2}\/home\/leaving$/;
4
+ const pathRegex = /^(?:\/[^/]+){0,2}\/home\/leaving$/i;
5
5
  const unwrapVanilla = (url) => {
6
6
  if (!pathRegex.test(url.pathname)) return;
7
7
  const target = getParamTarget(url, "target") ?? getParamTarget(url, "Target");
@@ -1,7 +1,7 @@
1
1
  import { isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
2
  import { getParamTarget } from "../utils.mjs";
3
3
  // src/unwraps/vbulletin.ts
4
- const pathRegex = /^(?:\/[^/]+)?\/redirect-to\/$/;
4
+ const pathRegex = /^(?:\/[^/]+)?\/redirect-to\/$/i;
5
5
  const unwrapVbulletin = (url) => {
6
6
  if (!pathRegex.test(url.pathname)) return;
7
7
  const target = getParamTarget(url, "redirect");
@@ -1,7 +1,7 @@
1
1
  import { isHostOf, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
2
  // src/unwraps/vefsafn.ts
3
- const waybackPathRegex = /^\/wayback\/\d{14}\/(.+)$/;
4
- const currentPathRegex = /^\/is\/\d{14}(?:mp_)?\/(.+)$/;
3
+ const waybackPathRegex = /^\/wayback\/\d{14}\/(.+)$/i;
4
+ const currentPathRegex = /^\/is\/\d{14}(?:mp_)?\/(.+)$/i;
5
5
  const unwrapVefsafn = (url) => {
6
6
  let match = null;
7
7
  if (isHostOf(url, "wayback.vefsafn.is")) match = waybackPathRegex.exec(url.pathname);
@@ -1,7 +1,7 @@
1
1
  import { createParamExtractor } from "../utils.mjs";
2
2
  // src/unwraps/vgWort.ts
3
3
  const hostRegex = /^(?:ssl-)?vg\d+\.met\.vgwort\.de$/;
4
- const pathRegex = /^\/na\/[0-9a-f]+$/;
4
+ const pathRegex = /^\/na\/[0-9a-f]+$/i;
5
5
  const extractTarget = createParamExtractor({
6
6
  hosts: hostRegex,
7
7
  params: ["l"]
@@ -0,0 +1,2 @@
1
+ import { UrlUnwrapper } from "../types.mjs";
2
+ export declare const unwrapVkShare: UrlUnwrapper;
@@ -0,0 +1,16 @@
1
+ import { createParamExtractor } from "../utils.mjs";
2
+ // src/unwraps/vkShare.ts
3
+ const unwrapVkShare = createParamExtractor({
4
+ hosts: [
5
+ "vk.com",
6
+ "www.vk.com",
7
+ "new.vk.com",
8
+ "vk.ru",
9
+ "www.vk.ru",
10
+ "vkontakte.ru",
11
+ "www.vkontakte.ru"
12
+ ],
13
+ path: "/share.php",
14
+ params: ["url"]
15
+ });
16
+ export { unwrapVkShare };
@@ -1,6 +1,6 @@
1
1
  import { createParamExtractor } from "../utils.mjs";
2
2
  // src/unwraps/vocus.ts
3
- const linkPathRegex = /^\/m?link$/;
3
+ const linkPathRegex = /^\/m?link$/i;
4
4
  const extractTarget = createParamExtractor({
5
5
  hosts: "tracking.vocus.io",
6
6
  params: ["url"]
@@ -1,7 +1,7 @@
1
1
  import { isHostOf } from "../node_modules/trousse/dist/urls.mjs";
2
2
  import { getPathTarget } from "../pathTarget.mjs";
3
3
  // src/unwraps/voxnest.ts
4
- const streamPrefixRegex = /^\/stream\/[^/]+\//;
4
+ const streamPrefixRegex = /^\/stream\/[^/]+\//i;
5
5
  const unwrapVoxnest = (url) => {
6
6
  if (!isHostOf(url, "audio.voxnest.com")) return;
7
7
  return getPathTarget(url, streamPrefixRegex, "http:");
@@ -0,0 +1,2 @@
1
+ import { UrlUnwrapper } from "../types.mjs";
2
+ export declare const unwrapW3cFeedValidator: UrlUnwrapper;
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.mjs";
2
+ // src/unwraps/w3cFeedValidator.ts
3
+ const unwrapW3cFeedValidator = createParamExtractor({
4
+ hosts: "validator.w3.org",
5
+ path: "/feed/check.cgi",
6
+ params: ["url"]
7
+ });
8
+ export { unwrapW3cFeedValidator };
@@ -17,12 +17,12 @@ const replayHosts = [
17
17
  "replay.waybackmachine.org"
18
18
  ];
19
19
  const snapshot = String.raw`\d{14}(?:\*|(?:id|if|mp|fw|oe|im|js|cs)_)?`;
20
- const pathRegex = new RegExp(`^/web/(?:${snapshot}/)?(.+)$`);
21
- const replayPathRegex = new RegExp(`^/${snapshot}/(.+)$`);
22
- const archiveItPathRegex = new RegExp(String.raw`^/(?:\d+|org-\d+|all)/${snapshot}/(.+)$`);
23
- const scholarPathRegex = /^\/work\/[a-z0-9]+\/access\/wayback\/(.+)$/;
20
+ const pathRegex = new RegExp(`^/web/(?:${snapshot}/)?(.+)$`, "i");
21
+ const replayPathRegex = new RegExp(`^/${snapshot}/(.+)$`, "i");
22
+ const archiveItPathRegex = new RegExp(String.raw`^/(?:\d+|org-\d+|all)/${snapshot}/(.+)$`, "i");
23
+ const scholarPathRegex = /^\/work\/[a-z0-9]+\/access\/wayback\/(.+)$/i;
24
24
  const schemeRegex = /^[a-z][a-z\d+-]*:/i;
25
- const schemelessRegex = /^(?![^/]*\.(?:jsp|php|jpg)(?:\/|$))[^/]*\./;
25
+ const schemelessRegex = /^(?![^/]*\.(?:jsp|php|jpg)(?:\/|$))[^/]*\./i;
26
26
  const unwrapWebArchive = (url) => {
27
27
  let match = null;
28
28
  if (isHostOf(url, hosts)) match = url.pathname.match(pathRegex);
@@ -1,6 +1,6 @@
1
1
  import { createParamExtractor } from "../utils.mjs";
2
2
  // src/unwraps/webcitation.ts
3
- const pathRegex = /^\/(?:query|[0-9A-Za-z]{9})$/;
3
+ const pathRegex = /^\/(?:query|[0-9A-Za-z]{9})$/i;
4
4
  const extractTarget = createParamExtractor({
5
5
  hosts: "www.webcitation.org",
6
6
  params: ["url"]
@@ -1,6 +1,6 @@
1
1
  import { isHostOf, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
2
  // src/unwraps/webharvest.ts
3
- const pathRegex = /^\/(?:peth\d{2}|congress\d+th)\/\d{14}\/(.+)$/;
3
+ const pathRegex = /^\/(?:peth\d{2}|congress\d+th)\/\d{14}\/(.+)$/i;
4
4
  const unwrapWebharvest = (url) => {
5
5
  if (!isHostOf(url, "webharvest.gov")) return;
6
6
  const match = pathRegex.exec(url.pathname);
@@ -0,0 +1,2 @@
1
+ import { UrlUnwrapper } from "../types.mjs";
2
+ export declare const unwrapWeiboShare: UrlUnwrapper;
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.mjs";
2
+ // src/unwraps/weiboShare.ts
3
+ const unwrapWeiboShare = createParamExtractor({
4
+ hosts: ["service.weibo.com", "v.t.sina.com.cn"],
5
+ path: "/share/share.php",
6
+ params: ["url"]
7
+ });
8
+ export { unwrapWeiboShare };
@@ -1,8 +1,8 @@
1
1
  import { decodePercent, getQueryParamValues, isHostOf } from "../node_modules/trousse/dist/urls.mjs";
2
2
  // src/unwraps/weserv.ts
3
- const weservHosts = ["images.weserv.nl", "wsrv.nl"];
3
+ const hosts = ["images.weserv.nl", "wsrv.nl"];
4
4
  const unwrapWeserv = (url) => {
5
- if (!isHostOf(url, weservHosts) || url.pathname !== "/") return;
5
+ if (!isHostOf(url, hosts) || url.pathname !== "/") return;
6
6
  const value = getQueryParamValues(url, "url", { decodeValues: false }).at(-1);
7
7
  if (!value) return;
8
8
  return decodePercent(value);
@@ -1,5 +1,5 @@
1
- import { isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
- import { createParamExtractor, decodeBase64Url } from "../utils.mjs";
1
+ import { decodeBase64Url, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
+ import { createParamExtractor } from "../utils.mjs";
3
3
  // src/unwraps/wikizero.ts
4
4
  const baseExtractor = createParamExtractor({
5
5
  hosts: [
@@ -0,0 +1,2 @@
1
+ import { UrlUnwrapper } from "../types.mjs";
2
+ export declare const unwrapWindowsLive: UrlUnwrapper;
@@ -0,0 +1,13 @@
1
+ import { isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
+ import { createParamExtractor } from "../utils.mjs";
3
+ // src/unwraps/windowsLive.ts
4
+ const extractAdd = createParamExtractor({
5
+ hosts: ["live.com", "www.live.com"],
6
+ path: "/",
7
+ params: ["add"]
8
+ });
9
+ const unwrapWindowsLive = (url) => {
10
+ const target = extractAdd(url);
11
+ if (target && isHttpUrl(target)) return target;
12
+ };
13
+ export { unwrapWindowsLive };
@@ -0,0 +1,2 @@
1
+ import { UrlUnwrapper } from "../types.mjs";
2
+ export declare const unwrapWindowsLiveFavorites: UrlUnwrapper;
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.mjs";
2
+ // src/unwraps/windowsLiveFavorites.ts
3
+ const unwrapWindowsLiveFavorites = createParamExtractor({
4
+ hosts: "favorites.live.com",
5
+ path: "/quickadd.aspx",
6
+ params: ["url"]
7
+ });
8
+ export { unwrapWindowsLiveFavorites };
@@ -1,5 +1,5 @@
1
- import { isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
- import { createParamExtractor, decodeBase64Url } from "../utils.mjs";
1
+ import { decodeBase64Url, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
+ import { createParamExtractor } from "../utils.mjs";
3
3
  // src/unwraps/wpPoczta.ts
4
4
  const baseExtractor = createParamExtractor({
5
5
  hosts: "zasobygwp.pl",
@@ -0,0 +1,2 @@
1
+ import { UrlUnwrapper } from "../types.mjs";
2
+ export declare const unwrapWykop: UrlUnwrapper;
@@ -0,0 +1,11 @@
1
+ import { isAnyOf } from "../node_modules/trousse/dist/matching.mjs";
2
+ import { isHostOf } from "../node_modules/trousse/dist/urls.mjs";
3
+ import { getParamTarget } from "../utils.mjs";
4
+ // src/unwraps/wykop.ts
5
+ const hosts = ["www.wykop.pl", "wykop.pl"];
6
+ const pathRegex = /^\/(?:remotelink|dodaj(?:\/link|-link)?)\/?$/i;
7
+ const unwrapWykop = (url) => {
8
+ if (!isHostOf(url, hosts) || !isAnyOf(url.pathname, pathRegex)) return;
9
+ return getParamTarget(url, "url");
10
+ };
11
+ export { unwrapWykop };
@@ -1,8 +1,9 @@
1
- import { isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
- import { decodeBase64, getParamValues } from "../utils.mjs";
1
+ import { decodeBase64, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
+ import { isAnyOf } from "../node_modules/trousse/dist/matching.mjs";
3
+ import { getParamValues } from "../utils.mjs";
3
4
  // src/unwraps/xengentr.ts
4
5
  const unwrapXengentr = (url) => {
5
- if (url.pathname !== "/yonlendirme") return;
6
+ if (!isAnyOf(url.pathname, "/yonlendirme")) return;
6
7
  const raw = getParamValues(url, "to").at(0);
7
8
  if (!raw) return;
8
9
  const decoded = decodeBase64(raw);
@@ -0,0 +1,2 @@
1
+ import { UrlUnwrapper } from "../types.mjs";
2
+ export declare const unwrapXianguo: UrlUnwrapper;
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.mjs";
2
+ // src/unwraps/xianguo.ts
3
+ const unwrapXianguo = createParamExtractor({
4
+ hosts: ["xianguo.com", "www.xianguo.com"],
5
+ path: "/subscribe.php",
6
+ params: ["url"]
7
+ });
8
+ export { unwrapXianguo };
@@ -1,7 +1,7 @@
1
1
  import { isHostOf } from "../node_modules/trousse/dist/urls.mjs";
2
2
  import { getPathTarget } from "../pathTarget.mjs";
3
3
  // src/unwraps/xiaoyuzhou.ts
4
- const prefixRegex = /^\/track\/[0-9a-f]{24}\/[0-9a-f]{24}\/(?=media\.xyzcdn\.net\/)/;
4
+ const prefixRegex = /^\/track\/[0-9a-f]{24}\/[0-9a-f]{24}\/(?=media\.xyzcdn\.net\/)/i;
5
5
  const unwrapXiaoyuzhou = (url) => {
6
6
  if (!isHostOf(url, "dts-api.xiaoyuzhoufm.com")) return;
7
7
  return getPathTarget(url, prefixRegex);
@@ -1,3 +1,4 @@
1
+ import { parseUrl } from "../node_modules/trousse/dist/urls.mjs";
1
2
  import { createParamExtractor } from "../utils.mjs";
2
3
  // src/unwraps/ximalaya.ts
3
4
  const filePathRegex = /^\/\/[^/]+$/;
@@ -10,8 +11,7 @@ const unwrapXimalaya = (url) => {
10
11
  if (!filePathRegex.test(url.pathname)) return;
11
12
  const target = extractTarget(url);
12
13
  if (!target) return;
13
- try {
14
- if (targetHostRegex.test(new URL(target).hostname)) return target;
15
- } catch {}
14
+ const targetHost = parseUrl(target)?.hostname;
15
+ if (targetHost && targetHostRegex.test(targetHost)) return target;
16
16
  };
17
17
  export { unwrapXimalaya };
@@ -0,0 +1,2 @@
1
+ import { UrlUnwrapper } from "../types.mjs";
2
+ export declare const unwrapXingShare: UrlUnwrapper;
@@ -0,0 +1,16 @@
1
+ import { isAnyOf } from "../node_modules/trousse/dist/matching.mjs";
2
+ import { isHostOf, parseUrl } from "../node_modules/trousse/dist/urls.mjs";
3
+ import { getParamTarget, getParamValues } from "../utils.mjs";
4
+ // src/unwraps/xingShare.ts
5
+ const hosts = ["www.xing.com", "xing.com"];
6
+ const sharePathRegex = /^\/(?:spi\/shares\/new|social_plugins\/share(?:\/new)?|social\/share\/spi)\/?$/i;
7
+ const appPathRegex = /^\/app\/user\/?$/i;
8
+ const unwrapXingShare = (url) => {
9
+ if (!isHostOf(url, hosts)) return;
10
+ if (isAnyOf(url.pathname, sharePathRegex)) return getParamTarget(url, "url");
11
+ if (!isAnyOf(url.pathname, appPathRegex)) return;
12
+ const query = parseUrl(url.href.replace(url.search, () => url.search.replaceAll(";", "&")));
13
+ if (!query || getParamValues(query, "op").at(0) !== "share") return;
14
+ return getParamTarget(query, "url");
15
+ };
16
+ export { unwrapXingShare };
@@ -0,0 +1,2 @@
1
+ import { UrlUnwrapper } from "../types.mjs";
2
+ export declare const unwrapYahooBookmarks: UrlUnwrapper;
@@ -0,0 +1,38 @@
1
+ import { isAnyOf } from "../node_modules/trousse/dist/matching.mjs";
2
+ import { isHostOf, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
3
+ import { createParamExtractor, getParamTarget } from "../utils.mjs";
4
+ // src/unwraps/yahooBookmarks.ts
5
+ const submitPathRegex = /^\/submit\/?$/i;
6
+ const unwrapBookmarklet = createParamExtractor({
7
+ hosts: [
8
+ "bookmarks.yahoo.com",
9
+ "myweb2.search.yahoo.com",
10
+ "myweb.yahoo.com"
11
+ ],
12
+ path: "/myresults/bookmarklet",
13
+ params: ["u"]
14
+ });
15
+ const unwrapToolbar = createParamExtractor({
16
+ hosts: "bookmarks.yahoo.com",
17
+ path: "/toolbar/savebm",
18
+ params: ["u"]
19
+ });
20
+ const unwrapBuzz = createParamExtractor({
21
+ hosts: [
22
+ "buzz.yahoo.com",
23
+ "fr.buzz.yahoo.com",
24
+ "uk.buzz.yahoo.com"
25
+ ],
26
+ path: "/buzz",
27
+ params: ["targetUrl", "guid"]
28
+ });
29
+ const unwrapBuzzSubmit = (url) => {
30
+ if (!isHostOf(url, "buzz.yahoo.com") || !isAnyOf(url.pathname, submitPathRegex)) return;
31
+ const submitUrl = getParamTarget(url, "submitUrl");
32
+ if (submitUrl && isHttpUrl(submitUrl)) return submitUrl;
33
+ return getParamTarget(url, "u");
34
+ };
35
+ const unwrapYahooBookmarks = (url) => {
36
+ return unwrapBookmarklet(url) ?? unwrapToolbar(url) ?? unwrapBuzz(url) ?? unwrapBuzzSubmit(url);
37
+ };
38
+ export { unwrapYahooBookmarks };
@@ -1,7 +1,6 @@
1
- import { isHostOf, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
- import { decodeBase64Url } from "../utils.mjs";
1
+ import { decodeBase64Url, isHostOf, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
3
2
  // src/unwraps/yahooJapan.ts
4
- const pathRegex = /^(?:\/[^/]+)*\/RU=([\w-]+)(?:\/R[A-Z]=[^/]*)*(?:;.*)?$/;
3
+ const pathRegex = /^(?:\/[^/]+)*\/RU=([\w-]+)(?:\/R[A-Z]=[^/]*)*(?:;.*)?$/i;
5
4
  const paddingRegex = /-+$/;
6
5
  const unwrapYahooJapan = (url) => {
7
6
  if (!isHostOf(url, "rdsig.yahoo.co.jp")) return;
@@ -1,7 +1,7 @@
1
1
  import { decodePercent, isHostOf, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
2
  // src/unwraps/yahooJapanAmpViewer.ts
3
- const httpsPathRegex = /^\/amp\/s\/(.+)$/;
4
- const httpPathRegex = /^\/amp\/(?!s\/)(.+)$/;
3
+ const httpsPathRegex = /^\/amp\/s\/(.+)$/i;
4
+ const httpPathRegex = /^\/amp\/(?!s\/)(.+)$/i;
5
5
  const unwrapYahooJapanAmpViewer = (url) => {
6
6
  if (!isHostOf(url, "search.yahoo.co.jp")) return;
7
7
  const httpsMatch = httpsPathRegex.exec(url.pathname);
@@ -1,7 +1,8 @@
1
1
  import { decodePercent, getQueryParamValues, isHostOf } from "../node_modules/trousse/dist/urls.mjs";
2
+ import { isAnyOf } from "../node_modules/trousse/dist/matching.mjs";
2
3
  // src/unwraps/yahooMailImage.ts
3
4
  const unwrapYahooMailImage = (url) => {
4
- if (!isHostOf(url, "ecp.yusercontent.com") || url.pathname !== "/mail") return;
5
+ if (!isHostOf(url, "ecp.yusercontent.com") || !isAnyOf(url.pathname, "/mail")) return;
5
6
  const value = getQueryParamValues(url, "url", { decodeValues: false }).at(-1);
6
7
  if (!value) return;
7
8
  return decodePercent(value);
@@ -6,8 +6,8 @@ const hosts = [
6
6
  "ri.search.yahoo.com",
7
7
  "chicagotribune.search.yahoo.com"
8
8
  ];
9
- const yahooPathRegex = /^(?:\/[^/]+)*\/RU=([^/]+)\/RK=/;
10
- const unencodedTargetRegex = /^(?:\/[^/]+)*\/RU=(https?:\/\/.+?)\/RK=/;
9
+ const yahooPathRegex = /^(?:\/[^/]+)*\/RU=([^/]+)\/RK=/i;
10
+ const unencodedTargetRegex = /^(?:\/[^/]+)*\/RU=(https?:\/\/.+?)\/RK=/i;
11
11
  const unwrapYahooSearch = (url) => {
12
12
  if (!isHostOf(url, hosts)) return;
13
13
  const match = url.pathname.match(yahooPathRegex);
@@ -1,8 +1,9 @@
1
+ import { isAnyOf } from "../node_modules/trousse/dist/matching.mjs";
1
2
  import { getParamTarget } from "../utils.mjs";
2
3
  // src/unwraps/yamm.ts
3
4
  const hostRegex = /^(?:[a-z0-9-]+-dot-)?yamm-track\.appspot\.com$/;
4
5
  const unwrapYamm = (url) => {
5
- if (!hostRegex.test(url.hostname) || url.pathname !== "/Redirect") return;
6
+ if (!hostRegex.test(url.hostname) || !isAnyOf(url.pathname, "/Redirect")) return;
6
7
  return getParamTarget(url, "link", -1);
7
8
  };
8
9
  export { unwrapYamm };
@@ -1,9 +1,10 @@
1
- import { isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
- import { decodeBase64Url, getParamValues } from "../utils.mjs";
1
+ import { decodeBase64Url, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
+ import { isAnyOf } from "../node_modules/trousse/dist/matching.mjs";
3
+ import { getParamValues } from "../utils.mjs";
3
4
  // src/unwraps/yandexMail.ts
4
5
  const hostRegex = /^mail\.yandex\.(?:com\.tr|[a-z]{2,3})$/;
5
6
  const unwrapYandexMail = (url) => {
6
- if (!hostRegex.test(url.hostname) || url.pathname !== "/re.jsx") return;
7
+ if (!hostRegex.test(url.hostname) || !isAnyOf(url.pathname, "/re.jsx")) return;
7
8
  const value = getParamValues(url, "l").at(0);
8
9
  if (!value) return;
9
10
  const decoded = decodeBase64Url(value);
@@ -1,6 +1,6 @@
1
1
  import { isHostOf } from "../node_modules/trousse/dist/urls.mjs";
2
2
  // src/unwraps/yandexTranslate.ts
3
- const proxyPathRegex = /^\/proxy_u\/[^/]+\/(?:(?<scheme>https?)\/)?(?<target>.+)$/;
3
+ const proxyPathRegex = /^\/proxy_u\/[^/]+\/(?:(?<scheme>https?)\/)?(?<target>.+)$/i;
4
4
  const unwrapYandexTranslate = (url) => {
5
5
  if (!isHostOf(url, "translated.turbopages.org")) return;
6
6
  const match = url.pathname.match(proxyPathRegex);
@@ -1,10 +1,10 @@
1
1
  import { createParamExtractor } from "../utils.mjs";
2
2
  // src/unwraps/yandexTurbo.ts
3
3
  const turbopagesHostRegex = /\.turbopages\.org$/;
4
- const turbopagesPathRegex = /^\/[^/]+\/s\/(.+)$/;
5
- const hostInPathRegex = /^\/turbo\/([^/]+)\/s\/(.+)$/;
6
- const yandexSlashSFirstRegex = /^\/turbo\/s\/([^/]+)\/(.*)$/;
7
- const turbopagesSlashSFirstRegex = /^\/s\/([^/]+)\/(.*)$/;
4
+ const turbopagesPathRegex = /^\/[^/]+\/s\/(.+)$/i;
5
+ const hostInPathRegex = /^\/turbo\/([^/]+)\/s\/(.+)$/i;
6
+ const yandexSlashSFirstRegex = /^\/turbo\/s\/([^/]+)\/(.*)$/i;
7
+ const turbopagesSlashSFirstRegex = /^\/s\/([^/]+)\/(.*)$/i;
8
8
  const dashRegex = /-/g;
9
9
  const yandexHostRegex = /^(?:www\.)?yandex\.(?:com\.tr|[a-z]{2,3})$/;
10
10
  const extractTurboTarget = createParamExtractor({
@@ -1,8 +1,8 @@
1
1
  import { isHostOf, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
2
  import { createParamExtractor } from "../utils.mjs";
3
3
  // src/unwraps/yesware.ts
4
- const trackPathRegex = /^\/tt\/[\da-f]{40}\/[\da-f]{32}\/[\da-f]{32}\/(.+)$/;
5
- const linkPathRegex = /^\/tl\/[\da-f]{40}\/[\da-f]{32}\/[\da-f]{32}$/;
4
+ const trackPathRegex = /^\/tt\/[\da-f]{40}\/[\da-f]{32}\/[\da-f]{32}\/(.+)$/i;
5
+ const linkPathRegex = /^\/tl\/[\da-f]{40}\/[\da-f]{32}\/[\da-f]{32}$/i;
6
6
  const extractLinkTarget = createParamExtractor({
7
7
  hosts: "t.yesware.com",
8
8
  params: ["ytl"]
@@ -1,10 +1,11 @@
1
1
  import { decodePercent, getQueryParam, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
2
+ import { isAnyOf } from "../node_modules/trousse/dist/matching.mjs";
2
3
  import { getParamValues } from "../utils.mjs";
3
4
  // src/unwraps/yourMembership.ts
4
5
  const ymlinkRegex = /^\d+$/;
5
6
  const encodedSchemeRegex = /^https?%3A/i;
6
7
  const unwrapYourMembership = (url) => {
7
- if (url.pathname !== "/link.asp" || !ymlinkRegex.test(getQueryParam(url, "ymlink") ?? "")) return;
8
+ if (!isAnyOf(url.pathname, "/link.asp") || !ymlinkRegex.test(getQueryParam(url, "ymlink") ?? "")) return;
8
9
  let target = getParamValues(url, "finalurl").at(0);
9
10
  if (target && encodedSchemeRegex.test(target)) target = decodePercent(target);
10
11
  if (target && isHttpUrl(target)) return target;
@@ -1,7 +1,7 @@
1
1
  import { isHostOf } from "../node_modules/trousse/dist/urls.mjs";
2
2
  import { getPathTarget } from "../pathTarget.mjs";
3
3
  // src/unwraps/zencastr.ts
4
- const redirectPrefixRegex = /^\/r\//;
4
+ const redirectPrefixRegex = /^\/r\//i;
5
5
  const unwrapZencastr = (url) => {
6
6
  if (!isHostOf(url, ["r.zencastr.com", "r.zen.ai"])) return;
7
7
  return getPathTarget(url, redirectPrefixRegex);