@riverbankcms/sdk 0.7.5 → 0.8.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/README.md +88 -1
- package/dist/cli/index.js +3693 -39
- package/dist/cli/index.js.map +1 -1
- package/dist/client/client.d.mts +2 -2
- package/dist/client/client.d.ts +2 -2
- package/dist/client/client.js +105 -2
- package/dist/client/client.js.map +1 -1
- package/dist/client/client.mjs +105 -2
- 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/usePage-CdnO2CP5.d.mts +6875 -0
- package/dist/client/usePage-_ksKXlUF.d.ts +6875 -0
- package/dist/server/{Layout-qWLdVm5-.d.mts → Layout-D4J009eS.d.mts} +1 -1
- package/dist/server/{Layout-Yluyb6sK.d.ts → Layout-l2v4Qa6E.d.ts} +1 -1
- package/dist/server/{chunk-2NBNOY3C.mjs → chunk-65A5HAUZ.mjs} +106 -3
- package/dist/server/chunk-65A5HAUZ.mjs.map +1 -0
- package/dist/server/{chunk-KH3EXBJM.js → chunk-WM646WI3.js} +106 -3
- package/dist/server/chunk-WM646WI3.js.map +1 -0
- package/dist/server/{components-Di5ME6He.d.ts → components-D2uCKCj7.d.ts} +3 -3
- package/dist/server/{components-DNHfSCML.d.mts → components-vtYEmmPF.d.mts} +3 -3
- package/dist/server/components.d.mts +5 -5
- package/dist/server/components.d.ts +5 -5
- package/dist/server/config-validation.d.mts +2 -2
- package/dist/server/config-validation.d.ts +2 -2
- package/dist/server/config.d.mts +3 -3
- package/dist/server/config.d.ts +3 -3
- package/dist/server/data.d.mts +2 -2
- package/dist/server/data.d.ts +2 -2
- package/dist/server/{index-Clm3skz_.d.mts → index-2qnY7VH_.d.mts} +1 -1
- package/dist/server/{index-DLvNddi-.d.ts → index-BxrAuL9K.d.ts} +1 -1
- package/dist/server/{index-C9Ra8dza.d.ts → index-CH_dvF6n.d.ts} +2 -2
- package/dist/server/{index--Oyunk_B.d.mts → index-DfWg1Qle.d.mts} +2 -2
- package/dist/server/index.d.mts +13 -5
- package/dist/server/index.d.ts +13 -5
- package/dist/server/index.js +10 -10
- package/dist/server/index.mjs +1 -1
- package/dist/server/{loadContent-D7LQwI0o.d.ts → loadContent-DECnsp4k.d.ts} +3 -3
- package/dist/server/{loadContent-DVfuBLiZ.d.mts → loadContent-Du5kS8UM.d.mts} +3 -3
- package/dist/server/{loadPage-BmYJCe_V.d.ts → loadPage-BZohBxxf.d.ts} +2 -2
- package/dist/server/{loadPage-BucnLHmE.d.mts → loadPage-VBorKlWv.d.mts} +2 -2
- package/dist/server/metadata.d.mts +4 -4
- package/dist/server/metadata.d.ts +4 -4
- package/dist/server/navigation.d.mts +2 -2
- package/dist/server/navigation.d.ts +2 -2
- package/dist/server/next.d.mts +38 -7
- package/dist/server/next.d.ts +38 -7
- package/dist/server/next.js +29 -11
- package/dist/server/next.js.map +1 -1
- package/dist/server/next.mjs +29 -11
- 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.d.mts +7 -7
- package/dist/server/rendering.d.ts +7 -7
- package/dist/server/routing.d.mts +4 -4
- package/dist/server/routing.d.ts +4 -4
- package/dist/server/server.d.mts +5 -5
- package/dist/server/server.d.ts +5 -5
- package/dist/server/server.js +2 -2
- package/dist/server/server.mjs +1 -1
- package/dist/server/{types-C-LShyIg.d.mts → types-BRQ_6yOc.d.mts} +43 -1
- package/dist/server/{types-BjgZt8xJ.d.mts → types-CJfJwcuL.d.mts} +37 -0
- package/dist/server/{types-Dt98DeYa.d.ts → types-CgSO0yxg.d.ts} +8 -0
- package/dist/server/{types-BRQyLrQU.d.ts → types-D0rPF8l5.d.ts} +43 -1
- package/dist/server/{types-DLBhEPSt.d.ts → types-D8XqwoVd.d.ts} +37 -0
- package/dist/server/{types-BSV6Vc-P.d.mts → types-DT30Qy7x.d.mts} +8 -0
- package/dist/server/{validation-DU2YE7u5.d.ts → validation-D1LaY1kQ.d.ts} +1 -1
- package/dist/server/{validation-BGuRo8P1.d.mts → validation-Pv3Zs6dP.d.mts} +1 -1
- package/package.json +2 -1
- package/dist/server/chunk-2NBNOY3C.mjs.map +0 -1
- package/dist/server/chunk-KH3EXBJM.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { buildMenu, buildLogo } from './navigation.mjs';
|
|
3
|
-
import { S as SiteResponse, R as RiverbankClient } from './types-
|
|
3
|
+
import { S as SiteResponse, R as RiverbankClient } from './types-BRQ_6yOc.mjs';
|
|
4
4
|
|
|
5
5
|
type HeaderData = {
|
|
6
6
|
menu: ReturnType<typeof buildMenu>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { buildMenu, buildLogo } from './navigation.js';
|
|
3
|
-
import { S as SiteResponse, R as RiverbankClient } from './types-
|
|
3
|
+
import { S as SiteResponse, R as RiverbankClient } from './types-D0rPF8l5.js';
|
|
4
4
|
|
|
5
5
|
type HeaderData = {
|
|
6
6
|
menu: ReturnType<typeof buildMenu>;
|
|
@@ -1268,6 +1268,15 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
1268
1268
|
auth: "user",
|
|
1269
1269
|
responseKind: "json"
|
|
1270
1270
|
},
|
|
1271
|
+
// Public routable content for SDK SSG
|
|
1272
|
+
getPublicRoutableContent: {
|
|
1273
|
+
path: "/public/sites/{siteId}/routable-content",
|
|
1274
|
+
method: "GET",
|
|
1275
|
+
revalidate: 60,
|
|
1276
|
+
tags: ["site-{siteId}", "routable-content-{siteId}"],
|
|
1277
|
+
auth: "public",
|
|
1278
|
+
responseKind: "json"
|
|
1279
|
+
},
|
|
1271
1280
|
// Generic public content preview (preferred)
|
|
1272
1281
|
getPublishedEntryPreview: {
|
|
1273
1282
|
path: "/public/content/{siteId}/{type}/{slug}/preview",
|
|
@@ -2331,13 +2340,16 @@ var SimpleCache = class {
|
|
|
2331
2340
|
};
|
|
2332
2341
|
|
|
2333
2342
|
// src/version.ts
|
|
2334
|
-
var SDK_VERSION = "0.
|
|
2343
|
+
var SDK_VERSION = "0.8.0";
|
|
2335
2344
|
|
|
2336
2345
|
// src/client/error.ts
|
|
2337
2346
|
var RiverbankApiError = class _RiverbankApiError extends Error {
|
|
2338
2347
|
constructor(apiError) {
|
|
2339
2348
|
super(apiError.message);
|
|
2340
2349
|
this.name = "RiverbankApiError";
|
|
2350
|
+
if ("cause" in apiError && apiError.cause) {
|
|
2351
|
+
this.cause = apiError.cause;
|
|
2352
|
+
}
|
|
2341
2353
|
this.code = apiError.code;
|
|
2342
2354
|
this.requestId = apiError.requestId;
|
|
2343
2355
|
this.status = apiError.status;
|
|
@@ -2486,13 +2498,75 @@ var DEFAULT_CIRCUIT_BREAKER_CONFIG = {
|
|
|
2486
2498
|
resetTimeoutMs: 3e4,
|
|
2487
2499
|
halfOpenMaxRequests: 2
|
|
2488
2500
|
};
|
|
2501
|
+
var PERMANENT_NETWORK_ERROR_CODES = /* @__PURE__ */ new Set([
|
|
2502
|
+
"ECONNREFUSED",
|
|
2503
|
+
// Server is not running / port not listening
|
|
2504
|
+
"ENOTFOUND",
|
|
2505
|
+
// DNS lookup failed - hostname doesn't exist
|
|
2506
|
+
"EAI_AGAIN"
|
|
2507
|
+
// DNS lookup timeout (usually permanent for invalid hosts)
|
|
2508
|
+
]);
|
|
2509
|
+
var TRANSIENT_NETWORK_ERROR_CODES = /* @__PURE__ */ new Set([
|
|
2510
|
+
"ECONNRESET",
|
|
2511
|
+
// Connection was reset mid-request (server dropped it)
|
|
2512
|
+
"EPIPE",
|
|
2513
|
+
// Broken pipe (connection closed while writing)
|
|
2514
|
+
"ETIMEDOUT",
|
|
2515
|
+
// Connection timed out (could be temporary congestion)
|
|
2516
|
+
"ESOCKETTIMEDOUT"
|
|
2517
|
+
// Socket timeout
|
|
2518
|
+
]);
|
|
2519
|
+
var NODE_NETWORK_ERROR_CODES = /* @__PURE__ */ new Set([
|
|
2520
|
+
// Permanent
|
|
2521
|
+
"ECONNREFUSED",
|
|
2522
|
+
"ENOTFOUND",
|
|
2523
|
+
"EAI_AGAIN",
|
|
2524
|
+
// Transient
|
|
2525
|
+
"ECONNRESET",
|
|
2526
|
+
"EPIPE",
|
|
2527
|
+
"ETIMEDOUT",
|
|
2528
|
+
"ESOCKETTIMEDOUT"
|
|
2529
|
+
]);
|
|
2530
|
+
function isNodeNetworkErrorCode(code) {
|
|
2531
|
+
return !code.includes(":") && NODE_NETWORK_ERROR_CODES.has(code);
|
|
2532
|
+
}
|
|
2533
|
+
function getErrorCodeFromCause(error) {
|
|
2534
|
+
let current = error;
|
|
2535
|
+
while (current) {
|
|
2536
|
+
const nodeError = current;
|
|
2537
|
+
if (nodeError.code && typeof nodeError.code === "string") {
|
|
2538
|
+
if (isNodeNetworkErrorCode(nodeError.code)) {
|
|
2539
|
+
return nodeError.code;
|
|
2540
|
+
}
|
|
2541
|
+
}
|
|
2542
|
+
const errorWithCause = current;
|
|
2543
|
+
current = errorWithCause.cause;
|
|
2544
|
+
}
|
|
2545
|
+
return void 0;
|
|
2546
|
+
}
|
|
2489
2547
|
function isTransientError(error) {
|
|
2490
2548
|
if (error instanceof RiverbankApiError) {
|
|
2549
|
+
const errorCode = getErrorCodeFromCause(error);
|
|
2550
|
+
if (errorCode && PERMANENT_NETWORK_ERROR_CODES.has(errorCode)) {
|
|
2551
|
+
return false;
|
|
2552
|
+
}
|
|
2491
2553
|
if (error.status === 0) return true;
|
|
2492
2554
|
if (error.status === 429) return true;
|
|
2493
2555
|
if (error.status >= 500) return true;
|
|
2494
2556
|
return false;
|
|
2495
2557
|
}
|
|
2558
|
+
if (error instanceof TypeError) {
|
|
2559
|
+
const errorCode = getErrorCodeFromCause(error);
|
|
2560
|
+
if (errorCode) {
|
|
2561
|
+
if (PERMANENT_NETWORK_ERROR_CODES.has(errorCode)) {
|
|
2562
|
+
return false;
|
|
2563
|
+
}
|
|
2564
|
+
if (TRANSIENT_NETWORK_ERROR_CODES.has(errorCode)) {
|
|
2565
|
+
return true;
|
|
2566
|
+
}
|
|
2567
|
+
}
|
|
2568
|
+
return true;
|
|
2569
|
+
}
|
|
2496
2570
|
return true;
|
|
2497
2571
|
}
|
|
2498
2572
|
function calculateBackoff(attempt, config) {
|
|
@@ -2753,12 +2827,23 @@ function convertToTypedError(error) {
|
|
|
2753
2827
|
message: networkError.message || "Network request failed",
|
|
2754
2828
|
requestId: `local-${Date.now()}`,
|
|
2755
2829
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
2756
|
-
status: 0
|
|
2830
|
+
status: 0,
|
|
2757
2831
|
// No HTTP response received
|
|
2832
|
+
cause: networkError
|
|
2833
|
+
// Preserve original error for retry/circuit breaker classification
|
|
2758
2834
|
});
|
|
2759
2835
|
}
|
|
2760
2836
|
throw error;
|
|
2761
2837
|
}
|
|
2838
|
+
function detectKeyType(apiKey) {
|
|
2839
|
+
if (apiKey.startsWith("bld_live_sk_") || apiKey.startsWith("bld_test_sk_")) {
|
|
2840
|
+
return "content";
|
|
2841
|
+
}
|
|
2842
|
+
if (apiKey.startsWith("bld_preview_sk_")) {
|
|
2843
|
+
return "preview";
|
|
2844
|
+
}
|
|
2845
|
+
return "unknown";
|
|
2846
|
+
}
|
|
2762
2847
|
function createRiverbankClient(config) {
|
|
2763
2848
|
if (!config.baseUrl) {
|
|
2764
2849
|
throw new Error(
|
|
@@ -2789,6 +2874,7 @@ function createRiverbankClient(config) {
|
|
|
2789
2874
|
resetTimeoutMs: config.resilience?.circuitBreaker?.resetTimeoutMs ?? DEFAULT_CIRCUIT_BREAKER_CONFIG.resetTimeoutMs,
|
|
2790
2875
|
halfOpenMaxRequests: config.resilience?.circuitBreaker?.halfOpenMaxRequests ?? DEFAULT_CIRCUIT_BREAKER_CONFIG.halfOpenMaxRequests
|
|
2791
2876
|
};
|
|
2877
|
+
const keyType = detectKeyType(config.apiKey);
|
|
2792
2878
|
const apiClient = createBearerAPIClient(config.apiKey, config.baseUrl);
|
|
2793
2879
|
const cache = new SimpleCache({
|
|
2794
2880
|
maxSize: cacheMaxSize,
|
|
@@ -3084,9 +3170,26 @@ function createRiverbankClient(config) {
|
|
|
3084
3170
|
});
|
|
3085
3171
|
}, { signal });
|
|
3086
3172
|
},
|
|
3173
|
+
async getAllPublishedRoutes(params) {
|
|
3174
|
+
const { siteId, signal } = params;
|
|
3175
|
+
if (!siteId) {
|
|
3176
|
+
throw new Error("getAllPublishedRoutes() requires siteId");
|
|
3177
|
+
}
|
|
3178
|
+
const cacheKey = `routable-content:${siteId}:published`;
|
|
3179
|
+
return resilientFetch(cacheKey, async (sig) => {
|
|
3180
|
+
return await apiClient({
|
|
3181
|
+
endpoint: "getPublicRoutableContent",
|
|
3182
|
+
params: { siteId, publishedOnly: "true" },
|
|
3183
|
+
options: { signal: sig }
|
|
3184
|
+
});
|
|
3185
|
+
}, { signal });
|
|
3186
|
+
},
|
|
3087
3187
|
clearCache() {
|
|
3088
3188
|
cache.clear();
|
|
3089
3189
|
},
|
|
3190
|
+
getKeyType() {
|
|
3191
|
+
return keyType;
|
|
3192
|
+
},
|
|
3090
3193
|
getLastEmittedStatus() {
|
|
3091
3194
|
return lastStatus;
|
|
3092
3195
|
},
|
|
@@ -3109,4 +3212,4 @@ export {
|
|
|
3109
3212
|
init_loader,
|
|
3110
3213
|
createRiverbankClient
|
|
3111
3214
|
};
|
|
3112
|
-
//# sourceMappingURL=chunk-
|
|
3215
|
+
//# sourceMappingURL=chunk-65A5HAUZ.mjs.map
|