urlpurify 1.0.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 (162) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +93 -0
  3. package/dist/clean.d.ts +8 -0
  4. package/dist/clean.js +63 -0
  5. package/dist/defaults.d.ts +7 -0
  6. package/dist/defaults.js +30 -0
  7. package/dist/index.d.ts +80 -0
  8. package/dist/index.js +79 -0
  9. package/dist/params.d.ts +4 -0
  10. package/dist/params.js +157 -0
  11. package/dist/types.d.ts +9 -0
  12. package/dist/unwraps/aceml.d.ts +6 -0
  13. package/dist/unwraps/aceml.js +15 -0
  14. package/dist/unwraps/adjust.d.ts +6 -0
  15. package/dist/unwraps/adjust.js +9 -0
  16. package/dist/unwraps/amazonAffiliate.d.ts +6 -0
  17. package/dist/unwraps/amazonAffiliate.js +9 -0
  18. package/dist/unwraps/ampCache.d.ts +6 -0
  19. package/dist/unwraps/ampCache.js +13 -0
  20. package/dist/unwraps/awin.d.ts +6 -0
  21. package/dist/unwraps/awin.js +9 -0
  22. package/dist/unwraps/bing.d.ts +6 -0
  23. package/dist/unwraps/bing.js +14 -0
  24. package/dist/unwraps/cjNetwork.d.ts +6 -0
  25. package/dist/unwraps/cjNetwork.js +17 -0
  26. package/dist/unwraps/digidip.d.ts +6 -0
  27. package/dist/unwraps/digidip.js +8 -0
  28. package/dist/unwraps/disqus.d.ts +6 -0
  29. package/dist/unwraps/disqus.js +8 -0
  30. package/dist/unwraps/douban.d.ts +6 -0
  31. package/dist/unwraps/douban.js +9 -0
  32. package/dist/unwraps/duckduckgo.d.ts +6 -0
  33. package/dist/unwraps/duckduckgo.js +9 -0
  34. package/dist/unwraps/ebayRover.d.ts +6 -0
  35. package/dist/unwraps/ebayRover.js +8 -0
  36. package/dist/unwraps/effiliation.d.ts +6 -0
  37. package/dist/unwraps/effiliation.js +8 -0
  38. package/dist/unwraps/embedly.d.ts +6 -0
  39. package/dist/unwraps/embedly.js +8 -0
  40. package/dist/unwraps/facebook.d.ts +6 -0
  41. package/dist/unwraps/facebook.js +9 -0
  42. package/dist/unwraps/feedsportal.d.ts +6 -0
  43. package/dist/unwraps/feedsportal.js +44 -0
  44. package/dist/unwraps/firebaseDynamicLinks.d.ts +6 -0
  45. package/dist/unwraps/firebaseDynamicLinks.js +8 -0
  46. package/dist/unwraps/flipboard.d.ts +6 -0
  47. package/dist/unwraps/flipboard.js +9 -0
  48. package/dist/unwraps/gateSc.d.ts +6 -0
  49. package/dist/unwraps/gateSc.js +8 -0
  50. package/dist/unwraps/georiot.d.ts +6 -0
  51. package/dist/unwraps/georiot.js +8 -0
  52. package/dist/unwraps/gitee.d.ts +6 -0
  53. package/dist/unwraps/gitee.js +9 -0
  54. package/dist/unwraps/google.d.ts +6 -0
  55. package/dist/unwraps/google.js +8 -0
  56. package/dist/unwraps/googleAmpViewer.d.ts +6 -0
  57. package/dist/unwraps/googleAmpViewer.js +13 -0
  58. package/dist/unwraps/googleNews.d.ts +6 -0
  59. package/dist/unwraps/googleNews.js +8 -0
  60. package/dist/unwraps/googleNewsModern.d.ts +6 -0
  61. package/dist/unwraps/googleNewsModern.js +14 -0
  62. package/dist/unwraps/googleScholar.d.ts +6 -0
  63. package/dist/unwraps/googleScholar.js +8 -0
  64. package/dist/unwraps/googleTranslate.d.ts +6 -0
  65. package/dist/unwraps/googleTranslate.js +8 -0
  66. package/dist/unwraps/hashnode.d.ts +6 -0
  67. package/dist/unwraps/hashnode.js +9 -0
  68. package/dist/unwraps/icptrack.d.ts +6 -0
  69. package/dist/unwraps/icptrack.js +9 -0
  70. package/dist/unwraps/idealoPartner.d.ts +6 -0
  71. package/dist/unwraps/idealoPartner.js +8 -0
  72. package/dist/unwraps/instagram.d.ts +6 -0
  73. package/dist/unwraps/instagram.js +8 -0
  74. package/dist/unwraps/jianshuGo.d.ts +6 -0
  75. package/dist/unwraps/jianshuGo.js +9 -0
  76. package/dist/unwraps/juejin.d.ts +6 -0
  77. package/dist/unwraps/juejin.js +8 -0
  78. package/dist/unwraps/leverAnalytics.d.ts +6 -0
  79. package/dist/unwraps/leverAnalytics.js +8 -0
  80. package/dist/unwraps/linksynergy.d.ts +6 -0
  81. package/dist/unwraps/linksynergy.js +9 -0
  82. package/dist/unwraps/mailchimp.d.ts +6 -0
  83. package/dist/unwraps/mailchimp.js +9 -0
  84. package/dist/unwraps/mailpanion.d.ts +6 -0
  85. package/dist/unwraps/mailpanion.js +8 -0
  86. package/dist/unwraps/mailpgn.d.ts +6 -0
  87. package/dist/unwraps/mailpgn.js +8 -0
  88. package/dist/unwraps/mailtrack.d.ts +6 -0
  89. package/dist/unwraps/mailtrack.js +8 -0
  90. package/dist/unwraps/medium.d.ts +6 -0
  91. package/dist/unwraps/medium.js +9 -0
  92. package/dist/unwraps/mimecast.d.ts +6 -0
  93. package/dist/unwraps/mimecast.js +11 -0
  94. package/dist/unwraps/mozillaOutgoing.d.ts +6 -0
  95. package/dist/unwraps/mozillaOutgoing.js +13 -0
  96. package/dist/unwraps/narrativ.d.ts +6 -0
  97. package/dist/unwraps/narrativ.js +8 -0
  98. package/dist/unwraps/nicoMs.d.ts +6 -0
  99. package/dist/unwraps/nicoMs.js +12 -0
  100. package/dist/unwraps/outlookSafelinks.d.ts +6 -0
  101. package/dist/unwraps/outlookSafelinks.js +8 -0
  102. package/dist/unwraps/partnerAds.d.ts +6 -0
  103. package/dist/unwraps/partnerAds.js +8 -0
  104. package/dist/unwraps/pocket.d.ts +6 -0
  105. package/dist/unwraps/pocket.js +9 -0
  106. package/dist/unwraps/postmark.d.ts +6 -0
  107. package/dist/unwraps/postmark.js +12 -0
  108. package/dist/unwraps/proofpointV1.d.ts +6 -0
  109. package/dist/unwraps/proofpointV1.js +16 -0
  110. package/dist/unwraps/proofpointV2.d.ts +6 -0
  111. package/dist/unwraps/proofpointV2.js +16 -0
  112. package/dist/unwraps/proofpointV3.d.ts +6 -0
  113. package/dist/unwraps/proofpointV3.js +78 -0
  114. package/dist/unwraps/pxf.d.ts +6 -0
  115. package/dist/unwraps/pxf.js +8 -0
  116. package/dist/unwraps/recruitics.d.ts +6 -0
  117. package/dist/unwraps/recruitics.js +8 -0
  118. package/dist/unwraps/redditOut.d.ts +6 -0
  119. package/dist/unwraps/redditOut.js +8 -0
  120. package/dist/unwraps/redirectingat.d.ts +6 -0
  121. package/dist/unwraps/redirectingat.js +8 -0
  122. package/dist/unwraps/segmentfault.d.ts +6 -0
  123. package/dist/unwraps/segmentfault.js +14 -0
  124. package/dist/unwraps/shareasale.d.ts +6 -0
  125. package/dist/unwraps/shareasale.js +9 -0
  126. package/dist/unwraps/sjv.d.ts +6 -0
  127. package/dist/unwraps/sjv.js +8 -0
  128. package/dist/unwraps/skimlinks.d.ts +6 -0
  129. package/dist/unwraps/skimlinks.js +8 -0
  130. package/dist/unwraps/slack.d.ts +6 -0
  131. package/dist/unwraps/slack.js +9 -0
  132. package/dist/unwraps/smartredirect.d.ts +6 -0
  133. package/dist/unwraps/smartredirect.js +8 -0
  134. package/dist/unwraps/sspai.d.ts +6 -0
  135. package/dist/unwraps/sspai.js +9 -0
  136. package/dist/unwraps/steamLinkfilter.d.ts +6 -0
  137. package/dist/unwraps/steamLinkfilter.js +9 -0
  138. package/dist/unwraps/telegramIv.d.ts +6 -0
  139. package/dist/unwraps/telegramIv.js +9 -0
  140. package/dist/unwraps/tradedoubler.d.ts +6 -0
  141. package/dist/unwraps/tradedoubler.js +9 -0
  142. package/dist/unwraps/tumblr.d.ts +6 -0
  143. package/dist/unwraps/tumblr.js +9 -0
  144. package/dist/unwraps/valuecommerce.d.ts +6 -0
  145. package/dist/unwraps/valuecommerce.js +9 -0
  146. package/dist/unwraps/viglink.d.ts +6 -0
  147. package/dist/unwraps/viglink.js +8 -0
  148. package/dist/unwraps/vkAway.d.ts +6 -0
  149. package/dist/unwraps/vkAway.js +9 -0
  150. package/dist/unwraps/webArchive.d.ts +6 -0
  151. package/dist/unwraps/webArchive.js +12 -0
  152. package/dist/unwraps/yahooSearch.d.ts +6 -0
  153. package/dist/unwraps/yahooSearch.js +12 -0
  154. package/dist/unwraps/yandexTurbo.d.ts +6 -0
  155. package/dist/unwraps/yandexTurbo.js +12 -0
  156. package/dist/unwraps/youtube.d.ts +6 -0
  157. package/dist/unwraps/youtube.js +9 -0
  158. package/dist/unwraps/zhihu.d.ts +6 -0
  159. package/dist/unwraps/zhihu.js +8 -0
  160. package/dist/utils.d.ts +11 -0
  161. package/dist/utils.js +50 -0
  162. package/package.json +45 -0
