feedscout 1.5.0 → 1.6.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 (193) hide show
  1. package/README.md +12 -17
  2. package/dist/blogrolls/defaults.cjs +1 -3
  3. package/dist/blogrolls/defaults.js +1 -2
  4. package/dist/blogrolls/extractors.cjs +6 -9
  5. package/dist/blogrolls/extractors.js +6 -9
  6. package/dist/blogrolls/index.cjs +6 -9
  7. package/dist/blogrolls/index.d.cts +1 -1
  8. package/dist/blogrolls/index.d.ts +1 -1
  9. package/dist/blogrolls/index.js +1 -4
  10. package/dist/blogrolls.cjs +4 -5
  11. package/dist/blogrolls.js +1 -2
  12. package/dist/common/discover/index.cjs +24 -16
  13. package/dist/common/discover/index.js +20 -12
  14. package/dist/common/discover/utils.cjs +19 -9
  15. package/dist/common/discover/utils.js +18 -8
  16. package/dist/common/locales.cjs +59 -15
  17. package/dist/common/locales.js +49 -4
  18. package/dist/common/types.cjs +2 -3
  19. package/dist/common/types.d.cts +11 -6
  20. package/dist/common/types.d.ts +11 -6
  21. package/dist/common/types.js +2 -2
  22. package/dist/common/uris/feed/index.cjs +12 -0
  23. package/dist/common/uris/feed/index.d.cts +6 -0
  24. package/dist/common/uris/feed/index.d.ts +6 -0
  25. package/dist/common/uris/feed/index.js +12 -0
  26. package/dist/common/uris/feed/types.d.cts +9 -0
  27. package/dist/common/uris/feed/types.d.ts +9 -0
  28. package/dist/common/uris/guess/index.cjs +2 -4
  29. package/dist/common/uris/guess/index.js +1 -3
  30. package/dist/common/uris/guess/utils.cjs +1 -3
  31. package/dist/common/uris/guess/utils.js +1 -2
  32. package/dist/common/uris/headers/index.cjs +2 -4
  33. package/dist/common/uris/headers/index.js +1 -3
  34. package/dist/common/uris/html/handlers.cjs +2 -4
  35. package/dist/common/uris/html/handlers.js +1 -3
  36. package/dist/common/uris/html/index.cjs +2 -4
  37. package/dist/common/uris/html/index.js +1 -3
  38. package/dist/common/uris/index.cjs +15 -12
  39. package/dist/common/uris/index.js +8 -5
  40. package/dist/common/uris/platform/index.cjs +3 -5
  41. package/dist/common/uris/platform/index.d.cts +7 -0
  42. package/dist/common/uris/platform/index.d.ts +7 -0
  43. package/dist/common/uris/platform/index.js +3 -4
  44. package/dist/common/uris/platform/types.d.cts +3 -3
  45. package/dist/common/uris/platform/types.d.ts +3 -3
  46. package/dist/common/utils.cjs +20 -9
  47. package/dist/common/utils.d.cts +2 -2
  48. package/dist/common/utils.d.ts +2 -2
  49. package/dist/common/utils.js +18 -8
  50. package/dist/favicons/defaults.cjs +60 -0
  51. package/dist/favicons/defaults.d.cts +18 -0
  52. package/dist/favicons/defaults.d.ts +18 -0
  53. package/dist/favicons/defaults.js +53 -0
  54. package/dist/favicons/extractors.cjs +13 -0
  55. package/dist/favicons/extractors.d.cts +7 -0
  56. package/dist/favicons/extractors.d.ts +7 -0
  57. package/dist/favicons/extractors.js +13 -0
  58. package/dist/favicons/index.cjs +29 -0
  59. package/dist/favicons/index.d.cts +7 -0
  60. package/dist/favicons/index.d.ts +7 -0
  61. package/dist/favicons/index.js +29 -0
  62. package/dist/favicons/platform/handlers/bluesky.cjs +27 -0
  63. package/dist/favicons/platform/handlers/bluesky.js +27 -0
  64. package/dist/favicons/platform/handlers/codeberg.cjs +18 -0
  65. package/dist/favicons/platform/handlers/codeberg.js +18 -0
  66. package/dist/favicons/platform/handlers/deviantart.cjs +29 -0
  67. package/dist/favicons/platform/handlers/deviantart.js +29 -0
  68. package/dist/favicons/platform/handlers/github.cjs +18 -0
  69. package/dist/favicons/platform/handlers/github.js +18 -0
  70. package/dist/favicons/platform/handlers/githubGist.cjs +18 -0
  71. package/dist/favicons/platform/handlers/githubGist.js +18 -0
  72. package/dist/favicons/platform/handlers/lobsters.cjs +21 -0
  73. package/dist/favicons/platform/handlers/lobsters.js +21 -0
  74. package/dist/favicons/platform/handlers/mastodon.cjs +36 -0
  75. package/dist/favicons/platform/handlers/mastodon.js +34 -0
  76. package/dist/favicons/platform/handlers/reddit.cjs +41 -0
  77. package/dist/favicons/platform/handlers/reddit.js +41 -0
  78. package/dist/favicons/platform/handlers/sourceforge.cjs +21 -0
  79. package/dist/favicons/platform/handlers/sourceforge.js +21 -0
  80. package/dist/favicons/platform/handlers/tumblr.cjs +16 -0
  81. package/dist/favicons/platform/handlers/tumblr.js +16 -0
  82. package/dist/favicons/types.d.cts +4 -0
  83. package/dist/favicons/types.d.ts +4 -0
  84. package/dist/favicons.cjs +12 -0
  85. package/dist/favicons.d.cts +4 -0
  86. package/dist/favicons.d.ts +4 -0
  87. package/dist/favicons.js +3 -0
  88. package/dist/feeds/defaults.cjs +55 -25
  89. package/dist/feeds/defaults.js +40 -10
  90. package/dist/feeds/extractors.cjs +1 -3
  91. package/dist/feeds/extractors.js +1 -3
  92. package/dist/feeds/index.cjs +6 -8
  93. package/dist/feeds/index.d.cts +1 -1
  94. package/dist/feeds/index.d.ts +1 -1
  95. package/dist/feeds/index.js +1 -3
  96. package/dist/feeds/platform/handlers/behance.cjs +2 -4
  97. package/dist/feeds/platform/handlers/behance.js +1 -3
  98. package/dist/feeds/platform/handlers/blogspot.cjs +7 -6
  99. package/dist/feeds/platform/handlers/blogspot.js +6 -5
  100. package/dist/feeds/platform/handlers/bluesky.cjs +3 -5
  101. package/dist/feeds/platform/handlers/bluesky.js +2 -4
  102. package/dist/feeds/platform/handlers/codeberg.cjs +69 -0
  103. package/dist/feeds/platform/handlers/codeberg.js +67 -0
  104. package/dist/feeds/platform/handlers/csdn.cjs +19 -0
  105. package/dist/feeds/platform/handlers/csdn.js +19 -0
  106. package/dist/feeds/platform/handlers/dailymotion.cjs +2 -4
  107. package/dist/feeds/platform/handlers/dailymotion.js +1 -3
  108. package/dist/feeds/platform/handlers/deviantart.cjs +4 -4
  109. package/dist/feeds/platform/handlers/deviantart.js +1 -3
  110. package/dist/feeds/platform/handlers/devto.cjs +2 -4
  111. package/dist/feeds/platform/handlers/devto.js +1 -3
  112. package/dist/feeds/platform/handlers/douban.cjs +54 -0
  113. package/dist/feeds/platform/handlers/douban.js +54 -0
  114. package/dist/feeds/platform/handlers/github.cjs +5 -4
  115. package/dist/feeds/platform/handlers/github.js +2 -3
  116. package/dist/feeds/platform/handlers/githubGist.cjs +4 -4
  117. package/dist/feeds/platform/handlers/githubGist.js +1 -3
  118. package/dist/feeds/platform/handlers/gitlab.cjs +2 -4
  119. package/dist/feeds/platform/handlers/gitlab.js +1 -3
  120. package/dist/feeds/platform/handlers/goodreads.cjs +39 -0
  121. package/dist/feeds/platform/handlers/goodreads.js +39 -0
  122. package/dist/feeds/platform/handlers/hashnode.cjs +16 -0
  123. package/dist/feeds/platform/handlers/hashnode.js +16 -0
  124. package/dist/feeds/platform/handlers/hatenablog.cjs +53 -0
  125. package/dist/feeds/platform/handlers/hatenablog.js +53 -0
  126. package/dist/feeds/platform/handlers/itchio.cjs +88 -0
  127. package/dist/feeds/platform/handlers/itchio.js +88 -0
  128. package/dist/feeds/platform/handlers/kickstarter.cjs +2 -4
  129. package/dist/feeds/platform/handlers/kickstarter.js +1 -3
  130. package/dist/feeds/platform/handlers/letterboxd.cjs +42 -0
  131. package/dist/feeds/platform/handlers/letterboxd.js +42 -0
  132. package/dist/feeds/platform/handlers/lobsters.cjs +3 -4
  133. package/dist/feeds/platform/handlers/lobsters.js +1 -3
  134. package/dist/feeds/platform/handlers/mastodon.cjs +40 -0
  135. package/dist/feeds/platform/handlers/mastodon.js +40 -0
  136. package/dist/feeds/platform/handlers/medium.cjs +2 -4
  137. package/dist/feeds/platform/handlers/medium.js +1 -3
  138. package/dist/feeds/platform/handlers/paragraph.cjs +21 -0
  139. package/dist/feeds/platform/handlers/paragraph.js +21 -0
  140. package/dist/feeds/platform/handlers/pinterest.cjs +2 -15
  141. package/dist/feeds/platform/handlers/pinterest.js +1 -14
  142. package/dist/feeds/platform/handlers/producthunt.cjs +2 -4
  143. package/dist/feeds/platform/handlers/producthunt.js +1 -3
  144. package/dist/feeds/platform/handlers/reddit.cjs +3 -4
  145. package/dist/feeds/platform/handlers/reddit.js +1 -3
  146. package/dist/feeds/platform/handlers/soundcloud.cjs +2 -4
  147. package/dist/feeds/platform/handlers/soundcloud.js +1 -3
  148. package/dist/feeds/platform/handlers/sourceforge.cjs +20 -0
  149. package/dist/feeds/platform/handlers/sourceforge.js +19 -0
  150. package/dist/feeds/platform/handlers/stackExchange.cjs +37 -0
  151. package/dist/feeds/platform/handlers/stackExchange.js +37 -0
  152. package/dist/feeds/platform/handlers/steam.cjs +26 -0
  153. package/dist/feeds/platform/handlers/steam.js +26 -0
  154. package/dist/feeds/platform/handlers/substack.cjs +2 -4
  155. package/dist/feeds/platform/handlers/substack.js +1 -3
  156. package/dist/feeds/platform/handlers/tumblr.cjs +5 -5
  157. package/dist/feeds/platform/handlers/tumblr.js +3 -4
  158. package/dist/feeds/platform/handlers/v2ex.cjs +33 -0
  159. package/dist/feeds/platform/handlers/v2ex.js +33 -0
  160. package/dist/feeds/platform/handlers/vimeo.cjs +68 -0
  161. package/dist/feeds/platform/handlers/vimeo.js +68 -0
  162. package/dist/feeds/platform/handlers/wordpress.cjs +5 -7
  163. package/dist/feeds/platform/handlers/wordpress.js +4 -6
  164. package/dist/feeds/platform/handlers/wpengine.cjs +4 -7
  165. package/dist/feeds/platform/handlers/wpengine.js +2 -4
  166. package/dist/feeds/platform/handlers/ximalaya.cjs +19 -0
  167. package/dist/feeds/platform/handlers/ximalaya.js +19 -0
  168. package/dist/feeds/platform/handlers/youtube.cjs +19 -8
  169. package/dist/feeds/platform/handlers/youtube.js +18 -7
  170. package/dist/feeds.cjs +4 -5
  171. package/dist/feeds.js +1 -2
  172. package/dist/hubs/discover/index.cjs +7 -9
  173. package/dist/hubs/discover/index.js +1 -3
  174. package/dist/hubs/discover/utils.cjs +1 -3
  175. package/dist/hubs/discover/utils.js +1 -2
  176. package/dist/hubs/feed/index.cjs +1 -3
  177. package/dist/hubs/feed/index.js +1 -3
  178. package/dist/hubs/headers/index.cjs +3 -5
  179. package/dist/hubs/headers/index.js +1 -3
  180. package/dist/hubs/html/index.cjs +3 -5
  181. package/dist/hubs/html/index.js +1 -3
  182. package/dist/hubs.js +1 -1
  183. package/dist/index.cjs +8 -7
  184. package/dist/index.d.cts +3 -2
  185. package/dist/index.d.ts +3 -2
  186. package/dist/index.js +2 -2
  187. package/dist/methods.cjs +13 -10
  188. package/dist/methods.d.cts +3 -1
  189. package/dist/methods.d.ts +3 -1
  190. package/dist/methods.js +3 -2
  191. package/dist/utils.cjs +3 -4
  192. package/dist/utils.js +1 -2
  193. package/package.json +15 -5
