@media-engine/core 0.1.1 → 1.1.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.
Files changed (92) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +48 -20
  3. package/README.ru.md +46 -19
  4. package/dist/cache/memory.js +10 -8
  5. package/dist/cache/memory.js.map +1 -1
  6. package/dist/details/types.d.ts +6 -0
  7. package/dist/engine/availability.d.ts +1 -0
  8. package/dist/engine/availability.js +8 -0
  9. package/dist/engine/availability.js.map +1 -1
  10. package/dist/engine/circuit-breaker.d.ts +1 -0
  11. package/dist/engine/circuit-breaker.js +11 -0
  12. package/dist/engine/circuit-breaker.js.map +1 -1
  13. package/dist/engine/concurrency-limiter.js +2 -2
  14. package/dist/engine/concurrency-limiter.js.map +1 -1
  15. package/dist/engine/engine.d.ts +9 -4
  16. package/dist/engine/engine.js +294 -104
  17. package/dist/engine/engine.js.map +1 -1
  18. package/dist/engine/in-flight.d.ts +12 -1
  19. package/dist/engine/in-flight.js +69 -14
  20. package/dist/engine/in-flight.js.map +1 -1
  21. package/dist/engine/operation.d.ts +7 -0
  22. package/dist/engine/operation.js +49 -0
  23. package/dist/engine/operation.js.map +1 -0
  24. package/dist/engine/provider-calls.d.ts +11 -0
  25. package/dist/engine/provider-calls.js +63 -12
  26. package/dist/engine/provider-calls.js.map +1 -1
  27. package/dist/engine/query.d.ts +6 -1
  28. package/dist/engine/query.js +228 -36
  29. package/dist/engine/query.js.map +1 -1
  30. package/dist/engine/response-meta.d.ts +3 -1
  31. package/dist/engine/response-meta.js +8 -1
  32. package/dist/engine/response-meta.js.map +1 -1
  33. package/dist/engine/runtime.d.ts +2 -0
  34. package/dist/engine/runtime.js +19 -0
  35. package/dist/engine/runtime.js.map +1 -1
  36. package/dist/engine/search-discovery.d.ts +3 -0
  37. package/dist/engine/search-discovery.js +35 -0
  38. package/dist/engine/search-discovery.js.map +1 -0
  39. package/dist/engine/search-enrichment-shared.d.ts +23 -0
  40. package/dist/engine/search-enrichment-shared.js +68 -0
  41. package/dist/engine/search-enrichment-shared.js.map +1 -0
  42. package/dist/engine/search-enrichment.d.ts +21 -7
  43. package/dist/engine/search-enrichment.js +135 -75
  44. package/dist/engine/search-enrichment.js.map +1 -1
  45. package/dist/engine/search-identity-snapshot.d.ts +15 -0
  46. package/dist/engine/search-identity-snapshot.js +101 -0
  47. package/dist/engine/search-identity-snapshot.js.map +1 -0
  48. package/dist/engine/search-outcomes.d.ts +32 -0
  49. package/dist/engine/search-outcomes.js +118 -0
  50. package/dist/engine/search-outcomes.js.map +1 -0
  51. package/dist/engine/search-poster-enrichment.d.ts +31 -0
  52. package/dist/engine/search-poster-enrichment.js +93 -0
  53. package/dist/engine/search-poster-enrichment.js.map +1 -0
  54. package/dist/engine/search-result-freeze.d.ts +13 -0
  55. package/dist/engine/search-result-freeze.js +155 -0
  56. package/dist/engine/search-result-freeze.js.map +1 -0
  57. package/dist/engine/torrents.d.ts +22 -0
  58. package/dist/engine/torrents.js +188 -0
  59. package/dist/engine/torrents.js.map +1 -0
  60. package/dist/engine/types.d.ts +7 -1
  61. package/dist/errors/types.d.ts +1 -1
  62. package/dist/errors/types.js.map +1 -1
  63. package/dist/index.d.ts +2 -1
  64. package/dist/index.js +1 -1
  65. package/dist/index.js.map +1 -1
  66. package/dist/media/types.d.ts +1 -1
  67. package/dist/merge/diversity.d.ts +15 -0
  68. package/dist/merge/diversity.js +52 -0
  69. package/dist/merge/diversity.js.map +1 -0
  70. package/dist/merge/priority.js +3 -1
  71. package/dist/merge/priority.js.map +1 -1
  72. package/dist/merge/scoring.d.ts +10 -0
  73. package/dist/merge/scoring.js +132 -28
  74. package/dist/merge/scoring.js.map +1 -1
  75. package/dist/merge/strategy.js +53 -13
  76. package/dist/merge/strategy.js.map +1 -1
  77. package/dist/providers/registry.d.ts +4 -2
  78. package/dist/providers/registry.js +11 -2
  79. package/dist/providers/registry.js.map +1 -1
  80. package/dist/providers/types.d.ts +4 -0
  81. package/dist/response/types.d.ts +20 -0
  82. package/dist/search/types.d.ts +34 -0
  83. package/dist/streaming/types.d.ts +1 -0
  84. package/dist/testing/providers.js +2 -0
  85. package/dist/testing/providers.js.map +1 -1
  86. package/dist/torrent/index.d.ts +1 -0
  87. package/dist/torrent/index.js +2 -0
  88. package/dist/torrent/index.js.map +1 -0
  89. package/dist/torrent/types.d.ts +132 -0
  90. package/dist/torrent/types.js +2 -0
  91. package/dist/torrent/types.js.map +1 -0
  92. package/package.json +8 -3
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Media Engine contributors
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Media Engine contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -2,9 +2,12 @@
2
2
 
