mentionwell 1.4.5 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-reader.d.ts +3 -6
- package/dist/api-reader.d.ts.map +1 -1
- package/dist/api-reader.js +134 -23
- package/dist/api-reader.js.map +1 -1
- package/package.json +1 -1
package/dist/api-reader.d.ts
CHANGED
|
@@ -110,12 +110,9 @@ export interface MentionwellApiConfig {
|
|
|
110
110
|
/**
|
|
111
111
|
* Fetches a paginated list of published posts for the configured site.
|
|
112
112
|
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
* only `perPage * page` rows and reported the slice size as `total`,
|
|
117
|
-
* which silently hid every page past the first. Sites with >100 posts
|
|
118
|
-
* need server-side `?page=` support; bump this package once that lands.
|
|
113
|
+
* Fetches the full archive once per build (walking the server's 100-post
|
|
114
|
+
* pages) and slices locally, so `total`/`totalPages` are correct even for
|
|
115
|
+
* sites with deep archives.
|
|
119
116
|
*/
|
|
120
117
|
export declare function getBlogPostsViaApi(config: MentionwellApiConfig, page?: number, perPage?: number): Promise<{
|
|
121
118
|
posts: ReaderPost[];
|
package/dist/api-reader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-reader.d.ts","sourceRoot":"","sources":["../src/api-reader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAClD,YAAY,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC3B,GAAG,CAAC,EAAE,cAAc,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,CAKtE;AAED;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAEpD,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"api-reader.d.ts","sourceRoot":"","sources":["../src/api-reader.ts"],"names":[],"mappings":"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"}
|
package/dist/api-reader.js
CHANGED
|
@@ -63,7 +63,11 @@ function toReader(post) {
|
|
|
63
63
|
readingTime: post.readingTime,
|
|
64
64
|
tags: post.tags ?? [],
|
|
65
65
|
category: post.category ?? null,
|
|
66
|
-
relatedPosts: []
|
|
66
|
+
relatedPosts: (post.relatedPosts ?? []).map((related) => ({
|
|
67
|
+
id: related.slug,
|
|
68
|
+
title: related.title,
|
|
69
|
+
slug: related.slug
|
|
70
|
+
})),
|
|
67
71
|
publishedAt: post.publishedAt ?? undefined,
|
|
68
72
|
updatedAt: post.updatedAt ?? undefined,
|
|
69
73
|
author: post.author ?? undefined,
|
|
@@ -75,43 +79,150 @@ function toReader(post) {
|
|
|
75
79
|
language: post.language ?? undefined
|
|
76
80
|
};
|
|
77
81
|
}
|
|
82
|
+
// ─── Build-resilience: retry + conditional fetch ──────────────────────
|
|
83
|
+
//
|
|
84
|
+
// Static-site builds (Next SSG, Astro, Gatsby, Nuxt) running on shared-IP
|
|
85
|
+
// platforms (Vercel, Netlify, Cloudflare Pages) fan out to dozens of
|
|
86
|
+
// concurrent fetches per build. Without retry, a single rate-limit spike
|
|
87
|
+
// permanently corrupts the build output. Without conditional GET, every
|
|
88
|
+
// repeat build fetches the full payload again.
|
|
89
|
+
//
|
|
90
|
+
// This SDK is what customers install (npm: `mentionwell`). The same
|
|
91
|
+
// hardening we put in our own marketing client lives here so customer
|
|
92
|
+
// sites can't be taken down by a transient origin issue.
|
|
93
|
+
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
94
|
+
// Module-scope cache. Survives across pages/components within a single
|
|
95
|
+
// build process; resets on each new process (Astro/Next builds spawn a
|
|
96
|
+
// fresh Node process per deploy).
|
|
97
|
+
const conditionalCache = new Map();
|
|
78
98
|
async function callApi(config, path, init) {
|
|
99
|
+
const MAX_ATTEMPTS = 5;
|
|
79
100
|
const fetchImpl = config.fetch ?? fetch;
|
|
80
101
|
const url = `${trimUrl(config.apiUrl)}${path}`;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
headers
|
|
102
|
+
for (let attempt = 0; attempt <= MAX_ATTEMPTS; attempt++) {
|
|
103
|
+
const cached = conditionalCache.get(url);
|
|
104
|
+
const headers = {
|
|
84
105
|
Authorization: `Bearer ${config.apiKey}`,
|
|
85
106
|
Accept: "application/json",
|
|
86
107
|
...(init?.headers ?? {})
|
|
108
|
+
};
|
|
109
|
+
if (cached?.etag && !headers["If-None-Match"]) {
|
|
110
|
+
headers["If-None-Match"] = cached.etag;
|
|
87
111
|
}
|
|
88
|
-
|
|
89
|
-
if (!response.ok) {
|
|
90
|
-
let message = `${response.status} ${response.statusText}`;
|
|
112
|
+
let response;
|
|
91
113
|
try {
|
|
92
|
-
|
|
93
|
-
if (body?.message)
|
|
94
|
-
message = body.message;
|
|
114
|
+
response = await fetchImpl(url, { ...init, headers });
|
|
95
115
|
}
|
|
96
|
-
catch {
|
|
97
|
-
|
|
116
|
+
catch (err) {
|
|
117
|
+
if (attempt < MAX_ATTEMPTS) {
|
|
118
|
+
const backoffMs = Math.min(15_000, 400 * 2 ** attempt) + Math.floor(Math.random() * 250);
|
|
119
|
+
await sleep(backoffMs);
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
throw err;
|
|
98
123
|
}
|
|
99
|
-
|
|
124
|
+
// 304 Not Modified — serve the previously cached body, no parse work.
|
|
125
|
+
if (response.status === 304 && cached) {
|
|
126
|
+
return cached.body;
|
|
127
|
+
}
|
|
128
|
+
// 429 — honor Retry-After (seconds), or fall back to expo backoff.
|
|
129
|
+
if (response.status === 429 && attempt < MAX_ATTEMPTS) {
|
|
130
|
+
const retryAfter = Number.parseInt(response.headers.get("retry-after") ?? "", 10);
|
|
131
|
+
const baseMs = Number.isFinite(retryAfter) && retryAfter > 0 && retryAfter <= 120
|
|
132
|
+
? retryAfter * 1000
|
|
133
|
+
: Math.min(30_000, 500 * 2 ** attempt);
|
|
134
|
+
await sleep(baseMs + Math.floor(Math.random() * 250));
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
// 5xx — transient origin error, back off and retry.
|
|
138
|
+
if (response.status >= 500 && response.status < 600 && attempt < MAX_ATTEMPTS) {
|
|
139
|
+
const backoffMs = Math.min(15_000, 400 * 2 ** attempt) + Math.floor(Math.random() * 250);
|
|
140
|
+
await sleep(backoffMs);
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
if (!response.ok) {
|
|
144
|
+
let message = `${response.status} ${response.statusText}`;
|
|
145
|
+
try {
|
|
146
|
+
const body = (await response.json());
|
|
147
|
+
if (body?.message)
|
|
148
|
+
message = body.message;
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
// body wasn't JSON; keep status text
|
|
152
|
+
}
|
|
153
|
+
throw new Error(`Mentionwell API ${path} failed: ${message}`);
|
|
154
|
+
}
|
|
155
|
+
const body = (await response.json());
|
|
156
|
+
const etag = response.headers.get("etag");
|
|
157
|
+
if (etag) {
|
|
158
|
+
conditionalCache.set(url, { etag, body });
|
|
159
|
+
}
|
|
160
|
+
return body;
|
|
161
|
+
}
|
|
162
|
+
// Theoretically unreachable — the loop body returns or throws on every path.
|
|
163
|
+
throw new Error(`Mentionwell API ${path} failed after ${MAX_ATTEMPTS + 1} attempts`);
|
|
164
|
+
}
|
|
165
|
+
// ─── Build-wide list memoization ──────────────────────────────────────
|
|
166
|
+
//
|
|
167
|
+
// Three exported functions (getBlogPostsViaApi, getAllBlogSlugsViaApi,
|
|
168
|
+
// getBlogPostSummariesViaApi) all hit /api/public/{slug}/posts?limit=100
|
|
169
|
+
// — the same endpoint with the same payload. Without memoization, a
|
|
170
|
+
// build that calls all three (sitemap + blog index + slugs) fires three
|
|
171
|
+
// trips. With memoization, one trip serves all three. Combined with the
|
|
172
|
+
// conditional-fetch cache above, repeat builds with unchanged data fire
|
|
173
|
+
// zero network bytes for the body.
|
|
174
|
+
//
|
|
175
|
+
// Keyed by (apiUrl, siteSlug) so a build that legitimately reads two
|
|
176
|
+
// different sites doesn't share state across them.
|
|
177
|
+
const listCache = new Map();
|
|
178
|
+
/** Hard stop for the pagination walk: 50 pages × 100 = 5,000 posts. Guards
|
|
179
|
+
* against a server that erroneously reports hasMore forever. */
|
|
180
|
+
const MAX_LIST_PAGES = 50;
|
|
181
|
+
async function fetchAllPages(config) {
|
|
182
|
+
const first = await callApi(config, `/api/public/${encodeURIComponent(config.siteSlug)}/posts?limit=100&page=1`);
|
|
183
|
+
if (!first.ok || !first.posts)
|
|
184
|
+
return first;
|
|
185
|
+
const posts = [...first.posts];
|
|
186
|
+
// Older servers don't send hasMore — a full first page is the walk signal
|
|
187
|
+
// either way; a short page (or a repeated/empty page) ends it.
|
|
188
|
+
let page = 1;
|
|
189
|
+
while (posts.length >= page * 100 && page < MAX_LIST_PAGES) {
|
|
190
|
+
page += 1;
|
|
191
|
+
const next = await callApi(config, `/api/public/${encodeURIComponent(config.siteSlug)}/posts?limit=100&page=${page}`);
|
|
192
|
+
if (!next.ok || !next.posts || next.posts.length === 0)
|
|
193
|
+
break;
|
|
194
|
+
// Pre-pagination servers ignore ?page= and replay page 1 — detect and stop.
|
|
195
|
+
if (next.posts[0]?.slug === first.posts[0]?.slug)
|
|
196
|
+
break;
|
|
197
|
+
posts.push(...next.posts);
|
|
198
|
+
if (next.hasMore === false)
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
return { ...first, posts };
|
|
202
|
+
}
|
|
203
|
+
function loadAllPostsOnce(config) {
|
|
204
|
+
const key = `${trimUrl(config.apiUrl)}::${config.siteSlug}`;
|
|
205
|
+
let promise = listCache.get(key);
|
|
206
|
+
if (!promise) {
|
|
207
|
+
promise = fetchAllPages(config).catch((err) => {
|
|
208
|
+
// On error, drop the cached promise so a later caller may retry
|
|
209
|
+
// once the transient cause clears.
|
|
210
|
+
listCache.delete(key);
|
|
211
|
+
throw err;
|
|
212
|
+
});
|
|
213
|
+
listCache.set(key, promise);
|
|
100
214
|
}
|
|
101
|
-
return
|
|
215
|
+
return promise;
|
|
102
216
|
}
|
|
103
217
|
/**
|
|
104
218
|
* Fetches a paginated list of published posts for the configured site.
|
|
105
219
|
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
* only `perPage * page` rows and reported the slice size as `total`,
|
|
110
|
-
* which silently hid every page past the first. Sites with >100 posts
|
|
111
|
-
* need server-side `?page=` support; bump this package once that lands.
|
|
220
|
+
* Fetches the full archive once per build (walking the server's 100-post
|
|
221
|
+
* pages) and slices locally, so `total`/`totalPages` are correct even for
|
|
222
|
+
* sites with deep archives.
|
|
112
223
|
*/
|
|
113
224
|
export async function getBlogPostsViaApi(config, page = 1, perPage = 12) {
|
|
114
|
-
const data = await
|
|
225
|
+
const data = await loadAllPostsOnce(config);
|
|
115
226
|
if (!data.ok || !data.posts) {
|
|
116
227
|
throw new Error(`Mentionwell API returned not-ok for ${config.siteSlug}: ${data.message ?? "unknown"}`);
|
|
117
228
|
}
|
|
@@ -140,13 +251,13 @@ export async function getBlogPostViaApi(config, slug) {
|
|
|
140
251
|
}
|
|
141
252
|
}
|
|
142
253
|
export async function getAllBlogSlugsViaApi(config) {
|
|
143
|
-
const data = await
|
|
254
|
+
const data = await loadAllPostsOnce(config);
|
|
144
255
|
if (!data.ok || !data.posts)
|
|
145
256
|
return [];
|
|
146
257
|
return data.posts.map((p) => p.slug);
|
|
147
258
|
}
|
|
148
259
|
export async function getBlogPostSummariesViaApi(config) {
|
|
149
|
-
const data = await
|
|
260
|
+
const data = await loadAllPostsOnce(config);
|
|
150
261
|
if (!data.ok || !data.posts)
|
|
151
262
|
return [];
|
|
152
263
|
return data.posts.map((p) => ({
|
package/dist/api-reader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-reader.js","sourceRoot":"","sources":["../src/api-reader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAsDH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,UAAU,CAAC,QAA4B;IACrD,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACpC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACjE,OAAO,KAAK,CAAC;AACf,CAAC;
|
|
1
|
+
{"version":3,"file":"api-reader.js","sourceRoot":"","sources":["../src/api-reader.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED