cross-seed 6.13.6 → 7.0.0-10

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 (255) hide show
  1. package/dist/Result.d.ts +27 -0
  2. package/dist/action.d.ts +34 -0
  3. package/dist/action.js +2 -1
  4. package/dist/action.js.map +1 -1
  5. package/dist/arr.d.ts +31 -0
  6. package/dist/arr.js +107 -39
  7. package/dist/arr.js.map +1 -1
  8. package/dist/auth.d.ts +3 -0
  9. package/dist/auth.js +9 -6
  10. package/dist/auth.js.map +1 -1
  11. package/dist/clients/Deluge.d.ts +153 -0
  12. package/dist/clients/Deluge.js +8 -7
  13. package/dist/clients/Deluge.js.map +1 -1
  14. package/dist/clients/QBittorrent.d.ts +218 -0
  15. package/dist/clients/QBittorrent.js +3 -2
  16. package/dist/clients/QBittorrent.js.map +1 -1
  17. package/dist/clients/RTorrent.d.ts +43 -0
  18. package/dist/clients/RTorrent.js +8 -4
  19. package/dist/clients/RTorrent.js.map +1 -1
  20. package/dist/clients/TorrentClient.d.ts +108 -0
  21. package/dist/clients/TorrentClient.js +137 -67
  22. package/dist/clients/TorrentClient.js.map +1 -1
  23. package/dist/clients/Transmission.d.ts +43 -0
  24. package/dist/clients/Transmission.js +4 -3
  25. package/dist/clients/Transmission.js.map +1 -1
  26. package/dist/cmd.d.ts +2 -0
  27. package/dist/cmd.js +42 -110
  28. package/dist/cmd.js.map +1 -1
  29. package/dist/configSchema.d.ts +1 -0
  30. package/dist/configSchema.js +1 -666
  31. package/dist/configSchema.js.map +1 -1
  32. package/dist/configuration.d.ts +63 -0
  33. package/dist/configuration.js +263 -24
  34. package/dist/configuration.js.map +1 -1
  35. package/dist/constants.d.ts +108 -0
  36. package/dist/constants.js +2 -32
  37. package/dist/constants.js.map +1 -1
  38. package/dist/dataFiles.d.ts +8 -0
  39. package/dist/dataFiles.js +21 -6
  40. package/dist/dataFiles.js.map +1 -1
  41. package/dist/db.d.ts +14 -0
  42. package/dist/db.js +76 -5
  43. package/dist/db.js.map +1 -1
  44. package/dist/dbConfig.d.ts +4 -0
  45. package/dist/dbConfig.js +67 -0
  46. package/dist/dbConfig.js.map +1 -0
  47. package/dist/decide.d.ts +25 -0
  48. package/dist/decide.js +4 -4
  49. package/dist/decide.js.map +1 -1
  50. package/dist/diagnostics/db.d.ts +21 -0
  51. package/dist/diagnostics/db.js +107 -0
  52. package/dist/diagnostics/db.js.map +1 -0
  53. package/dist/diff.d.ts +1 -0
  54. package/dist/errors.d.ts +3 -0
  55. package/dist/errors.js +0 -9
  56. package/dist/errors.js.map +1 -1
  57. package/dist/indexers.d.ts +105 -0
  58. package/dist/indexers.js +82 -14
  59. package/dist/indexers.js.map +1 -1
  60. package/dist/inject.d.ts +2 -0
  61. package/dist/jobs.d.ts +29 -0
  62. package/dist/jobs.js +14 -9
  63. package/dist/jobs.js.map +1 -1
  64. package/dist/logger.d.ts +29 -0
  65. package/dist/logger.js +18 -4
  66. package/dist/logger.js.map +1 -1
  67. package/dist/migrations/00-initialSchema.d.ts +9 -0
  68. package/dist/migrations/01-jobs.d.ts +9 -0
  69. package/dist/migrations/02-timestamps.d.ts +9 -0
  70. package/dist/migrations/03-rateLimits.d.ts +9 -0
  71. package/dist/migrations/04-auth.d.ts +9 -0
  72. package/dist/migrations/04-auth.js +1 -1
  73. package/dist/migrations/04-auth.js.map +1 -1
  74. package/dist/migrations/05-caps.d.ts +9 -0
  75. package/dist/migrations/06-uniqueDecisions.d.ts +9 -0
  76. package/dist/migrations/07-limits.d.ts +9 -0
  77. package/dist/migrations/08-rss.d.ts +9 -0
  78. package/dist/migrations/09-clientAndDataSearchees.d.ts +9 -0
  79. package/dist/migrations/10-indexerNameAudioBookCaps.d.ts +9 -0
  80. package/dist/migrations/11-trackers.d.ts +9 -0
  81. package/dist/migrations/12-user-auth.d.ts +9 -0
  82. package/dist/migrations/12-user-auth.js +22 -0
  83. package/dist/migrations/12-user-auth.js.map +1 -0
  84. package/dist/migrations/13-settings.d.ts +9 -0
  85. package/dist/migrations/13-settings.js +23 -0
  86. package/dist/migrations/13-settings.js.map +1 -0
  87. package/dist/migrations/14-indexer-enabled-flag.d.ts +9 -0
  88. package/dist/migrations/14-indexer-enabled-flag.js +12 -0
  89. package/dist/migrations/14-indexer-enabled-flag.js.map +1 -0
  90. package/dist/migrations/15-remove-url-unique-constraint.d.ts +9 -0
  91. package/dist/migrations/15-remove-url-unique-constraint.js +14 -0
  92. package/dist/migrations/15-remove-url-unique-constraint.js.map +1 -0
  93. package/dist/migrations/16-prune-inactive-indexers.d.ts +9 -0
  94. package/dist/migrations/16-prune-inactive-indexers.js +17 -0
  95. package/dist/migrations/16-prune-inactive-indexers.js.map +1 -0
  96. package/dist/migrations/migrations.d.ts +13 -0
  97. package/dist/migrations/migrations.js +10 -0
  98. package/dist/migrations/migrations.js.map +1 -1
  99. package/dist/parseTorrent.d.ts +53 -0
  100. package/dist/pipeline.d.ts +41 -0
  101. package/dist/pipeline.js +64 -13
  102. package/dist/pipeline.js.map +1 -1
  103. package/dist/preFilter.d.ts +25 -0
  104. package/dist/preFilter.js +15 -15
  105. package/dist/preFilter.js.map +1 -1
  106. package/dist/problems/linking.d.ts +2 -0
  107. package/dist/problems/linking.js +80 -0
  108. package/dist/problems/linking.js.map +1 -0
  109. package/dist/problems/path.d.ts +22 -0
  110. package/dist/problems/path.js +96 -0
  111. package/dist/problems/path.js.map +1 -0
  112. package/dist/problems.d.ts +13 -0
  113. package/dist/problems.js +48 -0
  114. package/dist/problems.js.map +1 -0
  115. package/dist/pushNotifier.d.ts +19 -0
  116. package/dist/routes/baseApi.d.ts +2 -0
  117. package/dist/routes/baseApi.js +354 -0
  118. package/dist/routes/baseApi.js.map +1 -0
  119. package/dist/routes/indexerApi.d.ts +6 -0
  120. package/dist/routes/indexerApi.js +165 -0
  121. package/dist/routes/indexerApi.js.map +1 -0
  122. package/dist/routes/staticFrontendPlugin.d.ts +4 -0
  123. package/dist/routes/staticFrontendPlugin.js +61 -0
  124. package/dist/routes/staticFrontendPlugin.js.map +1 -0
  125. package/dist/runtimeConfig.d.ts +6 -0
  126. package/dist/runtimeConfig.js +17 -1
  127. package/dist/runtimeConfig.js.map +1 -1
  128. package/dist/searchee.d.ts +108 -0
  129. package/dist/searchee.js +38 -6
  130. package/dist/searchee.js.map +1 -1
  131. package/dist/server.d.ts +4 -0
  132. package/dist/server.js +38 -429
  133. package/dist/server.js.map +1 -1
  134. package/dist/services/indexerService.d.ts +96 -0
  135. package/dist/services/indexerService.js +287 -0
  136. package/dist/services/indexerService.js.map +1 -0
  137. package/dist/sessionCookies.d.ts +5 -0
  138. package/dist/sessionCookies.js +27 -0
  139. package/dist/sessionCookies.js.map +1 -0
  140. package/dist/startup.d.ts +25 -0
  141. package/dist/startup.js +105 -151
  142. package/dist/startup.js.map +1 -1
  143. package/dist/torrent.d.ts +69 -0
  144. package/dist/torrent.js +17 -13
  145. package/dist/torrent.js.map +1 -1
  146. package/dist/torznab.d.ts +60 -0
  147. package/dist/torznab.js +14 -89
  148. package/dist/torznab.js.map +1 -1
  149. package/dist/trpc/fastifyAdapter.d.ts +2 -0
  150. package/dist/trpc/fastifyAdapter.js +9 -0
  151. package/dist/trpc/fastifyAdapter.js.map +1 -0
  152. package/dist/trpc/index.d.ts +49 -0
  153. package/dist/trpc/index.js +53 -0
  154. package/dist/trpc/index.js.map +1 -0
  155. package/dist/trpc/routers/auth.d.ts +43 -0
  156. package/dist/trpc/routers/auth.js +116 -0
  157. package/dist/trpc/routers/auth.js.map +1 -0
  158. package/dist/trpc/routers/clients.d.ts +21 -0
  159. package/dist/trpc/routers/clients.js +65 -0
  160. package/dist/trpc/routers/clients.js.map +1 -0
  161. package/dist/trpc/routers/health.d.ts +17 -0
  162. package/dist/trpc/routers/health.js +24 -0
  163. package/dist/trpc/routers/health.js.map +1 -0
  164. package/dist/trpc/routers/index.d.ts +394 -0
  165. package/dist/trpc/routers/index.js +23 -0
  166. package/dist/trpc/routers/index.js.map +1 -0
  167. package/dist/trpc/routers/indexers.d.ts +75 -0
  168. package/dist/trpc/routers/indexers.js +79 -0
  169. package/dist/trpc/routers/indexers.js.map +1 -0
  170. package/dist/trpc/routers/jobs.d.ts +33 -0
  171. package/dist/trpc/routers/jobs.js +84 -0
  172. package/dist/trpc/routers/jobs.js.map +1 -0
  173. package/dist/trpc/routers/logs.d.ts +27 -0
  174. package/dist/trpc/routers/logs.js +91 -0
  175. package/dist/trpc/routers/logs.js.map +1 -0
  176. package/dist/trpc/routers/searchees.d.ts +51 -0
  177. package/dist/trpc/routers/searchees.js +156 -0
  178. package/dist/trpc/routers/searchees.js.map +1 -0
  179. package/dist/trpc/routers/settings.d.ts +83 -0
  180. package/dist/trpc/routers/settings.js +92 -0
  181. package/dist/trpc/routers/settings.js.map +1 -0
  182. package/dist/trpc/routers/stats.d.ts +42 -0
  183. package/dist/trpc/routers/stats.js +102 -0
  184. package/dist/trpc/routers/stats.js.map +1 -0
  185. package/dist/userAuth.d.ts +21 -0
  186. package/dist/userAuth.js +86 -0
  187. package/dist/userAuth.js.map +1 -0
  188. package/dist/utils/authUtils.d.ts +10 -0
  189. package/dist/utils/authUtils.js +24 -0
  190. package/dist/utils/authUtils.js.map +1 -0
  191. package/dist/utils/logWatcher.d.ts +28 -0
  192. package/dist/utils/logWatcher.js +229 -0
  193. package/dist/utils/logWatcher.js.map +1 -0
  194. package/dist/utils/object.d.ts +1 -0
  195. package/dist/utils/object.js +4 -0
  196. package/dist/utils/object.js.map +1 -0
  197. package/dist/utils.d.ts +172 -0
  198. package/dist/utils.js +61 -50
  199. package/dist/utils.js.map +1 -1
  200. package/dist/webui/assets/FieldInfo-sRlPRNSK.js +1 -0
  201. package/dist/webui/assets/Page-B68mlTwU.js +1 -0
  202. package/dist/webui/assets/array-field-BCFMrvoU.js +1 -0
  203. package/dist/webui/assets/badge-C5YCxEzP.js +1 -0
  204. package/dist/webui/assets/check-NQsw6yBl.js +1 -0
  205. package/dist/webui/assets/chevron-down-8PGvFYxV.js +1 -0
  206. package/dist/webui/assets/clients-DnVpwApe.js +1 -0
  207. package/dist/webui/assets/connect-wMg2zyz6.js +1 -0
  208. package/dist/webui/assets/debug-BrjwiEi2.js +1 -0
  209. package/dist/webui/assets/directories-CHpJCWNR.js +1 -0
  210. package/dist/webui/assets/duration-field-DIkKt3iw.js +1 -0
  211. package/dist/webui/assets/general-uZrUIxbI.js +1 -0
  212. package/dist/webui/assets/health-_MuvAyjo.js +1 -0
  213. package/dist/webui/assets/index-B41DM2T5.css +1 -0
  214. package/dist/webui/assets/index-BBzHsn7u.js +1 -0
  215. package/dist/webui/assets/index-Ncy0-Qo7.js +54 -0
  216. package/dist/webui/assets/index-pKWy6v1P.js +1 -0
  217. package/dist/webui/assets/jobs-B8eat0YU.js +1 -0
  218. package/dist/webui/assets/library-BB0jQ8zn.js +1 -0
  219. package/dist/webui/assets/loader-circle-Bz67bJa3.js +1 -0
  220. package/dist/webui/assets/logs-CeP28848.js +1 -0
  221. package/dist/webui/assets/search-BRBIrqaX.js +1 -0
  222. package/dist/webui/assets/select-GZr6C6eZ.js +1 -0
  223. package/dist/webui/assets/select-field-CvT0SYk8.js +1 -0
  224. package/dist/webui/assets/settings-0ZdYY8g_.js +1 -0
  225. package/dist/webui/assets/submit-button-D7DKHqAq.js +1 -0
  226. package/dist/webui/assets/switch-BeMrf8sh.js +1 -0
  227. package/dist/webui/assets/switch-field-qMXHRKhx.js +1 -0
  228. package/dist/webui/assets/table-qEFWauuw.js +1 -0
  229. package/dist/webui/assets/test-tube-DhD6uWdp.js +1 -0
  230. package/dist/webui/assets/text-field-ZnKHDUks.js +1 -0
  231. package/dist/webui/assets/time-BM9K_Fbp.js +1 -0
  232. package/dist/webui/assets/trackers-BjJuAdX3.js +7 -0
  233. package/dist/webui/assets/use-form-validation-context-D2oA54L_.js +1 -0
  234. package/dist/webui/assets/use-settings-form-submit-CXwtE1sI.js +2 -0
  235. package/dist/webui/assets/useQuery-DD10sbzn.js +1 -0
  236. package/dist/webui/index.html +13 -0
  237. package/node_modules/@cross-seed/shared/dist/configSchema.d.ts +261 -0
  238. package/node_modules/@cross-seed/shared/dist/configSchema.d.ts.map +1 -0
  239. package/node_modules/@cross-seed/shared/dist/configSchema.js +53 -0
  240. package/node_modules/@cross-seed/shared/dist/configSchema.js.map +1 -0
  241. package/node_modules/@cross-seed/shared/dist/constants.d.ts +122 -0
  242. package/node_modules/@cross-seed/shared/dist/constants.d.ts.map +1 -0
  243. package/node_modules/@cross-seed/shared/dist/constants.js +127 -0
  244. package/node_modules/@cross-seed/shared/dist/constants.js.map +1 -0
  245. package/node_modules/@cross-seed/shared/dist/tsconfig.tsbuildinfo +1 -0
  246. package/node_modules/@cross-seed/shared/dist/utils.d.ts +9 -0
  247. package/node_modules/@cross-seed/shared/dist/utils.d.ts.map +1 -0
  248. package/node_modules/@cross-seed/shared/dist/utils.js +20 -0
  249. package/node_modules/@cross-seed/shared/dist/utils.js.map +1 -0
  250. package/node_modules/@cross-seed/shared/package.json +24 -0
  251. package/package.json +25 -42
  252. package/LICENSE +0 -201
  253. package/README.md +0 -34
  254. package/dist/config.template.cjs +0 -353
  255. package/dist/config.template.cjs.map +0 -1
