cross-seed 7.0.0-1 → 7.0.0-3
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.
- package/dist/Result.d.ts +27 -0
- package/dist/Result.js +64 -0
- package/dist/Result.js.map +1 -0
- package/dist/action.d.ts +34 -0
- package/dist/action.js +694 -0
- package/dist/action.js.map +1 -0
- package/dist/arr.d.ts +31 -0
- package/dist/arr.js +267 -0
- package/dist/arr.js.map +1 -0
- package/dist/auth.d.ts +3 -0
- package/dist/auth.js +28 -0
- package/dist/auth.js.map +1 -0
- package/dist/clients/Deluge.d.ts +153 -0
- package/dist/clients/Deluge.js +698 -0
- package/dist/clients/Deluge.js.map +1 -0
- package/dist/clients/QBittorrent.d.ts +218 -0
- package/dist/clients/QBittorrent.js +785 -0
- package/dist/clients/QBittorrent.js.map +1 -0
- package/dist/clients/RTorrent.d.ts +43 -0
- package/dist/clients/RTorrent.js +657 -0
- package/dist/clients/RTorrent.js.map +1 -0
- package/dist/clients/TorrentClient.d.ts +108 -0
- package/dist/clients/TorrentClient.js +341 -0
- package/dist/clients/TorrentClient.js.map +1 -0
- package/dist/clients/Transmission.d.ts +43 -0
- package/dist/clients/Transmission.js +404 -0
- package/dist/clients/Transmission.js.map +1 -0
- package/dist/cmd.d.ts +2 -0
- package/dist/cmd.js +128 -0
- package/dist/cmd.js.map +1 -0
- package/dist/configSchema.d.ts +1 -0
- package/dist/configSchema.js +2 -0
- package/dist/configSchema.js.map +1 -0
- package/dist/configuration.d.ts +63 -0
- package/dist/configuration.js +321 -0
- package/dist/configuration.js.map +1 -0
- package/dist/constants.d.ts +108 -0
- package/dist/constants.js +251 -0
- package/dist/constants.js.map +1 -0
- package/dist/dataFiles.d.ts +8 -0
- package/dist/dataFiles.js +223 -0
- package/dist/dataFiles.js.map +1 -0
- package/dist/db.d.ts +3 -0
- package/dist/db.js +216 -0
- package/dist/db.js.map +1 -0
- package/dist/dbConfig.d.ts +4 -0
- package/dist/dbConfig.js +67 -0
- package/dist/dbConfig.js.map +1 -0
- package/dist/decide.d.ts +25 -0
- package/dist/decide.js +553 -0
- package/dist/decide.js.map +1 -0
- package/dist/diff.d.ts +1 -0
- package/dist/diff.js +24 -0
- package/dist/diff.js.map +1 -0
- package/dist/errors.d.ts +3 -0
- package/dist/errors.js +7 -0
- package/dist/errors.js.map +1 -0
- package/dist/indexers.d.ts +105 -0
- package/dist/indexers.js +248 -0
- package/dist/indexers.js.map +1 -0
- package/dist/inject.d.ts +2 -0
- package/dist/inject.js +594 -0
- package/dist/inject.js.map +1 -0
- package/dist/jobs.d.ts +29 -0
- package/dist/jobs.js +151 -0
- package/dist/jobs.js.map +1 -0
- package/dist/logger.d.ts +29 -0
- package/dist/logger.js +157 -0
- package/dist/logger.js.map +1 -0
- package/dist/migrations/00-initialSchema.d.ts +9 -0
- package/dist/migrations/00-initialSchema.js +30 -0
- package/dist/migrations/00-initialSchema.js.map +1 -0
- package/dist/migrations/01-jobs.d.ts +9 -0
- package/dist/migrations/01-jobs.js +12 -0
- package/dist/migrations/01-jobs.js.map +1 -0
- package/dist/migrations/02-timestamps.d.ts +9 -0
- package/dist/migrations/02-timestamps.js +21 -0
- package/dist/migrations/02-timestamps.js.map +1 -0
- package/dist/migrations/03-rateLimits.d.ts +9 -0
- package/dist/migrations/03-rateLimits.js +14 -0
- package/dist/migrations/03-rateLimits.js.map +1 -0
- package/dist/migrations/04-auth.d.ts +9 -0
- package/dist/migrations/04-auth.js +13 -0
- package/dist/migrations/04-auth.js.map +1 -0
- package/dist/migrations/05-caps.d.ts +9 -0
- package/dist/migrations/05-caps.js +16 -0
- package/dist/migrations/05-caps.js.map +1 -0
- package/dist/migrations/06-uniqueDecisions.d.ts +9 -0
- package/dist/migrations/06-uniqueDecisions.js +29 -0
- package/dist/migrations/06-uniqueDecisions.js.map +1 -0
- package/dist/migrations/07-limits.d.ts +9 -0
- package/dist/migrations/07-limits.js +12 -0
- package/dist/migrations/07-limits.js.map +1 -0
- package/dist/migrations/08-rss.d.ts +9 -0
- package/dist/migrations/08-rss.js +15 -0
- package/dist/migrations/08-rss.js.map +1 -0
- package/dist/migrations/09-clientAndDataSearchees.d.ts +9 -0
- package/dist/migrations/09-clientAndDataSearchees.js +34 -0
- package/dist/migrations/09-clientAndDataSearchees.js.map +1 -0
- package/dist/migrations/10-indexerNameAudioBookCaps.d.ts +9 -0
- package/dist/migrations/10-indexerNameAudioBookCaps.js +18 -0
- package/dist/migrations/10-indexerNameAudioBookCaps.js.map +1 -0
- package/dist/migrations/11-trackers.d.ts +9 -0
- package/dist/migrations/11-trackers.js +38 -0
- package/dist/migrations/11-trackers.js.map +1 -0
- package/dist/migrations/12-user-auth.d.ts +9 -0
- package/dist/migrations/12-user-auth.js +22 -0
- package/dist/migrations/12-user-auth.js.map +1 -0
- package/dist/migrations/13-settings.d.ts +9 -0
- package/dist/migrations/13-settings.js +23 -0
- package/dist/migrations/13-settings.js.map +1 -0
- package/dist/migrations/14-indexer-enabled-flag.d.ts +9 -0
- package/dist/migrations/14-indexer-enabled-flag.js +12 -0
- package/dist/migrations/14-indexer-enabled-flag.js.map +1 -0
- package/dist/migrations/15-remove-url-unique-constraint.d.ts +9 -0
- package/dist/migrations/15-remove-url-unique-constraint.js +14 -0
- package/dist/migrations/15-remove-url-unique-constraint.js.map +1 -0
- package/dist/migrations/16-prune-inactive-indexers.d.ts +9 -0
- package/dist/migrations/16-prune-inactive-indexers.js +17 -0
- package/dist/migrations/16-prune-inactive-indexers.js.map +1 -0
- package/dist/migrations/migrations.d.ts +13 -0
- package/dist/migrations/migrations.js +41 -0
- package/dist/migrations/migrations.js.map +1 -0
- package/dist/parseTorrent.d.ts +53 -0
- package/dist/parseTorrent.js +128 -0
- package/dist/parseTorrent.js.map +1 -0
- package/dist/pipeline.d.ts +41 -0
- package/dist/pipeline.js +574 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/preFilter.d.ts +25 -0
- package/dist/preFilter.js +250 -0
- package/dist/preFilter.js.map +1 -0
- package/dist/problems/linking.d.ts +2 -0
- package/dist/problems/linking.js +80 -0
- package/dist/problems/linking.js.map +1 -0
- package/dist/problems/path.d.ts +22 -0
- package/dist/problems/path.js +96 -0
- package/dist/problems/path.js.map +1 -0
- package/dist/problems.d.ts +13 -0
- package/dist/problems.js +48 -0
- package/dist/problems.js.map +1 -0
- package/dist/pushNotifier.d.ts +19 -0
- package/dist/pushNotifier.js +137 -0
- package/dist/pushNotifier.js.map +1 -0
- package/dist/routes/baseApi.d.ts +2 -0
- package/dist/routes/baseApi.js +354 -0
- package/dist/routes/baseApi.js.map +1 -0
- package/dist/routes/indexerApi.d.ts +6 -0
- package/dist/routes/indexerApi.js +165 -0
- package/dist/routes/indexerApi.js.map +1 -0
- package/dist/routes/staticFrontendPlugin.d.ts +4 -0
- package/dist/routes/staticFrontendPlugin.js +63 -0
- package/dist/routes/staticFrontendPlugin.js.map +1 -0
- package/dist/runtimeConfig.d.ts +6 -0
- package/dist/runtimeConfig.js +27 -0
- package/dist/runtimeConfig.js.map +1 -0
- package/dist/searchee.d.ts +108 -0
- package/dist/searchee.js +689 -0
- package/dist/searchee.js.map +1 -0
- package/dist/server.d.ts +4 -0
- package/dist/server.js +65 -0
- package/dist/server.js.map +1 -0
- package/dist/services/indexerService.d.ts +96 -0
- package/dist/services/indexerService.js +287 -0
- package/dist/services/indexerService.js.map +1 -0
- package/dist/sessionCookies.d.ts +5 -0
- package/dist/sessionCookies.js +27 -0
- package/dist/sessionCookies.js.map +1 -0
- package/dist/startup.d.ts +25 -0
- package/dist/startup.js +157 -0
- package/dist/startup.js.map +1 -0
- package/dist/torrent.d.ts +69 -0
- package/dist/torrent.js +641 -0
- package/dist/torrent.js.map +1 -0
- package/dist/torznab.d.ts +60 -0
- package/dist/torznab.js +711 -0
- package/dist/torznab.js.map +1 -0
- package/dist/trpc/fastifyAdapter.d.ts +2 -0
- package/dist/trpc/fastifyAdapter.js +9 -0
- package/dist/trpc/fastifyAdapter.js.map +1 -0
- package/dist/trpc/index.d.ts +49 -0
- package/dist/trpc/index.js +53 -0
- package/dist/trpc/index.js.map +1 -0
- package/dist/trpc/routers/auth.d.ts +43 -0
- package/dist/trpc/routers/auth.js +116 -0
- package/dist/trpc/routers/auth.js.map +1 -0
- package/dist/trpc/routers/clients.d.ts +21 -0
- package/dist/trpc/routers/clients.js +65 -0
- package/dist/trpc/routers/clients.js.map +1 -0
- package/dist/trpc/routers/health.d.ts +14 -0
- package/dist/trpc/routers/health.js +20 -0
- package/dist/trpc/routers/health.js.map +1 -0
- package/dist/trpc/routers/index.d.ts +391 -0
- package/dist/trpc/routers/index.js +23 -0
- package/dist/trpc/routers/index.js.map +1 -0
- package/dist/trpc/routers/indexers.d.ts +75 -0
- package/dist/trpc/routers/indexers.js +79 -0
- package/dist/trpc/routers/indexers.js.map +1 -0
- package/dist/trpc/routers/jobs.d.ts +33 -0
- package/dist/trpc/routers/jobs.js +84 -0
- package/dist/trpc/routers/jobs.js.map +1 -0
- package/dist/trpc/routers/logs.d.ts +27 -0
- package/dist/trpc/routers/logs.js +91 -0
- package/dist/trpc/routers/logs.js.map +1 -0
- package/dist/trpc/routers/searchees.d.ts +51 -0
- package/dist/trpc/routers/searchees.js +156 -0
- package/dist/trpc/routers/searchees.js.map +1 -0
- package/dist/trpc/routers/settings.d.ts +83 -0
- package/dist/trpc/routers/settings.js +92 -0
- package/dist/trpc/routers/settings.js.map +1 -0
- package/dist/trpc/routers/stats.d.ts +42 -0
- package/dist/trpc/routers/stats.js +102 -0
- package/dist/trpc/routers/stats.js.map +1 -0
- package/dist/userAuth.d.ts +21 -0
- package/dist/userAuth.js +86 -0
- package/dist/userAuth.js.map +1 -0
- package/dist/utils/authUtils.d.ts +10 -0
- package/dist/utils/authUtils.js +24 -0
- package/dist/utils/authUtils.js.map +1 -0
- package/dist/utils/logWatcher.d.ts +28 -0
- package/dist/utils/logWatcher.js +218 -0
- package/dist/utils/logWatcher.js.map +1 -0
- package/dist/utils/object.d.ts +1 -0
- package/dist/utils/object.js +4 -0
- package/dist/utils/object.js.map +1 -0
- package/dist/utils.d.ts +175 -0
- package/dist/utils.js +660 -0
- package/dist/utils.js.map +1 -0
- package/package.json +17 -58
- package/LICENSE +0 -201
- package/README.md +0 -33
- package/dist/webui/assets/FieldInfo-Bxj_j8SJ.js +0 -1
- package/dist/webui/assets/Page-C3rteCZt.js +0 -1
- package/dist/webui/assets/array-field-DVSC6nHP.js +0 -1
- package/dist/webui/assets/badge-DTZMtS0e.js +0 -1
- package/dist/webui/assets/check-Bu3ldi63.js +0 -1
- package/dist/webui/assets/chevron-down-CRy8M0kJ.js +0 -1
- package/dist/webui/assets/clients-CW8oEZoQ.js +0 -1
- package/dist/webui/assets/connect-YBNsnjWT.js +0 -1
- package/dist/webui/assets/debug-mz8-WYZj.js +0 -1
- package/dist/webui/assets/directories-BSK28RgR.js +0 -1
- package/dist/webui/assets/duration-field-C6xoSlJg.js +0 -1
- package/dist/webui/assets/general-lJJxZhH7.js +0 -1
- package/dist/webui/assets/health-CXbsVrie.js +0 -1
- package/dist/webui/assets/index-Bi48hI2z.js +0 -54
- package/dist/webui/assets/index-C-Ul7GNg.css +0 -1
- package/dist/webui/assets/index-C2cH1Gst.js +0 -1
- package/dist/webui/assets/index-Cc5bDmJr.js +0 -1
- package/dist/webui/assets/jobs-CxmNab9w.js +0 -1
- package/dist/webui/assets/library-vaj2W8sE.js +0 -1
- package/dist/webui/assets/loader-circle-M0gu1gZ-.js +0 -1
- package/dist/webui/assets/logs-Cu9RyKS0.js +0 -1
- package/dist/webui/assets/search-2R5sIdT8.js +0 -1
- package/dist/webui/assets/select-field-BCqNLDrJ.js +0 -1
- package/dist/webui/assets/select-zHgqMzLj.js +0 -1
- package/dist/webui/assets/settings-CMYjpTbZ.js +0 -1
- package/dist/webui/assets/submit-button-BtcnyggQ.js +0 -1
- package/dist/webui/assets/switch-G0W3uJVN.js +0 -1
- package/dist/webui/assets/switch-field-IBd9ORNq.js +0 -1
- package/dist/webui/assets/table-DvgJU7Gh.js +0 -1
- package/dist/webui/assets/test-tube-BIwmoM45.js +0 -1
- package/dist/webui/assets/text-field-DruSbGhy.js +0 -1
- package/dist/webui/assets/time-BSMZjmyW.js +0 -1
- package/dist/webui/assets/trackers-D-OpAe63.js +0 -7
- package/dist/webui/assets/use-form-validation-context-BkAfWAh0.js +0 -1
- package/dist/webui/assets/use-settings-form-submit-CDRh-E9U.js +0 -2
- package/dist/webui/assets/useQuery-A4Hv_4uX.js +0 -1
- package/dist/webui/index.html +0 -13
- package/node_modules/@cross-seed/shared/dist/configSchema.d.ts +0 -261
- package/node_modules/@cross-seed/shared/dist/configSchema.d.ts.map +0 -1
- package/node_modules/@cross-seed/shared/dist/configSchema.js +0 -53
- package/node_modules/@cross-seed/shared/dist/configSchema.js.map +0 -1
- package/node_modules/@cross-seed/shared/dist/constants.d.ts +0 -122
- package/node_modules/@cross-seed/shared/dist/constants.d.ts.map +0 -1
- package/node_modules/@cross-seed/shared/dist/constants.js +0 -127
- package/node_modules/@cross-seed/shared/dist/constants.js.map +0 -1
- package/node_modules/@cross-seed/shared/dist/tsconfig.tsbuildinfo +0 -1
- package/node_modules/@cross-seed/shared/dist/utils.d.ts +0 -6
- package/node_modules/@cross-seed/shared/dist/utils.d.ts.map +0 -1
- package/node_modules/@cross-seed/shared/dist/utils.js +0 -9
- package/node_modules/@cross-seed/shared/dist/utils.js.map +0 -1
- package/node_modules/@cross-seed/shared/package.json +0 -22
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { createRequire } from "module";
|
|
2
|
+
import { Action, BlocklistType, LinkType, MatchMode, } from "@cross-seed/shared/constants";
|
|
3
|
+
export { Action, BlocklistType, LinkType, MatchMode };
|
|
4
|
+
const require = createRequire(import.meta.url);
|
|
5
|
+
const packageDotJson = require("../package.json");
|
|
6
|
+
export const PROGRAM_NAME = packageDotJson.name;
|
|
7
|
+
export const PROGRAM_VERSION = packageDotJson.version;
|
|
8
|
+
export const USER_AGENT = `CrossSeed/${PROGRAM_VERSION}`;
|
|
9
|
+
export const TORRENT_TAG = "cross-seed";
|
|
10
|
+
export const TORRENT_CATEGORY_SUFFIX = `.cross-seed`;
|
|
11
|
+
export const NEWLINE_INDENT = "\n\t\t\t\t";
|
|
12
|
+
export const EP_REGEX = /^(?<title>.+?)[_.\s-]+(?:(?<season>S\d+)?[_.\s-]{0,3}(?!(?:19|20)\d{2})(?<episode>(?:E|(?<=S\d+[_\s-]{1,3}))\d+(?:[\s-]?(?!(?:19|20)\d{2})E?\d+)?(?![pix]))(?!\d+[pix])|(?<date>(?<year>(?:19|20)\d{2})[_.\s-](?<month>\d{2})[_.\s-](?<day>\d{2})))/i;
|
|
13
|
+
export const BAD_EP_REGEX = /^[_.\s-]*[^_.\s-]*?(?:(?<season>S\d+)?[_.\s-]{0,3}(?!(?:19|20)\d{2})(?<episode>(?:E|(?<=S\d+[_\s-]{1,3}))\d+(?:[\s-]?(?!(?:19|20)\d{2})E?\d+)?(?![pix]))(?!\d+[pix])|(?<date>(?<year>(?:19|20)\d{2})[_.\s-](?<month>\d{2})[_.\s-](?<day>\d{2})))/i;
|
|
14
|
+
export const IS_MULTI_EP_REGEX = /E\d+(?:[-.]?S\d+E\d|[-.]?E\d|[-.]\d)/i;
|
|
15
|
+
export const SEASON_REGEX = /^(?<title>.+?)[[(_.\s-]+(?<season>S(?:eason)?\s*\d+)(?=\b(?![_.\s~-]*E\d+))/i;
|
|
16
|
+
export const BAD_SEASON_REGEX = /^[[_.\s-]*[^[_.\s-]*?(?<season>S(?:eason)?\s*\d+)(?=\b(?![_.\s~-]*E\d+))/i;
|
|
17
|
+
export const MOVIE_REGEX = /^(?<title>.+?)-?[_.\s][[(]?(?<year>(?:18|19|20)\d{2})[)\]]?(?![pix])/i;
|
|
18
|
+
export const ANIME_REGEX = /^(?:\[(?<group>.*?)\][_\s-]?)?(?:\[?(?<title>.+?)[_\s-]?(?:\(?(?:\d{1,2}(?:st|nd|rd|th))?\s?Season)?[_\s-]?\]?)(?:[([~/|-]\s?(?!\d{1,4})(?<altTitle>.+?)[)\]~-]?\s?)?[_\s-]?(?:[[(]?(?<year>(?:19|20)\d{2})[)\]]?)?[[_\s-](?:S\d{1,2})?[_\s-]{0,3}(?:#|EP?|(?:SP))?[_\s-]{0,3}(?!\d+[a-uw-z])(?<release>\d{1,4})(?!\.[0-46-9])/i;
|
|
19
|
+
export const RELEASE_GROUP_REGEX = /(?<=-)(?:\W|\b)(?!(?:\d{3,4}[ip]))(?!\d+\b)(?:\W|\b)(?<group>[\w .]+?)(?:\[.+\])?(?:\))?(?:\s\[.+\])?$/i;
|
|
20
|
+
export const ANIME_GROUP_REGEX = /^\s*\[(?<group>.+?)\]/i;
|
|
21
|
+
export const RESOLUTION_REGEX = /\b(?<res>\d{3,4}[pix](?:\d{3,4}[pi]?)?)\b/i;
|
|
22
|
+
export const RES_STRICT_REGEX = /(?<res>(?:2160|1080|720)[pi])/;
|
|
23
|
+
export const YEARS_REGEX = /(?<year>(?:19|20)\d{2})(?![pix])/gi;
|
|
24
|
+
export const REPACK_PROPER_REGEX = /(?:\b(?<type>(?:REPACK|PROPER|\dv\d)\d?))\b/i;
|
|
25
|
+
export const ARR_PROPER_REGEX = /(?:\b(?<arrtype>(?:Proper|\dv\d)))\b/;
|
|
26
|
+
export const SCENE_TITLE_REGEX = /^(?:[a-z0-9]{3,5}-)?(?<title>.*)/;
|
|
27
|
+
export const ARR_DIR_REGEX = /^(?<title>(?!.*(?:(\d{3,4}[ipx])|([xh.]+26[4-6])|(dvd)|(mpeg)|(xvid)|(?:(he)|a)vc))[\p{L}\s:\w'’!();.,&–+-]+(?:\(\d{4}\))?)(?<id>\s[{[](?:tm|tv|im)db(?:id)?-\w+?[}\]])?$/iu;
|
|
28
|
+
export const SONARR_SUBFOLDERS_REGEX = /^(?:S(?:eason )?(?<seasonNum>\d{1,4}))$/i;
|
|
29
|
+
export const NON_UNICODE_ALPHANUM_REGEX = /[^\p{L}\p{N}]+/giu;
|
|
30
|
+
export const CALIBRE_INDEXNUM_REGEX = /\s?\(\d+\)$/;
|
|
31
|
+
export const INFO_HASH_REGEX = /^[a-z0-9]{40}$/i;
|
|
32
|
+
export const SAVED_TORRENTS_INFO_REGEX = /^\[(?<mediaType>.+?)\]\[(?<tracker>.+?)\](?<name>.+?)(?:\[(?<infoHash>[a-z0-9]{40})\])?(?<cached>.cached)?\.torrent$/i;
|
|
33
|
+
export const BAD_GROUP_PARSE_REGEX = /^(?<badmatch>(?:dl|DDP?|aac|eac3|atmos|dts|ma|hd|[heav.c]{3.5}|[xh.]{1,2}[2456]|[0-9]+[ip]?|dxva|full|blu|ray|s(?:eason)?\W\d+|\W){3,})$/i;
|
|
34
|
+
export const JSON_VALUES_REGEX = /".+?"\s*:\s*"(?<value>.+?)"\s*(?:,|})/g;
|
|
35
|
+
export const ABS_WIN_PATH_REGEX = /^[a-z]:|^\\/i;
|
|
36
|
+
export const AKA_REGEX = /(?:[_.\s-]+|\b)a[_.\s-]?k[_.\s-]?a(?:[_.\s-]+|\b)/i;
|
|
37
|
+
export const ALL_SPACES_REGEX = /\s+/g;
|
|
38
|
+
export const ALL_SQUARE_BRACKETS_REGEX = /\[.*?\]|「.*?」|「.*?」|【.*?】/g;
|
|
39
|
+
export const ALL_PARENTHESES_REGEX = /\(.*?\)/g;
|
|
40
|
+
// Needs to be handled through helper functions since there are variations
|
|
41
|
+
const SOURCE_REGEXES = {
|
|
42
|
+
AMZN: /\b(amzn|amazon(hd)?)\b[ ._-]web[ ._-]?(dl|rip)?\b/i,
|
|
43
|
+
DSNP: /\b(dsnp|dsny|disney)\b/i,
|
|
44
|
+
NF: /\b(nf|netflix(u?hd)?)\b/i,
|
|
45
|
+
HULU: /\b(hulu)\b/i,
|
|
46
|
+
ATVP: /\b(atvp|aptv)\b/i,
|
|
47
|
+
HBO: /\b(hbo)(?![ ._-]max)\b|\b(hmax|hbom|hbo[ ._-]max)\b/i,
|
|
48
|
+
PCOK: /\b(pcok)\b/i,
|
|
49
|
+
PMTP: /\b(pmtp|Paramount Plus)\b/i,
|
|
50
|
+
};
|
|
51
|
+
export function parseSource(title) {
|
|
52
|
+
for (const [source, regex] of Object.entries(SOURCE_REGEXES)) {
|
|
53
|
+
if (regex.test(title))
|
|
54
|
+
return source;
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
export function sourceRegexRemove(title) {
|
|
59
|
+
const originalLength = title.length;
|
|
60
|
+
for (const regex of Object.values(SOURCE_REGEXES)) {
|
|
61
|
+
const newTitle = title.replace(regex, "");
|
|
62
|
+
if (newTitle.length !== originalLength)
|
|
63
|
+
return newTitle;
|
|
64
|
+
}
|
|
65
|
+
return title;
|
|
66
|
+
}
|
|
67
|
+
export const VIDEO_EXTENSIONS = [
|
|
68
|
+
// OG extensions
|
|
69
|
+
".mkv",
|
|
70
|
+
".mp4",
|
|
71
|
+
".avi",
|
|
72
|
+
".ts",
|
|
73
|
+
// extensions from sonarr
|
|
74
|
+
".m4v",
|
|
75
|
+
".3gp",
|
|
76
|
+
".nsv",
|
|
77
|
+
".ty",
|
|
78
|
+
".strm",
|
|
79
|
+
".rm",
|
|
80
|
+
".rmvb",
|
|
81
|
+
".mov",
|
|
82
|
+
".qt",
|
|
83
|
+
".divx",
|
|
84
|
+
".xvid",
|
|
85
|
+
".bivx",
|
|
86
|
+
".pva",
|
|
87
|
+
".wmv",
|
|
88
|
+
".asf",
|
|
89
|
+
".asx",
|
|
90
|
+
".ogm",
|
|
91
|
+
".ogv",
|
|
92
|
+
".m2v",
|
|
93
|
+
".dvr-ms",
|
|
94
|
+
".mpg",
|
|
95
|
+
".mpeg",
|
|
96
|
+
".avc",
|
|
97
|
+
".vp3",
|
|
98
|
+
".svq3",
|
|
99
|
+
".nuv",
|
|
100
|
+
".viv",
|
|
101
|
+
".dv",
|
|
102
|
+
".fli",
|
|
103
|
+
".flv",
|
|
104
|
+
".wpl",
|
|
105
|
+
".wtv",
|
|
106
|
+
];
|
|
107
|
+
export const VIDEO_DISC_EXTENSIONS = [".m2ts", ".ifo", ".vob", ".bup"];
|
|
108
|
+
export const AUDIO_EXTENSIONS = [
|
|
109
|
+
".wav",
|
|
110
|
+
".aiff",
|
|
111
|
+
".alac",
|
|
112
|
+
".flac",
|
|
113
|
+
".ape",
|
|
114
|
+
".mp3",
|
|
115
|
+
".aac",
|
|
116
|
+
".m4a",
|
|
117
|
+
".m4b",
|
|
118
|
+
".m4p",
|
|
119
|
+
".ogg",
|
|
120
|
+
".wma",
|
|
121
|
+
".aa",
|
|
122
|
+
".aax",
|
|
123
|
+
];
|
|
124
|
+
export const BOOK_EXTENSIONS = [
|
|
125
|
+
".epub",
|
|
126
|
+
".mobi",
|
|
127
|
+
".azw",
|
|
128
|
+
".azw3",
|
|
129
|
+
".azw4",
|
|
130
|
+
".pdf",
|
|
131
|
+
".djvu",
|
|
132
|
+
".html",
|
|
133
|
+
".chm",
|
|
134
|
+
".cbr",
|
|
135
|
+
".cbz",
|
|
136
|
+
".cb7",
|
|
137
|
+
".cbt",
|
|
138
|
+
".cba",
|
|
139
|
+
];
|
|
140
|
+
export const ALL_EXTENSIONS = [
|
|
141
|
+
...VIDEO_EXTENSIONS,
|
|
142
|
+
...AUDIO_EXTENSIONS,
|
|
143
|
+
...BOOK_EXTENSIONS,
|
|
144
|
+
...VIDEO_DISC_EXTENSIONS,
|
|
145
|
+
];
|
|
146
|
+
export const TORRENT_CACHE_FOLDER = "torrent_cache";
|
|
147
|
+
export const LOGS_FOLDER = "logs";
|
|
148
|
+
export const UNKNOWN_TRACKER = "UnknownTracker";
|
|
149
|
+
export const MAX_PATH_BYTES = 255;
|
|
150
|
+
export const LEVENSHTEIN_DIVISOR = 3;
|
|
151
|
+
export const MIN_VIDEO_QUERY_LENGTH = 3;
|
|
152
|
+
export var MediaType;
|
|
153
|
+
(function (MediaType) {
|
|
154
|
+
MediaType["EPISODE"] = "episode";
|
|
155
|
+
MediaType["SEASON"] = "pack";
|
|
156
|
+
MediaType["MOVIE"] = "movie";
|
|
157
|
+
MediaType["ANIME"] = "anime";
|
|
158
|
+
MediaType["VIDEO"] = "video";
|
|
159
|
+
MediaType["AUDIO"] = "audio";
|
|
160
|
+
MediaType["BOOK"] = "book";
|
|
161
|
+
MediaType["OTHER"] = "unknown";
|
|
162
|
+
})(MediaType || (MediaType = {}));
|
|
163
|
+
export var InjectionResult;
|
|
164
|
+
(function (InjectionResult) {
|
|
165
|
+
InjectionResult["SUCCESS"] = "INJECTED";
|
|
166
|
+
InjectionResult["FAILURE"] = "FAILURE";
|
|
167
|
+
InjectionResult["ALREADY_EXISTS"] = "ALREADY_EXISTS";
|
|
168
|
+
InjectionResult["TORRENT_NOT_COMPLETE"] = "TORRENT_NOT_COMPLETE";
|
|
169
|
+
})(InjectionResult || (InjectionResult = {}));
|
|
170
|
+
export var SaveResult;
|
|
171
|
+
(function (SaveResult) {
|
|
172
|
+
SaveResult["SAVED"] = "SAVED";
|
|
173
|
+
})(SaveResult || (SaveResult = {}));
|
|
174
|
+
export var Decision;
|
|
175
|
+
(function (Decision) {
|
|
176
|
+
Decision["MATCH"] = "MATCH";
|
|
177
|
+
Decision["MATCH_SIZE_ONLY"] = "MATCH_SIZE_ONLY";
|
|
178
|
+
Decision["MATCH_PARTIAL"] = "MATCH_PARTIAL";
|
|
179
|
+
Decision["FUZZY_SIZE_MISMATCH"] = "FUZZY_SIZE_MISMATCH";
|
|
180
|
+
Decision["SIZE_MISMATCH"] = "SIZE_MISMATCH";
|
|
181
|
+
Decision["PARTIAL_SIZE_MISMATCH"] = "PARTIAL_SIZE_MISMATCH";
|
|
182
|
+
Decision["NO_DOWNLOAD_LINK"] = "NO_DOWNLOAD_LINK";
|
|
183
|
+
Decision["DOWNLOAD_FAILED"] = "DOWNLOAD_FAILED";
|
|
184
|
+
Decision["MAGNET_LINK"] = "MAGNET_LINK";
|
|
185
|
+
Decision["RATE_LIMITED"] = "RATE_LIMITED";
|
|
186
|
+
/**
|
|
187
|
+
* Searchee and Candidate infoHash matches. Usually happens with public
|
|
188
|
+
* torrents and torrents added by radarr/sonarr before cross-seed on announces.
|
|
189
|
+
* Useful for the inject job as we ignore INFO_HASH_ALREADY_EXISTS and
|
|
190
|
+
* for reporting a 204 announce status code instead of 200 from exists.
|
|
191
|
+
*/
|
|
192
|
+
Decision["SAME_INFO_HASH"] = "SAME_INFO_HASH";
|
|
193
|
+
/**
|
|
194
|
+
* Checked after SAME_INFO_HASH.
|
|
195
|
+
*/
|
|
196
|
+
Decision["INFO_HASH_ALREADY_EXISTS"] = "INFO_HASH_ALREADY_EXISTS";
|
|
197
|
+
Decision["FILE_TREE_MISMATCH"] = "FILE_TREE_MISMATCH";
|
|
198
|
+
Decision["RELEASE_GROUP_MISMATCH"] = "RELEASE_GROUP_MISMATCH";
|
|
199
|
+
Decision["BLOCKED_RELEASE"] = "BLOCKED_RELEASE";
|
|
200
|
+
Decision["PROPER_REPACK_MISMATCH"] = "PROPER_REPACK_MISMATCH";
|
|
201
|
+
Decision["RESOLUTION_MISMATCH"] = "RESOLUTION_MISMATCH";
|
|
202
|
+
Decision["SOURCE_MISMATCH"] = "SOURCE_MISMATCH";
|
|
203
|
+
})(Decision || (Decision = {}));
|
|
204
|
+
export function isAnyMatchedDecision(decision) {
|
|
205
|
+
return (decision === Decision.MATCH ||
|
|
206
|
+
decision === Decision.MATCH_SIZE_ONLY ||
|
|
207
|
+
decision === Decision.MATCH_PARTIAL);
|
|
208
|
+
}
|
|
209
|
+
export function isStaticDecision(decision) {
|
|
210
|
+
return (decision === Decision.RELEASE_GROUP_MISMATCH ||
|
|
211
|
+
decision === Decision.RESOLUTION_MISMATCH ||
|
|
212
|
+
decision === Decision.SOURCE_MISMATCH ||
|
|
213
|
+
decision === Decision.PROPER_REPACK_MISMATCH ||
|
|
214
|
+
decision === Decision.MAGNET_LINK);
|
|
215
|
+
}
|
|
216
|
+
const PARSE_BLOCKLIST_REGEX = /^(?<blocklistType>.+?):(?<blocklistValue>.*)$/;
|
|
217
|
+
export function parseBlocklistEntry(blocklistEntry) {
|
|
218
|
+
const match = blocklistEntry.match(PARSE_BLOCKLIST_REGEX);
|
|
219
|
+
if (match?.groups) {
|
|
220
|
+
return {
|
|
221
|
+
blocklistType: match.groups.blocklistType,
|
|
222
|
+
blocklistValue: match.groups.blocklistValue,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
return {
|
|
226
|
+
blocklistType: BlocklistType.LEGACY,
|
|
227
|
+
blocklistValue: blocklistEntry,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
export const IGNORED_FOLDERS_SUBSTRINGS = [
|
|
231
|
+
"sample",
|
|
232
|
+
"proof",
|
|
233
|
+
"bdmv",
|
|
234
|
+
"bdrom",
|
|
235
|
+
"certificate",
|
|
236
|
+
"video_ts",
|
|
237
|
+
];
|
|
238
|
+
export const RESUME_EXCLUDED_KEYWORDS = [
|
|
239
|
+
"sample",
|
|
240
|
+
"trailer",
|
|
241
|
+
"extras",
|
|
242
|
+
"bonus",
|
|
243
|
+
];
|
|
244
|
+
export const RESUME_EXCLUDED_EXTS = [
|
|
245
|
+
".nfo",
|
|
246
|
+
".srr",
|
|
247
|
+
".srt",
|
|
248
|
+
".txt",
|
|
249
|
+
".ass",
|
|
250
|
+
];
|
|
251
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { SearcheeWithoutInfoHash } from "./searchee.js";
|
|
2
|
+
export declare function indexDataDirs(options: {
|
|
3
|
+
startup: boolean;
|
|
4
|
+
}): Promise<void>;
|
|
5
|
+
export declare function getDataByFuzzyName(stem: string): Promise<SearcheeWithoutInfoHash[]>;
|
|
6
|
+
export declare function shouldIgnorePathHeuristically(root: string, isDir: boolean): boolean;
|
|
7
|
+
export declare function findPotentialNestedRoots(root: string, depth: number, isDirHint?: boolean): Promise<string[]>;
|
|
8
|
+
export declare function findSearcheesFromAllDataDirs(): Promise<string[]>;
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { watch } from "fs";
|
|
2
|
+
import { readdir, readFile, stat } from "fs/promises";
|
|
3
|
+
import { basename, dirname, extname, join, resolve, sep } from "path";
|
|
4
|
+
import { IGNORED_FOLDERS_SUBSTRINGS, LEVENSHTEIN_DIVISOR, VIDEO_EXTENSIONS, } from "./constants.js";
|
|
5
|
+
import { db } from "./db.js";
|
|
6
|
+
import { Label, logger } from "./logger.js";
|
|
7
|
+
import { getRuntimeConfig } from "./runtimeConfig.js";
|
|
8
|
+
import { createSearcheeFromPath, getFilesFromDataRoot, parseTitle, } from "./searchee.js";
|
|
9
|
+
import { createEnsemblePieces } from "./torrent.js";
|
|
10
|
+
import { createKeyTitle, exists, filterAsync, filterAsyncYield, flatMapAsync, inBatches, isTruthy, mapAsync, yieldToEventLoop, stripExtension, } from "./utils.js";
|
|
11
|
+
import { isOk } from "./Result.js";
|
|
12
|
+
import { distance } from "fastest-levenshtein";
|
|
13
|
+
const watchers = new Map();
|
|
14
|
+
const modifiedPaths = new Map();
|
|
15
|
+
const modifiedPathTimes = new Map();
|
|
16
|
+
const STABILITY_WINDOW_MS = 60_000;
|
|
17
|
+
function createWatcher(dataDir) {
|
|
18
|
+
return watch(dataDir, { recursive: true, persistent: false }, (_, f) => {
|
|
19
|
+
if (!f)
|
|
20
|
+
return;
|
|
21
|
+
const fullPath = resolve(join(dataDir, f));
|
|
22
|
+
if (fullPath === resolve(dataDir))
|
|
23
|
+
return;
|
|
24
|
+
modifiedPaths.get(dataDir).add(fullPath);
|
|
25
|
+
modifiedPathTimes.get(dataDir).set(fullPath, Date.now());
|
|
26
|
+
}).on("error", (e) => {
|
|
27
|
+
logger.error(`Restarting watcher for dataDir ${dataDir}: ${e.message}`);
|
|
28
|
+
logger.debug(e);
|
|
29
|
+
watchers.get(dataDir).close();
|
|
30
|
+
watchers.set(dataDir, createWatcher(dataDir));
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
export async function indexDataDirs(options) {
|
|
34
|
+
const { dataDirs, maxDataDepth } = getRuntimeConfig();
|
|
35
|
+
if (!dataDirs.length)
|
|
36
|
+
return;
|
|
37
|
+
if (options.startup) {
|
|
38
|
+
logger.info({
|
|
39
|
+
label: Label.INDEX,
|
|
40
|
+
message: "Indexing dataDirs for reverse lookup...",
|
|
41
|
+
});
|
|
42
|
+
for (const dataDir of dataDirs) {
|
|
43
|
+
modifiedPaths.set(dataDir, new Set());
|
|
44
|
+
modifiedPathTimes.set(dataDir, new Map());
|
|
45
|
+
watchers.set(dataDir, createWatcher(dataDir));
|
|
46
|
+
}
|
|
47
|
+
const searcheePaths = await findSearcheesFromAllDataDirs();
|
|
48
|
+
const maxUserWatchesPath = "/proc/sys/fs/inotify/max_user_watches";
|
|
49
|
+
if (await exists(maxUserWatchesPath)) {
|
|
50
|
+
const limit = parseInt(await readFile(maxUserWatchesPath, "utf8"));
|
|
51
|
+
if (limit < searcheePaths.length * 2) {
|
|
52
|
+
logger.error(`max_user_watches too low for proper indexing of dataDirs. It is recommended to set fs.inotify.max_user_watches=1048576 in /etc/sysctl.conf (only on the host system if using docker) - current: ${limit}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const numEntries = await indexDataPaths(searcheePaths);
|
|
56
|
+
logger.info(`Validated ${numEntries} entries from dataDirs...`);
|
|
57
|
+
}
|
|
58
|
+
await mapAsync(dataDirs, async (dataDir) => {
|
|
59
|
+
const modified = modifiedPaths.get(dataDir);
|
|
60
|
+
const modifiedTimes = modifiedPathTimes.get(dataDir);
|
|
61
|
+
const eventPaths = [];
|
|
62
|
+
const now = Date.now();
|
|
63
|
+
for (const path of modified) {
|
|
64
|
+
const lastSeen = modifiedTimes.get(path) ?? 0;
|
|
65
|
+
if (now - lastSeen < STABILITY_WINDOW_MS)
|
|
66
|
+
continue;
|
|
67
|
+
if (!modified.delete(path))
|
|
68
|
+
continue;
|
|
69
|
+
modifiedTimes.delete(path);
|
|
70
|
+
eventPaths.push(path);
|
|
71
|
+
}
|
|
72
|
+
if (!eventPaths.length)
|
|
73
|
+
return;
|
|
74
|
+
logger.verbose(`Indexing dataDir ${dataDir} due to recent changes...`);
|
|
75
|
+
eventPaths.sort((a, b) => b.split(sep).filter(isTruthy).length -
|
|
76
|
+
a.split(sep).filter(isTruthy).length);
|
|
77
|
+
const deletedPaths = [];
|
|
78
|
+
const paths = await filterAsync(Array.from(eventPaths.reduce((acc, path) => {
|
|
79
|
+
const affectedPaths = [path];
|
|
80
|
+
let parentPath = dirname(path);
|
|
81
|
+
while (resolve(parentPath) !== resolve(dataDir)) {
|
|
82
|
+
affectedPaths.push(parentPath);
|
|
83
|
+
parentPath = dirname(parentPath);
|
|
84
|
+
}
|
|
85
|
+
for (const affectedPath of affectedPaths.slice(-maxDataDepth)) {
|
|
86
|
+
acc.add(affectedPath);
|
|
87
|
+
}
|
|
88
|
+
return acc;
|
|
89
|
+
}, new Set())), async (path) => {
|
|
90
|
+
if (await exists(path))
|
|
91
|
+
return true;
|
|
92
|
+
deletedPaths.push(path);
|
|
93
|
+
return false;
|
|
94
|
+
});
|
|
95
|
+
await inBatches(deletedPaths, async (batch) => {
|
|
96
|
+
await db("data").whereIn("path", batch).del();
|
|
97
|
+
await db("ensemble").whereIn("path", batch).del();
|
|
98
|
+
});
|
|
99
|
+
await indexDataPaths(paths);
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Adds the data and ensemble entries to the database.
|
|
104
|
+
* @param paths The paths to index.
|
|
105
|
+
*/
|
|
106
|
+
async function indexDataPaths(paths) {
|
|
107
|
+
const { seasonFromEpisodes } = getRuntimeConfig();
|
|
108
|
+
const memoizedPaths = new Map();
|
|
109
|
+
const memoizedLengths = new Map();
|
|
110
|
+
const dataRows = [];
|
|
111
|
+
const ensembleRows = [];
|
|
112
|
+
let processed = 0;
|
|
113
|
+
for (const path of paths) {
|
|
114
|
+
processed += 1;
|
|
115
|
+
if (processed % 500 === 0) {
|
|
116
|
+
await yieldToEventLoop();
|
|
117
|
+
}
|
|
118
|
+
const files = await getFilesFromDataRoot(path, memoizedPaths, memoizedLengths);
|
|
119
|
+
if (!files.length)
|
|
120
|
+
continue;
|
|
121
|
+
const title = parseTitle(basename(path), files, path);
|
|
122
|
+
if (!title)
|
|
123
|
+
continue;
|
|
124
|
+
dataRows.push({ title, path });
|
|
125
|
+
if (seasonFromEpisodes) {
|
|
126
|
+
const ensembleEntries = indexEnsembleDataEntry(title, path, files);
|
|
127
|
+
if (ensembleEntries)
|
|
128
|
+
ensembleRows.push(...ensembleEntries);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
await inBatches(dataRows, async (batch) => {
|
|
132
|
+
await db("data").insert(batch).onConflict("path").merge();
|
|
133
|
+
});
|
|
134
|
+
await inBatches(ensembleRows, async (batch) => {
|
|
135
|
+
await db("ensemble")
|
|
136
|
+
.insert(batch)
|
|
137
|
+
.onConflict(["client_host", "path"])
|
|
138
|
+
.merge();
|
|
139
|
+
});
|
|
140
|
+
return dataRows.length;
|
|
141
|
+
}
|
|
142
|
+
function indexEnsembleDataEntry(title, path, files) {
|
|
143
|
+
const ensemblePieces = createEnsemblePieces(title, files);
|
|
144
|
+
if (!ensemblePieces || !ensemblePieces.length)
|
|
145
|
+
return null;
|
|
146
|
+
return ensemblePieces.map((ensemblePiece) => ({
|
|
147
|
+
client_host: null,
|
|
148
|
+
path: join(dirname(path), ensemblePiece.largestFile.path),
|
|
149
|
+
info_hash: null,
|
|
150
|
+
ensemble: ensemblePiece.key,
|
|
151
|
+
element: ensemblePiece.element,
|
|
152
|
+
}));
|
|
153
|
+
}
|
|
154
|
+
export async function getDataByFuzzyName(stem) {
|
|
155
|
+
const allDataEntries = await db("data");
|
|
156
|
+
const fullMatch = createKeyTitle(stem);
|
|
157
|
+
// Attempt to filter torrents in DB to match incoming data before fuzzy check
|
|
158
|
+
let filteredNames = [];
|
|
159
|
+
if (fullMatch) {
|
|
160
|
+
filteredNames = await filterAsyncYield(allDataEntries, async (dbData) => {
|
|
161
|
+
const dbMatch = createKeyTitle(stripExtension(dbData.title));
|
|
162
|
+
return fullMatch === dbMatch;
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
// If none match, proceed with fuzzy name check on all names.
|
|
166
|
+
filteredNames = filteredNames.length > 0 ? filteredNames : allDataEntries;
|
|
167
|
+
const entriesToDelete = [];
|
|
168
|
+
const candidateMaxDistance = Math.floor(stem.length / LEVENSHTEIN_DIVISOR);
|
|
169
|
+
const potentialMatches = await filterAsyncYield(filteredNames, async (dbEntry) => {
|
|
170
|
+
const dbTitle = stripExtension(dbEntry.title);
|
|
171
|
+
const maxDistance = Math.min(candidateMaxDistance, Math.floor(dbTitle.length / LEVENSHTEIN_DIVISOR));
|
|
172
|
+
if (distance(stem, dbTitle) > maxDistance)
|
|
173
|
+
return false;
|
|
174
|
+
if (await exists(dbEntry.path))
|
|
175
|
+
return true;
|
|
176
|
+
entriesToDelete.push(dbEntry.path);
|
|
177
|
+
return false;
|
|
178
|
+
});
|
|
179
|
+
await inBatches(entriesToDelete, async (batch) => {
|
|
180
|
+
await db("data").whereIn("path", batch).del();
|
|
181
|
+
await db("ensemble").whereIn("path", batch).del();
|
|
182
|
+
});
|
|
183
|
+
return (await mapAsync(potentialMatches, (dbData) => createSearcheeFromPath(dbData.path)))
|
|
184
|
+
.filter(isOk)
|
|
185
|
+
.map((r) => r.unwrap());
|
|
186
|
+
}
|
|
187
|
+
export function shouldIgnorePathHeuristically(root, isDir) {
|
|
188
|
+
const searchBasename = basename(root);
|
|
189
|
+
if (isDir) {
|
|
190
|
+
return IGNORED_FOLDERS_SUBSTRINGS.includes(searchBasename.toLowerCase());
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
return !VIDEO_EXTENSIONS.includes(extname(searchBasename));
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
export async function findPotentialNestedRoots(root, depth, isDirHint) {
|
|
197
|
+
try {
|
|
198
|
+
const isDir = isDirHint !== undefined
|
|
199
|
+
? isDirHint
|
|
200
|
+
: (await stat(root)).isDirectory();
|
|
201
|
+
if (depth <= 0 || shouldIgnorePathHeuristically(root, isDir)) {
|
|
202
|
+
return [];
|
|
203
|
+
}
|
|
204
|
+
else if (depth > 0 && isDir) {
|
|
205
|
+
const directChildren = await readdir(root, { withFileTypes: true });
|
|
206
|
+
const allDescendants = await flatMapAsync(directChildren, (dirent) => findPotentialNestedRoots(join(root, dirent.name), depth - 1, dirent.isDirectory()));
|
|
207
|
+
return [...allDescendants, root]; // deepest paths first for memoization
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
return [root];
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
catch (e) {
|
|
214
|
+
logger.verbose(`Failed to process path ${root}: ${e.message}`);
|
|
215
|
+
logger.debug(e);
|
|
216
|
+
return [];
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
export async function findSearcheesFromAllDataDirs() {
|
|
220
|
+
const { dataDirs, maxDataDepth } = getRuntimeConfig();
|
|
221
|
+
return flatMapAsync(dataDirs, async (dataDir) => flatMapAsync((await readdir(dataDir)).map((dirent) => join(dataDir, dirent)), (path) => findPotentialNestedRoots(path, maxDataDepth)));
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=dataFiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataFiles.js","sourceRoot":"","sources":["../src/dataFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,EAAE,MAAM,IAAI,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AACtE,OAAO,EACN,0BAA0B,EAC1B,mBAAmB,EACnB,gBAAgB,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACN,sBAAsB,EAEtB,oBAAoB,EACpB,UAAU,GAEV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAiB,MAAM,cAAc,CAAC;AACnE,OAAO,EACN,cAAc,EACd,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,cAAc,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAO/C,MAAM,QAAQ,GAA2B,IAAI,GAAG,EAAE,CAAC;AACnD,MAAM,aAAa,GAA6B,IAAI,GAAG,EAAE,CAAC;AAC1D,MAAM,iBAAiB,GAAqC,IAAI,GAAG,EAAE,CAAC;AACtE,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEnC,SAAS,aAAa,CAAC,OAAe;IACrC,OAAO,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACtE,IAAI,CAAC,CAAC;YAAE,OAAO;QACf,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC;YAAE,OAAO;QAC1C,aAAa,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACpB,MAAM,CAAC,KAAK,CAAC,kCAAkC,OAAO,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,KAAK,EAAE,CAAC;QAC/B,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAEnC;IACA,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACtD,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO;IAE7B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,yCAAyC;SAClD,CAAC,CAAC;QACH,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAChC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YACtC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YAC1C,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,4BAA4B,EAAE,CAAC;QAC3D,MAAM,kBAAkB,GAAG,uCAAuC,CAAC;QACnE,IAAI,MAAM,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;YACnE,IAAI,KAAK,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,MAAM,CAAC,KAAK,CACX,mMAAmM,KAAK,EAAE,CAC1M,CAAC;YACH,CAAC;QACF,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,aAAa,UAAU,2BAA2B,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC1C,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;QACtD,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,GAAG,GAAG,QAAQ,GAAG,mBAAmB;gBAAE,SAAS;YACnD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,SAAS;YACrC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,MAAM;YAAE,OAAO;QAC/B,MAAM,CAAC,OAAO,CAAC,oBAAoB,OAAO,2BAA2B,CAAC,CAAC;QACvE,UAAU,CAAC,IAAI,CACd,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACR,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM;YACpC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CACrC,CAAC;QACF,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,WAAW,CAC9B,KAAK,CAAC,IAAI,CACT,UAAU,CAAC,MAAM,CAAc,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAC5C,MAAM,aAAa,GAAa,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjD,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC/B,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YAClC,CAAC;YACD,KAAK,MAAM,YAAY,IAAI,aAAa,CAAC,KAAK,CAC7C,CAAC,YAAY,CACb,EAAE,CAAC;gBACH,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACvB,CAAC;YACD,OAAO,GAAG,CAAC;QACZ,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CACb,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;YACd,IAAI,MAAM,MAAM,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YACpC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO,KAAK,CAAC;QACd,CAAC,CACD,CAAC;QACF,MAAM,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC7C,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;YAC9C,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;QACnD,CAAC,CAAC,CAAC;QACH,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,cAAc,CAAC,KAAe;IAC5C,MAAM,EAAE,kBAAkB,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAClD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAoB,CAAC;IAClD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,MAAM,QAAQ,GAAgB,EAAE,CAAC;IACjC,MAAM,YAAY,GAAoB,EAAE,CAAC;IACzC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,SAAS,IAAI,CAAC,CAAC;QACf,IAAI,SAAS,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,gBAAgB,EAAE,CAAC;QAC1B,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,oBAAoB,CACvC,IAAI,EACJ,aAAa,EACb,eAAe,CACf,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,SAAS;QAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,IAAI,kBAAkB,EAAE,CAAC;YACxB,MAAM,eAAe,GAAG,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACnE,IAAI,eAAe;gBAAE,YAAY,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;QAC5D,CAAC;IACF,CAAC;IACD,MAAM,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACzC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3D,CAAC,CAAC,CAAC;IACH,MAAM,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAC7C,MAAM,EAAE,CAAC,UAAU,CAAC;aAClB,MAAM,CAAC,KAAK,CAAC;aACb,UAAU,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;aACnC,KAAK,EAAE,CAAC;IACX,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,MAAM,CAAC;AACxB,CAAC;AAED,SAAS,sBAAsB,CAC9B,KAAa,EACb,IAAY,EACZ,KAAa;IAEb,MAAM,cAAc,GAAG,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC3D,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAC7C,WAAW,EAAE,IAAI;QACjB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC;QACzD,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,aAAa,CAAC,GAAG;QAC3B,OAAO,EAAE,aAAa,CAAC,OAAO;KAC9B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,IAAY;IAEZ,MAAM,cAAc,GAAgB,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAEvC,6EAA6E;IAC7E,IAAI,aAAa,GAAgB,EAAE,CAAC;IACpC,IAAI,SAAS,EAAE,CAAC;QACf,aAAa,GAAG,MAAM,gBAAgB,CACrC,cAAc,EACd,KAAK,EAAE,MAAM,EAAE,EAAE;YAChB,MAAM,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,OAAO,SAAS,KAAK,OAAO,CAAC;QAC9B,CAAC,CACD,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,aAAa,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC;IAE1E,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC,CAAC;IAC3E,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,CAC9C,aAAa,EACb,KAAK,EAAE,OAAO,EAAE,EAAE;QACjB,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC3B,oBAAoB,EACpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,mBAAmB,CAAC,CAChD,CAAC;QACF,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,WAAW;YAAE,OAAO,KAAK,CAAC;QACxD,IAAI,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5C,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC;IACd,CAAC,CACD,CAAC;IAEF,MAAM,SAAS,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAChD,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;QAC9C,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,OAAO,CACN,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE,CAC3C,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CACnC,CACD;SACC,MAAM,CAAC,IAAI,CAAC;SACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,IAAY,EAAE,KAAc;IACzE,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,KAAK,EAAE,CAAC;QACX,OAAO,0BAA0B,CAAC,QAAQ,CACzC,cAAc,CAAC,WAAW,EAAE,CAC5B,CAAC;IACH,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IAC5D,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC7C,IAAY,EACZ,KAAa,EACb,SAAmB;IAEnB,IAAI,CAAC;QACJ,MAAM,KAAK,GACV,SAAS,KAAK,SAAS;YACtB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,KAAK,IAAI,CAAC,IAAI,6BAA6B,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAC9D,OAAO,EAAE,CAAC;QACX,CAAC;aAAM,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;YAC/B,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YACpE,MAAM,cAAc,GAAG,MAAM,YAAY,CACxC,cAAc,EACd,CAAC,MAAM,EAAE,EAAE,CACV,wBAAwB,CACvB,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EACvB,KAAK,GAAG,CAAC,EACT,MAAM,CAAC,WAAW,EAAE,CACpB,CACF,CAAC;YACF,OAAO,CAAC,GAAG,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,sCAAsC;QACzE,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;IACF,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,MAAM,CAAC,OAAO,CAAC,0BAA0B,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO,EAAE,CAAC;IACX,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B;IACjD,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACtD,OAAO,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAC/C,YAAY,CACX,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAC/D,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,EAAE,YAAY,CAAC,CACtD,CACD,CAAC;AACH,CAAC"}
|
package/dist/db.d.ts
ADDED