@riverbankcms/sdk 0.3.0 → 0.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/README.md +255 -1
- package/dist/cli/index.js +249 -40
- package/dist/cli/index.js.map +1 -1
- package/dist/client/bookings.js +15 -1
- package/dist/client/bookings.js.map +1 -1
- package/dist/client/bookings.mjs +15 -1
- 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 +33 -5
- package/dist/client/client.js.map +1 -1
- package/dist/client/client.mjs +33 -5
- 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 +31 -33
- package/dist/client/rendering/client.js.map +1 -1
- package/dist/client/rendering/client.mjs +31 -33
- package/dist/client/rendering/client.mjs.map +1 -1
- package/dist/client/usePage-BcjWPXvh.d.mts +6388 -0
- package/dist/client/usePage-C3ZKNwY7.d.mts +6393 -0
- package/dist/client/usePage-CyYpOJud.d.ts +6388 -0
- package/dist/client/usePage-gpVaeWDy.d.ts +6393 -0
- package/dist/server/{Layout-CsAQ-0Fv.d.mts → Layout-B_zUr9ci.d.mts} +1 -1
- package/dist/server/{Layout-BM_KmCxO.d.ts → Layout-CHG77dhK.d.ts} +1 -1
- package/dist/server/blockKinds-B6MWzNWp.d.mts +16 -0
- package/dist/server/blockKinds-B6MWzNWp.d.ts +16 -0
- package/dist/server/chunk-BOHTTHY5.mjs +406 -0
- package/dist/server/chunk-BOHTTHY5.mjs.map +1 -0
- package/dist/server/{chunk-5R4NMVXA.js → chunk-BUCJWG6G.js} +5 -5
- package/dist/server/chunk-BUCJWG6G.js.map +1 -0
- package/dist/server/chunk-D2QLTPUJ.mjs +33 -0
- package/dist/server/chunk-D2QLTPUJ.mjs.map +1 -0
- package/dist/server/{chunk-62ZJI564.js → chunk-FPYK6527.js} +4 -4
- package/dist/server/{chunk-62ZJI564.js.map → chunk-FPYK6527.js.map} +1 -1
- package/dist/server/{chunk-YXDDFG3N.js → chunk-G4CKM4EN.js} +1 -1
- package/dist/server/chunk-G4CKM4EN.js.map +1 -0
- package/dist/server/chunk-GERCMTPQ.js +33 -0
- package/dist/server/chunk-GERCMTPQ.js.map +1 -0
- package/dist/server/{chunk-SF63XAX7.js → chunk-IT5ICP43.js} +24 -4
- package/dist/server/chunk-IT5ICP43.js.map +1 -0
- package/dist/server/{chunk-GWBMJPLH.mjs → chunk-M5KTLZTD.mjs} +1 -1
- package/dist/server/chunk-M5KTLZTD.mjs.map +1 -0
- package/dist/server/{chunk-QFFQTOY3.mjs → chunk-N3PX76AP.mjs} +11 -3
- package/dist/server/{chunk-QFFQTOY3.mjs.map → chunk-N3PX76AP.mjs.map} +1 -1
- package/dist/server/{chunk-O5DC7MYW.mjs → chunk-NKXS4TBK.mjs} +24 -4
- package/dist/server/chunk-NKXS4TBK.mjs.map +1 -0
- package/dist/server/{chunk-INWKF3IC.js → chunk-P6CDRJN3.js} +8 -8
- package/dist/server/{chunk-INWKF3IC.js.map → chunk-P6CDRJN3.js.map} +1 -1
- package/dist/server/{chunk-UFVCBGBY.js → chunk-R5B6IOFQ.js} +11 -3
- package/dist/server/chunk-R5B6IOFQ.js.map +1 -0
- package/dist/server/{chunk-FK64TZBT.mjs → chunk-SFQ7VF3G.mjs} +2 -2
- package/dist/server/{chunk-JTAERCX2.mjs → chunk-VVFYHAUD.mjs} +2 -2
- package/dist/server/{chunk-PN3CHDVX.mjs → chunk-XK2YIISA.mjs} +2 -2
- package/dist/server/chunk-XK2YIISA.mjs.map +1 -0
- package/dist/server/chunk-ZIM53VP6.js +406 -0
- package/dist/server/chunk-ZIM53VP6.js.map +1 -0
- package/dist/server/{components-DJBLu_yc.d.ts → components-BYxloYJm.d.ts} +3 -3
- package/dist/server/{components-CI3JiOYA.d.mts → components-Ci5nlyUj.d.mts} +3 -3
- package/dist/server/components.d.mts +7 -6
- package/dist/server/components.d.ts +7 -6
- package/dist/server/components.js +3 -3
- package/dist/server/components.mjs +2 -2
- package/dist/server/config-validation.d.mts +5 -300
- package/dist/server/config-validation.d.ts +5 -300
- package/dist/server/config-validation.js +6 -3
- package/dist/server/config-validation.js.map +1 -1
- package/dist/server/config-validation.mjs +5 -2
- package/dist/server/config.d.mts +43 -4
- package/dist/server/config.d.ts +43 -4
- package/dist/server/config.js +27 -3
- package/dist/server/config.js.map +1 -1
- package/dist/server/config.mjs +26 -2
- package/dist/server/config.mjs.map +1 -1
- package/dist/server/data.d.mts +5 -4
- package/dist/server/data.d.ts +5 -4
- package/dist/server/data.js +2 -2
- package/dist/server/data.mjs +1 -1
- package/dist/server/{index-Dus2gkY6.d.ts → index-DbSfrRA0.d.ts} +1 -1
- package/dist/server/{index-DoX3ELQn.d.mts → index-Dj7VKH34.d.mts} +1 -1
- package/dist/server/index.d.mts +5 -4
- package/dist/server/index.d.ts +5 -4
- package/dist/server/index.js +6 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +5 -1
- package/dist/server/{loadContent-CdXDGsJM.d.ts → loadContent-BqQ-VPMW.d.ts} +4 -4
- package/dist/server/{loadContent-v2n6pOlO.d.mts → loadContent-Czu7xTOU.d.mts} +4 -4
- package/dist/server/{loadPage-bejlajm9.d.ts → loadPage-BElEkA_J.d.ts} +3 -3
- package/dist/server/{loadPage-en10WQrt.d.mts → loadPage-Dw57_n5N.d.mts} +3 -3
- package/dist/server/loadPage-E3ZC6NHB.js +11 -0
- package/dist/server/{loadPage-3ECPF426.js.map → loadPage-E3ZC6NHB.js.map} +1 -1
- package/dist/server/{loadPage-LW273NYO.mjs → loadPage-E7L7NMR3.mjs} +3 -3
- package/dist/server/metadata.d.mts +5 -4
- package/dist/server/metadata.d.ts +5 -4
- package/dist/server/navigation.d.mts +2 -2
- package/dist/server/navigation.d.ts +2 -2
- package/dist/server/rendering/server.d.mts +8 -7
- package/dist/server/rendering/server.d.ts +8 -7
- package/dist/server/rendering/server.js +4 -4
- package/dist/server/rendering/server.mjs +3 -3
- package/dist/server/rendering.d.mts +9 -8
- package/dist/server/rendering.d.ts +9 -8
- package/dist/server/rendering.js +6 -6
- package/dist/server/rendering.mjs +5 -5
- package/dist/server/routing.d.mts +5 -4
- package/dist/server/routing.d.ts +5 -4
- package/dist/server/routing.js +1 -1
- package/dist/server/routing.mjs +1 -1
- package/dist/server/server.d.mts +7 -6
- package/dist/server/server.d.ts +7 -6
- package/dist/server/server.js +4 -4
- package/dist/server/server.mjs +3 -3
- package/dist/server/theme-bridge.js +7 -7
- package/dist/server/theme-bridge.mjs +1 -1
- package/dist/server/{types-Cc7lyPkN.d.ts → types-5XdVD2J1.d.ts} +2 -0
- package/dist/server/{types-nVerjjdv.d.mts → types-BA-J9K8r.d.mts} +2 -0
- package/dist/server/{types-CLusapsM.d.mts → types-BC9eB2KH.d.mts} +65 -17
- package/dist/server/{types-_nDnPHpv.d.ts → types-BuZJWVmj.d.mts} +4 -1
- package/dist/server/{types-Ls6BkLKg.d.ts → types-CAnC529E.d.ts} +65 -17
- package/dist/server/{types-D-rqOU5I.d.ts → types-CMqVHYLG.d.ts} +264 -2
- package/dist/server/{types-Bq3520hK.d.mts → types-CYfHxUhe.d.mts} +264 -2
- package/dist/server/{types-_nDnPHpv.d.mts → types-DSFvXKhO.d.ts} +4 -1
- package/dist/server/validation-C7W2Fe0i.d.ts +459 -0
- package/dist/server/validation-hg1sqhrt.d.mts +459 -0
- package/package.json +2 -1
- package/dist/server/chunk-5R4NMVXA.js.map +0 -1
- package/dist/server/chunk-BPKYRPCQ.mjs +0 -215
- package/dist/server/chunk-BPKYRPCQ.mjs.map +0 -1
- package/dist/server/chunk-GWBMJPLH.mjs.map +0 -1
- package/dist/server/chunk-O5DC7MYW.mjs.map +0 -1
- package/dist/server/chunk-PN3CHDVX.mjs.map +0 -1
- package/dist/server/chunk-SF63XAX7.js.map +0 -1
- package/dist/server/chunk-UFVCBGBY.js.map +0 -1
- package/dist/server/chunk-XLVL5WPH.js +0 -215
- package/dist/server/chunk-XLVL5WPH.js.map +0 -1
- package/dist/server/chunk-YXDDFG3N.js.map +0 -1
- package/dist/server/loadPage-3ECPF426.js +0 -11
- /package/dist/server/{chunk-FK64TZBT.mjs.map → chunk-SFQ7VF3G.mjs.map} +0 -0
- /package/dist/server/{chunk-JTAERCX2.mjs.map → chunk-VVFYHAUD.mjs.map} +0 -0
- /package/dist/server/{loadPage-LW273NYO.mjs.map → loadPage-E7L7NMR3.mjs.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/data/executeCodeLoaders.ts"],"sourcesContent":["/**\n * Execute code-based data loaders for SDK custom blocks.\n *\n * Code loaders are user-defined async functions that can fetch data\n * from any API (not just whitelisted CMS endpoints). They run\n * server-side during loadPage().\n */\n\nimport type { PageOutline } from '@riverbankcms/blocks';\nimport type { PrefetchContext, ResolvedBlockData } from '@riverbankcms/blocks/system/data';\nimport type { BlockKind } from '../types';\nimport type { DataLoaderContext, DataLoaderOverrides } from './types';\n\n/**\n * Execute code-based data loaders for blocks on a page.\n *\n * Iterates through page blocks and executes any registered loader\n * functions for matching block kinds. Runs all loaders in parallel.\n *\n * @param page - Page outline with blocks to process\n * @param context - Prefetch context (siteId, pageId, previewStage)\n * @param overrides - Map of block kinds to loader functions\n * @returns Resolved data keyed by blockId, then loader key\n *\n * @example\n * ```typescript\n * const codeData = await executeCodeLoaders(page, context, {\n * 'custom.featured-products': {\n * products: async (ctx) => fetchProducts(ctx.content.categoryId),\n * },\n * });\n * // codeData: { 'block-123': { products: [...] } }\n * ```\n */\nexport async function executeCodeLoaders(\n page: PageOutline,\n context: PrefetchContext,\n overrides: DataLoaderOverrides,\n): Promise<ResolvedBlockData> {\n const results: ResolvedBlockData = {};\n const tasks: Promise<void>[] = [];\n\n for (const block of page.blocks) {\n const blockId = block.id;\n if (!blockId) continue;\n\n // Look up loaders for this block kind\n const blockLoaders = overrides[block.kind];\n if (!blockLoaders) continue;\n\n // Get block content (prefer draft in preview mode)\n const content = (\n (block as { draftContent?: unknown }).draftContent ??\n (block as { content?: unknown }).content ??\n {}\n ) as Record<string, unknown>;\n\n // Execute each loader for this block\n for (const [key, loaderFn] of Object.entries(blockLoaders)) {\n tasks.push(\n (async () => {\n try {\n const loaderContext: DataLoaderContext = {\n siteId: context.siteId ?? '',\n pageId: context.pageId ?? '',\n blockId,\n blockKind: block.kind as BlockKind,\n content,\n previewStage: context.previewStage ?? 'published',\n };\n\n const data = await loaderFn(loaderContext);\n\n if (!results[blockId]) {\n results[blockId] = {};\n }\n results[blockId]![key] = data;\n } catch (error) {\n // Log but don't throw - data loading is best-effort\n // SDK users should handle missing data gracefully in components\n console.warn('[executeCodeLoaders] Loader failed:', {\n blockKind: block.kind,\n loaderKey: key,\n error,\n });\n }\n })(),\n );\n }\n }\n\n await Promise.all(tasks);\n return results;\n}\n\n/**\n * Merge resolved data from config loaders and code loaders.\n *\n * Code loader results take precedence on key conflicts.\n *\n * @param configResults - Data from config-based loaders (CMS endpoints)\n * @param codeResults - Data from code-based loaders (external APIs)\n * @returns Merged data with code results overwriting config on conflicts\n */\nexport function mergeLoaderResults(\n configResults: ResolvedBlockData,\n codeResults: ResolvedBlockData,\n): ResolvedBlockData {\n const merged: ResolvedBlockData = { ...configResults };\n\n for (const [blockId, loaderData] of Object.entries(codeResults)) {\n if (!merged[blockId]) {\n merged[blockId] = {};\n }\n // Code loaders take precedence on key conflicts\n merged[blockId] = { ...merged[blockId], ...loaderData };\n }\n\n return merged;\n}\n"],"mappings":";AAkCA,eAAsB,mBACpB,MACA,SACA,WAC4B;AAC5B,QAAM,UAA6B,CAAC;AACpC,QAAM,QAAyB,CAAC;AAEhC,aAAW,SAAS,KAAK,QAAQ;AAC/B,UAAM,UAAU,MAAM;AACtB,QAAI,CAAC,QAAS;AAGd,UAAM,eAAe,UAAU,MAAM,IAAI;AACzC,QAAI,CAAC,aAAc;AAGnB,UAAM,UACH,MAAqC,gBACrC,MAAgC,WACjC,CAAC;AAIH,eAAW,CAAC,KAAK,QAAQ,KAAK,OAAO,QAAQ,YAAY,GAAG;AAC1D,YAAM;AAAA,SACH,YAAY;AACX,cAAI;AACF,kBAAM,gBAAmC;AAAA,cACvC,QAAQ,QAAQ,UAAU;AAAA,cAC1B,QAAQ,QAAQ,UAAU;AAAA,cAC1B;AAAA,cACA,WAAW,MAAM;AAAA,cACjB;AAAA,cACA,cAAc,QAAQ,gBAAgB;AAAA,YACxC;AAEA,kBAAM,OAAO,MAAM,SAAS,aAAa;AAEzC,gBAAI,CAAC,QAAQ,OAAO,GAAG;AACrB,sBAAQ,OAAO,IAAI,CAAC;AAAA,YACtB;AACA,oBAAQ,OAAO,EAAG,GAAG,IAAI;AAAA,UAC3B,SAAS,OAAO;AAGd,oBAAQ,KAAK,uCAAuC;AAAA,cAClD,WAAW,MAAM;AAAA,cACjB,WAAW;AAAA,cACX;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF,GAAG;AAAA,MACL;AAAA,IACF;AAAA,EACF;AAEA,QAAM,QAAQ,IAAI,KAAK;AACvB,SAAO;AACT;AAWO,SAAS,mBACd,eACA,aACmB;AACnB,QAAM,SAA4B,EAAE,GAAG,cAAc;AAErD,aAAW,CAAC,SAAS,UAAU,KAAK,OAAO,QAAQ,WAAW,GAAG;AAC/D,QAAI,CAAC,OAAO,OAAO,GAAG;AACpB,aAAO,OAAO,IAAI,CAAC;AAAA,IACrB;AAEA,WAAO,OAAO,IAAI,EAAE,GAAG,OAAO,OAAO,GAAG,GAAG,WAAW;AAAA,EACxD;AAEA,SAAO;AACT;","names":[]}
|
|
@@ -2042,9 +2042,9 @@ function createRiverbankClient(config) {
|
|
|
2042
2042
|
});
|
|
2043
2043
|
},
|
|
2044
2044
|
async getEntries(params) {
|
|
2045
|
-
const { siteId, contentType, limit, order, preview = false, mode, entryIds } = params;
|
|
2045
|
+
const { siteId, contentType, limit, offset, order, preview = false, mode, entryIds, includeMeta } = params;
|
|
2046
2046
|
const entryIdsCacheKey = mode === "manual" && entryIds?.length ? entryIds.join(",") : "";
|
|
2047
|
-
const cacheKey = `entries:${siteId}:${contentType}:${limit ?? ""}:${order ?? ""}:${preview}:${mode ?? ""}:${entryIdsCacheKey}`;
|
|
2047
|
+
const cacheKey = `entries:${siteId}:${contentType}:${limit ?? ""}:${offset ?? ""}:${order ?? ""}:${preview}:${mode ?? ""}:${entryIdsCacheKey}:${includeMeta ?? ""}`;
|
|
2048
2048
|
return cachedFetch(cacheKey, async () => {
|
|
2049
2049
|
const apiParams = {
|
|
2050
2050
|
siteId,
|
|
@@ -2053,6 +2053,12 @@ function createRiverbankClient(config) {
|
|
|
2053
2053
|
if (typeof limit === "number") {
|
|
2054
2054
|
apiParams.limit = String(limit);
|
|
2055
2055
|
}
|
|
2056
|
+
if (typeof offset === "number") {
|
|
2057
|
+
apiParams.offset = String(offset);
|
|
2058
|
+
}
|
|
2059
|
+
if (includeMeta) {
|
|
2060
|
+
apiParams.meta = "true";
|
|
2061
|
+
}
|
|
2056
2062
|
if (order === "newest") {
|
|
2057
2063
|
apiParams.order = "published_at.desc";
|
|
2058
2064
|
} else if (order === "oldest") {
|
|
@@ -2117,6 +2123,8 @@ function createRiverbankClient(config) {
|
|
|
2117
2123
|
clearCache() {
|
|
2118
2124
|
cache.clear();
|
|
2119
2125
|
}
|
|
2126
|
+
// Cast to RiverbankClient to satisfy overloaded getEntries signature
|
|
2127
|
+
// The implementation correctly returns the right type based on includeMeta
|
|
2120
2128
|
};
|
|
2121
2129
|
}
|
|
2122
2130
|
|
|
@@ -2125,4 +2133,4 @@ export {
|
|
|
2125
2133
|
buildEndpointURL,
|
|
2126
2134
|
createRiverbankClient
|
|
2127
2135
|
};
|
|
2128
|
-
//# sourceMappingURL=chunk-
|
|
2136
|
+
//# sourceMappingURL=chunk-N3PX76AP.mjs.map
|