cross-seed 6.4.0 → 6.5.0

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/searchee.js CHANGED
@@ -1,11 +1,14 @@
1
- import { readdirSync, statSync } from "fs";
2
1
  import { stat } from "fs/promises";
2
+ import { existsSync, readdirSync, statSync } from "fs";
3
3
  import { basename, dirname, join, relative } from "path";
4
+ import ms from "ms";
5
+ import { getClient } from "./clients/TorrentClient.js";
4
6
  import { ANIME_GROUP_REGEX, ANIME_REGEX, ARR_DIR_REGEX, BAD_GROUP_PARSE_REGEX, EP_REGEX, MOVIE_REGEX, parseSource, RELEASE_GROUP_REGEX, RES_STRICT_REGEX, SEASON_REGEX, SONARR_SUBFOLDERS_REGEX, VIDEO_EXTENSIONS, } from "./constants.js";
5
7
  import { Label, logger } from "./logger.js";
6
8
  import { resultOf, resultOfErr } from "./Result.js";
9
+ import { getRuntimeConfig } from "./runtimeConfig.js";
7
10
  import { parseTorrentWithMetadata } from "./torrent.js";
8
- import { createKeyTitle, extractInt, filesWithExt, getLogString, hasExt, isBadTitle, } from "./utils.js";
11
+ import { createKeyTitle, extractInt, filesWithExt, getLogString, hasExt, humanReadableDate, humanReadableSize, isBadTitle, stripExtension, } from "./utils.js";
9
12
  export function hasInfoHash(searchee) {
10
13
  return searchee.infoHash != null;
11
14
  }
