@riverbankcms/sdk 0.7.2 → 0.7.4
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/README.md +54 -0
- package/dist/client/bookings.d.mts +2 -0
- package/dist/client/bookings.d.ts +2 -0
- package/dist/client/bookings.js +2956 -104
- package/dist/client/bookings.js.map +1 -1
- package/dist/client/bookings.mjs +2929 -70
- package/dist/client/bookings.mjs.map +1 -1
- package/dist/client/client.d.mts +2 -2
- package/dist/client/client.d.ts +2 -2
- package/dist/client/client.js +80 -11
- package/dist/client/client.js.map +1 -1
- package/dist/client/client.mjs +87 -11
- package/dist/client/client.mjs.map +1 -1
- package/dist/client/hooks.d.mts +2 -2
- package/dist/client/hooks.d.ts +2 -2
- package/dist/client/rendering/client.js +3070 -259
- package/dist/client/rendering/client.js.map +1 -1
- package/dist/client/rendering/client.mjs +3212 -395
- package/dist/client/rendering/client.mjs.map +1 -1
- package/dist/client/spam-protection.d.mts +55 -0
- package/dist/client/spam-protection.d.ts +55 -0
- package/dist/client/spam-protection.js +2915 -0
- package/dist/client/spam-protection.js.map +1 -0
- package/dist/client/spam-protection.mjs +2893 -0
- package/dist/client/spam-protection.mjs.map +1 -0
- package/dist/client/{usePage-Db9kzA41.d.ts → usePage-BYmJCCm1.d.ts} +14 -2
- package/dist/client/{usePage-C9tJpuKa.d.mts → usePage-DZtrWajy.d.mts} +14 -2
- package/dist/server/{Layout-Ce7PU9I5.d.ts → Layout-Yluyb6sK.d.ts} +1 -1
- package/dist/server/{Layout-WllR8Zug.d.mts → Layout-qWLdVm5-.d.mts} +1 -1
- package/dist/server/chunk-2IZ6S225.js +122 -0
- package/dist/server/chunk-2IZ6S225.js.map +1 -0
- package/dist/server/chunk-4CV4JOE5.js +27 -0
- package/dist/server/chunk-4CV4JOE5.js.map +1 -0
- package/dist/server/{chunk-AET56TQX.mjs → chunk-5LRR64Y6.mjs} +32 -5
- package/dist/server/chunk-5LRR64Y6.mjs.map +1 -0
- package/dist/server/{chunk-HMENX4Y7.js → chunk-6Z4MQG47.js} +370 -49
- package/dist/server/chunk-6Z4MQG47.js.map +1 -0
- package/dist/server/{chunk-5JT452F2.mjs → chunk-JNU7ZS2V.mjs} +340 -19
- package/dist/server/chunk-JNU7ZS2V.mjs.map +1 -0
- package/dist/server/{chunk-VODFQMUW.js → chunk-NBTRDLCM.js} +32 -5
- package/dist/server/chunk-NBTRDLCM.js.map +1 -0
- package/dist/server/chunk-NFEGQTCC.mjs +27 -0
- package/dist/server/chunk-PPHZV6YD.mjs +122 -0
- package/dist/server/chunk-PPHZV6YD.mjs.map +1 -0
- package/dist/server/{components-RPzRQve6.d.mts → components-DNHfSCML.d.mts} +3 -3
- package/dist/server/{components--LT61IKp.d.ts → components-Di5ME6He.d.ts} +3 -3
- package/dist/server/components.d.mts +5 -5
- package/dist/server/components.d.ts +5 -5
- package/dist/server/components.js +1 -0
- package/dist/server/components.js.map +1 -1
- package/dist/server/components.mjs +1 -0
- package/dist/server/config-validation.js +1 -0
- package/dist/server/config-validation.js.map +1 -1
- package/dist/server/config-validation.mjs +1 -0
- package/dist/server/config.js +1 -0
- package/dist/server/config.js.map +1 -1
- package/dist/server/config.mjs +1 -0
- package/dist/server/config.mjs.map +1 -1
- package/dist/server/data.d.mts +2 -2
- package/dist/server/data.d.ts +2 -2
- package/dist/server/data.js +1 -0
- package/dist/server/data.js.map +1 -1
- package/dist/server/data.mjs +1 -0
- package/dist/server/env.d.mts +91 -5
- package/dist/server/env.d.ts +91 -5
- package/dist/server/env.js +9 -2
- package/dist/server/env.js.map +1 -1
- package/dist/server/env.mjs +8 -1
- package/dist/server/{index-BL66CU6d.d.mts → index--Oyunk_B.d.mts} +2 -2
- package/dist/server/{index-CJk9iQQW.d.ts → index-C9Ra8dza.d.ts} +2 -2
- package/dist/server/{index-Bkva0WAj.d.mts → index-Clm3skz_.d.mts} +1 -1
- package/dist/server/{index-CSBWKA3r.d.ts → index-DLvNddi-.d.ts} +1 -1
- package/dist/server/index.d.mts +215 -4
- package/dist/server/index.d.ts +215 -4
- package/dist/server/index.js +301 -3
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +301 -3
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/{loadContent-CXUWMuzY.d.ts → loadContent-D7LQwI0o.d.ts} +3 -3
- package/dist/server/{loadContent-F_tAS0Nl.d.mts → loadContent-DVfuBLiZ.d.mts} +3 -3
- package/dist/server/{loadPage-6I7F6GRF.js → loadPage-AXNAERDS.js} +2 -1
- package/dist/server/loadPage-AXNAERDS.js.map +1 -0
- package/dist/server/{loadPage-i2r-X5b9.d.ts → loadPage-BmYJCe_V.d.ts} +2 -2
- package/dist/server/{loadPage-CxlYLe5K.d.mts → loadPage-BucnLHmE.d.mts} +2 -2
- package/dist/server/{loadPage-JI2SML4M.mjs → loadPage-XR7ORQ2E.mjs} +2 -1
- package/dist/server/loadPage-XR7ORQ2E.mjs.map +1 -0
- package/dist/server/metadata.d.mts +4 -4
- package/dist/server/metadata.d.ts +4 -4
- package/dist/server/metadata.js +1 -0
- package/dist/server/metadata.js.map +1 -1
- package/dist/server/metadata.mjs +1 -0
- package/dist/server/navigation.d.mts +2 -2
- package/dist/server/navigation.d.ts +2 -2
- package/dist/server/navigation.js +1 -0
- package/dist/server/navigation.js.map +1 -1
- package/dist/server/navigation.mjs +1 -0
- package/dist/server/next/revalidate.js +5 -4
- package/dist/server/next/revalidate.js.map +1 -1
- package/dist/server/next/revalidate.mjs +3 -2
- package/dist/server/next/revalidate.mjs.map +1 -1
- package/dist/server/next/tags.d.mts +3 -0
- package/dist/server/next/tags.d.ts +3 -0
- package/dist/server/next/tags.js +3 -1
- package/dist/server/next/tags.js.map +1 -1
- package/dist/server/next/tags.mjs +2 -0
- package/dist/server/next/tags.mjs.map +1 -1
- package/dist/server/next.d.mts +5 -5
- package/dist/server/next.d.ts +5 -5
- package/dist/server/next.js +5 -4
- package/dist/server/next.js.map +1 -1
- package/dist/server/next.mjs +3 -2
- package/dist/server/next.mjs.map +1 -1
- package/dist/server/rendering/server.d.mts +4 -4
- package/dist/server/rendering/server.d.ts +4 -4
- package/dist/server/rendering/server.js +1 -0
- package/dist/server/rendering/server.js.map +1 -1
- package/dist/server/rendering/server.mjs +1 -0
- package/dist/server/rendering.d.mts +7 -7
- package/dist/server/rendering.d.ts +7 -7
- package/dist/server/rendering.js +1 -0
- package/dist/server/rendering.js.map +1 -1
- package/dist/server/rendering.mjs +1 -0
- package/dist/server/routing.d.mts +3 -3
- package/dist/server/routing.d.ts +3 -3
- package/dist/server/routing.js +4 -2
- package/dist/server/routing.js.map +1 -1
- package/dist/server/routing.mjs +3 -1
- package/dist/server/routing.mjs.map +1 -1
- package/dist/server/server.d.mts +5 -5
- package/dist/server/server.d.ts +5 -5
- package/dist/server/server.js +3 -2
- package/dist/server/server.js.map +1 -1
- package/dist/server/server.mjs +2 -1
- package/dist/server/theme-bridge.js +1 -0
- package/dist/server/theme-bridge.js.map +1 -1
- package/dist/server/theme-bridge.mjs +1 -0
- package/dist/server/theme-bridge.mjs.map +1 -1
- package/dist/server/theme.js +3 -1
- package/dist/server/theme.js.map +1 -1
- package/dist/server/theme.mjs +2 -0
- package/dist/server/theme.mjs.map +1 -1
- package/dist/server/{types-DnkRh0UL.d.ts → types-BRQyLrQU.d.ts} +14 -2
- package/dist/server/{types-Dsu9wsUh.d.mts → types-BSV6Vc-P.d.mts} +2 -2
- package/dist/server/{types-MF2AWoKv.d.mts → types-C-LShyIg.d.mts} +14 -2
- package/dist/server/{types-CVykEqXN.d.ts → types-Dt98DeYa.d.ts} +2 -2
- package/dist/server/webhooks.d.mts +8 -2
- package/dist/server/webhooks.d.ts +8 -2
- package/dist/server/webhooks.js +3 -2
- package/dist/server/webhooks.js.map +1 -1
- package/dist/server/webhooks.mjs +2 -1
- package/package.json +7 -1
- package/dist/client/resolver-BhueZVxZ.d.mts +0 -61
- package/dist/client/resolver-BhueZVxZ.d.ts +0 -61
- package/dist/client/usePage--fGlyrgj.d.mts +0 -6439
- package/dist/client/usePage-BBcFCxOU.d.ts +0 -6297
- package/dist/client/usePage-BC8Q2E3t.d.mts +0 -6431
- package/dist/client/usePage-BTPnCuWC.d.mts +0 -6511
- package/dist/client/usePage-BXjk8BhD.d.mts +0 -6704
- package/dist/client/usePage-BafOS9UT.d.mts +0 -6512
- package/dist/client/usePage-BcjWPXvh.d.mts +0 -6388
- package/dist/client/usePage-BiOReg0_.d.ts +0 -6704
- package/dist/client/usePage-Bnx-kA6x.d.mts +0 -6670
- package/dist/client/usePage-BvKAa3Zw.d.mts +0 -366
- package/dist/client/usePage-BvKAa3Zw.d.ts +0 -366
- package/dist/client/usePage-BydHcMYB.d.mts +0 -6297
- package/dist/client/usePage-C3ZKNwY7.d.mts +0 -6393
- package/dist/client/usePage-CE7X5NcN.d.ts +0 -6439
- package/dist/client/usePage-CHEybPMD.d.ts +0 -6429
- package/dist/client/usePage-CrKw1H6Y.d.ts +0 -6338
- package/dist/client/usePage-CyYpOJud.d.ts +0 -6388
- package/dist/client/usePage-D4fxZbRR.d.mts +0 -6429
- package/dist/client/usePage-DMI8ImsU.d.mts +0 -6338
- package/dist/client/usePage-DoPI6b8V.d.ts +0 -6511
- package/dist/client/usePage-DpRNZUtP.d.ts +0 -6431
- package/dist/client/usePage-QNWArrVO.d.ts +0 -6670
- package/dist/client/usePage-fBgPB6Oq.d.ts +0 -6512
- package/dist/client/usePage-gpVaeWDy.d.ts +0 -6393
- package/dist/server/chunk-5JT452F2.mjs.map +0 -1
- package/dist/server/chunk-AET56TQX.mjs.map +0 -1
- package/dist/server/chunk-HMENX4Y7.js.map +0 -1
- package/dist/server/chunk-LQUKXIW7.mjs +0 -13
- package/dist/server/chunk-LQUKXIW7.mjs.map +0 -1
- package/dist/server/chunk-VODFQMUW.js.map +0 -1
- package/dist/server/chunk-WYNEYDXO.js +0 -13
- package/dist/server/chunk-WYNEYDXO.js.map +0 -1
- package/dist/server/loadPage-6I7F6GRF.js.map +0 -1
- /package/dist/server/{loadPage-JI2SML4M.mjs.map → chunk-NFEGQTCC.mjs.map} +0 -0
|
@@ -1,3 +1,247 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__esm,
|
|
3
|
+
__export,
|
|
4
|
+
__toCommonJS
|
|
5
|
+
} from "./chunk-NFEGQTCC.mjs";
|
|
6
|
+
|
|
7
|
+
// src/constants.ts
|
|
8
|
+
var PREBUILD_PAGE_SIZE, DEFAULT_MAX_PREBUILD_AGE_SEC, DEFAULT_PREBUILD_DIR;
|
|
9
|
+
var init_constants = __esm({
|
|
10
|
+
"src/constants.ts"() {
|
|
11
|
+
"use strict";
|
|
12
|
+
PREBUILD_PAGE_SIZE = 50;
|
|
13
|
+
DEFAULT_MAX_PREBUILD_AGE_SEC = 86400;
|
|
14
|
+
DEFAULT_PREBUILD_DIR = ".riverbank-cache";
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
// src/prebuild/loader.ts
|
|
19
|
+
var loader_exports = {};
|
|
20
|
+
__export(loader_exports, {
|
|
21
|
+
PrebuildLoader: () => PrebuildLoader,
|
|
22
|
+
canUsePrebuild: () => canUsePrebuild,
|
|
23
|
+
createPrebuildLoader: () => createPrebuildLoader
|
|
24
|
+
});
|
|
25
|
+
import * as fs from "fs";
|
|
26
|
+
import * as path from "path";
|
|
27
|
+
function loadManifest(prebuildDir) {
|
|
28
|
+
if (cachedManifest?.dir === prebuildDir) {
|
|
29
|
+
return cachedManifest.manifest;
|
|
30
|
+
}
|
|
31
|
+
const manifestPath = path.join(prebuildDir, "manifest.json");
|
|
32
|
+
if (!fs.existsSync(manifestPath)) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
const content = fs.readFileSync(manifestPath, "utf-8");
|
|
37
|
+
const manifest = JSON.parse(content);
|
|
38
|
+
cachedManifest = { manifest, dir: prebuildDir };
|
|
39
|
+
return manifest;
|
|
40
|
+
} catch {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function loadJsonFile(prebuildDir, relativePath) {
|
|
45
|
+
const filePath = path.join(prebuildDir, relativePath);
|
|
46
|
+
if (!fs.existsSync(filePath)) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
51
|
+
return JSON.parse(content);
|
|
52
|
+
} catch {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function isPrebuildExpired(manifest, maxAgeSec) {
|
|
57
|
+
const ageMs = Date.now() - new Date(manifest.generatedAt).getTime();
|
|
58
|
+
return ageMs > maxAgeSec * 1e3;
|
|
59
|
+
}
|
|
60
|
+
function getPrebuildAgeSec(manifest) {
|
|
61
|
+
const ageMs = Date.now() - new Date(manifest.generatedAt).getTime();
|
|
62
|
+
return Math.floor(ageMs / 1e3);
|
|
63
|
+
}
|
|
64
|
+
function canUsePrebuild() {
|
|
65
|
+
if (typeof process === "undefined" || !process.versions?.node) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
return typeof fs.existsSync === "function";
|
|
70
|
+
} catch {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function createPrebuildLoader(config) {
|
|
75
|
+
return new PrebuildLoader(config);
|
|
76
|
+
}
|
|
77
|
+
var cachedManifest, PrebuildLoader;
|
|
78
|
+
var init_loader = __esm({
|
|
79
|
+
"src/prebuild/loader.ts"() {
|
|
80
|
+
"use strict";
|
|
81
|
+
init_constants();
|
|
82
|
+
cachedManifest = null;
|
|
83
|
+
PrebuildLoader = class {
|
|
84
|
+
constructor(config) {
|
|
85
|
+
this.prebuildDir = config.prebuildDir ?? DEFAULT_PREBUILD_DIR;
|
|
86
|
+
this.maxPrebuildAgeSec = config.maxPrebuildAgeSec ?? DEFAULT_MAX_PREBUILD_AGE_SEC;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Check if prebuild is available and not expired.
|
|
90
|
+
*/
|
|
91
|
+
isAvailable() {
|
|
92
|
+
if (!canUsePrebuild()) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
const manifest = loadManifest(this.prebuildDir);
|
|
96
|
+
if (!manifest) {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
return !isPrebuildExpired(manifest, this.maxPrebuildAgeSec);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Load site data from prebuild cache.
|
|
103
|
+
*/
|
|
104
|
+
loadSite(siteId) {
|
|
105
|
+
const manifest = loadManifest(this.prebuildDir);
|
|
106
|
+
if (!manifest || isPrebuildExpired(manifest, this.maxPrebuildAgeSec)) {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
const cacheFile = loadJsonFile(this.prebuildDir, "site.json");
|
|
110
|
+
if (!cacheFile || cacheFile.data.site.id !== siteId) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
data: cacheFile.data,
|
|
115
|
+
prebuildAgeSec: getPrebuildAgeSec(manifest)
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Load page data from prebuild cache.
|
|
120
|
+
*/
|
|
121
|
+
loadPage(siteId, pagePath) {
|
|
122
|
+
const manifest = loadManifest(this.prebuildDir);
|
|
123
|
+
if (!manifest || isPrebuildExpired(manifest, this.maxPrebuildAgeSec)) {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
const cacheKey = `page:${siteId}:${pagePath}:false`;
|
|
127
|
+
const relativePath = manifest.keyToFile[cacheKey];
|
|
128
|
+
if (!relativePath) {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
const cacheFile = loadJsonFile(this.prebuildDir, relativePath);
|
|
132
|
+
if (!cacheFile) {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
data: cacheFile.data,
|
|
137
|
+
prebuildAgeSec: getPrebuildAgeSec(manifest)
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Load entries from prebuild cache with runtime filtering.
|
|
142
|
+
*
|
|
143
|
+
* The prebuild stores ALL entries for each content type.
|
|
144
|
+
* Filtering, ordering, and pagination are applied at runtime.
|
|
145
|
+
*/
|
|
146
|
+
loadEntries(siteId, params) {
|
|
147
|
+
if (params.preview) {
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
if (params.mode === "manual" && params.entryIds?.length) {
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
const manifest = loadManifest(this.prebuildDir);
|
|
154
|
+
if (!manifest || isPrebuildExpired(manifest, this.maxPrebuildAgeSec)) {
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
const cacheKey = `entries-all:${siteId}:${params.contentType}`;
|
|
158
|
+
const relativePath = manifest.keyToFile[cacheKey];
|
|
159
|
+
if (!relativePath) {
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
const cacheFile = loadJsonFile(this.prebuildDir, relativePath);
|
|
163
|
+
if (!cacheFile) {
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
let entries = [...cacheFile.entries];
|
|
167
|
+
if (params.order === "newest") {
|
|
168
|
+
entries.sort((a, b) => {
|
|
169
|
+
const aTime = a.publishedAt ? new Date(a.publishedAt).getTime() : 0;
|
|
170
|
+
const bTime = b.publishedAt ? new Date(b.publishedAt).getTime() : 0;
|
|
171
|
+
return bTime - aTime;
|
|
172
|
+
});
|
|
173
|
+
} else if (params.order === "oldest") {
|
|
174
|
+
entries.sort((a, b) => {
|
|
175
|
+
const aTime = a.publishedAt ? new Date(a.publishedAt).getTime() : 0;
|
|
176
|
+
const bTime = b.publishedAt ? new Date(b.publishedAt).getTime() : 0;
|
|
177
|
+
return aTime - bTime;
|
|
178
|
+
});
|
|
179
|
+
} else if (params.order === "title") {
|
|
180
|
+
entries.sort((a, b) => (a.title || "").localeCompare(b.title || ""));
|
|
181
|
+
}
|
|
182
|
+
const total = entries.length;
|
|
183
|
+
const offset = params.offset ?? 0;
|
|
184
|
+
const limit = params.limit ?? 10;
|
|
185
|
+
if (offset > 0) {
|
|
186
|
+
entries = entries.slice(offset);
|
|
187
|
+
}
|
|
188
|
+
entries = entries.slice(0, limit);
|
|
189
|
+
const prebuildAgeSec = getPrebuildAgeSec(manifest);
|
|
190
|
+
if (params.includeMeta) {
|
|
191
|
+
return {
|
|
192
|
+
data: {
|
|
193
|
+
entries,
|
|
194
|
+
total,
|
|
195
|
+
hasMore: offset + entries.length < total,
|
|
196
|
+
limit,
|
|
197
|
+
offset,
|
|
198
|
+
totalPages: Math.ceil(total / limit),
|
|
199
|
+
currentPage: Math.floor(offset / limit) + 1
|
|
200
|
+
},
|
|
201
|
+
prebuildAgeSec
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
return {
|
|
205
|
+
data: { entries },
|
|
206
|
+
prebuildAgeSec
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Load navigation data from prebuild cache.
|
|
211
|
+
*/
|
|
212
|
+
loadNavigation() {
|
|
213
|
+
const manifest = loadManifest(this.prebuildDir);
|
|
214
|
+
if (!manifest || isPrebuildExpired(manifest, this.maxPrebuildAgeSec)) {
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
const cacheFile = loadJsonFile(
|
|
218
|
+
this.prebuildDir,
|
|
219
|
+
"navigation/menus.json"
|
|
220
|
+
);
|
|
221
|
+
if (!cacheFile) {
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
return {
|
|
225
|
+
data: cacheFile.menus,
|
|
226
|
+
prebuildAgeSec: getPrebuildAgeSec(manifest)
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Get the manifest for inspection.
|
|
231
|
+
*/
|
|
232
|
+
getManifest() {
|
|
233
|
+
return loadManifest(this.prebuildDir);
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Clear the cached manifest (for testing).
|
|
237
|
+
*/
|
|
238
|
+
clearCache() {
|
|
239
|
+
cachedManifest = null;
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
|
|
1
245
|
// ../api/src/endpoints.ts
|
|
2
246
|
var ENDPOINT_DEFINITIONS = {
|
|
3
247
|
// AI endpoints - no cache due to dynamic nature
|
|
@@ -2017,7 +2261,7 @@ var SimpleCache = class {
|
|
|
2017
2261
|
const ttl = options?.ttl ?? this.ttl;
|
|
2018
2262
|
const staleTtl = options?.staleTtl ?? this.staleTtl;
|
|
2019
2263
|
const now = Date.now();
|
|
2020
|
-
|
|
2264
|
+
while (this.cache.size >= this.maxSize && !this.cache.has(key)) {
|
|
2021
2265
|
this.evictOne(now);
|
|
2022
2266
|
}
|
|
2023
2267
|
this.cache.set(key, {
|
|
@@ -2087,7 +2331,7 @@ var SimpleCache = class {
|
|
|
2087
2331
|
};
|
|
2088
2332
|
|
|
2089
2333
|
// src/version.ts
|
|
2090
|
-
var SDK_VERSION = "0.7.
|
|
2334
|
+
var SDK_VERSION = "0.7.4";
|
|
2091
2335
|
|
|
2092
2336
|
// src/client/error.ts
|
|
2093
2337
|
var RiverbankApiError = class _RiverbankApiError extends Error {
|
|
@@ -2362,6 +2606,19 @@ var CircuitOpenError = class extends Error {
|
|
|
2362
2606
|
};
|
|
2363
2607
|
|
|
2364
2608
|
// src/client/index.ts
|
|
2609
|
+
var prebuildModule = null;
|
|
2610
|
+
function getPrebuildModule() {
|
|
2611
|
+
if (prebuildModule !== null) return prebuildModule;
|
|
2612
|
+
if (typeof process === "undefined" || !process.versions?.node) {
|
|
2613
|
+
return null;
|
|
2614
|
+
}
|
|
2615
|
+
try {
|
|
2616
|
+
prebuildModule = (init_loader(), __toCommonJS(loader_exports));
|
|
2617
|
+
return prebuildModule;
|
|
2618
|
+
} catch {
|
|
2619
|
+
return null;
|
|
2620
|
+
}
|
|
2621
|
+
}
|
|
2365
2622
|
setSdkVersion(SDK_VERSION);
|
|
2366
2623
|
var DEFAULT_BROWSER_TIMEOUT_MS = 5e3;
|
|
2367
2624
|
var DEFAULT_SERVER_TIMEOUT_MS = 8e3;
|
|
@@ -2378,6 +2635,24 @@ function isAbortError(error) {
|
|
|
2378
2635
|
return false;
|
|
2379
2636
|
}
|
|
2380
2637
|
function getNetworkErrorCode(error) {
|
|
2638
|
+
if (error.name === "TimeoutError" || error.name === "AbortError") {
|
|
2639
|
+
return "network:timeout";
|
|
2640
|
+
}
|
|
2641
|
+
const nodeError = error;
|
|
2642
|
+
if (nodeError.code) {
|
|
2643
|
+
switch (nodeError.code) {
|
|
2644
|
+
case "ETIMEDOUT":
|
|
2645
|
+
case "ESOCKETTIMEDOUT":
|
|
2646
|
+
return "network:timeout";
|
|
2647
|
+
case "ENOTFOUND":
|
|
2648
|
+
case "EAI_AGAIN":
|
|
2649
|
+
return "network:dns_error";
|
|
2650
|
+
case "ECONNREFUSED":
|
|
2651
|
+
case "ECONNRESET":
|
|
2652
|
+
case "EPIPE":
|
|
2653
|
+
return "network:connection_error";
|
|
2654
|
+
}
|
|
2655
|
+
}
|
|
2381
2656
|
const message = error.message.toLowerCase();
|
|
2382
2657
|
if (message.includes("timeout") || message.includes("timed out")) {
|
|
2383
2658
|
return "network:timeout";
|
|
@@ -2461,6 +2736,12 @@ function createRiverbankClient(config) {
|
|
|
2461
2736
|
staleTtl: staleTtlMs
|
|
2462
2737
|
});
|
|
2463
2738
|
const circuitBreaker = new CircuitBreaker(circuitBreakerConfig);
|
|
2739
|
+
const prebuildDir = config.resilience?.prebuildDir;
|
|
2740
|
+
const prebuildMod = prebuildDir ? getPrebuildModule() : null;
|
|
2741
|
+
const prebuildLoader = prebuildMod?.canUsePrebuild() && prebuildDir ? new prebuildMod.PrebuildLoader({
|
|
2742
|
+
prebuildDir,
|
|
2743
|
+
maxPrebuildAgeSec: config.resilience?.maxPrebuildAgeSec
|
|
2744
|
+
}) : null;
|
|
2464
2745
|
let lastStatus = null;
|
|
2465
2746
|
let isDegraded = false;
|
|
2466
2747
|
function emitStatus(source, data, details) {
|
|
@@ -2470,6 +2751,7 @@ function createRiverbankClient(config) {
|
|
|
2470
2751
|
cacheKey: details.cacheKey,
|
|
2471
2752
|
error: details.error,
|
|
2472
2753
|
staleAgeSec: details.staleAgeSec,
|
|
2754
|
+
prebuildAgeSec: details.prebuildAgeSec,
|
|
2473
2755
|
circuit: circuitBreaker.getState(),
|
|
2474
2756
|
requestId: details.requestId,
|
|
2475
2757
|
durationMs: details.durationMs
|
|
@@ -2510,13 +2792,20 @@ function createRiverbankClient(config) {
|
|
|
2510
2792
|
}));
|
|
2511
2793
|
}
|
|
2512
2794
|
}
|
|
2513
|
-
if (!options.
|
|
2514
|
-
const
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2795
|
+
if (!isPreview && options.prebuildFallback) {
|
|
2796
|
+
const prebuildResult = options.prebuildFallback();
|
|
2797
|
+
if (prebuildResult) {
|
|
2798
|
+
return emitStatus("prebuild", prebuildResult.data, statusDetails({
|
|
2799
|
+
prebuildAgeSec: prebuildResult.prebuildAgeSec,
|
|
2800
|
+
error: { code: "circuit_open", message: "Circuit breaker is open" }
|
|
2801
|
+
}));
|
|
2802
|
+
}
|
|
2519
2803
|
}
|
|
2804
|
+
const circuitState = circuitBreaker.getState();
|
|
2805
|
+
emitStatus("error", null, statusDetails({
|
|
2806
|
+
error: { code: "circuit_open", message: "Circuit breaker is open" }
|
|
2807
|
+
}));
|
|
2808
|
+
throw new CircuitOpenError(circuitState);
|
|
2520
2809
|
}
|
|
2521
2810
|
try {
|
|
2522
2811
|
let data;
|
|
@@ -2566,6 +2855,16 @@ function createRiverbankClient(config) {
|
|
|
2566
2855
|
}));
|
|
2567
2856
|
}
|
|
2568
2857
|
}
|
|
2858
|
+
if (!isPreview && options.prebuildFallback) {
|
|
2859
|
+
const prebuildResult = options.prebuildFallback();
|
|
2860
|
+
if (prebuildResult) {
|
|
2861
|
+
const errorInfo2 = error instanceof RiverbankApiError ? { code: error.code, message: error.message } : { message: error.message };
|
|
2862
|
+
return emitStatus("prebuild", prebuildResult.data, statusDetails({
|
|
2863
|
+
prebuildAgeSec: prebuildResult.prebuildAgeSec,
|
|
2864
|
+
error: errorInfo2
|
|
2865
|
+
}));
|
|
2866
|
+
}
|
|
2867
|
+
}
|
|
2569
2868
|
const errorInfo = error instanceof RiverbankApiError ? { code: error.code, message: error.message } : { message: error.message };
|
|
2570
2869
|
emitStatus("error", null, statusDetails({ error: errorInfo }));
|
|
2571
2870
|
throw error;
|
|
@@ -2591,20 +2890,29 @@ function createRiverbankClient(config) {
|
|
|
2591
2890
|
);
|
|
2592
2891
|
}
|
|
2593
2892
|
const cacheKey = `site:${slug || domain || id}`;
|
|
2893
|
+
const siteId = id || slug || domain;
|
|
2594
2894
|
return resilientFetch(cacheKey, async (sig) => {
|
|
2595
2895
|
const apiParams = {};
|
|
2596
2896
|
if (params.slug) apiParams.slug = params.slug;
|
|
2597
2897
|
if (params.domain) apiParams.domain = params.domain;
|
|
2598
2898
|
if (params.id) apiParams.id = params.id;
|
|
2599
2899
|
return await apiClient({ endpoint: "getSite", params: apiParams, options: { signal: sig } });
|
|
2600
|
-
}, {
|
|
2900
|
+
}, {
|
|
2901
|
+
signal,
|
|
2902
|
+
prebuildFallback: prebuildLoader && siteId ? () => prebuildLoader.loadSite(siteId) : void 0
|
|
2903
|
+
});
|
|
2601
2904
|
},
|
|
2602
2905
|
async getPage(params) {
|
|
2603
|
-
const { siteId, path, preview = false, signal } = params;
|
|
2604
|
-
const cacheKey = `page:${siteId}:${
|
|
2906
|
+
const { siteId, path: path2, preview = false, signal } = params;
|
|
2907
|
+
const cacheKey = `page:${siteId}:${path2}:${preview}`;
|
|
2605
2908
|
return resilientFetch(cacheKey, async (sig) => {
|
|
2606
|
-
return await apiClient({ endpoint: "getContentByPath", params: { siteId }, body: { path, preview }, options: { signal: sig } });
|
|
2607
|
-
}, {
|
|
2909
|
+
return await apiClient({ endpoint: "getContentByPath", params: { siteId }, body: { path: path2, preview }, options: { signal: sig } });
|
|
2910
|
+
}, {
|
|
2911
|
+
preview,
|
|
2912
|
+
signal,
|
|
2913
|
+
// Prebuild fallback only for published pages (not preview)
|
|
2914
|
+
prebuildFallback: prebuildLoader && !preview ? () => prebuildLoader.loadPage(siteId, path2) : void 0
|
|
2915
|
+
});
|
|
2608
2916
|
},
|
|
2609
2917
|
async getEntries(params) {
|
|
2610
2918
|
const { siteId, contentType, limit, offset, order, preview = false, mode, entryIds, includeMeta, signal } = params;
|
|
@@ -2633,7 +2941,12 @@ function createRiverbankClient(config) {
|
|
|
2633
2941
|
}
|
|
2634
2942
|
};
|
|
2635
2943
|
return await apiClient({ endpoint: "listPublishedEntries", params: apiParams, options: { signal: sig } });
|
|
2636
|
-
}, {
|
|
2944
|
+
}, {
|
|
2945
|
+
preview,
|
|
2946
|
+
signal,
|
|
2947
|
+
// Prebuild fallback only for published entries (not preview, not manual mode)
|
|
2948
|
+
prebuildFallback: prebuildLoader && !preview ? () => prebuildLoader.loadEntries(siteId, params) : void 0
|
|
2949
|
+
});
|
|
2637
2950
|
},
|
|
2638
2951
|
async getEntry(params) {
|
|
2639
2952
|
const { siteId, contentType, slug, signal } = params;
|
|
@@ -2698,15 +3011,15 @@ function createRiverbankClient(config) {
|
|
|
2698
3011
|
}, { signal });
|
|
2699
3012
|
},
|
|
2700
3013
|
async checkRedirect(params) {
|
|
2701
|
-
const { siteId, path, signal } = params;
|
|
2702
|
-
if (!siteId || !
|
|
3014
|
+
const { siteId, path: path2, signal } = params;
|
|
3015
|
+
if (!siteId || !path2) {
|
|
2703
3016
|
throw new Error("checkRedirect() requires siteId and path");
|
|
2704
3017
|
}
|
|
2705
|
-
const cacheKey = `redirect:${siteId}:${
|
|
3018
|
+
const cacheKey = `redirect:${siteId}:${path2}`;
|
|
2706
3019
|
return resilientFetch(cacheKey, async (sig) => {
|
|
2707
3020
|
return await apiClient({
|
|
2708
3021
|
endpoint: "checkRedirect",
|
|
2709
|
-
params: { site: siteId, path },
|
|
3022
|
+
params: { site: siteId, path: path2 },
|
|
2710
3023
|
options: { signal: sig }
|
|
2711
3024
|
});
|
|
2712
3025
|
}, { signal });
|
|
@@ -2726,6 +3039,14 @@ function createRiverbankClient(config) {
|
|
|
2726
3039
|
export {
|
|
2727
3040
|
API_ENDPOINTS,
|
|
2728
3041
|
buildEndpointURL,
|
|
3042
|
+
SDK_VERSION,
|
|
3043
|
+
PREBUILD_PAGE_SIZE,
|
|
3044
|
+
DEFAULT_PREBUILD_DIR,
|
|
3045
|
+
init_constants,
|
|
3046
|
+
canUsePrebuild,
|
|
3047
|
+
PrebuildLoader,
|
|
3048
|
+
createPrebuildLoader,
|
|
3049
|
+
init_loader,
|
|
2729
3050
|
createRiverbankClient
|
|
2730
3051
|
};
|
|
2731
|
-
//# sourceMappingURL=chunk-
|
|
3052
|
+
//# sourceMappingURL=chunk-JNU7ZS2V.mjs.map
|