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,64 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- //#region src/feeds/platform/handlers/stackExchange.ts
3
- const tagRegex = /^\/questions\/tagged\/([\w.+-]+)/;
4
- const questionRegex = /^\/questions\/(\d+)/;
5
- const userRegex = /^\/users\/(\d+)/;
6
- const collectiveRegex = /^\/collectives\/([^/]+)/;
7
- const domains = [
8
- "stackoverflow.com",
9
- "serverfault.com",
10
- "superuser.com",
11
- "askubuntu.com",
12
- "stackapps.com",
13
- "mathoverflow.net",
14
- "stackexchange.com"
15
- ];
16
- const validSorts = new Set([
17
- "newest",
18
- "active",
19
- "votes",
20
- "creation",
21
- "hot",
22
- "week",
23
- "month"
24
- ]);
25
- const getSortSuffix = (searchParams) => {
26
- const sort = searchParams.get("sort") ?? searchParams.get("tab")?.toLowerCase();
27
- if (sort && validSorts.has(sort)) return `?sort=${sort}`;
28
- return "";
29
- };
30
- const stackExchangeHandler = {
31
- match: (url) => {
32
- return require_utils.isHostOf(url, domains) || require_utils.isSubdomainOf(url, domains);
33
- },
34
- resolve: (url) => {
35
- const { origin, pathname, searchParams } = new URL(url);
36
- const tagMatch = pathname.match(tagRegex);
37
- if (tagMatch?.[1]) return [{
38
- uri: `${origin}/feeds/tag/${tagMatch[1]}${getSortSuffix(searchParams)}`,
39
- hint: require_utils.composeHint("stackexchange:tag")
40
- }];
41
- const questionMatch = pathname.match(questionRegex);
42
- if (questionMatch?.[1]) return [{
43
- uri: `${origin}/feeds/question/${questionMatch[1]}`,
44
- hint: require_utils.composeHint("stackexchange:question")
45
- }];
46
- const userMatch = pathname.match(userRegex);
47
- if (userMatch?.[1]) return [{
48
- uri: `${origin}/feeds/user/${userMatch[1]}`,
49
- hint: require_utils.composeHint("stackexchange:user")
50
- }];
51
- const collectiveMatch = pathname.match(collectiveRegex);
52
- if (collectiveMatch?.[1]) return [{
53
- uri: `${origin}/feeds/collectives/${collectiveMatch[1]}`,
54
- hint: require_utils.composeHint("stackexchange:collective")
55
- }];
56
- if (pathname === "/" || pathname === "") return [{
57
- uri: `${origin}/feeds`,
58
- hint: require_utils.composeHint("stackexchange:newest")
59
- }];
60
- return [];
61
- }
62
- };
63
- //#endregion
64
- exports.stackExchangeHandler = stackExchangeHandler;
@@ -1,35 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- //#region src/feeds/platform/handlers/steam.ts
3
- const appRegex = /^\/(?:news\/)?app\/(\d+)/;
4
- const groupRegex = /^\/groups\/([^/]+)/;
5
- const hosts = ["store.steampowered.com", "steamcommunity.com"];
6
- const steamHandler = {
7
- match: (url) => {
8
- return require_utils.isHostOf(url, hosts);
9
- },
10
- resolve: (url) => {
11
- const { hostname, pathname } = new URL(url);
12
- const appMatch = pathname.match(appRegex);
13
- if (appMatch?.[1]) return [{
14
- uri: `https://store.steampowered.com/feeds/news/app/${appMatch[1]}/`,
15
- hint: require_utils.composeHint("steam:news")
16
- }];
17
- if (hostname === "steamcommunity.com") {
18
- const groupMatch = pathname.match(groupRegex);
19
- if (groupMatch?.[1]) return [{
20
- uri: `https://steamcommunity.com/groups/${groupMatch[1]}/rss`,
21
- hint: require_utils.composeHint("steam:group")
22
- }];
23
- }
24
- if (hostname === "store.steampowered.com" && (pathname === "/" || pathname === "" || pathname.startsWith("/news"))) return [{
25
- uri: "https://store.steampowered.com/feeds/news.xml",
26
- hint: require_utils.composeHint("steam:news-global")
27
- }, {
28
- uri: "https://store.steampowered.com/feeds/daily_deals.xml",
29
- hint: require_utils.composeHint("steam:daily-deals")
30
- }];
31
- return [];
32
- }
33
- };
34
- //#endregion
35
- exports.steamHandler = steamHandler;
@@ -1,23 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- //#region src/feeds/platform/handlers/substack.ts
3
- const profileRegex = /^\/@([\w-]+)/;
4
- const substackHandler = {
5
- match: (url) => {
6
- if (require_utils.isSubdomainOf(url, "substack.com")) return true;
7
- return require_utils.isHostOf(url, "substack.com") && profileRegex.test(new URL(url).pathname);
8
- },
9
- resolve: (url) => {
10
- const parsed = new URL(url);
11
- const profileMatch = parsed.pathname.match(profileRegex);
12
- if (require_utils.isHostOf(url, "substack.com") && profileMatch?.[1]) return [{
13
- uri: `https://${profileMatch[1]}.substack.com/feed`,
14
- hint: require_utils.composeHint("substack:newsletter")
15
- }];
16
- return [{
17
- uri: `${parsed.origin}/feed`,
18
- hint: require_utils.composeHint("substack:newsletter")
19
- }];
20
- }
21
- };
22
- //#endregion
23
- exports.substackHandler = substackHandler;
@@ -1,41 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- //#region src/feeds/platform/handlers/tildes.ts
3
- const hosts = ["tildes.net", "www.tildes.net"];
4
- const groupRegex = /^\/~([^/]+)/;
5
- const tildesHandler = {
6
- match: (url) => {
7
- return require_utils.isHostOf(url, hosts);
8
- },
9
- resolve: (url) => {
10
- const { pathname, searchParams } = new URL(url);
11
- const groupMatch = pathname.match(groupRegex);
12
- const uris = [];
13
- const tag = searchParams.get("tag");
14
- const tagSuffix = tag ? `?tag=${encodeURIComponent(tag)}` : "";
15
- if (groupMatch?.[1]) {
16
- const group = groupMatch[1];
17
- uris.push({
18
- uri: `https://tildes.net/~${group}/topics.rss${tagSuffix}`,
19
- hint: require_utils.composeHint("tildes:group-rss")
20
- });
21
- uris.push({
22
- uri: `https://tildes.net/~${group}/topics.atom${tagSuffix}`,
23
- hint: require_utils.composeHint("tildes:group-atom")
24
- });
25
- return uris;
26
- }
27
- if (pathname === "/" || pathname === "") {
28
- uris.push({
29
- uri: `https://tildes.net/topics.rss${tagSuffix}`,
30
- hint: require_utils.composeHint("tildes:topics-rss")
31
- });
32
- uris.push({
33
- uri: `https://tildes.net/topics.atom${tagSuffix}`,
34
- hint: require_utils.composeHint("tildes:topics-atom")
35
- });
36
- }
37
- return uris;
38
- }
39
- };
40
- //#endregion
41
- exports.tildesHandler = tildesHandler;
@@ -1,16 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- //#region src/feeds/platform/handlers/tistory.ts
3
- const tistoryHandler = {
4
- match: (url) => {
5
- return require_utils.isSubdomainOf(url, "tistory.com");
6
- },
7
- resolve: (url) => {
8
- const { origin } = new URL(url);
9
- return [{
10
- uri: `${origin}/rss`,
11
- hint: require_utils.composeHint("tistory:blog")
12
- }];
13
- }
14
- };
15
- //#endregion
16
- exports.tistoryHandler = tistoryHandler;
@@ -1,29 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- //#region src/feeds/platform/handlers/transistor.ts
3
- const domainSuffix = /\.transistor\.fm$/i;
4
- const reservedSlugs = new Set([
5
- "www",
6
- "feeds",
7
- "share",
8
- "support",
9
- "help",
10
- "developers",
11
- "api",
12
- "cdn"
13
- ]);
14
- const transistorHandler = {
15
- match: (url) => {
16
- if (!require_utils.isSubdomainOf(url, "transistor.fm")) return false;
17
- const slug = new URL(url).hostname.toLowerCase().replace(domainSuffix, "");
18
- return !reservedSlugs.has(slug);
19
- },
20
- resolve: (url) => {
21
- const { hostname } = new URL(url);
22
- return [{
23
- uri: `https://feeds.transistor.fm/${hostname.replace(domainSuffix, "")}`,
24
- hint: require_utils.composeHint("transistor:podcast")
25
- }];
26
- }
27
- };
28
- //#endregion
29
- exports.transistorHandler = transistorHandler;
@@ -1,24 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- //#region src/feeds/platform/handlers/tumblr.ts
3
- const domains = ["tumblr.com"];
4
- const tagRegex = /^\/tagged\/([^/]+)/;
5
- const tumblrHandler = {
6
- match: (url) => {
7
- return require_utils.isSubdomainOf(url, domains);
8
- },
9
- resolve: (url) => {
10
- const { origin, pathname } = new URL(url);
11
- const tagMatch = pathname.match(tagRegex);
12
- if (tagMatch?.[1]) return [{
13
- uri: `${origin}/tagged/${tagMatch[1]}/rss`,
14
- hint: require_utils.composeHint("tumblr:tag")
15
- }];
16
- return [{
17
- uri: `${origin}/rss`,
18
- hint: require_utils.composeHint("tumblr:posts")
19
- }];
20
- }
21
- };
22
- //#endregion
23
- exports.domains = domains;
24
- exports.tumblrHandler = tumblrHandler;
@@ -1,35 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- //#region src/feeds/platform/handlers/v2ex.ts
3
- const nodeRegex = /^\/go\/([^/]+)/;
4
- const memberRegex = /^\/member\/([^/]+)/;
5
- const hosts = ["www.v2ex.com", "v2ex.com"];
6
- const v2exHandler = {
7
- match: (url) => {
8
- return require_utils.isHostOf(url, hosts);
9
- },
10
- resolve: (url) => {
11
- const { pathname, searchParams } = new URL(url);
12
- const nodeMatch = pathname.match(nodeRegex);
13
- if (nodeMatch?.[1]) return [{
14
- uri: `https://www.v2ex.com/feed/${nodeMatch[1]}.xml`,
15
- hint: require_utils.composeHint("v2ex:node")
16
- }];
17
- const memberMatch = pathname.match(memberRegex);
18
- if (memberMatch?.[1]) return [{
19
- uri: `https://www.v2ex.com/feed/member/${memberMatch[1]}.xml`,
20
- hint: require_utils.composeHint("v2ex:member")
21
- }];
22
- const tab = searchParams.get("tab");
23
- if (tab) return [{
24
- uri: `https://www.v2ex.com/feed/tab/${tab}.xml`,
25
- hint: require_utils.composeHint("v2ex:tab")
26
- }];
27
- if (pathname === "/" || pathname === "") return [{
28
- uri: "https://www.v2ex.com/index.xml",
29
- hint: require_utils.composeHint("v2ex:index")
30
- }];
31
- return [];
32
- }
33
- };
34
- //#endregion
35
- exports.v2exHandler = v2exHandler;
@@ -1,24 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- //#region src/feeds/platform/handlers/velog.ts
3
- const hosts = ["velog.io", "www.velog.io"];
4
- const userRegex = /^\/@([^/]+)/;
5
- const velogHandler = {
6
- match: (url) => {
7
- return require_utils.isHostOf(url, hosts);
8
- },
9
- resolve: (url) => {
10
- const { pathname } = new URL(url);
11
- const userMatch = pathname.match(userRegex);
12
- if (userMatch?.[1]) return [{
13
- uri: `https://v2.velog.io/rss/${userMatch[1]}`,
14
- hint: require_utils.composeHint("velog:posts")
15
- }];
16
- if (pathname === "/" || pathname === "") return [{
17
- uri: "https://v2.velog.io/rss",
18
- hint: require_utils.composeHint("velog:trending")
19
- }];
20
- return [];
21
- }
22
- };
23
- //#endregion
24
- exports.velogHandler = velogHandler;
@@ -1,75 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- //#region src/feeds/platform/handlers/vimeo.ts
3
- const numericRegex = /^\d+$/;
4
- const hosts = ["vimeo.com", "www.vimeo.com"];
5
- const excludedPaths = [
6
- "about",
7
- "album",
8
- "blog",
9
- "business",
10
- "careers",
11
- "categories",
12
- "channels",
13
- "create",
14
- "enterprise",
15
- "explore",
16
- "features",
17
- "for-hire",
18
- "groups",
19
- "help",
20
- "join",
21
- "log_in",
22
- "manage",
23
- "ondemand",
24
- "ott",
25
- "plus",
26
- "pricing",
27
- "pro",
28
- "search",
29
- "settings",
30
- "showcase",
31
- "site_map",
32
- "solutions",
33
- "stock",
34
- "upload",
35
- "upgrade",
36
- "watch"
37
- ];
38
- const vimeoHandler = {
39
- match: (url) => {
40
- return require_utils.isHostOf(url, hosts);
41
- },
42
- resolve: (url) => {
43
- const { origin, pathname } = new URL(url);
44
- const pathSegments = pathname.split("/").filter(Boolean);
45
- if (pathSegments[0] === "channels" && pathSegments[1]) return [{
46
- uri: `${origin}/channels/${pathSegments[1]}/videos/rss`,
47
- hint: require_utils.composeHint("vimeo:channel")
48
- }];
49
- if (pathSegments[0] === "groups" && pathSegments[1]) return [{
50
- uri: `${origin}/groups/${pathSegments[1]}/videos/rss`,
51
- hint: require_utils.composeHint("vimeo:group")
52
- }];
53
- if ((pathSegments[0] === "album" || pathSegments[0] === "showcase") && pathSegments[1] && numericRegex.test(pathSegments[1])) return [{
54
- uri: `${origin}/album/${pathSegments[1]}/rss`,
55
- hint: require_utils.composeHint("vimeo:album")
56
- }];
57
- if (pathSegments.length > 0) {
58
- const user = pathSegments[0];
59
- if (!require_utils.isAnyOf(user, excludedPaths) && !numericRegex.test(user)) {
60
- const feeds = [{
61
- uri: `${origin}/${user}/videos/rss`,
62
- hint: require_utils.composeHint("vimeo:videos")
63
- }];
64
- if (pathSegments[1] === "likes") feeds.unshift({
65
- uri: `${origin}/${user}/likes/rss`,
66
- hint: require_utils.composeHint("vimeo:likes")
67
- });
68
- return feeds;
69
- }
70
- }
71
- return [];
72
- }
73
- };
74
- //#endregion
75
- exports.vimeoHandler = vimeoHandler;
@@ -1,26 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- //#region src/feeds/platform/handlers/weblogLol.ts
3
- const weblogLolHandler = {
4
- match: (url) => {
5
- return require_utils.isSubdomainOf(url, "weblog.lol");
6
- },
7
- resolve: (url) => {
8
- const { origin } = new URL(url);
9
- const uris = [];
10
- uris.push({
11
- uri: `${origin}/rss.xml`,
12
- hint: require_utils.composeHint("weblog-lol:posts-rss")
13
- });
14
- uris.push({
15
- uri: `${origin}/atom.xml`,
16
- hint: require_utils.composeHint("weblog-lol:posts-atom")
17
- });
18
- uris.push({
19
- uri: `${origin}/feed.json`,
20
- hint: require_utils.composeHint("weblog-lol:posts-json")
21
- });
22
- return uris;
23
- }
24
- };
25
- //#endregion
26
- exports.weblogLolHandler = weblogLolHandler;
@@ -1,25 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- //#region src/feeds/platform/handlers/weebly.ts
3
- const numericRegex = /^\d+$/;
4
- const weeblyHandler = {
5
- match: (url) => {
6
- return require_utils.isSubdomainOf(url, "weebly.com");
7
- },
8
- resolve: (url) => {
9
- const { origin, pathname } = new URL(url);
10
- const pathSegments = pathname.split("/").filter(Boolean);
11
- const uris = [];
12
- const firstSegment = pathSegments[0];
13
- if (firstSegment && !numericRegex.test(firstSegment)) uris.push({
14
- uri: `${origin}/${firstSegment}/feed`,
15
- hint: require_utils.composeHint("weebly:blog")
16
- });
17
- uris.push({
18
- uri: `${origin}/blog/feed`,
19
- hint: require_utils.composeHint("weebly:blog")
20
- });
21
- return uris;
22
- }
23
- };
24
- //#endregion
25
- exports.weeblyHandler = weeblyHandler;
@@ -1,209 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- //#region src/feeds/platform/handlers/wordpress.ts
3
- const categoryRegex = /^\/category\/([^/]+)/;
4
- const tagRegex = /^\/tag\/([^/]+)/;
5
- const authorRegex = /^\/author\/([^/]+)/;
6
- const yearRegex = /^\/(\d{4})\/?$/;
7
- const yearMonthRegex = /^\/(\d{4})\/(\d{2})\/?$/;
8
- const dayRegex = /^\/(\d{4})\/(\d{2})\/(\d{2})\/?$/;
9
- const trailingSlashRegex = /\/$/;
10
- const wordpressHandler = {
11
- match: (url) => {
12
- return require_utils.isSubdomainOf(url, "wordpress.com");
13
- },
14
- resolve: (url) => {
15
- const { origin, pathname } = new URL(url);
16
- const uris = [];
17
- let archiveMatched = false;
18
- const categoryMatch = pathname.match(categoryRegex);
19
- if (categoryMatch?.[1]) {
20
- archiveMatched = true;
21
- const base = `${origin}/category/${categoryMatch[1]}`;
22
- uris.push({
23
- uri: [
24
- `${base}/feed/`,
25
- `${base}/?feed=rss`,
26
- `${base}/feed/rss2/`,
27
- `${base}/?feed=rss2`
28
- ],
29
- hint: require_utils.composeHint("wordpress:category-rss")
30
- });
31
- uris.push({
32
- uri: [`${base}/feed/atom/`, `${base}/?feed=atom`],
33
- hint: require_utils.composeHint("wordpress:category-atom")
34
- });
35
- uris.push({
36
- uri: [`${base}/feed/rdf/`, `${base}/?feed=rdf`],
37
- hint: require_utils.composeHint("wordpress:category-rdf")
38
- });
39
- }
40
- const tagMatch = pathname.match(tagRegex);
41
- if (tagMatch?.[1]) {
42
- archiveMatched = true;
43
- const base = `${origin}/tag/${tagMatch[1]}`;
44
- uris.push({
45
- uri: [
46
- `${base}/feed/`,
47
- `${base}/?feed=rss`,
48
- `${base}/feed/rss2/`,
49
- `${base}/?feed=rss2`
50
- ],
51
- hint: require_utils.composeHint("wordpress:tag-rss")
52
- });
53
- uris.push({
54
- uri: [`${base}/feed/atom/`, `${base}/?feed=atom`],
55
- hint: require_utils.composeHint("wordpress:tag-atom")
56
- });
57
- uris.push({
58
- uri: [`${base}/feed/rdf/`, `${base}/?feed=rdf`],
59
- hint: require_utils.composeHint("wordpress:tag-rdf")
60
- });
61
- }
62
- const authorMatch = pathname.match(authorRegex);
63
- if (authorMatch?.[1]) {
64
- archiveMatched = true;
65
- const base = `${origin}/author/${authorMatch[1]}`;
66
- uris.push({
67
- uri: [
68
- `${base}/feed/`,
69
- `${base}/?feed=rss`,
70
- `${base}/feed/rss2/`,
71
- `${base}/?feed=rss2`
72
- ],
73
- hint: require_utils.composeHint("wordpress:author-rss")
74
- });
75
- uris.push({
76
- uri: [`${base}/feed/atom/`, `${base}/?feed=atom`],
77
- hint: require_utils.composeHint("wordpress:author-atom")
78
- });
79
- uris.push({
80
- uri: [`${base}/feed/rdf/`, `${base}/?feed=rdf`],
81
- hint: require_utils.composeHint("wordpress:author-rdf")
82
- });
83
- }
84
- const dayMatch = pathname.match(dayRegex);
85
- if (dayMatch?.[1] && dayMatch?.[2] && dayMatch?.[3]) {
86
- archiveMatched = true;
87
- const base = `${origin}/${dayMatch[1]}/${dayMatch[2]}/${dayMatch[3]}`;
88
- uris.push({
89
- uri: [
90
- `${base}/feed/`,
91
- `${base}/?feed=rss`,
92
- `${base}/feed/rss2/`,
93
- `${base}/?feed=rss2`
94
- ],
95
- hint: require_utils.composeHint("wordpress:date-archive-rss")
96
- });
97
- uris.push({
98
- uri: [`${base}/feed/atom/`, `${base}/?feed=atom`],
99
- hint: require_utils.composeHint("wordpress:date-archive-atom")
100
- });
101
- uris.push({
102
- uri: [`${base}/feed/rdf/`, `${base}/?feed=rdf`],
103
- hint: require_utils.composeHint("wordpress:date-archive-rdf")
104
- });
105
- }
106
- const yearMonthMatch = pathname.match(yearMonthRegex);
107
- if (yearMonthMatch?.[1] && yearMonthMatch?.[2]) {
108
- archiveMatched = true;
109
- const base = `${origin}/${yearMonthMatch[1]}/${yearMonthMatch[2]}`;
110
- uris.push({
111
- uri: [
112
- `${base}/feed/`,
113
- `${base}/?feed=rss`,
114
- `${base}/feed/rss2/`,
115
- `${base}/?feed=rss2`
116
- ],
117
- hint: require_utils.composeHint("wordpress:date-archive-rss")
118
- });
119
- uris.push({
120
- uri: [`${base}/feed/atom/`, `${base}/?feed=atom`],
121
- hint: require_utils.composeHint("wordpress:date-archive-atom")
122
- });
123
- uris.push({
124
- uri: [`${base}/feed/rdf/`, `${base}/?feed=rdf`],
125
- hint: require_utils.composeHint("wordpress:date-archive-rdf")
126
- });
127
- }
128
- const yearMatch = pathname.match(yearRegex);
129
- if (yearMatch?.[1]) {
130
- archiveMatched = true;
131
- const base = `${origin}/${yearMatch[1]}`;
132
- uris.push({
133
- uri: [
134
- `${base}/feed/`,
135
- `${base}/?feed=rss`,
136
- `${base}/feed/rss2/`,
137
- `${base}/?feed=rss2`
138
- ],
139
- hint: require_utils.composeHint("wordpress:date-archive-rss")
140
- });
141
- uris.push({
142
- uri: [`${base}/feed/atom/`, `${base}/?feed=atom`],
143
- hint: require_utils.composeHint("wordpress:date-archive-atom")
144
- });
145
- uris.push({
146
- uri: [`${base}/feed/rdf/`, `${base}/?feed=rdf`],
147
- hint: require_utils.composeHint("wordpress:date-archive-rdf")
148
- });
149
- }
150
- const segments = pathname.split("/").filter(Boolean);
151
- if (!archiveMatched && segments.length > 0 && !segments.includes("feed")) {
152
- const base = `${origin}${pathname.replace(trailingSlashRegex, "")}`;
153
- uris.push({
154
- uri: [
155
- `${base}/feed/`,
156
- `${base}/?feed=rss`,
157
- `${base}/feed/rss2/`,
158
- `${base}/?feed=rss2`
159
- ],
160
- hint: require_utils.composeHint("wordpress:post-comments-rss")
161
- });
162
- uris.push({
163
- uri: [`${base}/feed/atom/`, `${base}/?feed=atom`],
164
- hint: require_utils.composeHint("wordpress:post-comments-atom")
165
- });
166
- uris.push({
167
- uri: [`${base}/feed/rdf/`, `${base}/?feed=rdf`],
168
- hint: require_utils.composeHint("wordpress:post-comments-rdf")
169
- });
170
- }
171
- uris.push({
172
- uri: [
173
- `${origin}/feed/`,
174
- `${origin}/?feed=rss`,
175
- `${origin}/feed/rss2/`,
176
- `${origin}/?feed=rss2`
177
- ],
178
- hint: require_utils.composeHint("wordpress:posts-rss")
179
- });
180
- uris.push({
181
- uri: [`${origin}/feed/atom/`, `${origin}/?feed=atom`],
182
- hint: require_utils.composeHint("wordpress:posts-atom")
183
- });
184
- uris.push({
185
- uri: [`${origin}/feed/rdf/`, `${origin}/?feed=rdf`],
186
- hint: require_utils.composeHint("wordpress:posts-rdf")
187
- });
188
- uris.push({
189
- uri: [
190
- `${origin}/comments/feed/`,
191
- `${origin}/?feed=comments-rss`,
192
- `${origin}/comments/feed/rss2/`,
193
- `${origin}/?feed=comments-rss2`
194
- ],
195
- hint: require_utils.composeHint("wordpress:comments-rss")
196
- });
197
- uris.push({
198
- uri: [`${origin}/comments/feed/atom/`, `${origin}/?feed=comments-atom`],
199
- hint: require_utils.composeHint("wordpress:comments-atom")
200
- });
201
- uris.push({
202
- uri: [`${origin}/comments/feed/rdf/`, `${origin}/?feed=comments-rdf`],
203
- hint: require_utils.composeHint("wordpress:comments-rdf")
204
- });
205
- return uris;
206
- }
207
- };
208
- //#endregion
209
- exports.wordpressHandler = wordpressHandler;
@@ -1,10 +0,0 @@
1
- const require_utils = require("../../../common/utils.cjs");
2
- //#region src/feeds/platform/handlers/wpengine.ts
3
- const wpengineHandler = {
4
- match: (url) => {
5
- return require_utils.isSubdomainOf(url, ["wpenginepowered.com", "wpengine.com"]);
6
- },
7
- resolve: require("./wordpress.cjs").wordpressHandler.resolve
8
- };
9
- //#endregion
10
- exports.wpengineHandler = wpengineHandler;