@@ -1,5 +1,4 @@
1
1
  import { composeHint, isSubdomainOf } from "../../../common/utils.js";
2
-
3
2
  //#region src/feeds/platform/handlers/wordpress.ts
4
3
  const categoryPathRegex = /^\/category\/([^/]+)/;
5
4
  const tagPathRegex = /^\/tag\/([^/]+)/;
@@ -13,17 +12,17 @@ const wordpressHandler = {
13
12
  const uris = [];
14
13
  const categoryMatch = pathname.match(categoryPathRegex);
15
14
  if (categoryMatch?.[1]) uris.push({
16
- uri: `${origin}/category/${categoryMatch[1]}/feed/`,
15
+ uri: [`${origin}/category/${categoryMatch[1]}/feed/`, `${origin}/category/${categoryMatch[1]}/?feed=rss`],
17
16
  hint: composeHint("wordpress:category")
18
17
  });
19
18
  const tagMatch = pathname.match(tagPathRegex);
20
19
  if (tagMatch?.[1]) uris.push({
21
- uri: `${origin}/tag/${tagMatch[1]}/feed/`,
20
+ uri: [`${origin}/tag/${tagMatch[1]}/feed/`, `${origin}/tag/${tagMatch[1]}/?feed=rss`],
22
21
  hint: composeHint("wordpress:tag")
23
22
  });
24
23
  const authorMatch = pathname.match(authorPathRegex);
25
24
  if (authorMatch?.[1]) uris.push({
26
- uri: `${origin}/author/${authorMatch[1]}/feed/`,
25
+ uri: [`${origin}/author/${authorMatch[1]}/feed/`, `${origin}/author/${authorMatch[1]}/?feed=rss`],
27
26
  hint: composeHint("wordpress:author")
28
27
  });
29
28
  uris.push({
@@ -61,6 +60,5 @@ const wordpressHandler = {
61
60
  return uris;
62
61
  }
63
62
  };
64
-
65
63
  //#endregion
66
- export { wordpressHandler };
64
+ export { wordpressHandler };
@@ -1,13 +1,10 @@
1
- const require_utils = require('../../../common/utils.cjs');
2
- const require_wordpress = require('./wordpress.cjs');
3
-
1
+ const require_utils = require("../../../common/utils.cjs");
4
2
  //#region src/feeds/platform/handlers/wpengine.ts
5
3
  const wpengineHandler = {
6
4
  match: (url) => {
7
- return require_utils.isSubdomainOf(url, "wpenginepowered.com") || require_utils.isSubdomainOf(url, "wpengine.com");
5
+ return require_utils.isSubdomainOf(url, ["wpenginepowered.com", "wpengine.com"]);
8
6
  },
9
- resolve: require_wordpress.wordpressHandler.resolve
7
+ resolve: require("./wordpress.cjs").wordpressHandler.resolve
10
8
  };
11
-
12
9
  //#endregion
13
- exports.wpengineHandler = wpengineHandler;
10
+ exports.wpengineHandler = wpengineHandler;
@@ -1,13 +1,11 @@
1
1
  import { isSubdomainOf } from "../../../common/utils.js";
2
2
  import { wordpressHandler } from "./wordpress.js";
3
-
4
3
  //#region src/feeds/platform/handlers/wpengine.ts
5
4
  const wpengineHandler = {
6
5
  match: (url) => {
7
- return isSubdomainOf(url, "wpenginepowered.com") || isSubdomainOf(url, "wpengine.com");
6
+ return isSubdomainOf(url, ["wpenginepowered.com", "wpengine.com"]);
8
7
  },
9
8
  resolve: wordpressHandler.resolve
10
9
  };
11
-
12
10
  //#endregion
13
- export { wpengineHandler };
11
+ export { wpengineHandler };
@@ -0,0 +1,19 @@
1
+ const require_utils = require("../../../common/utils.cjs");
2
+ //#region src/feeds/platform/handlers/ximalaya.ts
3
+ const hosts = ["www.ximalaya.com", "ximalaya.com"];
4
+ const ximalayaHandler = {
5
+ match: (url) => {
6
+ return require_utils.isHostOf(url, hosts);
7
+ },
8
+ resolve: (url) => {
9
+ const { pathname } = new URL(url);
10
+ const id = pathname.match(/^\/album\/(\d+)/)?.[1];
11
+ if (!id) return [];
12
+ return [{
13
+ uri: `https://www.ximalaya.com/album/${id}.xml`,
14
+ hint: require_utils.composeHint("ximalaya:album")
15
+ }];
16
+ }
17
+ };
18
+ //#endregion
19
+ exports.ximalayaHandler = ximalayaHandler;
@@ -0,0 +1,19 @@
1
+ import { composeHint, isHostOf } from "../../../common/utils.js";
2
+ //#region src/feeds/platform/handlers/ximalaya.ts
3
+ const hosts = ["www.ximalaya.com", "ximalaya.com"];
4
+ const ximalayaHandler = {
5
+ match: (url) => {
6
+ return isHostOf(url, hosts);
7
+ },
8
+ resolve: (url) => {
9
+ const { pathname } = new URL(url);
10
+ const id = pathname.match(/^\/album\/(\d+)/)?.[1];
11
+ if (!id) return [];
12
+ return [{
13
+ uri: `https://www.ximalaya.com/album/${id}.xml`,
14
+ hint: composeHint("ximalaya:album")
15
+ }];
16
+ }
17
+ };
18
+ //#endregion
19
+ export { ximalayaHandler };
@@ -1,5 +1,4 @@
1
- const require_utils = require('../../../common/utils.cjs');
2
-
1
+ const require_utils = require("../../../common/utils.cjs");
3
2
  //#region src/feeds/platform/handlers/youtube.ts
4
3
  const hosts = [
5
4
  "youtube.com",
@@ -16,25 +15,38 @@ const customPathRegex = /^\/c\/([^/]+)/;
16
15
  const extractChannelIdFromContent = (content) => {
17
16
  return content.match(channelIdRegex)?.[1];
18
17
  };
18
+ const getAllUploadsPlaylistId = (channelId) => {
19
+ return channelId.replace(/^UC/, "UU");
20
+ };
19
21
  const getVideosOnlyPlaylistId = (channelId) => {
20
22
  return channelId.replace(/^UC/, "UULF");
21
23
  };
22
24
  const getShortsOnlyPlaylistId = (channelId) => {
23
25
  return channelId.replace(/^UC/, "UUSH");
24
26
  };
27
+ const getLiveStreamsOnlyPlaylistId = (channelId) => {
28
+ return channelId.replace(/^UC/, "UULV");
29
+ };
30
+ const feedUrl = (param, value) => {
31
+ return `https://www.youtube.com/feeds/videos.xml?${param}=${value}`;
32
+ };
25
33
  const pushChannelUris = (uris, channelId) => {
26
34
  uris.push({
27
- uri: `https://www.youtube.com/feeds/videos.xml?channel_id=${channelId}`,
35
+ uri: [feedUrl("channel_id", channelId), feedUrl("playlist_id", getAllUploadsPlaylistId(channelId))],
28
36
  hint: require_utils.composeHint("youtube:all")
29
37
  });
30
38
  uris.push({
31
- uri: `https://www.youtube.com/feeds/videos.xml?playlist_id=${getVideosOnlyPlaylistId(channelId)}`,
39
+ uri: feedUrl("playlist_id", getVideosOnlyPlaylistId(channelId)),
32
40
  hint: require_utils.composeHint("youtube:videos")
33
41
  });
34
42
  uris.push({
35
- uri: `https://www.youtube.com/feeds/videos.xml?playlist_id=${getShortsOnlyPlaylistId(channelId)}`,
43
+ uri: feedUrl("playlist_id", getShortsOnlyPlaylistId(channelId)),
36
44
  hint: require_utils.composeHint("youtube:shorts")
37
45
  });
46
+ uris.push({
47
+ uri: feedUrl("playlist_id", getLiveStreamsOnlyPlaylistId(channelId)),
48
+ hint: require_utils.composeHint("youtube:live")
49
+ });
38
50
  };
39
51
  const youtubeHandler = {
40
52
  match: (url) => {
@@ -50,7 +62,7 @@ const youtubeHandler = {
50
62
  }
51
63
  const playlistId = parsedUrl.searchParams.get("list");
52
64
  if (playlistId) uris.push({
53
- uri: `https://www.youtube.com/feeds/videos.xml?playlist_id=${playlistId}`,
65
+ uri: feedUrl("playlist_id", playlistId),
54
66
  hint: require_utils.composeHint("youtube:playlist")
55
67
  });
56
68
  if (uris.length === 0 && content) {
@@ -62,6 +74,5 @@ const youtubeHandler = {
62
74
  return uris;
63
75
  }
64
76
  };
65
-
66
77
  //#endregion
67
- exports.youtubeHandler = youtubeHandler;
78
+ exports.youtubeHandler = youtubeHandler;
@@ -1,5 +1,4 @@
1
1
  import { composeHint, isHostOf } from "../../../common/utils.js";
2
-
3
2
  //#region src/feeds/platform/handlers/youtube.ts
4
3
  const hosts = [
5
4
  "youtube.com",
@@ -16,25 +15,38 @@ const customPathRegex = /^\/c\/([^/]+)/;
16
15
  const extractChannelIdFromContent = (content) => {
17
16
  return content.match(channelIdRegex)?.[1];
18
17
  };
18
+ const getAllUploadsPlaylistId = (channelId) => {
19
+ return channelId.replace(/^UC/, "UU");
20
+ };
19
21
  const getVideosOnlyPlaylistId = (channelId) => {
20
22
  return channelId.replace(/^UC/, "UULF");
21
23
  };
22
24
  const getShortsOnlyPlaylistId = (channelId) => {
23
25
  return channelId.replace(/^UC/, "UUSH");
24
26
  };
27
+ const getLiveStreamsOnlyPlaylistId = (channelId) => {
28
+ return channelId.replace(/^UC/, "UULV");
29
+ };
30
+ const feedUrl = (param, value) => {
31
+ return `https://www.youtube.com/feeds/videos.xml?${param}=${value}`;
32
+ };
25
33
  const pushChannelUris = (uris, channelId) => {
26
34
  uris.push({
27
- uri: `https://www.youtube.com/feeds/videos.xml?channel_id=${channelId}`,
35
+ uri: [feedUrl("channel_id", channelId), feedUrl("playlist_id", getAllUploadsPlaylistId(channelId))],
28
36
  hint: composeHint("youtube:all")
29
37
  });
30
38
  uris.push({
31
- uri: `https://www.youtube.com/feeds/videos.xml?playlist_id=${getVideosOnlyPlaylistId(channelId)}`,
39
+ uri: feedUrl("playlist_id", getVideosOnlyPlaylistId(channelId)),
32
40
  hint: composeHint("youtube:videos")
33
41
  });
34
42
  uris.push({
35
- uri: `https://www.youtube.com/feeds/videos.xml?playlist_id=${getShortsOnlyPlaylistId(channelId)}`,
43
+ uri: feedUrl("playlist_id", getShortsOnlyPlaylistId(channelId)),
36
44
  hint: composeHint("youtube:shorts")
37
45
  });
46
+ uris.push({
47
+ uri: feedUrl("playlist_id", getLiveStreamsOnlyPlaylistId(channelId)),
48
+ hint: composeHint("youtube:live")
49
+ });
38
50
  };
39
51
  const youtubeHandler = {
40
52
  match: (url) => {
@@ -50,7 +62,7 @@ const youtubeHandler = {
50
62
  }
51
63
  const playlistId = parsedUrl.searchParams.get("list");
52
64
  if (playlistId) uris.push({
53
- uri: `https://www.youtube.com/feeds/videos.xml?playlist_id=${playlistId}`,
65
+ uri: feedUrl("playlist_id", playlistId),
54
66
  hint: composeHint("youtube:playlist")
55
67
  });
56
68
  if (uris.length === 0 && content) {
@@ -62,6 +74,5 @@ const youtubeHandler = {
62
74
  return uris;
63
75
  }
64
76
  };
65
-
66
77
  //#endregion
67
- export { youtubeHandler };
78
+ export { youtubeHandler };
package/dist/feeds.cjs CHANGED
@@ -1,7 +1,6 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_defaults = require('./feeds/defaults.cjs');
3
- const require_extractors = require('./feeds/extractors.cjs');
4
-
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_defaults = require("./feeds/defaults.cjs");
3
+ const require_extractors = require("./feeds/extractors.cjs");
5
4
  exports.anchorLabels = require_defaults.anchorLabels;
6
5
  exports.defaultExtractor = require_extractors.defaultExtractor;
7
6
  exports.defaultGuessOptions = require_defaults.defaultGuessOptions;
@@ -13,4 +12,4 @@ exports.linkSelectors = require_defaults.linkSelectors;
13
12
  exports.mimeTypes = require_defaults.mimeTypes;
14
13
  exports.urisBalanced = require_defaults.urisBalanced;
15
14
  exports.urisComprehensive = require_defaults.urisComprehensive;
16
- exports.urisMinimal = require_defaults.urisMinimal;
15
+ exports.urisMinimal = require_defaults.urisMinimal;
package/dist/feeds.js CHANGED
@@ -1,4 +1,3 @@
1
1
  import { anchorLabels, defaultGuessOptions, defaultHeadersOptions, defaultHtmlOptions, defaultPlatformOptions, ignoredUris, linkSelectors, mimeTypes, urisBalanced, urisComprehensive, urisMinimal } from "./feeds/defaults.js";
2
2
  import { defaultExtractor } from "./feeds/extractors.js";
3
-
4
- export { anchorLabels, defaultExtractor, defaultGuessOptions, defaultHeadersOptions, defaultHtmlOptions, defaultPlatformOptions, ignoredUris, linkSelectors, mimeTypes, urisBalanced, urisComprehensive, urisMinimal };
3
+ export { anchorLabels, defaultExtractor, defaultGuessOptions, defaultHeadersOptions, defaultHtmlOptions, defaultPlatformOptions, ignoredUris, linkSelectors, mimeTypes, urisBalanced, urisComprehensive, urisMinimal };
@@ -1,10 +1,9 @@
1
- const require_utils = require('../../common/utils.cjs');
2
- const require_utils$1 = require('../../common/discover/utils.cjs');
3
- const require_index = require('../feed/index.cjs');
4
- const require_index$1 = require('../headers/index.cjs');
5
- const require_index$2 = require('../html/index.cjs');
6
- const require_utils$2 = require('./utils.cjs');
7
-
1
+ const require_utils = require("../../common/utils.cjs");
2
+ const require_utils$1 = require("../../common/discover/utils.cjs");
3
+ const require_index = require("../feed/index.cjs");
4
+ const require_index$1 = require("../headers/index.cjs");
5
+ const require_index$2 = require("../html/index.cjs");
6
+ const require_utils$2 = require("./utils.cjs");
8
7
  //#region src/hubs/discover/index.ts
9
8
  const discoverHubs = async (input, options = {}) => {
10
9
  const { methods = [
@@ -28,6 +27,5 @@ const discoverHubs = async (input, options = {}) => {
28
27
  }
29
28
  return results;
30
29
  };
31
-
32
30
  //#endregion
33
- exports.discoverHubs = discoverHubs;
31
+ exports.discoverHubs = discoverHubs;
@@ -4,7 +4,6 @@ import { discoverHubsFromFeed } from "../feed/index.js";
4
4
  import { discoverHubsFromHeaders } from "../headers/index.js";
5
5
  import { discoverHubsFromHtml } from "../html/index.js";
6
6
  import { normalizeInput } from "./utils.js";
7
-
8
7
  //#region src/hubs/discover/index.ts
9
8
  const discoverHubs = async (input, options = {}) => {
10
9
  const { methods = [
@@ -28,6 +27,5 @@ const discoverHubs = async (input, options = {}) => {
28
27
  }
29
28
  return results;
30
29
  };
31
-
32
30
  //#endregion
33
- export { discoverHubs };
31
+ export { discoverHubs };
@@ -1,4 +1,3 @@
1
-
2
1
  //#region src/hubs/discover/utils.ts
3
2
  const normalizeInput = async (input, fetchFn) => {
4
3
  if (typeof input === "string") {
@@ -15,6 +14,5 @@ const normalizeInput = async (input, fetchFn) => {
15
14
  headers: input.headers
16
15
  };
17
16
  };
18
-
19
17
  //#endregion
20
- exports.normalizeInput = normalizeInput;
18
+ exports.normalizeInput = normalizeInput;
@@ -14,6 +14,5 @@ const normalizeInput = async (input, fetchFn) => {
14
14
  headers: input.headers
15
15
  };
16
16
  };
17
-
18
17
  //#endregion
19
- export { normalizeInput };
18
+ export { normalizeInput };
@@ -1,5 +1,4 @@
1
1
  let feedsmith = require("feedsmith");
2
-
3
2
  //#region src/hubs/feed/index.ts
4
3
  const getLinksWithRel = (links, rel) => {
5
4
  return links?.filter((link) => link.rel === rel && link.href).map((link) => link.href) ?? [];
@@ -27,6 +26,5 @@ const discoverHubsFromFeed = (content, baseUrl) => {
27
26
  } catch {}
28
27
  return [];
29
28
  };
30
-
31
29
  //#endregion
32
- exports.discoverHubsFromFeed = discoverHubsFromFeed;
30
+ exports.discoverHubsFromFeed = discoverHubsFromFeed;
@@ -1,5 +1,4 @@
1
1
  import { parseFeed } from "feedsmith";
2
-
3
2
  //#region src/hubs/feed/index.ts
4
3
  const getLinksWithRel = (links, rel) => {
5
4
  return links?.filter((link) => link.rel === rel && link.href).map((link) => link.href) ?? [];
@@ -27,6 +26,5 @@ const discoverHubsFromFeed = (content, baseUrl) => {
27
26
  } catch {}
28
27
  return [];
29
28
  };
30
-
31
29
  //#endregion
32
- export { discoverHubsFromFeed };
30
+ export { discoverHubsFromFeed };
@@ -1,6 +1,5 @@
1
- const require_utils = require('../../common/utils.cjs');
2
- const require_index = require('../../common/uris/headers/index.cjs');
3
-
1
+ const require_utils = require("../../common/utils.cjs");
2
+ const require_index = require("../../common/uris/headers/index.cjs");
4
3
  //#region src/hubs/headers/index.ts
5
4
  const hubSelector = [{ rel: "hub" }];
6
5
  const selfSelector = [{ rel: "self" }];
@@ -14,6 +13,5 @@ const discoverHubsFromHeaders = (headers, baseUrl, normalizeUrlFn = require_util
14
13
  topic
15
14
  }));
16
15
  };
17
-
18
16
  //#endregion
19
- exports.discoverHubsFromHeaders = discoverHubsFromHeaders;
17
+ exports.discoverHubsFromHeaders = discoverHubsFromHeaders;
@@ -1,6 +1,5 @@
1
1
  import { normalizeUrl } from "../../common/utils.js";
2
2
  import { discoverUrisFromHeaders } from "../../common/uris/headers/index.js";
3
-
4
3
  //#region src/hubs/headers/index.ts
5
4
  const hubSelector = [{ rel: "hub" }];
6
5
  const selfSelector = [{ rel: "self" }];
@@ -14,6 +13,5 @@ const discoverHubsFromHeaders = (headers, baseUrl, normalizeUrlFn = normalizeUrl
14
13
  topic
15
14
  }));
16
15
  };
17
-
18
16
  //#endregion
19
- export { discoverHubsFromHeaders };
17
+ export { discoverHubsFromHeaders };
@@ -1,6 +1,5 @@
1
- const require_utils = require('../../common/utils.cjs');
2
- const require_index = require('../../common/uris/html/index.cjs');
3
-
1
+ const require_utils = require("../../common/utils.cjs");
2
+ const require_index = require("../../common/uris/html/index.cjs");
4
3
  //#region src/hubs/html/index.ts
5
4
  const hubSelector = [{ rel: "hub" }];
6
5
  const selfSelector = [{ rel: "self" }];
@@ -25,6 +24,5 @@ const discoverHubsFromHtml = (content, baseUrl, normalizeUrlFn = require_utils.n
25
24
  topic
26
25
  }));
27
26
  };
28
-
29
27
  //#endregion
30
- exports.discoverHubsFromHtml = discoverHubsFromHtml;
28
+ exports.discoverHubsFromHtml = discoverHubsFromHtml;
@@ -1,6 +1,5 @@
1
1
  import { normalizeUrl } from "../../common/utils.js";
2
2
  import { discoverUrisFromHtml } from "../../common/uris/html/index.js";
3
-
4
3
  //#region src/hubs/html/index.ts
5
4
  const hubSelector = [{ rel: "hub" }];
6
5
  const selfSelector = [{ rel: "self" }];
@@ -25,6 +24,5 @@ const discoverHubsFromHtml = (content, baseUrl, normalizeUrlFn = normalizeUrl) =
25
24
  topic
26
25
  }));