@@ -0,0 +1,107 @@
1
+ import { stat } from "fs/promises";
2
+ import { DatabaseSync } from "node:sqlite";
3
+ import { join } from "path";
4
+ import { appDir } from "../configuration.js";
5
+ async function statBytes(path) {
6
+ try {
7
+ return (await stat(path)).size;
8
+ }
9
+ catch (error) {
10
+ if (error.code === "ENOENT")
11
+ return null;
12
+ throw error;
13
+ }
14
+ }
15
+ export async function collectDbDiagnostics() {
16
+ const dbPath = join(appDir(), "cross-seed.db");
17
+ const walPath = `${dbPath}-wal`;
18
+ const shmPath = `${dbPath}-shm`;
19
+ try {
20
+ const [dbBytes, walBytes, shmBytes] = await Promise.all([
21
+ statBytes(dbPath),
22
+ statBytes(walPath),
23
+ statBytes(shmPath),
24
+ ]);
25
+ const diagnostics = {
26
+ path: dbPath,
27
+ sizes: { db: dbBytes, wal: walBytes, shm: shmBytes },
28
+ pageSize: null,
29
+ pageCount: null,
30
+ freelistCount: null,
31
+ freeBytes: null,
32
+ freePercent: null,
33
+ };
34
+ if (dbBytes === null)
35
+ return diagnostics;
36
+ let sqlite = null;
37
+ try {
38
+ sqlite = new DatabaseSync(dbPath, {
39
+ readOnly: true,
40
+ });
41
+ const pageSizeRow = sqlite.prepare("PRAGMA page_size").get();
42
+ const pageCountRow = sqlite.prepare("PRAGMA page_count").get();
43
+ const freelistCountRow = sqlite
44
+ .prepare("PRAGMA freelist_count")
45
+ .get();
46
+ const pageSize = typeof pageSizeRow?.page_size === "number"
47
+ ? pageSizeRow.page_size
48
+ : null;
49
+ const pageCount = typeof pageCountRow?.page_count === "number"
50
+ ? pageCountRow.page_count
51
+ : null;
52
+ const freelistCount = typeof freelistCountRow?.freelist_count === "number"
53
+ ? freelistCountRow.freelist_count
54
+ : null;
55
+ diagnostics.pageSize = pageSize;
56
+ diagnostics.pageCount = pageCount;
57
+ diagnostics.freelistCount = freelistCount;
58
+ if (pageSize !== null && freelistCount !== null) {
59
+ diagnostics.freeBytes = pageSize * freelistCount;
60
+ }
61
+ if (pageSize && pageCount && diagnostics.freeBytes !== null) {
62
+ const totalBytes = pageSize * pageCount;
63
+ if (totalBytes > 0) {
64
+ diagnostics.freePercent =
65
+ (diagnostics.freeBytes / totalBytes) * 100;
66
+ }
67
+ }
68
+ try {
69
+ const dbstatRows = sqlite
70
+ .prepare(`SELECT name, SUM(pgsize) AS bytes, COUNT(*) AS pages
71
+ FROM dbstat
72
+ GROUP BY name
73
+ ORDER BY bytes DESC
74
+ LIMIT 10`)
75
+ .all();
76
+ diagnostics.dbstatTop = dbstatRows;
77
+ }
78
+ catch (error) {
79
+ diagnostics.dbstatError =
80
+ error instanceof Error
81
+ ? error.message
82
+ : String(error ?? "");
83
+ }
84
+ }
85
+ catch (error) {
86
+ diagnostics.error =
87
+ error instanceof Error ? error.message : String(error ?? "");
88
+ }
89
+ finally {
90
+ sqlite?.close();
91
+ }
92
+ return diagnostics;
93
+ }
94
+ catch (error) {
95
+ return {
96
+ path: dbPath,
97
+ sizes: { db: null, wal: null, shm: null },
98
+ pageSize: null,
99
+ pageCount: null,
100
+ freelistCount: null,
101
+ freeBytes: null,
102
+ freePercent: null,
103
+ error: error instanceof Error ? error.message : String(error ?? ""),
104
+ };
105
+ }
106
+ }
107
+ //# sourceMappingURL=db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/diagnostics/db.ts"],"names":[],"mappings":"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"}
package/dist/diff.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare function diffCmd(first: string, second: string): Promise<void>;
@@ -0,0 +1,3 @@
1
+ export declare class CrossSeedError extends Error {
2
+ constructor(message?: string, options?: ErrorOptions);
3
+ }
package/dist/errors.js CHANGED
@@ -1,16 +1,7 @@
1
- import { logger } from "./logger.js";
2
1
  export class CrossSeedError extends Error {
3
2
  constructor(message, options) {
4
3
  super(message, options);
5
4
  delete this.stack;
6
5
  }
7
6
  }
