movie-agent 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -6
- package/bin/movie-agent +6 -6
- package/dist/agent.d.ts +6 -4
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +34 -17
- package/dist/agent.js.map +1 -1
- package/dist/cache.d.ts +40 -5
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +95 -11
- package/dist/cache.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/factory.d.ts +4 -4
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +11 -11
- package/dist/factory.js.map +1 -1
- package/dist/format.d.ts +14 -1
- package/dist/format.d.ts.map +1 -1
- package/dist/format.js +22 -1
- package/dist/format.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/llm.d.ts.map +1 -1
- package/dist/llm.js +15 -4
- package/dist/llm.js.map +1 -1
- package/dist/providers.d.ts +9 -1
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +27 -0
- package/dist/providers.js.map +1 -1
- package/dist/rateLimiter.d.ts +59 -0
- package/dist/rateLimiter.d.ts.map +1 -0
- package/dist/rateLimiter.js +99 -0
- package/dist/rateLimiter.js.map +1 -0
- package/dist/sanitize.d.ts +24 -0
- package/dist/sanitize.d.ts.map +1 -0
- package/dist/sanitize.js +137 -0
- package/dist/sanitize.js.map +1 -0
- package/dist/tmdbApi.d.ts +37 -1
- package/dist/tmdbApi.d.ts.map +1 -1
- package/dist/tmdbApi.js +71 -23
- package/dist/tmdbApi.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/validate.d.ts +5 -0
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +38 -1
- package/dist/validate.js.map +1 -1
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -11,6 +11,7 @@ An intelligent movie recommendation system that helps users discover movies base
|
|
|
11
11
|
- ⚡ Fast responses using TMDb API
|
|
12
12
|
- 🎯 Smart filtering by runtime, release year, and streaming platforms
|
|
13
13
|
- 📦 Easy integration into web applications and APIs
|
|
14
|
+
- 🔒 Multi-tenant cache isolation for secure deployments (see [Cache Isolation Guide](docs/CACHE_ISOLATION.md))
|
|
14
15
|
|
|
15
16
|
## Prerequisites
|
|
16
17
|
|
|
@@ -84,7 +85,7 @@ import { MovieAgentFactory } from 'movie-agent';
|
|
|
84
85
|
|
|
85
86
|
// Create agent with explicit configuration (Gemini)
|
|
86
87
|
const agent = MovieAgentFactory.create({
|
|
87
|
-
|
|
88
|
+
tmdbAccessToken: process.env.TMDB_ACCESS_TOKEN!,
|
|
88
89
|
tmdbRegion: 'CA',
|
|
89
90
|
llmProvider: 'gemini',
|
|
90
91
|
geminiApiKey: process.env.GEMINI_API_KEY,
|
|
@@ -93,7 +94,7 @@ const agent = MovieAgentFactory.create({
|
|
|
93
94
|
|
|
94
95
|
// Or use Azure OpenAI
|
|
95
96
|
const agentWithAzure = MovieAgentFactory.create({
|
|
96
|
-
|
|
97
|
+
tmdbAccessToken: process.env.TMDB_ACCESS_TOKEN!,
|
|
97
98
|
tmdbRegion: 'CA',
|
|
98
99
|
llmProvider: 'azure',
|
|
99
100
|
azureOpenAiApiKey: process.env.AZURE_OPENAI_API_KEY,
|
|
@@ -178,7 +179,8 @@ interface UserInput {
|
|
|
178
179
|
"genres": ["Action", "Adventure"],
|
|
179
180
|
"description": "...",
|
|
180
181
|
"streamingPlatforms": [...],
|
|
181
|
-
"matchReason": "..."
|
|
182
|
+
"matchReason": "...",
|
|
183
|
+
"posterUrl": "https://image.tmdb.org/t/p/w500/abc123.jpg"
|
|
182
184
|
}
|
|
183
185
|
],
|
|
184
186
|
"metadata": {...}
|
|
@@ -383,7 +385,7 @@ function MovieRecommendations() {
|
|
|
383
385
|
|
|
384
386
|
```bash
|
|
385
387
|
# Required
|
|
386
|
-
|
|
388
|
+
TMDB_ACCESS_TOKEN=your_tmdb_api_key_here
|
|
387
389
|
|
|
388
390
|
# LLM Provider Selection (optional)
|
|
389
391
|
LLM_PROVIDER=gemini # Options: gemini, azure
|
|
@@ -412,7 +414,7 @@ The package supports multiple LLM providers for AI-formatted output:
|
|
|
412
414
|
#### Google Gemini (Default)
|
|
413
415
|
```typescript
|
|
414
416
|
const agent = MovieAgentFactory.create({
|
|
415
|
-
|
|
417
|
+
tmdbAccessToken: 'your-tmdb-key',
|
|
416
418
|
llmProvider: 'gemini',
|
|
417
419
|
geminiApiKey: 'your-gemini-key',
|
|
418
420
|
});
|
|
@@ -421,7 +423,7 @@ const agent = MovieAgentFactory.create({
|
|
|
421
423
|
#### Azure OpenAI
|
|
422
424
|
```typescript
|
|
423
425
|
const agent = MovieAgentFactory.create({
|
|
424
|
-
|
|
426
|
+
tmdbAccessToken: 'your-tmdb-key',
|
|
425
427
|
llmProvider: 'azure',
|
|
426
428
|
azureOpenAiApiKey: 'your-azure-key',
|
|
427
429
|
azureOpenAiEndpoint: 'https://your-resource.openai.azure.com/',
|
|
@@ -507,7 +509,13 @@ import {
|
|
|
507
509
|
AgentResponse,
|
|
508
510
|
MovieRecommendation,
|
|
509
511
|
ErrorResponse,
|
|
512
|
+
buildPosterUrl, // Utility to build poster URLs with different sizes
|
|
513
|
+
TMDB_IMAGE_BASE_URL, // Base URL for TMDb images
|
|
510
514
|
} from 'movie-agent';
|
|
515
|
+
|
|
516
|
+
// Build poster URL with custom size (default is w500)
|
|
517
|
+
const smallPoster = buildPosterUrl('/abc123.jpg', 'w185');
|
|
518
|
+
// => "https://image.tmdb.org/t/p/w185/abc123.jpg"
|
|
511
519
|
```
|
|
512
520
|
|
|
513
521
|
## Response Format
|
|
@@ -532,6 +540,7 @@ interface MovieRecommendation {
|
|
|
532
540
|
overview: string;
|
|
533
541
|
streamingPlatforms: StreamingPlatform[];
|
|
534
542
|
matchReason: string;
|
|
543
|
+
posterUrl: string | null; // Full URL to movie poster image (w500 size)
|
|
535
544
|
}
|
|
536
545
|
```
|
|
537
546
|
|
package/bin/movie-agent
CHANGED
|
@@ -163,16 +163,16 @@ async function main() {
|
|
|
163
163
|
require('dotenv').config({ path: envPath });
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
-
// Check for TMDb
|
|
167
|
-
if (!process.env.
|
|
166
|
+
// Check for TMDb access token
|
|
167
|
+
if (!process.env.TMDB_ACCESS_TOKEN) {
|
|
168
168
|
console.error(`
|
|
169
|
-
❌ Error: TMDb
|
|
169
|
+
❌ Error: TMDb access token not found
|
|
170
170
|
|
|
171
|
-
Please set the
|
|
172
|
-
export
|
|
171
|
+
Please set the TMDB_ACCESS_TOKEN environment variable:
|
|
172
|
+
export TMDB_ACCESS_TOKEN=your_api_key_here
|
|
173
173
|
|
|
174
174
|
Or create a .env.development file with:
|
|
175
|
-
|
|
175
|
+
TMDB_ACCESS_TOKEN=your_api_key_here
|
|
176
176
|
`);
|
|
177
177
|
process.exit(1);
|
|
178
178
|
}
|
package/dist/agent.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export declare class MovieAgent {
|
|
|
7
7
|
private tmdbClient;
|
|
8
8
|
private logger;
|
|
9
9
|
private llmService;
|
|
10
|
+
private debug;
|
|
10
11
|
/**
|
|
11
12
|
* Creates a new MovieAgent instance
|
|
12
13
|
* @param tmdbClient - Optional TMDb API client for testing
|
|
@@ -15,11 +16,12 @@ export declare class MovieAgent {
|
|
|
15
16
|
* @param llmProvider - LLM provider to use ('gemini' or 'azure')
|
|
16
17
|
* @param llmApiKey - API key for the LLM provider
|
|
17
18
|
* @param azureConfig - Azure OpenAI configuration (endpoint and deployment)
|
|
19
|
+
* @param debug - Whether to include detailed error information in responses (default: false for production safety)
|
|
18
20
|
*/
|
|
19
21
|
constructor(tmdbClient?: TmdbApiClient, logger?: (message: string) => void, enableLLM?: boolean, llmProvider?: 'gemini' | 'azure', llmApiKey?: string, azureConfig?: {
|
|
20
22
|
endpoint?: string;
|
|
21
23
|
deployment?: string;
|
|
22
|
-
});
|
|
24
|
+
}, debug?: boolean);
|
|
23
25
|
/**
|
|
24
26
|
* Gets movie recommendations based on user input
|
|
25
27
|
* @param input - User input with mood, platforms, genres, runtime, and year preferences
|
|
@@ -60,11 +62,11 @@ export declare class MovieAgent {
|
|
|
60
62
|
*/
|
|
61
63
|
private discoverCandidates;
|
|
62
64
|
/**
|
|
63
|
-
*
|
|
64
|
-
* @param candidates - Array of movie details
|
|
65
|
+
* Extracts watch providers from movie details and filters to those with providers
|
|
66
|
+
* @param candidates - Array of movie details with embedded providers
|
|
65
67
|
* @returns Array of movies with platform information
|
|
66
68
|
*/
|
|
67
|
-
private
|
|
69
|
+
private extractWatchProviders;
|
|
68
70
|
/**
|
|
69
71
|
* Applies user-specified filters to movies
|
|
70
72
|
* @param movies - Movies with provider information
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,aAAa,EAGb,aAAa,EACd,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,aAAa,EAGb,aAAa,EACd,MAAM,SAAS,CAAC;AAWjB,OAAO,aAGN,MAAM,WAAW,CAAC;AAcnB;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,KAAK,CAAU;IAEvB;;;;;;;;;OASG;gBAED,UAAU,CAAC,EAAE,aAAa,EAC1B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAClC,SAAS,CAAC,EAAE,OAAO,EACnB,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,EAChC,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EACxD,KAAK,CAAC,EAAE,OAAO;IAgBjB;;;;OAIG;IACG,kBAAkB,CACtB,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;IAkEzC;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAmEnB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IA+BrB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAerB;;;;;OAKG;YACW,kBAAkB;IA2ChC;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IA8B7B;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IA+BpB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAoCrB;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAkC7B;;;;OAIG;IACG,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC;IAoB/D;;;;;OAKG;IACG,MAAM,CACV,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC;IAwBhC;;OAEG;IACH,OAAO,CAAC,cAAc;IAsBtB;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;CAuC5B"}
|
package/dist/agent.js
CHANGED
|
@@ -25,8 +25,9 @@ class MovieAgent {
|
|
|
25
25
|
* @param llmProvider - LLM provider to use ('gemini' or 'azure')
|
|
26
26
|
* @param llmApiKey - API key for the LLM provider
|
|
27
27
|
* @param azureConfig - Azure OpenAI configuration (endpoint and deployment)
|
|
28
|
+
* @param debug - Whether to include detailed error information in responses (default: false for production safety)
|
|
28
29
|
*/
|
|
29
|
-
constructor(tmdbClient, logger, enableLLM, llmProvider, llmApiKey, azureConfig) {
|
|
30
|
+
constructor(tmdbClient, logger, enableLLM, llmProvider, llmApiKey, azureConfig, debug) {
|
|
30
31
|
this.tmdbClient = tmdbClient ?? new tmdbApi_1.default();
|
|
31
32
|
this.logger =
|
|
32
33
|
logger ?? ((message) => console.log(`[MovieAgent] ${message}`));
|
|
@@ -35,6 +36,8 @@ class MovieAgent {
|
|
|
35
36
|
this.llmService = shouldEnableLLM
|
|
36
37
|
? new llm_1.LLMService(llmApiKey, llmProvider, azureConfig)
|
|
37
38
|
: null;
|
|
39
|
+
// Default to false for production safety - only expose details when explicitly enabled
|
|
40
|
+
this.debug = debug ?? false;
|
|
38
41
|
}
|
|
39
42
|
/**
|
|
40
43
|
* Gets movie recommendations based on user input
|
|
@@ -51,17 +54,17 @@ class MovieAgent {
|
|
|
51
54
|
this.logger('Step 2: Resolving genres');
|
|
52
55
|
const genres = this.resolveGenres(input);
|
|
53
56
|
this.logger(`Resolved genres: ${genres.join(', ')}`);
|
|
54
|
-
// Step 3: Discover candidate movies via TMDb
|
|
55
|
-
this.logger('Step 3: Discovering candidate movies');
|
|
57
|
+
// Step 3: Discover candidate movies via TMDb (with watch providers)
|
|
58
|
+
this.logger('Step 3: Discovering candidate movies with providers');
|
|
56
59
|
const candidates = await this.discoverCandidates(input, genres);
|
|
57
60
|
this.logger(`Found ${candidates.length} candidate movies`);
|
|
58
61
|
if (candidates.length === 0) {
|
|
59
62
|
return this.createErrorResponse('NO_RESULTS', 'No movies found matching the criteria');
|
|
60
63
|
}
|
|
61
|
-
// Step 4:
|
|
62
|
-
this.logger('Step 4:
|
|
63
|
-
const moviesWithProviders =
|
|
64
|
-
this.logger(
|
|
64
|
+
// Step 4: Extract watch providers from embedded data (region CA)
|
|
65
|
+
this.logger('Step 4: Extracting watch providers');
|
|
66
|
+
const moviesWithProviders = this.extractWatchProviders(candidates);
|
|
67
|
+
this.logger(`${moviesWithProviders.length} movies have streaming providers`);
|
|
65
68
|
// Step 5: Apply filters (platforms, runtime, year)
|
|
66
69
|
this.logger('Step 5: Applying filters');
|
|
67
70
|
const filtered = this.applyFilters(moviesWithProviders, input);
|
|
@@ -95,12 +98,17 @@ class MovieAgent {
|
|
|
95
98
|
* @returns ErrorResponse object
|
|
96
99
|
*/
|
|
97
100
|
createErrorResponse(errorType, message, details) {
|
|
101
|
+
// Log detailed error information server-side for debugging
|
|
102
|
+
if (details) {
|
|
103
|
+
this.logger(`Error details: ${details}`);
|
|
104
|
+
}
|
|
98
105
|
return {
|
|
99
106
|
error: true,
|
|
100
107
|
errorType,
|
|
101
108
|
message,
|
|
102
109
|
timestamp: new Date().toISOString(),
|
|
103
|
-
details
|
|
110
|
+
// Only include details in response when debug mode is enabled
|
|
111
|
+
details: this.debug ? details : undefined,
|
|
104
112
|
};
|
|
105
113
|
}
|
|
106
114
|
/**
|
|
@@ -114,7 +122,7 @@ class MovieAgent {
|
|
|
114
122
|
if (errorMessage.includes('401') ||
|
|
115
123
|
errorMessage.includes('Invalid API key') ||
|
|
116
124
|
errorMessage.includes('authentication')) {
|
|
117
|
-
return this.createErrorResponse('INVALID_API_KEY', 'Invalid or missing TMDB
|
|
125
|
+
return this.createErrorResponse('INVALID_API_KEY', 'Invalid or missing TMDB access token', errorMessage);
|
|
118
126
|
}
|
|
119
127
|
// Check for rate limit errors
|
|
120
128
|
if (errorMessage.includes('429') ||
|
|
@@ -147,6 +155,14 @@ class MovieAgent {
|
|
|
147
155
|
* @throws Error if validation fails
|
|
148
156
|
*/
|
|
149
157
|
validateInput(input) {
|
|
158
|
+
// Validate mood if provided
|
|
159
|
+
if (input.mood !== undefined) {
|
|
160
|
+
(0, validate_1.validateMood)(input.mood);
|
|
161
|
+
}
|
|
162
|
+
// Validate genre if provided
|
|
163
|
+
if (input.genre !== undefined) {
|
|
164
|
+
(0, validate_1.validateGenre)(input.genre);
|
|
165
|
+
}
|
|
150
166
|
// Validate platforms if provided
|
|
151
167
|
if (input.platforms && input.platforms.length > 0) {
|
|
152
168
|
(0, validate_1.validatePlatforms)(input.platforms);
|
|
@@ -214,22 +230,22 @@ class MovieAgent {
|
|
|
214
230
|
// Fetch detailed information for top candidates
|
|
215
231
|
// Limit to top 20 to avoid excessive API calls
|
|
216
232
|
const topCandidates = response.results.slice(0, 20);
|
|
217
|
-
// Fetch details
|
|
218
|
-
|
|
233
|
+
// Fetch details with watch providers in a single call per movie
|
|
234
|
+
// This uses append_to_response to reduce API calls by 50%
|
|
235
|
+
const detailsPromises = topCandidates.map(movie => this.tmdbClient.getMovieDetailsWithProviders(movie.id));
|
|
219
236
|
const details = await Promise.all(detailsPromises);
|
|
220
237
|
return details;
|
|
221
238
|
}
|
|
222
239
|
/**
|
|
223
|
-
*
|
|
224
|
-
* @param candidates - Array of movie details
|
|
240
|
+
* Extracts watch providers from movie details and filters to those with providers
|
|
241
|
+
* @param candidates - Array of movie details with embedded providers
|
|
225
242
|
* @returns Array of movies with platform information
|
|
226
243
|
*/
|
|
227
|
-
|
|
244
|
+
extractWatchProviders(candidates) {
|
|
228
245
|
const moviesWithProviders = [];
|
|
229
|
-
// Fetch providers for each movie
|
|
230
246
|
for (const movie of candidates) {
|
|
231
247
|
try {
|
|
232
|
-
const platforms =
|
|
248
|
+
const platforms = (0, providers_1.extractPlatformsFromProviders)(movie['watch/providers'], 'CA');
|
|
233
249
|
// Only include movies with at least one provider
|
|
234
250
|
if (platforms.length > 0) {
|
|
235
251
|
moviesWithProviders.push({
|
|
@@ -240,7 +256,7 @@ class MovieAgent {
|
|
|
240
256
|
}
|
|
241
257
|
catch (error) {
|
|
242
258
|
// Log error but continue with other movies
|
|
243
|
-
this.logger(`Failed to
|
|
259
|
+
this.logger(`Failed to extract providers for movie ${movie.id}: ${error instanceof Error ? error.message : String(error)}`);
|
|
244
260
|
}
|
|
245
261
|
}
|
|
246
262
|
return moviesWithProviders;
|
|
@@ -335,6 +351,7 @@ class MovieAgent {
|
|
|
335
351
|
runtime: movie.runtime || 0,
|
|
336
352
|
overview: movie.overview || '',
|
|
337
353
|
genres: movie.genres || [],
|
|
354
|
+
poster_path: movie.poster_path,
|
|
338
355
|
}, streamingPlatforms, reason);
|
|
339
356
|
});
|
|
340
357
|
}
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/cache.d.ts
CHANGED
|
@@ -1,14 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Simple in-memory cache with TTL support
|
|
3
3
|
*/
|
|
4
|
+
/**
|
|
5
|
+
* Optional context for cache key isolation in multi-tenant scenarios.
|
|
6
|
+
* Allows separating cache entries by user, session, or tenant.
|
|
7
|
+
*/
|
|
8
|
+
export interface CacheContext {
|
|
9
|
+
/** User identifier for user-specific cache isolation */
|
|
10
|
+
userId?: string;
|
|
11
|
+
/** Session identifier for session-specific cache isolation */
|
|
12
|
+
sessionId?: string;
|
|
13
|
+
/** Tenant identifier for multi-tenant cache isolation */
|
|
14
|
+
tenantId?: string;
|
|
15
|
+
}
|
|
4
16
|
export declare class Cache {
|
|
5
17
|
private store;
|
|
6
18
|
private defaultTtl;
|
|
19
|
+
private context?;
|
|
7
20
|
/**
|
|
8
21
|
* Creates a new cache instance
|
|
9
22
|
* @param defaultTtl Default time-to-live in seconds
|
|
23
|
+
* @param context Optional context for cache key isolation (e.g., userId, sessionId, tenantId)
|
|
24
|
+
* @throws Error if any context value is an empty string
|
|
25
|
+
*/
|
|
26
|
+
constructor(defaultTtl?: number, context?: CacheContext);
|
|
27
|
+
/**
|
|
28
|
+
* Prefixes a cache key with context information for isolation.
|
|
29
|
+
* @param key Base cache key
|
|
30
|
+
* @returns Prefixed cache key with context
|
|
10
31
|
*/
|
|
11
|
-
|
|
32
|
+
private prefixKey;
|
|
12
33
|
/**
|
|
13
34
|
* Sets a value in the cache
|
|
14
35
|
* @param key Cache key
|
|
@@ -50,9 +71,21 @@ export declare class Cache {
|
|
|
50
71
|
prune(): number;
|
|
51
72
|
}
|
|
52
73
|
/**
|
|
53
|
-
* Gets the global cache instance
|
|
74
|
+
* Gets the global cache instance.
|
|
75
|
+
*
|
|
76
|
+
* NOTE: The global cache instance does not support context-based isolation.
|
|
77
|
+
* For multi-tenant scenarios requiring cache isolation, create separate Cache
|
|
78
|
+
* instances with appropriate context parameters instead of using the global singleton.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* // For single-tenant CLI usage (default):
|
|
82
|
+
* const cache = getCache(3600);
|
|
83
|
+
*
|
|
84
|
+
* // For multi-tenant scenarios, use separate instances:
|
|
85
|
+
* const tenantCache = new Cache(3600, { tenantId: 'tenant1' });
|
|
86
|
+
*
|
|
54
87
|
* @param ttl Default TTL for the cache (only used on first call)
|
|
55
|
-
* @returns Global cache instance
|
|
88
|
+
* @returns Global cache instance without context
|
|
56
89
|
*/
|
|
57
90
|
export declare function getCache(ttl?: number): Cache;
|
|
58
91
|
/**
|
|
@@ -62,14 +95,16 @@ export declare function resetCache(): void;
|
|
|
62
95
|
/**
|
|
63
96
|
* Generates a cache key for discover parameters
|
|
64
97
|
* @param params Discover parameters object
|
|
98
|
+
* @param context Optional context for multi-tenant cache isolation
|
|
65
99
|
* @returns Cache key string
|
|
66
100
|
*/
|
|
67
|
-
export declare function generateDiscoverCacheKey(params: Record<string, any
|
|
101
|
+
export declare function generateDiscoverCacheKey(params: Record<string, any>, context?: CacheContext): string;
|
|
68
102
|
/**
|
|
69
103
|
* Generates a cache key for watch providers
|
|
70
104
|
* @param movieId Movie ID
|
|
71
105
|
* @param region Region code
|
|
106
|
+
* @param context Optional context for multi-tenant cache isolation
|
|
72
107
|
* @returns Cache key string
|
|
73
108
|
*/
|
|
74
|
-
export declare function generateProvidersCacheKey(movieId: number | string, region: string): string;
|
|
109
|
+
export declare function generateProvidersCacheKey(movieId: number | string, region: string, context?: CacheContext): string;
|
|
75
110
|
//# sourceMappingURL=cache.d.ts.map
|
package/dist/cache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,qBAAa,KAAK;IAChB,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,UAAU,CAAS;
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA6CD,qBAAa,KAAK;IAChB,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAe;IAE/B;;;;;OAKG;gBACS,UAAU,GAAE,MAAa,EAAE,OAAO,CAAC,EAAE,YAAY;IA6B7D;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;;OAKG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAOjD;;;;OAIG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAiBlC;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAK5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;OAGG;IACH,IAAI,IAAI,MAAM;IAId;;;OAGG;IACH,KAAK,IAAI,MAAM;CAahB;AAKD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAK5C;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,OAAO,CAAC,EAAE,YAAY,GACrB,MAAM,CAOR;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,YAAY,GACrB,MAAM,CAIR"}
|
package/dist/cache.js
CHANGED
|
@@ -8,14 +8,79 @@ exports.getCache = getCache;
|
|
|
8
8
|
exports.resetCache = resetCache;
|
|
9
9
|
exports.generateDiscoverCacheKey = generateDiscoverCacheKey;
|
|
10
10
|
exports.generateProvidersCacheKey = generateProvidersCacheKey;
|
|
11
|
+
/**
|
|
12
|
+
* Sanitizes a context value to prevent cache key collisions.
|
|
13
|
+
* Encodes special characters to ensure unique, safe cache keys.
|
|
14
|
+
* Uses encodeURIComponent to handle special characters like colons, slashes, etc.
|
|
15
|
+
* @param value Context value to sanitize
|
|
16
|
+
* @returns Sanitized value safe for use in cache keys
|
|
17
|
+
* @throws Error if value is empty
|
|
18
|
+
*/
|
|
19
|
+
function sanitizeContextValue(value) {
|
|
20
|
+
if (!value || value.trim() === '') {
|
|
21
|
+
throw new Error('Context values cannot be empty strings');
|
|
22
|
+
}
|
|
23
|
+
// Use URI encoding to handle special characters safely
|
|
24
|
+
// This prevents collisions from characters like ':', '/', ';', etc.
|
|
25
|
+
return encodeURIComponent(value);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Applies context prefix to a cache key for multi-tenant isolation.
|
|
29
|
+
* Prefixes are applied in order: tenant -> user -> session
|
|
30
|
+
* @param key Base cache key
|
|
31
|
+
* @param context Optional context for isolation
|
|
32
|
+
* @returns Prefixed cache key if context is provided, otherwise the original key
|
|
33
|
+
*/
|
|
34
|
+
function applyContextPrefix(key, context) {
|
|
35
|
+
if (!context) {
|
|
36
|
+
return key;
|
|
37
|
+
}
|
|
38
|
+
const prefixParts = [];
|
|
39
|
+
if (context.tenantId) {
|
|
40
|
+
prefixParts.push(`tenant:${sanitizeContextValue(context.tenantId)}`);
|
|
41
|
+
}
|
|
42
|
+
if (context.userId) {
|
|
43
|
+
prefixParts.push(`user:${sanitizeContextValue(context.userId)}`);
|
|
44
|
+
}
|
|
45
|
+
if (context.sessionId) {
|
|
46
|
+
prefixParts.push(`session:${sanitizeContextValue(context.sessionId)}`);
|
|
47
|
+
}
|
|
48
|
+
return prefixParts.length > 0 ? `${prefixParts.join(':')}:${key}` : key;
|
|
49
|
+
}
|
|
11
50
|
class Cache {
|
|
12
51
|
/**
|
|
13
52
|
* Creates a new cache instance
|
|
14
53
|
* @param defaultTtl Default time-to-live in seconds
|
|
54
|
+
* @param context Optional context for cache key isolation (e.g., userId, sessionId, tenantId)
|
|
55
|
+
* @throws Error if any context value is an empty string
|
|
15
56
|
*/
|
|
16
|
-
constructor(defaultTtl = 3600) {
|
|
57
|
+
constructor(defaultTtl = 3600, context) {
|
|
17
58
|
this.store = new Map();
|
|
18
59
|
this.defaultTtl = defaultTtl;
|
|
60
|
+
// Validate context values if provided
|
|
61
|
+
if (context) {
|
|
62
|
+
if (context.tenantId !== undefined &&
|
|
63
|
+
(!context.tenantId || context.tenantId.trim() === '')) {
|
|
64
|
+
throw new Error('Context values cannot be empty strings');
|
|
65
|
+
}
|
|
66
|
+
if (context.userId !== undefined &&
|
|
67
|
+
(!context.userId || context.userId.trim() === '')) {
|
|
68
|
+
throw new Error('Context values cannot be empty strings');
|
|
69
|
+
}
|
|
70
|
+
if (context.sessionId !== undefined &&
|
|
71
|
+
(!context.sessionId || context.sessionId.trim() === '')) {
|
|
72
|
+
throw new Error('Context values cannot be empty strings');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
this.context = context;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Prefixes a cache key with context information for isolation.
|
|
79
|
+
* @param key Base cache key
|
|
80
|
+
* @returns Prefixed cache key with context
|
|
81
|
+
*/
|
|
82
|
+
prefixKey(key) {
|
|
83
|
+
return applyContextPrefix(key, this.context);
|
|
19
84
|
}
|
|
20
85
|
/**
|
|
21
86
|
* Sets a value in the cache
|
|
@@ -26,7 +91,8 @@ class Cache {
|
|
|
26
91
|
set(key, value, ttl) {
|
|
27
92
|
const effectiveTtl = ttl ?? this.defaultTtl;
|
|
28
93
|
const expiresAt = Date.now() + effectiveTtl * 1000;
|
|
29
|
-
this.
|
|
94
|
+
const prefixedKey = this.prefixKey(key);
|
|
95
|
+
this.store.set(prefixedKey, { value, expiresAt });
|
|
30
96
|
}
|
|
31
97
|
/**
|
|
32
98
|
* Gets a value from the cache
|
|
@@ -34,13 +100,14 @@ class Cache {
|
|
|
34
100
|
* @returns Cached value or undefined if not found or expired
|
|
35
101
|
*/
|
|
36
102
|
get(key) {
|
|
37
|
-
const
|
|
103
|
+
const prefixedKey = this.prefixKey(key);
|
|
104
|
+
const entry = this.store.get(prefixedKey);
|
|
38
105
|
if (!entry) {
|
|
39
106
|
return undefined;
|
|
40
107
|
}
|
|
41
108
|
// Check if entry has expired
|
|
42
109
|
if (Date.now() > entry.expiresAt) {
|
|
43
|
-
this.store.delete(
|
|
110
|
+
this.store.delete(prefixedKey);
|
|
44
111
|
return undefined;
|
|
45
112
|
}
|
|
46
113
|
return entry.value;
|
|
@@ -59,7 +126,8 @@ class Cache {
|
|
|
59
126
|
* @returns true if key existed and was deleted
|
|
60
127
|
*/
|
|
61
128
|
delete(key) {
|
|
62
|
-
|
|
129
|
+
const prefixedKey = this.prefixKey(key);
|
|
130
|
+
return this.store.delete(prefixedKey);
|
|
63
131
|
}
|
|
64
132
|
/**
|
|
65
133
|
* Clears all entries from the cache
|
|
@@ -94,9 +162,21 @@ exports.Cache = Cache;
|
|
|
94
162
|
// Singleton instance for application-wide use
|
|
95
163
|
let cacheInstance = null;
|
|
96
164
|
/**
|
|
97
|
-
* Gets the global cache instance
|
|
165
|
+
* Gets the global cache instance.
|
|
166
|
+
*
|
|
167
|
+
* NOTE: The global cache instance does not support context-based isolation.
|
|
168
|
+
* For multi-tenant scenarios requiring cache isolation, create separate Cache
|
|
169
|
+
* instances with appropriate context parameters instead of using the global singleton.
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* // For single-tenant CLI usage (default):
|
|
173
|
+
* const cache = getCache(3600);
|
|
174
|
+
*
|
|
175
|
+
* // For multi-tenant scenarios, use separate instances:
|
|
176
|
+
* const tenantCache = new Cache(3600, { tenantId: 'tenant1' });
|
|
177
|
+
*
|
|
98
178
|
* @param ttl Default TTL for the cache (only used on first call)
|
|
99
|
-
* @returns Global cache instance
|
|
179
|
+
* @returns Global cache instance without context
|
|
100
180
|
*/
|
|
101
181
|
function getCache(ttl) {
|
|
102
182
|
if (!cacheInstance) {
|
|
@@ -113,21 +193,25 @@ function resetCache() {
|
|
|
113
193
|
/**
|
|
114
194
|
* Generates a cache key for discover parameters
|
|
115
195
|
* @param params Discover parameters object
|
|
196
|
+
* @param context Optional context for multi-tenant cache isolation
|
|
116
197
|
* @returns Cache key string
|
|
117
198
|
*/
|
|
118
|
-
function generateDiscoverCacheKey(params) {
|
|
199
|
+
function generateDiscoverCacheKey(params, context) {
|
|
119
200
|
// Sort keys to ensure consistent key generation
|
|
120
201
|
const sortedKeys = Object.keys(params).sort();
|
|
121
202
|
const keyParts = sortedKeys.map(key => `${key}=${params[key]}`);
|
|
122
|
-
|
|
203
|
+
const baseKey = `discover:${keyParts.join('&')}`;
|
|
204
|
+
return applyContextPrefix(baseKey, context);
|
|
123
205
|
}
|
|
124
206
|
/**
|
|
125
207
|
* Generates a cache key for watch providers
|
|
126
208
|
* @param movieId Movie ID
|
|
127
209
|
* @param region Region code
|
|
210
|
+
* @param context Optional context for multi-tenant cache isolation
|
|
128
211
|
* @returns Cache key string
|
|
129
212
|
*/
|
|
130
|
-
function generateProvidersCacheKey(movieId, region) {
|
|
131
|
-
|
|
213
|
+
function generateProvidersCacheKey(movieId, region, context) {
|
|
214
|
+
const baseKey = `providers:${movieId}:${region}`;
|
|
215
|
+
return applyContextPrefix(baseKey, context);
|
|
132
216
|
}
|
|
133
217
|
//# sourceMappingURL=cache.js.map
|
package/dist/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":";AAAA;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,MAAM;IACrB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,MAAM;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAG5B,YAAY,EAAE,QAAQ,GAAG,OAAO,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAkBD,QAAA,MAAM,MAAM,EAAE,MAwBb,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -14,7 +14,7 @@ function getEnvVar(key, required = false, defaultValue) {
|
|
|
14
14
|
}
|
|
15
15
|
const LLM_PROVIDER = getEnvVar('LLM_PROVIDER', false, 'gemini');
|
|
16
16
|
const config = {
|
|
17
|
-
|
|
17
|
+
TMDB_ACCESS_TOKEN: getEnvVar('TMDB_ACCESS_TOKEN', false) || '', // Made optional - factory pattern handles this
|
|
18
18
|
TMDB_BASE_URL: getEnvVar('TMDB_BASE_URL', false, 'https://api.themoviedb.org/3'),
|
|
19
19
|
TMDB_REGION: getEnvVar('TMDB_REGION', false, 'CA'),
|
|
20
20
|
CACHE_TTL: parseInt(getEnvVar('CACHE_TTL', false, '86400'), 10),
|