@se-studio/contentful-rest-api 1.25.1 → 1.25.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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @se-studio/contentful-rest-api
2
2
 
3
+ ## 1.25.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 6406cb1: Hero mute-loop packs: do not use a 60s Data Cache TTL for ready manifests (Next inherits it as page ISR TTL).
8
+
3
9
  ## 1.25.1
4
10
 
5
11
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  import 'server-only';
2
2
  import type { IVisual } from '@se-studio/core-data-types';
3
- export { type HeroVideoEnv, heroManifestUrl, readHeroVideoEnv, shouldRetryFailedHeroManifest, } from './heroVideoEnv';
3
+ export { HERO_PENDING_MANIFEST_REVALIDATE, HERO_STABLE_MANIFEST_REVALIDATE, type HeroVideoEnv, heroManifestCacheKey, heroManifestUrl, isStableHeroManifest, readHeroVideoEnv, shouldRetryFailedHeroManifest, } from './heroVideoEnv';
4
4
  /**
5
5
  * SE Studio mute-loop packs on R2: GET manifest, enqueue encode on miss or failed retry.
6
6
  * No-op when HERO_VIDEO_* env is unset (ImageKit path remains).
@@ -1 +1 @@
1
- {"version":3,"file":"heroVideoEnricher.d.ts","sourceRoot":"","sources":["../../src/converters/heroVideoEnricher.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAErB,OAAO,KAAK,EAA0C,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAUlG,OAAO,EACL,KAAK,YAAY,EACjB,eAAe,EACf,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,gBAAgB,CAAC;AAmExB;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAwErF"}
1
+ {"version":3,"file":"heroVideoEnricher.d.ts","sourceRoot":"","sources":["../../src/converters/heroVideoEnricher.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAErB,OAAO,KAAK,EAA0C,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAclG,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,KAAK,YAAY,EACjB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,gBAAgB,CAAC;AAkFxB;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA+FrF"}
@@ -1,7 +1,18 @@
1
1
  import 'server-only';
2
2
  import { unstable_cache } from 'next/cache';
3
- import { heroManifestUrl, readHeroVideoEnv, shouldRetryFailedHeroManifest, } from './heroVideoEnv.js';
4
- export { heroManifestUrl, readHeroVideoEnv, shouldRetryFailedHeroManifest, } from './heroVideoEnv.js';
3
+ import { HERO_PENDING_MANIFEST_REVALIDATE, HERO_STABLE_MANIFEST_REVALIDATE, heroManifestCacheKey, heroManifestUrl, isStableHeroManifest, readHeroVideoEnv, shouldRetryFailedHeroManifest, } from './heroVideoEnv.js';
4
+ export { HERO_PENDING_MANIFEST_REVALIDATE, HERO_STABLE_MANIFEST_REVALIDATE, heroManifestCacheKey, heroManifestUrl, isStableHeroManifest, readHeroVideoEnv, shouldRetryFailedHeroManifest, } from './heroVideoEnv.js';
5
+ /** Thrown so `unstable_cache` does not persist pending/missing manifests in the stable profile. */
6
+ class HeroManifestNotStable extends Error {
7
+ constructor() {
8
+ super('hero-manifest-not-stable');
9
+ this.name = 'HeroManifestNotStable';
10
+ }
11
+ }
12
+ function isHeroManifestNotStable(err) {
13
+ return (err instanceof HeroManifestNotStable ||
14
+ (err instanceof Error && err.name === 'HeroManifestNotStable'));
15
+ }
5
16
  function deliveryFromManifest(json) {
6
17
  return {
7
18
  status: json.status === 'ready' || json.status === 'rejected' || json.status === 'failed'
@@ -63,9 +74,28 @@ export async function seEnrichVideoAssets(assets) {
63
74
  return;
64
75
  }
65
76
  const url = heroManifestUrl(env.origin, env.tenant, assetId);
66
- const getCached = unstable_cache(() => fetchManifest(url), ['hero-video-manifest', env.tenant, assetId], { revalidate: 60, tags: [`asset#${assetId}`] });
77
+ const tags = [`asset#${assetId}`];
78
+ // Do not invoke the 60s cache on the ready path — Next inherits the
79
+ // lowest revalidate used during render as the page ISR TTL.
80
+ const getStableCached = unstable_cache(async () => {
81
+ const manifest = await fetchManifest(url);
82
+ if (isStableHeroManifest(manifest)) {
83
+ return manifest;
84
+ }
85
+ throw new HeroManifestNotStable();
86
+ }, heroManifestCacheKey('stable', env.tenant, assetId), { revalidate: HERO_STABLE_MANIFEST_REVALIDATE, tags });
87
+ const getPendingCached = unstable_cache(() => fetchManifest(url), heroManifestCacheKey('pending', env.tenant, assetId), { revalidate: HERO_PENDING_MANIFEST_REVALIDATE, tags });
67
88
  try {
68
- const manifest = await getCached();
89
+ let manifest;
90
+ try {
91
+ manifest = await getStableCached();
92
+ }
93
+ catch (err) {
94
+ if (!isHeroManifestNotStable(err)) {
95
+ throw err;
96
+ }
97
+ manifest = await getPendingCached();
98
+ }
69
99
  if (manifest && !shouldRetryFailedHeroManifest(manifest)) {
70
100
  const delivery = deliveryFromManifest(manifest);
71
101
  video.heroDelivery = delivery;
@@ -1 +1 @@
1
- {"version":3,"file":"heroVideoEnricher.js","sourceRoot":"","sources":["../../src/converters/heroVideoEnricher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heroVideoEnricher.js","sourceRoot":"","sources":["../../src/converters/heroVideoEnricher.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,21 @@ export interface HeroVideoEnv {
7
7
  export declare function readHeroVideoEnv(env?: NodeJS.ProcessEnv): HeroVideoEnv | undefined;
8
8
  export declare function heroManifestUrl(origin: string, tenant: string, assetId: string): string;
9
9
  export declare const HERO_FAILED_RETRY_MS = 60000;
10
+ /**
11
+ * Data Cache TTLs for mute-loop manifests.
12
+ *
13
+ * Next.js App Router uses the lowest `revalidate` seen during a render as the
14
+ * page ISR interval. A 60s TTL on a *ready* pack therefore regenerates every
15
+ * marketing page that includes local video. Keep 60s only for non-terminal
16
+ * packs (pending encode / failed retry).
17
+ */
18
+ export declare const HERO_STABLE_MANIFEST_REVALIDATE = false;
19
+ export declare const HERO_PENDING_MANIFEST_REVALIDATE = 60;
20
+ export declare function heroManifestCacheKey(kind: 'stable' | 'pending', tenant: string, assetId: string): string[];
21
+ /** Terminal packs that must not use the 60s Data Cache profile. */
22
+ export declare function isStableHeroManifest(manifest: {
23
+ status?: string;
24
+ } | undefined | null): boolean;
10
25
  export declare function shouldRetryFailedHeroManifest(manifest: {
11
26
  status?: string;
12
27
  updatedAt?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"heroVideoEnv.d.ts","sourceRoot":"","sources":["../../src/converters/heroVideoEnv.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,YAAY,GAAG,SAAS,CAS/F;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAE3C,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,EACjD,KAAK,GAAE,MAAmB,GACzB,OAAO,CAYT"}
1
+ {"version":3,"file":"heroVideoEnv.d.ts","sourceRoot":"","sources":["../../src/converters/heroVideoEnv.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,YAAY,GAAG,SAAS,CAS/F;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAE3C;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,QAAQ,CAAC;AACrD,eAAO,MAAM,gCAAgC,KAAK,CAAC;AAEnD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,MAAM,EAAE,CAEV;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAE9F;AAED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,EACjD,KAAK,GAAE,MAAmB,GACzB,OAAO,CAYT"}
@@ -12,6 +12,23 @@ export function heroManifestUrl(origin, tenant, assetId) {
12
12
  return `${origin}/${tenant}/${assetId}/manifest.json`;
13
13
  }
14
14
  export const HERO_FAILED_RETRY_MS = 60_000;
15
+ /**
16
+ * Data Cache TTLs for mute-loop manifests.
17
+ *
18
+ * Next.js App Router uses the lowest `revalidate` seen during a render as the
19
+ * page ISR interval. A 60s TTL on a *ready* pack therefore regenerates every
20
+ * marketing page that includes local video. Keep 60s only for non-terminal
21
+ * packs (pending encode / failed retry).
22
+ */
23
+ export const HERO_STABLE_MANIFEST_REVALIDATE = false;
24
+ export const HERO_PENDING_MANIFEST_REVALIDATE = 60;
25
+ export function heroManifestCacheKey(kind, tenant, assetId) {
26
+ return [`hero-video-manifest-${kind}`, tenant, assetId];
27
+ }
28
+ /** Terminal packs that must not use the 60s Data Cache profile. */
29
+ export function isStableHeroManifest(manifest) {
30
+ return manifest?.status === 'ready' || manifest?.status === 'rejected';
31
+ }
15
32
  export function shouldRetryFailedHeroManifest(manifest, nowMs = Date.now()) {
16
33
  if (manifest.status !== 'failed') {
17
34
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"heroVideoEnv.js","sourceRoot":"","sources":["../../src/converters/heroVideoEnv.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,gBAAgB,CAAC,GAAG,GAAsB,OAAO,CAAC,GAAG;IACnE,MAAM,MAAM,GAAG,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,GAAG,CAAC,iBAAiB,CAAC;IACrC,MAAM,SAAS,GAAG,GAAG,CAAC,qBAAqB,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,GAAG,CAAC,kBAAkB,CAAC;IACtC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,MAAc,EAAE,OAAe;IAC7E,OAAO,GAAG,MAAM,IAAI,MAAM,IAAI,OAAO,gBAAgB,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAE3C,MAAM,UAAU,6BAA6B,CAC3C,QAAiD,EACjD,KAAK,GAAW,IAAI,CAAC,GAAG,EAAE;IAE1B,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,GAAG,OAAO,IAAI,oBAAoB,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"heroVideoEnv.js","sourceRoot":"","sources":["../../src/converters/heroVideoEnv.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,gBAAgB,CAAC,GAAG,GAAsB,OAAO,CAAC,GAAG;IACnE,MAAM,MAAM,GAAG,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,GAAG,CAAC,iBAAiB,CAAC;IACrC,MAAM,SAAS,GAAG,GAAG,CAAC,qBAAqB,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,GAAG,CAAC,kBAAkB,CAAC;IACtC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,MAAc,EAAE,OAAe;IAC7E,OAAO,GAAG,MAAM,IAAI,MAAM,IAAI,OAAO,gBAAgB,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAE3C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,CAAC;AACrD,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC;AAEnD,MAAM,UAAU,oBAAoB,CAClC,IAA0B,EAC1B,MAAc,EACd,OAAe;IAEf,OAAO,CAAC,uBAAuB,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1D,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,oBAAoB,CAAC,QAAgD;IACnF,OAAO,QAAQ,EAAE,MAAM,KAAK,OAAO,IAAI,QAAQ,EAAE,MAAM,KAAK,UAAU,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,QAAiD,EACjD,KAAK,GAAW,IAAI,CAAC,GAAG,EAAE;IAE1B,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,GAAG,OAAO,IAAI,oBAAoB,CAAC;AACjD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@se-studio/contentful-rest-api",
3
- "version": "1.25.1",
3
+ "version": "1.25.2",
4
4
  "description": "Type-safe Contentful REST API client with caching and rate limiting for Next.js applications",
5
5
  "repository": {
6
6
  "type": "git",
@@ -68,7 +68,7 @@
68
68
  "next": ">=15.5.0 <17"
69
69
  },
70
70
  "devDependencies": {
71
- "@biomejs/biome": "^2.5.9",
71
+ "@biomejs/biome": "^2.5.10",
72
72
  "@types/node": "^26.2.0",
73
73
  "next": "^16.3.2",
74
74
  "typescript": "^7.0.2",