27
26
  };
28
-
29
27
  //#endregion
30
- export { discoverHubsFromHtml };
28
+ export { discoverHubsFromHtml };
package/dist/hubs.js CHANGED
@@ -1 +1 @@
1
- export { };
1
+ export {};
package/dist/index.cjs CHANGED
@@ -1,8 +1,9 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_index = require('./blogrolls/index.cjs');
3
- const require_index$1 = require('./feeds/index.cjs');
4
- const require_index$2 = require('./hubs/discover/index.cjs');
5
-
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_index = require("./blogrolls/index.cjs");
3
+ const require_index$1 = require("./favicons/index.cjs");
4
+ const require_index$2 = require("./feeds/index.cjs");
5
+ const require_index$3 = require("./hubs/discover/index.cjs");
6
6
  exports.discoverBlogrolls = require_index.discoverBlogrolls;
7
- exports.discoverFeeds = require_index$1.discoverFeeds;
8
- exports.discoverHubs = require_index$2.discoverHubs;
7
+ exports.discoverFavicons = require_index$1.discoverFavicons;
8
+ exports.discoverFeeds = require_index$2.discoverFeeds;
9
+ exports.discoverHubs = require_index$3.discoverHubs;
package/dist/index.d.cts CHANGED
@@ -1,5 +1,6 @@
1
- import { DiscoverExtractFn, DiscoverFetchFn, DiscoverFetchFnOptions, DiscoverFetchFnResponse, DiscoverInput, DiscoverInputObject, DiscoverMethodsConfig, DiscoverNormalizeUrlFn, DiscoverOnProgressFn, DiscoverOptions, DiscoverProgress, DiscoverResult, DiscoverUriEntry, DiscoverUriHint, UriEntry } from "./common/types.cjs";
1
+ import { DiscoverExtractFn, DiscoverFetchFn, DiscoverFetchFnOptions, DiscoverFetchFnResponse, DiscoverInput, DiscoverInputObject, DiscoverMethod, DiscoverMethodsConfig, DiscoverNormalizeUrlFn, DiscoverOnProgressFn, DiscoverOptions, DiscoverProgress, DiscoverResult, DiscoverUriEntry, DiscoverUriHint, UriEntry } from "./common/types.cjs";
2
2
  import { discoverBlogrolls } from "./blogrolls/index.cjs";
