@riverbankcms/sdk 0.89.1 → 0.90.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 +27 -4
- package/dist/{PreviewEditorSidebar-JDR64FEC.mjs → PreviewEditorSidebar-KVXNF3VW.mjs} +3 -3
- package/dist/{PreviewEditorUI-67TMJMAF.mjs → PreviewEditorUI-J3JN5Z7T.mjs} +3 -3
- package/dist/SdkPreviewModeRuntime-UBL6MSNP.mjs +8 -0
- package/dist/_dts/ai/src/contracts/proposals.d.ts +216 -0
- package/dist/_dts/altcha/src/AltchaWidget.d.ts +1 -1
- package/dist/_dts/api/src/bookingOperations.d.ts +2 -0
- package/dist/_dts/api/src/bookingRecords.d.ts +4 -2
- package/dist/_dts/api/src/bookings.d.ts +3 -1
- package/dist/_dts/api/src/index.d.ts +6 -5
- package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +15 -5
- package/dist/_dts/api/src/request.d.ts +21 -0
- package/dist/_dts/api/src/sdk-event-upsert.d.ts +3 -1
- package/dist/_dts/api/src/sdkContracts.d.ts +2 -0
- package/dist/_dts/api/src/types.d.ts +3 -1
- package/dist/_dts/api/src/url.d.ts +6 -3
- package/dist/_dts/block-form/src/utils/visibleWhen.d.ts +1 -0
- package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterThumbnailCard.d.ts +5 -1
- package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterThumbnailGrid.d.ts +9 -1
- package/dist/_dts/block-form/src/widgets/RepeaterField/components/index.d.ts +1 -0
- package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +7 -11
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +6 -0
- package/dist/_dts/blocks/src/index.d.ts +2 -1
- package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +14 -6
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -4
- package/dist/_dts/blocks/src/system/blocks/hero.d.ts +0 -2
- package/dist/_dts/blocks/src/system/blocks/shop.d.ts +3 -3
- package/dist/_dts/blocks/src/system/blocks/shop.shared.d.ts +8 -0
- package/dist/_dts/blocks/src/system/constants/events.d.ts +4 -1
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +3 -1
- package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +17 -5
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +51 -6
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/useCourseRegistrationWizard.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +1 -17
- package/dist/_dts/blocks/src/system/runtime/nodes/event-details.client.d.ts +5 -9
- package/dist/_dts/blocks/src/system/runtime/nodes/event-details.server.d.ts +5 -9
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.d.ts +24 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.d.ts +4 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.state.d.ts +50 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +21 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +11 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +11 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/calendarViewOptions.d.ts +10 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventProductEligibility.d.ts +24 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +5 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout-form.d.ts +2 -2
- package/dist/_dts/content-model/src/entry-slots/index.d.ts +1 -0
- package/dist/_dts/content-model/src/entry-slots/sdkBlocks.d.ts +21 -0
- package/dist/_dts/content-model/src/entry-slots/types.d.ts +7 -0
- package/dist/_dts/core/src/money-input.d.ts +18 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +50 -0
- package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -1
- package/dist/_dts/media-editor/src/fieldUi.d.ts +6 -0
- package/dist/_dts/media-editor/src/index.d.ts +1 -1
- package/dist/_dts/preview-next/src/client/index.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +3 -2
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +3 -2
- package/dist/_dts/preview-next/src/client/preview/PreviewThemedSiteDocument.d.ts +3 -2
- package/dist/_dts/preview-next/src/client/preview/SiteChromeEditableSurface.d.ts +2 -2
- package/dist/_dts/preview-next/src/client/preview/themeRuntime.d.ts +6 -0
- package/dist/_dts/preview-next/src/client/sdk/SdkPreviewMode.d.ts +2 -1
- package/dist/_dts/sdk/src/cli/commands/pull-dated-offering-scope.d.ts +10 -0
- package/dist/_dts/sdk/src/cli/content/reader.d.ts +12 -5
- package/dist/_dts/sdk/src/client/management/types.d.ts +6 -55
- package/dist/_dts/sdk/src/components.d.ts +1 -0
- package/dist/_dts/sdk/src/config/field-definitions.d.ts +3 -1
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +3 -1
- package/dist/_dts/sdk/src/next/types.d.ts +8 -11
- package/dist/_dts/sdk/src/preview-next/client/index.d.ts +1 -1
- package/dist/_dts/sdk/src/rendering/blocks-theme-scope.d.ts +2 -1
- package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +8 -7
- package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +5 -6
- package/dist/_dts/sdk/src/rendering/index.d.ts +1 -0
- package/dist/_dts/sdk/src/rendering/server.d.ts +1 -0
- package/dist/_dts/sdk/src/rendering/themeRuntime.d.ts +26 -0
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/site-commands/src/commands.d.ts +18 -0
- package/dist/_dts/theme-core/src/ResponsiveScope.d.ts +12 -0
- package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -1
- package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +2 -2
- package/dist/_dts/theme-core/src/buttons/types.d.ts +5 -5
- package/dist/_dts/theme-core/src/cards/types.d.ts +2 -2
- package/dist/_dts/theme-core/src/index.d.ts +2 -0
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +21 -21
- package/dist/_dts/theme-core/src/schema.d.ts +18 -18
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/logoBranding.d.ts +4 -4
- package/dist/_dts/theme-core/src/themeRuntime.d.ts +11 -0
- package/dist/{chunk-HKJQERFR.mjs → chunk-AEOYWPE4.mjs} +91 -55
- package/dist/{chunk-F645A5UV.mjs → chunk-BOQXMCSP.mjs} +129 -101
- package/dist/{chunk-ZQRBLCW5.mjs → chunk-GSPFFUVB.mjs} +2 -2
- package/dist/{chunk-7YUAXONX.mjs → chunk-PMBB6MQ7.mjs} +1280 -774
- package/dist/{chunk-TGBJWKMP.mjs → chunk-RQ3XZ4SJ.mjs} +9 -1
- package/dist/{chunk-7N46MZHI.mjs → chunk-UG7I7S7W.mjs} +1 -1
- package/dist/cli/index.mjs +899 -531
- package/dist/cli/init-docs/content/cli-reference.md +6 -1
- package/dist/cli/init-docs/content/content-management.md +27 -0
- package/dist/client/{accordion-MUCVNGQ7.mjs → accordion-GXQNWQ6O.mjs} +1 -1
- package/dist/client/{bookingForm-PKD6EFIE.mjs → bookingForm-STLUJ36H.mjs} +25 -270
- package/dist/client/bookings.mjs +432 -269
- package/dist/client/{carousel-3TKQSNJC.mjs → carousel-CVRN6EPP.mjs} +1 -1
- package/dist/client/{cart-6XHSZK23.mjs → cart-IYIBA5CL.mjs} +5 -6
- package/dist/client/{checkout-FVSPM6FI.mjs → checkout-O3BGM4GS.mjs} +5 -6
- package/dist/client/chunk-4RTFGHZN.mjs +433 -0
- package/dist/client/{chunk-UQFY4AHX.mjs → chunk-6DPXDOIL.mjs} +65 -28
- package/dist/client/{chunk-ZT5XE7FK.mjs → chunk-D3ETC2SU.mjs} +1 -1
- package/dist/client/{chunk-CQKKFEQD.mjs → chunk-DAS5CIER.mjs} +274 -105
- package/dist/client/{chunk-SDIYSQAY.mjs → chunk-HIHOQGIP.mjs} +2 -3
- package/dist/client/{chunk-ZJZZA5EP.mjs → chunk-MFPKS6QS.mjs} +11 -14
- package/dist/client/{chunk-EY42X22F.mjs → chunk-NBFRJ5NB.mjs} +156 -4
- package/dist/client/{chunk-VGLXACVK.mjs → chunk-VFHZLZAC.mjs} +1 -1
- package/dist/client/{chunk-STJ2NCQM.mjs → chunk-WHZQDPBZ.mjs} +19 -1
- package/dist/client/{chunk-RSQWWUAD.mjs → chunk-Z62JYS5O.mjs} +3 -3
- package/dist/client/client.mjs +3292 -2827
- package/dist/client/{courseRegistration-ATZSYDHM.mjs → courseRegistration-2D3ACMJR.mjs} +18 -56
- package/dist/client/{eventCalendar-6T2UGKKP.mjs → eventCalendar-QY4UZUFF.mjs} +8 -9
- package/dist/client/{eventCombined-Q4VANXVF.mjs → eventCombined-RRCDKJC2.mjs} +8 -9
- package/dist/client/{eventDetails-DW37E7VW.mjs → eventDetails-YO335BUT.mjs} +8 -9
- package/dist/client/{eventListing-XURTSAUW.mjs → eventListing-PXA6GFQ3.mjs} +8 -9
- package/dist/client/{eventRegistration-MRKEVAXW.mjs → eventRegistration-2ZHEDDXO.mjs} +8 -9
- package/dist/client/{form-WZZFFGMU.mjs → form-ZS6KX4U2.mjs} +6 -6
- package/dist/client/{headerSection-EQYVQBLM.mjs → headerSection-QK5SLIIB.mjs} +2 -2
- package/dist/client/hooks.mjs +1084 -1029
- package/dist/client/{locationMap-MFF5VAZR.mjs → locationMap-GFNIUD2X.mjs} +2 -2
- package/dist/client/{newsletterForm-JQ77UYIE.mjs → newsletterForm-PGLTTCUG.mjs} +4 -4
- package/dist/client/{productDetail-25LMT3IZ.mjs → productDetail-OPBE5ZPI.mjs} +5 -6
- package/dist/client/{productList-5ABEMKUG.mjs → productList-NI72Q62Z.mjs} +5 -6
- package/dist/client/rendering/client.mjs +2692 -2285
- package/dist/client/rendering/islands.mjs +18 -18
- package/dist/client/rendering.mjs +2611 -2156
- package/dist/client/{shop-OMMQZ6YO.mjs → shop-3ZQPEWYI.mjs} +5 -6
- package/dist/client/spam-protection.mjs +4 -5
- package/dist/preview-next/before-render.mjs +2 -2
- package/dist/preview-next/client/runtime.mjs +5 -5
- package/dist/{sdk-runtime-WNLBZ3ZH.mjs → sdk-runtime-FSHXCWDS.mjs} +6 -6
- package/dist/server/components.mjs +1722 -1453
- package/dist/server/config-validation.mjs +1316 -1261
- package/dist/server/config.mjs +1316 -1261
- package/dist/server/data.mjs +1084 -1029
- package/dist/server/index.mjs +135 -100
- package/dist/server/navigation.mjs +20 -30
- package/dist/server/next.mjs +1782 -1500
- package/dist/server/page-converter.mjs +1009 -946
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +1722 -1453
- package/dist/server/rendering.mjs +1728 -1459
- package/dist/server/routing.mjs +1127 -1045
- package/dist/server/server.mjs +1219 -1129
- package/dist/server/theme-bridge.mjs +8 -5
- package/package.json +2 -2
- package/dist/SdkPreviewModeRuntime-ZBEMRV7N.mjs +0 -8
- package/dist/client/chunk-LQFDYWPJ.mjs +0 -184
- package/dist/client/chunk-ZFHRN6W2.mjs +0 -66
package/dist/server/index.mjs
CHANGED
|
@@ -6486,19 +6486,23 @@ function normalizeDashboardOrigin(input) {
|
|
|
6486
6486
|
}
|
|
6487
6487
|
function deriveCmsApiUrlFromDashboardUrl(input) {
|
|
6488
6488
|
const origin = normalizeDashboardOrigin(input);
|
|
6489
|
-
return origin ? `${origin}/api` : "";
|
|
6489
|
+
return origin ? normalizeCmsApiBaseUrl(`${origin}/api`) : "";
|
|
6490
|
+
}
|
|
6491
|
+
function normalizeCmsApiBaseUrl(input) {
|
|
6492
|
+
return input.trim().replace(/\/+$/, "").replace(/(?:\/api)+$/i, "/api");
|
|
6490
6493
|
}
|
|
6491
6494
|
function getCmsApiUrl() {
|
|
6492
6495
|
if (typeof window !== "undefined") {
|
|
6493
|
-
return "/api";
|
|
6496
|
+
return normalizeCmsApiBaseUrl("/api");
|
|
6494
6497
|
}
|
|
6495
6498
|
const internalUrl = process.env.CMS_API_URL;
|
|
6496
6499
|
if (internalUrl) {
|
|
6497
|
-
return internalUrl
|
|
6500
|
+
return normalizeCmsApiBaseUrl(internalUrl);
|
|
6498
6501
|
}
|
|
6499
6502
|
const dashboardUrl = process.env.NEXT_PUBLIC_DASHBOARD_URL;
|
|
6500
6503
|
if (dashboardUrl) {
|
|
6501
|
-
|
|
6504
|
+
const apiUrl = deriveCmsApiUrlFromDashboardUrl(dashboardUrl);
|
|
6505
|
+
if (apiUrl) return apiUrl;
|
|
6502
6506
|
}
|
|
6503
6507
|
throw new Error(
|
|
6504
6508
|
"CMS_API_URL or NEXT_PUBLIC_DASHBOARD_URL is not configured. Set NEXT_PUBLIC_DASHBOARD_URL to your dashboard URL (e.g., http://localhost:4000)"
|
|
@@ -6607,6 +6611,27 @@ function serializeQueryValue(value) {
|
|
|
6607
6611
|
if (value instanceof Date) return value.toISOString();
|
|
6608
6612
|
return null;
|
|
6609
6613
|
}
|
|
6614
|
+
function normalizeHeaders(source) {
|
|
6615
|
+
const normalized = {};
|
|
6616
|
+
if (!source) return normalized;
|
|
6617
|
+
new Headers(source).forEach((value, key) => {
|
|
6618
|
+
normalized[key] = value;
|
|
6619
|
+
});
|
|
6620
|
+
return normalized;
|
|
6621
|
+
}
|
|
6622
|
+
function buildRequestHeaders(input) {
|
|
6623
|
+
const headers = {
|
|
6624
|
+
...normalizeHeaders(input.optionsHeaders),
|
|
6625
|
+
...normalizeHeaders(input.authHeaders)
|
|
6626
|
+
};
|
|
6627
|
+
if (input.sdkVersion) {
|
|
6628
|
+
headers["x-sdk-version"] = input.sdkVersion;
|
|
6629
|
+
}
|
|
6630
|
+
if (input.includeJsonContentType) {
|
|
6631
|
+
headers["Content-Type"] = "application/json";
|
|
6632
|
+
}
|
|
6633
|
+
return headers;
|
|
6634
|
+
}
|
|
6610
6635
|
function serializePathParam(endpoint, key, value) {
|
|
6611
6636
|
if (typeof value === "string") {
|
|
6612
6637
|
return value;
|
|
@@ -6742,104 +6767,20 @@ function createRawCMSClient(headers = {}, baseUrl) {
|
|
|
6742
6767
|
params,
|
|
6743
6768
|
options = {}
|
|
6744
6769
|
}) => {
|
|
6745
|
-
const
|
|
6746
|
-
|
|
6747
|
-
|
|
6748
|
-
|
|
6749
|
-
|
|
6750
|
-
|
|
6751
|
-
|
|
6752
|
-
|
|
6753
|
-
if (originalPath.includes(bracePlaceholder) || originalPath.includes(colonPlaceholder)) {
|
|
6754
|
-
const stringValue = serializePathParam(endpoint, key, value);
|
|
6755
|
-
url = url.replace(bracePlaceholder, stringValue);
|
|
6756
|
-
url = url.replace(colonPlaceholder, stringValue);
|
|
6757
|
-
} else {
|
|
6758
|
-
unusedParams[key] = value;
|
|
6759
|
-
}
|
|
6760
|
-
});
|
|
6761
|
-
}
|
|
6762
|
-
const unresolvedPathParams = [
|
|
6763
|
-
...url.match(/\{[^}]+\}/g) ?? [],
|
|
6764
|
-
...url.match(/(^|\/):([A-Za-z][A-Za-z0-9_]*)\b/g) ?? []
|
|
6765
|
-
];
|
|
6766
|
-
if (unresolvedPathParams.length > 0) {
|
|
6767
|
-
const missingParams = Array.from(
|
|
6768
|
-
new Set(
|
|
6769
|
-
unresolvedPathParams.map((token) => {
|
|
6770
|
-
if (token.startsWith("{") && token.endsWith("}")) {
|
|
6771
|
-
return token.slice(1, -1);
|
|
6772
|
-
}
|
|
6773
|
-
return token.replace(/^\//, "").slice(1);
|
|
6774
|
-
})
|
|
6775
|
-
)
|
|
6776
|
-
);
|
|
6777
|
-
throw new Error(
|
|
6778
|
-
`Missing required path params for endpoint ${String(endpoint)}: ${missingParams.join(", ")}`
|
|
6779
|
-
);
|
|
6780
|
-
}
|
|
6781
|
-
const endpointConfig = API_ENDPOINTS[endpoint];
|
|
6782
|
-
const method = endpointConfig.method;
|
|
6783
|
-
const isGetOrHead = method === "GET" || method === "HEAD";
|
|
6784
|
-
const queryParams = new URLSearchParams();
|
|
6785
|
-
Object.entries(unusedParams).forEach(([key, value]) => {
|
|
6786
|
-
appendQueryParam(queryParams, key, value);
|
|
6770
|
+
const plan = buildApiRequestPlan({
|
|
6771
|
+
endpoint,
|
|
6772
|
+
body,
|
|
6773
|
+
params,
|
|
6774
|
+
options,
|
|
6775
|
+
headers,
|
|
6776
|
+
baseUrl: normalizeCmsApiBaseUrl(baseUrl ?? resolveApiBaseUrl()),
|
|
6777
|
+
sdkVersion
|
|
6787
6778
|
});
|
|
6788
|
-
|
|
6789
|
-
|
|
6790
|
-
appendQueryParam(queryParams, key, value);
|
|
6791
|
-
});
|
|
6792
|
-
}
|
|
6793
|
-
const queryString = queryParams.toString();
|
|
6794
|
-
if (queryString) {
|
|
6795
|
-
url += (url.includes("?") ? "&" : "?") + queryString;
|
|
6796
|
-
}
|
|
6797
|
-
const formDataBody = isFormDataBody(body) ? body : void 0;
|
|
6798
|
-
const optionsNext = options?.next;
|
|
6799
|
-
const nextOptions = { ...optionsNext ?? {} };
|
|
6800
|
-
const cacheIsNoStore = options?.cache === "no-store";
|
|
6801
|
-
if (cacheIsNoStore) {
|
|
6802
|
-
delete nextOptions.revalidate;
|
|
6803
|
-
} else if (isGetOrHead && nextOptions.revalidate === void 0 && "revalidate" in endpointConfig && typeof endpointConfig.revalidate === "number") {
|
|
6804
|
-
nextOptions.revalidate = endpointConfig.revalidate;
|
|
6805
|
-
}
|
|
6806
|
-
if ("tags" in endpointConfig && Array.isArray(endpointConfig.tags)) {
|
|
6807
|
-
const processedTags = endpointConfig.tags.map((tag) => {
|
|
6808
|
-
let processedTag = tag;
|
|
6809
|
-
if (params) {
|
|
6810
|
-
Object.entries(params).forEach(([key, value]) => {
|
|
6811
|
-
processedTag = processedTag.replace(`{${key}}`, String(value));
|
|
6812
|
-
});
|
|
6813
|
-
}
|
|
6814
|
-
return /\{[^}]+\}/.test(processedTag) ? null : processedTag;
|
|
6815
|
-
}).filter((tag) => tag !== null);
|
|
6816
|
-
nextOptions.tags = Array.from(/* @__PURE__ */ new Set([...nextOptions.tags ?? [], ...processedTags]));
|
|
6817
|
-
}
|
|
6818
|
-
const requestInit = {
|
|
6819
|
-
method,
|
|
6820
|
-
...options,
|
|
6821
|
-
// Include credentials for same-origin requests (sends cookies for auth)
|
|
6822
|
-
credentials: "same-origin",
|
|
6823
|
-
// Don't include body for GET/HEAD requests
|
|
6824
|
-
// FormData is pre-narrowed via isFormDataBody() above
|
|
6825
|
-
body: isGetOrHead || body == null ? void 0 : formDataBody ?? JSON.stringify(body),
|
|
6826
|
-
headers: {
|
|
6827
|
-
...options.headers,
|
|
6828
|
-
...headers,
|
|
6829
|
-
// Include SDK version if set
|
|
6830
|
-
...sdkVersion && { "x-sdk-version": sdkVersion },
|
|
6831
|
-
// Don't set Content-Type for GET/HEAD requests without body
|
|
6832
|
-
...isGetOrHead ? {} : formDataBody ? {} : { "Content-Type": "application/json" }
|
|
6833
|
-
},
|
|
6834
|
-
// Add Next.js caching options
|
|
6835
|
-
next: Object.keys(nextOptions).length > 0 ? nextOptions : void 0
|
|
6836
|
-
};
|
|
6837
|
-
const fetchPromise = fetch(url, requestInit);
|
|
6838
|
-
if (!isGetOrHead && "tags" in endpointConfig && Array.isArray(endpointConfig.tags)) {
|
|
6839
|
-
const tags = endpointConfig.tags.map((tag) => tag);
|
|
6779
|
+
const fetchPromise = fetch(plan.url, plan.init);
|
|
6780
|
+
if (plan.cacheInvalidationTags) {
|
|
6840
6781
|
return fetchPromise.then((response) => {
|
|
6841
6782
|
if (response.ok) {
|
|
6842
|
-
invalidateCacheTags(
|
|
6783
|
+
invalidateCacheTags(plan.cacheInvalidationTags, params);
|
|
6843
6784
|
}
|
|
6844
6785
|
return response;
|
|
6845
6786
|
});
|
|
@@ -6847,6 +6788,100 @@ function createRawCMSClient(headers = {}, baseUrl) {
|
|
|
6847
6788
|
return fetchPromise;
|
|
6848
6789
|
};
|
|
6849
6790
|
}
|
|
6791
|
+
function buildApiRequestPlan(input) {
|
|
6792
|
+
const { endpoint, body, params, headers = {}, baseUrl } = input;
|
|
6793
|
+
const options = input.options ?? {};
|
|
6794
|
+
let url = buildEndpointURL(baseUrl, endpoint);
|
|
6795
|
+
const originalPath = API_ENDPOINTS[endpoint].path;
|
|
6796
|
+
const unusedParams = {};
|
|
6797
|
+
if (params) {
|
|
6798
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
6799
|
+
const bracePlaceholder = `{${key}}`;
|
|
6800
|
+
const colonPlaceholder = `:${key}`;
|
|
6801
|
+
if (originalPath.includes(bracePlaceholder) || originalPath.includes(colonPlaceholder)) {
|
|
6802
|
+
const stringValue = serializePathParam(endpoint, key, value);
|
|
6803
|
+
url = url.replace(bracePlaceholder, stringValue);
|
|
6804
|
+
url = url.replace(colonPlaceholder, stringValue);
|
|
6805
|
+
} else {
|
|
6806
|
+
unusedParams[key] = value;
|
|
6807
|
+
}
|
|
6808
|
+
});
|
|
6809
|
+
}
|
|
6810
|
+
const unresolvedPathParams = [
|
|
6811
|
+
...url.match(/\{[^}]+\}/g) ?? [],
|
|
6812
|
+
...url.match(/(^|\/):([A-Za-z][A-Za-z0-9_]*)\b/g) ?? []
|
|
6813
|
+
];
|
|
6814
|
+
if (unresolvedPathParams.length > 0) {
|
|
6815
|
+
const missingParams = Array.from(
|
|
6816
|
+
new Set(
|
|
6817
|
+
unresolvedPathParams.map((token) => {
|
|
6818
|
+
if (token.startsWith("{") && token.endsWith("}")) {
|
|
6819
|
+
return token.slice(1, -1);
|
|
6820
|
+
}
|
|
6821
|
+
return token.replace(/^\//, "").slice(1);
|
|
6822
|
+
})
|
|
6823
|
+
)
|
|
6824
|
+
);
|
|
6825
|
+
throw new Error(
|
|
6826
|
+
`Missing required path params for endpoint ${String(endpoint)}: ${missingParams.join(", ")}`
|
|
6827
|
+
);
|
|
6828
|
+
}
|
|
6829
|
+
const endpointConfig = API_ENDPOINTS[endpoint];
|
|
6830
|
+
const method = endpointConfig.method;
|
|
6831
|
+
const isGetOrHead = method === "GET" || method === "HEAD";
|
|
6832
|
+
const queryParams = new URLSearchParams();
|
|
6833
|
+
Object.entries(unusedParams).forEach(([key, value]) => {
|
|
6834
|
+
appendQueryParam(queryParams, key, value);
|
|
6835
|
+
});
|
|
6836
|
+
if (isGetOrHead && typeof body === "object" && body !== null && !isFormDataBody(body)) {
|
|
6837
|
+
Object.entries(body).forEach(([key, value]) => {
|
|
6838
|
+
appendQueryParam(queryParams, key, value);
|
|
6839
|
+
});
|
|
6840
|
+
}
|
|
6841
|
+
const queryString = queryParams.toString();
|
|
6842
|
+
if (queryString) {
|
|
6843
|
+
url += (url.includes("?") ? "&" : "?") + queryString;
|
|
6844
|
+
}
|
|
6845
|
+
const formDataBody = isFormDataBody(body) ? body : void 0;
|
|
6846
|
+
const optionsNext = options?.next;
|
|
6847
|
+
const nextOptions = { ...optionsNext ?? {} };
|
|
6848
|
+
const cacheIsNoStore = options?.cache === "no-store";
|
|
6849
|
+
if (cacheIsNoStore) {
|
|
6850
|
+
delete nextOptions.revalidate;
|
|
6851
|
+
} else if (isGetOrHead && nextOptions.revalidate === void 0 && "revalidate" in endpointConfig && typeof endpointConfig.revalidate === "number") {
|
|
6852
|
+
nextOptions.revalidate = endpointConfig.revalidate;
|
|
6853
|
+
}
|
|
6854
|
+
if ("tags" in endpointConfig && Array.isArray(endpointConfig.tags)) {
|
|
6855
|
+
const processedTags = endpointConfig.tags.map((tag) => {
|
|
6856
|
+
let processedTag = tag;
|
|
6857
|
+
if (params) {
|
|
6858
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
6859
|
+
processedTag = processedTag.replace(`{${key}}`, String(value));
|
|
6860
|
+
});
|
|
6861
|
+
}
|
|
6862
|
+
return /\{[^}]+\}/.test(processedTag) ? null : processedTag;
|
|
6863
|
+
}).filter((tag) => tag !== null);
|
|
6864
|
+
nextOptions.tags = Array.from(/* @__PURE__ */ new Set([...nextOptions.tags ?? [], ...processedTags]));
|
|
6865
|
+
}
|
|
6866
|
+
const init = {
|
|
6867
|
+
method,
|
|
6868
|
+
...options,
|
|
6869
|
+
credentials: "same-origin",
|
|
6870
|
+
body: isGetOrHead || body == null ? void 0 : formDataBody ?? JSON.stringify(body),
|
|
6871
|
+
headers: buildRequestHeaders({
|
|
6872
|
+
optionsHeaders: options.headers,
|
|
6873
|
+
authHeaders: headers,
|
|
6874
|
+
sdkVersion: input.sdkVersion,
|
|
6875
|
+
includeJsonContentType: !isGetOrHead && !formDataBody
|
|
6876
|
+
}),
|
|
6877
|
+
...Object.keys(nextOptions).length > 0 ? { next: nextOptions } : {}
|
|
6878
|
+
};
|
|
6879
|
+
return {
|
|
6880
|
+
url,
|
|
6881
|
+
init,
|
|
6882
|
+
...!isGetOrHead && "tags" in endpointConfig && Array.isArray(endpointConfig.tags) ? { cacheInvalidationTags: endpointConfig.tags.map((tag) => tag) } : {}
|
|
6883
|
+
};
|
|
6884
|
+
}
|
|
6850
6885
|
function createParsedClient(rawClient) {
|
|
6851
6886
|
return async (params) => {
|
|
6852
6887
|
const response = await rawClient(params);
|
|
@@ -7027,7 +7062,7 @@ var SimpleCache = class {
|
|
|
7027
7062
|
};
|
|
7028
7063
|
|
|
7029
7064
|
// src/version.ts
|
|
7030
|
-
var SDK_VERSION = "0.
|
|
7065
|
+
var SDK_VERSION = "0.90.0";
|
|
7031
7066
|
|
|
7032
7067
|
// src/client/error.ts
|
|
7033
7068
|
var RiverbankApiError = class _RiverbankApiError extends Error {
|
|
@@ -6,10 +6,7 @@ function normalizeRenderStage(stage) {
|
|
|
6
6
|
return stage === "preview" ? "preview" : "published";
|
|
7
7
|
}
|
|
8
8
|
function isRouteVisibleInStage(routeEntry, stageInput) {
|
|
9
|
-
|
|
10
|
-
if (stage === "preview" || !isRouteRecord(routeEntry)) {
|
|
11
|
-
return true;
|
|
12
|
-
}
|
|
9
|
+
if (normalizeRenderStage(stageInput) === "preview" || !isRouteRecord(routeEntry)) return true;
|
|
13
10
|
const status = routeEntry.status;
|
|
14
11
|
return !(typeof status === "string" && status !== "published");
|
|
15
12
|
}
|
|
@@ -18,52 +15,45 @@ function extractRouteHref(candidate, stageInput = "published") {
|
|
|
18
15
|
const trimmed = candidate.trim();
|
|
19
16
|
return trimmed.length > 0 ? trimmed : null;
|
|
20
17
|
}
|
|
21
|
-
if (!isRouteRecord(candidate))
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
if (!isRouteRecord(candidate)) return null;
|
|
19
|
+
const fields = normalizeRenderStage(stageInput) === "preview" ? [
|
|
20
|
+
"draftPath",
|
|
21
|
+
"path",
|
|
22
|
+
"href",
|
|
23
|
+
"url"
|
|
24
|
+
] : [
|
|
25
|
+
"path",
|
|
26
|
+
"href",
|
|
27
|
+
"url"
|
|
28
|
+
];
|
|
26
29
|
for (const field of fields) {
|
|
27
30
|
const value = candidate[field];
|
|
28
|
-
if (typeof value === "string" && value.trim().length > 0)
|
|
29
|
-
return value.trim();
|
|
30
|
-
}
|
|
31
|
+
if (typeof value === "string" && value.trim().length > 0) return value.trim();
|
|
31
32
|
}
|
|
32
33
|
return null;
|
|
33
34
|
}
|
|
34
35
|
function extractRouteUpdatedAt(candidate) {
|
|
35
|
-
if (!isRouteRecord(candidate))
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
const fields = [
|
|
36
|
+
if (!isRouteRecord(candidate)) return null;
|
|
37
|
+
for (const field of [
|
|
39
38
|
"updatedAt",
|
|
40
39
|
"updated_at",
|
|
41
40
|
"publishedAt",
|
|
42
41
|
"published_at",
|
|
43
42
|
"modifiedAt",
|
|
44
43
|
"modified_at"
|
|
45
|
-
]
|
|
46
|
-
for (const field of fields) {
|
|
44
|
+
]) {
|
|
47
45
|
const value = candidate[field];
|
|
48
|
-
if (typeof value === "string" && value.length > 0)
|
|
49
|
-
return value;
|
|
50
|
-
}
|
|
46
|
+
if (typeof value === "string" && value.length > 0) return value;
|
|
51
47
|
}
|
|
52
48
|
return null;
|
|
53
49
|
}
|
|
54
50
|
function resolveRouteTargetForStage(routeIdValue, routes, stageInput) {
|
|
55
51
|
const routeId = typeof routeIdValue === "string" ? routeIdValue : null;
|
|
56
|
-
if (!routeId || !routes)
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
52
|
+
if (!routeId || !routes) return null;
|
|
59
53
|
const routeEntry = routes[routeId];
|
|
60
|
-
if (!isRouteVisibleInStage(routeEntry, stageInput))
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
54
|
+
if (!isRouteVisibleInStage(routeEntry, stageInput)) return null;
|
|
63
55
|
const href = extractRouteHref(routeEntry, stageInput);
|
|
64
|
-
if (!href)
|
|
65
|
-
return null;
|
|
66
|
-
}
|
|
56
|
+
if (!href) return null;
|
|
67
57
|
return {
|
|
68
58
|
routeId,
|
|
69
59
|
href,
|