@@ -29,11 +32,23 @@ export function getSearcheeSource(searchee) {
29
32
  export function getLargestFile(files) {
30
33
  return files.reduce((a, b) => (a.length > b.length ? a : b));
31
34
  }
32
- export async function getNewestFileAge(searchee) {
33
- if (searchee.infoHash || searchee.path) {
34
- throw new Error("Only virtual searchees have absolute paths");
35
+ export function getAbsoluteFilePath(sourceRoot, filePath, sourceRootIsFileHint) {
36
+ return sourceRootIsFileHint ?? statSync(sourceRoot).isFile()
37
+ ? sourceRoot
38
+ : join(dirname(sourceRoot), filePath);
39
+ }
40
+ export async function getNewestFileAge(absoluteFilePaths) {
41
+ return Math.max(...(await Promise.all(absoluteFilePaths.map((file) => stat(file).then((s) => s.mtimeMs)))));
42
+ }
43
+ export async function getSearcheeNewestFileAge(searchee) {
44
+ const { path } = searchee;
45
+ if (!path) {
46
+ return getNewestFileAge(searchee.files.map((file) => file.path));
35
47
  }
36
- return Math.max(...(await Promise.all(searchee.files.map((file) => stat(file.path).then((s) => s.mtimeMs)))));
48
+ const pathStat = statSync(path);
49
+ if (pathStat.isFile())
50
+ return pathStat.mtimeMs;
51
+ return getNewestFileAge(searchee.files.map((file) => getAbsoluteFilePath(path, file.path, false)));
37
52
  }
38
53
  function getFileNamesFromRootRec(root, isDirHint) {
39
54
  const isDir = isDirHint !== undefined ? isDirHint : statSync(root).isDirectory();
@@ -151,13 +166,16 @@ export async function createSearcheeFromPath(root) {
151
166
  const name = basename(root);
152
167
  const title = parseTitle(name, files, root);
153
168
  if (title) {
154
- return resultOf({
155
- files: files,
169
+ const searchee = {
170
+ infoHash: undefined,
156
171
  path: root,
172
+ files: files,
157
173
  name,
158
174
  title,
159
175
  length: totalLength,
160
- });
176
+ };
177
+ searchee.mtimeMs = await getSearcheeNewestFileAge(searchee);
178
+ return resultOf(searchee);
161
179
  }
162
180
  const msg = `Could not find title for ${root} in parent directory or child files`;
163
181
  logger.verbose({
@@ -255,4 +273,183 @@ export function getReleaseGroup(stem) {
255
273
  ? null
256
274
  : parsedGroupMatchString;
257
275
  }
276
+ const logEnsemble = (reason, options) => {
277
+ if (!options.useFilters)
278
+ return;
279
+ logger.verbose({
280
+ label: Label.PREFILTER,
281
+ message: reason,
282
+ });
283
+ };
284
+ function parseEnsembleKeys(searchee, keys, ensembleTitles, episode, existingSeasonMap, keyMap, ensembleTitleMap) {
285
+ for (let i = 0; i < keys.length; i++) {
286
+ const key = keys[i];
287
+ if (existingSeasonMap.has(key))
288
+ continue;
289
+ if (!ensembleTitleMap.has(key)) {
290
+ ensembleTitleMap.set(key, ensembleTitles[i]);
291
+ }
292
+ const episodesMap = keyMap.get(key);
293
+ if (!episodesMap) {
294
+ keyMap.set(key, new Map([[episode, [searchee]]]));
295
+ continue;
296
+ }
297
+ const episodeSearchees = episodesMap.get(episode);
298
+ if (!episodeSearchees) {
299
+ episodesMap.set(episode, [searchee]);
300
+ continue;
301
+ }
302
+ episodeSearchees.push(searchee);
303
+ }
304
+ }
305
+ /**
306
+ * Organize episodes by {key: {episode: [searchee]}}
307
+ */
308
+ function organizeEnsembleKeys(allSearchees, options) {
309
+ const existingSeasonMap = new Map();
310
+ if (options.useFilters) {
311
+ for (const searchee of allSearchees) {
312
+ const stem = stripExtension(searchee.name);
313
+ const seasonKey = getSeasonKey(stem);
314
+ if (!seasonKey)
315
+ continue;
316
+ const info = getKeyMetaInfo(stem);
317
+ const key = `${seasonKey.keyTitle}.${seasonKey.season}${info}`;
318
+ if (!existingSeasonMap.has(key)) {
319
+ existingSeasonMap.set(key, []);
320
+ }
321
+ existingSeasonMap.get(key).push(searchee);
322
+ }
323
+ }
324
+ const keyMap = new Map();
325
+ const ensembleTitleMap = new Map();
326
+ for (const searchee of allSearchees) {
327
+ const stem = stripExtension(searchee.name);
328
+ const episodeKey = getEpisodeKey(stem);
329
+ if (episodeKey) {
330
+ const info = getKeyMetaInfo(stem);
331
+ const key = `${episodeKey.keyTitle}${episodeKey.season ? `.${episodeKey.season}` : ""}${info}`;
332
+ const ensembleTitle = `${episodeKey.ensembleTitle}${info}`;
333
+ parseEnsembleKeys(searchee, [key], [ensembleTitle], episodeKey.episode, existingSeasonMap, keyMap, ensembleTitleMap);
334
+ if (options.useFilters)
335
+ continue;
336
+ }
337
+ if (options.useFilters && SEASON_REGEX.test(stem))
338
+ continue;
339
+ const animeKeys = getAnimeKeys(stem);
340
+ if (animeKeys) {
341
+ const info = getKeyMetaInfo(stem);
342
+ const keys = animeKeys.keyTitles.map((k) => `${k}${info}`);
343
+ const ensembleTitles = animeKeys.ensembleTitles.map((t) => `${t}${info}`);
344
+ parseEnsembleKeys(searchee, keys, ensembleTitles, animeKeys.release, existingSeasonMap, keyMap, ensembleTitleMap);
345
+ if (options.useFilters)
346
+ continue;
347
+ }
348
+ }
349
+ return { keyMap, ensembleTitleMap };
350
+ }
351
+ function pushEnsembleEpisode(searchee, episodeFiles, torrentSavePaths) {
352
+ let sourceRoot;
353
+ if (searchee.path) {
354
+ sourceRoot = searchee.path;
355
+ }
356
+ else {
357
+ const savePath = torrentSavePaths.get(searchee.infoHash);
358
+ if (!savePath)
359
+ return;
360
+ sourceRoot = join(savePath, searchee.files.length === 1
361
+ ? searchee.files[0].path
362
+ : searchee.name);
363
+ }
364
+ if (!existsSync(sourceRoot))
365
+ return;
366
+ const largestFile = getLargestFile(searchee.files);
367
+ if (largestFile.length / searchee.length < 0.5)
368
+ return;
369
+ const absoluteFile = {
370
+ length: largestFile.length,
371
+ name: largestFile.name,
372
+ path: getAbsoluteFilePath(sourceRoot, largestFile.path),
373
+ };
374
+ if (!existsSync(absoluteFile.path))
375
+ return;
376
+ // Use the oldest file for episode if dupe (cross seeds)
377
+ const duplicateFile = episodeFiles.find((file) => file.length === absoluteFile.length);
378
+ if (duplicateFile) {
379
+ const dupeFileAge = statSync(duplicateFile.path).mtimeMs;
380
+ const newFileAge = statSync(absoluteFile.path).mtimeMs;
381
+ if (dupeFileAge <= newFileAge)
382
+ return;
383
+ episodeFiles.splice(episodeFiles.indexOf(duplicateFile), 1);
384
+ }
385
+ episodeFiles.push(absoluteFile);
386
+ }
387
+ function createVirtualSeasonSearchee(key, episodeSearchees, ensembleTitleMap, torrentSavePaths, options) {
388
+ const seasonFromEpisodes = getRuntimeConfig().seasonFromEpisodes;
389
+ const minEpisodes = 3;
390
+ if (options.useFilters && episodeSearchees.size < minEpisodes) {
391
+ return null;
392
+ }
393
+ const ensembleTitle = ensembleTitleMap.get(key);
394
+ const episodes = Array.from(episodeSearchees.keys());
395
+ if (typeof episodes[0] === "number") {
396
+ const highestEpisode = Math.max(...episodes);
397
+ const availPct = episodes.length / highestEpisode;
398
+ if (options.useFilters && availPct < seasonFromEpisodes) {
399
+ logEnsemble(`Skipping virtual searchee for ${ensembleTitle} episodes as there's only ${episodes.length}/${highestEpisode} (${availPct.toFixed(2)} < ${seasonFromEpisodes.toFixed(2)})`, options);
400
+ return null;
401
+ }
402
+ }
403
+ const seasonSearchee = {
404
+ name: ensembleTitle,
405
+ title: ensembleTitle,
406
+ files: [], // Can have multiple files per episode
407
+ length: 0, // Total length of episodes (uses average for multi-file episodes)
408
+ label: episodeSearchees.values().next().value[0].label,
409
+ };
410
+ let newestFileAge = 0;
411
+ for (const [, searchees] of episodeSearchees) {
412
+ const episodeFiles = [];
413
+ for (const searchee of searchees) {
414
+ pushEnsembleEpisode(searchee, episodeFiles, torrentSavePaths);
415
+ }
416
+ if (episodeFiles.length === 0)
417
+ continue;
418
+ const total = episodeFiles.reduce((a, b) => a + b.length, 0);
419
+ seasonSearchee.length += Math.round(total / episodeFiles.length);
420
+ seasonSearchee.files.push(...episodeFiles);
421
+ const fileAges = episodeFiles.map((f) => statSync(f.path).mtimeMs);
422
+ newestFileAge = Math.max(newestFileAge, ...fileAges);
423
+ }
424
+ seasonSearchee.mtimeMs = newestFileAge;
425
+ if (seasonSearchee.files.length < minEpisodes) {
426
+ logEnsemble(`Skipping virtual searchee for ${ensembleTitle} episodes as only ${seasonSearchee.files.length} episode files were found (min: ${minEpisodes})`, options);
427
+ return null;
428
+ }
429
+ if (options.useFilters && Date.now() - newestFileAge < ms("8 days")) {
430
+ logEnsemble(`Skipping virtual searchee for ${ensembleTitle} episodes as some are below the minimum age of 8 days: ${humanReadableDate(newestFileAge)}`, options);
431
+ return null;
432
+ }
433
+ logEnsemble(`Created virtual searchee for ${ensembleTitle}: ${episodeSearchees.size} episodes - ${seasonSearchee.files.length} files - ${humanReadableSize(seasonSearchee.length)}`, options);
434
+ return seasonSearchee;
435
+ }
436
+ export async function createEnsembleSearchees(allSearchees, options) {
437
+ const { seasonFromEpisodes } = getRuntimeConfig();
438
+ if (!seasonFromEpisodes)
439
+ return [];
440
+ logEnsemble(`Creating virtual searchees for seasons...`, options);
441
+ const { keyMap, ensembleTitleMap } = organizeEnsembleKeys(allSearchees, options);
442
+ const torrentSavePaths = await getClient().getAllDownloadDirs({
443
+ metas: allSearchees.filter(hasInfoHash),
444
+ onlyCompleted: false,
445
+ });
446
+ const seasonSearchees = [];
447
+ for (const [key, episodeSearchees] of keyMap) {
448
+ const seasonSearchee = createVirtualSeasonSearchee(key, episodeSearchees, ensembleTitleMap, torrentSavePaths, options);
449
+ if (seasonSearchee)
450
+ seasonSearchees.push(seasonSearchee);
451
+ }
452
+ logEnsemble(`Created ${seasonSearchees.length} virtual season searchees...`, options);
453
+ return seasonSearchees;
454
+ }
258
455
  //# sourceMappingURL=searchee.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"searchee.js","sourceRoot":"","sources":["../src/searchee.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"searchee.js","sourceRoot":"","sources":["../src/searchee.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import { db } from "./db.js";
1
+ import { db, memDB } from "./db.js";
2
2
  async function exitGracefully() {
3
3
  await db.destroy();
4
+ await memDB.destroy();
4
5
  process.exit();
5
6
  }
6
7
  process.on("SIGINT", exitGracefully);
@@ -1 +1 @@
1
- {"version":3,"file":"signalHandlers.js","sourceRoot":"","sources":["../src/signalHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE7B,KAAK,UAAU,cAAc;IAC5B,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;IACnB,OAAO,CAAC,IAAI,EAAE,CAAC;AAChB,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AACrC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC"}
1
+ {"version":3,"file":"signalHandlers.js","sourceRoot":"","sources":["../src/signalHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEpC,KAAK,UAAU,cAAc;IAC5B,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;IACnB,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;IACtB,OAAO,CAAC,IAAI,EAAE,CAAC;AAChB,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AACrC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC"}
package/dist/torrent.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { distance } from "fastest-levenshtein";
1
2
  import bencode from "bencode";
2
3
  import fs from "fs";
3
4
  import { readdir, readFile, writeFile } from "fs/promises";
@@ -6,13 +7,12 @@ import { extname, join, resolve } from "path";
6
7
  import { inspect } from "util";
7
8
  import { getClient } from "./clients/TorrentClient.js";
8
9
  import { LEVENSHTEIN_DIVISOR, MediaType, SAVED_TORRENTS_INFO_REGEX, USER_AGENT, } from "./constants.js";
9
- import { db } from "./db.js";
10
- import { distance } from "fastest-levenshtein";
10
+ import { db, memDB } from "./db.js";
11
11
  import { Label, logger, logOnce } from "./logger.js";
12
12
  import { updateMetafileMetadata, Metafile } from "./parseTorrent.js";
13
13
  import { resultOf, resultOfErr } from "./Result.js";
14
14
  import { getRuntimeConfig } from "./runtimeConfig.js";
15
- import { createSearcheeFromTorrentFile, getAnimeKeys, getEpisodeKey, getMovieKey, getSeasonKey, } from "./searchee.js";
15
+ import { createSearcheeFromTorrentFile, getAbsoluteFilePath, getAnimeKeys, getEpisodeKey, getLargestFile, getMovieKey, getSeasonKey, } from "./searchee.js";
16
16
  import { createKeyTitle, stripExtension } from "./utils.js";
17
17
  export var SnatchError;
18
18
  (function (SnatchError) {
@@ -147,8 +147,50 @@ export async function findAllTorrentFilesInDir(torrentDir) {
147
147
  .sort()
148
148
  .map((fn) => resolve(join(torrentDir, fn)));
149
149
  }
150
+ export async function cacheEnsembleEntry(meta, torrentSavePaths) {
151
+ const episodeKey = getEpisodeKey(stripExtension(meta.name));
152
+ if (!episodeKey)
153
+ return;
154
+ const { keyTitle, season, episode } = episodeKey;
155
+ const key = `${keyTitle}${season ? `.${season}` : ""}`;
156
+ const element = episode;
157
+ const largestFile = getLargestFile(meta.files);
158
+ const entryExists = await memDB("ensemble")
159
+ .select("id")
160
+ .where({ ensemble: key, element, length: largestFile.length })
161
+ .first();
162
+ if (entryExists)
163
+ return;
164
+ let savePath;
165
+ if (!torrentSavePaths) {
166
+ const downloadDirResult = await getClient().getDownloadDir(meta, {
167
+ onlyCompleted: false,
168
+ });
169
+ if (downloadDirResult.isErr())
170
+ return;
171
+ savePath = downloadDirResult.unwrap();
172
+ }
173
+ else {
174
+ savePath = torrentSavePaths.get(meta.infoHash);
175
+ }
176
+ if (!savePath)
177
+ return;
178
+ // Don't want to statSync(sourceRoot).isFile() now as it might be downloading.
179
+ // The path will get checked when rss/announce has a potential match.
180
+ const sourceRoot = join(savePath, meta.files.length === 1 ? meta.files[0].path : meta.name);
181
+ await memDB("ensemble")
182
+ .insert({
183
+ ensemble: key,
184
+ element,
185
+ name: largestFile.name,
186
+ absolute_path: getAbsoluteFilePath(sourceRoot, largestFile.path, meta.files.length === 1),
187
+ length: largestFile.length,
188
+ })
189
+ .onConflict("absolute_path")
190
+ .ignore();
191
+ }
150
192
  export async function indexNewTorrents() {
151
- const { torrentDir } = getRuntimeConfig();
193
+ const { seasonFromEpisodes, torrentDir } = getRuntimeConfig();
152
194
  if (typeof torrentDir !== "string")
153
195
  return;
154
196
  const dirContents = new Set(await findAllTorrentFilesInDir(torrentDir));
@@ -178,6 +220,9 @@ export async function indexNewTorrents() {
178
220
  })
179
221
  .onConflict("file_path")
180
222
  .ignore();
223
+ if (seasonFromEpisodes) {
224
+ cacheEnsembleEntry(meta);
225
+ }
181
226
  }
182
227
  }
183
228
  const dbFiles = await db("torrent").select({ filePath: "file_path" });
@@ -189,6 +234,46 @@ export async function indexNewTorrents() {
189
234
  await db("torrent").whereIn("file_path", batch).del();
190
235
  }
191
236
  }
237
+ export async function indexEnsemble() {
238
+ const { seasonFromEpisodes, torrentDir } = getRuntimeConfig();
239
+ if (!seasonFromEpisodes)
240
+ return;
241
+ if (typeof torrentDir !== "string")
242
+ return;
243
+ logger.info("Indexing torrents for ensemble lookup...");
244
+ const tableExists = await memDB.schema.hasTable("ensemble");
245
+ if (!tableExists) {
246
+ await memDB.schema.createTable("ensemble", (table) => {
247
+ table.increments("id").primary();
248
+ table.string("ensemble");
249
+ table.string("element");
250
+ table.string("name");
251
+ table.string("absolute_path").unique();
252
+ table.integer("length");
253
+ });
254
+ }
255
+ const dirContents = await findAllTorrentFilesInDir(torrentDir);
256
+ const metas = [];
257
+ for (const filepath of dirContents) {
258
+ let meta;
259
+ try {
260
+ meta = await parseTorrentFromFilename(filepath);
261
+ }
262
+ catch (e) {
263
+ logOnce(`Failed to parse ${filepath}`, () => {
264
+ logger.error(`Failed to parse ${filepath}`);
265
+ logger.debug(e);
266
+ });
267
+ continue;
268
+ }
269
+ metas.push(meta);
270
+ }
271
+ const torrentSavePaths = await getClient().getAllDownloadDirs({
272
+ metas,
273
+ onlyCompleted: false,
274
+ });
275
+ await Promise.allSettled(metas.map((meta) => cacheEnsembleEntry(meta, torrentSavePaths)));
276
+ }
192
277
  export async function getInfoHashesToExclude() {
193
278
  return new Set((await db("torrent").select({ infoHash: "info_hash" })).map((t) => t.infoHash));
194
279
  }
@@ -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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"}
package/dist/torznab.js CHANGED
@@ -9,6 +9,7 @@ import { CrossSeedError } from "./errors.js";
9
9
  import { ALL_CAPS, getAllIndexers, getEnabledIndexers, IndexerStatus, updateIndexerCapsById, updateIndexerStatus, } from "./indexers.js";
10
10
  import { Label, logger } from "./logger.js";
11
11
  import { getRuntimeConfig } from "./runtimeConfig.js";
12
+ import { getSearcheeNewestFileAge, } from "./searchee.js";
12
13
  import { cleanTitle, combineAsyncIterables, comparing, extractInt, formatAsList, getAnimeQueries, getApikey, getLogString, getMediaType, humanReadableDate, isTruthy, nMsAgo, reformatTitleForSearching, sanitizeUrl, stripExtension, stripMetaFromName, } from "./utils.js";
13
14
  function parseTorznabResults(xml) {
14
15
  const items = xml?.rss?.channel?.[0]?.item;
@@ -507,7 +508,7 @@ async function makeRequests(indexers, getQueriesForIndexer) {
507
508
  }));
508
509
  }
509
510
  async function getAndLogIndexers(searchee, indexerSearchCount, cachedSearch, mediaType, progress) {
510
- const { excludeRecentSearch, excludeOlder, searchLimit } = getRuntimeConfig();
511
+ const { excludeRecentSearch, excludeOlder, seasonFromEpisodes, searchLimit, } = getRuntimeConfig();
511
512
  const searcheeLog = getLogString(searchee, chalk.bold.white);
512
513
  const mediaTypeLog = chalk.white(mediaType.toUpperCase());
513
514
  const enabledIndexers = await getEnabledIndexers();
@@ -529,10 +530,17 @@ async function getAndLogIndexers(searchee, indexerSearchCount, cachedSearch, med
529
530
  const skipAfter = searchee.label !== Label.WEBHOOK && excludeRecentSearch
530
531
  ? nMsAgo(excludeRecentSearch)
531
532
  : Number.POSITIVE_INFINITY;
532
- const timeFilteredIndexers = enabledIndexers.filter((indexer) => {
533
+ const isEnsemble = seasonFromEpisodes && !searchee.infoHash && !searchee.path;
534
+ const timeFilteredIndexers = enabledIndexers.filter(async (indexer) => {
533
535
  const entry = timestampDataSql.find((entry) => entry.indexerId === indexer.id);
534
536
  if (!entry)
535
537
  return true;
538
+ if (isEnsemble &&
539
+ entry.lastSearched &&
540
+ entry.lastSearched <
541
+ (await getSearcheeNewestFileAge(searchee))) {
542
+ return true;
543
+ }
536
544
  if (entry.firstSearched && entry.firstSearched < skipBefore) {
537
545
  return false;
538
546
  }