3
+ import { discoverFavicons } from "./favicons/index.cjs";
3
4
  import { discoverFeeds } from "./feeds/index.cjs";
4
5
  import { discoverHubs } from "./hubs/discover/index.cjs";
5
- export { type DiscoverExtractFn, type DiscoverFetchFn, type DiscoverFetchFnOptions, type DiscoverFetchFnResponse, type DiscoverInput, type DiscoverInputObject, type DiscoverMethodsConfig, type DiscoverNormalizeUrlFn, type DiscoverOnProgressFn, type DiscoverOptions, type DiscoverProgress, type DiscoverResult, type DiscoverUriEntry, type DiscoverUriHint, type UriEntry, discoverBlogrolls, discoverFeeds, discoverHubs };
6
+ export { type DiscoverExtractFn, type DiscoverFetchFn, type DiscoverFetchFnOptions, type DiscoverFetchFnResponse, type DiscoverInput, type DiscoverInputObject, type DiscoverMethod, type DiscoverMethodsConfig, type DiscoverNormalizeUrlFn, type DiscoverOnProgressFn, type DiscoverOptions, type DiscoverProgress, type DiscoverResult, type DiscoverUriEntry, type DiscoverUriHint, type UriEntry, discoverBlogrolls, discoverFavicons, discoverFeeds, discoverHubs };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import { DiscoverExtractFn, DiscoverFetchFn, DiscoverFetchFnOptions, DiscoverFetchFnResponse, DiscoverInput, DiscoverInputObject, DiscoverMethodsConfig, DiscoverNormalizeUrlFn, DiscoverOnProgressFn, DiscoverOptions, DiscoverProgress, DiscoverResult, DiscoverUriEntry, DiscoverUriHint, UriEntry } from "./common/types.js";
1
+ import { DiscoverExtractFn, DiscoverFetchFn, DiscoverFetchFnOptions, DiscoverFetchFnResponse, DiscoverInput, DiscoverInputObject, DiscoverMethod, DiscoverMethodsConfig, DiscoverNormalizeUrlFn, DiscoverOnProgressFn, DiscoverOptions, DiscoverProgress, DiscoverResult, DiscoverUriEntry, DiscoverUriHint, UriEntry } from "./common/types.js";
2
2
  import { discoverBlogrolls } from "./blogrolls/index.js";