3
3
  **English** | [Русский](https://github.com/Yaneart/media-engine/blob/main/packages/core/README.ru.md)
4
4
 
5
- This is the part of Media Engine that does the thinking: it chooses providers, runs them, merges their answers, caches results, and turns failures into a predictable shape.
5
+ This is the heart of Media Engine. It calls several data sources, understands which results describe
6
+ the same title, merges their answers, and keeps one slow or broken source from ruining the whole
7
+ request.
6
8
 
7
- It does not contain any real data sources. For those, install `@media-engine/providers` too.
9
+ Core does not include real data sources. The easiest way to start is to install the providers package
10
+ with it.
8
11
 
9
12
  ## Install
10
13
 
@@ -12,7 +15,9 @@ It does not contain any real data sources. For those, install `@media-engine/pro
12
15
  npm install @media-engine/core @media-engine/providers
13
16
  ```
14
17
 
15
- ## Basic use
18
+ Node.js 20 or newer is required.
19
+
20
+ ## Basic example
16
21
 
17
22
  ```ts
18
23
  import { MediaEngine } from "@media-engine/core";
@@ -22,32 +27,55 @@ const media = new MediaEngine({
22
27
  providers: [kinobdProvider(), cinemetaProvider()],
23
28
  });
24
29
 
25
- const search = await media.search({ title: "Interstellar" });
26
- const details = await media.getDetails({ imdb: "tt0816692" });
30
+ const result = await media.search({
31
+ title: "Interstellar",
32
+ language: "en",
33
+ });
27
34
 
28
- console.log(search.results[0]?.item);
29
- console.log(details.details);
35
+ console.log(result.results[0]?.item);
30
36
  ```
31
37
 
32
- The engine also has `getAvailability()` for optional streaming providers.
38
+ Create one `MediaEngine` instance and reuse it while your application is running.
39
+
40
+ ## Main operations
41
+
42
+ ```ts
43
+ await media.search({ title: "Interstellar" });
44
+ await media.getDetails({ imdb: "tt0816692" });
45
+ await media.getAvailability({
46
+ type: "series",
47
+ title: "Game of Thrones",
48
+ seasonNumber: 1,
49
+ episodeNumber: 1,
50
+ });
51
+ await media.discoverTorrents({
52
+ type: "movie",
53
+ title: "Interstellar",
54
+ ids: { imdb: "tt0816692" },
55
+ });
56
+ ```
33
57
 
34
- ## What comes from core
58
+ `getDetails()` needs an external ID with its namespace, such as `imdb`, `kinopoisk`, or
59
+ `ids.shikimori`. A plain provider-native `id` is not globally unique.
35
60
 
36
- - `MediaEngine`;
37
- - search, details, media, and streaming types;
38
- - metadata and streaming provider contracts;
39
- - merge and cache interfaces;
40
- - `MemoryCache`;
41
- - normalized errors and provider failure metadata;
42
- - mock providers and fixtures for tests.
61
+ Availability and torrent discovery only do work when you give the engine matching streaming or
62
+ torrent providers.
43
63
 
44
- Provider calls run concurrently. If one source fails and another succeeds, the response keeps the useful data and lists the failure in `meta.providers.failed`.
64
+ ## What core handles for you
45
65
 
46
- `MemoryCache` can retain metadata for a separate bounded stale window. `MediaEngine` uses it only for search and details when every selected provider fails retryably; stale streaming links are never returned. Such responses set `meta.cached` and `meta.stale` to `true`.
66
+ - calls compatible providers concurrently;
67
+ - merges duplicate movies, series, and anime;
68
+ - returns useful partial data when only one source fails;
69
+ - supports timeouts, caching, cancellation, and shared in-flight requests;
70
+ - normalizes errors and reports failed providers in response metadata;
71
+ - exports the public types and provider contracts needed by applications.
47
72
 
48
- The constructor also accepts streaming providers, a cache, global and per-provider timeouts, a custom merge strategy, and debug mode. Provider calls are bounded to two concurrent operations per provider by default, with a cancellable queue of 100; `providerConcurrency` can tune per-provider limits or disable the gate. Queue waiting remains inside the existing provider timeout. Core never imports concrete provider packages itself.
73
+ Core does not host video, open torrent files, join a swarm, or transcode media. Streaming and torrent
74
+ providers return normalized options; your application decides what to do with them.
49
75
 
50
- Exact types are available from the package exports. The short [public API guide](https://github.com/Yaneart/media-engine/blob/main/docs/public-api.md) explains the three main operations without repeating every field.
76
+ For query fields, configuration, custom providers, and response shapes, read the
77
+ [public API guide](https://github.com/Yaneart/media-engine/blob/main/docs/public-api.md). The exported
78
+ TypeScript types are the exact reference.
51
79
 
52
80
  ## License
53
81
 
package/README.ru.md CHANGED
@@ -2,9 +2,11 @@
2
2
 
3
3
  [English](https://github.com/Yaneart/media-engine/blob/main/packages/core/README.md) | **Русский**
4
4
 
5
- Это часть Media Engine, которая отвечает за основную логику: выбирает провайдеры, запускает их, объединяет ответы, кеширует результат и приводит ошибки к предсказуемому виду.
5
+ Это сердце Media Engine. Оно обращается к нескольким источникам, понимает, какие результаты
6
+ относятся к одному тайтлу, объединяет ответы и не позволяет одному медленному или сломанному
7
+ источнику испортить весь запрос.
6
8
 
7
- Самих источников данных в core нет. Для них установите ещё и `@media-engine/providers`.
9
+ В core нет готовых источников данных. Проще всего начать, установив его вместе с пакетом провайдеров.
8
10
 
9
11
  ## Установка
10
12
 
@@ -12,6 +14,8 @@
12
14
  npm install @media-engine/core @media-engine/providers
13
15
  ```
14
16
 
17
+ Нужен Node.js 20 или новее.
18
+
15
19
  ## Простой пример
16
20
 
17
21
  ```ts
@@ -22,32 +26,55 @@ const media = new MediaEngine({
22
26
  providers: [kinobdProvider(), cinemetaProvider()],
23
27
  });
24
28
 
25
- const search = await media.search({ title: "Интерстеллар" });
26
- const details = await media.getDetails({ imdb: "tt0816692" });
29
+ const result = await media.search({
30
+ title: "Интерстеллар",
31
+ language: "ru",
32
+ });
27
33
 
28
- console.log(search.results[0]?.item);
29
- console.log(details.details);
34
+ console.log(result.results[0]?.item);
30
35
  ```
31
36
 
32
- Для опциональных стриминговых провайдеров у движка также есть `getAvailability()`.
37
+ Создайте один экземпляр `MediaEngine` и используйте его всё время, пока работает приложение.
38
+
39
+ ## Основные операции
40
+
41
+ ```ts
42
+ await media.search({ title: "Интерстеллар" });
43
+ await media.getDetails({ imdb: "tt0816692" });
44
+ await media.getAvailability({
45
+ type: "series",
46
+ title: "Игра престолов",
47
+ seasonNumber: 1,
48
+ episodeNumber: 1,
49
+ });
50
+ await media.discoverTorrents({
51
+ type: "movie",
52
+ title: "Интерстеллар",
53
+ ids: { imdb: "tt0816692" },
54
+ });
55
+ ```
33
56
 
34
- ## Что экспортирует core
57
+ Для `getDetails()` нужен внешний ID с указанием его типа: например, `imdb`, `kinopoisk` или
58
+ `ids.shikimori`. Обычный внутренний `id` провайдера не уникален между разными источниками.
35
59
 
36
- - `MediaEngine`;
37
- - типы поиска, деталей, медиа и стриминга;
38
- - контракты metadata- и streaming-провайдеров;
39
- - интерфейсы объединения и кеша;
40
- - `MemoryCache`;
41
- - нормализованные ошибки и сведения о сбоях провайдеров;
42
- - mock-провайдеры и примеры данных для тестов.
60
+ Поиск плееров и torrent-раздач заработает только после подключения подходящих streaming- и
61
+ torrent-провайдеров.
43
62
 
44
- Провайдеры запускаются параллельно. Если один источник не сработал, а другой вернул данные, полезный ответ сохранится, а ошибка попадёт в `meta.providers.failed`.
63
+ ## Что core делает сам
45
64
 
46
- `MemoryCache` может сохранять метаданные в отдельном ограниченном stale-окне. `MediaEngine` использует их только для поиска и деталей, когда все выбранные провайдеры завершились с retryable-ошибками; устаревшие streaming-ссылки никогда не возвращаются. В таком ответе `meta.cached` и `meta.stale` равны `true`.
65
+ - параллельно вызывает подходящие провайдеры;
66
+ - объединяет дубликаты фильмов, сериалов и аниме;
67
+ - возвращает полезные данные, даже если один источник упал;
68
+ - поддерживает таймауты, кэш, отмену и объединение одинаковых запросов;
69
+ - приводит ошибки к общему виду и показывает сбои провайдеров в metadata ответа;
70
+ - экспортирует публичные типы и контракты для собственных провайдеров.
47
71
 
48
- Конструктор также принимает стриминговые провайдеры, кеш, общий и индивидуальные тайм-ауты, собственную стратегию объединения и debug-режим. По умолчанию одновременно выполняются не более двух операций каждого провайдера, а отменяемая очередь ограничена 100 элементами; `providerConcurrency` позволяет настроить отдельные лимиты или отключить gate. Ожидание в очереди входит в существующий тайм-аут провайдера. Сам core никогда не импортирует пакеты с конкретными провайдерами.
72
+ Core не хранит видео, не открывает torrent-файлы, не подключается к раздаче и не перекодирует медиа.
73
+ Провайдеры возвращают варианты в едином формате, а дальнейшее поведение определяет ваше приложение.
49
74
 
50
- Точные типы доступны через exports пакета. В коротком [описании публичного API](https://github.com/Yaneart/media-engine/blob/main/docs/public-api.md) разобраны три основные операции без перечисления каждого поля.
75
+ Поля запросов, настройки, собственные провайдеры и ответы описаны в
76
+ [руководстве по публичному API](https://github.com/Yaneart/media-engine/blob/main/docs/public-api.md).
77
+ Точным справочником служат экспортируемые TypeScript-типы.
51
78
 
52
79
  ## Лицензия
53
80
 
@@ -11,10 +11,8 @@ export class MemoryCache {
11
11
  (!Number.isInteger(options.maxEntries) || options.maxEntries <= 0)) {
12
12
  throw new TypeError("MemoryCache maxEntries must be a positive integer.");
13
13
  }
14
- if (options.defaultStaleTtlMs !== undefined &&
15
- (!Number.isInteger(options.defaultStaleTtlMs) || options.defaultStaleTtlMs < 0)) {
16
- throw new TypeError("MemoryCache defaultStaleTtlMs must be a non-negative integer.");
17
- }
14
+ validateTtl("defaultTtlMs", options.defaultTtlMs);
15
+ validateTtl("defaultStaleTtlMs", options.defaultStaleTtlMs);
18
16
  this.now = options.now ?? Date.now;
19
17
  this.defaultTtlMs = options.defaultTtlMs;
20
18
  this.defaultStaleTtlMs = options.defaultStaleTtlMs;
@@ -59,10 +57,9 @@ export class MemoryCache {
59
57
  set(key, value, options = {}) {
60
58
  const ttlMs = options.ttlMs ?? this.defaultTtlMs;
61
59
  const staleTtlMs = options.staleTtlMs ?? this.defaultStaleTtlMs;
62
- if (staleTtlMs !== undefined && (!Number.isInteger(staleTtlMs) || staleTtlMs < 0)) {
63
- throw new TypeError("MemoryCache staleTtlMs must be a non-negative integer.");
64
- }
65
- const expiresAt = ttlMs === undefined || ttlMs < 0 ? undefined : this.now() + ttlMs;
60
+ validateTtl("ttlMs", ttlMs);
61
+ validateTtl("staleTtlMs", staleTtlMs);
62
+ const expiresAt = ttlMs === undefined ? undefined : this.now() + ttlMs;
66
63
  const staleUntil = expiresAt === undefined || staleTtlMs === undefined || staleTtlMs <= 0
67
64
  ? undefined
68
65
  : expiresAt + staleTtlMs;
@@ -118,4 +115,9 @@ export class MemoryCache {
118
115
  function cloneCacheValue(value) {
119
116
  return structuredClone(value);
120
117
  }
118
+ function validateTtl(name, value) {
119
+ if (value !== undefined && (!Number.isSafeInteger(value) || value < 0)) {
120
+ throw new TypeError(`MemoryCache ${name} must be a non-negative safe integer.`);
121
+ }
122
+ }
121
123
  //# sourceMappingURL=memory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/cache/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/cache/memory.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,12 @@
1
1
  import type { ExternalIds, MediaDetails, MediaType } from "../media/index.js";
2
2
  import type { ResponseMeta } from "../response/index.js";
3
3
  export interface DetailsQuery {
4
+ /**
5
+ * @deprecated Provider-native IDs do not share a global namespace. Use `ids`
6
+ * or a named external ID shortcut such as `imdb` or `kinopoisk`.
7
+ * RU: внутренние ID провайдеров не имеют общего namespace; используйте `ids`
8
+ * или именованное сокращение внешнего ID.
9
+ */
4
10
  id?: string;
5
11
  ids?: ExternalIds;
6
12
  imdb?: string;
@@ -3,3 +3,4 @@ import type { MediaAvailability, StreamQuery, StreamingProvider } from "../strea
3
3
  export declare function selectStreamingProviders(providers: StreamingProvider[], query: StreamQuery): StreamingProvider[];
4
4
  export declare function mergeAvailabilityResults(query: StreamQuery, results: MediaAvailability[]): MediaAvailability;
5
5
  export declare function createAvailabilityCacheOptions(availability: MediaAvailability): CacheSetOptions | undefined;
6
+ export declare function hasUnknownStreamValidation(availability: MediaAvailability): boolean;
@@ -49,6 +49,14 @@ export function createAvailabilityCacheOptions(availability) {
49
49
  staleTtlMs: 0,
50
50
  };
51
51
  }
52
+ // Detects player options kept after validation could not reach a reliable conclusion.
53
+ // Находит player options, сохраненные после неопределенного результата validation.
54
+ export function hasUnknownStreamValidation(availability) {
55
+ return [
56
+ ...availability.options,
57
+ ...(availability.episodes?.flatMap((episode) => episode.options) ?? []),
58
+ ].some((option) => option.availability === "unknown");
59
+ }
52
60
  // Merges episode-level availability blocks by episode identity.
53
61
  // Объединяет episode-level availability блоки по идентичности эпизода.
54
62
  function mergeEpisodeAvailability(results) {
@@ -1 +1 @@
1
- {"version":3,"file":"availability.js","sourceRoot":"","sources":["../../src/engine/availability.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"availability.js","sourceRoot":"","sources":["../../src/engine/availability.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@ export declare class ProviderCircuitBreaker {
25
25
  private readonly observations;
26
26
  constructor(options?: CircuitBreakerOptions, now?: () => number);
27
27
  run<T>(key: string, provider: string, operation: () => Promise<T>): Promise<T>;
28
+ private releaseCancelledProbe;
28
29
  getSnapshot(key: string): CircuitBreakerSnapshot;
29
30
  private acquire;
30
31
  private recordFailure;
@@ -1,4 +1,5 @@
1
1
  import { ProviderError } from "../errors/index.js";
2
+ import { isOperationCancelledError } from "./operation.js";
2
3
  const DEFAULT_FAILURE_THRESHOLD = 3;
3
4
  const DEFAULT_RECOVERY_TIMEOUT_MS = 30_000;
4
5
  // Tracks transient provider failures and allows one recovery probe after cooldown.
@@ -24,11 +25,21 @@ export class ProviderCircuitBreaker {
24
25
  return result;
25
26
  }
26
27
  catch (error) {
28
+ if (isOperationCancelledError(error)) {
29
+ this.releaseCancelledProbe(key);
30
+ throw error;
31
+ }
27
32
  this.recordFailure(key, error);
28
33
  this.recordObservedFailure(key, error);
29
34
  throw error;
30
35
  }
31
36
  }
37
+ releaseCancelledProbe(key) {
38
+ const state = this.states.get(key);
39
+ if (state?.probeInFlight) {
40
+ state.probeInFlight = false;
41
+ }
42
+ }
32
43
  getSnapshot(key) {
33
44
  const now = this.now();
34
45
  const state = this.states.get(key);
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/engine/circuit-breaker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/engine/circuit-breaker.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,8 @@ const DEFAULT_MAX_CONCURRENT = 2;
3
3
  const DEFAULT_MAX_QUEUE_SIZE = 100;
4
4
  const MAX_CONCURRENT_BOUND = 100;
5
5
  const MAX_QUEUE_SIZE_BOUND = 10_000;
6
- // Bounds concurrent work independently for every metadata or streaming provider.
7
- // Ограничивает параллельную работу отдельно для каждого metadata/streaming-провайдера.
6
+ // Bounds concurrent work independently for every metadata, streaming, or torrent provider.
7
+ // Ограничивает параллельную работу отдельно для metadata, streaming и torrent-провайдеров.
8
8
  export class ProviderConcurrencyLimiter {
9
9
  defaultMaxConcurrent;
10
10
  maxQueueSize;
@@ -1 +1 @@
1
- {"version":3,"file":"concurrency-limiter.js","sourceRoot":"","sources":["../../src/engine/concurrency-limiter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"concurrency-limiter.js","sourceRoot":"","sources":["../../src/engine/concurrency-limiter.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,12 @@ import { type MergeStrategy } from "../merge/index.js";
4
4
  import { ProviderRegistry, type ProviderInfo } from "../providers/index.js";
5
5
  import type { SearchQuery, SearchResponse } from "../search/index.js";
6
6
  import type { MediaAvailability, StreamQuery, StreamingProviderInfo } from "../streaming/index.js";
7
- import type { MediaEngineOptions, ProviderHealthStatus } from "./types.js";
7
+ import type { TorrentDiscoveryQuery, TorrentDiscoveryResponse, TorrentProviderInfo } from "../torrent/index.js";
8
+ import type { MediaEngineOperationOptions, MediaEngineOptions, ProviderHealthStatus } from "./types.js";
8
9
  export declare class MediaEngine {
9
10
  private readonly registry;
10
11
  private readonly streamingProviders;
12
+ private readonly torrentProviders;
11
13
  private readonly cache?;
12
14
  private readonly mergeStrategy;
13
15
  private readonly timeoutMs?;
@@ -19,16 +21,19 @@ export declare class MediaEngine {
19
21
  constructor(options?: MediaEngineOptions);
20
22
  getProviders(): ProviderInfo[];
21
23
  getStreamingProviders(): StreamingProviderInfo[];
24
+ getTorrentProviders(): TorrentProviderInfo[];
22
25
  getProviderHealth(): ProviderHealthStatus[];
23
- search(query: SearchQuery): Promise<SearchResponse>;
24
- getDetails(query: DetailsQuery): Promise<DetailsResponse>;
25
- getAvailability(query: StreamQuery): Promise<MediaAvailability>;
26
+ search(query: SearchQuery, options?: MediaEngineOperationOptions): Promise<SearchResponse>;
27
+ getDetails(query: DetailsQuery, options?: MediaEngineOperationOptions): Promise<DetailsResponse>;
28
+ getAvailability(query: StreamQuery, options?: MediaEngineOperationOptions): Promise<MediaAvailability>;
29
+ discoverTorrents(query: TorrentDiscoveryQuery, options?: MediaEngineOperationOptions): Promise<TorrentDiscoveryResponse>;
26
30
  protected get providerRegistry(): ProviderRegistry;
27
31
  protected get engineCache(): Cache | undefined;
28
32
  protected get engineMergeStrategy(): MergeStrategy;
29
33
  protected get engineTimeoutMs(): number | undefined;
30
34
  private getProviderTimeoutMs;
31
35
  private createProviderTimeoutBudget;
36
+ private loadReusableDetails;
32
37
  private createProviderHealthStatus;
33
38
  protected get engineDebug(): boolean;
34
39
  }