cross-seed 6.13.6 → 7.0.0-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 (247) hide show
  1. package/README.md +12 -13
  2. package/dist/Result.d.ts +27 -0
  3. package/dist/action.d.ts +34 -0
  4. package/dist/action.js +2 -1
  5. package/dist/action.js.map +1 -1
  6. package/dist/arr.d.ts +31 -0
  7. package/dist/arr.js +107 -39
  8. package/dist/arr.js.map +1 -1
  9. package/dist/auth.d.ts +3 -0
  10. package/dist/auth.js +9 -6
  11. package/dist/auth.js.map +1 -1
  12. package/dist/clients/Deluge.d.ts +153 -0
  13. package/dist/clients/Deluge.js +6 -6
  14. package/dist/clients/Deluge.js.map +1 -1
  15. package/dist/clients/QBittorrent.d.ts +218 -0
  16. package/dist/clients/RTorrent.d.ts +43 -0
  17. package/dist/clients/RTorrent.js +6 -3
  18. package/dist/clients/RTorrent.js.map +1 -1
  19. package/dist/clients/TorrentClient.d.ts +108 -0
  20. package/dist/clients/TorrentClient.js +136 -67
  21. package/dist/clients/TorrentClient.js.map +1 -1
  22. package/dist/clients/Transmission.d.ts +43 -0
  23. package/dist/clients/Transmission.js +2 -2
  24. package/dist/clients/Transmission.js.map +1 -1
  25. package/dist/cmd.d.ts +2 -0
  26. package/dist/cmd.js +42 -110
  27. package/dist/cmd.js.map +1 -1
  28. package/dist/configSchema.d.ts +1 -0
  29. package/dist/configSchema.js +1 -666
  30. package/dist/configSchema.js.map +1 -1
  31. package/dist/configuration.d.ts +63 -0
  32. package/dist/configuration.js +263 -24
  33. package/dist/configuration.js.map +1 -1
  34. package/dist/constants.d.ts +108 -0
  35. package/dist/constants.js +2 -32
  36. package/dist/constants.js.map +1 -1
  37. package/dist/dataFiles.d.ts +8 -0
  38. package/dist/dataFiles.js +21 -6
  39. package/dist/dataFiles.js.map +1 -1
  40. package/dist/db.d.ts +3 -0
  41. package/dist/dbConfig.d.ts +4 -0
  42. package/dist/dbConfig.js +67 -0
  43. package/dist/dbConfig.js.map +1 -0
  44. package/dist/decide.d.ts +25 -0
  45. package/dist/decide.js +4 -4
  46. package/dist/decide.js.map +1 -1
  47. package/dist/diff.d.ts +1 -0
  48. package/dist/errors.d.ts +3 -0
  49. package/dist/errors.js +0 -9
  50. package/dist/errors.js.map +1 -1
  51. package/dist/indexers.d.ts +105 -0
  52. package/dist/indexers.js +82 -14
  53. package/dist/indexers.js.map +1 -1
  54. package/dist/inject.d.ts +2 -0
  55. package/dist/jobs.d.ts +29 -0
  56. package/dist/jobs.js +14 -9
  57. package/dist/jobs.js.map +1 -1
  58. package/dist/logger.d.ts +29 -0
  59. package/dist/logger.js +18 -4
  60. package/dist/logger.js.map +1 -1
  61. package/dist/migrations/00-initialSchema.d.ts +9 -0
  62. package/dist/migrations/01-jobs.d.ts +9 -0
  63. package/dist/migrations/02-timestamps.d.ts +9 -0
  64. package/dist/migrations/03-rateLimits.d.ts +9 -0
  65. package/dist/migrations/04-auth.d.ts +9 -0
  66. package/dist/migrations/04-auth.js +1 -1
  67. package/dist/migrations/04-auth.js.map +1 -1
  68. package/dist/migrations/05-caps.d.ts +9 -0
  69. package/dist/migrations/06-uniqueDecisions.d.ts +9 -0
  70. package/dist/migrations/07-limits.d.ts +9 -0
  71. package/dist/migrations/08-rss.d.ts +9 -0
  72. package/dist/migrations/09-clientAndDataSearchees.d.ts +9 -0
  73. package/dist/migrations/10-indexerNameAudioBookCaps.d.ts +9 -0
  74. package/dist/migrations/11-trackers.d.ts +9 -0
  75. package/dist/migrations/12-user-auth.d.ts +9 -0
  76. package/dist/migrations/12-user-auth.js +22 -0
  77. package/dist/migrations/12-user-auth.js.map +1 -0
  78. package/dist/migrations/13-settings.d.ts +9 -0
  79. package/dist/migrations/13-settings.js +23 -0
  80. package/dist/migrations/13-settings.js.map +1 -0
  81. package/dist/migrations/14-indexer-enabled-flag.d.ts +9 -0
  82. package/dist/migrations/14-indexer-enabled-flag.js +12 -0
  83. package/dist/migrations/14-indexer-enabled-flag.js.map +1 -0
  84. package/dist/migrations/15-remove-url-unique-constraint.d.ts +9 -0
  85. package/dist/migrations/15-remove-url-unique-constraint.js +14 -0
  86. package/dist/migrations/15-remove-url-unique-constraint.js.map +1 -0
  87. package/dist/migrations/16-prune-inactive-indexers.d.ts +9 -0
  88. package/dist/migrations/16-prune-inactive-indexers.js +17 -0
  89. package/dist/migrations/16-prune-inactive-indexers.js.map +1 -0
  90. package/dist/migrations/migrations.d.ts +13 -0
  91. package/dist/migrations/migrations.js +10 -0
  92. package/dist/migrations/migrations.js.map +1 -1
  93. package/dist/parseTorrent.d.ts +53 -0
  94. package/dist/pipeline.d.ts +41 -0
  95. package/dist/pipeline.js +57 -10
  96. package/dist/pipeline.js.map +1 -1
  97. package/dist/preFilter.d.ts +25 -0
  98. package/dist/preFilter.js +15 -15
  99. package/dist/preFilter.js.map +1 -1
  100. package/dist/problems/linking.d.ts +2 -0
  101. package/dist/problems/linking.js +80 -0
  102. package/dist/problems/linking.js.map +1 -0
  103. package/dist/problems/path.d.ts +22 -0
  104. package/dist/problems/path.js +96 -0
  105. package/dist/problems/path.js.map +1 -0
  106. package/dist/problems.d.ts +13 -0
  107. package/dist/problems.js +48 -0
  108. package/dist/problems.js.map +1 -0
  109. package/dist/pushNotifier.d.ts +19 -0
  110. package/dist/routes/baseApi.d.ts +2 -0
  111. package/dist/routes/baseApi.js +354 -0
  112. package/dist/routes/baseApi.js.map +1 -0
  113. package/dist/routes/indexerApi.d.ts +6 -0
  114. package/dist/routes/indexerApi.js +165 -0
  115. package/dist/routes/indexerApi.js.map +1 -0
  116. package/dist/routes/staticFrontendPlugin.d.ts +4 -0
  117. package/dist/routes/staticFrontendPlugin.js +61 -0
  118. package/dist/routes/staticFrontendPlugin.js.map +1 -0
  119. package/dist/runtimeConfig.d.ts +6 -0
  120. package/dist/runtimeConfig.js +17 -1
  121. package/dist/runtimeConfig.js.map +1 -1
  122. package/dist/searchee.d.ts +108 -0
  123. package/dist/searchee.js +36 -5
  124. package/dist/searchee.js.map +1 -1
  125. package/dist/server.d.ts +4 -0
  126. package/dist/server.js +38 -429
  127. package/dist/server.js.map +1 -1
  128. package/dist/services/indexerService.d.ts +96 -0
  129. package/dist/services/indexerService.js +287 -0
  130. package/dist/services/indexerService.js.map +1 -0
  131. package/dist/sessionCookies.d.ts +5 -0
  132. package/dist/sessionCookies.js +27 -0
  133. package/dist/sessionCookies.js.map +1 -0
  134. package/dist/startup.d.ts +25 -0
  135. package/dist/startup.js +105 -151
  136. package/dist/startup.js.map +1 -1
  137. package/dist/torrent.d.ts +69 -0
  138. package/dist/torrent.js +17 -13
  139. package/dist/torrent.js.map +1 -1
  140. package/dist/torznab.d.ts +60 -0
  141. package/dist/torznab.js +14 -89
  142. package/dist/torznab.js.map +1 -1
  143. package/dist/trpc/fastifyAdapter.d.ts +2 -0
  144. package/dist/trpc/fastifyAdapter.js +9 -0
  145. package/dist/trpc/fastifyAdapter.js.map +1 -0
  146. package/dist/trpc/index.d.ts +49 -0
  147. package/dist/trpc/index.js +53 -0
  148. package/dist/trpc/index.js.map +1 -0
  149. package/dist/trpc/routers/auth.d.ts +43 -0
  150. package/dist/trpc/routers/auth.js +116 -0
  151. package/dist/trpc/routers/auth.js.map +1 -0
  152. package/dist/trpc/routers/clients.d.ts +21 -0
  153. package/dist/trpc/routers/clients.js +65 -0
  154. package/dist/trpc/routers/clients.js.map +1 -0
  155. package/dist/trpc/routers/health.d.ts +14 -0
  156. package/dist/trpc/routers/health.js +20 -0
  157. package/dist/trpc/routers/health.js.map +1 -0
  158. package/dist/trpc/routers/index.d.ts +391 -0
  159. package/dist/trpc/routers/index.js +23 -0
  160. package/dist/trpc/routers/index.js.map +1 -0
  161. package/dist/trpc/routers/indexers.d.ts +75 -0
  162. package/dist/trpc/routers/indexers.js +79 -0
  163. package/dist/trpc/routers/indexers.js.map +1 -0
  164. package/dist/trpc/routers/jobs.d.ts +33 -0
  165. package/dist/trpc/routers/jobs.js +84 -0
  166. package/dist/trpc/routers/jobs.js.map +1 -0
  167. package/dist/trpc/routers/logs.d.ts +27 -0
  168. package/dist/trpc/routers/logs.js +91 -0
  169. package/dist/trpc/routers/logs.js.map +1 -0
  170. package/dist/trpc/routers/searchees.d.ts +51 -0
  171. package/dist/trpc/routers/searchees.js +156 -0
  172. package/dist/trpc/routers/searchees.js.map +1 -0
  173. package/dist/trpc/routers/settings.d.ts +83 -0
  174. package/dist/trpc/routers/settings.js +92 -0
  175. package/dist/trpc/routers/settings.js.map +1 -0
  176. package/dist/trpc/routers/stats.d.ts +42 -0
  177. package/dist/trpc/routers/stats.js +102 -0
  178. package/dist/trpc/routers/stats.js.map +1 -0
  179. package/dist/userAuth.d.ts +21 -0
  180. package/dist/userAuth.js +86 -0
  181. package/dist/userAuth.js.map +1 -0
  182. package/dist/utils/authUtils.d.ts +10 -0
  183. package/dist/utils/authUtils.js +24 -0
  184. package/dist/utils/authUtils.js.map +1 -0
  185. package/dist/utils/logWatcher.d.ts +28 -0
  186. package/dist/utils/logWatcher.js +218 -0
  187. package/dist/utils/logWatcher.js.map +1 -0
  188. package/dist/utils/object.d.ts +1 -0
  189. package/dist/utils/object.js +4 -0
  190. package/dist/utils/object.js.map +1 -0
  191. package/dist/utils.d.ts +175 -0
  192. package/dist/utils.js +61 -38
  193. package/dist/utils.js.map +1 -1
  194. package/dist/webui/assets/FieldInfo-Bxj_j8SJ.js +1 -0
  195. package/dist/webui/assets/Page-C3rteCZt.js +1 -0
  196. package/dist/webui/assets/array-field-DVSC6nHP.js +1 -0
  197. package/dist/webui/assets/badge-DTZMtS0e.js +1 -0
  198. package/dist/webui/assets/check-Bu3ldi63.js +1 -0
  199. package/dist/webui/assets/chevron-down-CRy8M0kJ.js +1 -0
  200. package/dist/webui/assets/clients-CW8oEZoQ.js +1 -0
  201. package/dist/webui/assets/connect-YBNsnjWT.js +1 -0
  202. package/dist/webui/assets/debug-mz8-WYZj.js +1 -0
  203. package/dist/webui/assets/directories-BSK28RgR.js +1 -0
  204. package/dist/webui/assets/duration-field-C6xoSlJg.js +1 -0
  205. package/dist/webui/assets/general-lJJxZhH7.js +1 -0
  206. package/dist/webui/assets/health-CXbsVrie.js +1 -0
  207. package/dist/webui/assets/index-Bi48hI2z.js +54 -0
  208. package/dist/webui/assets/index-C-Ul7GNg.css +1 -0
  209. package/dist/webui/assets/index-C2cH1Gst.js +1 -0
  210. package/dist/webui/assets/index-Cc5bDmJr.js +1 -0
  211. package/dist/webui/assets/jobs-CxmNab9w.js +1 -0
  212. package/dist/webui/assets/library-vaj2W8sE.js +1 -0
  213. package/dist/webui/assets/loader-circle-M0gu1gZ-.js +1 -0
  214. package/dist/webui/assets/logs-Cu9RyKS0.js +1 -0
  215. package/dist/webui/assets/search-2R5sIdT8.js +1 -0
  216. package/dist/webui/assets/select-field-BCqNLDrJ.js +1 -0
  217. package/dist/webui/assets/select-zHgqMzLj.js +1 -0
  218. package/dist/webui/assets/settings-CMYjpTbZ.js +1 -0
  219. package/dist/webui/assets/submit-button-BtcnyggQ.js +1 -0
  220. package/dist/webui/assets/switch-G0W3uJVN.js +1 -0
  221. package/dist/webui/assets/switch-field-IBd9ORNq.js +1 -0
  222. package/dist/webui/assets/table-DvgJU7Gh.js +1 -0
  223. package/dist/webui/assets/test-tube-BIwmoM45.js +1 -0
  224. package/dist/webui/assets/text-field-DruSbGhy.js +1 -0
  225. package/dist/webui/assets/time-BSMZjmyW.js +1 -0
  226. package/dist/webui/assets/trackers-D-OpAe63.js +7 -0
  227. package/dist/webui/assets/use-form-validation-context-BkAfWAh0.js +1 -0
  228. package/dist/webui/assets/use-settings-form-submit-CDRh-E9U.js +2 -0
  229. package/dist/webui/assets/useQuery-A4Hv_4uX.js +1 -0
  230. package/dist/webui/index.html +13 -0
  231. package/node_modules/@cross-seed/shared/dist/configSchema.d.ts +261 -0
  232. package/node_modules/@cross-seed/shared/dist/configSchema.d.ts.map +1 -0
  233. package/node_modules/@cross-seed/shared/dist/configSchema.js +53 -0
  234. package/node_modules/@cross-seed/shared/dist/configSchema.js.map +1 -0
  235. package/node_modules/@cross-seed/shared/dist/constants.d.ts +122 -0
  236. package/node_modules/@cross-seed/shared/dist/constants.d.ts.map +1 -0
  237. package/node_modules/@cross-seed/shared/dist/constants.js +127 -0
  238. package/node_modules/@cross-seed/shared/dist/constants.js.map +1 -0
  239. package/node_modules/@cross-seed/shared/dist/tsconfig.tsbuildinfo +1 -0
  240. package/node_modules/@cross-seed/shared/dist/utils.d.ts +6 -0
  241. package/node_modules/@cross-seed/shared/dist/utils.d.ts.map +1 -0
  242. package/node_modules/@cross-seed/shared/dist/utils.js +9 -0
  243. package/node_modules/@cross-seed/shared/dist/utils.js.map +1 -0
  244. package/node_modules/@cross-seed/shared/package.json +22 -0
  245. package/package.json +35 -11
  246. package/dist/config.template.cjs +0 -353
  247. package/dist/config.template.cjs.map +0 -1