3
+ import { discoverFavicons } from "./favicons/index.js";
3
4
  import { discoverFeeds } from "./feeds/index.js";
4
5
  import { discoverHubs } from "./hubs/discover/index.js";
5
- export { type DiscoverExtractFn, type DiscoverFetchFn, type DiscoverFetchFnOptions, type DiscoverFetchFnResponse, type DiscoverInput, type DiscoverInputObject, type DiscoverMethodsConfig, type DiscoverNormalizeUrlFn, type DiscoverOnProgressFn, type DiscoverOptions, type DiscoverProgress, type DiscoverResult, type DiscoverUriEntry, type DiscoverUriHint, type UriEntry, discoverBlogrolls, discoverFeeds, discoverHubs };
6
+ export { type DiscoverExtractFn, type DiscoverFetchFn, type DiscoverFetchFnOptions, type DiscoverFetchFnResponse, type DiscoverInput, type DiscoverInputObject, type DiscoverMethod, type DiscoverMethodsConfig, type DiscoverNormalizeUrlFn, type DiscoverOnProgressFn, type DiscoverOptions, type DiscoverProgress, type DiscoverResult, type DiscoverUriEntry, type DiscoverUriHint, type UriEntry, discoverBlogrolls, discoverFavicons, discoverFeeds, discoverHubs };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { discoverBlogrolls } from "./blogrolls/index.js";
2
+ import { discoverFavicons } from "./favicons/index.js";
2
3
  import { discoverFeeds } from "./feeds/index.js";
