@se-studio/contentful-rest-api 1.0.122 → 1.0.123
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"videoEnricher.d.ts","sourceRoot":"","sources":["../../src/converters/videoEnricher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,OAAO,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"videoEnricher.d.ts","sourceRoot":"","sources":["../../src/converters/videoEnricher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAuEnF;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCnF"}
|
|
@@ -1,35 +1,44 @@
|
|
|
1
|
+
import { unstable_cache } from 'next/cache';
|
|
2
|
+
import { assetTag } from '../revalidation/tags';
|
|
1
3
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* @param videoUrl - Contentful CDN URL for the video asset
|
|
7
|
-
* @param assetId - Contentful asset ID for cache tagging
|
|
8
|
-
* @param imagekitUrl - ImageKit origin URL (IMAGEKIT_URL env var)
|
|
9
|
-
* @param privateKey - ImageKit private key (IMAGEKIT_PRIVATE_KEY env var)
|
|
4
|
+
* Raw HTTP fetch — called only on cache miss.
|
|
5
|
+
* Note: Next.js automatically excludes fetch calls with Authorization headers from its
|
|
6
|
+
* Data Cache, so caching is handled by the unstable_cache wrapper in fetchVideoMetadata.
|
|
10
7
|
*/
|
|
11
|
-
async function
|
|
12
|
-
const fullUrl = new URL(videoUrl);
|
|
13
|
-
const src = `${imagekitUrl}${fullUrl.pathname}/ik-video.mp4`;
|
|
8
|
+
async function fetchFromImageKit(src, privateKey) {
|
|
14
9
|
const request = `https://api.imagekit.io/v1/metadata?url=${encodeURIComponent(src)}`;
|
|
15
|
-
console.log(`[ImageKit]
|
|
10
|
+
console.log(`[ImageKit] cache miss — fetching url=${src}`);
|
|
16
11
|
const response = await fetch(request, {
|
|
17
12
|
method: 'GET',
|
|
18
13
|
headers: {
|
|
19
14
|
authorization: `Basic ${Buffer.from(`${privateKey}:`).toString('base64')}`,
|
|
20
15
|
},
|
|
21
|
-
next: {
|
|
22
|
-
revalidate: 86400, // 1-day safety-net; tags still allow on-demand invalidation
|
|
23
|
-
// tags: [assetTag(assetId)],
|
|
24
|
-
},
|
|
25
16
|
});
|
|
26
17
|
if (response.ok) {
|
|
27
|
-
console.log(`[ImageKit] metadata ok
|
|
18
|
+
console.log(`[ImageKit] metadata ok status=${response.status}`);
|
|
28
19
|
return (await response.json());
|
|
29
20
|
}
|
|
30
|
-
console.warn(`[ImageKit] metadata failed
|
|
21
|
+
console.warn(`[ImageKit] metadata failed status=${response.status} url=${src}`);
|
|
31
22
|
return undefined;
|
|
32
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Fetches video metadata (width/height) from the ImageKit metadata API, with caching.
|
|
26
|
+
* Uses unstable_cache (not fetch's next:{} options) because Next.js automatically opts
|
|
27
|
+
* fetch calls with Authorization headers out of the Data Cache.
|
|
28
|
+
*
|
|
29
|
+
* Cached for 1 day; can be invalidated on-demand via the asset's Contentful webhook tag.
|
|
30
|
+
*
|
|
31
|
+
* @param videoUrl - Contentful CDN URL for the video asset
|
|
32
|
+
* @param assetId - Contentful asset ID for cache tagging
|
|
33
|
+
* @param imagekitUrl - ImageKit origin URL (IMAGEKIT_URL env var)
|
|
34
|
+
* @param privateKey - ImageKit private key (IMAGEKIT_PRIVATE_KEY env var)
|
|
35
|
+
*/
|
|
36
|
+
async function fetchVideoMetadata(videoUrl, assetId, imagekitUrl, privateKey) {
|
|
37
|
+
const fullUrl = new URL(videoUrl);
|
|
38
|
+
const src = `${imagekitUrl}${fullUrl.pathname}/ik-video.mp4`;
|
|
39
|
+
const getCached = unstable_cache(() => fetchFromImageKit(src, privateKey), ['imagekit-metadata', assetId], { revalidate: 86400, tags: [assetTag(assetId)] });
|
|
40
|
+
return getCached();
|
|
41
|
+
}
|
|
33
42
|
/**
|
|
34
43
|
* Enriches all local/full video visuals in the assets Map with pixel dimensions
|
|
35
44
|
* fetched from the ImageKit metadata API. Mutates width/height in place so the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"videoEnricher.js","sourceRoot":"","sources":["../../src/converters/videoEnricher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"videoEnricher.js","sourceRoot":"","sources":["../../src/converters/videoEnricher.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED