feedscout 1.9.0 → 2.0.0-beta.2

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 (180) hide show
  1. package/dist/common/discover/defaults.js +1 -3
  2. package/dist/common/discover/utils.d.ts +2 -3
  3. package/dist/common/uris/feed/types.d.ts +2 -2
  4. package/dist/feeds/extractors.js +2 -2
  5. package/dist/feeds/platform/handlers/discourse.js +2 -6
  6. package/dist/feeds/platform/handlers/libsyn.js +1 -1
  7. package/package.json +23 -62
  8. package/dist/blogrolls/defaults.cjs +0 -57
  9. package/dist/blogrolls/defaults.d.cts +0 -16
  10. package/dist/blogrolls/extractors.cjs +0 -21
  11. package/dist/blogrolls/extractors.d.cts +0 -7
  12. package/dist/blogrolls/index.cjs +0 -25
  13. package/dist/blogrolls/index.d.cts +0 -7
  14. package/dist/blogrolls/types.d.cts +0 -6
  15. package/dist/blogrolls.cjs +0 -12
  16. package/dist/blogrolls.d.cts +0 -4
  17. package/dist/common/discover/defaults.cjs +0 -46
  18. package/dist/common/discover/defaults.d.cts +0 -6
  19. package/dist/common/discover/index.cjs +0 -105
  20. package/dist/common/discover/utils.cjs +0 -101
  21. package/dist/common/discover/utils.d.cts +0 -6
  22. package/dist/common/locales.cjs +0 -348
  23. package/dist/common/types.cjs +0 -10
  24. package/dist/common/types.d.cts +0 -90
  25. package/dist/common/uris/feed/index.cjs +0 -12
  26. package/dist/common/uris/feed/index.d.cts +0 -6
  27. package/dist/common/uris/feed/types.d.cts +0 -9
  28. package/dist/common/uris/guess/index.cjs +0 -8
  29. package/dist/common/uris/guess/index.d.cts +0 -7
  30. package/dist/common/uris/guess/types.d.cts +0 -10
  31. package/dist/common/uris/guess/utils.cjs +0 -42
  32. package/dist/common/uris/guess/utils.d.cts +0 -8
  33. package/dist/common/uris/headers/index.cjs +0 -26
  34. package/dist/common/uris/headers/index.d.cts +0 -6
  35. package/dist/common/uris/headers/types.d.cts +0 -9
  36. package/dist/common/uris/html/handlers.cjs +0 -59
  37. package/dist/common/uris/html/index.cjs +0 -35
  38. package/dist/common/uris/html/index.d.cts +0 -6
  39. package/dist/common/uris/html/types.d.cts +0 -13
  40. package/dist/common/uris/index.cjs +0 -32
  41. package/dist/common/uris/platform/index.cjs +0 -10
  42. package/dist/common/uris/platform/index.d.cts +0 -7
  43. package/dist/common/uris/platform/types.d.cts +0 -13
  44. package/dist/common/utils.cjs +0 -98
  45. package/dist/common/utils.d.cts +0 -12
  46. package/dist/favicons/defaults.cjs +0 -65
  47. package/dist/favicons/defaults.d.cts +0 -18
  48. package/dist/favicons/extractors.cjs +0 -25
  49. package/dist/favicons/extractors.d.cts +0 -7
  50. package/dist/favicons/index.cjs +0 -29
  51. package/dist/favicons/index.d.cts +0 -7
  52. package/dist/favicons/platform/handlers/bluesky.cjs +0 -27
  53. package/dist/favicons/platform/handlers/codeberg.cjs +0 -19
  54. package/dist/favicons/platform/handlers/deviantart.cjs +0 -29
  55. package/dist/favicons/platform/handlers/devto.cjs +0 -31
  56. package/dist/favicons/platform/handlers/github.cjs +0 -19
  57. package/dist/favicons/platform/handlers/githubGist.cjs +0 -19
  58. package/dist/favicons/platform/handlers/gitlab.cjs +0 -38
  59. package/dist/favicons/platform/handlers/lobsters.cjs +0 -21
  60. package/dist/favicons/platform/handlers/mastodon.cjs +0 -40
  61. package/dist/favicons/platform/handlers/reddit.cjs +0 -42
  62. package/dist/favicons/platform/handlers/sourceforge.cjs +0 -21
  63. package/dist/favicons/platform/handlers/tumblr.cjs +0 -16
  64. package/dist/favicons/types.d.cts +0 -4
  65. package/dist/favicons/utils.cjs +0 -10
  66. package/dist/favicons.cjs +0 -12
  67. package/dist/favicons.d.cts +0 -4
  68. package/dist/feeds/defaults.cjs +0 -290
  69. package/dist/feeds/defaults.d.cts +0 -21
  70. package/dist/feeds/extractors.cjs +0 -46
  71. package/dist/feeds/extractors.d.cts +0 -7
  72. package/dist/feeds/index.cjs +0 -26
  73. package/dist/feeds/index.d.cts +0 -7
  74. package/dist/feeds/platform/handlers/acast.cjs +0 -26
  75. package/dist/feeds/platform/handlers/ameblo.cjs +0 -36
  76. package/dist/feeds/platform/handlers/applePodcasts.cjs +0 -26
  77. package/dist/feeds/platform/handlers/arena.cjs +0 -42
  78. package/dist/feeds/platform/handlers/artstation.cjs +0 -52
  79. package/dist/feeds/platform/handlers/audioboom.cjs +0 -23
  80. package/dist/feeds/platform/handlers/bearblog.cjs +0 -45
  81. package/dist/feeds/platform/handlers/behance.cjs +0 -56
  82. package/dist/feeds/platform/handlers/blogspot.cjs +0 -72
  83. package/dist/feeds/platform/handlers/bluesky.cjs +0 -20
  84. package/dist/feeds/platform/handlers/bookwyrm.cjs +0 -48
  85. package/dist/feeds/platform/handlers/buttondown.cjs +0 -43
  86. package/dist/feeds/platform/handlers/buzzsprout.cjs +0 -22
  87. package/dist/feeds/platform/handlers/codeberg.cjs +0 -69
  88. package/dist/feeds/platform/handlers/csdn.cjs +0 -20
  89. package/dist/feeds/platform/handlers/dailymotion.cjs +0 -86
  90. package/dist/feeds/platform/handlers/deviantart.cjs +0 -85
  91. package/dist/feeds/platform/handlers/devto.cjs +0 -58
  92. package/dist/feeds/platform/handlers/discourse.cjs +0 -70
  93. package/dist/feeds/platform/handlers/douban.cjs +0 -56
  94. package/dist/feeds/platform/handlers/dreamwidth.cjs +0 -48
  95. package/dist/feeds/platform/handlers/exblog.cjs +0 -35
  96. package/dist/feeds/platform/handlers/fireside.cjs +0 -24
  97. package/dist/feeds/platform/handlers/friendica.cjs +0 -44
  98. package/dist/feeds/platform/handlers/ghost.cjs +0 -30
  99. package/dist/feeds/platform/handlers/github.cjs +0 -122
  100. package/dist/feeds/platform/handlers/githubGist.cjs +0 -56
  101. package/dist/feeds/platform/handlers/gitlab.cjs +0 -98
  102. package/dist/feeds/platform/handlers/goodreads.cjs +0 -49
  103. package/dist/feeds/platform/handlers/hackernews.cjs +0 -21
  104. package/dist/feeds/platform/handlers/hashnode.cjs +0 -16
  105. package/dist/feeds/platform/handlers/hatenablog.cjs +0 -56
  106. package/dist/feeds/platform/handlers/hearthis.cjs +0 -32
  107. package/dist/feeds/platform/handlers/heyWorld.cjs +0 -18
  108. package/dist/feeds/platform/handlers/insanejournal.cjs +0 -69
  109. package/dist/feeds/platform/handlers/itchio.cjs +0 -111
  110. package/dist/feeds/platform/handlers/kickstarter.cjs +0 -22
  111. package/dist/feeds/platform/handlers/lemmy.cjs +0 -88
  112. package/dist/feeds/platform/handlers/letterboxd.cjs +0 -46
  113. package/dist/feeds/platform/handlers/libsyn.cjs +0 -25
  114. package/dist/feeds/platform/handlers/listed.cjs +0 -20
  115. package/dist/feeds/platform/handlers/livejournal.cjs +0 -68
  116. package/dist/feeds/platform/handlers/lobsters.cjs +0 -57
  117. package/dist/feeds/platform/handlers/mastodon.cjs +0 -74
  118. package/dist/feeds/platform/handlers/mataroa.cjs +0 -16
  119. package/dist/feeds/platform/handlers/medium.cjs +0 -68
  120. package/dist/feeds/platform/handlers/microblog.cjs +0 -55
  121. package/dist/feeds/platform/handlers/misskey.cjs +0 -40
  122. package/dist/feeds/platform/handlers/myanimelist.cjs +0 -43
  123. package/dist/feeds/platform/handlers/naverBlog.cjs +0 -21
  124. package/dist/feeds/platform/handlers/nebula.cjs +0 -68
  125. package/dist/feeds/platform/handlers/note.cjs +0 -53
  126. package/dist/feeds/platform/handlers/observable.cjs +0 -34
  127. package/dist/feeds/platform/handlers/odysee.cjs +0 -20
  128. package/dist/feeds/platform/handlers/pagecord.cjs +0 -16
  129. package/dist/feeds/platform/handlers/paragraph.cjs +0 -20
  130. package/dist/feeds/platform/handlers/pika.cjs +0 -35
  131. package/dist/feeds/platform/handlers/pinterest.cjs +0 -57
  132. package/dist/feeds/platform/handlers/pixelfed.cjs +0 -46
  133. package/dist/feeds/platform/handlers/pleroma.cjs +0 -34
  134. package/dist/feeds/platform/handlers/podbean.cjs +0 -29
  135. package/dist/feeds/platform/handlers/podigee.cjs +0 -29
  136. package/dist/feeds/platform/handlers/posthaven.cjs +0 -24
  137. package/dist/feeds/platform/handlers/producthunt.cjs +0 -29
  138. package/dist/feeds/platform/handlers/prose.cjs +0 -26
  139. package/dist/feeds/platform/handlers/qiita.cjs +0 -58
  140. package/dist/feeds/platform/handlers/reddit.cjs +0 -149
  141. package/dist/feeds/platform/handlers/rssCom.cjs +0 -20
  142. package/dist/feeds/platform/handlers/seesaa.cjs +0 -22
  143. package/dist/feeds/platform/handlers/soundcloud.cjs +0 -39
  144. package/dist/feeds/platform/handlers/sourceforge.cjs +0 -53
  145. package/dist/feeds/platform/handlers/spreaker.cjs +0 -21
  146. package/dist/feeds/platform/handlers/stackExchange.cjs +0 -64
  147. package/dist/feeds/platform/handlers/steam.cjs +0 -35
  148. package/dist/feeds/platform/handlers/substack.cjs +0 -23
  149. package/dist/feeds/platform/handlers/tildes.cjs +0 -41
  150. package/dist/feeds/platform/handlers/tistory.cjs +0 -16
  151. package/dist/feeds/platform/handlers/transistor.cjs +0 -29
  152. package/dist/feeds/platform/handlers/tumblr.cjs +0 -24
  153. package/dist/feeds/platform/handlers/v2ex.cjs +0 -35
  154. package/dist/feeds/platform/handlers/velog.cjs +0 -24
  155. package/dist/feeds/platform/handlers/vimeo.cjs +0 -75
  156. package/dist/feeds/platform/handlers/weblogLol.cjs +0 -26
  157. package/dist/feeds/platform/handlers/weebly.cjs +0 -25
  158. package/dist/feeds/platform/handlers/wordpress.cjs +0 -209
  159. package/dist/feeds/platform/handlers/wpengine.cjs +0 -10
  160. package/dist/feeds/platform/handlers/writeas.cjs +0 -51
  161. package/dist/feeds/platform/handlers/ximalaya.cjs +0 -20
  162. package/dist/feeds/platform/handlers/youtube.cjs +0 -97
  163. package/dist/feeds/platform/handlers/zenn.cjs +0 -54
  164. package/dist/feeds/types.d.cts +0 -9
  165. package/dist/feeds.cjs +0 -16
  166. package/dist/feeds.d.cts +0 -4
  167. package/dist/hubs/discover/index.cjs +0 -30
  168. package/dist/hubs/discover/index.d.cts +0 -7
  169. package/dist/hubs/discover/types.d.cts +0 -15
  170. package/dist/hubs/feed/index.cjs +0 -32
  171. package/dist/hubs/headers/index.cjs +0 -17
  172. package/dist/hubs/html/index.cjs +0 -28
  173. package/dist/hubs.cjs +0 -0
  174. package/dist/hubs.d.cts +0 -2
  175. package/dist/index.cjs +0 -13
  176. package/dist/index.d.cts +0 -8
  177. package/dist/methods.cjs +0 -15
  178. package/dist/methods.d.cts +0 -7
  179. package/dist/utils.cjs +0 -9
  180. package/dist/utils.d.cts +0 -3
@@ -1,42 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- const require_utils$1 = require("../../utils.cjs");
3
- const require_reddit = require("../../../feeds/platform/handlers/reddit.cjs");
4
- //#region src/favicons/platform/handlers/reddit.ts
5
- const subredditRegex = /^\/r\/([^/.]+)/;
6
- const userRegex = /^\/(u|user)\/([^/.]+)/;
7
- const isSubredditPath = (pathname) => {
8
- return subredditRegex.test(pathname);
9
- };
10
- const isUserPath = (pathname) => {
11
- return userRegex.test(pathname);
12
- };
13
- const redditHandler = {
14
- match: (url) => {
15
- try {
16
- const { pathname } = new URL(url);
17
- return require_utils.isHostOf(url, require_reddit.hosts) && (isSubredditPath(pathname) || isUserPath(pathname));
18
- } catch {}
19
- return false;
20
- },
21
- resolve: async (url, _content, _headers, fetchFn) => {
22
- if (!fetchFn) return [];
23
- try {
24
- const { pathname } = new URL(url);
25
- const subredditMatch = pathname.match(subredditRegex);
26
- if (subredditMatch?.[1]) {
27
- const data = require_utils$1.parseBodyJson((await fetchFn(`https://www.reddit.com/r/${subredditMatch[1]}/about.json`)).body);
28
- const icon = data?.data?.community_icon?.split("?")[0] || data?.data?.icon_img;
29
- if (require_utils$1.isNonEmptyString(icon)) return [{ uri: icon }];
30
- }
31
- const userMatch = pathname.match(userRegex);
32
- if (userMatch?.[2]) {
33
- const data = require_utils$1.parseBodyJson((await fetchFn(`https://www.reddit.com/user/${userMatch[2]}/about.json`)).body);
34
- const icon = data?.data?.icon_img || data?.data?.snoovatar_img;
35
- if (require_utils$1.isNonEmptyString(icon)) return [{ uri: icon }];
36
- }
37
- } catch {}
38
- return [];
39
- }
40
- };
41
- //#endregion
42
- exports.redditHandler = redditHandler;
@@ -1,21 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- const require_sourceforge = require("../../../feeds/platform/handlers/sourceforge.cjs");
3
- //#region src/favicons/platform/handlers/sourceforge.ts
4
- const sourceforgeHandler = {
5
- match: (url) => {
6
- try {
7
- const { pathname } = new URL(url);
8
- const segments = pathname.split("/").filter(Boolean);
9
- return require_utils.isHostOf(url, require_sourceforge.hosts) && segments[0] === "projects" && !!segments[1];
10
- } catch {}
11
- return false;
12
- },
13
- resolve: (url) => {
14
- const { pathname } = new URL(url);
15
- const segments = pathname.split("/").filter(Boolean);
16
- if (segments[0] !== "projects" || !segments[1]) return [];
17
- return [{ uri: `https://a.fsdn.com/allura/p/${segments[1]}/icon` }];
18
- }
19
- };
20
- //#endregion
21
- exports.sourceforgeHandler = sourceforgeHandler;
@@ -1,16 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- const require_tumblr = require("../../../feeds/platform/handlers/tumblr.cjs");
3
- //#region src/favicons/platform/handlers/tumblr.ts
4
- const tumblrHandler = {
5
- match: (url) => {
6
- return require_utils.isSubdomainOf(url, require_tumblr.domains);
7
- },
8
- resolve: (url) => {
9
- const { hostname } = new URL(url);
10
- const blog = hostname.split(".")[0];
11
- if (!blog || blog === "www") return [];
12
- return [{ uri: `https://api.tumblr.com/v2/blog/${blog}/avatar/512` }];
13
- }
14
- };
15
- //#endregion
16
- exports.tumblrHandler = tumblrHandler;
@@ -1,4 +0,0 @@
1
- //#region src/favicons/types.d.ts
2
- type FaviconResult = {};
3
- //#endregion
4
- export { FaviconResult };
@@ -1,10 +0,0 @@
1
- //#region src/favicons/utils.ts
2
- const parseBodyJson = (body) => {
3
- return JSON.parse(typeof body === "string" ? body : "");
4
- };
5
- const isNonEmptyString = (value) => {
6
- return typeof value === "string" && value.length > 0;
7
- };
8
- //#endregion
9
- exports.isNonEmptyString = isNonEmptyString;
10
- exports.parseBodyJson = parseBodyJson;
package/dist/favicons.cjs DELETED
@@ -1,12 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_defaults = require("./favicons/defaults.cjs");
3
- const require_extractors = require("./favicons/extractors.cjs");
4
- exports.defaultExtractFn = require_extractors.defaultExtractFn;
5
- exports.defaultFeedOptions = require_defaults.defaultFeedOptions;
6
- exports.defaultGuessOptions = require_defaults.defaultGuessOptions;
7
- exports.defaultGuessPaths = require_defaults.defaultGuessPaths;
8
- exports.defaultHeadersOptions = require_defaults.defaultHeadersOptions;
9
- exports.defaultHtmlOptions = require_defaults.defaultHtmlOptions;
10
- exports.defaultIconRels = require_defaults.defaultIconRels;
11
- exports.defaultPlatformOptions = require_defaults.defaultPlatformOptions;
12
- exports.linkSelectors = require_defaults.linkSelectors;
@@ -1,4 +0,0 @@
1
- import { defaultFeedOptions, defaultGuessOptions, defaultGuessPaths, defaultHeadersOptions, defaultHtmlOptions, defaultIconRels, defaultPlatformOptions, linkSelectors } from "./favicons/defaults.cjs";
2
- import { FaviconResult } from "./favicons/types.cjs";
3
- import { defaultExtractFn } from "./favicons/extractors.cjs";
4
- export { FaviconResult, defaultExtractFn, defaultFeedOptions, defaultGuessOptions, defaultGuessPaths, defaultHeadersOptions, defaultHtmlOptions, defaultIconRels, defaultPlatformOptions, linkSelectors };
@@ -1,290 +0,0 @@
1
- const require_codeberg = require("./platform/handlers/codeberg.cjs");
2
- const require_deviantart = require("./platform/handlers/deviantart.cjs");
3
- const require_devto = require("./platform/handlers/devto.cjs");
4
- const require_github = require("./platform/handlers/github.cjs");
5
- const require_githubGist = require("./platform/handlers/githubGist.cjs");
6
- const require_gitlab = require("./platform/handlers/gitlab.cjs");
7
- const require_lobsters = require("./platform/handlers/lobsters.cjs");
8
- const require_reddit = require("./platform/handlers/reddit.cjs");
9
- const require_sourceforge = require("./platform/handlers/sourceforge.cjs");
10
- const require_tumblr = require("./platform/handlers/tumblr.cjs");
11
- const require_acast = require("./platform/handlers/acast.cjs");
12
- const require_ameblo = require("./platform/handlers/ameblo.cjs");
13
- const require_applePodcasts = require("./platform/handlers/applePodcasts.cjs");
14
- const require_arena = require("./platform/handlers/arena.cjs");
15
- const require_artstation = require("./platform/handlers/artstation.cjs");
16
- const require_audioboom = require("./platform/handlers/audioboom.cjs");
17
- const require_bearblog = require("./platform/handlers/bearblog.cjs");
18
- const require_behance = require("./platform/handlers/behance.cjs");
19
- const require_blogspot = require("./platform/handlers/blogspot.cjs");
20
- const require_bluesky = require("./platform/handlers/bluesky.cjs");
21
- const require_bookwyrm = require("./platform/handlers/bookwyrm.cjs");
22
- const require_buttondown = require("./platform/handlers/buttondown.cjs");
23
- const require_buzzsprout = require("./platform/handlers/buzzsprout.cjs");
24
- const require_csdn = require("./platform/handlers/csdn.cjs");
25
- const require_dailymotion = require("./platform/handlers/dailymotion.cjs");
26
- const require_discourse = require("./platform/handlers/discourse.cjs");
27
- const require_douban = require("./platform/handlers/douban.cjs");
28
- const require_dreamwidth = require("./platform/handlers/dreamwidth.cjs");
29
- const require_exblog = require("./platform/handlers/exblog.cjs");
30
- const require_fireside = require("./platform/handlers/fireside.cjs");
31
- const require_friendica = require("./platform/handlers/friendica.cjs");
32
- const require_ghost = require("./platform/handlers/ghost.cjs");
33
- const require_goodreads = require("./platform/handlers/goodreads.cjs");
34
- const require_hackernews = require("./platform/handlers/hackernews.cjs");
35
- const require_hashnode = require("./platform/handlers/hashnode.cjs");
36
- const require_hatenablog = require("./platform/handlers/hatenablog.cjs");
37
- const require_hearthis = require("./platform/handlers/hearthis.cjs");
38
- const require_heyWorld = require("./platform/handlers/heyWorld.cjs");
39
- const require_insanejournal = require("./platform/handlers/insanejournal.cjs");
40
- const require_itchio = require("./platform/handlers/itchio.cjs");
41
- const require_kickstarter = require("./platform/handlers/kickstarter.cjs");
42
- const require_lemmy = require("./platform/handlers/lemmy.cjs");
43
- const require_letterboxd = require("./platform/handlers/letterboxd.cjs");
44
- const require_libsyn = require("./platform/handlers/libsyn.cjs");
45
- const require_listed = require("./platform/handlers/listed.cjs");
46
- const require_livejournal = require("./platform/handlers/livejournal.cjs");
47
- const require_mastodon = require("./platform/handlers/mastodon.cjs");
48
- const require_mataroa = require("./platform/handlers/mataroa.cjs");
49
- const require_medium = require("./platform/handlers/medium.cjs");
50
- const require_microblog = require("./platform/handlers/microblog.cjs");
51
- const require_misskey = require("./platform/handlers/misskey.cjs");
52
- const require_myanimelist = require("./platform/handlers/myanimelist.cjs");
53
- const require_naverBlog = require("./platform/handlers/naverBlog.cjs");
54
- const require_nebula = require("./platform/handlers/nebula.cjs");
55
- const require_note = require("./platform/handlers/note.cjs");
56
- const require_observable = require("./platform/handlers/observable.cjs");
57
- const require_odysee = require("./platform/handlers/odysee.cjs");
58
- const require_pagecord = require("./platform/handlers/pagecord.cjs");
59
- const require_paragraph = require("./platform/handlers/paragraph.cjs");
60
- const require_pika = require("./platform/handlers/pika.cjs");
61
- const require_pinterest = require("./platform/handlers/pinterest.cjs");
62
- const require_pixelfed = require("./platform/handlers/pixelfed.cjs");
63
- const require_pleroma = require("./platform/handlers/pleroma.cjs");
64
- const require_podbean = require("./platform/handlers/podbean.cjs");
65
- const require_podigee = require("./platform/handlers/podigee.cjs");
66
- const require_posthaven = require("./platform/handlers/posthaven.cjs");
67
- const require_producthunt = require("./platform/handlers/producthunt.cjs");
68
- const require_prose = require("./platform/handlers/prose.cjs");
69
- const require_qiita = require("./platform/handlers/qiita.cjs");
70
- const require_rssCom = require("./platform/handlers/rssCom.cjs");
71
- const require_seesaa = require("./platform/handlers/seesaa.cjs");
72
- const require_soundcloud = require("./platform/handlers/soundcloud.cjs");
73
- const require_spreaker = require("./platform/handlers/spreaker.cjs");
74
- const require_stackExchange = require("./platform/handlers/stackExchange.cjs");
75
- const require_steam = require("./platform/handlers/steam.cjs");
76
- const require_substack = require("./platform/handlers/substack.cjs");
77
- const require_tildes = require("./platform/handlers/tildes.cjs");
78
- const require_tistory = require("./platform/handlers/tistory.cjs");
79
- const require_transistor = require("./platform/handlers/transistor.cjs");
80
- const require_v2ex = require("./platform/handlers/v2ex.cjs");
81
- const require_velog = require("./platform/handlers/velog.cjs");
82
- const require_vimeo = require("./platform/handlers/vimeo.cjs");
83
- const require_weblogLol = require("./platform/handlers/weblogLol.cjs");
84
- const require_weebly = require("./platform/handlers/weebly.cjs");
85
- const require_wordpress = require("./platform/handlers/wordpress.cjs");
86
- const require_wpengine = require("./platform/handlers/wpengine.cjs");
87
- const require_writeas = require("./platform/handlers/writeas.cjs");
88
- const require_ximalaya = require("./platform/handlers/ximalaya.cjs");
89
- const require_youtube = require("./platform/handlers/youtube.cjs");
90
- const require_zenn = require("./platform/handlers/zenn.cjs");
91
- //#region src/feeds/defaults.ts
92
- const mimeTypes = [
93
- "application/rss+xml",
94
- "text/rss+xml",
95
- "application/x-rss+xml",
96
- "application/rss",
97
- "application/atom+xml",
98
- "text/atom+xml",
99
- "application/feed+json",
100
- "application/json",
101
- "application/rdf+xml",
102
- "text/rdf+xml",
103
- "application/atom",
104
- "application/xml",
105
- "text/xml"
106
- ];
107
- const urisMinimal = [
108
- "/feed",
109
- "/rss",
110
- "/atom.xml",
111
- "/feed.xml",
112
- "/rss.xml",
113
- "/index.xml"
114
- ];
115
- const urisBalanced = [
116
- ...urisMinimal,
117
- "/feed/",
118
- "/index.atom",
119
- "/index.rss",
120
- "/feed.json"
121
- ];
122
- const urisComprehensive = [
123
- ...urisBalanced,
124
- "/atom",
125
- "/rss/",
126
- "/rss2.xml",
127
- "/feed.rss",
128
- "/feed.atom",
129
- "/feed.rss.xml",
130
- "/feed.atom.xml",
131
- ["/feed/atom/", "?feed=atom"],
132
- ["/feed/rss/", "?feed=rss"],
133
- ["/feed/rss2/", "?feed=rss2"],
134
- ["/feed/rdf", "?feed=rdf"],
135
- ["/feed/rdf/", "?feed=rdf"],
136
- "/index.rss.xml",
137
- "/index.atom.xml",
138
- "?format=rss",
139
- "?format=atom",
140
- "?rss=1",
141
- "?atom=1",
142
- "/.rss",
143
- "/f.json",
144
- "/f.rss",
145
- "/json",
146
- "/.feed",
147
- ["/comments/feed", "?feed=comments-rss2"],
148
- ["/comments/feed/rss2/", "?feed=comments-rss2"],
149
- ["/comments/feed/rdf/", "?feed=comments-rdf"],
150
- ["/comments/feed/atom/", "?feed=comments-atom"],
151
- "/feeds/posts/default",
152
- "/feeds/posts/default?alt=rss",
153
- "/feeds/comments/default"
154
- ];
155
- const ignoredUris = [
156
- "wp-json/oembed/",
157
- "wp-json/wp/",
158
- /[?&][^=&]*=(https?:|https?%3a|aHR0c)/i
159
- ];
160
- const anchorLabels = [
161
- "rss",
162
- "feed",
163
- "atom",
164
- "syndicate",
165
- "syndication",
166
- "json feed"
167
- ];
168
- const linkSelectors = [{
169
- rel: "alternate",
170
- types: mimeTypes
171
- }, { rel: "feed" }];
172
- const anchorPathSegments = [
173
- /\/rss\//,
174
- /\/atom\//,
175
- /\/feed\//
176
- ];
177
- const defaultHtmlOptions = {
178
- linkSelectors,
179
- anchorUris: urisComprehensive.flat(),
180
- anchorPathSegments,
181
- anchorIgnoredUris: ignoredUris,
182
- anchorLabels
183
- };
184
- const defaultHeadersOptions = { linkSelectors };
185
- const defaultGuessOptions = { uris: urisBalanced };
186
- const defaultPlatformOptions = { handlers: [
187
- require_acast.acastHandler,
188
- require_ameblo.amebloHandler,
189
- require_applePodcasts.applePodcastsHandler,
190
- require_arena.arenaHandler,
191
- require_artstation.artstationHandler,
192
- require_audioboom.audioboomHandler,
193
- require_bearblog.bearblogHandler,
194
- require_behance.behanceHandler,
195
- require_blogspot.blogspotHandler,
196
- require_bluesky.blueskyHandler,
197
- require_bookwyrm.bookwyrmHandler,
198
- require_buttondown.buttondownHandler,
199
- require_buzzsprout.buzzsproutHandler,
200
- require_codeberg.codebergHandler,
201
- require_csdn.csdnHandler,
202
- require_dailymotion.dailymotionHandler,
203
- require_deviantart.deviantartHandler,
204
- require_devto.devtoHandler,
205
- require_discourse.discourseHandler,
206
- require_douban.doubanHandler,
207
- require_dreamwidth.dreamwidthHandler,
208
- require_exblog.exblogHandler,
209
- require_fireside.firesideHandler,
210
- require_friendica.friendicaHandler,
211
- require_ghost.ghostHandler,
212
- require_github.githubHandler,
213
- require_githubGist.githubGistHandler,
214
- require_gitlab.gitlabHandler,
215
- require_goodreads.goodreadsHandler,
216
- require_hackernews.hackernewsHandler,
217
- require_hashnode.hashnodeHandler,
218
- require_hatenablog.hatenablogHandler,
219
- require_hearthis.hearthisHandler,
220
- require_heyWorld.heyWorldHandler,
221
- require_insanejournal.insanejournalHandler,
222
- require_itchio.itchioHandler,
223
- require_kickstarter.kickstarterHandler,
224
- require_lemmy.lemmyHandler,
225
- require_letterboxd.letterboxdHandler,
226
- require_libsyn.libsynHandler,
227
- require_listed.listedHandler,
228
- require_livejournal.livejournalHandler,
229
- require_lobsters.lobstersHandler,
230
- require_mastodon.mastodonHandler,
231
- require_mataroa.mataroaHandler,
232
- require_medium.mediumHandler,
233
- require_microblog.microblogHandler,
234
- require_misskey.misskeyHandler,
235
- require_myanimelist.myanimelistHandler,
236
- require_naverBlog.naverBlogHandler,
237
- require_nebula.nebulaHandler,
238
- require_note.noteHandler,
239
- require_observable.observableHandler,
240
- require_odysee.odyseeHandler,
241
- require_pagecord.pagecordHandler,
242
- require_paragraph.paragraphHandler,
243
- require_pika.pikaHandler,
244
- require_pinterest.pinterestHandler,
245
- require_pixelfed.pixelfedHandler,
246
- require_pleroma.pleromaHandler,
247
- require_podbean.podbeanHandler,
248
- require_podigee.podigeeHandler,
249
- require_posthaven.posthavenHandler,
250
- require_producthunt.producthuntHandler,
251
- require_prose.proseHandler,
252
- require_qiita.qiitaHandler,
253
- require_reddit.redditHandler,
254
- require_rssCom.rssComHandler,
255
- require_seesaa.seesaaHandler,
256
- require_soundcloud.soundcloudHandler,
257
- require_sourceforge.sourceforgeHandler,
258
- require_spreaker.spreakerHandler,
259
- require_stackExchange.stackExchangeHandler,
260
- require_steam.steamHandler,
261
- require_substack.substackHandler,
262
- require_tildes.tildesHandler,
263
- require_tistory.tistoryHandler,
264
- require_transistor.transistorHandler,
265
- require_tumblr.tumblrHandler,
266
- require_v2ex.v2exHandler,
267
- require_velog.velogHandler,
268
- require_vimeo.vimeoHandler,
269
- require_weblogLol.weblogLolHandler,
270
- require_weebly.weeblyHandler,
271
- require_wordpress.wordpressHandler,
272
- require_wpengine.wpengineHandler,
273
- require_writeas.writeasHandler,
274
- require_ximalaya.ximalayaHandler,
275
- require_youtube.youtubeHandler,
276
- require_zenn.zennHandler
277
- ] };
278
- //#endregion
279
- exports.anchorLabels = anchorLabels;
280
- exports.anchorPathSegments = anchorPathSegments;
281
- exports.defaultGuessOptions = defaultGuessOptions;
282
- exports.defaultHeadersOptions = defaultHeadersOptions;
283
- exports.defaultHtmlOptions = defaultHtmlOptions;
284
- exports.defaultPlatformOptions = defaultPlatformOptions;
285
- exports.ignoredUris = ignoredUris;
286
- exports.linkSelectors = linkSelectors;
287
- exports.mimeTypes = mimeTypes;
288
- exports.urisBalanced = urisBalanced;
289
- exports.urisComprehensive = urisComprehensive;
290
- exports.urisMinimal = urisMinimal;
@@ -1,21 +0,0 @@
1
- import { GuessMethodOptions } from "../common/uris/guess/types.cjs";
2
- import { HeadersMethodOptions } from "../common/uris/headers/types.cjs";
3
- import { HtmlMethodOptions } from "../common/uris/html/types.cjs";
4
- import { PlatformMethodOptions } from "../common/uris/platform/types.cjs";
5
- import { LinkSelector, Pattern, UriEntry } from "../common/types.cjs";
6
-
7
- //#region src/feeds/defaults.d.ts
8
- declare const mimeTypes: string[];
9
- declare const urisMinimal: string[];
10
- declare const urisBalanced: string[];
11
- declare const urisComprehensive: Array<UriEntry>;
12
- declare const ignoredUris: Array<Pattern>;
13
- declare const anchorLabels: string[];
14
- declare const linkSelectors: Array<LinkSelector>;
15
- declare const anchorPathSegments: RegExp[];
16
- declare const defaultHtmlOptions: Omit<HtmlMethodOptions, 'baseUrl'>;
17
- declare const defaultHeadersOptions: Omit<HeadersMethodOptions, 'baseUrl'>;
18
- declare const defaultGuessOptions: Omit<GuessMethodOptions, 'baseUrl'>;
19
- declare const defaultPlatformOptions: Omit<PlatformMethodOptions, 'baseUrl'>;
20
- //#endregion
21
- export { anchorLabels, anchorPathSegments, defaultGuessOptions, defaultHeadersOptions, defaultHtmlOptions, defaultPlatformOptions, ignoredUris, linkSelectors, mimeTypes, urisBalanced, urisComprehensive, urisMinimal };
@@ -1,46 +0,0 @@
1
- const require_utils = require("../common/discover/utils.cjs");
2
- const require_defaults = require("../common/discover/defaults.cjs");
3
- let feedsmith = require("feedsmith");
4
- //#region src/feeds/extractors.ts
5
- const defaultExtractFn = ({ content, url }) => {
6
- if (!content) return {
7
- url,
8
- isValid: false
9
- };
10
- try {
11
- const parsed = (0, feedsmith.parseFeed)(content);
12
- const { format, feed } = parsed;
13
- const rawSiteUrl = require_utils.getFeedSiteUrl(parsed);
14
- const siteUrl = rawSiteUrl ? require_defaults.defaultResolveUrlFn(rawSiteUrl, url) : void 0;
15
- if (format === "rss" || format === "rdf") return {
16
- url,
17
- isValid: true,
18
- format,
19
- title: feed.title,
20
- description: feed.description,
21
- siteUrl
22
- };
23
- if (format === "atom") return {
24
- url,
25
- isValid: true,
26
- format,
27
- title: feed.title,
28
- description: feed.subtitle,
29
- siteUrl
30
- };
31
- if (format === "json") return {
32
- url,
33
- isValid: true,
34
- format,
35
- title: feed.title,
36
- description: feed.description,
37
- siteUrl
38
- };
39
- } catch {}
40
- return {
41
- url,
42
- isValid: false
43
- };
44
- };
45
- //#endregion
46
- exports.defaultExtractFn = defaultExtractFn;
@@ -1,7 +0,0 @@
1
- import { DiscoverExtractFn } from "../common/types.cjs";
2
- import { FeedResult } from "./types.cjs";
3
-
4
- //#region src/feeds/extractors.d.ts
5
- declare const defaultExtractFn: DiscoverExtractFn<FeedResult>;
6
- //#endregion
7
- export { defaultExtractFn };
@@ -1,26 +0,0 @@
1
- const require_defaults = require("../common/discover/defaults.cjs");
2
- const require_index = require("../common/discover/index.cjs");
3
- const require_defaults$1 = require("./defaults.cjs");
4
- const require_extractors = require("./extractors.cjs");
5
- //#region src/feeds/index.ts
6
- const discoverFeeds = (input, options = {}) => {
7
- return require_index.discover(input, {
8
- ...options,
9
- methods: options.methods ?? [
10
- "platform",
11
- "html",
12
- "headers",
13
- "guess"
14
- ],
15
- fetchFn: options.fetchFn ?? require_defaults.defaultFetchFn,
16
- extractFn: options.extractFn ?? require_extractors.defaultExtractFn,
17
- resolveUrlFn: options.resolveUrlFn ?? require_defaults.defaultResolveUrlFn
18
- }, {
19
- platform: require_defaults$1.defaultPlatformOptions,
20
- html: require_defaults$1.defaultHtmlOptions,
21
- headers: require_defaults$1.defaultHeadersOptions,
22
- guess: require_defaults$1.defaultGuessOptions
23
- });
24
- };
25
- //#endregion
26
- exports.discoverFeeds = discoverFeeds;
@@ -1,7 +0,0 @@
1
- import { DiscoverInput, DiscoverOptions, DiscoverResult } from "../common/types.cjs";
2
- import { FeedResult } from "./types.cjs";
3
-
4
- //#region src/feeds/index.d.ts
5
- declare const discoverFeeds: <TValid extends FeedResult = FeedResult>(input: DiscoverInput, options?: DiscoverOptions<TValid, "platform" | "html" | "headers" | "guess">) => Promise<Array<DiscoverResult<TValid>>>;
6
- //#endregion
7
- export { discoverFeeds };
@@ -1,26 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- //#region src/feeds/platform/handlers/acast.ts
3
- const hosts = [
4
- "shows.acast.com",
5
- "play.acast.com",
6
- "embed.acast.com"
7
- ];
8
- const excludedPaths = ["discover"];
9
- const acastHandler = {
10
- match: (url) => {
11
- return require_utils.isHostOf(url, hosts);
12
- },
13
- resolve: (url) => {
14
- const { hostname, pathname } = new URL(url);
15
- const pathSegments = pathname.split("/").filter(Boolean);
16
- if (pathSegments.length === 0) return [];
17
- const slug = pathSegments[hostname.toLowerCase() === "play.acast.com" ? 1 : 0];
18
- if (!slug || require_utils.isAnyOf(slug, excludedPaths)) return [];
19
- return [{
20
- uri: `https://feeds.acast.com/public/shows/${slug}`,
21
- hint: require_utils.composeHint("acast:podcast")
22
- }];
23
- }
24
- };
25
- //#endregion
26
- exports.acastHandler = acastHandler;
@@ -1,36 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- //#region src/feeds/platform/handlers/ameblo.ts
3
- const hosts = ["ameblo.jp", "www.ameblo.jp"];
4
- const excludedPaths = [
5
- "genre",
6
- "hashtag",
7
- "search"
8
- ];
9
- const amebloHandler = {
10
- match: (url) => {
11
- return require_utils.isHostOf(url, hosts);
12
- },
13
- resolve: (url) => {
14
- const { pathname } = new URL(url);
15
- const pathSegments = pathname.split("/").filter(Boolean);
16
- if (pathSegments.length === 0) return [];
17
- const username = pathSegments[0];
18
- if (require_utils.isAnyOf(username, excludedPaths)) return [];
19
- const uris = [];
20
- uris.push({
21
- uri: `https://ameblo.jp/${username}/rss20.xml`,
22
- hint: require_utils.composeHint("ameblo:posts-rss")
23
- });
24
- uris.push({
25
- uri: `https://ameblo.jp/${username}/atom.xml`,
26
- hint: require_utils.composeHint("ameblo:posts-atom")
27
- });
28
- uris.push({
29
- uri: `https://rssblog.ameba.jp/${username}/rss.html`,
30
- hint: require_utils.composeHint("ameblo:posts-rdf")
31
- });
32
- return uris;
33
- }
34
- };
35
- //#endregion
36
- exports.amebloHandler = amebloHandler;
@@ -1,26 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- //#region src/feeds/platform/handlers/applePodcasts.ts
3
- const hosts = ["podcasts.apple.com"];
4
- const podcastRegex = /^(?:\/[a-z]{2})?\/podcast\/(?:[^/]+\/)?id\d+/;
5
- const feedUrlRegex = /"feedUrl"\s*:\s*"([^"]+)"/;
6
- const extractFeedUrlFromContent = (content) => {
7
- return content.match(feedUrlRegex)?.[1];
8
- };
9
- const applePodcastsHandler = {
10
- match: (url) => {
11
- if (!require_utils.isHostOf(url, hosts)) return false;
12
- const { pathname } = new URL(url);
13
- return podcastRegex.test(pathname);
14
- },
15
- resolve: (_url, content) => {
16
- if (!content) return [];
17
- const feedUrl = extractFeedUrlFromContent(content);
18
- if (!feedUrl) return [];
19
- return [{
20
- uri: feedUrl,
21
- hint: require_utils.composeHint("apple-podcasts:podcast")
22
- }];
23
- }
24
- };
25
- //#endregion
26
- exports.applePodcastsHandler = applePodcastsHandler;
@@ -1,42 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- //#region src/feeds/platform/handlers/arena.ts
3
- const hosts = ["are.na", "www.are.na"];
4
- const excludedPaths = [
5
- "about",
6
- "api",
7
- "explore",
8
- "login",
9
- "premium",
10
- "privacy",
11
- "search",
12
- "settings",
13
- "signup",
14
- "support",
15
- "terms"
16
- ];
17
- const arenaHandler = {
18
- match: (url) => {
19
- return require_utils.isHostOf(url, hosts);
20
- },
21
- resolve: (url) => {
22
- const { pathname } = new URL(url);
23
- const pathSegments = pathname.split("/").filter(Boolean);
24
- if (pathSegments.length === 0) return [];
25
- if (pathSegments[0] === "editorial") return [{
26
- uri: "https://www.are.na/editorial/feed/rss",
27
- hint: require_utils.composeHint("arena:editorial")
28
- }];
29
- const username = pathSegments[0];
30
- if (require_utils.isAnyOf(username, excludedPaths)) return [];
31
- if (pathSegments[1]) return [{
32
- uri: `https://www.are.na/${username}/${pathSegments[1]}/feed/rss`,
33
- hint: require_utils.composeHint("arena:channel")
34
- }];
35
- return [{
36
- uri: `https://www.are.na/${username}/feed/rss`,
37
- hint: require_utils.composeHint("arena:profile")
38
- }];
39
- }
40
- };
41
- //#endregion
42
- exports.arenaHandler = arenaHandler;