3
4
  import { discoverHubs } from "./hubs/discover/index.js";
4
-
5
- export { discoverBlogrolls, discoverFeeds, discoverHubs };
5
+ export { discoverBlogrolls, discoverFavicons, discoverFeeds, discoverHubs };
package/dist/methods.cjs CHANGED
@@ -1,12 +1,15 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_utils = require('./common/uris/guess/utils.cjs');
3
- const require_index = require('./common/uris/guess/index.cjs');
4
- const require_index$1 = require('./common/uris/headers/index.cjs');
5
- const require_index$2 = require('./common/uris/html/index.cjs');
6
-
7
- exports.discoverUrisFromGuess = require_index.discoverUrisFromGuess;
8
- exports.discoverUrisFromHeaders = require_index$1.discoverUrisFromHeaders;
9
- exports.discoverUrisFromHtml = require_index$2.discoverUrisFromHtml;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_index = require("./common/uris/feed/index.cjs");
3
+ const require_utils = require("./common/uris/guess/utils.cjs");
4
+ const require_index$1 = require("./common/uris/guess/index.cjs");
5
+ const require_index$2 = require("./common/uris/headers/index.cjs");
6
+ const require_index$3 = require("./common/uris/html/index.cjs");
7
+ const require_index$4 = require("./common/uris/platform/index.cjs");
8
+ exports.discoverUrisFromFeed = require_index.discoverUrisFromFeed;
9
+ exports.discoverUrisFromGuess = require_index$1.discoverUrisFromGuess;
10
+ exports.discoverUrisFromHeaders = require_index$2.discoverUrisFromHeaders;
11
+ exports.discoverUrisFromHtml = require_index$3.discoverUrisFromHtml;
12
+ exports.discoverUrisFromPlatform = require_index$4.discoverUrisFromPlatform;
10
13
  exports.generateUrlCombinations = require_utils.generateUrlCombinations;