8
- export function exitOnCrossSeedErrors(e) {
9
- logger ? logger.error(e) : console.error(e);
10
- if (e instanceof CrossSeedError) {
11
- process.exitCode = 1;
12
- return;
13
- }
14
- throw e;
15
- }
16
7
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,OAAO,cAAe,SAAQ,KAAK;IACxC,YAAY,OAAgB,EAAE,OAAsB;QACnD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;CACD;AAED,MAAM,UAAU,qBAAqB,CAAC,CAAC;IACtC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,CAAC,YAAY,cAAc,EAAE,CAAC;QACjC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACR,CAAC;IACD,MAAM,CAAC,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAe,SAAQ,KAAK;IACxC,YAAY,OAAgB,EAAE,OAAsB;QACnD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;CACD"}
@@ -0,0 +1,105 @@
1
+ import type { Problem } from "./problems.js";
2
+ export declare enum IndexerStatus {
3
+ /**
4
+ * equivalent to null
5
+ */
6
+ OK = "OK",
7
+ RATE_LIMITED = "RATE_LIMITED",
8
+ UNKNOWN_ERROR = "UNKNOWN_ERROR"
9
+ }
10
+ export interface DbIndexer {
11
+ id: number;
12
+ name: string | null;
13
+ url: string;
14
+ apikey: string;
15
+ trackers: string | null;
16
+ /**
17
+ * When false, the indexer has been disabled by the user and should not be
18
+ * used for searching or RSS, but can be used for fetching caps or
19
+ * cross-seed restore.
20
+ * Corresponds to indexer enabled bit in Prowlarr.
21
+ */
22
+ enabled: boolean;
23
+ status: IndexerStatus;
24
+ retryAfter: number;
25
+ searchCap: boolean;
26
+ tvSearchCap: boolean;
27
+ movieSearchCap: boolean;
28
+ musicSearchCap: boolean;
29
+ audioSearchCap: boolean;
30
+ bookSearchCap: boolean;
31
+ tvIdCaps: string | null;
32
+ movieIdCaps: string | null;
33
+ catCaps: string | null;
34
+ limitsCaps: string | null;
35
+ }
36
+ export interface IndexerCategories {
37
+ tv: boolean;
38
+ movie: boolean;
39
+ anime: boolean;
40
+ xxx: boolean;
41
+ audio: boolean;
42
+ book: boolean;
43
+ /**
44
+ * If the indexer has a category not covered by the above.
45
+ */
46
+ additional: boolean;
47
+ }
48
+ export interface IndexerLimits {
49
+ default: number;
50
+ max: number;
51
+ }
52
+ export interface Caps {
53
+ search: boolean;
54
+ tvSearch: boolean;
55
+ movieSearch: boolean;
56
+ musicSearch: boolean;
57
+ audioSearch: boolean;
58
+ bookSearch: boolean;
59
+ movieIdSearch: IdSearchCaps;
60
+ tvIdSearch: IdSearchCaps;
61
+ categories: IndexerCategories;
62
+ limits: IndexerLimits;
63
+ }
64
+ export interface IdSearchCaps {
65
+ tvdbId?: boolean;
66
+ tmdbId?: boolean;
67
+ imdbId?: boolean;
68
+ tvMazeId?: boolean;
69
+ }
70
+ export interface Indexer {
71
+ id: number;
72
+ name: string | null;
73
+ url: string;
74
+ apikey: string;
75
+ trackers: string[] | null;
76
+ enabled: boolean;
77
+ status: IndexerStatus;
78
+ retryAfter: number;
79
+ searchCap: boolean;
80
+ tvSearchCap: boolean;
81
+ movieSearchCap: boolean;
82
+ musicSearchCap: boolean;
83
+ audioSearchCap: boolean;
84
+ bookSearchCap: boolean;
85
+ tvIdCaps: IdSearchCaps;
86
+ movieIdCaps: IdSearchCaps;
87
+ categories: IndexerCategories;
88
+ limits: IndexerLimits;
89
+ }
90
+ export declare const ALL_CAPS: Caps;
91
+ export declare function deserialize(dbIndexer: DbIndexer): Indexer;
92
+ /**
93
+ * All indexers that users currently have configured regardless of whether they are working.
94
+ */
95
+ export declare function getAllIndexers(): Promise<Indexer[]>;
96
+ /**
97
+ * Indexers that are currently working and enabled.
98
+ */
99
+ export declare function getEnabledIndexers(): Promise<Indexer[]>;
100
+ export declare function updateIndexerStatus(status: IndexerStatus, retryAfter: number, indexerIds: number[], indexerNames: Set<string>): Promise<void>;
101
+ export declare function updateSearchTimestamps(name: string, indexerIds: number[]): Promise<void>;
102
+ export declare function updateIndexerCapsById(indexerId: number, caps: Caps): Promise<void>;
103
+ export declare function clearIndexerFailures(): Promise<void>;
104
+ export declare function getHostToNameMap(): Promise<Map<string, string>>;
105
+ export declare function collectIndexerProblems(): Promise<Problem[]>;
package/dist/indexers.js CHANGED
@@ -16,7 +16,7 @@ const allFields = {
16
16
  name: "name",
17
17
  apikey: "apikey",
18
18
  trackers: "trackers",
19
- active: "active",
19
+ enabled: "enabled",
20
20
  status: "status",
21
21
  retryAfter: "retry_after",
22
22
  searchCap: "search_cap",
@@ -63,10 +63,17 @@ export const ALL_CAPS = {
63
63
  tvMazeId: true,
64
64
  },
65
65
  };
