@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.
Files changed (140) hide show
  1. package/README.md +255 -1
  2. package/dist/cli/index.js +249 -40
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/client/bookings.js +15 -1
  5. package/dist/client/bookings.js.map +1 -1
  6. package/dist/client/bookings.mjs +15 -1
  7. package/dist/client/bookings.mjs.map +1 -1
  8. package/dist/client/client.d.mts +2 -2
  9. package/dist/client/client.d.ts +2 -2
  10. package/dist/client/client.js +33 -5
  11. package/dist/client/client.js.map +1 -1
  12. package/dist/client/client.mjs +33 -5
  13. package/dist/client/client.mjs.map +1 -1
  14. package/dist/client/hooks.d.mts +2 -2
  15. package/dist/client/hooks.d.ts +2 -2
  16. package/dist/client/rendering/client.js +31 -33
  17. package/dist/client/rendering/client.js.map +1 -1
  18. package/dist/client/rendering/client.mjs +31 -33
  19. package/dist/client/rendering/client.mjs.map +1 -1
  20. package/dist/client/usePage-BcjWPXvh.d.mts +6388 -0
  21. package/dist/client/usePage-C3ZKNwY7.d.mts +6393 -0
  22. package/dist/client/usePage-CyYpOJud.d.ts +6388 -0
  23. package/dist/client/usePage-gpVaeWDy.d.ts +6393 -0
  24. package/dist/server/{Layout-CsAQ-0Fv.d.mts → Layout-B_zUr9ci.d.mts} +1 -1
  25. package/dist/server/{Layout-BM_KmCxO.d.ts → Layout-CHG77dhK.d.ts} +1 -1
  26. package/dist/server/blockKinds-B6MWzNWp.d.mts +16 -0
  27. package/dist/server/blockKinds-B6MWzNWp.d.ts +16 -0
  28. package/dist/server/chunk-BOHTTHY5.mjs +406 -0
  29. package/dist/server/chunk-BOHTTHY5.mjs.map +1 -0
  30. package/dist/server/{chunk-5R4NMVXA.js → chunk-BUCJWG6G.js} +5 -5
  31. package/dist/server/chunk-BUCJWG6G.js.map +1 -0
  32. package/dist/server/chunk-D2QLTPUJ.mjs +33 -0
  33. package/dist/server/chunk-D2QLTPUJ.mjs.map +1 -0
  34. package/dist/server/{chunk-62ZJI564.js → chunk-FPYK6527.js} +4 -4
  35. package/dist/server/{chunk-62ZJI564.js.map → chunk-FPYK6527.js.map} +1 -1
  36. package/dist/server/{chunk-YXDDFG3N.js → chunk-G4CKM4EN.js} +1 -1
  37. package/dist/server/chunk-G4CKM4EN.js.map +1 -0
  38. package/dist/server/chunk-GERCMTPQ.js +33 -0
  39. package/dist/server/chunk-GERCMTPQ.js.map +1 -0
  40. package/dist/server/{chunk-SF63XAX7.js → chunk-IT5ICP43.js} +24 -4
  41. package/dist/server/chunk-IT5ICP43.js.map +1 -0
  42. package/dist/server/{chunk-GWBMJPLH.mjs → chunk-M5KTLZTD.mjs} +1 -1
  43. package/dist/server/chunk-M5KTLZTD.mjs.map +1 -0
  44. package/dist/server/{chunk-QFFQTOY3.mjs → chunk-N3PX76AP.mjs} +11 -3
  45. package/dist/server/{chunk-QFFQTOY3.mjs.map → chunk-N3PX76AP.mjs.map} +1 -1
  46. package/dist/server/{chunk-O5DC7MYW.mjs → chunk-NKXS4TBK.mjs} +24 -4
  47. package/dist/server/chunk-NKXS4TBK.mjs.map +1 -0
  48. package/dist/server/{chunk-INWKF3IC.js → chunk-P6CDRJN3.js} +8 -8
  49. package/dist/server/{chunk-INWKF3IC.js.map → chunk-P6CDRJN3.js.map} +1 -1
  50. package/dist/server/{chunk-UFVCBGBY.js → chunk-R5B6IOFQ.js} +11 -3
  51. package/dist/server/chunk-R5B6IOFQ.js.map +1 -0
  52. package/dist/server/{chunk-FK64TZBT.mjs → chunk-SFQ7VF3G.mjs} +2 -2
  53. package/dist/server/{chunk-JTAERCX2.mjs → chunk-VVFYHAUD.mjs} +2 -2
  54. package/dist/server/{chunk-PN3CHDVX.mjs → chunk-XK2YIISA.mjs} +2 -2
  55. package/dist/server/chunk-XK2YIISA.mjs.map +1 -0
  56. package/dist/server/chunk-ZIM53VP6.js +406 -0
  57. package/dist/server/chunk-ZIM53VP6.js.map +1 -0
  58. package/dist/server/{components-DJBLu_yc.d.ts → components-BYxloYJm.d.ts} +3 -3
  59. package/dist/server/{components-CI3JiOYA.d.mts → components-Ci5nlyUj.d.mts} +3 -3
  60. package/dist/server/components.d.mts +7 -6
  61. package/dist/server/components.d.ts +7 -6
  62. package/dist/server/components.js +3 -3
  63. package/dist/server/components.mjs +2 -2
  64. package/dist/server/config-validation.d.mts +5 -300
  65. package/dist/server/config-validation.d.ts +5 -300
  66. package/dist/server/config-validation.js +6 -3
  67. package/dist/server/config-validation.js.map +1 -1
  68. package/dist/server/config-validation.mjs +5 -2
  69. package/dist/server/config.d.mts +43 -4
  70. package/dist/server/config.d.ts +43 -4
  71. package/dist/server/config.js +27 -3
  72. package/dist/server/config.js.map +1 -1
  73. package/dist/server/config.mjs +26 -2
  74. package/dist/server/config.mjs.map +1 -1
  75. package/dist/server/data.d.mts +5 -4
  76. package/dist/server/data.d.ts +5 -4
  77. package/dist/server/data.js +2 -2
  78. package/dist/server/data.mjs +1 -1
  79. package/dist/server/{index-Dus2gkY6.d.ts → index-DbSfrRA0.d.ts} +1 -1
  80. package/dist/server/{index-DoX3ELQn.d.mts → index-Dj7VKH34.d.mts} +1 -1
  81. package/dist/server/index.d.mts +5 -4
  82. package/dist/server/index.d.ts +5 -4
  83. package/dist/server/index.js +6 -2
  84. package/dist/server/index.js.map +1 -1
  85. package/dist/server/index.mjs +5 -1
  86. package/dist/server/{loadContent-CdXDGsJM.d.ts → loadContent-BqQ-VPMW.d.ts} +4 -4
  87. package/dist/server/{loadContent-v2n6pOlO.d.mts → loadContent-Czu7xTOU.d.mts} +4 -4
  88. package/dist/server/{loadPage-bejlajm9.d.ts → loadPage-BElEkA_J.d.ts} +3 -3
  89. package/dist/server/{loadPage-en10WQrt.d.mts → loadPage-Dw57_n5N.d.mts} +3 -3
  90. package/dist/server/loadPage-E3ZC6NHB.js +11 -0
  91. package/dist/server/{loadPage-3ECPF426.js.map → loadPage-E3ZC6NHB.js.map} +1 -1
  92. package/dist/server/{loadPage-LW273NYO.mjs → loadPage-E7L7NMR3.mjs} +3 -3
  93. package/dist/server/metadata.d.mts +5 -4
  94. package/dist/server/metadata.d.ts +5 -4
  95. package/dist/server/navigation.d.mts +2 -2
  96. package/dist/server/navigation.d.ts +2 -2
  97. package/dist/server/rendering/server.d.mts +8 -7
  98. package/dist/server/rendering/server.d.ts +8 -7
  99. package/dist/server/rendering/server.js +4 -4
  100. package/dist/server/rendering/server.mjs +3 -3
  101. package/dist/server/rendering.d.mts +9 -8
  102. package/dist/server/rendering.d.ts +9 -8
  103. package/dist/server/rendering.js +6 -6
  104. package/dist/server/rendering.mjs +5 -5
  105. package/dist/server/routing.d.mts +5 -4
  106. package/dist/server/routing.d.ts +5 -4
  107. package/dist/server/routing.js +1 -1
  108. package/dist/server/routing.mjs +1 -1
  109. package/dist/server/server.d.mts +7 -6
  110. package/dist/server/server.d.ts +7 -6
  111. package/dist/server/server.js +4 -4
  112. package/dist/server/server.mjs +3 -3
  113. package/dist/server/theme-bridge.js +7 -7
  114. package/dist/server/theme-bridge.mjs +1 -1
  115. package/dist/server/{types-Cc7lyPkN.d.ts → types-5XdVD2J1.d.ts} +2 -0
  116. package/dist/server/{types-nVerjjdv.d.mts → types-BA-J9K8r.d.mts} +2 -0
  117. package/dist/server/{types-CLusapsM.d.mts → types-BC9eB2KH.d.mts} +65 -17
  118. package/dist/server/{types-_nDnPHpv.d.ts → types-BuZJWVmj.d.mts} +4 -1
  119. package/dist/server/{types-Ls6BkLKg.d.ts → types-CAnC529E.d.ts} +65 -17
  120. package/dist/server/{types-D-rqOU5I.d.ts → types-CMqVHYLG.d.ts} +264 -2
  121. package/dist/server/{types-Bq3520hK.d.mts → types-CYfHxUhe.d.mts} +264 -2
  122. package/dist/server/{types-_nDnPHpv.d.mts → types-DSFvXKhO.d.ts} +4 -1
  123. package/dist/server/validation-C7W2Fe0i.d.ts +459 -0
  124. package/dist/server/validation-hg1sqhrt.d.mts +459 -0
  125. package/package.json +2 -1
  126. package/dist/server/chunk-5R4NMVXA.js.map +0 -1
  127. package/dist/server/chunk-BPKYRPCQ.mjs +0 -215
  128. package/dist/server/chunk-BPKYRPCQ.mjs.map +0 -1
  129. package/dist/server/chunk-GWBMJPLH.mjs.map +0 -1
  130. package/dist/server/chunk-O5DC7MYW.mjs.map +0 -1
  131. package/dist/server/chunk-PN3CHDVX.mjs.map +0 -1
  132. package/dist/server/chunk-SF63XAX7.js.map +0 -1
  133. package/dist/server/chunk-UFVCBGBY.js.map +0 -1
  134. package/dist/server/chunk-XLVL5WPH.js +0 -215
  135. package/dist/server/chunk-XLVL5WPH.js.map +0 -1
  136. package/dist/server/chunk-YXDDFG3N.js.map +0 -1
  137. package/dist/server/loadPage-3ECPF426.js +0 -11
  138. /package/dist/server/{chunk-FK64TZBT.mjs.map → chunk-SFQ7VF3G.mjs.map} +0 -0
  139. /package/dist/server/{chunk-JTAERCX2.mjs.map → chunk-VVFYHAUD.mjs.map} +0 -0
  140. /package/dist/server/{loadPage-LW273NYO.mjs.map → loadPage-E7L7NMR3.mjs.map} +0 -0
@@ -54,4 +54,4 @@ export {
54
54
  executeCodeLoaders,
55
55
  mergeLoaderResults
56
56
  };
57
- //# sourceMappingURL=chunk-GWBMJPLH.mjs.map
57
+ //# sourceMappingURL=chunk-M5KTLZTD.mjs.map
@@ -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-QFFQTOY3.mjs.map
2136
+ //# sourceMappingURL=chunk-N3PX76AP.mjs.map