package/dist/startup.js CHANGED
@@ -1,170 +1,47 @@
1
- import { constants, mkdir, stat } from "fs/promises";
2
- import ms from "ms";
3
- import { inspect } from "util";
4
- import { testLinking } from "./action.js";
5
- import { validateUArrLs } from "./arr.js";
6
- import { getClients, instantiateDownloadClients, } from "./clients/TorrentClient.js";
7
- import { customizeErrorMessage, VALIDATION_SCHEMA } from "./configSchema.js";
8
- import { NEWLINE_INDENT, PROGRAM_NAME, PROGRAM_VERSION } from "./constants.js";
1
+ import { mkdir } from "fs/promises";
2
+ import { spawn } from "node:child_process";
3
+ import { resetApiKey } from "./auth.js";
4
+ import { instantiateDownloadClients } from "./clients/TorrentClient.js";
5
+ import { createAppDirHierarchy, getDefaultRuntimeConfig, getFileConfig, stripDefaults, transformFileConfig, } from "./configuration.js";
9
6
  import { db } from "./db.js";
10
- import { CrossSeedError, exitOnCrossSeedErrors } from "./errors.js";
11
- import { initializeLogger, Label, logger } from "./logger.js";
7
+ import { getDbConfig, setDbConfig } from "./dbConfig.js";
8
+ import { exitOnCrossSeedErrors, initializeLogger, Label, logger, } from "./logger.js";
12
9
  import { initializePushNotifier } from "./pushNotifier.js";