@@ -0,0 +1,9 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/awin.ts
3
+ const unwrapAwin = createParamExtractor({
4
+ hosts: "www.awin1.com",
5
+ path: "/cread.php",
6
+ params: ["ued", "p"]
7
+ });
8
+ //#endregion
9
+ export { unwrapAwin };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/bing.d.ts
4
+ declare const unwrapBing: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapBing };
@@ -0,0 +1,14 @@
1
+ import { decodeBase64Url } from "../utils.js";
2
+ //#region src/unwraps/bing.ts
3
+ const bingHostRegex = /^(?:www\.|cn\.)?bing\.com$/;
4
+ const bingPrefixRegex = /^a\d/;
5
+ const unwrapBing = (url) => {
6
+ if (!bingHostRegex.test(url.hostname) || url.pathname !== "/ck/a") return;
7
+ const value = url.searchParams.get("u");
8
+ if (!value || !bingPrefixRegex.test(value)) return;
9
+ const decoded = decodeBase64Url(value.slice(2));
10
+ if (!decoded || !decoded.startsWith("https://") && !decoded.startsWith("http://")) return;
11
+ return decoded;
12
+ };
13
+ //#endregion
14
+ export { unwrapBing };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/cjNetwork.d.ts
4
+ declare const unwrapCjNetwork: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapCjNetwork };
@@ -0,0 +1,17 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/cjNetwork.ts
3
+ const unwrapCjNetwork = createParamExtractor({
4
+ hosts: [
5
+ "www.dpbolvw.net",
6
+ "www.tkqlhce.com",
7
+ "www.anrdoezrs.net",
8
+ "www.jdoqocy.com",
9
+ "www.kqzyfj.com",
10
+ "www.pntrac.com",
11
+ "www.pjtra.com",
12
+ "www.pntrs.com"
13
+ ],
14
+ params: ["url"]
15
+ });
16
+ //#endregion
17
+ export { unwrapCjNetwork };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/digidip.d.ts
4
+ declare const unwrapDigidip: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapDigidip };
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/digidip.ts
3
+ const unwrapDigidip = createParamExtractor({
4
+ hosts: /\.digidip\.net$/,
5
+ params: ["url"]
6
+ });
7
+ //#endregion
8
+ export { unwrapDigidip };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/disqus.d.ts
4
+ declare const unwrapDisqus: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapDisqus };
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/disqus.ts
3
+ const unwrapDisqus = createParamExtractor({
4
+ hosts: "disq.us",
5
+ params: ["url"]
6
+ });
7
+ //#endregion
8
+ export { unwrapDisqus };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/douban.d.ts
4
+ declare const unwrapDouban: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapDouban };
@@ -0,0 +1,9 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/douban.ts
3
+ const unwrapDouban = createParamExtractor({
4
+ hosts: "www.douban.com",
5
+ path: "/link2/",
6
+ params: ["url"]
7
+ });
8
+ //#endregion
9
+ export { unwrapDouban };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/duckduckgo.d.ts
4
+ declare const unwrapDuckduckgo: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapDuckduckgo };
@@ -0,0 +1,9 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/duckduckgo.ts
3
+ const unwrapDuckduckgo = createParamExtractor({
4
+ hosts: "duckduckgo.com",
5
+ path: "/l/",
6
+ params: ["uddg"]
7
+ });
8
+ //#endregion
9
+ export { unwrapDuckduckgo };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/ebayRover.d.ts
4
+ declare const unwrapEbayRover: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapEbayRover };
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/ebayRover.ts
3
+ const unwrapEbayRover = createParamExtractor({
4
+ hosts: /^rover\.ebay\.[a-z.]+$/,
5
+ params: ["mpre"]
6
+ });
7
+ //#endregion
8
+ export { unwrapEbayRover };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/effiliation.d.ts
4
+ declare const unwrapEffiliation: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapEffiliation };
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/effiliation.ts
3
+ const unwrapEffiliation = createParamExtractor({
4
+ hosts: /\.effiliation\.com$/,
5
+ params: ["url"]
6
+ });
7
+ //#endregion
8
+ export { unwrapEffiliation };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/embedly.d.ts
4
+ declare const unwrapEmbedly: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapEmbedly };
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/embedly.ts
3
+ const unwrapEmbedly = createParamExtractor({
4
+ hosts: ["cdn.embedly.com", "embed.ly"],
5
+ params: ["src"]
6
+ });
7
+ //#endregion
8
+ export { unwrapEmbedly };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/facebook.d.ts
4
+ declare const unwrapFacebookShim: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapFacebookShim };
@@ -0,0 +1,9 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/facebook.ts
3
+ const unwrapFacebookShim = createParamExtractor({
4
+ hosts: ["l.facebook.com", "lm.facebook.com"],
5
+ path: "/l.php",
6
+ params: ["u"]
7
+ });
8
+ //#endregion
9
+ export { unwrapFacebookShim };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/feedsportal.d.ts
4
+ declare const unwrapFeedsportal: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapFeedsportal };
@@ -0,0 +1,44 @@
1
+ //#region src/unwraps/feedsportal.ts
2
+ const feedsportalPathRegex = /\/([0-9A-Za-z]{20,})\/story01\.htm$/;
3
+ const feedsportalAlphabet = {
4
+ A: "0",
5
+ B: ".",
6
+ C: "/",
7
+ D: "?",
8
+ E: "-",
9
+ F: "=",
10
+ G: "&",
11
+ H: ",",
12
+ I: "_",
13
+ J: "%",
14
+ K: "+",
15
+ L: "http://",
16
+ M: "https://",
17
+ N: ".com",
18
+ O: ".co.uk",
19
+ P: ";",
20
+ Q: "|",
21
+ R: ":",
22
+ S: "www.",
23
+ T: "#",
24
+ U: "$",
25
+ V: "~",
26
+ W: "!",
27
+ X: "(",
28
+ Y: ")",
29
+ Z: "Z"
30
+ };
31
+ const unwrapFeedsportal = (url) => {
32
+ const match = url.pathname.match(feedsportalPathRegex);
33
+ if (!match) return;
34
+ const decoded = match[1].split("0").map((chunk, index) => {
35
+ if (index === 0) return chunk;
36
+ const head = chunk[0];
37
+ const substitution = head ? feedsportalAlphabet[head] : void 0;
38
+ return substitution === void 0 ? `0${chunk}` : substitution + chunk.slice(1);
39
+ }).join("");
40
+ if (!decoded.startsWith("http://") && !decoded.startsWith("https://")) return;
41
+ return decoded;
42
+ };
43
+ //#endregion
44
+ export { unwrapFeedsportal };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/firebaseDynamicLinks.d.ts
4
+ declare const unwrapFirebaseDynamicLinks: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapFirebaseDynamicLinks };
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/firebaseDynamicLinks.ts
3
+ const unwrapFirebaseDynamicLinks = createParamExtractor({
4
+ hosts: /\.page\.link$/,
5
+ params: ["link", "ofl"]
6
+ });
7
+ //#endregion
8
+ export { unwrapFirebaseDynamicLinks };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/flipboard.d.ts
4
+ declare const unwrapFlipboard: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapFlipboard };
@@ -0,0 +1,9 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/flipboard.ts
3
+ const unwrapFlipboard = createParamExtractor({
4
+ hosts: "flipboard.com",
5
+ path: "/redirect",
6
+ params: ["url"]
7
+ });
8
+ //#endregion
9
+ export { unwrapFlipboard };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/gateSc.d.ts
4
+ declare const unwrapGateSc: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapGateSc };
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/gateSc.ts
3
+ const unwrapGateSc = createParamExtractor({
4
+ hosts: "gate.sc",
5
+ params: ["url"]
6
+ });
7
+ //#endregion
8
+ export { unwrapGateSc };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/georiot.d.ts
4
+ declare const unwrapGeoriot: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapGeoriot };
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/georiot.ts
3
+ const unwrapGeoriot = createParamExtractor({
4
+ hosts: "target.georiot.com",
5
+ params: ["GR_URL"]
6
+ });
7
+ //#endregion
8
+ export { unwrapGeoriot };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/gitee.d.ts
4
+ declare const unwrapGitee: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapGitee };
@@ -0,0 +1,9 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/gitee.ts
3
+ const unwrapGitee = createParamExtractor({
4
+ hosts: "gitee.com",
5
+ path: "/link",
6
+ params: ["target"]
7
+ });
8
+ //#endregion
9
+ export { unwrapGitee };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/google.d.ts
4
+ declare const unwrapGoogle: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapGoogle };
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ const unwrapGoogle = createParamExtractor({
3
+ hosts: /^(?:[a-z0-9-]+\.)*google\.(?:com|[a-z]{2,3}(?:\.[a-z]{2,3})?)$/,
4
+ path: "/url",
5
+ params: ["url", "q"]
6
+ });
7
+ //#endregion
8
+ export { unwrapGoogle };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/googleAmpViewer.d.ts
4
+ declare const unwrapGoogleAmpViewer: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapGoogleAmpViewer };
@@ -0,0 +1,13 @@
1
+ //#region src/unwraps/googleAmpViewer.ts
2
+ const googleAmpHostRegex = /^(?:www\.)?google\.(?:com|[a-z]{2,3}(?:\.[a-z]{2,3})?)$/;
3
+ const httpsPathRegex = /^\/amp\/s\/(.+)$/;
4
+ const httpPathRegex = /^\/amp\/(?!s\/)(.+)$/;
5
+ const unwrapGoogleAmpViewer = (url) => {
6
+ if (!googleAmpHostRegex.test(url.hostname)) return;
7
+ const httpsMatch = url.pathname.match(httpsPathRegex);
8
+ if (httpsMatch) return `https://${httpsMatch[1]}`;
9
+ const httpMatch = url.pathname.match(httpPathRegex);
10
+ if (httpMatch) return `http://${httpMatch[1]}`;
11
+ };
12
+ //#endregion
13
+ export { unwrapGoogleAmpViewer };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/googleNews.d.ts
4
+ declare const unwrapGoogleNews: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapGoogleNews };
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ const unwrapGoogleNews = createParamExtractor({
3
+ hosts: /^news\.google\.(?:com|[a-z]{2,3}(?:\.[a-z]{2,3})?)$/,
4
+ path: "/news/url",
5
+ params: ["url"]
6
+ });
7
+ //#endregion
8
+ export { unwrapGoogleNews };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/googleNewsModern.d.ts
4
+ declare const unwrapGoogleNewsModern: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapGoogleNewsModern };
@@ -0,0 +1,14 @@
1
+ import { decodeBase64Binary, isHostOf } from "../utils.js";
2
+ //#region src/unwraps/googleNewsModern.ts
3
+ const articleIdRegex = /^\/(?:rss\/)?articles\/([\w-]+)/;
4
+ const base64UrlMinusRegex = /-/g;
5
+ const base64UrlUnderscoreRegex = /_/g;
6
+ const protobufFramingRegex = /\x08\x13".+?(https?:\/\/[^\xd2]+)\xd2\x01/;
7
+ const unwrapGoogleNewsModern = (url) => {
8
+ if (!isHostOf(url, "news.google.com")) return;
9
+ const match = url.pathname.match(articleIdRegex);
10
+ if (!match) return;
11
+ return (decodeBase64Binary(match[1].replace(base64UrlMinusRegex, "+").replace(base64UrlUnderscoreRegex, "/"))?.match(protobufFramingRegex))?.[1];
12
+ };
13
+ //#endregion
14
+ export { unwrapGoogleNewsModern };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/googleScholar.d.ts
4
+ declare const unwrapGoogleScholar: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapGoogleScholar };
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ const unwrapGoogleScholar = createParamExtractor({
3
+ hosts: /^scholar\.google\.(?:com|[a-z]{2,3}(?:\.[a-z]{2,3})?)$/,
4
+ path: "/scholar_url",
5
+ params: ["url"]
6
+ });
7
+ //#endregion
8
+ export { unwrapGoogleScholar };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/googleTranslate.d.ts
4
+ declare const unwrapGoogleTranslate: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapGoogleTranslate };
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ const unwrapGoogleTranslate = createParamExtractor({
3
+ hosts: /^translate\.google\.(?:com|[a-z]{2,3}(?:\.[a-z]{2,3})?)$/,
4
+ path: "/translate",
5
+ params: ["u"]
6
+ });
7
+ //#endregion
8
+ export { unwrapGoogleTranslate };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/hashnode.d.ts
4
+ declare const unwrapHashnode: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapHashnode };
@@ -0,0 +1,9 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/hashnode.ts
3
+ const unwrapHashnode = createParamExtractor({
4
+ hosts: "hashnode.com",
5
+ path: "/util/redirect",
6
+ params: ["url"]
7
+ });
8
+ //#endregion
9
+ export { unwrapHashnode };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/icptrack.d.ts
4
+ declare const unwrapIcptrack: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapIcptrack };
@@ -0,0 +1,9 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/icptrack.ts
3
+ const unwrapIcptrack = createParamExtractor({
4
+ hosts: "click.icptrack.com",
5
+ path: "/icp/relay.php",
6
+ params: ["destination"]
7
+ });
8
+ //#endregion
9
+ export { unwrapIcptrack };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/idealoPartner.d.ts
4
+ declare const unwrapIdealoPartner: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapIdealoPartner };
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/idealoPartner.ts
3
+ const unwrapIdealoPartner = createParamExtractor({
4
+ hosts: /\.idealo-partner\.com$/,
5
+ params: ["trg"]
6
+ });
7
+ //#endregion
8
+ export { unwrapIdealoPartner };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/instagram.d.ts
4
+ declare const unwrapInstagramShim: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapInstagramShim };
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/instagram.ts
3
+ const unwrapInstagramShim = createParamExtractor({
4
+ hosts: ["l.instagram.com", "lm.instagram.com"],
5
+ params: ["u"]
6
+ });
7
+ //#endregion
8
+ export { unwrapInstagramShim };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/jianshuGo.d.ts
4
+ declare const unwrapJianshuGo: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapJianshuGo };
@@ -0,0 +1,9 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/jianshuGo.ts
3
+ const unwrapJianshuGo = createParamExtractor({
4
+ hosts: "links.jianshu.com",
5
+ path: "/go",
6
+ params: ["to"]
7
+ });
8
+ //#endregion
9
+ export { unwrapJianshuGo };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/juejin.d.ts
4
+ declare const unwrapJuejin: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapJuejin };
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/juejin.ts
3
+ const unwrapJuejin = createParamExtractor({
4
+ hosts: "link.juejin.cn",
5
+ params: ["target"]
6
+ });
7
+ //#endregion
8
+ export { unwrapJuejin };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/leverAnalytics.d.ts
4
+ declare const unwrapLeverAnalytics: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapLeverAnalytics };
@@ -0,0 +1,8 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/leverAnalytics.ts
3
+ const unwrapLeverAnalytics = createParamExtractor({
4
+ hosts: "t.lever-analytics.com",
5
+ params: ["dest"]
6
+ });
7
+ //#endregion
8
+ export { unwrapLeverAnalytics };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/linksynergy.d.ts
4
+ declare const unwrapLinksynergy: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapLinksynergy };
@@ -0,0 +1,9 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/linksynergy.ts
3
+ const unwrapLinksynergy = createParamExtractor({
4
+ hosts: "click.linksynergy.com",
5
+ path: "/deeplink",
6
+ params: ["murl"]
7
+ });
8
+ //#endregion
9
+ export { unwrapLinksynergy };
@@ -0,0 +1,6 @@
1
+ import { UrlUnwrapper } from "../types.js";
2
+
3
+ //#region src/unwraps/mailchimp.d.ts
4
+ declare const unwrapMailchimp: UrlUnwrapper;
5
+ //#endregion
6
+ export { unwrapMailchimp };
@@ -0,0 +1,9 @@
1
+ import { createParamExtractor } from "../utils.js";
2
+ //#region src/unwraps/mailchimp.ts
3
+ const unwrapMailchimp = createParamExtractor({
4
+ hosts: /\.mailchimp\.com$/,
5
+ path: "/mctx/clicks",
6
+ params: ["url"]
7
+ });
8
+ //#endregion
9
+ export { unwrapMailchimp };