@se-studio/contentful-rest-api 1.28.2 → 1.28.3
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 +8 -0
- package/README.md +3 -1
- package/dist/client.d.ts +4 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +52 -12
- package/dist/client.js.map +1 -1
- package/dist/navigation/linkIndex.d.ts +1 -1
- package/dist/navigation/linkIndex.js +1 -1
- package/dist/navigation/registry.d.ts +1 -1
- package/dist/navigation/registry.js +1 -1
- package/dist/navigation/requestCache.d.ts +14 -1
- package/dist/navigation/requestCache.d.ts.map +1 -1
- package/dist/navigation/requestCache.js +47 -12
- package/dist/navigation/requestCache.js.map +1 -1
- package/dist/telemetry/originFetch.d.ts +36 -0
- package/dist/telemetry/originFetch.d.ts.map +1 -0
- package/dist/telemetry/originFetch.js +157 -0
- package/dist/telemetry/originFetch.js.map +1 -0
- package/dist/telemetry/queryLog.d.ts +3 -0
- package/dist/telemetry/queryLog.d.ts.map +1 -1
- package/dist/telemetry/queryLog.js +1 -0
- package/dist/telemetry/queryLog.js.map +1 -1
- package/dist/utils/rate-limit-store.d.ts +4 -0
- package/dist/utils/rate-limit-store.d.ts.map +1 -1
- package/dist/utils/rate-limit-store.js +24 -0
- package/dist/utils/rate-limit-store.js.map +1 -1
- package/dist/utils/retry.d.ts.map +1 -1
- package/dist/utils/retry.js +9 -0
- package/dist/utils/retry.js.map +1 -1
- package/docs/llms.md +10 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @se-studio/contentful-rest-api
|
|
2
2
|
|
|
3
|
+
## 1.28.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 9c18b9c: Keep per-render flat-nav cache tags (fix homepage ISR pin) while restoring build-time Contentful dedupe: joiners await an in-flight fetch, then call `fetch()` with the same URL/headers/`next` options so Next's data cache records their tags.
|
|
8
|
+
|
|
9
|
+
Tag each `[CMS query]` as `cache: hit|miss|skip-miss` from undici `request:create` **to Contentful hosts only** (Vercel data-cache HTTP is not origin). `skip-miss` is a skipped limiter fetch that still hit Contentful. During `next build` only (`NEXT_PHASE=phase-production-build`), skip the Contentful rate limiter for a bounded set of URLs that already completed an ok **known-cacheable** fetch (`cache: 'force-cache'`, or `next.revalidate > 0`, or `next.revalidate === false`) so follower `fetch()` hits do not consume origin slots. Unset `cache` with no such revalidate, `revalidate: 0`, runtime, `next dev`, and `cache: 'no-store'` always `acquire()`. Skipped requests still wait out a 429 pause (`waitIfPaused` is optional on `RateLimitStore`). If a skipped fetch is a Contentful miss, drop that URL from the skip set for the rest of the build.
|
|
10
|
+
|
|
3
11
|
## 1.28.2
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -492,6 +492,8 @@ const page = await contentfulPageRest(
|
|
|
492
492
|
|
|
493
493
|
## Rate Limiting
|
|
494
494
|
|
|
495
|
+
The shared Preview/Delivery limiter always `acquire()`s at runtime, in `next dev`, and unless the fetch is **known-cacheable**. During `next build` (`NEXT_PHASE=phase-production-build`) only, a bounded set of URLs that already completed an ok known-cacheable fetch may skip `acquire()` so Next data-cache hits from follower `fetch()` calls do not consume origin slots. Known-cacheable means `cache: 'force-cache'`, or `next.revalidate` greater than 0, or `next.revalidate === false`. Unset `cache` with no such revalidate, `revalidate: 0`, and `cache: 'no-store'` always `acquire()`. Skipped requests still `waitIfPaused()` so a 429 pause applies without consuming a slot. **Custom `RateLimitStore` implementations that omit `waitIfPaused` skip that 429 wait** (they still `pause()` for acquired requests). If a skipped fetch is a Contentful origin miss (body over 2 MB, or the data-cache entry not written yet), that URL is dropped from the skip set and is never skipped again for the rest of the build, and `[CMS query]` logs `cache: "skip-miss"` (not `"miss"`). `[CMS query]` `cache: hit|miss|skip-miss` counts only undici requests to `*.contentful.com` hosts so Vercel data-cache HTTP is not logged as origin. Each SSG worker logs once: `[CMS rate-limit] skip acquire NEXT_PHASE=phase-production-build pid=…`.
|
|
496
|
+
|
|
495
497
|
Use the built-in rate limiter to control request rates:
|
|
496
498
|
|
|
497
499
|
```typescript
|
|
@@ -582,7 +584,7 @@ interface CacheConfig {
|
|
|
582
584
|
|
|
583
585
|
| Variable | Output |
|
|
584
586
|
|----------|--------|
|
|
585
|
-
| `LOG_CMS_QUERIES=1` | Structured query logs: operation, slug, payload size, URL (`
|
|
587
|
+
| `LOG_CMS_QUERIES=1` | Structured query logs: operation, slug, payload size, URL, `cache` (`hit` = Next data-cache, `miss` = outbound Contentful HTTP). Origin (`miss`) is the Contentful-cost metric; logged lines also include follower `fetch()` hits. |
|
|
586
588
|
| `LOG_CMS_FETCH=1` | Raw Contentful URLs before each fetch (used by smoke tests) |
|
|
587
589
|
| `LOG_CMS=1` | Conversion/resolution diagnostics and revalidation traces |
|
|
588
590
|
|
package/dist/client.d.ts
CHANGED
|
@@ -70,6 +70,10 @@ export declare class ContentfulFetchClient {
|
|
|
70
70
|
private readonly isPreview;
|
|
71
71
|
private readonly retryConfig;
|
|
72
72
|
constructor(config: ContentfulConfig, preview?: boolean);
|
|
73
|
+
private contentfulSkipOptions;
|
|
74
|
+
private acquireOrWaitForContentful;
|
|
75
|
+
private recordLimiterSkipOutcome;
|
|
76
|
+
private cmsQueryCacheStatus;
|
|
73
77
|
/**
|
|
74
78
|
* Fetches entries from Contentful with proactive rate limiting
|
|
75
79
|
* and automatic retry on rate limit errors.
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,sEAAsE;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** biome-ignore-all lint/suspicious/noExplicitAny: Any ok for now! */
|
|
2
|
-
import {
|
|
2
|
+
import { banContentfulUrlFromLimiterSkip, fetchTrackingContentfulOrigin, markContentfulUrlFetched, shouldAcquireContentfulRateLimit, } from './telemetry/originFetch.js';
|
|
3
|
+
import { logCmsQuery, readResponseBodyWithSize, } from './telemetry/queryLog.js';
|
|
3
4
|
import { AuthenticationError, ContentfulError, EntryNotFoundError, RateLimitError, ValidationError, } from './utils/errors.js';
|
|
4
5
|
import { calculateBackoffDelay, getRateLimiter, getRateLimitPauseSeconds, getRetryConfig, } from './utils/retry.js';
|
|
5
6
|
/**
|
|
@@ -83,6 +84,26 @@ export class ContentfulFetchClient {
|
|
|
83
84
|
this.rateLimiter = getRateLimiter(preview);
|
|
84
85
|
this.retryConfig = getRetryConfig(preview);
|
|
85
86
|
}
|
|
87
|
+
contentfulSkipOptions(options) {
|
|
88
|
+
return { cache: options?.cache, next: options?.next };
|
|
89
|
+
}
|
|
90
|
+
async acquireOrWaitForContentful(url, options) {
|
|
91
|
+
const skipOptions = this.contentfulSkipOptions(options);
|
|
92
|
+
if (shouldAcquireContentfulRateLimit(url, skipOptions)) {
|
|
93
|
+
await this.rateLimiter.acquire();
|
|
94
|
+
return 'acquired';
|
|
95
|
+
}
|
|
96
|
+
await this.rateLimiter.waitIfPaused();
|
|
97
|
+
return 'skipped';
|
|
98
|
+
}
|
|
99
|
+
recordLimiterSkipOutcome(url, skipped, cache) {
|
|
100
|
+
if (skipped && cache === 'miss') {
|
|
101
|
+
banContentfulUrlFromLimiterSkip(url);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
cmsQueryCacheStatus(skipped, cache) {
|
|
105
|
+
return skipped && cache === 'miss' ? 'skip-miss' : cache;
|
|
106
|
+
}
|
|
86
107
|
/**
|
|
87
108
|
* Fetches entries from Contentful with proactive rate limiting
|
|
88
109
|
* and automatic retry on rate limit errors.
|
|
@@ -106,17 +127,23 @@ export class ContentfulFetchClient {
|
|
|
106
127
|
};
|
|
107
128
|
for (let attempt = 0; attempt <= this.retryConfig.maxRetries; attempt++) {
|
|
108
129
|
try {
|
|
109
|
-
|
|
110
|
-
await this.rateLimiter.acquire();
|
|
130
|
+
const limiterSkip = await this.acquireOrWaitForContentful(url, options);
|
|
111
131
|
if (process.env.LOG_CMS_FETCH) {
|
|
112
132
|
console.log(`[CMS fetch] ${url}`);
|
|
113
133
|
}
|
|
114
134
|
const fetchStart = performance.now();
|
|
115
|
-
const response = await
|
|
135
|
+
const { response, cache } = await fetchTrackingContentfulOrigin(url, fetchOptions);
|
|
116
136
|
const fetchMs = Math.round(performance.now() - fetchStart);
|
|
137
|
+
this.recordLimiterSkipOutcome(url, limiterSkip === 'skipped', cache);
|
|
117
138
|
if (response.ok) {
|
|
139
|
+
markContentfulUrlFetched(url, this.contentfulSkipOptions(options));
|
|
118
140
|
const { bytes, text } = await readResponseBodyWithSize(response);
|
|
119
|
-
logCmsQuery({
|
|
141
|
+
logCmsQuery({
|
|
142
|
+
url,
|
|
143
|
+
bytes,
|
|
144
|
+
ms: fetchMs,
|
|
145
|
+
cache: this.cmsQueryCacheStatus(limiterSkip === 'skipped', cache),
|
|
146
|
+
});
|
|
120
147
|
return JSON.parse(text);
|
|
121
148
|
}
|
|
122
149
|
// Handle rate limiting (429) with automatic retry
|
|
@@ -166,16 +193,23 @@ export class ContentfulFetchClient {
|
|
|
166
193
|
};
|
|
167
194
|
for (let attempt = 0; attempt <= this.retryConfig.maxRetries; attempt++) {
|
|
168
195
|
try {
|
|
169
|
-
await this.
|
|
196
|
+
const limiterSkip = await this.acquireOrWaitForContentful(url, options);
|
|
170
197
|
if (process.env.LOG_CMS_FETCH) {
|
|
171
198
|
console.log(`[CMS fetch] ${url}`);
|
|
172
199
|
}
|
|
173
200
|
const fetchStart = performance.now();
|
|
174
|
-
const response = await
|
|
201
|
+
const { response, cache } = await fetchTrackingContentfulOrigin(url, fetchOptions);
|
|
175
202
|
const fetchMs = Math.round(performance.now() - fetchStart);
|
|
203
|
+
this.recordLimiterSkipOutcome(url, limiterSkip === 'skipped', cache);
|
|
176
204
|
if (response.ok) {
|
|
205
|
+
markContentfulUrlFetched(url, this.contentfulSkipOptions(options));
|
|
177
206
|
const { bytes, text } = await readResponseBodyWithSize(response);
|
|
178
|
-
logCmsQuery({
|
|
207
|
+
logCmsQuery({
|
|
208
|
+
url,
|
|
209
|
+
bytes,
|
|
210
|
+
ms: fetchMs,
|
|
211
|
+
cache: this.cmsQueryCacheStatus(limiterSkip === 'skipped', cache),
|
|
212
|
+
});
|
|
179
213
|
return JSON.parse(text);
|
|
180
214
|
}
|
|
181
215
|
if (response.status === 429 && attempt < this.retryConfig.maxRetries) {
|
|
@@ -217,17 +251,23 @@ export class ContentfulFetchClient {
|
|
|
217
251
|
};
|
|
218
252
|
for (let attempt = 0; attempt <= this.retryConfig.maxRetries; attempt++) {
|
|
219
253
|
try {
|
|
220
|
-
|
|
221
|
-
await this.rateLimiter.acquire();
|
|
254
|
+
const limiterSkip = await this.acquireOrWaitForContentful(url, options);
|
|
222
255
|
if (process.env.LOG_CMS_FETCH) {
|
|
223
256
|
console.log(`[CMS fetch] ${url}`);
|
|
224
257
|
}
|
|
225
258
|
const fetchStart = performance.now();
|
|
226
|
-
const response = await
|
|
259
|
+
const { response, cache } = await fetchTrackingContentfulOrigin(url, fetchOptions);
|
|
227
260
|
const fetchMs = Math.round(performance.now() - fetchStart);
|
|
261
|
+
this.recordLimiterSkipOutcome(url, limiterSkip === 'skipped', cache);
|
|
228
262
|
if (response.ok) {
|
|
263
|
+
markContentfulUrlFetched(url, this.contentfulSkipOptions(options));
|
|
229
264
|
const { bytes, text } = await readResponseBodyWithSize(response);
|
|
230
|
-
logCmsQuery({
|
|
265
|
+
logCmsQuery({
|
|
266
|
+
url,
|
|
267
|
+
bytes,
|
|
268
|
+
ms: fetchMs,
|
|
269
|
+
cache: this.cmsQueryCacheStatus(limiterSkip === 'skipped', cache),
|
|
270
|
+
});
|
|
231
271
|
return JSON.parse(text);
|
|
232
272
|
}
|
|
233
273
|
// Return null for 404 (asset not found)
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import type { InternalLinkIndex } from './types';
|
|
|
4
4
|
/**
|
|
5
5
|
* Fetches all routable entry links and builds an entry-id keyed index for navigation assembly.
|
|
6
6
|
* Includes link wrapper entries keyed by wrapper id and target id.
|
|
7
|
-
* Results are deduped per request
|
|
7
|
+
* Results are deduped per request (including in-flight callers in the same scope).
|
|
8
8
|
*/
|
|
9
9
|
export declare function getInternalLinkIndex(context: BaseConverterContext, config: ContentfulConfig, options: FetchOptions): Promise<InternalLinkIndex>;
|
|
10
10
|
//# sourceMappingURL=linkIndex.d.ts.map
|
|
@@ -22,7 +22,7 @@ function buildInternalLinkIndexFromBundle(bundle) {
|
|
|
22
22
|
/**
|
|
23
23
|
* Fetches all routable entry links and builds an entry-id keyed index for navigation assembly.
|
|
24
24
|
* Includes link wrapper entries keyed by wrapper id and target id.
|
|
25
|
-
* Results are deduped per request
|
|
25
|
+
* Results are deduped per request (including in-flight callers in the same scope).
|
|
26
26
|
*/
|
|
27
27
|
export function getInternalLinkIndex(context, config, options) {
|
|
28
28
|
const key = buildFlatNavRequestCacheKey('linkIndex', config, options);
|
|
@@ -9,7 +9,7 @@ export declare function buildNavItemRecord(context: ConverterContext, entry: Ent
|
|
|
9
9
|
export declare function buildNavigationRootRecord(entry: Entry<BaseNavigationSkeleton, DefaultChainModifier, string>): NavigationRootRecord | undefined;
|
|
10
10
|
/**
|
|
11
11
|
* Fetches all navigation and navigationItem entries as flat records for in-memory assembly.
|
|
12
|
-
* Results are deduped per request
|
|
12
|
+
* Results are deduped per request (including in-flight callers in the same scope).
|
|
13
13
|
*/
|
|
14
14
|
export declare function getNavigationRegistry(context: BaseConverterContext, config: ContentfulConfig, options: FetchOptions): Promise<NavigationRegistry>;
|
|
15
15
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -124,7 +124,7 @@ async function fetchNavigationRegistry(context, config, options) {
|
|
|
124
124
|
}
|
|
125
125
|
/**
|
|
126
126
|
* Fetches all navigation and navigationItem entries as flat records for in-memory assembly.
|
|
127
|
-
* Results are deduped per request
|
|
127
|
+
* Results are deduped per request (including in-flight callers in the same scope).
|
|
128
128
|
*/
|
|
129
129
|
export function getNavigationRegistry(context, config, options) {
|
|
130
130
|
const key = buildFlatNavRequestCacheKey('registry', config, options);
|
|
@@ -12,7 +12,20 @@ export declare function buildFlatNavRequestCacheKey(kind: FlatNavRequestCacheKin
|
|
|
12
12
|
export declare function buildListingLinkRequestCacheKey(contentType: ListingLinkContentType, config: ContentfulConfig, options: FetchOptions): string;
|
|
13
13
|
export declare function withListingLinkRequestMemo<T>(contentType: ListingLinkContentType, config: ContentfulConfig, options: FetchOptions, fetch: () => Promise<T>): Promise<T>;
|
|
14
14
|
/**
|
|
15
|
-
* Dedupes flat-nav fetches
|
|
15
|
+
* Dedupes flat-nav fetches:
|
|
16
|
+
* - Within a request (AsyncLocalStorage), including in-flight promises for concurrent
|
|
17
|
+
* callers in the same scope. Sequential callers reuse the resolved value.
|
|
18
|
+
* - Across concurrent prerenders via a process-wide in-flight map. A follower awaits
|
|
19
|
+
* the leader, then calls `fetch()` itself. Next.js only records `next.tags` /
|
|
20
|
+
* `revalidate` for fetches the current render makes; `cacheTag()` only works inside
|
|
21
|
+
* `'use cache'`. The follower `fetch()` must use the identical URL, headers, and
|
|
22
|
+
* `next` options as the leader so Next's data cache key matches (R6.6: a memo layer
|
|
23
|
+
* must still carry the caller's tags).
|
|
24
|
+
*
|
|
25
|
+
* If the data-cache write is not visible when the leader settles, the follower's
|
|
26
|
+
* `fetch()` is a cache-miss fallback (another Contentful request) but still records
|
|
27
|
+
* tags. A rejected leader is not reused: every waiting follower still `fetch()`es
|
|
28
|
+
* independently (they retry together; they do not serialise).
|
|
16
29
|
*/
|
|
17
30
|
export declare function memoizeFlatNavFetch<T>(key: string, fetch: () => Promise<T>): Promise<T>;
|
|
18
31
|
//# sourceMappingURL=requestCache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestCache.d.ts","sourceRoot":"","sources":["../../src/navigation/requestCache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"requestCache.d.ts","sourceRoot":"","sources":["../../src/navigation/requestCache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAS/D;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAMzD;AAED,MAAM,MAAM,uBAAuB,GAAG,UAAU,GAAG,WAAW,GAAG,eAAe,CAAC;AAEjF,MAAM,MAAM,sBAAsB,GAC9B,MAAM,GACN,SAAS,GACT,aAAa,GACb,KAAK,GACL,QAAQ,GACR,YAAY,GACZ,SAAS,GACT,cAAc,CAAC;AAEnB,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,uBAAuB,EAC7B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,YAAY,GACpB,MAAM,CAUR;AAED,4HAA4H;AAC5H,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,sBAAsB,EACnC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,YAAY,GACpB,MAAM,CASR;AAED,wBAAgB,0BAA0B,CAAC,CAAC,EAC1C,WAAW,EAAE,sBAAsB,EACnC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,CAAC,CAAC,CAGZ;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA+CvF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
2
|
import { buildFlatNavigationCacheOptions } from './cacheOptions.js';
|
|
3
3
|
const requestStorage = new AsyncLocalStorage();
|
|
4
|
+
/** Process-wide in-flight map: followers await the leader, then `fetch()` themselves. */
|
|
4
5
|
const inFlight = new Map();
|
|
5
6
|
/**
|
|
6
7
|
* Runs `fn` with a per-request flat-navigation result cache.
|
|
@@ -41,7 +42,20 @@ export function withListingLinkRequestMemo(contentType, config, options, fetch)
|
|
|
41
42
|
return memoizeFlatNavFetch(key, fetch);
|
|
42
43
|
}
|
|
43
44
|
/**
|
|
44
|
-
* Dedupes flat-nav fetches
|
|
45
|
+
* Dedupes flat-nav fetches:
|
|
46
|
+
* - Within a request (AsyncLocalStorage), including in-flight promises for concurrent
|
|
47
|
+
* callers in the same scope. Sequential callers reuse the resolved value.
|
|
48
|
+
* - Across concurrent prerenders via a process-wide in-flight map. A follower awaits
|
|
49
|
+
* the leader, then calls `fetch()` itself. Next.js only records `next.tags` /
|
|
50
|
+
* `revalidate` for fetches the current render makes; `cacheTag()` only works inside
|
|
51
|
+
* `'use cache'`. The follower `fetch()` must use the identical URL, headers, and
|
|
52
|
+
* `next` options as the leader so Next's data cache key matches (R6.6: a memo layer
|
|
53
|
+
* must still carry the caller's tags).
|
|
54
|
+
*
|
|
55
|
+
* If the data-cache write is not visible when the leader settles, the follower's
|
|
56
|
+
* `fetch()` is a cache-miss fallback (another Contentful request) but still records
|
|
57
|
+
* tags. A rejected leader is not reused: every waiting follower still `fetch()`es
|
|
58
|
+
* independently (they retry together; they do not serialise).
|
|
45
59
|
*/
|
|
46
60
|
export function memoizeFlatNavFetch(key, fetch) {
|
|
47
61
|
const requestCache = requestStorage.getStore();
|
|
@@ -49,18 +63,39 @@ export function memoizeFlatNavFetch(key, fetch) {
|
|
|
49
63
|
return Promise.resolve(requestCache.get(key));
|
|
50
64
|
}
|
|
51
65
|
const existing = inFlight.get(key);
|
|
52
|
-
|
|
53
|
-
|
|
66
|
+
const promise = (async () => {
|
|
67
|
+
if (existing) {
|
|
68
|
+
try {
|
|
69
|
+
await existing;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// Rejected leader: this render still fetch()es so tags are recorded.
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return fetch();
|
|
76
|
+
})();
|
|
77
|
+
if (!existing) {
|
|
78
|
+
inFlight.set(key, promise);
|
|
79
|
+
void promise
|
|
80
|
+
.finally(() => {
|
|
81
|
+
if (inFlight.get(key) === promise) {
|
|
82
|
+
inFlight.delete(key);
|
|
83
|
+
}
|
|
84
|
+
})
|
|
85
|
+
.catch(() => {
|
|
86
|
+
// Caller observes the rejection on the returned promise.
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
if (requestCache) {
|
|
90
|
+
requestCache.set(key, promise);
|
|
91
|
+
void promise.then((result) => {
|
|
92
|
+
requestCache.set(key, result);
|
|
93
|
+
}, () => {
|
|
94
|
+
if (requestCache.get(key) === promise) {
|
|
95
|
+
requestCache.delete(key);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
54
98
|
}
|
|
55
|
-
const promise = fetch()
|
|
56
|
-
.then((result) => {
|
|
57
|
-
requestStorage.getStore()?.set(key, result);
|
|
58
|
-
return result;
|
|
59
|
-
})
|
|
60
|
-
.finally(() => {
|
|
61
|
-
inFlight.delete(key);
|
|
62
|
-
});
|
|
63
|
-
inFlight.set(key, promise);
|
|
64
99
|
return promise;
|
|
65
100
|
}
|
|
66
101
|
//# sourceMappingURL=requestCache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestCache.js","sourceRoot":"","sources":["../../src/navigation/requestCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,+BAA+B,EAAE,MAAM,gBAAgB,CAAC;AAIjE,MAAM,cAAc,GAAG,IAAI,iBAAiB,EAAuB,CAAC;AACpE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;AAErD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAI,EAAW;IACpD,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;IACzC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;IACD,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3C,CAAC;AAcD,MAAM,UAAU,2BAA2B,CACzC,IAA6B,EAC7B,MAAwB,EACxB,OAAqB;IAErB,MAAM,YAAY,GAAG,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAC9D,OAAO;QACL,IAAI;QACJ,MAAM,CAAC,OAAO;QACd,MAAM,CAAC,WAAW,IAAI,QAAQ;QAC9B,MAAM,CAAC,IAAI,IAAI,EAAE;QACjB,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;QAC7C,YAAY,CAAC,MAAM,IAAI,EAAE;KAC1B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,4HAA4H;AAC5H,MAAM,UAAU,+BAA+B,CAC7C,WAAmC,EACnC,MAAwB,EACxB,OAAqB;IAErB,OAAO;QACL,GAAG,WAAW,OAAO;QACrB,MAAM,CAAC,OAAO;QACd,MAAM,CAAC,WAAW,IAAI,QAAQ;QAC9B,MAAM,CAAC,IAAI,IAAI,EAAE;QACjB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;QACxC,OAAO,CAAC,MAAM,IAAI,EAAE;KACrB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,WAAmC,EACnC,MAAwB,EACxB,OAAqB,EACrB,KAAuB;IAEvB,MAAM,GAAG,GAAG,+BAA+B,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1E,OAAO,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACzC,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"requestCache.js","sourceRoot":"","sources":["../../src/navigation/requestCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export declare const CONTENTFUL_BUILD_COMPLETED_URL_LIMIT = 512;
|
|
2
|
+
export declare function isContentfulRequestHost(origin: string): boolean;
|
|
3
|
+
export declare function isContentfulProductionBuildPhase(): boolean;
|
|
4
|
+
export interface ContentfulRateLimitSkipOptions {
|
|
5
|
+
cache?: 'force-cache' | 'no-store';
|
|
6
|
+
next?: {
|
|
7
|
+
revalidate?: number | false;
|
|
8
|
+
tags?: string[];
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Next only treats a fetch as data-cacheable when `cache` is `force-cache`, or
|
|
13
|
+
* `next.revalidate` is a positive number, or `next.revalidate` is `false`.
|
|
14
|
+
* Unset `cache` with no such revalidate, `revalidate: 0`, and `no-store` are not
|
|
15
|
+
* known-cacheable.
|
|
16
|
+
*/
|
|
17
|
+
export declare function isKnownCacheableFetch(options?: ContentfulRateLimitSkipOptions): boolean;
|
|
18
|
+
export declare function shouldAcquireContentfulRateLimit(url: string, options?: ContentfulRateLimitSkipOptions): boolean;
|
|
19
|
+
export declare function markContentfulUrlFetched(url: string, options?: ContentfulRateLimitSkipOptions): void;
|
|
20
|
+
/**
|
|
21
|
+
* A skipped fetch reached Contentful (data-cache miss, e.g. body over 2 MB).
|
|
22
|
+
* Drop it from the skip set and never skip it again this build.
|
|
23
|
+
*/
|
|
24
|
+
export declare function banContentfulUrlFromLimiterSkip(url: string): void;
|
|
25
|
+
export declare function getContentfulOriginTally(): {
|
|
26
|
+
origin: number;
|
|
27
|
+
hit: number;
|
|
28
|
+
};
|
|
29
|
+
export declare function fetchTrackingContentfulOrigin(url: string, init: RequestInit): Promise<{
|
|
30
|
+
response: Response;
|
|
31
|
+
cache: 'hit' | 'miss';
|
|
32
|
+
}>;
|
|
33
|
+
/** Test helper: simulate undici seeing a Contentful socket for the current fetch scope. */
|
|
34
|
+
export declare function markContentfulOriginNetworkForTests(): void;
|
|
35
|
+
export declare function resetContentfulFetchTrackingForTests(): void;
|
|
36
|
+
//# sourceMappingURL=originFetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"originFetch.d.ts","sourceRoot":"","sources":["../../src/telemetry/originFetch.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,oCAAoC,MAAM,CAAC;AAcxD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAM/D;AA8BD,wBAAgB,gCAAgC,IAAI,OAAO,CAE1D;AAED,MAAM,WAAW,8BAA8B;IAC7C,KAAK,CAAC,EAAE,aAAa,GAAG,UAAU,CAAC;IACnC,IAAI,CAAC,EAAE;QACL,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,8BAA8B,GAAG,OAAO,CASvF;AAYD,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,8BAA8B,GACvC,OAAO,CAeT;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,8BAA8B,GACvC,IAAI,CAmBN;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAGjE;AAED,wBAAgB,wBAAwB,IAAI;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAE1E;AAED,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAA;CAAE,CAAC,CAUxD;AAED,2FAA2F;AAC3F,wBAAgB,mCAAmC,IAAI,IAAI,CAK1D;AAED,wBAAgB,oCAAoC,IAAI,IAAI,CAM3D"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
import { subscribe } from 'node:diagnostics_channel';
|
|
3
|
+
const originScope = new AsyncLocalStorage();
|
|
4
|
+
/**
|
|
5
|
+
* URLs that completed an ok known-cacheable fetch during `next build`. Bounded LRU
|
|
6
|
+
* so the set cannot grow without limit. Runtime / `next dev` / unknown cache mode
|
|
7
|
+
* never skip `acquire()` (Preview 429 pause must still apply).
|
|
8
|
+
*/
|
|
9
|
+
const completedUrls = new Map();
|
|
10
|
+
/** URLs whose skipped fetch missed the data cache; never skip again this build. */
|
|
11
|
+
const skipDeniedUrls = new Set();
|
|
12
|
+
export const CONTENTFUL_BUILD_COMPLETED_URL_LIMIT = 512;
|
|
13
|
+
let originMissCount = 0;
|
|
14
|
+
let cacheHitCount = 0;
|
|
15
|
+
let loggedLimiterSkip = false;
|
|
16
|
+
function hostnameFromUndiciOrigin(origin) {
|
|
17
|
+
try {
|
|
18
|
+
const value = origin.includes('://') ? origin : `https://${origin}`;
|
|
19
|
+
return new URL(value).hostname;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export function isContentfulRequestHost(origin) {
|
|
26
|
+
const hostname = hostnameFromUndiciOrigin(origin);
|
|
27
|
+
if (!hostname) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
return hostname === 'contentful.com' || hostname.endsWith('.contentful.com');
|
|
31
|
+
}
|
|
32
|
+
function originFromUndiciMessage(message) {
|
|
33
|
+
if (!message || typeof message !== 'object') {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
const record = message;
|
|
37
|
+
if (typeof record.request?.origin === 'string') {
|
|
38
|
+
return record.request.origin;
|
|
39
|
+
}
|
|
40
|
+
if (typeof record.origin === 'string') {
|
|
41
|
+
return record.origin;
|
|
42
|
+
}
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
function onUndiciRequestCreate(message) {
|
|
46
|
+
const scope = originScope.getStore();
|
|
47
|
+
if (!scope) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const origin = originFromUndiciMessage(message);
|
|
51
|
+
if (!origin || !isContentfulRequestHost(origin)) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
scope.hitNetwork = true;
|
|
55
|
+
}
|
|
56
|
+
subscribe('undici:request:create', onUndiciRequestCreate);
|
|
57
|
+
export function isContentfulProductionBuildPhase() {
|
|
58
|
+
return process.env.NEXT_PHASE === 'phase-production-build';
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Next only treats a fetch as data-cacheable when `cache` is `force-cache`, or
|
|
62
|
+
* `next.revalidate` is a positive number, or `next.revalidate` is `false`.
|
|
63
|
+
* Unset `cache` with no such revalidate, `revalidate: 0`, and `no-store` are not
|
|
64
|
+
* known-cacheable.
|
|
65
|
+
*/
|
|
66
|
+
export function isKnownCacheableFetch(options) {
|
|
67
|
+
if (options?.cache === 'no-store') {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
if (options?.cache === 'force-cache') {
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
const revalidate = options?.next?.revalidate;
|
|
74
|
+
return revalidate === false || (typeof revalidate === 'number' && revalidate > 0);
|
|
75
|
+
}
|
|
76
|
+
function logLimiterSkipOnce() {
|
|
77
|
+
if (loggedLimiterSkip) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
loggedLimiterSkip = true;
|
|
81
|
+
console.log(`[CMS rate-limit] skip acquire NEXT_PHASE=${process.env.NEXT_PHASE ?? ''} pid=${process.pid}`);
|
|
82
|
+
}
|
|
83
|
+
export function shouldAcquireContentfulRateLimit(url, options) {
|
|
84
|
+
if (!isContentfulProductionBuildPhase()) {
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
if (!isKnownCacheableFetch(options)) {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
if (skipDeniedUrls.has(url)) {
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
if (completedUrls.has(url)) {
|
|
94
|
+
logLimiterSkipOnce();
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
export function markContentfulUrlFetched(url, options) {
|
|
100
|
+
if (!isContentfulProductionBuildPhase()) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
if (!isKnownCacheableFetch(options)) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (skipDeniedUrls.has(url)) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (completedUrls.has(url)) {
|
|
110
|
+
completedUrls.delete(url);
|
|
111
|
+
}
|
|
112
|
+
else if (completedUrls.size >= CONTENTFUL_BUILD_COMPLETED_URL_LIMIT) {
|
|
113
|
+
const oldest = completedUrls.keys().next().value;
|
|
114
|
+
if (oldest !== undefined) {
|
|
115
|
+
completedUrls.delete(oldest);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
completedUrls.set(url, true);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* A skipped fetch reached Contentful (data-cache miss, e.g. body over 2 MB).
|
|
122
|
+
* Drop it from the skip set and never skip it again this build.
|
|
123
|
+
*/
|
|
124
|
+
export function banContentfulUrlFromLimiterSkip(url) {
|
|
125
|
+
completedUrls.delete(url);
|
|
126
|
+
skipDeniedUrls.add(url);
|
|
127
|
+
}
|
|
128
|
+
export function getContentfulOriginTally() {
|
|
129
|
+
return { origin: originMissCount, hit: cacheHitCount };
|
|
130
|
+
}
|
|
131
|
+
export async function fetchTrackingContentfulOrigin(url, init) {
|
|
132
|
+
const flag = { hitNetwork: false };
|
|
133
|
+
const response = await originScope.run(flag, () => fetch(url, init));
|
|
134
|
+
const cache = flag.hitNetwork ? 'miss' : 'hit';
|
|
135
|
+
if (cache === 'miss') {
|
|
136
|
+
originMissCount += 1;
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
cacheHitCount += 1;
|
|
140
|
+
}
|
|
141
|
+
return { response, cache };
|
|
142
|
+
}
|
|
143
|
+
/** Test helper: simulate undici seeing a Contentful socket for the current fetch scope. */
|
|
144
|
+
export function markContentfulOriginNetworkForTests() {
|
|
145
|
+
const scope = originScope.getStore();
|
|
146
|
+
if (scope) {
|
|
147
|
+
scope.hitNetwork = true;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
export function resetContentfulFetchTrackingForTests() {
|
|
151
|
+
completedUrls.clear();
|
|
152
|
+
skipDeniedUrls.clear();
|
|
153
|
+
originMissCount = 0;
|
|
154
|
+
cacheHitCount = 0;
|
|
155
|
+
loggedLimiterSkip = false;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=originFetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"originFetch.js","sourceRoot":"","sources":["../../src/telemetry/originFetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
export type CmsQueryCacheStatus = 'hit' | 'miss' | 'skip-miss';
|
|
1
2
|
export interface CmsQueryLogEntry {
|
|
2
3
|
url: string;
|
|
3
4
|
operation: string;
|
|
4
5
|
identifier?: string;
|
|
5
6
|
bytes: number;
|
|
6
7
|
ms: number;
|
|
8
|
+
/** `miss` = outbound Contentful HTTP; `hit` = Next data cache; `skip-miss` = limiter skipped then origin. */
|
|
9
|
+
cache?: CmsQueryCacheStatus;
|
|
7
10
|
}
|
|
8
11
|
export declare function isCmsQueryLoggingEnabled(): boolean;
|
|
9
12
|
/** Format byte count as a compact human-readable size (e.g. 23.5k, 1.2M). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryLog.d.ts","sourceRoot":"","sources":["../../src/telemetry/queryLog.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"queryLog.d.ts","sourceRoot":"","sources":["../../src/telemetry/queryLog.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,MAAM,GAAG,WAAW,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,6GAA6G;IAC7G,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC7B;AAED,wBAAgB,wBAAwB,IAAI,OAAO,CAElD;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQvD;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,GAAG,YAAY,CAAC,GACvD,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,GAAG,YAAY,CAAC,CAAC,GAC5D,IAAI,CAwBN;AAED,iEAAiE;AACjE,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAc1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryLog.js","sourceRoot":"","sources":["../../src/telemetry/queryLog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"queryLog.js","sourceRoot":"","sources":["../../src/telemetry/queryLog.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ export interface RateLimitState {
|
|
|
5
5
|
export interface RateLimitStore {
|
|
6
6
|
reserve(intervalMs: number): Promise<void>;
|
|
7
7
|
pause(seconds: number): Promise<void>;
|
|
8
|
+
/** Optional: wait out a 429 pause without consuming a request slot. */
|
|
9
|
+
waitIfPaused?(): Promise<void>;
|
|
8
10
|
}
|
|
9
11
|
/** In-process store. Safe for concurrent callers in one process (mutex). */
|
|
10
12
|
export declare class MemoryRateLimitStore implements RateLimitStore {
|
|
@@ -12,6 +14,7 @@ export declare class MemoryRateLimitStore implements RateLimitStore {
|
|
|
12
14
|
private readonly mutex;
|
|
13
15
|
reserve(intervalMs: number): Promise<void>;
|
|
14
16
|
pause(seconds: number): Promise<void>;
|
|
17
|
+
waitIfPaused(): Promise<void>;
|
|
15
18
|
}
|
|
16
19
|
/**
|
|
17
20
|
* Cross-process store for Next SSG workers that share a tmp dir.
|
|
@@ -21,6 +24,7 @@ export declare class FileRateLimitStore implements RateLimitStore {
|
|
|
21
24
|
constructor(statePath: string);
|
|
22
25
|
reserve(intervalMs: number): Promise<void>;
|
|
23
26
|
pause(seconds: number): Promise<void>;
|
|
27
|
+
waitIfPaused(): Promise<void>;
|
|
24
28
|
}
|
|
25
29
|
export declare function defaultRateLimitStore(kind: 'delivery' | 'preview'): RateLimitStore;
|
|
26
30
|
//# sourceMappingURL=rate-limit-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit-store.d.ts","sourceRoot":"","sources":["../../src/utils/rate-limit-store.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,cAAc;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"rate-limit-store.d.ts","sourceRoot":"","sources":["../../src/utils/rate-limit-store.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,cAAc;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,uEAAuE;IACvE,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAgCD,4EAA4E;AAC5E,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IAEjC,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB/C;IAEK,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO1C;IAEK,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAQlC;CACF;AA+DD;;GAEG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAtC,YAA6B,SAAS,EAAE,MAAM,EAAI;IAE5C,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB/C;IAEK,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS1C;IAEK,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAWlC;CACF;AAID,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,cAAc,CAclF"}
|
|
@@ -22,6 +22,9 @@ function emptyState() {
|
|
|
22
22
|
function waitFromState(state, now) {
|
|
23
23
|
return Math.max(0, state.nextAvailableTime - now, state.pauseUntil - now);
|
|
24
24
|
}
|
|
25
|
+
function pauseWaitMs(state, now) {
|
|
26
|
+
return Math.max(0, state.pauseUntil - now);
|
|
27
|
+
}
|
|
25
28
|
/** In-process store. Safe for concurrent callers in one process (mutex). */
|
|
26
29
|
export class MemoryRateLimitStore {
|
|
27
30
|
state = emptyState();
|
|
@@ -51,6 +54,15 @@ export class MemoryRateLimitStore {
|
|
|
51
54
|
}
|
|
52
55
|
});
|
|
53
56
|
}
|
|
57
|
+
async waitIfPaused() {
|
|
58
|
+
while (true) {
|
|
59
|
+
const wait = await this.mutex.run(() => pauseWaitMs(this.state, Date.now()));
|
|
60
|
+
if (wait === 0) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
await sleep(wait);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
54
66
|
}
|
|
55
67
|
function readState(statePath) {
|
|
56
68
|
try {
|
|
@@ -152,6 +164,18 @@ export class FileRateLimitStore {
|
|
|
152
164
|
}
|
|
153
165
|
});
|
|
154
166
|
}
|
|
167
|
+
async waitIfPaused() {
|
|
168
|
+
while (true) {
|
|
169
|
+
const wait = await withFileLock(`${this.statePath}.lock`, () => {
|
|
170
|
+
const state = readState(this.statePath);
|
|
171
|
+
return pauseWaitMs(state, Date.now());
|
|
172
|
+
});
|
|
173
|
+
if (wait === 0) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
await sleep(wait);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
155
179
|
}
|
|
156
180
|
const FILE_STORE_CACHE = new Map();
|
|
157
181
|
export function defaultRateLimitStore(kind) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit-store.js","sourceRoot":"","sources":["../../src/utils/rate-limit-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClG,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,aAAa,GAAG,MAAM,CAAC;AAC7B,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;
|
|
1
|
+
{"version":3,"file":"rate-limit-store.js","sourceRoot":"","sources":["../../src/utils/rate-limit-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAmB5B;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC7B,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAaR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAyCzF;AASD;;;;;;;;;;;GAWG;AACH,qBAAa,WAAW;IACtB,wDAAwD;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,gCAAgC;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,6CAA6C;IAC7C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IAEvC,YACE,iBAAiB,EAAE,MAAM;IACzB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,GAAG,cAAc,EACvC,KAAK,CAAC,EAAE,cAAc,EAOvB;IAED;;OAEG;YACW,YAAY;IAgB1B;;;;;;OAMG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAU7B;IAED;;OAEG;IACH,cAAc,IAAI,MAAM,CAEvB;IAED;;;;;;OAMG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1C;
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAmB5B;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC7B,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAaR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAyCzF;AASD;;;;;;;;;;;GAWG;AACH,qBAAa,WAAW;IACtB,wDAAwD;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,gCAAgC;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,6CAA6C;IAC7C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IAEvC,YACE,iBAAiB,EAAE,MAAM;IACzB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,GAAG,cAAc,EACvC,KAAK,CAAC,EAAE,cAAc,EAOvB;IAED;;OAEG;YACW,YAAY;IAgB1B;;;;;;OAMG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAU7B;IAED;;OAEG;IACH,cAAc,IAAI,MAAM,CAEvB;IAED;;;;;;OAMG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1C;IAYD;;OAEG;IACH,aAAa,IAAI,MAAM,CAEtB;CACF;AA8BD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,CAEtE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAGjG;AAoBD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAE5D"}
|
package/dist/utils/retry.js
CHANGED
|
@@ -158,6 +158,15 @@ export class RateLimiter {
|
|
|
158
158
|
async pause(seconds) {
|
|
159
159
|
await this.store.pause(seconds);
|
|
160
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* Wait out a 429 pause without reserving a request slot.
|
|
163
|
+
* Used when a known-cacheable Next data-cache hit skips `acquire()`.
|
|
164
|
+
*
|
|
165
|
+
* @internal
|
|
166
|
+
*/
|
|
167
|
+
async waitIfPaused() {
|
|
168
|
+
await this.store.waitIfPaused?.();
|
|
169
|
+
}
|
|
161
170
|
/**
|
|
162
171
|
* Gets the current interval between requests in milliseconds
|
|
163
172
|
*/
|
package/dist/utils/retry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EACL,qBAAqB,EACrB,oBAAoB,GAErB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,oBAAoB,GAA0B;IAClD,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,IAAI,EAAE,WAAW;IAC/B,QAAQ,EAAE,KAAK,EAAE,aAAa;IAC9B,iBAAiB,EAAE,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAe,EACf,MAA6B,EAC7B,UAAmB;IAEnB,4CAA4C;IAC5C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,gCAAgC;IAChC,MAAM,gBAAgB,GAAG,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,iBAAiB,IAAI,OAAO,CAAC;IAEnF,2EAA2E;IAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,gBAAgB,CAAC;IAEhD,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,EAAoB,EAAE,MAAoB;IAC3E,MAAM,WAAW,GAA0B;QACzC,GAAG,oBAAoB;QACvB,GAAG,MAAM;KACV,CAAC;IAEF,IAAI,SAAkB,CAAC;IAEvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACnE,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,CAAC;YAElB,uCAAuC;YACvC,IAAI,OAAO,KAAK,WAAW,CAAC,UAAU,EAAE,CAAC;gBACvC,MAAM;YACR,CAAC;YAED,uCAAuC;YACvC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,qBAAqB,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;YAEtE,+BAA+B;YAC/B,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,QAAQ,KAAK,YAAY,EAAE,CAAC;gBAC7E,OAAO,CAAC,IAAI,CACV,iBAAiB,OAAO,GAAG,CAAC,IAAI,WAAW,CAAC,UAAU,UAAU,KAAK,IAAI,EACzE,KAAK,CACN,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,MAAM,SAAS,CAAC;AAClB,CAAC;AASD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,WAAW;IACtB,wDAAwD;IACvC,UAAU,CAAS;IACpC,gCAAgC;IACf,KAAK,GAAiB,EAAE,CAAC;IAC1C,6CAA6C;IACrC,UAAU,GAAG,KAAK,CAAC;IACV,KAAK,CAAiB;IAEvC,YACE,iBAAyB;IACzB,iEAAiE;IACjE,aAAuC,EACvC,KAAsB;QAEtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK;YACR,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ;gBAChD,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,oBAAoB,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY;QACxB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjC,KAAK,EAAE,OAAO,EAAE,CAAC;QACnB,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChD,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YAC7B,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CAAC,OAAe;QACzB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF;AAED,+EAA+E;AAC/E,gCAAgC;AAChC,+EAA+E;AAE/E;;GAEG;AACH,MAAM,sBAAsB,GAAG;IAC7B,+CAA+C;IAC/C,QAAQ,EAAE,EAAE;IACZ,8EAA8E;IAC9E,OAAO,EAAE,EAAE;CACH,CAAC;AAEX,MAAM,qBAAqB,GAA0B;IACnD,UAAU,EAAE,EAAE;IACd,YAAY,EAAE,IAAI;IAClB,QAAQ,EAAE,KAAK;IACf,iBAAiB,EAAE,CAAC;CACrB,CAAC;AAEF,MAAM,oBAAoB,GAA0B;IAClD,UAAU,EAAE,EAAE;IACd,YAAY,EAAE,IAAI;IAClB,QAAQ,EAAE,KAAK;IACf,iBAAiB,EAAE,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,OAAO,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,qBAAqB,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,UAA8B,EAAE,OAAgB;IACvF,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,mBAAmB,GAAG,IAAI,WAAW,CACzC,sBAAsB,CAAC,QAAQ,EAC/B,qBAAqB,CAAC,UAAU,CAAC,CAClC,CAAC;AAEF;;;GAGG;AACH,MAAM,kBAAkB,GAAG,IAAI,WAAW,CACxC,sBAAsB,CAAC,OAAO,EAC9B,qBAAqB,CAAC,SAAS,CAAC,CACjC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,OAAO,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,CAAC;AAC5D,CAAC"}
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"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"}
|
package/docs/llms.md
CHANGED
|
@@ -49,15 +49,15 @@ import {
|
|
|
49
49
|
// Media library page (Preview API by default) — thumbnails via buildAssetThumbUrl
|
|
50
50
|
// const media = await listMediaLibraryPage(config, 'images', { page: 1, limit: 50, preview: true });
|
|
51
51
|
|
|
52
|
-
// Fetch a page by slug
|
|
52
|
+
// Fetch a page by slug — pages and sitemaps are tag-only (no hourly `revalidate`).
|
|
53
53
|
const page = await contentfulPageRest(config, 'home', {
|
|
54
54
|
preview: false,
|
|
55
|
-
cache: { tags: ['page#home']
|
|
55
|
+
cache: { tags: ['page#home'] },
|
|
56
56
|
});
|
|
57
57
|
|
|
58
|
-
// Fetch an article by slug
|
|
58
|
+
// Fetch an article by slug — tag-only; webhooks invalidate `article#…` / `article`.
|
|
59
59
|
const article = await contentfulArticleRest(config, 'my-article-slug', {
|
|
60
|
-
cache: { tags: ['article#my-article-slug']
|
|
60
|
+
cache: { tags: ['article#my-article-slug'] },
|
|
61
61
|
});
|
|
62
62
|
|
|
63
63
|
// Fetch all links (for sitemaps / related content)
|
|
@@ -112,7 +112,9 @@ Lower-level helpers (`collectIconsFromContent`, `collectIconsFromNavigation`, `d
|
|
|
112
112
|
Caching (applied inside `getNavigation` via `buildFlatNavigationCacheOptions`):
|
|
113
113
|
|
|
114
114
|
- **Tags (primary):** `FLAT_NAV_CACHE_TAGS` — collection tags for navigation, navigationItem, page, article, tag, **tagType**, **link**, person, etc.
|
|
115
|
-
- **Revalidate (fallback):** `FLAT_NAV_TIME_REVALIDATE_SECONDS` (3600) when webhooks miss; override with `options.next.revalidate`.
|
|
115
|
+
- **Revalidate (fallback):** `FLAT_NAV_TIME_REVALIDATE_SECONDS` (3600) when webhooks miss; override with `options.next.revalidate`. Pages and sitemaps stay tag-only.
|
|
116
|
+
|
|
117
|
+
**Memoisation / in-flight maps:** any shared de-duplication layer must forward the caller's `tags` and `revalidate` settings (and have a test proving it). Dropping tags on a shared fetch (e.g. `memoizeFlatNavFetch`) can leave pages stuck after publish. See `docs/CONTENTFUL_WEBHOOK_REVALIDATION.md`.
|
|
116
118
|
|
|
117
119
|
Unresolved internal targets → blank link; set `LOG_CMS=1` to warn.
|
|
118
120
|
|
|
@@ -374,9 +376,11 @@ import {
|
|
|
374
376
|
Set `LOG_CMS_QUERIES=1` to emit structured per-fetch lines:
|
|
375
377
|
|
|
376
378
|
```
|
|
377
|
-
[CMS query] {"url":"...","operation":"Reading article","identifier":"my-slug","bytes":24064,"ms":45}
|
|
379
|
+
[CMS query] {"url":"...","operation":"Reading article","identifier":"my-slug","bytes":24064,"ms":45,"cache":"miss"}
|
|
378
380
|
```
|
|
379
381
|
|
|
382
|
+
`cache: "miss"` is outbound Contentful HTTP (the cost metric). `cache: "hit"` is a Next data-cache reconstruct with no TCP. Followers of an in-flight flat-nav fetch still `fetch()`, so logged line count stays higher than origin count.
|
|
383
|
+
|
|
380
384
|
Merge with Next.js dev fetch cache lines (`(cache hit|miss)`) after the fact:
|
|
381
385
|
|
|
382
386
|
```bash
|
package/package.json
CHANGED