66
- function deserialize(dbIndexer) {
66
+ export function deserialize(dbIndexer) {
67
67
  const { trackers, tvIdCaps, movieIdCaps, catCaps, limitsCaps, ...rest } = dbIndexer;
68
68
  return {
69
69
  ...rest,
70
+ enabled: Boolean(rest.enabled),
71
+ searchCap: Boolean(rest.searchCap),
72
+ tvSearchCap: Boolean(rest.tvSearchCap),
73
+ movieSearchCap: Boolean(rest.movieSearchCap),
74
+ musicSearchCap: Boolean(rest.musicSearchCap),
75
+ audioSearchCap: Boolean(rest.audioSearchCap),
76
+ bookSearchCap: Boolean(rest.bookSearchCap),
70
77
  trackers: JSON.parse(trackers ?? "null"),
71
78
  tvIdCaps: JSON.parse(tvIdCaps ?? "null"),
72
79
  movieIdCaps: JSON.parse(movieIdCaps ?? "null"),
@@ -75,19 +82,13 @@ function deserialize(dbIndexer) {
75
82
  };
76
83
  }
77
84
  /**
78
- * All indexers in the database, regardless of whether they are currently configured or working.
85
+ * All indexers that users currently have configured regardless of whether they are working.
79
86
  */
80
87
  export async function getAllIndexers() {
81
88
  return (await db("indexer").select(allFields)).map(deserialize);
82
89
  }
83
90
  /**
84
- * All indexers that users currently have configured regardless of whether they are working.
85
- */
86
- export async function getActiveIndexers() {
87
- return (await db("indexer").where({ active: true }).select(allFields)).map(deserialize);
88
- }
89
- /**
90
- * Indexers that are currently working.
91
+ * Indexers that are currently working and enabled.
91
92
  */
92
93
  export async function getEnabledIndexers() {
93
94
  return (await db("indexer")
@@ -103,7 +104,7 @@ export async function getEnabledIndexers() {
103
104
  cat_caps: null,
104
105
  limits_caps: null,
105
106
  })
106
- .where({ active: true, search_cap: true })
107
+ .where({ enabled: true, search_cap: true })
107
108
  .where((i) => i
108
109
  .where({ status: null })
109
110
  .orWhere({ status: IndexerStatus.OK })
@@ -126,10 +127,10 @@ export async function updateSearchTimestamps(name, indexerIds) {
126
127
  for (const indexerId of indexerIds) {
127
128
  await db.transaction(async (trx) => {
128
129
  const now = Date.now();
129
- const { id: searchee_id } = await trx("searchee")
130
+ const { id: searchee_id } = (await trx("searchee")
130
131
  .where({ name })
131
132
  .select("id")
132
- .first();
133
+ .first());
133
134
  await trx("timestamp")
134
135
  .insert({
135
136
  searchee_id,
@@ -138,7 +139,7 @@ export async function updateSearchTimestamps(name, indexerIds) {
138
139
  first_searched: now,
139
140
  })
140
141
  .onConflict(["searchee_id", "indexer_id"])
141
- .merge(["searchee_id", "indexer_id", "last_searched"]);
142
+ .merge(["last_searched"]);
142
143
  });
143
144
  }
144
145
  }
@@ -177,4 +178,71 @@ export async function getHostToNameMap() {
177
178
  }
178
179
  return hostToName;
179
180
  }
181
+ function indexerProblemId(suffix, indexerId) {
182
+ return `indexer:${suffix}:${indexerId}`;
183
+ }
184
+ function indexerDisplayName(url, name) {
185
+ return name?.trim() || url;
186
+ }
187
+ export async function collectIndexerProblems() {
188
+ const problems = [];
189
+ const indexers = await getAllIndexers();
190
+ if (!indexers.length) {
191
+ problems.push({
192
+ id: "indexer:none-configured",
193
+ severity: "error",
194
+ summary: "No indexers configured.",
195
+ details: "Add at least one indexer so cross-seed can search for releases.",
196
+ });
197
+ return problems;
198
+ }
199
+ const enabledIndexers = await getEnabledIndexers();
200
+ if (!enabledIndexers.length) {
201
+ problems.push({
202
+ id: "indexer:none-enabled",
203
+ severity: "error",
204
+ summary: "All configured indexers are disabled.",
205
+ details: "Enable at least one indexer so cross-seed can run searches.",
206
+ });
207
+ }
208
+ const now = Date.now();
209
+ for (const indexer of indexers) {
210
+ const name = indexerDisplayName(indexer.url, indexer.name);
211
+ if (!indexer.searchCap) {
212
+ problems.push({
213
+ id: indexerProblemId("no-search-cap", indexer.id),
214
+ severity: "warning",
215
+ summary: `Indexer "${name}" does not support searching.`,
216
+ details: "Update the indexer's capabilities (caps) in Prowlarr/Jackett or disable it for searching.",
217
+ });
218
+ }
219
+ if (indexer.status === IndexerStatus.RATE_LIMITED &&
220
+ typeof indexer.retryAfter === "number" &&
221
+ indexer.retryAfter > now) {
222
+ problems.push({
223
+ id: indexerProblemId("rate-limited", indexer.id),
224
+ severity: "warning",
225
+ summary: `Indexer "${name}" is rate limited.`,
226
+ details: `Cross-seed will retry after ${humanReadableDate(indexer.retryAfter)}.`,
227
+ });
228
+ }
229
+ if (indexer.status === IndexerStatus.UNKNOWN_ERROR) {
230
+ problems.push({
231
+ id: indexerProblemId("unknown-error", indexer.id),
232
+ severity: "warning",
233
+ summary: `Indexer "${name}" recently failed.`,
234
+ details: "Check logs for the underlying error and verify the indexer configuration.",
235
+ });
236
+ }
237
+ if (!indexer.enabled) {
238
+ problems.push({
239
+ id: indexerProblemId("disabled", indexer.id),
240
+ severity: "info",
241
+ summary: `Indexer "${name}" is disabled.`,
242
+ details: "Re-enable the indexer if you want cross-seed to include it in searches.",
243
+ });
244
+ }
245
+ }
246
+ return problems;
247
+ }
180
248
  //# sourceMappingURL=indexers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexers.js","sourceRoot":"","sources":["../src/indexers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"indexers.js","sourceRoot":"","sources":["../src/indexers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function injectSavedTorrents(): Promise<void>;
2
+ export declare function restoreFromTorrentCache(): Promise<void>;
package/dist/jobs.d.ts ADDED
@@ -0,0 +1,29 @@
1
+ import { RuntimeConfig } from "./runtimeConfig.js";
2
+ export declare enum JobName {
3
+ RSS = "rss",
4
+ SEARCH = "search",
5
+ UPDATE_INDEXER_CAPS = "updateIndexerCaps",
6
+ INJECT = "inject",
7
+ CLEANUP = "cleanup"
8
+ }
9
+ declare class Job {
10
+ name: JobName;
11
+ cadence: number;
12
+ exec: () => Promise<void>;
13
+ isActive: boolean;
14
+ runAheadOfSchedule: boolean;
15
+ delayNextRun: boolean;
16
+ configOverride: Partial<RuntimeConfig>;
17
+ shouldRunFn: () => boolean;
18
+ constructor(name: JobName, cadence: number, exec: () => Promise<void>, shouldRunFn?: () => boolean);
19
+ shouldRun(): boolean;
20
+ run(): Promise<boolean>;
21
+ }
22
+ export declare function getJobs(): Job[];
23
+ export declare function getJobLastRun(name: JobName): Promise<number | undefined>;
24
+ export declare function checkJobs(options?: {
25
+ isFirstRun: boolean;
26
+ useQueue: boolean;
27
+ }): Promise<void>;
28
+ export declare function jobsLoop(): Promise<void>;
29
+ export {};
package/dist/jobs.js CHANGED
@@ -1,9 +1,8 @@
1
1
  import ms from "ms";
2
2
  import { Action } from "./constants.js";
3
3
  import { cleanupDB, db } from "./db.js";
4
- import { exitOnCrossSeedErrors } from "./errors.js";
5
4
  import { injectSavedTorrents } from "./inject.js";
6
- import { Label, logger } from "./logger.js";
5
+ import { Label, logger, exitOnCrossSeedErrors } from "./logger.js";
7
6
  import { bulkSearch, scanRssFeeds } from "./pipeline.js";
8
7
  import { getRuntimeConfig } from "./runtimeConfig.js";
9
8
  import { updateCaps } from "./torznab.js";
@@ -25,7 +24,8 @@ class Job {
25
24
  runAheadOfSchedule;
26
25
  delayNextRun;
27
26
  configOverride;
28
- constructor(name, cadence, exec) {
27
+ shouldRunFn;
28
+ constructor(name, cadence, exec, shouldRunFn = () => true) {
29
29
  this.name = name;
30
30
  this.cadence = cadence;
31
31
  this.exec = exec;
@@ -33,6 +33,10 @@ class Job {
33
33
  this.runAheadOfSchedule = false;
34
34
  this.delayNextRun = false;
35
35
  this.configOverride = {};
36
+ this.shouldRunFn = shouldRunFn;
37
+ }
38
+ shouldRun() {
39
+ return this.shouldRunFn();
36
40
  }
37
41
  async run() {
38
42
  if (this.isActive)
@@ -59,16 +63,14 @@ class Job {
59
63
  }
60
64
  }
61
65
  function createJobs() {
62
- const { action, rssCadence, searchCadence, torznab } = getRuntimeConfig();
66
+ const { action, rssCadence, searchCadence } = getRuntimeConfig();
63
67
  if (rssCadence) {
64
- jobs.push(new Job(JobName.RSS, rssCadence, scanRssFeeds));
68
+ jobs.push(new Job(JobName.RSS, rssCadence, scanRssFeeds, () => !!getRuntimeConfig().rssCadence));
65
69
  }
66
70
  if (searchCadence) {
67
- jobs.push(new Job(JobName.SEARCH, searchCadence, bulkSearch));
68
- }
69
- if (torznab.length > 0) {
70
- jobs.push(new Job(JobName.UPDATE_INDEXER_CAPS, ms("1 day"), updateCaps));
71
+ jobs.push(new Job(JobName.SEARCH, searchCadence, bulkSearch, () => !!getRuntimeConfig().searchCadence));
71
72
  }
73
+ jobs.push(new Job(JobName.UPDATE_INDEXER_CAPS, ms("1 day"), updateCaps));
72
74
  if (action === Action.INJECT) {
73
75
  jobs.push(new Job(JobName.INJECT, ms("1 hour"), injectSavedTorrents));
74
76
  }
@@ -99,6 +101,9 @@ export async function checkJobs(options = { isFirstRun: false, useQueue: false }
99
101
  return withMutex(Mutex.CHECK_JOBS, { useQueue: options.useQueue }, async () => {
100
102
  const now = Date.now();
101
103
  for (const job of jobs) {
104
+ if (!job.shouldRun()) {
105
+ continue;
106
+ }
102
107
  const lastRun = await getJobLastRun(job.name);
103
108
  const eligibilityTs = lastRun ? lastRun + job.cadence : now;
104
109
  if (options.isFirstRun) {
package/dist/jobs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"jobs.js","sourceRoot":"","sources":["../src/jobs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jobs.js","sourceRoot":"","sources":["../src/jobs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import winston from "winston";
2
+ export declare enum Label {
3
+ QBITTORRENT = "qbittorrent",
4
+ RTORRENT = "rtorrent",
5
+ TRANSMISSION = "transmission",
6
+ DELUGE = "deluge",
7
+ DECIDE = "decide",
8
+ PREFILTER = "prefilter",
9
+ CONFIG = "config",
10
+ TORZNAB = "torznab",
11
+ SERVER = "server",
12
+ SCHEDULER = "scheduler",
13
+ SEARCH = "search",
14
+ RSS = "rss",
15
+ ANNOUNCE = "announce",
16
+ WEBHOOK = "webhook",
17
+ INJECT = "inject",
18
+ PERF = "perf",
19
+ CLEANUP = "cleanup",
20
+ ARRS = "arrs",
21
+ RADARR = "radarr",
22
+ SONARR = "sonarr",
23
+ AUTH = "auth",
24
+ INDEX = "index"
25
+ }
26
+ export declare let logger: winston.Logger;
27
+ export declare function logOnce(cacheKey: string, cb: () => void, ttl?: number): void;
28
+ export declare function initializeLogger(options: Record<string, unknown>): void;
29
+ export declare function exitOnCrossSeedErrors(error: unknown): void;
package/dist/logger.js CHANGED
@@ -3,8 +3,9 @@ import stripAnsi from "strip-ansi";
3
3
  import winston from "winston";
4
4
  import DailyRotateFile from "winston-daily-rotate-file";
5
5
  import { parseClientEntry } from "./clients/TorrentClient.js";
6
- import { appDir, createAppDirHierarchy } from "./configuration.js";
6
+ import { appDir } from "./configuration.js";
7
7
  import { LOGS_FOLDER } from "./constants.js";
8
+ import { CrossSeedError } from "./errors.js";
8
9
  export var Label;
9
10
  (function (Label) {
10
11
  Label["QBITTORRENT"] = "qbittorrent";
@@ -13,10 +14,9 @@ export var Label;
13
14
  Label["DELUGE"] = "deluge";
14
15
  Label["DECIDE"] = "decide";
15
16
  Label["PREFILTER"] = "prefilter";
16
- Label["CONFIGDUMP"] = "configdump";
17
+ Label["CONFIG"] = "config";
17
18
  Label["TORZNAB"] = "torznab";
18
19
  Label["SERVER"] = "server";
19
- Label["STARTUP"] = "startup";
20
20
  Label["SCHEDULER"] = "scheduler";
21
21
  Label["SEARCH"] = "search";
22
22
  Label["RSS"] = "rss";
@@ -28,6 +28,8 @@ export var Label;
28
28
  Label["ARRS"] = "arrs";
29
29
  Label["RADARR"] = "radarr";
30
30
  Label["SONARR"] = "sonarr";
31
+ Label["AUTH"] = "auth";
32
+ Label["INDEX"] = "index";
31
33
  })(Label || (Label = {}));
32
34
  export let logger;
33
35
  const REDACTED_MSG = "[REDACTED]";
@@ -92,7 +94,6 @@ export function logOnce(cacheKey, cb, ttl) {
92
94
  }
93
95
  }
94
96
  export function initializeLogger(options) {
95
- createAppDirHierarchy();
96
97
  logger = winston.createLogger({
97
98
  level: "info",
98
99
  format: winston.format.combine(winston.format.timestamp({
@@ -140,4 +141,17 @@ export function initializeLogger(options) {
140
141
  ],
141
142
  });
142
143
  }
144
+ export function exitOnCrossSeedErrors(error) {
145
+ if (logger) {
146
+ logger.error(error);
147
+ }
148
+ else {
149
+ console.error(error);
150
+ }
151
+ if (error instanceof CrossSeedError) {
152
+ process.exitCode = 1;
153
+ return;
154
+ }
155
+ throw error;
156
+ }
143
157
  //# sourceMappingURL=logger.js.map