11
14
  exports.getSubdomainVariants = require_utils.getSubdomainVariants;
12
- exports.getWwwCounterpart = require_utils.getWwwCounterpart;
15
+ exports.getWwwCounterpart = require_utils.getWwwCounterpart;
@@ -1,5 +1,7 @@
1
+ import { discoverUrisFromFeed } from "./common/uris/feed/index.cjs";
1
2
  import { discoverUrisFromGuess } from "./common/uris/guess/index.cjs";
2
3
  import { generateUrlCombinations, getSubdomainVariants, getWwwCounterpart } from "./common/uris/guess/utils.cjs";
3
4
  import { discoverUrisFromHeaders } from "./common/uris/headers/index.cjs";
4
5
  import { discoverUrisFromHtml } from "./common/uris/html/index.cjs";
5
- export { discoverUrisFromGuess, discoverUrisFromHeaders, discoverUrisFromHtml, generateUrlCombinations, getSubdomainVariants, getWwwCounterpart };
6
+ import { discoverUrisFromPlatform } from "./common/uris/platform/index.cjs";
7
+ export { discoverUrisFromFeed, discoverUrisFromGuess, discoverUrisFromHeaders, discoverUrisFromHtml, discoverUrisFromPlatform, generateUrlCombinations, getSubdomainVariants, getWwwCounterpart };
package/dist/methods.d.ts CHANGED
@@ -1,5 +1,7 @@
1
+ import { discoverUrisFromFeed } from "./common/uris/feed/index.js";
1
2
  import { discoverUrisFromGuess } from "./common/uris/guess/index.js";