13
10
  import { getRuntimeConfig, setRuntimeConfig, } from "./runtimeConfig.js";
14
- import { validateTorznabUrls } from "./torznab.js";
15
- import { mapAsync, notExists, verifyDir, wait } from "./utils.js";
11
+ import { notExists } from "./utils.js";
12
+ import { getLogWatcher } from "./utils/logWatcher.js";
13
+ import { omitUndefined } from "./utils/object.js";
16
14
  export async function exitGracefully() {
17
15
  await db.destroy();
18
16
  process.exit();
19
17
  }
20
18
  process.on("SIGINT", exitGracefully);
21
19
  process.on("SIGTERM", exitGracefully);
22
- /**
23
- * verifies the config paths provided against the filesystem
24
- * @returns true (if paths are valid)
25
- */
26
- async function checkConfigPaths() {
27
- const { dataDirs, injectDir, linkDirs, outputDir, torrentDir } = getRuntimeConfig();
28
- const READ_ONLY = constants.R_OK;
29
- const READ_AND_WRITE = constants.R_OK | constants.W_OK;
30
- let pathFailure = 0;
31
- const linkDev = [];
32
- const dataDev = [];
33
- if (torrentDir && !(await verifyDir(torrentDir, "torrentDir", READ_ONLY))) {
34
- pathFailure++;
35
- }
36
- if (await notExists(outputDir)) {
37
- logger.info(`Creating outputDir: ${outputDir}`);
38
- await mkdir(outputDir, { recursive: true });
39
- }
40
- if (!(await verifyDir(outputDir, "outputDir", READ_AND_WRITE))) {
41
- pathFailure++;
20
+ async function ensureConfiguredDirectories() {
21
+ const { outputDir, linkDirs = [] } = getRuntimeConfig();
22
+ const directories = [];
23
+ if (outputDir) {
24
+ directories.push({ path: outputDir, label: "outputDir" });
42
25
  }
43
26
  for (const [index, linkDir] of linkDirs.entries()) {
44
- const linkDirName = `linkDir${index}`;
45
- if (await notExists(linkDir)) {
46
- logger.info(`Creating ${linkDirName}: ${linkDir}`);
47
- await mkdir(linkDir, { recursive: true });
48
- }
49
- if (await verifyDir(linkDir, linkDirName, READ_AND_WRITE)) {
50
- linkDev.push({ path: linkDir, dev: (await stat(linkDir)).dev });
51
- }
52
- else {
53
- pathFailure++;
54
- }
27
+ directories.push({ path: linkDir, label: `linkDir${index}` });
55
28
  }
56
- if (linkDev.length) {
57
- logger.verbose(`Storage device for each linkDir: ${inspect(linkDev)}`);
58
- }
59
- for (const [index, dataDir] of dataDirs.entries()) {
60
- const dataDirName = `dataDir${index}`;
61
- if (await verifyDir(dataDir, dataDirName, READ_ONLY)) {
62
- dataDev.push({ path: dataDir, dev: (await stat(dataDir)).dev });
63
- }
64
- else {
65
- pathFailure++;
66
- }
67
- }
68
- if (dataDev.length) {
69
- logger.verbose(`Storage device for each dataDir: ${inspect(dataDev)}`);
70
- }
71
- if (injectDir) {
72
- if (!(await verifyDir(injectDir, "injectDir", READ_AND_WRITE))) {
73
- pathFailure++;
29
+ for (const { path, label } of directories) {
30
+ if (!(await notExists(path))) {
31
+ continue;
74
32
  }
75
- }
76
- if (linkDirs.length) {
77
- for (const [index, dataDir] of dataDirs.entries()) {
78
- const dataDirName = `dataDir${index}`;
79
- try {
80
- const res = await testLinking(dataDir, `${dataDirName}Src.cross-seed`, `${dataDirName}Dest.cross-seed`);
81
- if (!res) {
82
- logger.error("Failed to link from dataDirs to linkDirs.");
83
- }
84
- }
85
- catch (e) {
86
- logger.error(e);
87
- logger.error("Failed to link from dataDirs to linkDirs.");
88
- pathFailure++;
89
- }
90
- }
91
- }
92
- if (pathFailure) {
93
- throw new CrossSeedError(`\tYour configuration is invalid, please see the ${pathFailure > 1 ? "errors" : "error"} above for details.`);
94
- }
95
- }
96
- async function retry(cb, numRetries, delayMs) {
97
- const retries = Math.max(numRetries, 0);
98
- let lastError = new Error("Retry failed");
99
- for (let i = 0; i <= retries; i++) {
100
33
  try {
101
- return await cb();
102
- }
103
- catch (e) {
104
- const retryMsg = i < retries ? `, retrying in ${delayMs / 1000}s` : "";
105
- logger.error(`Attempt ${i + 1}/${retries + 1} failed${retryMsg}: ${e.message}`);
106
- logger.debug(e);
107
- lastError = e;
108
- if (i >= retries)
109
- break;
110
- await wait(delayMs);
34
+ logger.info(`Creating ${label}: ${path}`);
35
+ await mkdir(path, { recursive: true });
111
36
  }
112
- }
113
- throw lastError;
114
- }
115
- export async function doStartupValidation() {
116
- await checkConfigPaths(); // ensure paths are valid first
117
- instantiateDownloadClients();
118
- const validateClientConfig = () => mapAsync(getClients(), (client) => client.validateConfig());
119
- const errors = (await Promise.allSettled([
120
- retry(validateTorznabUrls, 5, ms("1 minute")),
121
- retry(validateUArrLs, 5, ms("1 minute")),
122
- retry(validateClientConfig, 5, ms("1 minute")),
123
- ])).filter((p) => p.status === "rejected");
124
- if (errors.length) {
125
- throw new CrossSeedError(`\tYour configuration is invalid, please see the ${errors.length > 1 ? "errors" : "error"} above for details.`);
126
- }
127
- logger.verbose({
128
- label: Label.CONFIGDUMP,
129
- message: inspect(getRuntimeConfig()),
130
- });
131
- logger.info("Your configuration is valid!");
132
- }
133
- /**
134
- * validates and sets RuntimeConfig
135
- * @return (the number of errors Zod encountered in the configuration)
136
- */
137
- export function parseRuntimeConfigAndLogErrors(options) {
138
- logger.info(`${PROGRAM_NAME} v${PROGRAM_VERSION}`);
139
- logger.info("Validating your configuration...");
140
- let parsedOptions;
141
- try {
142
- parsedOptions = VALIDATION_SCHEMA.parse(options, {
143
- errorMap: customizeErrorMessage,
144
- });
145
- }
146
- catch (error) {
147
- logger.verbose({
148
- label: Label.CONFIGDUMP,
149
- message: inspect(options),
150
- });
151
- if ("errors" in error && Array.isArray(error.errors)) {
152
- error.errors.forEach(({ path, message }) => {
153
- const urlPath = path[0];
154
- const optionLine = path.length === 2
155
- ? `${path[0]} (position #${path[1] + 1})`
156
- : path;
157
- logger.error(`${path.length > 0
158
- ? `Option: ${optionLine}`
159
- : "Configuration:"}${NEWLINE_INDENT}${message}${NEWLINE_INDENT}(https://www.cross-seed.org/docs/basics/options${urlPath ? `#${urlPath.toLowerCase()}` : ""})\n`);
37
+ catch (error) {
38
+ const message = error instanceof Error ? error.message : String(error ?? "");
39
+ logger.error({
40
+ label: Label.SERVER,
41
+ message: `Failed to create ${label} at ${path}: ${message}`,
160
42
  });
161
- if (error.errors.length > 0) {
162
- throw new CrossSeedError(`Your configuration is invalid, please see the ${error.errors.length > 1 ? "errors" : "error"} above for details.`);
163
- }
164
43
  }
165
- throw error;
166
44
  }
167
- return parsedOptions;
168
45
  }
169
46
  /**
170
47
  * Initializes only the database, runs the callback, then cleans up
@@ -186,18 +63,95 @@ export function withMinimalRuntime(entrypoint, { migrate = true } = {}) {
186
63
  }
187
64
  };
188
65
  }
66
+ async function applyExistingApiKey(config) {
67
+ try {
68
+ const existingApiKey = await db("settings").select("apikey").first();
69
+ if (existingApiKey?.apikey && !config.apiKey) {
70
+ config.apiKey = existingApiKey.apikey;
71
+ }
72
+ }
73
+ catch (error) {
74
+ // best-effort only
75
+ }
76
+ }
77
+ async function determineRuntimeConfig(rawOptions) {
78
+ const cliOptions = omitUndefined(rawOptions);
79
+ // first, try to load from database (existing user happy path)
80
+ let dbOverrides;
81
+ try {
82
+ dbOverrides = await getDbConfig();
83
+ }
84
+ catch (dbError) {
85
+ logger.debug("Unable to load configuration from database", dbError);
86
+ }
87
+ if (dbOverrides !== undefined) {
88
+ return {
89
+ ...getDefaultRuntimeConfig(),
90
+ ...dbOverrides,
91
+ ...cliOptions,
92
+ };
93
+ }
94
+ // then, try to migrate from file config (v6 to v7 upgrade path)
95
+ try {
96
+ const fileConfig = await getFileConfig();
97
+ if (fileConfig) {
98
+ const transformedFileConfig = transformFileConfig(fileConfig);
99
+ const runtimeFromFile = {
100
+ ...getDefaultRuntimeConfig(),
101
+ ...transformedFileConfig,
102
+ };
103
+ await applyExistingApiKey(runtimeFromFile);
104
+ await setDbConfig(runtimeFromFile);
105
+ const resolvedOverrides = stripDefaults(runtimeFromFile);
106
+ logger.info("Migrated file config to database");
107
+ return {
108
+ ...getDefaultRuntimeConfig(),
109
+ ...resolvedOverrides,
110
+ ...cliOptions,
111
+ };
112
+ }
113
+ }
114
+ catch (migrationError) {
115
+ logger.error(new Error("Failed to import configuration file, falling back to defaults", { cause: migrationError }));
116
+ }
117
+ // finally, fall back to defaults (new user happy path or migration failure)
118
+ const defaultRuntime = getDefaultRuntimeConfig();
119
+ await setDbConfig(defaultRuntime);
120
+ await resetApiKey();
121
+ logger.info("Created initial database config from defaults");
122
+ const resolvedOverrides = stripDefaults(defaultRuntime);
123
+ return {
124
+ ...getDefaultRuntimeConfig(),
125
+ ...resolvedOverrides,
126
+ ...cliOptions,
127
+ };
128
+ }
189
129
  /**
190
130
  * Initializes the full runtime, runs the callback, then cleans up
191
131
  * @param entrypoint
192
132
  */
193
133
  export function withFullRuntime(entrypoint) {
194
134
  return withMinimalRuntime(async (options) => {
135
+ createAppDirHierarchy();
195
136
  initializeLogger(options);
196
- const runtimeConfig = parseRuntimeConfigAndLogErrors(options);
137
+ const runtimeConfig = await determineRuntimeConfig(options);
197
138
  setRuntimeConfig(runtimeConfig);
198
139
  initializePushNotifier();
199
- await doStartupValidation();
140
+ getLogWatcher();
141
+ await ensureConfiguredDirectories();
142
+ instantiateDownloadClients();
200
143
  await entrypoint(runtimeConfig);
201
144
  });
202
145
  }
146
+ export async function restartCrossSeed() {
147
+ logger.info("Restarting cross-seed");
148
+ process.on("exit", () => {
149
+ spawn(process.argv[0], process.argv.slice(1), {
150
+ cwd: process.cwd(),
151
+ stdio: "inherit",
152
+ detached: false,
153
+ });
154
+ });
155
+ await exitGracefully();
156
+ }
203
157
  //# sourceMappingURL=startup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"startup.js","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"startup.js","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import { TorrentMetadataInClient } from "./clients/TorrentClient.js";
2
+ import { MediaType } from "./constants.js";
3
+ import { Metafile } from "./parseTorrent.js";
4
+ import { Candidate } from "./pipeline.js";
5
+ import { Result } from "./Result.js";
6
+ import { File, SearcheeLabel, SearcheeWithInfoHash, SearcheeWithoutInfoHash } from "./searchee.js";
7
+ export interface TorrentLocator {
8
+ infoHash?: string;
9
+ path?: string;
10
+ }
11
+ export interface FilenameMetadata {
12
+ mediaType: string;
13
+ tracker: string;
14
+ name: string;
15
+ infoHash?: string;
16
+ cached: boolean;
17
+ }
18
+ export declare enum SnatchError {
19
+ ABORTED = "ABORTED",
20
+ RATE_LIMITED = "RATE_LIMITED",
21
+ MAGNET_LINK = "MAGNET_LINK",
22
+ INVALID_CONTENTS = "INVALID_CONTENTS",
23
+ UNKNOWN_ERROR = "UNKNOWN_ERROR"
24
+ }
25
+ export interface EnsembleEntry {
26
+ client_host: string | null;
27
+ path: string;
28
+ info_hash: string | null;
29
+ ensemble: string;
30
+ element: string | number;
31
+ }
32
+ export declare function parseTorrentFromPath(filePath: string): Promise<Metafile>;
33
+ export declare function parseTorrentWithMetadata(filePath: string, torrentInfos: TorrentMetadataInClient[]): Promise<Metafile>;
34
+ export declare const snatchHistory: Map<string, {
35
+ initialFailureAt: number;
36
+ numFailures: number;
37
+ }>;
38
+ export declare function snatch(candidate: Candidate, label: SearcheeLabel, options: {
39
+ retries: number;
40
+ delayMs: number;
41
+ }): Promise<Result<Metafile, SnatchError>>;
42
+ /**
43
+ * Be sure to update parseMetadataFromFilename if changing the format
44
+ */
45
+ export declare function getTorrentSavePath(meta: Metafile, mediaType: MediaType, tracker: string, dir: string, options: {
46
+ cached: boolean;
47
+ }): string;
48
+ /**
49
+ * Depends on getTorrentSavePath format
50
+ */
51
+ export declare function parseMetadataFromFilename(filename: string): Partial<FilenameMetadata>;
52
+ export declare function findAllTorrentFilesInDir(dir: string): Promise<string[]>;
53
+ export declare function createEnsemblePieces(title: string, files: File[]): {
54
+ key: string;
55
+ element: string | number;
56
+ largestFile: File;
57
+ }[] | null;
58
+ export declare function cacheEnsembleTorrentEntry(searchee: SearcheeWithInfoHash, torrentSavePaths?: Map<string, string>): Promise<EnsembleEntry[] | null>;
59
+ export declare function indexTorrentsAndDataDirs(options?: {
60
+ startup: boolean;
61
+ }): Promise<void>;
62
+ export declare function getInfoHashesToExclude(): Promise<Set<string>>;
63
+ export declare function loadTorrentDirLight(torrentDir: string): Promise<SearcheeWithInfoHash[]>;
64
+ export declare function getSimilarByName(name: string): Promise<{
65
+ keys: string[];
66
+ clientSearchees: SearcheeWithInfoHash[];
67
+ dataSearchees: SearcheeWithoutInfoHash[];
68
+ }>;
69
+ export declare function getTorrentByCriteria(criteria: TorrentLocator): Promise<SearcheeWithInfoHash[]>;
package/dist/torrent.js CHANGED
@@ -3,8 +3,8 @@ import bencode from "bencode";
3
3
  import { readdir, readFile, stat } from "fs/promises";
4
4
  import { extname, join, resolve } from "path";
5
5
  import { inspect } from "util";
6
- import { getClients, validateClientSavePaths, } from "./clients/TorrentClient.js";
7
- import { isChildPath } from "./configSchema.js";
6
+ import { getClients, } from "./clients/TorrentClient.js";
7
+ import { isChildPath } from "./utils.js";
8
8
  import { ALL_PARENTHESES_REGEX, ALL_SPACES_REGEX, ALL_SQUARE_BRACKETS_REGEX, LEVENSHTEIN_DIVISOR, MAX_PATH_BYTES, MediaType, MIN_VIDEO_QUERY_LENGTH, SAVED_TORRENTS_INFO_REGEX, USER_AGENT, } from "./constants.js";
9
9
  import { getDataByFuzzyName, indexDataDirs, shouldIgnorePathHeuristically, } from "./dataFiles.js";
10
10
  import { db } from "./db.js";
@@ -297,7 +297,10 @@ async function indexTorrents(options) {
297
297
  let infoHashPathMap;
298
298
  if (options.startup) {
299
299
  if (torrentDir) {
300
- logger.info("Indexing torrentDir for reverse lookup...");
300
+ logger.info({
301
+ label: Label.INDEX,
302
+ message: "Indexing torrentDir for reverse lookup...",
303
+ });
301
304
  searchees = await loadTorrentDirLight(torrentDir);
302
305
  if (clients.length) {
303
306
  infoHashPathMap = await clients[0].getAllDownloadDirs({
@@ -305,7 +308,6 @@ async function indexTorrents(options) {
305
308
  onlyCompleted: false,
306
309
  v1HashOnly: true,
307
310
  });
308
- await validateClientSavePaths(searchees, infoHashPathMap, clients[0].label, clients[0].clientPriority);
309
311
  }
310
312
  }
311
313
  else {
@@ -315,10 +317,6 @@ async function indexTorrents(options) {
315
317
  includeFiles: true,
316
318
  includeTrackers: true,
317
319
  });
318
- await validateClientSavePaths(searchees, searchees.reduce((map, searchee) => {
319
- map.set(searchee.infoHash, searchee.savePath);
320
- return map;
321
- }, new Map()), client.label, client.clientPriority);
322
320
  return searchees;
323
321
  });
324
322
  }
@@ -361,7 +359,10 @@ async function indexTorrentDir(dir) {
361
359
  }
362
360
  catch (e) {
363
361
  logOnce(`Failed to parse ${filePath}`, () => {
364
- logger.error(`Failed to parse ${filePath}`);
362
+ logger.error({
363
+ label: Label.INDEX,
364
+ message: `Failed to parse ${filePath}`,
365
+ });
365
366
  logger.debug(e);
366
367
  });
367
368
  continue;
@@ -450,13 +451,16 @@ export async function indexTorrentsAndDataDirs(options = { startup: false }) {
450
451
  break;
451
452
  }
452
453
  catch (e) {
453
- const msg = `Indexing failed (${maxRetries - attempt}): ${e.message}`;
454
+ const log = {
455
+ label: Label.INDEX,
456
+ message: `Indexing failed (${maxRetries - attempt}): ${e.message}`,
457
+ };
454
458
  logger.debug(e);
455
459
  if (attempt < maxRetries) {
456
- logger.verbose(msg);
460
+ logger.verbose(log);
457
461
  }
458
462
  else {
459
- logger.error(msg);
463
+ logger.error(log);
460
464
  if (options.startup)
461
465
  throw e;
462
466
  }
@@ -467,7 +471,7 @@ export async function indexTorrentsAndDataDirs(options = { startup: false }) {
467
471
  export async function getInfoHashesToExclude() {
468
472
  const { useClientTorrents } = getRuntimeConfig();
469
473
  const database = useClientTorrents ? db("client_searchee") : db("torrent");
470
- return new Set((await database.select({ infoHash: "info_hash" })).map((e) => e.infoHash));
474
+ return new Set((await database.select("*")).map((e) => e.info_hash));
471
475
  }
472
476
  export async function loadTorrentDirLight(torrentDir) {
473
477
  const torrentFilePaths = await findAllTorrentFilesInDir(torrentDir);
@@ -1 +1 @@
1
- {"version":3,"file":"torrent.js","sourceRoot":"","sources":["../src/torrent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"torrent.js","sourceRoot":"","sources":["../src/torrent.ts"],"names":[],"mappings":"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"}