@sleekcms/client 2.3.1 → 2.4.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/index.cjs +16 -18
- package/index.mjs +16 -18
- package/package.json +1 -1
package/index.cjs
CHANGED
|
@@ -36,6 +36,7 @@ module.exports = __toCommonJS(index_exports);
|
|
|
36
36
|
|
|
37
37
|
// src/lib.ts
|
|
38
38
|
var jmespath = __toESM(require("jmespath"), 1);
|
|
39
|
+
var envTagCache = /* @__PURE__ */ new Map();
|
|
39
40
|
function getBaseUrl(token, devEnv) {
|
|
40
41
|
let [env, siteId, ...rest] = token.split("-");
|
|
41
42
|
if (devEnv === "production") return `https://pub.sleekcms.com/${siteId}`;
|
|
@@ -78,8 +79,13 @@ async function fetchEnvTag({ siteToken, env }) {
|
|
|
78
79
|
async function fetchSiteContent(options) {
|
|
79
80
|
const { siteToken, env = "latest", cdn = false, search: search2, lang, cache, cacheMinutes } = options;
|
|
80
81
|
let url = getUrl({ siteToken, env, search: search2, lang });
|
|
81
|
-
if (cdn
|
|
82
|
-
|
|
82
|
+
if (!cdn) {
|
|
83
|
+
const cacheKey2 = `${siteToken}:${env}`;
|
|
84
|
+
let tag = envTagCache.get(cacheKey2);
|
|
85
|
+
if (!tag) {
|
|
86
|
+
tag = await fetchEnvTag({ siteToken, env });
|
|
87
|
+
envTagCache.set(cacheKey2, tag);
|
|
88
|
+
}
|
|
83
89
|
url = getUrl({ siteToken, env: tag, search: search2, lang });
|
|
84
90
|
}
|
|
85
91
|
const cacheKey = url;
|
|
@@ -229,27 +235,23 @@ function createAsyncClient(options) {
|
|
|
229
235
|
const { siteToken, env = "latest", cdn, lang } = options;
|
|
230
236
|
const cache = options.cache ?? new MemoryCache();
|
|
231
237
|
let syncClient = null;
|
|
232
|
-
let tag = null;
|
|
233
238
|
async function getContent(search2) {
|
|
234
|
-
if (cdn && !tag) tag = await fetchEnvTag({ siteToken, env });
|
|
235
239
|
if (!search2 && !syncClient) {
|
|
236
|
-
syncClient = await createClient({ siteToken, env
|
|
240
|
+
syncClient = await createClient({ siteToken, env, cdn, lang, cache });
|
|
237
241
|
}
|
|
238
242
|
if (syncClient) return syncClient.getContent(search2);
|
|
239
243
|
if (!search2) return null;
|
|
240
|
-
return await fetchSiteContent({ siteToken, env
|
|
244
|
+
return await fetchSiteContent({ siteToken, env, search: search2, lang, cache, cdn });
|
|
241
245
|
}
|
|
242
246
|
async function getPages(path) {
|
|
243
|
-
if (cdn && !tag) tag = await fetchEnvTag({ siteToken, env });
|
|
244
247
|
if (syncClient) return syncClient.getPages(path);
|
|
245
|
-
const pages = await fetchSiteContent({ siteToken, env
|
|
248
|
+
const pages = await fetchSiteContent({ siteToken, env, search: "pages", lang, cache, cdn });
|
|
246
249
|
if (!path) return pages;
|
|
247
250
|
else return filterPagesByPath(pages, path);
|
|
248
251
|
}
|
|
249
252
|
async function getPage(path) {
|
|
250
|
-
if (cdn && !tag) tag = await fetchEnvTag({ siteToken, env });
|
|
251
253
|
if (syncClient) return syncClient.getPage(path);
|
|
252
|
-
const pages = await fetchSiteContent({ siteToken, env
|
|
254
|
+
const pages = await fetchSiteContent({ siteToken, env, search: "pages", lang, cache, cdn });
|
|
253
255
|
const page = pages == null ? void 0 : pages.find((p) => {
|
|
254
256
|
const pth = typeof p._path === "string" ? p._path : "";
|
|
255
257
|
return pth === path;
|
|
@@ -257,27 +259,23 @@ function createAsyncClient(options) {
|
|
|
257
259
|
return page ?? null;
|
|
258
260
|
}
|
|
259
261
|
async function getEntry(handle) {
|
|
260
|
-
if (cdn && !tag) tag = await fetchEnvTag({ siteToken, env });
|
|
261
262
|
if (syncClient) return syncClient.getEntry(handle);
|
|
262
263
|
let search2 = `entries.${handle}`;
|
|
263
|
-
return await fetchSiteContent({ siteToken, env
|
|
264
|
+
return await fetchSiteContent({ siteToken, env, search: search2, lang, cache, cdn });
|
|
264
265
|
}
|
|
265
266
|
async function getSlugs(path) {
|
|
266
|
-
if (cdn && !tag) tag = await fetchEnvTag({ siteToken, env });
|
|
267
267
|
if (syncClient) return syncClient.getSlugs(path);
|
|
268
|
-
const pages = await fetchSiteContent({ siteToken, env
|
|
268
|
+
const pages = await fetchSiteContent({ siteToken, env, search: "pages", lang, cache, cdn });
|
|
269
269
|
return extractSlugs(pages, path);
|
|
270
270
|
}
|
|
271
271
|
async function getImage(name) {
|
|
272
|
-
if (cdn && !tag) tag = await fetchEnvTag({ siteToken, env });
|
|
273
272
|
if (syncClient) return syncClient.getImage(name);
|
|
274
|
-
const images = await fetchSiteContent({ siteToken, env
|
|
273
|
+
const images = await fetchSiteContent({ siteToken, env, search: "images", lang, cache, cdn });
|
|
275
274
|
return images ? images[name] : null;
|
|
276
275
|
}
|
|
277
276
|
async function getOptions(name) {
|
|
278
|
-
if (cdn && !tag) tag = await fetchEnvTag({ siteToken, env });
|
|
279
277
|
if (syncClient) return syncClient.getOptions(name);
|
|
280
|
-
const options2 = await fetchSiteContent({ siteToken, env
|
|
278
|
+
const options2 = await fetchSiteContent({ siteToken, env, search: "options", lang, cache, cdn });
|
|
281
279
|
const optionSet = options2[name];
|
|
282
280
|
return Array.isArray(optionSet) ? optionSet : null;
|
|
283
281
|
}
|
package/index.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// src/lib.ts
|
|
2
2
|
import * as jmespath from "jmespath";
|
|
3
|
+
var envTagCache = /* @__PURE__ */ new Map();
|
|
3
4
|
function getBaseUrl(token, devEnv) {
|
|
4
5
|
let [env, siteId, ...rest] = token.split("-");
|
|
5
6
|
if (devEnv === "production") return `https://pub.sleekcms.com/${siteId}`;
|
|
@@ -42,8 +43,13 @@ async function fetchEnvTag({ siteToken, env }) {
|
|
|
42
43
|
async function fetchSiteContent(options) {
|
|
43
44
|
const { siteToken, env = "latest", cdn = false, search: search2, lang, cache, cacheMinutes } = options;
|
|
44
45
|
let url = getUrl({ siteToken, env, search: search2, lang });
|
|
45
|
-
if (cdn
|
|
46
|
-
|
|
46
|
+
if (!cdn) {
|
|
47
|
+
const cacheKey2 = `${siteToken}:${env}`;
|
|
48
|
+
let tag = envTagCache.get(cacheKey2);
|
|
49
|
+
if (!tag) {
|
|
50
|
+
tag = await fetchEnvTag({ siteToken, env });
|
|
51
|
+
envTagCache.set(cacheKey2, tag);
|
|
52
|
+
}
|
|
47
53
|
url = getUrl({ siteToken, env: tag, search: search2, lang });
|
|
48
54
|
}
|
|
49
55
|
const cacheKey = url;
|
|
@@ -193,27 +199,23 @@ function createAsyncClient(options) {
|
|
|
193
199
|
const { siteToken, env = "latest", cdn, lang } = options;
|
|
194
200
|
const cache = options.cache ?? new MemoryCache();
|
|
195
201
|
let syncClient = null;
|
|
196
|
-
let tag = null;
|
|
197
202
|
async function getContent(search2) {
|
|
198
|
-
if (cdn && !tag) tag = await fetchEnvTag({ siteToken, env });
|
|
199
203
|
if (!search2 && !syncClient) {
|
|
200
|
-
syncClient = await createClient({ siteToken, env
|
|
204
|
+
syncClient = await createClient({ siteToken, env, cdn, lang, cache });
|
|
201
205
|
}
|
|
202
206
|
if (syncClient) return syncClient.getContent(search2);
|
|
203
207
|
if (!search2) return null;
|
|
204
|
-
return await fetchSiteContent({ siteToken, env
|
|
208
|
+
return await fetchSiteContent({ siteToken, env, search: search2, lang, cache, cdn });
|
|
205
209
|
}
|
|
206
210
|
async function getPages(path) {
|
|
207
|
-
if (cdn && !tag) tag = await fetchEnvTag({ siteToken, env });
|
|
208
211
|
if (syncClient) return syncClient.getPages(path);
|
|
209
|
-
const pages = await fetchSiteContent({ siteToken, env
|
|
212
|
+
const pages = await fetchSiteContent({ siteToken, env, search: "pages", lang, cache, cdn });
|
|
210
213
|
if (!path) return pages;
|
|
211
214
|
else return filterPagesByPath(pages, path);
|
|
212
215
|
}
|
|
213
216
|
async function getPage(path) {
|
|
214
|
-
if (cdn && !tag) tag = await fetchEnvTag({ siteToken, env });
|
|
215
217
|
if (syncClient) return syncClient.getPage(path);
|
|
216
|
-
const pages = await fetchSiteContent({ siteToken, env
|
|
218
|
+
const pages = await fetchSiteContent({ siteToken, env, search: "pages", lang, cache, cdn });
|
|
217
219
|
const page = pages == null ? void 0 : pages.find((p) => {
|
|
218
220
|
const pth = typeof p._path === "string" ? p._path : "";
|
|
219
221
|
return pth === path;
|
|
@@ -221,27 +223,23 @@ function createAsyncClient(options) {
|
|
|
221
223
|
return page ?? null;
|
|
222
224
|
}
|
|
223
225
|
async function getEntry(handle) {
|
|
224
|
-
if (cdn && !tag) tag = await fetchEnvTag({ siteToken, env });
|
|
225
226
|
if (syncClient) return syncClient.getEntry(handle);
|
|
226
227
|
let search2 = `entries.${handle}`;
|
|
227
|
-
return await fetchSiteContent({ siteToken, env
|
|
228
|
+
return await fetchSiteContent({ siteToken, env, search: search2, lang, cache, cdn });
|
|
228
229
|
}
|
|
229
230
|
async function getSlugs(path) {
|
|
230
|
-
if (cdn && !tag) tag = await fetchEnvTag({ siteToken, env });
|
|
231
231
|
if (syncClient) return syncClient.getSlugs(path);
|
|
232
|
-
const pages = await fetchSiteContent({ siteToken, env
|
|
232
|
+
const pages = await fetchSiteContent({ siteToken, env, search: "pages", lang, cache, cdn });
|
|
233
233
|
return extractSlugs(pages, path);
|
|
234
234
|
}
|
|
235
235
|
async function getImage(name) {
|
|
236
|
-
if (cdn && !tag) tag = await fetchEnvTag({ siteToken, env });
|
|
237
236
|
if (syncClient) return syncClient.getImage(name);
|
|
238
|
-
const images = await fetchSiteContent({ siteToken, env
|
|
237
|
+
const images = await fetchSiteContent({ siteToken, env, search: "images", lang, cache, cdn });
|
|
239
238
|
return images ? images[name] : null;
|
|
240
239
|
}
|
|
241
240
|
async function getOptions(name) {
|
|
242
|
-
if (cdn && !tag) tag = await fetchEnvTag({ siteToken, env });
|
|
243
241
|
if (syncClient) return syncClient.getOptions(name);
|
|
244
|
-
const options2 = await fetchSiteContent({ siteToken, env
|
|
242
|
+
const options2 = await fetchSiteContent({ siteToken, env, search: "options", lang, cache, cdn });
|
|
245
243
|
const optionSet = options2[name];
|
|
246
244
|
return Array.isArray(optionSet) ? optionSet : null;
|
|
247
245
|
}
|