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.
- package/README.md +96 -45
- package/dist/clean.d.mts +1 -0
- package/dist/clean.mjs +56 -19
- package/dist/defaults.d.mts +7 -1
- package/dist/defaults.mjs +160 -3
- package/dist/index.d.mts +79 -4
- package/dist/index.mjs +79 -4
- package/dist/node_modules/entities/dist/decode-codepoint.mjs +2 -2
- package/dist/node_modules/entities/dist/decode.mjs +262 -247
- package/dist/node_modules/entities/dist/generated/decode-data-html.mjs +8 -4
- package/dist/node_modules/entities/dist/internal/decode-data-format.mjs +116 -0
- package/dist/node_modules/trousse/dist/is.mjs +7 -1
- package/dist/node_modules/trousse/dist/locales.mjs +21 -0
- package/dist/node_modules/trousse/dist/matching.mjs +22 -20
- package/dist/node_modules/trousse/dist/urls.mjs +186 -53
- package/dist/pathTarget.mjs +2 -2
- package/dist/tracking/clickAttribution.mjs +26 -1
- package/dist/tracking/housekeeping.mjs +13 -1
- package/dist/tracking/session.d.mts +2 -0
- package/dist/tracking/session.mjs +12 -0
- package/dist/types.d.mts +7 -1
- package/dist/unwraps/a8Net.mjs +1 -1
- package/dist/unwraps/acast.mjs +1 -1
- package/dist/unwraps/accesstrade.mjs +1 -1
- package/dist/unwraps/aceml.mjs +2 -2
- package/dist/unwraps/adcell.mjs +1 -1
- package/dist/unwraps/addThis.d.mts +2 -0
- package/dist/unwraps/addThis.mjs +17 -0
- package/dist/unwraps/addToAny.d.mts +2 -0
- package/dist/unwraps/addToAny.mjs +21 -0
- package/dist/unwraps/addToAnySubscribe.d.mts +2 -0
- package/dist/unwraps/addToAnySubscribe.mjs +8 -0
- package/dist/unwraps/addToMyYahoo.d.mts +2 -0
- package/dist/unwraps/addToMyYahoo.mjs +29 -0
- package/dist/unwraps/adfly.mjs +1 -1
- package/dist/unwraps/admitad.mjs +1 -1
- package/dist/unwraps/affilae.mjs +2 -1
- package/dist/unwraps/affiliatesOne.mjs +1 -1
- package/dist/unwraps/allblog.mjs +1 -1
- package/dist/unwraps/amazonAffiliate.mjs +5 -4
- package/dist/unwraps/amazonSes.mjs +2 -2
- package/dist/unwraps/ampCache.mjs +4 -3
- package/dist/unwraps/ampCacheImage.mjs +1 -1
- package/dist/unwraps/anchor.mjs +1 -1
- package/dist/unwraps/anonymouse.mjs +1 -1
- package/dist/unwraps/antennaPod.d.mts +2 -0
- package/dist/unwraps/antennaPod.mjs +15 -0
- package/dist/unwraps/anytimePlayer.d.mts +2 -0
- package/dist/unwraps/anytimePlayer.mjs +17 -0
- package/dist/unwraps/apptrkr.mjs +2 -1
- package/dist/unwraps/archiveToday.mjs +2 -2
- package/dist/unwraps/arquivo.mjs +1 -1
- package/dist/unwraps/arttrack.mjs +1 -1
- package/dist/unwraps/augure.mjs +3 -3
- package/dist/unwraps/awesound.mjs +1 -1
- package/dist/unwraps/axigen.mjs +2 -1
- package/dist/unwraps/bacLacWebArchive.mjs +1 -1
- package/dist/unwraps/bananatag.mjs +1 -1
- package/dist/unwraps/big5Gate.mjs +1 -1
- package/dist/unwraps/bing.mjs +7 -7
- package/dist/unwraps/bingAds.mjs +4 -4
- package/dist/unwraps/bitrix.mjs +2 -1
- package/dist/unwraps/bitrixBanner.mjs +2 -1
- package/dist/unwraps/blinkList.d.mts +2 -0
- package/dist/unwraps/blinkList.mjs +8 -0
- package/dist/unwraps/bloggerBlogThis.d.mts +2 -0
- package/dist/unwraps/bloggerBlogThis.mjs +16 -0
- package/dist/unwraps/bloggerImageProxy.mjs +2 -1
- package/dist/unwraps/bloglines.d.mts +2 -0
- package/dist/unwraps/bloglines.mjs +21 -0
- package/dist/unwraps/bridgyFed.mjs +1 -1
- package/dist/unwraps/buffer.d.mts +2 -0
- package/dist/unwraps/buffer.mjs +23 -0
- package/dist/unwraps/buybox.mjs +1 -1
- package/dist/unwraps/buzzstream.mjs +1 -1
- package/dist/unwraps/checkPointHarmony.mjs +2 -2
- package/dist/unwraps/cjNetwork.mjs +3 -3
- package/dist/unwraps/claritas.mjs +2 -2
- package/dist/unwraps/cleverbridge.mjs +1 -1
- package/dist/unwraps/cloudhq.mjs +1 -1
- package/dist/unwraps/cloze.mjs +1 -1
- package/dist/unwraps/cohst.mjs +1 -1
- package/dist/unwraps/contactMonkey.mjs +3 -2
- package/dist/unwraps/convertiser.mjs +1 -1
- package/dist/unwraps/cse360.mjs +1 -1
- package/dist/unwraps/dasBlog.mjs +1 -1
- package/dist/unwraps/datalifeEngine.mjs +5 -4
- package/dist/unwraps/delicious.d.mts +2 -0
- package/dist/unwraps/delicious.mjs +15 -0
- package/dist/unwraps/deployer.mjs +2 -2
- package/dist/unwraps/derefMail.mjs +4 -3
- package/dist/unwraps/deviantartOutgoing.mjs +1 -1
- package/dist/unwraps/diasporaShare.d.mts +2 -0
- package/dist/unwraps/diasporaShare.mjs +16 -0
- package/dist/unwraps/diggSubmit.d.mts +2 -0
- package/dist/unwraps/diggSubmit.mjs +11 -0
- package/dist/unwraps/digikala.mjs +3 -3
- package/dist/unwraps/diigoPost.d.mts +2 -0
- package/dist/unwraps/diigoPost.mjs +12 -0
- package/dist/unwraps/disqus.mjs +2 -1
- package/dist/unwraps/dstats.mjs +2 -2
- package/dist/unwraps/eClick.mjs +1 -1
- package/dist/unwraps/easyMarketing.mjs +3 -3
- package/dist/unwraps/ebayRover.mjs +1 -1
- package/dist/unwraps/ebuzzing.mjs +1 -1
- package/dist/unwraps/edgepilot.mjs +1 -1
- package/dist/unwraps/effiliation.mjs +1 -1
- package/dist/unwraps/elasticEmail.mjs +2 -1
- package/dist/unwraps/epn.mjs +1 -1
- package/dist/unwraps/eulerian.mjs +1 -1
- package/dist/unwraps/evernoteClip.d.mts +2 -0
- package/dist/unwraps/evernoteClip.mjs +8 -0
- package/dist/unwraps/exciteTranslate.mjs +1 -1
- package/dist/unwraps/facebook.mjs +1 -1
- package/dist/unwraps/facebookShare.d.mts +2 -0
- package/dist/unwraps/facebookShare.mjs +25 -0
- package/dist/unwraps/feed2js.d.mts +2 -0
- package/dist/unwraps/feed2js.mjs +16 -0
- package/dist/unwraps/feedStatistics.mjs +2 -2
- package/dist/unwraps/feedValidator.d.mts +2 -0
- package/dist/unwraps/feedValidator.mjs +12 -0
- package/dist/unwraps/feedblitz.mjs +1 -1
- package/dist/unwraps/feedland.d.mts +2 -0
- package/dist/unwraps/feedland.mjs +12 -0
- package/dist/unwraps/feedly.d.mts +2 -0
- package/dist/unwraps/feedly.mjs +28 -0
- package/dist/unwraps/feedsportal.mjs +1 -1
- package/dist/unwraps/firebaseDynamicLinks.mjs +1 -1
- package/dist/unwraps/firstory.mjs +3 -3
- package/dist/unwraps/fiveByFive.mjs +2 -2
- package/dist/unwraps/flattrSubmit.d.mts +2 -0
- package/dist/unwraps/flattrSubmit.mjs +8 -0
- package/dist/unwraps/flipboardShare.d.mts +2 -0
- package/dist/unwraps/flipboardShare.mjs +15 -0
- package/dist/unwraps/fortimail.mjs +2 -1
- package/dist/unwraps/friendFeed.d.mts +2 -0
- package/dist/unwraps/friendFeed.mjs +18 -0
- package/dist/unwraps/gabCompose.d.mts +2 -0
- package/dist/unwraps/gabCompose.mjs +8 -0
- package/dist/unwraps/genericCarrier.d.mts +2 -0
- package/dist/unwraps/genericCarrier.mjs +31 -0
- package/dist/unwraps/gfnLinkProxy.mjs +3 -3
- package/dist/unwraps/godcaster.mjs +2 -2
- package/dist/unwraps/googleAmpViewer.mjs +2 -2
- package/dist/unwraps/googleBookmarks.d.mts +2 -0
- package/dist/unwraps/googleBookmarks.mjs +8 -0
- package/dist/unwraps/googleBuzz.d.mts +2 -0
- package/dist/unwraps/googleBuzz.mjs +8 -0
- package/dist/unwraps/googleNewsModern.mjs +2 -3
- package/dist/unwraps/googlePlusShare.d.mts +2 -0
- package/dist/unwraps/googlePlusShare.mjs +11 -0
- package/dist/unwraps/googlePodcasts.d.mts +2 -0
- package/dist/unwraps/googlePodcasts.mjs +27 -0
- package/dist/unwraps/googleReader.d.mts +2 -0
- package/dist/unwraps/googleReader.mjs +20 -0
- package/dist/unwraps/googleTranslate.mjs +5 -5
- package/dist/unwraps/govdelivery.mjs +3 -2
- package/dist/unwraps/hackerNewsSubmit.d.mts +2 -0
- package/dist/unwraps/hackerNewsSubmit.mjs +8 -0
- package/dist/unwraps/hasoffers.mjs +2 -1
- package/dist/unwraps/hatenaBookmark.d.mts +2 -0
- package/dist/unwraps/hatenaBookmark.mjs +22 -0
- package/dist/unwraps/hirkereso.mjs +1 -1
- package/dist/unwraps/horde.mjs +1 -1
- package/dist/unwraps/hubspotSidekick.mjs +1 -1
- package/dist/unwraps/impact.mjs +2 -2
- package/dist/unwraps/indexHu.mjs +2 -1
- package/dist/unwraps/inoreader.d.mts +2 -0
- package/dist/unwraps/inoreader.mjs +22 -0
- package/dist/unwraps/instapaperSave.d.mts +2 -0
- package/dist/unwraps/instapaperSave.mjs +11 -0
- package/dist/unwraps/invisionNoExternalLinks.mjs +1 -1
- package/dist/unwraps/involveAsia.mjs +1 -1
- package/dist/unwraps/jive.mjs +2 -1
- package/dist/unwraps/klook.mjs +2 -1
- package/dist/unwraps/lazada.mjs +1 -1
- package/dist/unwraps/letscast.mjs +1 -1
- package/dist/unwraps/lineShare.d.mts +2 -0
- package/dist/unwraps/lineShare.mjs +25 -0
- package/dist/unwraps/linkA.mjs +1 -1
- package/dist/unwraps/linkedin.mjs +1 -1
- package/dist/unwraps/linkedinShare.d.mts +2 -0
- package/dist/unwraps/linkedinShare.mjs +15 -0
- package/dist/unwraps/linksynergy.mjs +2 -2
- package/dist/unwraps/linktrust.mjs +3 -3
- package/dist/unwraps/linkwise.mjs +1 -1
- package/dist/unwraps/livedoorReader.d.mts +2 -0
- package/dist/unwraps/livedoorReader.mjs +12 -0
- package/dist/unwraps/locWebArchive.mjs +1 -1
- package/dist/unwraps/locaweb.mjs +2 -1
- package/dist/unwraps/logicboard.mjs +1 -1
- package/dist/unwraps/magellan.mjs +1 -1
- package/dist/unwraps/mail2easy.mjs +1 -1
- package/dist/unwraps/mailchimp.mjs +1 -1
- package/dist/unwraps/mailinblack.mjs +6 -4
- package/dist/unwraps/mailstat.mjs +1 -1
- package/dist/unwraps/mailtrack.mjs +1 -1
- package/dist/unwraps/mandrill.mjs +3 -3
- package/dist/unwraps/medium.mjs +5 -5
- package/dist/unwraps/meneameSubmit.d.mts +2 -0
- package/dist/unwraps/meneameSubmit.mjs +11 -0
- package/dist/unwraps/meweShare.d.mts +2 -0
- package/dist/unwraps/meweShare.mjs +8 -0
- package/dist/unwraps/mimecast.mjs +1 -1
- package/dist/unwraps/ministryCloud.mjs +1 -1
- package/dist/unwraps/mintDownloads.mjs +1 -1
- package/dist/unwraps/mintFeeder.mjs +2 -1
- package/dist/unwraps/mohtwize.mjs +6 -4
- package/dist/unwraps/morss.d.mts +2 -0
- package/dist/unwraps/morss.mjs +13 -0
- package/dist/unwraps/mozillaOutgoing.mjs +3 -3
- package/dist/unwraps/myAolFeeds.d.mts +2 -0
- package/dist/unwraps/myAolFeeds.mjs +8 -0
- package/dist/unwraps/narrativ.mjs +1 -1
- package/dist/unwraps/natlibNz.mjs +1 -1
- package/dist/unwraps/ncls.mjs +2 -1
- package/dist/unwraps/ndlWarp.mjs +2 -2
- package/dist/unwraps/netaffiliation.mjs +1 -1
- package/dist/unwraps/netvibes.d.mts +2 -0
- package/dist/unwraps/netvibes.mjs +7 -0
- package/dist/unwraps/newsGator.d.mts +2 -0
- package/dist/unwraps/newsGator.mjs +17 -0
- package/dist/unwraps/newswire.mjs +3 -3
- package/dist/unwraps/nicoMs.mjs +1 -1
- package/dist/unwraps/nimble.mjs +1 -1
- package/dist/unwraps/nlaWebarchive.mjs +3 -3
- package/dist/unwraps/okShare.d.mts +2 -0
- package/dist/unwraps/okShare.mjs +23 -0
- package/dist/unwraps/op3.mjs +1 -1
- package/dist/unwraps/outlookSafelinks.mjs +1 -1
- package/dist/unwraps/pageflakes.d.mts +2 -0
- package/dist/unwraps/pageflakes.mjs +8 -0
- package/dist/unwraps/pagefreezer.mjs +2 -2
- package/dist/unwraps/partnerAds.mjs +2 -2
- package/dist/unwraps/pbs.mjs +1 -1
- package/dist/unwraps/pinterestPin.d.mts +2 -0
- package/dist/unwraps/pinterestPin.mjs +85 -0
- package/dist/unwraps/pipedrive.mjs +1 -1
- package/dist/unwraps/playerFm.d.mts +2 -0
- package/dist/unwraps/playerFm.mjs +16 -0
- package/dist/unwraps/pocketSave.d.mts +2 -0
- package/dist/unwraps/pocketSave.mjs +15 -0
- package/dist/unwraps/podcastAddict.d.mts +2 -0
- package/dist/unwraps/podcastAddict.mjs +14 -0
- package/dist/unwraps/podcastReady.d.mts +2 -0
- package/dist/unwraps/podcastReady.mjs +8 -0
- package/dist/unwraps/podcorn.mjs +1 -1
- package/dist/unwraps/podkite.mjs +1 -1
- package/dist/unwraps/podscribe.mjs +1 -1
- package/dist/unwraps/podsights.mjs +1 -1
- package/dist/unwraps/podup.mjs +2 -3
- package/dist/unwraps/postAffiliatePro.mjs +1 -1
- package/dist/unwraps/postmark.mjs +1 -1
- package/dist/unwraps/prNewswire.mjs +2 -2
- package/dist/unwraps/prezly.mjs +1 -1
- package/dist/unwraps/proofpointV3.mjs +3 -3
- package/dist/unwraps/prweb.mjs +2 -2
- package/dist/unwraps/prxPlayer.d.mts +2 -0
- package/dist/unwraps/prxPlayer.mjs +16 -0
- package/dist/unwraps/qqMailReader.d.mts +2 -0
- package/dist/unwraps/qqMailReader.mjs +8 -0
- package/dist/unwraps/qualityClick.mjs +2 -1
- package/dist/unwraps/qzoneShare.d.mts +2 -0
- package/dist/unwraps/qzoneShare.mjs +8 -0
- package/dist/unwraps/rakutenAffiliate.mjs +3 -3
- package/dist/unwraps/redditOut.mjs +1 -1
- package/dist/unwraps/redditSubmit.d.mts +2 -0
- package/dist/unwraps/redditSubmit.mjs +19 -0
- package/dist/unwraps/researchgate.mjs +1 -1
- package/dist/unwraps/reviveAdserver.mjs +2 -2
- package/dist/unwraps/rssBoardValidator.d.mts +2 -0
- package/dist/unwraps/rssBoardValidator.mjs +8 -0
- package/dist/unwraps/salesdoubler.mjs +1 -1
- package/dist/unwraps/saleshandy.mjs +1 -1
- package/dist/unwraps/segmentfault.mjs +2 -2
- package/dist/unwraps/serendipity.mjs +3 -3
- package/dist/unwraps/shareaholic.d.mts +2 -0
- package/dist/unwraps/shareaholic.mjs +12 -0
- package/dist/unwraps/slashdotBookmark.d.mts +2 -0
- package/dist/unwraps/slashdotBookmark.mjs +11 -0
- package/dist/unwraps/smartredirect.mjs +1 -1
- package/dist/unwraps/sophos.mjs +2 -2
- package/dist/unwraps/soundOn.mjs +1 -1
- package/dist/unwraps/stay22.mjs +1 -1
- package/dist/unwraps/streamsend.mjs +1 -1
- package/dist/unwraps/stumbleuponSubmit.d.mts +2 -0
- package/dist/unwraps/stumbleuponSubmit.mjs +14 -0
- package/dist/unwraps/subscribeByEmail.d.mts +2 -0
- package/dist/unwraps/subscribeByEmail.mjs +10 -0
- package/dist/unwraps/subscribeOnAndroid.d.mts +2 -0
- package/dist/unwraps/subscribeOnAndroid.mjs +10 -0
- package/dist/unwraps/subscribeRu.mjs +1 -1
- package/dist/unwraps/substack.mjs +2 -3
- package/dist/unwraps/surly.mjs +1 -1
- package/dist/unwraps/swap.mjs +1 -1
- package/dist/unwraps/symantecClicktime.mjs +1 -1
- package/dist/unwraps/symplicity.mjs +1 -1
- package/dist/unwraps/teacup.mjs +1 -1
- package/dist/unwraps/technoratiFaves.d.mts +2 -0
- package/dist/unwraps/technoratiFaves.mjs +10 -0
- package/dist/unwraps/telegramShare.d.mts +2 -0
- package/dist/unwraps/telegramShare.mjs +18 -0
- package/dist/unwraps/theRegister.mjs +1 -1
- package/dist/unwraps/threadsIntent.d.mts +2 -0
- package/dist/unwraps/threadsIntent.mjs +16 -0
- package/dist/unwraps/toucharcade.mjs +1 -1
- package/dist/unwraps/tracdelight.mjs +1 -1
- package/dist/unwraps/trxHub.mjs +1 -1
- package/dist/unwraps/tumblrShare.d.mts +2 -0
- package/dist/unwraps/tumblrShare.mjs +13 -0
- package/dist/unwraps/twitterIntent.d.mts +2 -0
- package/dist/unwraps/twitterIntent.mjs +17 -0
- package/dist/unwraps/twoCheckout.mjs +2 -1
- package/dist/unwraps/ukWebArchive.mjs +1 -1
- package/dist/unwraps/ukgwa.mjs +1 -1
- package/dist/unwraps/unescoWebArchive.mjs +1 -1
- package/dist/unwraps/unisender.mjs +3 -3
- package/dist/unwraps/upAudio.mjs +1 -1
- package/dist/unwraps/vadeSecure.mjs +1 -1
- package/dist/unwraps/valuePress.mjs +2 -2
- package/dist/unwraps/vanilla.mjs +1 -1
- package/dist/unwraps/vbulletin.mjs +1 -1
- package/dist/unwraps/vefsafn.mjs +2 -2
- package/dist/unwraps/vgWort.mjs +1 -1
- package/dist/unwraps/vkShare.d.mts +2 -0
- package/dist/unwraps/vkShare.mjs +16 -0
- package/dist/unwraps/vocus.mjs +1 -1
- package/dist/unwraps/voxnest.mjs +1 -1
- package/dist/unwraps/w3cFeedValidator.d.mts +2 -0
- package/dist/unwraps/w3cFeedValidator.mjs +8 -0
- package/dist/unwraps/webArchive.mjs +5 -5
- package/dist/unwraps/webcitation.mjs +1 -1
- package/dist/unwraps/webharvest.mjs +1 -1
- package/dist/unwraps/weiboShare.d.mts +2 -0
- package/dist/unwraps/weiboShare.mjs +8 -0
- package/dist/unwraps/weserv.mjs +2 -2
- package/dist/unwraps/wikizero.mjs +2 -2
- package/dist/unwraps/windowsLive.d.mts +2 -0
- package/dist/unwraps/windowsLive.mjs +13 -0
- package/dist/unwraps/windowsLiveFavorites.d.mts +2 -0
- package/dist/unwraps/windowsLiveFavorites.mjs +8 -0
- package/dist/unwraps/wpPoczta.mjs +2 -2
- package/dist/unwraps/wykop.d.mts +2 -0
- package/dist/unwraps/wykop.mjs +11 -0
- package/dist/unwraps/xengentr.mjs +4 -3
- package/dist/unwraps/xianguo.d.mts +2 -0
- package/dist/unwraps/xianguo.mjs +8 -0
- package/dist/unwraps/xiaoyuzhou.mjs +1 -1
- package/dist/unwraps/ximalaya.mjs +3 -3
- package/dist/unwraps/xingShare.d.mts +2 -0
- package/dist/unwraps/xingShare.mjs +16 -0
- package/dist/unwraps/yahooBookmarks.d.mts +2 -0
- package/dist/unwraps/yahooBookmarks.mjs +38 -0
- package/dist/unwraps/yahooJapan.mjs +2 -3
- package/dist/unwraps/yahooJapanAmpViewer.mjs +2 -2
- package/dist/unwraps/yahooMailImage.mjs +2 -1
- package/dist/unwraps/yahooSearch.mjs +2 -2
- package/dist/unwraps/yamm.mjs +2 -1
- package/dist/unwraps/yandexMail.mjs +4 -3
- package/dist/unwraps/yandexTranslate.mjs +1 -1
- package/dist/unwraps/yandexTurbo.mjs +4 -4
- package/dist/unwraps/yesware.mjs +2 -2
- package/dist/unwraps/yourMembership.mjs +2 -1
- package/dist/unwraps/zencastr.mjs +1 -1
- package/dist/unwraps/zix.mjs +1 -1
- package/dist/unwraps/zscalerIsolation.mjs +1 -1
- package/dist/utils.mjs +9 -42
- package/package.json +4 -4
- package/dist/node_modules/entities/dist/internal/bin-trie-flags.mjs +0 -50
- package/dist/node_modules/entities/dist/internal/decode-shared.mjs +0 -143
|
@@ -0,0 +1,15 @@
|
|
|
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/delicious.ts
|
|
5
|
+
const hosts = [
|
|
6
|
+
"del.icio.us",
|
|
7
|
+
"delicious.com",
|
|
8
|
+
"www.delicious.com"
|
|
9
|
+
];
|
|
10
|
+
const paths = ["/post", "/save"];
|
|
11
|
+
const unwrapDelicious = (url) => {
|
|
12
|
+
if (!isHostOf(url, hosts) || !isAnyOf(url.pathname, paths)) return;
|
|
13
|
+
return getParamTarget(url, "url");
|
|
14
|
+
};
|
|
15
|
+
export { unwrapDelicious };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { hasQueryParam, isHostOf, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
|
-
import {
|
|
1
|
+
import { decodeBase64, hasQueryParam, isHostOf, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
|
+
import { getParamValues } from "../utils.mjs";
|
|
3
3
|
// src/unwraps/deployer.ts
|
|
4
4
|
const hosts = [
|
|
5
5
|
"daily.news.humanevents.com",
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isAnyOf } from "../node_modules/trousse/dist/matching.mjs";
|
|
1
2
|
import { isHostOf, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
3
|
import { createParamExtractor, getParamTarget } from "../utils.mjs";
|
|
3
4
|
// src/unwraps/derefMail.ts
|
|
@@ -22,8 +23,8 @@ const clientHosts = [
|
|
|
22
23
|
"3c-lxa.mail.com"
|
|
23
24
|
];
|
|
24
25
|
const lightmailerHosts = ["lightmailer.mail.com", "lightmailer-bs.gmx.net"];
|
|
25
|
-
const pathRegex = /^\/mail\/client\/(?:[\w-]+\/)?dereferrer
|
|
26
|
-
const lightmailerPathRegex = /^\/[\w-]+\/deref
|
|
26
|
+
const pathRegex = /^\/mail\/client\/(?:[\w-]+\/)?dereferrer\/$/i;
|
|
27
|
+
const lightmailerPathRegex = /^\/[\w-]+\/deref\/$/i;
|
|
27
28
|
const extractLegacy = createParamExtractor({
|
|
28
29
|
hosts: "service.gmx.net",
|
|
29
30
|
path: "/de/cgi/derefer",
|
|
@@ -50,7 +51,7 @@ const extractFreemailJump = createParamExtractor({
|
|
|
50
51
|
});
|
|
51
52
|
const unwrapDerefMail = (url) => {
|
|
52
53
|
const isDerefHost = isHostOf(url, hosts) && pathRegex.test(url.pathname);
|
|
53
|
-
const isClientHost = isHostOf(url, clientHosts) && url.pathname
|
|
54
|
+
const isClientHost = isHostOf(url, clientHosts) && isAnyOf(url.pathname, "/mail/client/dereferrer");
|
|
54
55
|
const isLightmailerHost = isHostOf(url, lightmailerHosts) && lightmailerPathRegex.test(url.pathname);
|
|
55
56
|
if (!isDerefHost && !isClientHost && !isLightmailerHost) return extractLegacy(url) ?? extractLeaving(url) ?? extractUiDeref(url) ?? extractFreemailJump(url);
|
|
56
57
|
const target = getParamTarget(url, "redirectUrl");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isHostOf } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
2
|
// src/unwraps/deviantartOutgoing.ts
|
|
3
|
-
const pathRegex = /^\/[^/]+\/outgoing
|
|
3
|
+
const pathRegex = /^\/[^/]+\/outgoing$/i;
|
|
4
4
|
const unwrapDeviantartOutgoing = (url) => {
|
|
5
5
|
if (!isHostOf(url, ["www.deviantart.com", "deviantart.com"]) || !pathRegex.test(url.pathname)) return;
|
|
6
6
|
const target = url.search.slice(1);
|
|
@@ -0,0 +1,16 @@
|
|
|
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/diasporaShare.ts
|
|
5
|
+
const hosts = ["share.diasporafoundation.org"];
|
|
6
|
+
const paths = [
|
|
7
|
+
"/",
|
|
8
|
+
"/index",
|
|
9
|
+
"/index/",
|
|
10
|
+
"/index.html"
|
|
11
|
+
];
|
|
12
|
+
const unwrapDiasporaShare = (url) => {
|
|
13
|
+
if (!isHostOf(url, hosts) || !isAnyOf(url.pathname, paths)) return;
|
|
14
|
+
return getParamTarget(url, "url");
|
|
15
|
+
};
|
|
16
|
+
export { unwrapDiasporaShare };
|
|
@@ -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/diggSubmit.ts
|
|
5
|
+
const hosts = ["digg.com", "www.digg.com"];
|
|
6
|
+
const pathRegex = /^\/(?:submit|share|tools\/diggthis\/login)\/?$/i;
|
|
7
|
+
const unwrapDiggSubmit = (url) => {
|
|
8
|
+
if (!isHostOf(url, hosts) || !isAnyOf(url.pathname, pathRegex)) return;
|
|
9
|
+
return getParamTarget(url, "url");
|
|
10
|
+
};
|
|
11
|
+
export { unwrapDiggSubmit };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { isHostOf, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
|
-
import {
|
|
1
|
+
import { decodeBase64, isHostOf, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
|
+
import { getParamValues } from "../utils.mjs";
|
|
3
3
|
// src/unwraps/digikala.ts
|
|
4
|
-
const pathRegex = /^\/api\/v1\/Click\/b\/[A-Za-z0-9]
|
|
4
|
+
const pathRegex = /^\/api\/v1\/Click\/b\/[A-Za-z0-9]+$/i;
|
|
5
5
|
const unwrapDigikala = (url) => {
|
|
6
6
|
if (!isHostOf(url, "dgkl.io") || !pathRegex.test(url.pathname)) return;
|
|
7
7
|
const encoded = getParamValues(url, "b64").at(0);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createParamExtractor } from "../utils.mjs";
|
|
2
|
+
// src/unwraps/diigoPost.ts
|
|
3
|
+
const unwrapDiigoPost = createParamExtractor({
|
|
4
|
+
hosts: [
|
|
5
|
+
"www.diigo.com",
|
|
6
|
+
"diigo.com",
|
|
7
|
+
"secure.diigo.com"
|
|
8
|
+
],
|
|
9
|
+
path: "/post",
|
|
10
|
+
params: ["url"]
|
|
11
|
+
});
|
|
12
|
+
export { unwrapDiigoPost };
|
package/dist/unwraps/disqus.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isAnyOf } from "../node_modules/trousse/dist/matching.mjs";
|
|
1
2
|
import { createParamExtractor } from "../utils.mjs";
|
|
2
3
|
// src/unwraps/disqus.ts
|
|
3
4
|
const paths = ["/", "/url"];
|
|
@@ -9,7 +10,7 @@ const extractTarget = createParamExtractor({
|
|
|
9
10
|
const unwrapDisqus = (url) => {
|
|
10
11
|
if (!paths.includes(url.pathname)) return;
|
|
11
12
|
const target = extractTarget(url);
|
|
12
|
-
if (url.pathname
|
|
13
|
+
if (!isAnyOf(url.pathname, "/url")) return target;
|
|
13
14
|
return target?.replace(signatureRegex, "");
|
|
14
15
|
};
|
|
15
16
|
export { unwrapDisqus };
|
package/dist/unwraps/dstats.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { isHostOf } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
|
-
import { createParamExtractor } from "../utils.mjs";
|
|
3
2
|
import { getPathTarget } from "../pathTarget.mjs";
|
|
3
|
+
import { createParamExtractor } from "../utils.mjs";
|
|
4
4
|
// src/unwraps/dstats.ts
|
|
5
|
-
const downloadPrefixRegex = /^\/download\/(?=https?:\/)
|
|
5
|
+
const downloadPrefixRegex = /^\/download\/(?=https?:\/)/i;
|
|
6
6
|
const extractDownload = createParamExtractor({
|
|
7
7
|
hosts: "dstats.net",
|
|
8
8
|
path: "/download.php",
|
package/dist/unwraps/eClick.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createParamExtractor } from "../utils.mjs";
|
|
2
2
|
// src/unwraps/eClick.ts
|
|
3
|
-
const pathRegex = /^\/redirects\/direct\/\d+\/\d
|
|
3
|
+
const pathRegex = /^\/redirects\/direct\/\d+\/\d+\/$/i;
|
|
4
4
|
const extractUrl = createParamExtractor({
|
|
5
5
|
hosts: "www.e-click.jp",
|
|
6
6
|
params: ["url"]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { isHostOf, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
|
-
import {
|
|
1
|
+
import { decodeBase64Url, isHostOf, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
|
+
import { getParamTarget, getParamValues } from "../utils.mjs";
|
|
3
3
|
// src/unwraps/easyMarketing.ts
|
|
4
|
-
const pathRegex = /^\/trck\/eclick\/[0-9a-f]{32}
|
|
4
|
+
const pathRegex = /^\/trck\/eclick\/[0-9a-f]{32}$/i;
|
|
5
5
|
const hosts = [
|
|
6
6
|
"partnerprogramm.otto.de",
|
|
7
7
|
"pvn.mediamarkt.de",
|
|
@@ -2,7 +2,7 @@ import { isAnyOf } from "../node_modules/trousse/dist/matching.mjs";
|
|
|
2
2
|
import { createParamExtractor } from "../utils.mjs";
|
|
3
3
|
// src/unwraps/ebayRover.ts
|
|
4
4
|
const roverHostRegex = /^rover\.ebay\.(?:com|[a-z]{2,3}(?:\.[a-z]{2,3})?)$/;
|
|
5
|
-
const roverPathRegex = /^\/rover\/\d+\/[\d-]+\/\d
|
|
5
|
+
const roverPathRegex = /^\/rover\/\d+\/[\d-]+\/\d+$/i;
|
|
6
6
|
const extractTarget = createParamExtractor({
|
|
7
7
|
hosts: roverHostRegex,
|
|
8
8
|
params: ["mpre", "loc"]
|
|
@@ -9,7 +9,7 @@ const hosts = [
|
|
|
9
9
|
"www.ebuzzing.es",
|
|
10
10
|
"www.ebuzzing.co.uk"
|
|
11
11
|
];
|
|
12
|
-
const pathRegex = /^\/rd\/[\d_]+\/([^/:]*\.[^/:]*(?:\/.*)?)
|
|
12
|
+
const pathRegex = /^\/rd\/[\d_]+\/([^/:]*\.[^/:]*(?:\/.*)?)$/i;
|
|
13
13
|
const unwrapEbuzzing = (url) => {
|
|
14
14
|
if (!isHostOf(url, hosts)) return;
|
|
15
15
|
const match = pathRegex.exec(url.pathname);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createParamExtractor } from "../utils.mjs";
|
|
2
2
|
// src/unwraps/edgepilot.ts
|
|
3
|
-
const linkPathRegex = /^\/(?:s\/[0-9a-f]+\/[\w-]+|x\/[\w-]+)
|
|
3
|
+
const linkPathRegex = /^\/(?:s\/[0-9a-f]+\/[\w-]+|x\/[\w-]+)$/i;
|
|
4
4
|
const extractTarget = createParamExtractor({
|
|
5
5
|
hosts: "link.edgepilot.com",
|
|
6
6
|
params: ["u"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createParamExtractor } from "../utils.mjs";
|
|
2
2
|
// src/unwraps/effiliation.ts
|
|
3
|
-
const pathRegex = /^\/servlet\/effi\.(?:redir|product)
|
|
3
|
+
const pathRegex = /^\/servlet\/effi\.(?:redir|product)$/i;
|
|
4
4
|
const extractUrl = createParamExtractor({
|
|
5
5
|
hosts: "track.effiliation.com",
|
|
6
6
|
params: ["url"]
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { hasQueryParam, 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/elasticEmail.ts
|
|
4
5
|
const unwrapElasticEmail = (url) => {
|
|
5
|
-
if (url.pathname
|
|
6
|
+
if (!isAnyOf(url.pathname, "/tracking/click") || !hasQueryParam(url, "msgid")) return;
|
|
6
7
|
const target = getParamTarget(url, "target");
|
|
7
8
|
if (!target || !isHttpUrl(target)) return;
|
|
8
9
|
return target;
|
package/dist/unwraps/epn.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createParamExtractor } from "../utils.mjs";
|
|
2
2
|
// src/unwraps/epn.ts
|
|
3
|
-
const pathRegex = /^\/redirect\/cpa\/o\/[a-z0-9]{32}
|
|
3
|
+
const pathRegex = /^\/redirect\/cpa\/o\/[a-z0-9]{32}\/$/i;
|
|
4
4
|
const extractTarget = createParamExtractor({
|
|
5
5
|
hosts: [
|
|
6
6
|
"alipromo.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/eulerian.ts
|
|
4
|
-
const pathRegex = /^\/dynclick\/[^/]
|
|
4
|
+
const pathRegex = /^\/dynclick\/[^/]+\/$/i;
|
|
5
5
|
const unwrapEulerian = (url) => {
|
|
6
6
|
if (!pathRegex.test(url.pathname)) return;
|
|
7
7
|
const target = getParamTarget(url, "eurl");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createParamExtractor } from "../utils.mjs";
|
|
2
2
|
// src/unwraps/exciteTranslate.ts
|
|
3
|
-
const pathRegex = /^\/world\/[a-z]+\/web(?:\/body)
|
|
3
|
+
const pathRegex = /^\/world\/[a-z]+\/web(?:\/body)?\/?$/i;
|
|
4
4
|
const extractTarget = createParamExtractor({
|
|
5
5
|
hosts: [
|
|
6
6
|
"www.excite.co.jp",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { decodePercent, isHostOf } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
2
|
import { createParamExtractor } from "../utils.mjs";
|
|
3
3
|
// src/unwraps/facebook.ts
|
|
4
|
-
const legacyTargetRegex = /^\/l\/[\w-]+[/;]\/*([^/].*)
|
|
4
|
+
const legacyTargetRegex = /^\/l\/[\w-]+[/;]\/*([^/].*)$/i;
|
|
5
5
|
const legacyEncodedSchemeRegex = /^https?%(?:25)?3A/i;
|
|
6
6
|
const encodedSchemeRegex = /^https?%3A/i;
|
|
7
7
|
const schemeRegex = /^https?:/i;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { isHostOf } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
|
+
import { getParamTarget } from "../utils.mjs";
|
|
3
|
+
// src/unwraps/facebookShare.ts
|
|
4
|
+
const hosts = [
|
|
5
|
+
"www.facebook.com",
|
|
6
|
+
"facebook.com",
|
|
7
|
+
"m.facebook.com",
|
|
8
|
+
"pt-br.facebook.com",
|
|
9
|
+
"de.facebook.com"
|
|
10
|
+
];
|
|
11
|
+
const sharerPathRegex = /^\/(?:sharer(?:\/sharer)?(?:\.php)?|share\.php)\/?$/i;
|
|
12
|
+
const shareDialogPathRegex = /^\/dialog\/share\/?$/i;
|
|
13
|
+
const linkDialogPathRegex = /^\/dialog\/(?:feed|send)\/?$/i;
|
|
14
|
+
const hrefPrefixRegex = /^href=(?=https?:)/i;
|
|
15
|
+
const unwrapFacebookShare = (url) => {
|
|
16
|
+
if (!isHostOf(url, hosts)) return;
|
|
17
|
+
if (sharerPathRegex.test(url.pathname)) {
|
|
18
|
+
const target = getParamTarget(url, "u");
|
|
19
|
+
if (target) return target.replace(hrefPrefixRegex, "");
|
|
20
|
+
return getParamTarget(url, "p[url]");
|
|
21
|
+
}
|
|
22
|
+
if (shareDialogPathRegex.test(url.pathname)) return getParamTarget(url, "href");
|
|
23
|
+
if (linkDialogPathRegex.test(url.pathname)) return getParamTarget(url, "link");
|
|
24
|
+
};
|
|
25
|
+
export { unwrapFacebookShare };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { createParamExtractor } from "../utils.mjs";
|
|
2
|
+
// src/unwraps/feed2js.ts
|
|
3
|
+
const unwrapFeed2jsOrg = createParamExtractor({
|
|
4
|
+
hosts: ["feed2js.org", "www.feed2js.org"],
|
|
5
|
+
path: "/feed2js.php",
|
|
6
|
+
params: ["src"]
|
|
7
|
+
});
|
|
8
|
+
const unwrapFeedroll = createParamExtractor({
|
|
9
|
+
hosts: ["feedroll.com", "www.feedroll.com"],
|
|
10
|
+
path: "/rssviewer/feed2js.php",
|
|
11
|
+
params: ["src"]
|
|
12
|
+
});
|
|
13
|
+
const unwrapFeed2js = (url) => {
|
|
14
|
+
return unwrapFeed2jsOrg(url) ?? unwrapFeedroll(url);
|
|
15
|
+
};
|
|
16
|
+
export { unwrapFeed2js };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
|
-
import {
|
|
1
|
+
import { decodeBase64, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
|
+
import { getParamValues } from "../utils.mjs";
|
|
3
3
|
// src/unwraps/feedStatistics.ts
|
|
4
4
|
const pathRegex = /^\/(?:[^/]+\/){0,2}$/;
|
|
5
5
|
const unwrapFeedStatistics = (url) => {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { isHostOf } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
|
+
import { getParamTarget } from "../utils.mjs";
|
|
3
|
+
// src/unwraps/feedValidator.ts
|
|
4
|
+
const hosts = ["feedvalidator.org", "www.feedvalidator.org"];
|
|
5
|
+
const pathRegex = /^\/check(?:\.cgi)?$/i;
|
|
6
|
+
const atomEnabledPathRegex = /^\/feedvalidator\/check(?:\.cgi)?$/i;
|
|
7
|
+
const archivePathRegex = /^\/validator\/check(?:\.cgi)?$/i;
|
|
8
|
+
const unwrapFeedValidator = (url) => {
|
|
9
|
+
if (!(isHostOf(url, hosts) && pathRegex.test(url.pathname) || isHostOf(url, "www.atomenabled.org") && atomEnabledPathRegex.test(url.pathname) || isHostOf(url, "feeds.archive.org") && archivePathRegex.test(url.pathname))) return;
|
|
10
|
+
return getParamTarget(url, "url");
|
|
11
|
+
};
|
|
12
|
+
export { unwrapFeedValidator };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isHostOf } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
2
|
// src/unwraps/feedblitz.ts
|
|
3
|
-
const pathRegex = /^\/~\/t\/0\/[0_]\/[^/]+(?:\/full)?\/~(.+)
|
|
3
|
+
const pathRegex = /^\/~\/t\/0\/[0_]\/[^/]+(?:\/full)?\/~(.+)$/i;
|
|
4
4
|
const unwrapFeedblitz = (url) => {
|
|
5
5
|
if (!isHostOf(url, "feeds.feedblitz.com")) return;
|
|
6
6
|
const match = pathRegex.exec(url.pathname);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createParamExtractor } from "../utils.mjs";
|
|
2
|
+
// src/unwraps/feedland.ts
|
|
3
|
+
const unwrapFeedland = createParamExtractor({
|
|
4
|
+
hosts: [
|
|
5
|
+
"feedland.org",
|
|
6
|
+
"blue.feedland.org",
|
|
7
|
+
"feedland.com"
|
|
8
|
+
],
|
|
9
|
+
path: "/",
|
|
10
|
+
params: ["river", "feedurl"]
|
|
11
|
+
});
|
|
12
|
+
export { unwrapFeedland };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { isAnyOf } from "../node_modules/trousse/dist/matching.mjs";
|
|
2
|
+
import { isHostOf } from "../node_modules/trousse/dist/urls.mjs";
|
|
3
|
+
import { decodeEncodedScheme, getParamTarget } from "../utils.mjs";
|
|
4
|
+
// src/unwraps/feedly.ts
|
|
5
|
+
const feedPathRegex = /^\/i\/(?:subscription|discover\/sources\/search)\/feed(?:\/|%2F)(?<target>.+)$/i;
|
|
6
|
+
const feedFragmentRegex = /^#subscription(?:\/|%2F)feed(?:\/|%2F)(?<target>.+)$/i;
|
|
7
|
+
const hosts = [
|
|
8
|
+
"feedly.com",
|
|
9
|
+
"www.feedly.com",
|
|
10
|
+
"cloud.feedly.com"
|
|
11
|
+
];
|
|
12
|
+
const paramPath = "/i/subscription/feed";
|
|
13
|
+
const fragmentPaths = [
|
|
14
|
+
"/",
|
|
15
|
+
"/index.html",
|
|
16
|
+
"/home"
|
|
17
|
+
];
|
|
18
|
+
const unwrapFeedly = (url) => {
|
|
19
|
+
if (!isHostOf(url, hosts)) return;
|
|
20
|
+
if (isAnyOf(url.pathname, paramPath)) return getParamTarget(url, "url");
|
|
21
|
+
const pathMatch = url.pathname.match(feedPathRegex);
|
|
22
|
+
if (pathMatch?.groups) return `${decodeEncodedScheme(pathMatch.groups.target)}${url.search}${url.hash}`;
|
|
23
|
+
if (!isAnyOf(url.pathname, fragmentPaths)) return;
|
|
24
|
+
const fragmentMatch = url.hash.match(feedFragmentRegex);
|
|
25
|
+
if (!fragmentMatch?.groups) return;
|
|
26
|
+
return decodeEncodedScheme(fragmentMatch.groups.target);
|
|
27
|
+
};
|
|
28
|
+
export { unwrapFeedly };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
2
|
// src/unwraps/feedsportal.ts
|
|
3
|
-
const feedsportalPathRegex = /\/([0-9A-Za-z]{20,})\/story01\.htm
|
|
3
|
+
const feedsportalPathRegex = /\/([0-9A-Za-z]{20,})\/story01\.htm$/i;
|
|
4
4
|
const feedsportalAlphabet = {
|
|
5
5
|
A: "0",
|
|
6
6
|
B: ".",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isHostOf } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
2
|
import { createParamExtractor } from "../utils.mjs";
|
|
3
3
|
// src/unwraps/firebaseDynamicLinks.ts
|
|
4
|
-
const appPathRegex = /^\/app\/[\w-]
|
|
4
|
+
const appPathRegex = /^\/app\/[\w-]+$/i;
|
|
5
5
|
const params = ["ofl", "link"];
|
|
6
6
|
const extractTarget = createParamExtractor({
|
|
7
7
|
domains: ["app.goo.gl", "page.link"],
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { decodePercent, isHostOf } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
|
-
import { getParamTarget } from "../utils.mjs";
|
|
3
2
|
import { getPathTarget } from "../pathTarget.mjs";
|
|
3
|
+
import { getParamTarget } from "../utils.mjs";
|
|
4
4
|
// src/unwraps/firstory.ts
|
|
5
|
-
const trackPrefixRegex = /^\/track\/[^/]+\/[^/]
|
|
5
|
+
const trackPrefixRegex = /^\/track\/[^/]+\/[^/]+\//i;
|
|
6
6
|
const playPathRegex = /^\/play\.[a-z0-9]+$/i;
|
|
7
|
-
const shortPrefixRegex = /^\/p\/[^/]
|
|
7
|
+
const shortPrefixRegex = /^\/p\/[^/]+\//i;
|
|
8
8
|
const trackHosts = ["m.cdn.firstory.me", "v1.firstory.me"];
|
|
9
9
|
const playHosts = [...trackHosts, "backend.endpoints.firstory-709db.cloud.goog"];
|
|
10
10
|
const unwrapFirstory = (url) => {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { isHostOf } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
2
|
import { getPathTarget } from "../pathTarget.mjs";
|
|
3
3
|
// src/unwraps/fiveByFive.ts
|
|
4
|
-
const showPrefixRegex = /^\/d\/[^/]
|
|
5
|
-
const redirectPrefixRegex = /^\/(?:pts\/)?redirect\.mp3
|
|
4
|
+
const showPrefixRegex = /^\/d\/[^/]+\//i;
|
|
5
|
+
const redirectPrefixRegex = /^\/(?:pts\/)?redirect\.mp3\//i;
|
|
6
6
|
const unwrapFiveByFive = (url) => {
|
|
7
7
|
if (isHostOf(url, "fdlyr.co")) return getPathTarget(url, showPrefixRegex, "http:");
|
|
8
8
|
if (!isHostOf(url, ["d.5by5.net", "d.ahoy.co"])) return;
|
|
@@ -0,0 +1,15 @@
|
|
|
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/flipboardShare.ts
|
|
5
|
+
const pathRegex = /^\/bookmarklet\/popout\/?$/i;
|
|
6
|
+
const hosts = [
|
|
7
|
+
"share.flipboard.com",
|
|
8
|
+
"flipboard.com",
|
|
9
|
+
"www.flipboard.com"
|
|
10
|
+
];
|
|
11
|
+
const unwrapFlipboardShare = (url) => {
|
|
12
|
+
if (!isHostOf(url, hosts) || !isAnyOf(url.pathname, pathRegex)) return;
|
|
13
|
+
return getParamTarget(url, "url");
|
|
14
|
+
};
|
|
15
|
+
export { unwrapFlipboardShare };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { hasQueryParam, 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/fortimail.ts
|
|
4
5
|
const unwrapFortimail = (url) => {
|
|
5
|
-
if (url.pathname
|
|
6
|
+
if (!isAnyOf(url.pathname, "/fmlurlsvc/") || !hasQueryParam(url, "fewReq")) return;
|
|
6
7
|
const target = getParamTarget(url, "url");
|
|
7
8
|
if (!target || !isHttpUrl(target)) return;
|
|
8
9
|
return target;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { isAnyOf } from "../node_modules/trousse/dist/matching.mjs";
|
|
2
|
+
import { isHostOf, isHttpUrl, parseUrl } from "../node_modules/trousse/dist/urls.mjs";
|
|
3
|
+
import { getParamTarget } from "../utils.mjs";
|
|
4
|
+
// src/unwraps/friendFeed.ts
|
|
5
|
+
const hosts = ["friendfeed.com", "www.friendfeed.com"];
|
|
6
|
+
const unwrapFriendFeed = (url) => {
|
|
7
|
+
if (!isHostOf(url, hosts)) return;
|
|
8
|
+
if (isAnyOf(url.pathname, "/share")) return getParamTarget(url, "url") ?? getParamTarget(url, "link");
|
|
9
|
+
if (isAnyOf(url.pathname, "/share/bookmarklet/frame")) {
|
|
10
|
+
const fragment = parseUrl(`?${url.hash.slice(1)}`, url);
|
|
11
|
+
if (!fragment) return;
|
|
12
|
+
return getParamTarget(fragment, "url");
|
|
13
|
+
}
|
|
14
|
+
if (url.pathname !== "/") return;
|
|
15
|
+
const target = getParamTarget(url, "url");
|
|
16
|
+
if (target && isHttpUrl(target)) return target;
|
|
17
|
+
};
|
|
18
|
+
export { unwrapFriendFeed };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { isAnyOf } from "../node_modules/trousse/dist/matching.mjs";
|
|
2
|
+
import { decodeEncodedScheme, decodeParamValue } from "../utils.mjs";
|
|
3
|
+
// src/unwraps/genericCarrier.ts
|
|
4
|
+
const httpTargetRegex = /^https?:\/\//i;
|
|
5
|
+
const carriers = [
|
|
6
|
+
"url",
|
|
7
|
+
"feedurl",
|
|
8
|
+
"moduleurl",
|
|
9
|
+
"feed.url",
|
|
10
|
+
".url",
|
|
11
|
+
"link",
|
|
12
|
+
"redirect",
|
|
13
|
+
"to",
|
|
14
|
+
"go",
|
|
15
|
+
"goto",
|
|
16
|
+
"out"
|
|
17
|
+
];
|
|
18
|
+
const unwrapGenericCarrier = (url) => {
|
|
19
|
+
const params = url.search.slice(1).split("&");
|
|
20
|
+
for (const [index, param] of params.entries()) {
|
|
21
|
+
const separator = param.indexOf("=");
|
|
22
|
+
if (separator === -1 || !isAnyOf(param.slice(0, separator), carriers)) continue;
|
|
23
|
+
const raw = param.slice(separator + 1);
|
|
24
|
+
let target = decodeEncodedScheme(decodeParamValue(raw));
|
|
25
|
+
if (!httpTargetRegex.test(target)) continue;
|
|
26
|
+
if (httpTargetRegex.test(raw) && raw.includes("?")) target = decodeParamValue([raw, ...params.slice(index + 1)].join("&"));
|
|
27
|
+
if (target.includes("#")) return target;
|
|
28
|
+
return `${target}${url.hash}`;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
export { unwrapGenericCarrier };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
|
-
import {
|
|
1
|
+
import { decodeBase64, isHttpUrl } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
|
+
import { getParamValues } from "../utils.mjs";
|
|
3
3
|
// src/unwraps/gfnLinkProxy.ts
|
|
4
|
-
const pathRegex = /^(?:\/[^/]+)?\/redirect
|
|
4
|
+
const pathRegex = /^(?:\/[^/]+)?\/redirect\/?$/i;
|
|
5
5
|
const unwrapGfnLinkProxy = (url) => {
|
|
6
6
|
if (!pathRegex.test(url.pathname)) return;
|
|
7
7
|
const raw = getParamValues(url, "to").at(0);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { decodePercent, isHostOf } from "../node_modules/trousse/dist/urls.mjs";
|
|
2
2
|
import { createParamExtractor } from "../utils.mjs";
|
|
3
3
|
// src/unwraps/godcaster.ts
|
|
4
|
-
const episodePrefixRegex = /^\/act\/e\/\d+\/\d+\/\d
|
|
4
|
+
const episodePrefixRegex = /^\/act\/e\/\d+\/\d+\/\d+\//i;
|
|
5
5
|
const encodedSchemeRegex = /^https?%(?:25)?3A/i;
|
|
6
|
-
const supportPathRegex = /^\/act\/(?:sr\/\d+|fr\/\d+\/\d+)
|
|
6
|
+
const supportPathRegex = /^\/act\/(?:sr\/\d+|fr\/\d+\/\d+)$/i;
|
|
7
7
|
const extractSupportTarget = createParamExtractor({
|
|
8
8
|
hosts: "go.godcaster.fm",
|
|
9
9
|
params: ["d"]
|