@riverbankcms/sdk 0.4.3 → 0.5.1
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 +84 -0
- package/dist/cli/index.js +3463 -120
- package/dist/cli/index.js.map +1 -1
- package/dist/client/analytics.js +1 -1
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/analytics.mjs +1 -1
- package/dist/client/analytics.mjs.map +1 -1
- package/dist/client/bookings.js +6 -6
- package/dist/client/bookings.js.map +1 -1
- package/dist/client/bookings.mjs +6 -6
- 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 +1379 -519
- package/dist/client/client.js.map +1 -1
- package/dist/client/client.mjs +1379 -519
- 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/hooks.js +26 -11
- package/dist/client/hooks.js.map +1 -1
- package/dist/client/hooks.mjs +26 -11
- package/dist/client/hooks.mjs.map +1 -1
- package/dist/client/rendering/client.js +20 -14
- package/dist/client/rendering/client.js.map +1 -1
- package/dist/client/rendering/client.mjs +20 -14
- package/dist/client/rendering/client.mjs.map +1 -1
- package/dist/client/usePage-BTPnCuWC.d.mts +6511 -0
- package/dist/client/usePage-BXjk8BhD.d.mts +6704 -0
- package/dist/client/usePage-BafOS9UT.d.mts +6512 -0
- package/dist/client/usePage-BiOReg0_.d.ts +6704 -0
- package/dist/client/usePage-Bnx-kA6x.d.mts +6670 -0
- package/dist/client/usePage-DoPI6b8V.d.ts +6511 -0
- package/dist/client/usePage-QNWArrVO.d.ts +6670 -0
- package/dist/client/usePage-fBgPB6Oq.d.ts +6512 -0
- package/dist/server/{Layout-CXI_VkhN.d.ts → Layout-BClXUTsd.d.mts} +4 -4
- package/dist/server/{Layout-p6f3TLw9.d.mts → Layout-UXGjXv8M.d.ts} +4 -4
- package/dist/server/{chunk-6JBKKV3G.js → chunk-2KCF2DNK.js} +30 -10
- package/dist/server/chunk-2KCF2DNK.js.map +1 -0
- package/dist/server/chunk-5STV4MWD.js +189 -0
- package/dist/server/chunk-5STV4MWD.js.map +1 -0
- package/dist/server/{chunk-VHDDXCK6.js → chunk-7UPVCT3K.js} +1206 -496
- package/dist/server/chunk-7UPVCT3K.js.map +1 -0
- package/dist/server/{chunk-7DS4Q3GA.mjs → chunk-AEFWG657.mjs} +3 -3
- package/dist/server/chunk-AEFWG657.mjs.map +1 -0
- package/dist/server/{chunk-USQF2XTU.mjs → chunk-BYBJA6SP.mjs} +26 -11
- package/dist/server/chunk-BYBJA6SP.mjs.map +1 -0
- package/dist/server/{chunk-ES6QDZUX.mjs → chunk-C6FIJC7T.mjs} +2 -2
- package/dist/server/{chunk-N3PX76AP.mjs → chunk-CMABGYGI.mjs} +269 -135
- package/dist/server/chunk-CMABGYGI.mjs.map +1 -0
- package/dist/server/{chunk-TO7FD6TQ.js → chunk-I2D7KOEA.js} +4 -4
- package/dist/server/{chunk-TO7FD6TQ.js.map → chunk-I2D7KOEA.js.map} +1 -1
- package/dist/server/{chunk-R5B6IOFQ.js → chunk-KA74YRK6.js} +269 -135
- package/dist/server/chunk-KA74YRK6.js.map +1 -0
- package/dist/server/chunk-KFLZGNPO.mjs +189 -0
- package/dist/server/chunk-KFLZGNPO.mjs.map +1 -0
- package/dist/server/chunk-L5EA4FXU.mjs +134 -0
- package/dist/server/chunk-L5EA4FXU.mjs.map +1 -0
- package/dist/server/{chunk-U2NI3TS3.mjs → chunk-LNOUXALA.mjs} +1135 -425
- package/dist/server/chunk-LNOUXALA.mjs.map +1 -0
- package/dist/server/{chunk-24F6FTCI.mjs → chunk-OSF34JTQ.mjs} +4 -4
- package/dist/server/{chunk-G35R7N7B.js → chunk-P3NNN73G.js} +3 -3
- package/dist/server/{chunk-G35R7N7B.js.map → chunk-P3NNN73G.js.map} +1 -1
- package/dist/server/{chunk-I6K5REFT.mjs → chunk-P4K63SBZ.mjs} +24 -4
- package/dist/server/chunk-P4K63SBZ.mjs.map +1 -0
- package/dist/server/{chunk-HOY77YBF.js → chunk-RVDS7VSP.js} +5 -5
- package/dist/server/chunk-RVDS7VSP.js.map +1 -0
- package/dist/server/{chunk-2SSEBAHC.js → chunk-TT5JWA4X.js} +9 -9
- package/dist/server/{chunk-2SSEBAHC.js.map → chunk-TT5JWA4X.js.map} +1 -1
- package/dist/server/chunk-VSFQRHYZ.js +134 -0
- package/dist/server/chunk-VSFQRHYZ.js.map +1 -0
- package/dist/server/{chunk-EGTDJ4PL.js → chunk-YYO3RIFO.js} +26 -11
- package/dist/server/chunk-YYO3RIFO.js.map +1 -0
- package/dist/server/{chunk-OP2GHK27.mjs → chunk-Z5ZA6Q4D.mjs} +2 -2
- package/dist/server/{components-Dhiemsjd.d.ts → components-BmaJxgCV.d.mts} +20 -75
- package/dist/server/{components-C75e4poV.d.mts → components-DppHY5oD.d.ts} +20 -75
- package/dist/server/components.d.mts +11 -8
- package/dist/server/components.d.ts +11 -8
- package/dist/server/components.js +5 -4
- package/dist/server/components.js.map +1 -1
- package/dist/server/components.mjs +4 -3
- package/dist/server/config-validation.d.mts +3 -3
- package/dist/server/config-validation.d.ts +3 -3
- package/dist/server/config-validation.js +9 -5
- package/dist/server/config-validation.js.map +1 -1
- package/dist/server/config-validation.mjs +8 -4
- package/dist/server/config.d.mts +243 -5
- package/dist/server/config.d.ts +243 -5
- package/dist/server/config.js +72 -5
- package/dist/server/config.js.map +1 -1
- package/dist/server/config.mjs +72 -5
- package/dist/server/config.mjs.map +1 -1
- package/dist/server/core-DsNWrl3o.d.mts +44 -0
- package/dist/server/core-DsNWrl3o.d.ts +44 -0
- package/dist/server/data.d.mts +4 -3
- package/dist/server/data.d.ts +4 -3
- package/dist/server/data.js +3 -3
- package/dist/server/data.mjs +2 -2
- package/dist/server/{index-CAwBj3-A.d.ts → index-Bucs6UqG.d.mts} +2 -1
- package/dist/server/{index-C6o9LPvq.d.mts → index-Cp7tJuRt.d.ts} +2 -1
- package/dist/server/index.d.mts +84 -6
- package/dist/server/index.d.ts +84 -6
- package/dist/server/index.js +91 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +90 -1
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/link-DjxLyC82.d.mts +23 -0
- package/dist/server/link-DjxLyC82.d.ts +23 -0
- package/dist/server/{loadContent-CdXfuCuE.d.mts → loadContent-BS-3wesN.d.mts} +4 -4
- package/dist/server/{loadContent-CsvQRoxb.d.ts → loadContent-Buvmudee.d.ts} +4 -4
- package/dist/server/{loadPage-p3AWwwrd.d.mts → loadPage-B8mQUUSo.d.mts} +5 -46
- package/dist/server/loadPage-DNQTTRHL.mjs +11 -0
- package/dist/server/{loadPage-BA0HiT-6.d.ts → loadPage-DP3nrHBi.d.ts} +5 -46
- package/dist/server/loadPage-IDGVDFBB.js +11 -0
- package/dist/server/{loadPage-DLC7DJZP.js.map → loadPage-IDGVDFBB.js.map} +1 -1
- package/dist/server/metadata.d.mts +6 -4
- package/dist/server/metadata.d.ts +6 -4
- package/dist/server/navigation.d.mts +199 -29
- package/dist/server/navigation.d.ts +199 -29
- package/dist/server/navigation.js +27 -43
- package/dist/server/navigation.js.map +1 -1
- package/dist/server/navigation.mjs +20 -36
- package/dist/server/navigation.mjs.map +1 -1
- package/dist/server/rendering/server.d.mts +8 -6
- package/dist/server/rendering/server.d.ts +8 -6
- package/dist/server/rendering/server.js +7 -6
- package/dist/server/rendering/server.js.map +1 -1
- package/dist/server/rendering/server.mjs +6 -5
- package/dist/server/rendering.d.mts +14 -10
- package/dist/server/rendering.d.ts +14 -10
- package/dist/server/rendering.js +9 -8
- package/dist/server/rendering.js.map +1 -1
- package/dist/server/rendering.mjs +8 -7
- package/dist/server/richTextSchema-DURiozvD.d.mts +62 -0
- package/dist/server/richTextSchema-DURiozvD.d.ts +62 -0
- package/dist/server/routing.d.mts +178 -11
- package/dist/server/routing.d.ts +178 -11
- package/dist/server/routing.js +95 -2
- package/dist/server/routing.js.map +1 -1
- package/dist/server/routing.mjs +94 -1
- package/dist/server/routing.mjs.map +1 -1
- package/dist/server/{schema-Bpy9N5ZI.d.mts → schema-Z6-afHJG.d.mts} +1 -1
- package/dist/server/{schema-Bpy9N5ZI.d.ts → schema-Z6-afHJG.d.ts} +1 -1
- package/dist/server/server.d.mts +9 -7
- package/dist/server/server.d.ts +9 -7
- package/dist/server/server.js +6 -6
- package/dist/server/server.mjs +5 -5
- package/dist/server/theme-bridge.js +8 -8
- package/dist/server/theme-bridge.mjs +2 -2
- package/dist/server/{types-Dj8B3QRb.d.ts → types-1cLz0vnq.d.mts} +55 -2
- package/dist/server/{types-txWsSxN7.d.mts → types-BjgZt8xJ.d.mts} +63 -2
- package/dist/server/{types-CdhKJrB0.d.mts → types-BvcJU7zk.d.ts} +55 -2
- package/dist/server/{types-BWQ-TohG.d.ts → types-CVykEqXN.d.ts} +289 -83
- package/dist/server/{types-CL916r6x.d.ts → types-DLBhEPSt.d.ts} +63 -2
- package/dist/server/{types-BLf-hE50.d.mts → types-Dsu9wsUh.d.mts} +289 -83
- package/dist/server/{validation-DzvDwwRo.d.mts → validation-BGuRo8P1.d.mts} +18 -5
- package/dist/server/{validation-CoU8uAiu.d.ts → validation-DU2YE7u5.d.ts} +18 -5
- package/package.json +5 -1
- package/dist/server/chunk-6JBKKV3G.js.map +0 -1
- package/dist/server/chunk-7DS4Q3GA.mjs.map +0 -1
- package/dist/server/chunk-EGTDJ4PL.js.map +0 -1
- package/dist/server/chunk-HOY77YBF.js.map +0 -1
- package/dist/server/chunk-I6K5REFT.mjs.map +0 -1
- package/dist/server/chunk-LCYGQDAB.mjs +0 -835
- package/dist/server/chunk-LCYGQDAB.mjs.map +0 -1
- package/dist/server/chunk-N3PX76AP.mjs.map +0 -1
- package/dist/server/chunk-R5B6IOFQ.js.map +0 -1
- package/dist/server/chunk-TNYU5EIO.js +0 -835
- package/dist/server/chunk-TNYU5EIO.js.map +0 -1
- package/dist/server/chunk-U2NI3TS3.mjs.map +0 -1
- package/dist/server/chunk-USQF2XTU.mjs.map +0 -1
- package/dist/server/chunk-VHDDXCK6.js.map +0 -1
- package/dist/server/loadPage-DLC7DJZP.js +0 -11
- package/dist/server/loadPage-GEGN4UAL.mjs +0 -11
- /package/dist/server/{chunk-ES6QDZUX.mjs.map → chunk-C6FIJC7T.mjs.map} +0 -0
- /package/dist/server/{chunk-24F6FTCI.mjs.map → chunk-OSF34JTQ.mjs.map} +0 -0
- /package/dist/server/{chunk-OP2GHK27.mjs.map → chunk-Z5ZA6Q4D.mjs.map} +0 -0
- /package/dist/server/{loadPage-GEGN4UAL.mjs.map → loadPage-DNQTTRHL.mjs.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/chunk-R5B6IOFQ.js","../../../api/src/endpoints.ts","../../../api/src/url.ts","../../../api/src/request.ts","../../../api/src/aiPlayground.ts","../../src/client/cache.ts","../../src/client/index.ts"],"names":["buildEndpointURL"],"mappings":"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","file":"/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/chunk-R5B6IOFQ.js","sourcesContent":[null,"import type { APIEndpoints } from \"./types\";\n\nconst ENDPOINT_DEFINITIONS = {\n // AI endpoints - no cache due to dynamic nature\n aiContentUpdateChat: {\n path: \"/ai/content-update-chat\",\n method: \"POST\",\n auth: 'user',\n responseKind: 'stream',\n },\n aiChat: {\n path: \"/ai/chat\",\n method: \"POST\",\n auth: 'user',\n responseKind: 'stream',\n },\n applySeoChanges: {\n path: \"/seo/apply\",\n method: \"POST\",\n auth: 'user',\n responseKind: 'json',\n },\n aiCreateBriefChat: {\n path: \"/ai/chat/create-brief\",\n method: \"POST\",\n auth: 'user',\n responseKind: 'json',\n },\n aiPrototypeChat: {\n path: \"/ai/chat/create-prototype\",\n method: \"POST\",\n revalidate: 30, // Short cache for AI responses to avoid duplicate calls\n tags: [\"ai-prototype\"],\n auth: 'user',\n responseKind: 'json',\n },\n aiPatchDryRun: {\n path: \"/ai/patch/dry-run\",\n method: \"POST\",\n auth: 'user',\n responseKind: 'json',\n },\n aiPatchApply: {\n path: \"/ai/patch/apply\",\n method: \"POST\",\n auth: 'user',\n responseKind: 'json',\n },\n aiPlaygroundPropose: {\n path: \"/sites/{siteId}/ai/playground/propose\",\n method: \"POST\",\n auth: 'user',\n responseKind: 'json',\n },\n // Admin SEO\n listGscPropertiesAdmin: {\n path: \"/admin/seo/gsc/properties\",\n method: \"GET\",\n auth: 'admin',\n responseKind: 'json',\n },\n adminSetGscPersist: {\n path: \"/admin/seo/gsc/meta/persist\",\n method: \"POST\",\n auth: 'admin',\n responseKind: 'json',\n },\n adminStartGscVerification: {\n path: \"/admin/seo/gsc/properties/verify/start\",\n method: \"POST\",\n auth: 'admin',\n responseKind: 'json',\n },\n adminConfirmGscVerification: {\n path: \"/admin/seo/gsc/properties/verify/confirm\",\n method: \"POST\",\n auth: 'admin',\n responseKind: 'json',\n },\n adminRunGscIngest: {\n path: \"/admin/seo/ingest/run\",\n method: \"POST\",\n auth: 'admin',\n responseKind: 'json',\n },\n getSeoVerificationMeta: {\n path: \"/public/seo/verification/meta\",\n method: \"GET\",\n auth: 'public',\n responseKind: 'json',\n },\n checkRedirect: {\n path: \"/api/public/content/redirect\",\n method: \"GET\",\n revalidate: 86400, // 24 hours - redirects rarely change\n tags: ['redirect'],\n auth: 'public',\n responseKind: 'json',\n },\n listRedirectRules: {\n path: \"/sites/{siteId}/redirects\",\n method: \"GET\",\n auth: 'user',\n responseKind: 'json',\n },\n createRedirectRule: {\n path: \"/sites/{siteId}/redirects\",\n method: \"POST\",\n auth: 'user',\n responseKind: 'json',\n },\n deleteRedirectRule: {\n path: \"/sites/{siteId}/redirects/{ruleId}\",\n method: \"DELETE\",\n auth: 'user',\n responseKind: 'json',\n },\n // API Keys (Account-level - DEPRECATED, use site-scoped endpoints)\n listApiKeys: {\n path: \"/account/api-keys\",\n method: \"GET\",\n auth: 'user',\n responseKind: 'json',\n },\n createApiKey: {\n path: \"/account/api-keys\",\n method: \"POST\",\n auth: 'user',\n responseKind: 'json',\n },\n revokeApiKey: {\n path: \"/account/api-keys/{keyId}\",\n method: \"DELETE\",\n auth: 'user',\n responseKind: 'json',\n },\n // API Keys (Site-scoped - preferred)\n listSiteApiKeys: {\n path: \"/sites/{siteId}/api-keys\",\n method: \"GET\",\n auth: 'user',\n tags: ['site-{siteId}', 'api-keys'],\n responseKind: 'json',\n },\n createSiteApiKey: {\n path: \"/sites/{siteId}/api-keys\",\n method: \"POST\",\n auth: 'user',\n tags: ['site-{siteId}', 'api-keys'],\n responseKind: 'json',\n },\n revokeSiteApiKey: {\n path: \"/sites/{siteId}/api-keys/{keyId}\",\n method: \"DELETE\",\n auth: 'user',\n tags: ['site-{siteId}', 'api-keys'],\n responseKind: 'json',\n },\n getSitePreviewKey: {\n path: \"/sites/{siteId}/api-keys/preview\",\n method: \"GET\",\n auth: 'user',\n tags: ['site-{siteId}', 'api-keys', 'preview-key'],\n responseKind: 'json',\n },\n regenerateSitePreviewKey: {\n path: \"/sites/{siteId}/api-keys/preview/regenerate\",\n method: \"POST\",\n auth: 'user',\n tags: ['site-{siteId}', 'api-keys', 'preview-key'],\n responseKind: 'json',\n },\n getSiteApiKeyAccessLogs: {\n path: \"/sites/{siteId}/api-keys/access-logs\",\n method: \"GET\",\n auth: 'user',\n tags: ['site-{siteId}', 'api-keys', 'access-logs'],\n responseKind: 'json',\n },\n getBookingSettings: {\n path: \"/sites/{siteId}/bookings/settings\",\n method: \"GET\",\n auth: 'user',\n responseKind: 'json',\n },\n updateBookingSettings: {\n path: \"/sites/{siteId}/bookings/settings\",\n method: \"PUT\",\n auth: 'user',\n responseKind: 'json',\n },\n listAppointmentResources: {\n path: \"/sites/{siteId}/bookings/resources\",\n method: \"GET\",\n auth: 'user',\n responseKind: 'json',\n },\n createAppointmentResource: {\n path: \"/sites/{siteId}/bookings/resources\",\n method: \"POST\",\n auth: 'user',\n responseKind: 'json',\n },\n getAppointmentResource: {\n path: \"/sites/{siteId}/bookings/resources/{resourceId}\",\n method: \"GET\",\n auth: 'user',\n responseKind: 'json',\n },\n updateAppointmentResource: {\n path: \"/sites/{siteId}/bookings/resources/{resourceId}\",\n method: \"PUT\",\n auth: 'user',\n responseKind: 'json',\n },\n deleteAppointmentResource: {\n path: \"/sites/{siteId}/bookings/resources/{resourceId}\",\n method: \"DELETE\",\n auth: 'user',\n responseKind: 'json',\n },\n listAppointmentServices: {\n path: \"/sites/{siteId}/bookings/services\",\n method: \"GET\",\n auth: 'user',\n responseKind: 'json',\n },\n createAppointmentService: {\n path: \"/sites/{siteId}/bookings/services\",\n method: \"POST\",\n auth: 'user',\n responseKind: 'json',\n },\n getAppointmentService: {\n path: \"/sites/{siteId}/bookings/services/{serviceId}\",\n method: \"GET\",\n auth: 'user',\n responseKind: 'json',\n },\n updateAppointmentService: {\n path: \"/sites/{siteId}/bookings/services/{serviceId}\",\n method: \"PUT\",\n auth: 'user',\n responseKind: 'json',\n },\n deleteAppointmentService: {\n path: \"/sites/{siteId}/bookings/services/{serviceId}\",\n method: \"DELETE\",\n auth: 'user',\n responseKind: 'json',\n },\n getAppointmentServicesReference: {\n path: \"/sites/{siteId}/bookings/services/reference\",\n method: \"GET\",\n auth: 'user',\n responseKind: 'json',\n },\n getAppointmentResourcesReference: {\n path: \"/sites/{siteId}/bookings/resources/reference\",\n method: \"GET\",\n auth: 'user',\n responseKind: 'json',\n },\n\n // Service-Resource linking\n getResourceServices: {\n path: \"/sites/{siteId}/bookings/resources/{resourceId}/services\",\n method: \"GET\",\n auth: 'user',\n responseKind: 'json',\n },\n updateResourceServices: {\n path: \"/sites/{siteId}/bookings/resources/{resourceId}/services\",\n method: \"PUT\",\n auth: 'user',\n responseKind: 'json',\n },\n getServiceResources: {\n path: \"/sites/{siteId}/bookings/services/{serviceId}/resources\",\n method: \"GET\",\n auth: 'user',\n responseKind: 'json',\n },\n updateServiceResources: {\n path: \"/sites/{siteId}/bookings/services/{serviceId}/resources\",\n method: \"PUT\",\n auth: 'user',\n responseKind: 'json',\n },\n\n // Availability management\n listAvailabilityRules: {\n path: \"/sites/{siteId}/bookings/resources/{resourceId}/availability\",\n method: \"GET\",\n auth: 'user',\n responseKind: 'json',\n },\n upsertAvailabilityRule: {\n path: \"/sites/{siteId}/bookings/resources/{resourceId}/availability\",\n method: \"POST\",\n auth: 'user',\n responseKind: 'json',\n },\n deleteAvailabilityRule: {\n path: \"/sites/{siteId}/bookings/resources/{resourceId}/availability/{ruleId}\",\n method: \"DELETE\",\n auth: 'user',\n responseKind: 'json',\n },\n listBlackouts: {\n path: \"/sites/{siteId}/bookings/resources/{resourceId}/blackouts\",\n method: \"GET\",\n auth: 'user',\n responseKind: 'json',\n },\n createBlackout: {\n path: \"/sites/{siteId}/bookings/resources/{resourceId}/blackouts\",\n method: \"POST\",\n auth: 'user',\n responseKind: 'json',\n },\n deleteBlackout: {\n path: \"/sites/{siteId}/bookings/resources/{resourceId}/blackouts/{blackoutId}\",\n method: \"DELETE\",\n auth: 'user',\n responseKind: 'json',\n },\n getAvailableSlots: {\n path: \"/sites/{siteId}/bookings/availability/slots\",\n method: \"GET\",\n auth: 'user',\n responseKind: 'json',\n },\n createAppointment: {\n path: \"/sites/{siteId}/bookings/appointments\",\n method: \"POST\",\n auth: 'user',\n responseKind: 'json',\n },\n\n // Data retrieval endpoints - good candidates for caching\n getBrief: {\n path: \"/briefs\",\n method: \"GET\",\n revalidate: 120, // 2 minutes\n tags: [\"brief\"],\n auth: 'user',\n responseKind: 'json',\n },\n // Unified site data endpoint - use this for all site lookups\n getSite: {\n path: \"/sites\",\n method: \"GET\",\n revalidate: 900, // 15 minutes - site data changes less frequently\n tags: [\"site\"],\n auth: 'user',\n responseKind: 'json',\n },\n // DEPRECATED: Use getSite with ?slug={slug} instead\n getSiteBySlug: {\n path: \"/sites/by-slug/{slug}\",\n method: \"GET\",\n revalidate: 900, // 15 minutes - site data changes less frequently\n tags: [\"site\", \"site-{slug}\"],\n auth: 'user',\n responseKind: 'json',\n },\n // DEPRECATED: Use getSite with ?domain={domain} instead\n getSiteByDomain: {\n path: \"/sites/by-domain/{domain}\",\n method: \"GET\",\n revalidate: 900, // 15 minutes - site data changes less frequently\n tags: [\"site\", \"site-domain-{domain}\"],\n auth: 'user',\n responseKind: 'json',\n },\n createBriefTurn: {\n path: \"/brief-turns\",\n method: \"POST\",\n tags: [\"brief\"], // Tags for invalidation after mutation\n auth: 'user',\n responseKind: 'json',\n },\n upsertBrief: {\n path: \"/briefs\",\n method: \"PUT\",\n tags: [\"brief\"],\n auth: 'user',\n responseKind: 'json',\n },\n aiBriefToSpec: {\n path: \"/ai/actions/brief-to-spec\",\n method: \"POST\",\n tags: [\"brief\", \"spec\"],\n auth: 'user',\n responseKind: 'json',\n },\n createSite: {\n path: \"/sites\",\n method: \"POST\",\n tags: [\"site\"],\n auth: 'user',\n responseKind: 'json',\n },\n createSiteManual: {\n path: \"/sites/manual\",\n method: \"POST\",\n tags: [\"site\"],\n auth: 'user',\n responseKind: 'json',\n },\n updateSite: {\n path: '/sites',\n method: 'PUT',\n tags: [\"site\"],\n auth: 'user',\n responseKind: 'json',\n },\n deleteSite: {\n path: '/sites/{siteId}',\n method: 'DELETE',\n tags: ['site', 'site-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n listSiteMembers: {\n path: '/sites/{siteId}/members',\n method: 'GET',\n tags: ['site-{siteId}', 'site-members-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n inviteSiteMember: {\n path: '/sites/{siteId}/members',\n method: 'POST',\n tags: ['site-{siteId}', 'site-members-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n updateSiteMemberRole: {\n path: '/sites/{siteId}/members/{memberId}',\n method: 'PATCH',\n tags: ['site-{siteId}', 'site-members-{siteId}', 'site-member-{memberId}'],\n auth: 'user',\n responseKind: 'json',\n },\n authLogin: {\n path: '/auth/login/submit',\n method: 'POST',\n tags: ['auth'],\n auth: 'public',\n responseKind: 'json',\n },\n authForgotPassword: {\n path: '/auth/forgot/submit',\n method: 'POST',\n tags: ['auth'],\n auth: 'public',\n responseKind: 'json',\n },\n authRegister: {\n path: '/auth/register/submit',\n method: 'POST',\n tags: ['auth'],\n auth: 'public',\n responseKind: 'json',\n },\n authReauthenticate: {\n path: '/auth/reauth/submit',\n method: 'POST',\n tags: ['auth'],\n auth: 'public',\n responseKind: 'json',\n },\n lookupSiteDomains: {\n path: '/sites/{siteId}/domains/lookup',\n method: 'POST',\n tags: ['site-{siteId}', 'site-domains'],\n auth: 'user',\n responseKind: 'json',\n },\n registerSiteDomain: {\n path: '/sites/{siteId}/domains/register',\n method: 'POST',\n tags: ['site-{siteId}', 'site-domains'],\n auth: 'user',\n responseKind: 'json',\n },\n addCustomDomain: {\n path: '/sites/{siteId}/domains/custom',\n method: 'POST',\n tags: ['site-{siteId}', 'site-domains'],\n auth: 'user',\n responseKind: 'json',\n },\n removeCustomDomain: {\n path: '/sites/{siteId}/domains/custom',\n method: 'DELETE',\n tags: ['site-{siteId}', 'site-domains'],\n auth: 'user',\n responseKind: 'json',\n },\n syncCustomDomainToEdgeConfig: {\n path: '/sites/{siteId}/domains/custom/sync',\n method: 'POST',\n tags: ['site-{siteId}', 'site-domains'],\n auth: 'user',\n responseKind: 'json',\n },\n removeSiteMember: {\n path: '/sites/{siteId}/members/{memberId}',\n method: 'DELETE',\n tags: ['site-{siteId}', 'site-members-{siteId}', 'site-member-{memberId}'],\n auth: 'user',\n responseKind: 'json',\n },\n revokeSiteInvitation: {\n path: '/sites/{siteId}/members/invitations/{invitationId}',\n method: 'DELETE',\n tags: ['site-{siteId}', 'site-members-{siteId}', 'site-invite-{invitationId}'],\n auth: 'user',\n responseKind: 'json',\n },\n transferSiteOwnership: {\n path: '/sites/{siteId}/members/transfer-ownership',\n method: 'POST',\n tags: ['site-{siteId}', 'site-members-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n listContentEntries: {\n path: '/sites/{siteId}/content/{type}',\n method: 'GET',\n revalidate: 60,\n tags: ['site-{siteId}', 'content-{siteId}-{type}'],\n auth: 'user',\n responseKind: 'json',\n },\n getContentTemplate: {\n path: '/sites/{siteId}/content/types/{type}/template',\n method: 'GET',\n revalidate: 60,\n tags: ['site-{siteId}', 'content-template-{siteId}-{type}'],\n auth: 'user',\n responseKind: 'json',\n },\n updateContentTemplateBlock: {\n path: '/sites/{siteId}/content/types/{type}/template/blocks/{blockId}',\n method: 'PATCH',\n tags: ['site-{siteId}', 'content-template-{siteId}-{type}', 'content-template-block-{blockId}'],\n auth: 'user',\n responseKind: 'json',\n },\n applyContentTemplateAddon: {\n path: '/sites/{siteId}/content/types/{type}/template/addons',\n method: 'POST',\n tags: ['site-{siteId}', 'content-template-{siteId}-{type}'],\n auth: 'user',\n responseKind: 'json',\n },\n updateContentTemplateBlockBindings: {\n path: '/sites/{siteId}/content/types/{type}/template/blocks/{blockId}/bindings',\n method: 'PATCH',\n tags: ['site-{siteId}', 'content-template-{siteId}-{type}', 'content-template-block-{blockId}'],\n auth: 'user',\n responseKind: 'json',\n },\n createTemplateBlock: {\n path: '/sites/{siteId}/content/types/{type}/template/blocks',\n method: 'POST',\n tags: ['site-{siteId}', 'content-template-{siteId}-{type}'],\n auth: 'user',\n responseKind: 'json',\n },\n deleteTemplateBlock: {\n path: '/sites/{siteId}/content/types/{type}/template/blocks/{blockId}',\n method: 'DELETE',\n tags: ['site-{siteId}', 'content-template-{siteId}-{type}', 'content-template-block-{blockId}'],\n auth: 'user',\n responseKind: 'json',\n },\n reorderTemplateBlocks: {\n path: '/sites/{siteId}/content/types/{type}/template/blocks/reorder',\n method: 'POST',\n tags: ['site-{siteId}', 'content-template-{siteId}-{type}'],\n auth: 'user',\n responseKind: 'json',\n },\n getTransforms: {\n path: '/transforms',\n method: 'GET',\n revalidate: 3600,\n tags: ['transforms'],\n auth: 'public',\n responseKind: 'json',\n },\n createContentEntry: {\n path: '/sites/{siteId}/content/{type}',\n method: 'POST',\n tags: ['site-{siteId}', 'content-{siteId}-{type}'],\n auth: 'user',\n responseKind: 'json',\n },\n getContentEntry: {\n path: '/sites/{siteId}/content/{type}/{entryId}',\n method: 'GET',\n tags: ['site-{siteId}', 'content-{siteId}-{type}', 'content-entry-{entryId}'],\n auth: 'user',\n responseKind: 'json',\n },\n updateContentEntry: {\n path: '/sites/{siteId}/content/{type}/{entryId}',\n method: 'PUT',\n tags: ['site-{siteId}', 'content-{siteId}-{type}', 'content-entry-{entryId}'],\n auth: 'user',\n responseKind: 'json',\n },\n updateContentEntryContent: {\n path: '/sites/{siteId}/content/{type}/{entryId}/content',\n method: 'PUT',\n tags: ['site-{siteId}', 'content-{siteId}-{type}', 'content-entry-{entryId}'],\n auth: 'user',\n responseKind: 'json',\n },\n updateRouteMetadata: {\n path: '/sites/{siteId}/routes/{routeId}/metadata',\n method: 'PATCH',\n tags: ['site-{siteId}', 'route-{routeId}'],\n auth: 'user',\n responseKind: 'json',\n },\n publishContentEntry: {\n path: '/sites/{siteId}/content/{type}/{entryId}/publish',\n method: 'POST',\n tags: ['site-{siteId}', 'content-{siteId}-{type}', 'content-entry-{entryId}'],\n auth: 'user',\n responseKind: 'json',\n },\n discardContentEntry: {\n path: '/sites/{siteId}/content/{type}/{entryId}/discard',\n method: 'POST',\n tags: ['site-{siteId}', 'content-{siteId}-{type}', 'content-entry-{entryId}'],\n auth: 'user',\n responseKind: 'json',\n },\n unpublishContentEntry: {\n path: '/sites/{siteId}/content/{type}/{entryId}/unpublish',\n method: 'POST',\n tags: ['site-{siteId}', 'content-{siteId}-{type}', 'content-entry-{entryId}'],\n auth: 'user',\n responseKind: 'json',\n },\n // Content types: enable + setup\n listContentTypes: {\n path: '/sites/{siteId}/content-types',\n method: 'GET',\n revalidate: 120, // 2 minutes\n tags: ['site-{siteId}', 'content-types'],\n auth: 'user',\n responseKind: 'json',\n },\n enableContentType: {\n path: '/sites/{siteId}/content-types/{key}/enable',\n method: 'POST',\n tags: ['site-{siteId}', 'content-types', 'content-type-{key}'],\n auth: 'user',\n responseKind: 'json',\n },\n setupContentType: {\n path: '/sites/{siteId}/content-types/{key}/setup',\n method: 'POST',\n tags: ['site-{siteId}', 'content-types', 'content-type-{key}'],\n auth: 'user',\n responseKind: 'json',\n },\n deleteContentEntry: {\n path: '/sites/{siteId}/content/{type}/{entryId}',\n method: 'DELETE',\n tags: ['site-{siteId}', 'content-{siteId}-{type}', 'content-entry-{entryId}'],\n auth: 'user',\n responseKind: 'json',\n },\n updateSiteGeneralSettings: {\n path: '/sites/{siteId}/settings/general',\n method: 'POST',\n tags: ['site-{siteId}', 'site-settings-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n getSiteLayoutSettings: {\n path: '/sites/{siteId}/settings/layout',\n method: 'GET',\n revalidate: 120,\n tags: ['site-{siteId}', 'site-settings-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n updateSiteLayoutSettings: {\n path: '/sites/{siteId}/settings/layout',\n method: 'POST',\n tags: ['site-{siteId}', 'site-settings-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n getMaintenanceSettings: {\n path: '/sites/{siteId}/settings/maintenance',\n method: 'GET',\n revalidate: 120,\n tags: ['site-{siteId}', 'site-settings-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n updateMaintenanceSettings: {\n path: '/sites/{siteId}/settings/maintenance',\n method: 'POST',\n tags: ['site-{siteId}', 'site-settings-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n setHomepage: {\n path: '/sites/{siteId}/settings/homepage',\n method: 'POST',\n tags: ['site-{siteId}', 'site-homepage'],\n auth: 'user',\n responseKind: 'json',\n },\n listAccountDomains: {\n path: '/domains',\n method: 'GET',\n tags: ['domains'],\n auth: 'user',\n responseKind: 'json',\n },\n searchDomains: {\n path: '/domains/search',\n method: 'POST',\n tags: ['domains'],\n auth: 'user',\n responseKind: 'json',\n },\n registerDomain: {\n path: '/domains/register',\n method: 'POST',\n tags: ['domains'],\n auth: 'user',\n responseKind: 'json',\n },\n assignDomain: {\n path: '/domains/{domainId}/assign',\n method: 'POST',\n tags: ['domains', 'domain-{domainId}'],\n auth: 'user',\n responseKind: 'json',\n },\n adminStartImpersonation: {\n path: '/admin/impersonation/start',\n method: 'POST',\n tags: ['admin', 'impersonation'],\n auth: 'user',\n responseKind: 'json',\n },\n adminStopImpersonation: {\n path: '/admin/impersonation/stop',\n method: 'POST',\n tags: ['admin', 'impersonation'],\n auth: 'user',\n responseKind: 'json',\n },\n adminAssignRole: {\n path: '/admin/roles/assign',\n method: 'POST',\n tags: ['admin', 'roles'],\n auth: 'user',\n responseKind: 'json',\n },\n adminRevokeRole: {\n path: '/admin/roles/revoke',\n method: 'POST',\n tags: ['admin', 'roles'],\n auth: 'user',\n responseKind: 'json',\n },\n adminChangePlan: {\n path: '/admin/billing/plan',\n method: 'POST',\n tags: ['admin', 'billing'],\n auth: 'user',\n responseKind: 'json',\n },\n changePlan: {\n path: '/billing/plan/change',\n method: 'POST',\n tags: ['billing'],\n auth: 'user',\n responseKind: 'json',\n },\n mfaTotpEnroll: {\n path: '/auth/mfa/totp/enroll',\n method: 'POST',\n tags: ['mfa'],\n auth: 'user',\n responseKind: 'json',\n },\n mfaTotpVerify: {\n path: '/auth/mfa/totp/verify',\n method: 'POST',\n tags: ['mfa'],\n auth: 'user',\n responseKind: 'json',\n },\n mfaTotpActivate: {\n path: '/auth/mfa/totp/activate',\n method: 'POST',\n tags: ['mfa'],\n auth: 'user',\n responseKind: 'json',\n },\n mfaDeleteFactor: {\n path: '/auth/mfa/factors/{factorId}',\n method: 'DELETE',\n tags: ['mfa'],\n auth: 'user',\n responseKind: 'json',\n },\n mfaBackupCodesGet: {\n path: '/auth/mfa/backup-codes',\n method: 'GET',\n tags: ['mfa'],\n auth: 'user',\n responseKind: 'json',\n },\n mfaBackupCodesRotate: {\n path: '/auth/mfa/backup-codes/rotate',\n method: 'POST',\n tags: ['mfa'],\n auth: 'user',\n responseKind: 'json',\n },\n mfaPhoneEnroll: {\n path: '/auth/mfa/phone/enroll',\n method: 'POST',\n tags: ['mfa'],\n auth: 'user',\n responseKind: 'json',\n },\n mfaPhoneChallenge: {\n path: '/auth/mfa/phone/challenge',\n method: 'POST',\n tags: ['mfa'],\n auth: 'user',\n responseKind: 'json',\n },\n mfaPhoneVerify: {\n path: '/auth/mfa/phone/verify',\n method: 'POST',\n tags: ['mfa'],\n auth: 'user',\n responseKind: 'json',\n },\n accountUpdatePassword: {\n path: '/account/password/update',\n method: 'POST',\n tags: ['account'],\n auth: 'user',\n responseKind: 'json',\n },\n accountRevokeSessions: {\n path: '/account/sessions/revoke',\n method: 'POST',\n tags: ['account'],\n auth: 'user',\n responseKind: 'json',\n },\n adminListInvites: {\n path: '/admin/invites',\n method: 'GET',\n tags: ['admin', 'invites'],\n auth: 'user',\n responseKind: 'json',\n },\n adminCreateInvite: {\n path: '/admin/invites',\n method: 'POST',\n tags: ['admin', 'invites'],\n auth: 'user',\n responseKind: 'json',\n },\n adminRevokeInvite: {\n path: '/admin/invites/{inviteId}',\n method: 'DELETE',\n tags: ['admin', 'invites'],\n auth: 'user',\n responseKind: 'json',\n },\n adminCreateUser: {\n path: '/admin/users',\n method: 'POST',\n tags: ['admin', 'users'],\n auth: 'admin',\n responseKind: 'json',\n },\n adminListAllowedDomains: {\n path: '/admin/allowed-domains',\n method: 'GET',\n tags: ['admin', 'allowed-domains'],\n auth: 'user',\n responseKind: 'json',\n },\n adminAddAllowedDomain: {\n path: '/admin/allowed-domains',\n method: 'POST',\n tags: ['admin', 'allowed-domains'],\n auth: 'user',\n responseKind: 'json',\n },\n adminDeleteAllowedDomain: {\n path: '/admin/allowed-domains/{domainId}',\n method: 'DELETE',\n tags: ['admin', 'allowed-domains'],\n auth: 'user',\n responseKind: 'json',\n },\n authAcceptInvite: {\n path: '/auth/invite/accept',\n method: 'POST',\n tags: ['auth', 'invite'],\n auth: 'user',\n responseKind: 'json',\n },\n acceptSiteInvitation: {\n path: '/sites/invitations/accept',\n method: 'POST',\n tags: ['site-invitations'],\n auth: 'user',\n responseKind: 'json',\n },\n getNavigationMenus: {\n path: '/sites/{siteId}/navigation/menus',\n method: 'GET',\n tags: ['site-{siteId}', 'navigation'],\n auth: 'user',\n responseKind: 'json',\n },\n createNavigationMenu: {\n path: '/sites/{siteId}/navigation/menus',\n method: 'POST',\n tags: ['site-{siteId}', 'navigation'],\n auth: 'user',\n responseKind: 'json',\n },\n updateNavigationMenu: {\n path: '/sites/{siteId}/navigation/menus/{menuId}',\n method: 'PATCH',\n tags: ['site-{siteId}', 'navigation', 'navigation-menu-{menuId}'],\n auth: 'user',\n responseKind: 'json',\n },\n deleteNavigationMenu: {\n path: '/sites/{siteId}/navigation/menus/{menuId}',\n method: 'DELETE',\n tags: ['site-{siteId}', 'navigation', 'navigation-menu-{menuId}'],\n auth: 'user',\n responseKind: 'json',\n },\n createNavigationItem: {\n path: '/sites/{siteId}/navigation/menus/{menuId}/items',\n method: 'POST',\n tags: ['site-{siteId}', 'navigation', 'navigation-menu-{menuId}'],\n auth: 'user',\n responseKind: 'json',\n },\n updateNavigationItem: {\n path: '/sites/{siteId}/navigation/menus/{menuId}/items/{itemId}',\n method: 'PATCH',\n tags: ['site-{siteId}', 'navigation', 'navigation-menu-{menuId}', 'navigation-item-{itemId}'],\n auth: 'user',\n responseKind: 'json',\n },\n deleteNavigationItem: {\n path: '/sites/{siteId}/navigation/menus/{menuId}/items/{itemId}',\n method: 'DELETE',\n tags: ['site-{siteId}', 'navigation', 'navigation-menu-{menuId}', 'navigation-item-{itemId}'],\n auth: 'user',\n responseKind: 'json',\n },\n reorderNavigationItems: {\n path: '/sites/{siteId}/navigation/menus/{menuId}/items/reorder',\n method: 'POST',\n tags: ['site-{siteId}', 'navigation', 'navigation-menu-{menuId}'],\n auth: 'user',\n responseKind: 'json',\n },\n getRoutableContent: {\n path: '/sites/{siteId}/routable-content',\n method: 'GET',\n revalidate: 60,\n tags: ['site-{siteId}', 'routable-content-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n // Generic public content preview (preferred)\n getPublishedEntryPreview: {\n path: '/public/content/{siteId}/{type}/{slug}/preview',\n method: 'GET',\n revalidate: 60,\n tags: ['content-{siteId}-{type}-{slug}'],\n auth: 'public',\n responseKind: 'json',\n },\n listPublishedEntries: {\n path: '/public/content/{siteId}/{type}/entries',\n method: 'GET',\n revalidate: 60,\n tags: ['content-{siteId}-{type}'],\n auth: 'public',\n responseKind: 'json',\n },\n getPublishedPostPreview: {\n path: '/public/posts/{siteId}/{slug}/preview',\n method: 'GET',\n revalidate: 60,\n tags: ['blog-post:{siteId}:{slug}'],\n auth: 'public',\n responseKind: 'json',\n },\n proposalsSelect: {\n path: '/proposals/select',\n method: 'POST',\n tags: [\"proposal\", \"site\"],\n auth: 'user',\n responseKind: 'json',\n },\n createTheme: {\n path: '/ai/chat/create-theme',\n method: 'POST',\n revalidate: 60, // 1 minute cache for theme creation to avoid duplicate requests\n tags: [\"theme\", \"ai-theme\"],\n auth: 'user',\n responseKind: 'json',\n },\n generateThemes: {\n path: '/theme/generate',\n method: 'POST',\n tags: [\"theme\"],\n auth: 'user',\n responseKind: 'json',\n },\n extractThemeFromInspiration: {\n path: '/theme/extract-from-inspiration',\n method: 'POST',\n tags: [\"theme\", \"preferences\"],\n auth: 'user',\n responseKind: 'json',\n },\n saveSiteTheme: {\n path: '/sites/{siteId}/theme/save',\n method: 'POST',\n tags: ['site-{siteId}', 'theme'],\n auth: 'user',\n responseKind: 'json',\n },\n uploadSiteLogo: {\n path: '/storage/upload-site-logo',\n method: 'POST',\n tags: [\"site\", \"logo\"],\n auth: 'user',\n responseKind: 'json',\n },\n upsertThemePreferences: {\n path: '/theme-preferences/upsert',\n method: 'POST',\n tags: [\"theme\", \"preferences\"],\n auth: 'user',\n responseKind: 'json',\n },\n finalizeSite: {\n path: '/sites/finalize',\n method: 'POST',\n tags: [\"site\"],\n auth: 'user',\n responseKind: 'json',\n },\n instagramUploadZip: {\n path: '/api/instagram/upload-zip',\n method: 'POST',\n tags: ['instagram-import'],\n auth: 'user',\n responseKind: 'json',\n },\n getAnalyticsReport: {\n path: '/sites/{siteId}/analytics/report',\n method: 'GET',\n revalidate: 300,\n tags: ['site-{siteId}', 'analytics-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n getSeoOverview: {\n path: '/sites/{siteId}/seo/overview',\n method: 'GET',\n revalidate: 300,\n tags: ['site-{siteId}', 'seo-overview-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n getSeoPages: {\n path: '/sites/{siteId}/seo/pages',\n method: 'GET',\n revalidate: 300,\n tags: ['site-{siteId}', 'seo-pages-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n getSeoQueries: {\n path: '/sites/{siteId}/seo/queries',\n method: 'GET',\n revalidate: 300,\n tags: ['site-{siteId}', 'seo-queries-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n getPerformanceOverview: {\n path: '/sites/{siteId}/performance/overview',\n method: 'GET',\n revalidate: 300,\n tags: ['site-{siteId}', 'performance-overview-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n createMediaAsset: {\n path: '/media',\n method: 'POST',\n tags: ['media'],\n auth: 'user',\n responseKind: 'json',\n },\n mediaList: {\n path: '/media',\n method: 'GET',\n tags: ['media'],\n auth: 'user',\n responseKind: 'json',\n },\n mediaGet: {\n path: '/media/{assetId}',\n method: 'GET',\n tags: ['media', 'media-{assetId}'],\n auth: 'user',\n responseKind: 'json',\n },\n mediaUpdate: {\n path: '/media/{assetId}',\n method: 'PATCH',\n tags: ['media', 'media-{assetId}'],\n auth: 'user',\n responseKind: 'json',\n },\n mediaDelete: {\n path: '/media/{assetId}',\n method: 'DELETE',\n tags: ['media', 'media-{assetId}'],\n auth: 'user',\n responseKind: 'void',\n },\n mediaBulkDelete: {\n path: '/media/bulk-delete',\n method: 'POST',\n tags: ['media'],\n auth: 'user',\n responseKind: 'json',\n },\n mediaGetSignedUrl: {\n path: '/media/{assetId}/signed-url',\n method: 'GET',\n tags: ['media', 'media-{assetId}'],\n auth: 'user',\n responseKind: 'json',\n },\n mediaUpload: {\n path: '/media/upload',\n method: 'POST',\n tags: ['media'],\n auth: 'user',\n responseKind: 'json',\n },\n getMediaLabels: {\n path: '/media/labels',\n method: 'GET',\n tags: ['media', 'media-labels'],\n auth: 'user',\n responseKind: 'json',\n },\n getMediaSettings: {\n path: '/media/settings',\n method: 'GET',\n tags: ['media-settings'],\n auth: 'user',\n responseKind: 'json',\n },\n updateMediaSettings: {\n path: '/media/settings',\n method: 'POST',\n tags: ['media-settings'],\n auth: 'user',\n responseKind: 'json',\n },\n // Media endpoints\n mediaSearch: {\n path: '/media/search',\n method: 'POST',\n tags: ['media-search'],\n auth: 'user',\n responseKind: 'json',\n },\n classifyMediaAsset: {\n path: '/media/{assetId}/classify',\n method: 'POST',\n tags: ['media', 'media-{assetId}'],\n auth: 'user',\n responseKind: 'json',\n },\n classifyMediaBatch: {\n path: '/media/classify',\n method: 'POST',\n tags: ['media'],\n auth: 'user',\n responseKind: 'json',\n },\n mediaJobsStatus: {\n path: '/media/jobs/status',\n method: 'GET',\n tags: ['media'],\n auth: 'user',\n responseKind: 'json',\n },\n enqueueMediaClassifyJob: {\n path: '/media/jobs',\n method: 'POST',\n tags: ['media'],\n auth: 'user',\n responseKind: 'json',\n },\n runMediaClassifyJob: {\n path: '/media/jobs/run',\n method: 'POST',\n tags: ['media'],\n auth: 'user',\n responseKind: 'json',\n },\n runAllMediaClassifyJobs: {\n path: '/media/jobs/run-all',\n method: 'POST',\n tags: ['media'],\n auth: 'user',\n responseKind: 'json',\n },\n initSiteContent: {\n path: '/sites/{siteId}/content/init',\n method: 'POST',\n tags: [\"site\", \"content\"],\n auth: 'user',\n responseKind: 'json',\n },\n updateBlockContent: {\n path: '/blocks/{blockId}/content',\n method: 'POST',\n tags: ['block', 'block-{blockId}', 'content'],\n auth: 'user',\n responseKind: 'json',\n },\n saveBlockContent: {\n path: '/blocks/{blockId}/content',\n method: 'POST',\n tags: ['block', 'block-{blockId}', 'content'],\n auth: 'user',\n responseKind: 'json',\n },\n createBlock: {\n path: '/sites/{siteId}/pages/{pageId}/blocks',\n method: 'POST',\n tags: ['site-{siteId}', 'page-{pageId}', 'blocks'],\n auth: 'user',\n responseKind: 'json',\n },\n reorderBlocks: {\n path: '/sites/{siteId}/pages/{pageId}/blocks/reorder',\n method: 'POST',\n tags: ['site-{siteId}', 'page-{pageId}', 'blocks'],\n auth: 'user',\n responseKind: 'json',\n },\n deleteBlock: {\n path: '/sites/{siteId}/pages/{pageId}/blocks/{blockId}',\n method: 'DELETE',\n tags: ['site-{siteId}', 'page-{pageId}', 'blocks'],\n auth: 'user',\n responseKind: 'json',\n },\n listBlocks: {\n path: '/sites/{siteId}/pages/{pageId}/blocks',\n method: 'GET',\n tags: ['site-{siteId}', 'page-{pageId}', 'blocks'],\n auth: 'user',\n responseKind: 'json',\n },\n getBlockContent: {\n path: '/blocks/{blockId}/content',\n method: 'GET',\n tags: ['block-{blockId}', 'content'],\n auth: 'user',\n responseKind: 'json',\n },\n // DEPRECATED: Use getSite with ?id={id} instead\n getSiteById: {\n path: '/sites/by-id/{id}',\n method: 'GET',\n revalidate: 900, // 15 minutes\n tags: ['site-{id}'],\n auth: 'user',\n responseKind: 'json',\n },\n // Page data endpoints\n getPageById: {\n path: '/sites/{siteId}/pages/{pageId}',\n method: 'GET',\n revalidate: 900, // 15 minutes\n tags: ['site-{siteId}', 'page-{pageId}'],\n auth: 'user',\n responseKind: 'json',\n },\n getContentByPath: {\n path: '/sites/{siteId}/pages',\n method: 'GET',\n tags: ['site-{siteId}', 'routable-content-{siteId}'],\n auth: 'public',\n responseKind: 'json',\n },\n getPageByPath: {\n path: '/sites/{siteId}/pages',\n method: 'GET',\n tags: ['site-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n // Forms CRUD\n listForms: {\n path: '/sites/{siteId}/forms',\n method: 'GET',\n tags: ['site-{siteId}', 'forms'],\n auth: 'user',\n responseKind: 'json',\n },\n listBookingForms: {\n path: '/sites/{siteId}/bookings/forms',\n method: 'GET',\n tags: ['site-{siteId}', 'forms'],\n auth: 'user',\n responseKind: 'json',\n },\n \n createForm: {\n path: '/sites/{siteId}/forms',\n method: 'POST',\n tags: ['site-{siteId}', 'forms'],\n auth: 'user',\n responseKind: 'json',\n },\n updateForm: {\n path: '/sites/{siteId}/forms/{slug}',\n method: 'PATCH',\n tags: ['site-{siteId}', 'forms', 'form-{slug}'],\n auth: 'user',\n responseKind: 'json',\n },\n deleteForm: {\n path: '/sites/{siteId}/forms/{slug}',\n method: 'DELETE',\n tags: ['site-{siteId}', 'forms', 'form-{slug}'],\n auth: 'user',\n responseKind: 'json',\n },\n listFormSubmissions: {\n path: '/sites/{siteId}/forms/{slug}/submissions',\n method: 'GET',\n revalidate: 30,\n tags: ['site-{siteId}', 'form-{slug}', 'form-submissions-{slug}'],\n auth: 'user',\n responseKind: 'json',\n },\n // Public submit\n submitForm: {\n path: '/forms/submit',\n method: 'POST',\n tags: ['forms-submit'],\n auth: 'public',\n responseKind: 'json',\n },\n // Public forms\n getPublicFormById: {\n path: '/public/forms/{formId}',\n method: 'GET',\n revalidate: 60,\n tags: ['form-{formId}'],\n auth: 'public',\n responseKind: 'json',\n },\n // Public booking services\n getPublicBookingServices: {\n path: '/public/bookings/services',\n method: 'GET',\n revalidate: 60,\n tags: ['site-{siteId}'],\n auth: 'public',\n responseKind: 'json',\n },\n devToolsImpersonateAdmin: {\n path: '/dev-tools/impersonate/admin',\n method: 'POST',\n auth: 'admin',\n responseKind: 'json',\n },\n devToolsImpersonateRandom: {\n path: '/dev-tools/impersonate/random',\n method: 'POST',\n auth: 'admin',\n responseKind: 'json',\n },\n devToolsSeedDemoData: {\n path: '/dev-tools/seed',\n method: 'POST',\n auth: 'admin',\n responseKind: 'json',\n },\n // Public analytics collection endpoint\n analyticsCollect: {\n path: '/api/analytics/collect',\n method: 'POST',\n auth: 'public',\n responseKind: 'json',\n },\n // Public events for event calendar block\n listPublicEvents: {\n path: '/public/sites/{siteId}/events',\n method: 'GET',\n revalidate: 60,\n tags: ['public-events-{siteId}'],\n auth: 'public',\n responseKind: 'json',\n },\n // Public event registration\n registerForEvent: {\n path: '/public/sites/{siteId}/events/register',\n method: 'POST',\n tags: ['public-events-{siteId}', 'event-registration'],\n auth: 'public',\n responseKind: 'json',\n },\n // Content Types CRUD\n listSiteContentTypes: {\n path: '/sites/{siteId}/content-types',\n method: 'GET',\n revalidate: 60,\n tags: ['site-{siteId}', 'content-types-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n getContentType: {\n path: '/sites/{siteId}/content-types/by-id/{typeId}',\n method: 'GET',\n revalidate: 60,\n tags: ['site-{siteId}', 'content-type-{typeId}'],\n auth: 'user',\n responseKind: 'json',\n },\n createContentType: {\n path: '/sites/{siteId}/content-types',\n method: 'POST',\n tags: ['site-{siteId}', 'content-types-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n updateContentType: {\n path: '/sites/{siteId}/content-types/by-id/{typeId}',\n method: 'PATCH',\n tags: ['site-{siteId}', 'content-type-{typeId}', 'content-types-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n deleteContentType: {\n path: '/sites/{siteId}/content-types/by-id/{typeId}',\n method: 'DELETE',\n tags: ['site-{siteId}', 'content-type-{typeId}', 'content-types-{sideId}'],\n auth: 'user',\n responseKind: 'json',\n },\n duplicateContentType: {\n path: '/sites/{siteId}/content-types/by-id/{typeId}/duplicate',\n method: 'POST',\n tags: ['site-{siteId}', 'content-type-{typeId}', 'content-types-{siteId}'],\n auth: 'user',\n responseKind: 'json',\n },\n // Admin site creation\n adminCreateSite: {\n path: '/admin/sites',\n method: 'POST',\n tags: ['admin', 'sites'],\n auth: 'admin',\n responseKind: 'json',\n },\n // SDK Config\n refreshSdkConfig: {\n path: '/sites/{siteId}/refresh-sdk-config',\n method: 'POST',\n tags: ['site-{siteId}', 'sdk-config'],\n auth: 'user',\n responseKind: 'json',\n },\n // Stripe Connect - Site billing\n stripeConnectAuthorize: {\n path: '/sites/{siteId}/billing/connect/authorize',\n method: 'POST',\n tags: ['site-{siteId}', 'stripe-connect'],\n auth: 'user',\n responseKind: 'json',\n },\n stripeConnectStatus: {\n path: '/sites/{siteId}/billing/connect/status',\n method: 'GET',\n tags: ['site-{siteId}', 'stripe-connect'],\n auth: 'user',\n responseKind: 'json',\n },\n stripeConnectDisconnect: {\n path: '/sites/{siteId}/billing/connect/disconnect',\n method: 'DELETE',\n tags: ['site-{siteId}', 'stripe-connect'],\n auth: 'user',\n responseKind: 'json',\n },\n // Backup\n importSiteBackup: {\n path: '/sites/{siteId}/backup/import',\n method: 'POST',\n tags: ['site-{siteId}', 'backup'],\n auth: 'user',\n responseKind: 'json',\n },\n previewBackup: {\n path: '/backup/preview',\n method: 'POST',\n tags: ['backup'],\n auth: 'user',\n responseKind: 'json',\n },\n importBackupAsNewSite: {\n path: '/sites/backup/import-as-new',\n method: 'POST',\n tags: ['site', 'backup'],\n auth: 'user',\n responseKind: 'json',\n },\n // Admin billing price overrides\n adminGetPriceOverride: {\n path: '/admin/billing/price-override',\n method: 'GET',\n tags: ['admin', 'billing', 'price-override'],\n auth: 'admin',\n responseKind: 'json',\n },\n adminUpsertPriceOverride: {\n path: '/admin/billing/price-override',\n method: 'POST',\n tags: ['admin', 'billing', 'price-override'],\n auth: 'admin',\n responseKind: 'json',\n },\n adminDeletePriceOverride: {\n path: '/admin/billing/price-override',\n method: 'DELETE',\n tags: ['admin', 'billing', 'price-override'],\n auth: 'admin',\n responseKind: 'json',\n },\n} as const satisfies APIEndpoints;\n\nexport const API_ENDPOINTS = ENDPOINT_DEFINITIONS;\n\ntype IsUnknown<T> = unknown extends T ? ([T] extends [unknown] ? true : false) : false;\n\ntype MissingResponseTypes = {\n [K in keyof APIEndpoints]: IsUnknown<NonNullable<APIEndpoints[K]['response']>> extends true ? K : never;\n}[keyof APIEndpoints];\n\ntype MissingResponseKindMetadata = {\n [K in keyof typeof ENDPOINT_DEFINITIONS]: typeof ENDPOINT_DEFINITIONS[K] extends { responseKind: infer RK }\n ? RK extends import('./types').ApiResponseKind\n ? never\n : K\n : K;\n}[keyof typeof ENDPOINT_DEFINITIONS];\n\ntype MissingAuthMetadata = {\n [K in keyof typeof ENDPOINT_DEFINITIONS]: typeof ENDPOINT_DEFINITIONS[K] extends { auth: infer A }\n ? A extends import('./types').ApiAuthRequirement\n ? never\n : K\n : K;\n}[keyof typeof ENDPOINT_DEFINITIONS];\n\ntype AssertTrue<T extends true> = T;\n\ntype _EnsureResponseTypes = AssertTrue<MissingResponseTypes extends never ? true : false>;\ntype _EnsureResponseKindMetadata = AssertTrue<MissingResponseKindMetadata extends never ? true : false>;\ntype _EnsureAuthMetadata = AssertTrue<MissingAuthMetadata extends never ? true : false>;\n\n// Helper function to build full URL\nexport function buildEndpointURL(baseURL: string, endpoint: keyof APIEndpoints): string {\n return baseURL + API_ENDPOINTS[endpoint].path;\n}\n","/**\n * URL construction helpers for dashboard and API URLs.\n *\n * These functions ensure consistent URL construction across the codebase\n * and derive the API URL from the dashboard URL to avoid duplicate env vars.\n */\n\n/**\n * Get the base dashboard URL from environment\n * @returns Dashboard base URL (e.g., 'http://dashboard.local:4000')\n * @throws Error if neither NEXT_PUBLIC_DASHBOARD_URL nor NEXT_PUBLIC_CMS_API_URL is configured\n */\nexport function getDashboardBaseUrl(): string {\n const internalUrl = process.env.CMS_API_URL;\n if (internalUrl) {\n return internalUrl.replace(/\\/api\\/?$/, '').replace(/\\/$/, '');\n }\n\n const dashboardUrl = process.env.NEXT_PUBLIC_DASHBOARD_URL;\n\n if (dashboardUrl) {\n // Remove trailing slash for consistency\n return dashboardUrl.replace(/\\/$/, '');\n }\n\n // Legacy fallback: derive from NEXT_PUBLIC_CMS_API_URL\n const legacyApiUrl = process.env.NEXT_PUBLIC_CMS_API_URL;\n if (legacyApiUrl) {\n // Strip /api suffix if present\n return legacyApiUrl.replace(/\\/$/, '').replace(/\\/api$/, '');\n }\n\n throw new Error(\n 'NEXT_PUBLIC_DASHBOARD_URL is not configured. ' +\n 'Set it to your dashboard URL (e.g., http://dashboard.local:4000)'\n );\n}\n\n/**\n * Get the CMS API URL by appending /api to the dashboard URL\n * @returns API base URL (e.g., 'http://dashboard.local:4000/api' or '/api' in browser)\n * @throws Error if neither NEXT_PUBLIC_DASHBOARD_URL nor NEXT_PUBLIC_CMS_API_URL is configured (server-side only)\n */\nexport function getCmsApiUrl(): string {\n // In browser, always use relative URL to avoid CORS issues\n // (e.g., www.example.com calling example.com/api would be cross-origin)\n if (typeof window !== 'undefined') {\n return '/api';\n }\n\n // Server-side: use explicit URLs for SSR/API routes\n const internalUrl = process.env.CMS_API_URL;\n if (internalUrl) {\n return internalUrl.replace(/\\/$/, '');\n }\n\n // Check for NEXT_PUBLIC_DASHBOARD_URL first (new standard)\n const dashboardUrl = process.env.NEXT_PUBLIC_DASHBOARD_URL;\n if (dashboardUrl) {\n const base = dashboardUrl.replace(/\\/$/, '');\n return `${base}/api`;\n }\n\n // Legacy: Use NEXT_PUBLIC_CMS_API_URL directly if available\n const legacyApiUrl = process.env.NEXT_PUBLIC_CMS_API_URL;\n if (legacyApiUrl) {\n return legacyApiUrl.replace(/\\/$/, '');\n }\n\n throw new Error(\n 'NEXT_PUBLIC_DASHBOARD_URL is not configured. ' +\n 'Set it to your dashboard URL (e.g., http://dashboard.local:4000)'\n );\n}\n\n/**\n * Legacy: Get API URL, supporting old NEXT_PUBLIC_CMS_API_URL env var\n * @deprecated Use getCmsApiUrl() instead - this function is maintained for backwards compatibility\n */\nexport function resolveApiBaseUrl(): string {\n return getCmsApiUrl();\n}\n","import SupabaseClient from \"@supabase/supabase-js/dist/module/SupabaseClient\";\nimport { API_ENDPOINTS } from \"./endpoints\";\nimport { AuthHeaders, getAuthHeaders } from \"./token\";\nimport { APICallParams, APIEndpoints, ApiAuthRequirement, ApiResponseKind, HTTPMethod } from \"./types\";\nimport { resolveApiBaseUrl } from \"./url\";\nimport { normalizeCmsApiKey } from \"./env\";\n\n// Optional Next.js imports - only available when Next.js is present\n// Next.js 16 requires a cacheLife profile as the second argument\ntype RevalidateTagFn = (tag: string, cacheLifeProfile: string) => void;\nlet revalidateTag: RevalidateTagFn | null = null;\n// Only attempt to import Next.js cache helpers on the server\nif (typeof window === 'undefined') {\n try {\n const nextCache = require(\"next/cache\");\n revalidateTag = nextCache.revalidateTag as RevalidateTagFn;\n } catch {\n // Next.js not available - revalidation functions will be no-ops\n revalidateTag = null;\n }\n}\n\ntype RawApiClient = <E extends keyof APIEndpoints>(params: APICallParams<E>) => Promise<Response>;\ntype EndpointResponse<E extends keyof APIEndpoints> = APIEndpoints[E]['response'];\ntype ApiResponseFor<E extends keyof APIEndpoints> =\n EndpointResponse<E> extends undefined ? void : NonNullable<EndpointResponse<E>>;\nexport type ApiClient = <E extends keyof APIEndpoints>(params: APICallParams<E>) => Promise<ApiResponseFor<E>>;\n\nexport interface ApiRequestErrorOptions {\n endpoint: keyof APIEndpoints;\n status: number;\n method: HTTPMethod;\n auth?: ApiAuthRequirement;\n requestId?: string;\n body?: unknown;\n cause?: unknown;\n}\n\nexport class ApiRequestError extends Error {\n readonly endpoint: keyof APIEndpoints;\n readonly status: number;\n readonly method: HTTPMethod;\n readonly auth?: ApiAuthRequirement;\n readonly requestId?: string;\n readonly body?: unknown;\n readonly cause?: unknown;\n\n constructor(message: string, options: ApiRequestErrorOptions) {\n super(message);\n this.name = 'ApiRequestError';\n this.endpoint = options.endpoint;\n this.status = options.status;\n this.method = options.method;\n this.auth = options.auth;\n this.requestId = options.requestId;\n this.body = options.body;\n this.cause = options.cause;\n }\n}\n\n// Helper function to build full URL\nfunction buildEndpointURL(baseURL: string, endpoint: keyof APIEndpoints): string {\n return baseURL + API_ENDPOINTS[endpoint].path;\n}\n\nexport const getApiUrl = (endpoint: keyof APIEndpoints) => buildEndpointURL(resolveApiBaseUrl(), endpoint);\n\n// Simple cache invalidation helper\nfunction invalidateCacheTags(tags?: string[], params?: Record<string, string | number>): void {\n // Only run on the server, and only when Next.js provides a revalidateTag function\n if (typeof window !== 'undefined' || !revalidateTag || !tags) return;\n\n tags.forEach(tag => {\n // Replace parameter placeholders in tags\n let processedTag = tag;\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n processedTag = processedTag.replace(`{${key}}`, String(value));\n });\n }\n\n try {\n revalidateTag(processedTag, 'max');\n } catch {\n // If static generation store is not available in this context, skip\n }\n });\n}\n\nexport async function parseErrorBody(response: Response): Promise<unknown> {\n const clone = response.clone();\n const contentType = clone.headers.get('content-type') ?? '';\n if (contentType.includes('application/json')) {\n try {\n return await clone.json();\n } catch {\n // fall through to attempt plain text parsing\n }\n }\n\n try {\n const text = await clone.text();\n return text.length ? text : null;\n } catch {\n return null;\n }\n}\n\nexport async function parseSuccessResponse<E extends keyof APIEndpoints>(\n endpoint: E,\n response: Response,\n config: APIEndpoints[E],\n): Promise<ApiResponseFor<E>> {\n const responseKind: ApiResponseKind = config.responseKind ?? 'json';\n const auth = config.auth ?? 'user';\n const requestId = response.headers.get('x-request-id') ?? undefined;\n\n switch (responseKind) {\n case 'json': {\n if (response.status === 204 || response.status === 205 || response.status === 304) {\n return undefined as ApiResponseFor<E>;\n }\n\n const raw = await response.text();\n if (!raw.trim()) {\n return undefined as ApiResponseFor<E>;\n }\n\n try {\n return JSON.parse(raw) as ApiResponseFor<E>;\n } catch (cause) {\n throw new ApiRequestError(\n `Failed to parse JSON response for endpoint ${String(endpoint)}`,\n {\n endpoint,\n status: response.status,\n method: config.method,\n auth,\n requestId,\n body: raw,\n cause,\n },\n );\n }\n }\n case 'text': {\n return (await response.text()) as ApiResponseFor<E>;\n }\n case 'stream': {\n const body = response.body;\n if (!body) {\n throw new ApiRequestError(\n `Expected a streamed body for endpoint ${String(endpoint)}`,\n {\n endpoint,\n status: response.status,\n method: config.method,\n auth,\n requestId,\n },\n );\n }\n const stream = body as ReadableStream<Uint8Array>;\n return stream as unknown as ApiResponseFor<E>;\n }\n case 'void': {\n return undefined as ApiResponseFor<E>;\n }\n default: {\n return undefined as ApiResponseFor<E>;\n }\n }\n}\n\nexport async function createAuthenticatedApiClient(supabase: SupabaseClient): Promise<ApiClient> {\n const authHeaders = await getAuthHeaders(supabase)\n\n if (!authHeaders) {\n throw new Error('No authentication token available')\n }\n \n return createCMSClient(authHeaders);\n}\n\nfunction createRawCMSClient(headers: AuthHeaders | {} = {}, baseUrl?: string): RawApiClient {\n return <E extends keyof APIEndpoints>({\n endpoint,\n body,\n params,\n options = {}\n }: APICallParams<E>): Promise<Response> => {\n const resolvedBaseUrl = baseUrl ?? resolveApiBaseUrl();\n let url = buildEndpointURL(resolvedBaseUrl, endpoint);\n const originalPath = API_ENDPOINTS[endpoint].path;\n\n // Handle URL path parameters and collect unused params for query string\n const unusedParams: Record<string, string> = {};\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n const placeholder = `{${key}}`;\n if (originalPath.includes(placeholder)) {\n // This param is used in the path - substitute it\n url = url.replace(placeholder, value);\n } else {\n // This param is not used in the path - save for query string\n unusedParams[key] = value;\n }\n });\n }\n\n const endpointConfig = API_ENDPOINTS[endpoint];\n const method = endpointConfig.method as HTTPMethod;\n const isGetOrHead = method === 'GET' || method === 'HEAD';\n\n // For GET/HEAD requests, convert body and unused params to query parameters\n if (isGetOrHead) {\n const queryParams = new URLSearchParams();\n\n // Add unused params (not used in path) to query string\n Object.entries(unusedParams).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n queryParams.append(key, String(value));\n }\n });\n\n // Add body params to query string\n if (body) {\n Object.entries(body as Record<string, any>).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n queryParams.append(key, String(value));\n }\n });\n }\n\n const queryString = queryParams.toString();\n if (queryString) {\n url += (url.includes('?') ? '&' : '?') + queryString;\n }\n }\n // Detect if body is FormData (for file uploads)\n const isFormData = typeof FormData !== 'undefined' && body instanceof FormData;\n \n // Build Next.js cache options for read operations\n const nextOptions: { revalidate?: number; tags?: string[] } = {};\n if (\n isGetOrHead &&\n 'revalidate' in endpointConfig &&\n typeof endpointConfig.revalidate === 'number'\n ) {\n nextOptions.revalidate = endpointConfig.revalidate;\n }\n if ('tags' in endpointConfig && Array.isArray(endpointConfig.tags)) {\n // Process tags with parameter replacement\n nextOptions.tags = endpointConfig.tags.map<string>((tag) => {\n let processedTag = tag as string;\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n processedTag = processedTag.replace(`{${key}}`, String(value));\n });\n }\n return processedTag;\n });\n }\n \n const requestInit: RequestInit & { next?: { revalidate?: number; tags?: string[] } } = {\n method,\n ...options,\n // Don't include body for GET/HEAD requests\n body: isGetOrHead ? undefined : (isFormData ? (body as unknown as BodyInit) : (body ? JSON.stringify(body) : undefined)),\n headers: {\n ...options.headers,\n ...headers,\n // Don't set Content-Type for GET/HEAD requests without body\n ...(isGetOrHead ? {} : (isFormData ? {} : { 'Content-Type': 'application/json' })),\n },\n // Add Next.js caching options\n next: Object.keys(nextOptions).length > 0 ? nextOptions : undefined,\n };\n\n // Make the fetch request\n const fetchPromise = fetch(url, requestInit);\n \n // For mutation requests, invalidate cache after successful response\n if (!isGetOrHead && 'tags' in endpointConfig && Array.isArray(endpointConfig.tags)) {\n const tags = endpointConfig.tags.map((tag) => tag as string);\n return fetchPromise.then(response => {\n if (response.ok) {\n invalidateCacheTags(tags, params);\n }\n return response;\n });\n }\n \n return fetchPromise;\n }\n}\n\nfunction createParsedClient(rawClient: RawApiClient): ApiClient {\n return async <E extends keyof APIEndpoints>(params: APICallParams<E>) => {\n const response = await rawClient(params);\n const endpoint = params.endpoint;\n const config = API_ENDPOINTS[endpoint];\n const auth = config.auth ?? 'user';\n\n if (!response.ok) {\n const body = await parseErrorBody(response);\n const requestId = response.headers.get('x-request-id') ?? undefined;\n throw new ApiRequestError(\n `Request to ${String(endpoint)} failed with status ${response.status}`,\n {\n endpoint,\n status: response.status,\n method: config.method,\n auth,\n requestId,\n body,\n },\n );\n }\n\n return parseSuccessResponse(endpoint, response, config);\n };\n}\n\nexport function createCMSClient(headers: AuthHeaders | {} = {}, baseUrl?: string): ApiClient {\n return createParsedClient(createRawCMSClient(headers, baseUrl));\n}\n\nexport const createServerAPIClient = (apiKey: string, baseUrl?: string): ApiClient => {\n const normalizedApiKey = normalizeCmsApiKey(apiKey);\n\n if (!normalizedApiKey) {\n throw new Error('No API key provided for server API client')\n }\n const authHeaders = {\n Authorization: `Bearer ${normalizedApiKey}`,\n }\n return createCMSClient(authHeaders, baseUrl);\n}\n\nexport function createInternalAPIClient(baseUrl?: string): ApiClient {\n return createCMSClient({}, baseUrl);\n}\n\n// Bearer-token client for preview-auth flows\nexport function createBearerAPIClient(token: string, baseUrl?: string): ApiClient {\n const authHeaders = {\n Authorization: `Bearer ${token}`,\n };\n return createCMSClient(authHeaders, baseUrl);\n}\n","import { z } from 'zod';\n\n/**\n * RFC-6902 JSON Patch Operations\n * Standard JSON Patch format for AI Playground content updates\n */\n\nexport const Rfc6902PatchOp = z.discriminatedUnion('op', [\n // Standard RFC-6902 operations\n z.object({\n op: z.literal('add'),\n path: z.string(),\n value: z.unknown(),\n }),\n z.object({\n op: z.literal('remove'),\n path: z.string(),\n }),\n z.object({\n op: z.literal('replace'),\n path: z.string(),\n value: z.unknown(),\n }),\n z.object({\n op: z.literal('move'),\n from: z.string(),\n path: z.string(),\n }),\n z.object({\n op: z.literal('copy'),\n from: z.string(),\n path: z.string(),\n }),\n // Block-level operations (Phase 2)\n z.object({\n op: z.literal('add_block'),\n blockKind: z.string(),\n afterBlockId: z.string().nullable(),\n content: z.record(z.string(), z.unknown()),\n rationale: z.string(),\n }),\n z.object({\n op: z.literal('delete_block'),\n blockId: z.string(),\n rationale: z.string(),\n }),\n z.object({\n op: z.literal('reorder_block'),\n blockId: z.string(),\n afterBlockId: z.string().nullable(),\n rationale: z.string(),\n }),\n]);\n\nexport const PatchEnvelope = z.object({\n blockId: z.string(),\n blockKind: z.string().optional(),\n blockPurpose: z.string().optional().nullable(),\n ops: z.array(Rfc6902PatchOp),\n rationale: z.string(),\n currentContent: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const ContentUpdateResponse = z.object({\n patches: z.array(PatchEnvelope),\n assistantMessage: z.string(),\n});\n\nexport const PlaygroundProposeRequest = z.object({\n request: z.string().min(1).max(2000),\n});\n\nexport const PlaygroundProposeResponse = z.object({\n patches: z.array(PatchEnvelope),\n assistantMessage: z.string(),\n validation: z.object({\n valid: z.boolean(),\n issues: z.array(z.string()),\n filtered: z.number(),\n }),\n});\n\n// Multi-page schemas (Phase 2)\nexport const MultiPagePatchEnvelope = z.object({\n pageId: z.string(),\n blockId: z.string().optional(), // Not present for page-level ops\n blockKind: z.string().optional(),\n blockPurpose: z.string().optional().nullable(),\n ops: z.array(Rfc6902PatchOp),\n rationale: z.string(),\n currentContent: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const MultiPageUpdateResponse = z.object({\n patches: z.array(MultiPagePatchEnvelope),\n assistantMessage: z.string(),\n pagesModified: z.number(),\n toolCallsUsed: z.number(),\n});\n\n// Stream event types for real-time updates\nexport type StreamEvent =\n | { type: 'status'; message: string; detail?: string }\n | { type: 'tool_call'; tool: string; args: unknown }\n | { type: 'tool_result'; tool: string; summary: string }\n | { type: 'patch_group'; envelope: MultiPagePatchEnvelope }\n | { type: 'complete'; response: MultiPageUpdateResponse };\n\n// Types - export both the schemas and the inferred types\nexport type Rfc6902PatchOp = z.infer<typeof Rfc6902PatchOp>;\nexport type PatchEnvelope = z.infer<typeof PatchEnvelope>;\nexport type ContentUpdateResponse = z.infer<typeof ContentUpdateResponse>;\nexport type PlaygroundProposeRequest = z.infer<typeof PlaygroundProposeRequest>;\nexport type PlaygroundProposeResponse = z.infer<typeof PlaygroundProposeResponse>;\nexport type MultiPagePatchEnvelope = z.infer<typeof MultiPagePatchEnvelope>;\nexport type MultiPageUpdateResponse = z.infer<typeof MultiPageUpdateResponse>;\n\n// Re-export schemas for runtime validation\nexport {\n Rfc6902PatchOp as Rfc6902PatchOpSchema,\n PatchEnvelope as PatchEnvelopeSchema,\n ContentUpdateResponse as ContentUpdateResponseSchema,\n PlaygroundProposeRequest as PlaygroundProposeRequestSchema,\n PlaygroundProposeResponse as PlaygroundProposeResponseSchema,\n MultiPagePatchEnvelope as MultiPagePatchEnvelopeSchema,\n MultiPageUpdateResponse as MultiPageUpdateResponseSchema,\n};\n\n// Page context types for building AI prompts\nexport type AllowedField = {\n path: string;\n type: 'richtext' | 'plaintext' | 'url' | 'number' | 'boolean';\n};\n\nexport type BlockContext = {\n id: string;\n kind: string;\n purpose: string | null;\n orderIndex: number;\n allowedPaths: string[]; // Legacy, kept for backward compat\n allowedFields?: AllowedField[]; // New structured format with types\n content: Record<string, unknown>;\n};\n\nexport type PageContext = {\n site: {\n id: string;\n title: string;\n primaryDomain: string | null;\n };\n page: {\n id: string;\n path: string;\n title: string;\n slug: string | null;\n metaTitle: string | null;\n metaDescription: string | null;\n blocks: BlockContext[];\n };\n};\n","/**\n * Simple in-memory cache with TTL support\n */\nexport class SimpleCache<T> {\n private cache = new Map<string, { value: T; expires: number }>();\n private maxSize: number;\n private ttl: number;\n\n constructor(options: { maxSize?: number; ttl?: number } = {}) {\n this.maxSize = options.maxSize ?? 100;\n this.ttl = options.ttl ?? 300000; // 5 minutes in milliseconds\n }\n\n get(key: string): T | undefined {\n const entry = this.cache.get(key);\n if (!entry) return undefined;\n\n // Check if expired\n if (Date.now() > entry.expires) {\n this.cache.delete(key);\n return undefined;\n }\n\n return entry.value;\n }\n\n set(key: string, value: T): void {\n // Enforce max size with simple FIFO eviction\n if (this.cache.size >= this.maxSize) {\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n\n this.cache.set(key, {\n value,\n expires: Date.now() + this.ttl,\n });\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n has(key: string): boolean {\n return this.get(key) !== undefined;\n }\n}\n","import { createBearerAPIClient } from '@riverbankcms/api';\nimport type {\n RiverbankClient,\n RiverbankClientConfig,\n GetEntriesBaseParams,\n PublicBookingServicesResponse,\n PublicEventsResponse,\n PublicFormResponse,\n} from './types';\nimport { SimpleCache } from './cache';\n\n/**\n * Create a Riverbank CMS client for fetching content\n *\n * @example\n * ```ts\n * const client = createRiverbankClient({\n * apiKey: 'bld_live_sk_...',\n * baseUrl: 'https://dashboard.example.com/api',\n * });\n *\n * const site = await client.getSite({ slug: 'my-site' });\n * ```\n */\nexport function createRiverbankClient(config: RiverbankClientConfig): RiverbankClient {\n if (!config.baseUrl) {\n throw new Error(\n 'baseUrl is required when creating a Builder client. ' +\n 'Expected format: https://dashboard.example.com/api (must include /api path)'\n );\n }\n\n // Validate baseUrl format\n if (!config.baseUrl.endsWith('/api')) {\n throw new Error(\n `baseUrl must end with '/api'. Received: ${config.baseUrl}. ` +\n 'Expected format: https://dashboard.example.com/api'\n );\n }\n\n const cacheEnabled = config.cache?.enabled ?? true;\n const cacheTTL = (config.cache?.ttl ?? 300) * 1000; // Convert seconds to milliseconds\n const cacheMaxSize = config.cache?.maxSize ?? 100;\n\n // Create internal API client with Bearer token auth\n const apiClient = createBearerAPIClient(config.apiKey, config.baseUrl);\n\n // Create cache instance\n const cache = new SimpleCache<unknown>({\n maxSize: cacheMaxSize,\n ttl: cacheTTL,\n });\n\n /**\n * Helper to cache API calls\n */\n async function cachedFetch<T>(\n cacheKey: string,\n fetcher: () => Promise<T>,\n options?: { force?: boolean }\n ): Promise<T> {\n // Check cache unless force is true\n if (cacheEnabled && !options?.force) {\n const cached = cache.get(cacheKey) as T | undefined;\n if (cached !== undefined) {\n return cached;\n }\n }\n\n // Fetch fresh data\n const data = await fetcher();\n\n // Store in cache\n if (cacheEnabled) {\n cache.set(cacheKey, data);\n }\n\n return data;\n }\n\n return {\n async getSite(params) {\n const { slug, domain, id } = params;\n\n if (!slug && !domain && !id) {\n throw new Error(\n 'getSite() requires at least one identifier: slug, domain, or id. ' +\n `Received: ${JSON.stringify(params)}`\n );\n }\n\n const cacheKey = `site:${slug || domain || id}`;\n\n return cachedFetch(cacheKey, async () => {\n // Convert params to string record for API client\n const apiParams: Record<string, string> = {};\n if (params.slug) apiParams.slug = params.slug;\n if (params.domain) apiParams.domain = params.domain;\n if (params.id) apiParams.id = params.id;\n return await apiClient({ endpoint: 'getSite', params: apiParams });\n });\n },\n\n async getPage(params) {\n const { siteId, path, preview = false } = params;\n const cacheKey = `page:${siteId}:${path}:${preview}`;\n\n return cachedFetch(cacheKey, async () => {\n return await apiClient({ endpoint: 'getContentByPath', params: { siteId }, body: { path, preview } });\n });\n },\n\n async getEntries(params: GetEntriesBaseParams & { includeMeta?: boolean }) {\n const { siteId, contentType, limit, offset, order, preview = false, mode, entryIds, includeMeta } = params;\n\n // Include all params in cache key to ensure different queries are cached separately\n const entryIdsCacheKey = mode === 'manual' && entryIds?.length ? entryIds.join(',') : '';\n const cacheKey = `entries:${siteId}:${contentType}:${limit ?? ''}:${offset ?? ''}:${order ?? ''}:${preview}:${mode ?? ''}:${entryIdsCacheKey}:${includeMeta ?? ''}`;\n\n return cachedFetch(cacheKey, async () => {\n // Build API params\n const apiParams: Record<string, string> = {\n siteId,\n type: contentType,\n };\n\n // Add optional pagination\n if (typeof limit === 'number') {\n apiParams.limit = String(limit);\n }\n\n // Add offset for pagination\n if (typeof offset === 'number') {\n apiParams.offset = String(offset);\n }\n\n // Request metadata if needed\n if (includeMeta) {\n apiParams.meta = 'true';\n }\n\n // Convert user-friendly order to API format\n // 'order' means custom ordering - we don't pass an order param (API default)\n if (order === 'newest') {\n apiParams.order = 'published_at.desc';\n } else if (order === 'oldest') {\n apiParams.order = 'published_at.asc';\n } else if (order === 'title') {\n apiParams.order = 'title.asc';\n }\n // 'order' or undefined: don't set order param, use API default\n\n // Add preview stage if enabled\n if (preview) {\n apiParams.stage = 'preview';\n }\n\n // Manual mode - pass entry IDs for hydration\n if (mode === 'manual' && entryIds?.length) {\n apiParams.mode = 'manual';\n apiParams.entryIds = JSON.stringify(entryIds);\n }\n\n // API returns pagination metadata when meta=true\n return await apiClient({ endpoint: 'listPublishedEntries', params: apiParams });\n });\n },\n\n async getEntry(params) {\n const { siteId, contentType, slug } = params;\n const cacheKey = `entry:${siteId}:${contentType}:${slug}`;\n\n return cachedFetch(cacheKey, async () => {\n return await apiClient({ endpoint: 'getPublishedEntryPreview', params: { siteId, type: contentType, slug } });\n });\n },\n\n async getPublicFormById(params) {\n const { formId } = params;\n if (!formId) {\n throw new Error('getPublicFormById() requires formId');\n }\n const cacheKey = `public-form:${formId}`;\n return cachedFetch(cacheKey, async () => {\n return await apiClient({ endpoint: 'getPublicFormById', params: { formId } }) as PublicFormResponse;\n });\n },\n\n async getPublicBookingServices(params) {\n const { siteId, ids } = params;\n if (!siteId) {\n throw new Error('getPublicBookingServices() requires siteId');\n }\n const cacheKey = `public-booking-services:${siteId}:${ids ?? ''}`;\n return cachedFetch(cacheKey, async () => {\n const apiParams: Record<string, string> = { siteId };\n if (ids) apiParams.ids = ids;\n return await apiClient({ endpoint: 'getPublicBookingServices', params: apiParams }) as PublicBookingServicesResponse;\n });\n },\n\n async listPublicEvents(params) {\n const { siteId, limit, from, to, stage } = params;\n if (!siteId) {\n throw new Error('listPublicEvents() requires siteId');\n }\n const cacheKey = `public-events:${siteId}:${limit ?? ''}:${from ?? ''}:${to ?? ''}:${stage ?? ''}`;\n return cachedFetch(cacheKey, async () => {\n const apiParams: Record<string, string> = { siteId };\n if (typeof limit === 'number') apiParams.limit = String(limit);\n if (from) apiParams.from = from;\n if (to) apiParams.to = to;\n if (stage) apiParams.stage = stage;\n return await apiClient({ endpoint: 'listPublicEvents', params: apiParams }) as PublicEventsResponse;\n });\n },\n\n clearCache() {\n cache.clear();\n },\n // Cast to RiverbankClient to satisfy overloaded getEntries signature\n // The implementation correctly returns the right type based on includeMeta\n } as RiverbankClient;\n}\n\n// Re-export types\nexport type { RiverbankClient, RiverbankClientConfig } from './types';\n"]}
|