@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
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,14 @@ import type { ExternalIds, MediaDetails, MediaItem, MediaType, ProviderSource }
2
2
  export type ProviderKind = "metadata";
3
3
  export type ExternalIdSource = "imdb" | "tmdb" | "kinopoisk" | "shikimori" | "myAnimeList" | "aniList" | "worldArt";
4
4
  export type ProviderFeature = "posters" | "backdrops" | "ratings" | "genres" | "persons" | "seasons" | "episodes" | "alternative_titles";
5
+ export type TitleDiscoveryRole = "primary" | "fallback";
5
6
  export interface ProviderCapabilities {
6
7
  mediaTypes: MediaType[];
8
+ searchEnrichment?: boolean;
7
9
  search: {
8
10
  byTitle: boolean;
9
11
  byExternalIds: ExternalIdSource[];
12
+ titleDiscovery?: TitleDiscoveryRole;
10
13
  };
11
14
  details: {
12
15
  byExternalIds: ExternalIdSource[];
@@ -18,6 +21,7 @@ export interface ProviderContext {
18
21
  timeoutMs?: number;
19
22
  debug?: boolean;
20
23
  language?: string;
24
+ playbackUserAgent?: string;
21
25
  }
22
26
  export interface ProviderSearchQuery {
23
27
  title?: string;
@@ -1,8 +1,10 @@
1
+ export type ProviderExecutionPhase = "primary" | "retry" | "fallback" | "provider_fallback" | "id_enrichment" | "poster_enrichment";
1
2
  export interface ProviderFailure {
2
3
  provider: string;
3
4
  code: string;
4
5
  retryable: boolean;
5
6
  message: string;
7
+ phase?: ProviderExecutionPhase;
6
8
  }
7
9
  export interface ProviderExecutionMeta {
8
10
  requested: string[];
@@ -13,15 +15,33 @@ export interface ProviderTimingMeta {
13
15
  provider: string;
14
16
  status: "success" | "failed";
15
17
  tookMs: number;
18
+ phase?: ProviderExecutionPhase;
16
19
  }
17
20
  export interface EngineWarning {
18
21
  code: string;
19
22
  message: string;
20
23
  provider?: string;
21
24
  }
25
+ export interface SearchEnrichmentCounters {
26
+ attempted: number;
27
+ skipped: number;
28
+ succeeded: number;
29
+ failed: number;
30
+ }
31
+ export interface SearchEnrichmentDebugMeta {
32
+ id: SearchEnrichmentCounters;
33
+ poster: SearchEnrichmentCounters;
34
+ }
35
+ export interface SearchIdentitySnapshotDebugMeta {
36
+ applied: true;
37
+ restored: number;
38
+ reordered: number;
39
+ }
22
40
  export interface ResponseDebugMeta {
23
41
  providers: string[];
24
42
  timings: ProviderTimingMeta[];
43
+ enrichment?: SearchEnrichmentDebugMeta;
44
+ identitySnapshot?: SearchIdentitySnapshotDebugMeta;
25
45
  }
26
46
  export interface ResponseMeta {
27
47
  providers: ProviderExecutionMeta;
@@ -14,10 +14,44 @@ export interface SearchQuery {
14
14
  limit?: number;
15
15
  language?: string;
16
16
  }
17
+ export type SearchTitleMatchKind = "not_applicable" | "none" | "exact_primary" | "exact_alias" | "joined" | "prefix" | "contains" | "all_tokens" | "fuzzy";
18
+ export interface SearchRankSignal {
19
+ value: number;
20
+ weight: number;
21
+ contribution: number;
22
+ }
23
+ export interface SearchRankEvidence {
24
+ formula: "external_id" | "non_text" | "text";
25
+ matchStrength: "exact_id" | "exact_title_year_type" | "normalized_title_year_type" | "weak" | "none";
26
+ titleMatch: {
27
+ kind: SearchTitleMatchKind;
28
+ score: number;
29
+ matchedTitle?: string;
30
+ };
31
+ signals: {
32
+ base: SearchRankSignal;
33
+ title: SearchRankSignal;
34
+ exactPrimaryTitle: SearchRankSignal;
35
+ popularity: SearchRankSignal;
36
+ rating: SearchRankSignal;
37
+ externalIds: SearchRankSignal;
38
+ sourceCoverage: SearchRankSignal;
39
+ sourceAuthority: SearchRankSignal;
40
+ };
41
+ preBoundedScore: number;
42
+ scorePosition: number;
43
+ diversityPosition: number;
44
+ finalPosition: number;
45
+ diversity: {
46
+ family: string;
47
+ adjusted: boolean;
48
+ };
49
+ }
17
50
  export interface MediaSearchResult {
18
51
  item: MediaItem;
19
52
  score: number;
20
53
  sources: ProviderSource[];
54
+ ranking?: SearchRankEvidence;
21
55
  }
22
56
  export interface SearchResponse {
23
57
  query: SearchQuery;
@@ -122,5 +122,6 @@ export interface StreamingProvider {
122
122
  version?: string;
123
123
  kind: "streaming";
124
124
  capabilities: StreamingProviderCapabilities;
125
+ availabilityDependsOnPlaybackUserAgent?: boolean;
125
126
  getAvailability(query: StreamQuery, context: ProviderContext): Promise<MediaAvailability | null>;
126
127
  }
@@ -110,6 +110,7 @@ export function createDetailsResult(provider, details = sampleMovie) {
110
110
  function createCapabilities(overrides = {}) {
111
111
  return {
112
112
  mediaTypes: overrides.mediaTypes ?? ["movie", "series", "anime"],
113
+ searchEnrichment: overrides.searchEnrichment,
113
114
  search: {
114
115
  byTitle: overrides.search?.byTitle ?? true,
115
116
  byExternalIds: overrides.search?.byExternalIds ?? [
@@ -118,6 +119,7 @@ function createCapabilities(overrides = {}) {
118
119
  "shikimori",
119
120
  "myAnimeList",
120
121
  ],
122
+ titleDiscovery: overrides.search?.titleDiscovery,
121
123
  },
122
124
  details: {
123
125
  byExternalIds: overrides.details?.byExternalIds ?? [
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/testing/providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/testing/providers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export type * from "./types.js";
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/torrent/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,132 @@
1
+ import type { ExternalIds, MediaType } from "../media/index.js";
2
+ import type { ExternalIdSource, ProviderContext } from "../providers/index.js";
3
+ import type { ResponseMeta } from "../response/index.js";
4
+ export interface TorrentDiscoveryQuery {
5
+ type: MediaType;
6
+ ids?: ExternalIds;
7
+ imdb?: string;
8
+ tmdb?: string;
9
+ kinopoisk?: string;
10
+ shikimori?: string;
11
+ myAnimeList?: string;
12
+ aniList?: string;
13
+ title?: string;
14
+ alternativeTitles?: string[];
15
+ year?: number;
16
+ seasonNumber?: number;
17
+ episodeNumber?: number;
18
+ absoluteEpisodeNumber?: number;
19
+ providers?: string[];
20
+ language?: string;
21
+ limit?: number;
22
+ }
23
+ export interface TorrentMediaItem {
24
+ type: MediaType;
25
+ title?: string;
26
+ originalTitle?: string;
27
+ year?: number;
28
+ ids?: ExternalIds;
29
+ }
30
+ export interface TorrentEpisodeRef {
31
+ seasonNumber?: number;
32
+ episodeNumber?: number;
33
+ absoluteEpisodeNumber?: number;
34
+ episodeNumberEnd?: number;
35
+ absoluteEpisodeNumberEnd?: number;
36
+ }
37
+ export interface TorrentFile {
38
+ index?: number;
39
+ path: string;
40
+ sizeBytes?: number;
41
+ mediaType?: "video" | "audio" | "subtitle" | "other";
42
+ }
43
+ export interface TorrentReleaseInfo {
44
+ source?: "bluray" | "web" | "hdtv" | "dvd" | "cam" | "unknown";
45
+ resolution?: string;
46
+ height?: number;
47
+ videoCodec?: string;
48
+ audioCodec?: string;
49
+ container?: string;
50
+ hdr?: string[];
51
+ audioLanguages?: string[];
52
+ subtitleLanguages?: string[];
53
+ }
54
+ export interface TorrentPeerInfo {
55
+ seeders?: number;
56
+ leechers?: number;
57
+ checkedAt?: string;
58
+ }
59
+ export interface TorrentCatalogSource {
60
+ id: string;
61
+ displayName?: string;
62
+ }
63
+ export type TorrentHandoffKind = "magnet" | "torrent_file" | "external";
64
+ export interface TorrentHandoff {
65
+ kind: TorrentHandoffKind;
66
+ uri: string;
67
+ method?: "GET" | "POST";
68
+ headers?: Record<string, string>;
69
+ referer?: string;
70
+ }
71
+ export type TorrentAvailabilityStatus = "available" | "unseeded" | "unknown";
72
+ export interface TorrentCandidate {
73
+ id: string;
74
+ provider: string;
75
+ title: string;
76
+ infoHash?: string;
77
+ sizeBytes?: number;
78
+ publishedAt?: string;
79
+ episode?: TorrentEpisodeRef;
80
+ files?: TorrentFile[];
81
+ release?: TorrentReleaseInfo;
82
+ peers?: TorrentPeerInfo;
83
+ handoff: TorrentHandoff;
84
+ availability: TorrentAvailabilityStatus;
85
+ catalogSource?: TorrentCatalogSource;
86
+ expiresAt?: string;
87
+ sourceUrl?: string;
88
+ }
89
+ export interface TorrentProviderSource {
90
+ provider: string;
91
+ url?: string;
92
+ ids?: ExternalIds;
93
+ }
94
+ export interface TorrentDiscoveryResponse {
95
+ query: TorrentDiscoveryQuery;
96
+ item?: TorrentMediaItem;
97
+ candidates: TorrentCandidate[];
98
+ sourceProviders: TorrentProviderSource[];
99
+ checkedAt: string;
100
+ meta?: ResponseMeta;
101
+ }
102
+ export type TorrentProviderFeature = "magnet" | "torrent_file" | "external" | "file_list" | "peer_stats" | "release_metadata";
103
+ export interface TorrentProviderCapabilities {
104
+ mediaTypes: MediaType[];
105
+ lookup: {
106
+ byTitle: boolean;
107
+ byExternalIds: ExternalIdSource[];
108
+ byEpisode: boolean;
109
+ };
110
+ features?: TorrentProviderFeature[];
111
+ }
112
+ export type TorrentProviderCatalogScope = "regional" | "international";
113
+ export interface TorrentProviderCatalog {
114
+ displayName: string;
115
+ scope: TorrentProviderCatalogScope;
116
+ locale?: string;
117
+ }
118
+ export interface TorrentProviderInfo {
119
+ name: string;
120
+ version?: string;
121
+ kind: "torrent";
122
+ catalog?: TorrentProviderCatalog;
123
+ capabilities: TorrentProviderCapabilities;
124
+ }
125
+ export interface TorrentProvider {
126
+ name: string;
127
+ version?: string;
128
+ kind: "torrent";
129
+ catalog?: TorrentProviderCatalog;
130
+ capabilities: TorrentProviderCapabilities;
131
+ discoverTorrents(query: TorrentDiscoveryQuery, context: ProviderContext): Promise<TorrentDiscoveryResponse | null>;
132
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/torrent/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@media-engine/core",
3
- "version": "0.1.1",
3
+ "version": "1.1.0",
4
4
  "description": "Core TypeScript engine for Media Engine.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/Yaneart/media-engine#readme",
@@ -18,6 +18,7 @@
18
18
  "movies",
19
19
  "series",
20
20
  "anime",
21
+ "torrent",
21
22
  "shikimori"
22
23
  ],
23
24
  "type": "module",
@@ -48,8 +49,12 @@
48
49
  "access": "public"
49
50
  },
50
51
  "scripts": {
51
- "build": "tsc -p tsconfig.json",
52
+ "clean": "node ../../scripts/clean-package-dist.mjs",
53
+ "build": "pnpm clean && tsc -p tsconfig.json",
54
+ "coverage": "pnpm build && pnpm coverage:unit",
55
+ "coverage:unit": "node ../../scripts/run-node-tests.mjs --coverage --lines=96 --branches=92 --functions=95",
52
56
  "typecheck": "tsc -p tsconfig.json --noEmit",
53
- "test": "pnpm build && node --test dist/providers/registry.test.js dist/errors/types.test.js dist/merge/strategy.search.merge.test.js dist/merge/strategy.search.ranking.test.js dist/merge/strategy.details.test.js dist/cache/memory.test.js dist/engine/circuit-breaker.test.js dist/engine/concurrency-limiter.test.js dist/engine/timeout-budget.test.js dist/engine/in-flight.test.js dist/engine/engine.config.test.js dist/engine/engine.health.test.js dist/engine/engine.search.query.test.js dist/engine/engine.search.results.test.js dist/engine/engine.search.providers.test.js dist/engine/engine.search.fallback.test.js dist/engine/engine.details.test.js dist/engine/engine.availability.test.js dist/testing/providers.test.js dist/streaming/types.test.js"
57
+ "test": "pnpm build && pnpm test:unit",
58
+ "test:unit": "node ../../scripts/run-node-tests.mjs"
54
59
  }
55
60
  }