2
3
  import { generateUrlCombinations, getSubdomainVariants, getWwwCounterpart } from "./common/uris/guess/utils.js";
3
4
  import { discoverUrisFromHeaders } from "./common/uris/headers/index.js";
4
5
  import { discoverUrisFromHtml } from "./common/uris/html/index.js";
5
- export { discoverUrisFromGuess, discoverUrisFromHeaders, discoverUrisFromHtml, generateUrlCombinations, getSubdomainVariants, getWwwCounterpart };
6
+ import { discoverUrisFromPlatform } from "./common/uris/platform/index.js";
7
+ export { discoverUrisFromFeed, discoverUrisFromGuess, discoverUrisFromHeaders, discoverUrisFromHtml, discoverUrisFromPlatform, generateUrlCombinations, getSubdomainVariants, getWwwCounterpart };
package/dist/methods.js CHANGED
@@ -1,6 +1,7 @@
1
+ import { discoverUrisFromFeed } from "./common/uris/feed/index.js";
1
2
  import { generateUrlCombinations, getSubdomainVariants, getWwwCounterpart } from "./common/uris/guess/utils.js";
2
3
  import { discoverUrisFromGuess } from "./common/uris/guess/index.js";
3
4
  import { discoverUrisFromHeaders } from "./common/uris/headers/index.js";
4
5
  import { discoverUrisFromHtml } from "./common/uris/html/index.js";
5
-
6
- export { discoverUrisFromGuess, discoverUrisFromHeaders, discoverUrisFromHtml, generateUrlCombinations, getSubdomainVariants, getWwwCounterpart };
6
+ import { discoverUrisFromPlatform } from "./common/uris/platform/index.js";
7
+ export { discoverUrisFromFeed, discoverUrisFromGuess, discoverUrisFromHeaders, discoverUrisFromHtml, discoverUrisFromPlatform, generateUrlCombinations, getSubdomainVariants, getWwwCounterpart };
package/dist/utils.cjs CHANGED
@@ -1,9 +1,8 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_utils = require('./common/utils.cjs');
3
-
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_utils = require("./common/utils.cjs");
4
3
  exports.anyWordMatchesAnyOf = require_utils.anyWordMatchesAnyOf;
5
4
  exports.endsWithAnyOf = require_utils.endsWithAnyOf;
6
5
  exports.includesAnyOf = require_utils.includesAnyOf;
7
6
  exports.isAnyOf = require_utils.isAnyOf;
8
7
  exports.isHostOf = require_utils.isHostOf;
9
- exports.isSubdomainOf = require_utils.isSubdomainOf;
8
+ exports.isSubdomainOf = require_utils.isSubdomainOf;
package/dist/utils.js CHANGED
@@ -1,3 +1,2 @@
1
1
  import { anyWordMatchesAnyOf, endsWithAnyOf, includesAnyOf, isAnyOf, isHostOf, isSubdomainOf } from "./common/utils.js";
2
-
3
- export { anyWordMatchesAnyOf, endsWithAnyOf, includesAnyOf, isAnyOf, isHostOf, isSubdomainOf };
2
+ export { anyWordMatchesAnyOf, endsWithAnyOf, includesAnyOf, isAnyOf, isHostOf, isSubdomainOf };
package/package.json CHANGED
@@ -55,6 +55,16 @@
55
55
  "default": "./dist/blogrolls.cjs"
56
56
  }
57
57
  },
58
+ "./favicons": {
59
+ "import": {
60
+ "types": "./dist/favicons.d.ts",
61
+ "default": "./dist/favicons.js"
62
+ },
63
+ "require": {
64
+ "types": "./dist/favicons.d.cts",
65
+ "default": "./dist/favicons.cjs"
66
+ }
67
+ },
58
68
  "./hubs": {
59
69
  "import": {
60
70
  "types": "./dist/hubs.d.ts",
@@ -92,19 +102,19 @@
92
102
  ],
93
103
  "scripts": {
94
104
  "prepare": "lefthook install",
95
- "build": "tsdown src/exports/index.ts src/exports/feeds.ts src/exports/blogrolls.ts src/exports/hubs.ts src/exports/methods.ts src/exports/utils.ts --format cjs,esm --dts --clean --unbundle --no-fixed-extension",
105
+ "build": "tsdown src/exports/index.ts src/exports/feeds.ts src/exports/blogrolls.ts src/exports/favicons.ts src/exports/hubs.ts src/exports/methods.ts src/exports/utils.ts --format cjs,esm --dts --clean --unbundle --no-fixed-extension",
96
106
  "docs:dev": "vitepress dev docs",
97
107
  "docs:build": "vitepress build docs"
98
108
  },
99
109
  "dependencies": {
100
- "feedsmith": "^2.9.0",
110
+ "feedsmith": "^2.9.1",
101
111
  "htmlparser2": "^10.1.0"
102
112
  },
103
113
  "devDependencies": {
104
- "@types/bun": "^1.3.8",
114
+ "@types/bun": "^1.3.10",
105
115
  "kvalita": "1.10.0",
106
- "tsdown": "^0.20.3",
116
+ "tsdown": "^0.21.1",
107
117
  "vitepress": "^1.6.4"
108
118
  },
109
- "version": "1.5.0"
119
+ "version": "1.6.0"
110
120
  }