@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 6.25 kB
JavaScript
import{copy as e}from"../i18n/copy.mjs";import t from"../../constants/constants.mjs";import n from"../../utils/helpers/get-base-url.mjs";import{version as r}from"../../packages/core/package.mjs";const i=new Map,a=e=>{let n=e.env?.LUCID_CMS_INTERNAL_REMOTE_API_URL_OVERRIDE;return(typeof n==`string`&&n.trim()?n.trim():t.endpoints.lucidRemoteApiDomain).replace(/\/+$/,``)},o=e=>{if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.status==`number`&&typeof t.message==`string`&&(t.code===void 0||typeof t.code==`string`)&&(t.key===void 0||typeof t.key==`string`)&&(t.name===void 0||typeof t.name==`string`)},s=t=>{switch(t){case`ai_invalid_license`:return{name:e(`server:core.ai.remote.license.invalid.name`),message:e(`server:core.ai.remote.license.invalid.message`)};case`ai_license_key_required`:return{name:e(`server:core.ai.remote.license.key.required.name`),message:e(`server:core.ai.remote.license.key.required.message`)};case`failed_to_load_cms_license`:case`failed_to_load_cms_licenses`:return{name:e(`server:core.ai.remote.license.verify.failed.name`),message:e(`server:core.ai.remote.license.verify.failed.message`)};case`license_not_found`:return{name:e(`server:core.ai.remote.license.not.found.name`),message:e(`server:core.ai.remote.license.not.found.message`)};case`organisation_ai_credit_exhausted`:return{name:e(`server:core.ai.remote.credit.exhausted.name`),message:e(`server:core.ai.remote.credit.exhausted.message`)};case`organisation_ai_deferred_debit_outstanding`:return{name:e(`server:core.ai.remote.deferred.debit.outstanding.name`),message:e(`server:core.ai.remote.deferred.debit.outstanding.message`)};case`organisation_ai_top_up_requires_payment_method`:return{name:e(`server:core.ai.remote.top.up.payment.method.name`),message:e(`server:core.ai.remote.top.up.payment.method.message`)};case`organisation_ai_top_up_pending`:return{name:e(`server:core.ai.remote.top.up.pending.name`),message:e(`server:core.ai.remote.top.up.pending.message`)};case`organisation_ai_top_up_failed`:return{name:e(`server:core.ai.remote.top.up.failed.name`),message:e(`server:core.ai.remote.top.up.failed.message`)};case`license_ai_period_cap_reached`:return{name:e(`server:core.ai.remote.period.cap.reached.name`),message:e(`server:core.ai.remote.period.cap.reached.message`)};case`license_ai_disabled_for_usage`:return{name:e(`server:core.ai.remote.license.ai.disabled.name`),message:e(`server:core.ai.remote.license.ai.disabled.message`)};case`license_deactivated_for_usage`:return{name:e(`server:core.ai.remote.license.deactivated.name`),message:e(`server:core.ai.remote.license.deactivated.message`)};case`license_not_found_for_usage`:return{name:e(`server:core.ai.remote.license.not.found.name`),message:e(`server:core.ai.remote.license.not.found.message`)};case`cms_ai_feature_not_supported`:return{name:e(`server:core.ai.remote.feature.not.supported.name`),message:e(`server:core.ai.remote.feature.not.supported.message`)};case`ai_provider_configuration_missing`:return{name:e(`server:core.ai.remote.provider.configuration.name`),message:e(`server:core.ai.remote.provider.configuration.message`)};case`ai_usage_pricing_missing`:case`ai_pricing_must_be_usd`:return{name:e(`server:core.ai.remote.pricing.configuration.name`),message:e(`server:core.ai.remote.pricing.configuration.message`)};case`cms_ai_image_source_invalid`:return{name:e(`server:core.ai.remote.image.source.invalid.name`),message:e(`server:core.ai.remote.image.source.invalid.message`)};case`cms_ai_image_storage_configuration_missing`:return{name:e(`server:core.ai.remote.image.storage.unavailable.name`),message:e(`server:core.ai.remote.image.storage.unavailable.message`)};case`cms_ai_generation_request_not_found`:case`cms_ai_generated_image_not_found`:return{name:e(`server:core.ai.remote.generation.not.found.name`),message:e(`server:core.ai.remote.generation.not.found.message`)};case`cms_ai_idempotency_key_required`:case`cms_ai_idempotency_key_conflict`:return{name:e(`server:core.ai.remote.generation.request.invalid.name`),message:e(`server:core.ai.remote.generation.request.invalid.message`)};case`ai_provider_request_failed`:case`ai_provider_invalid_response`:case`ai_provider_output_truncated`:return{name:e(`server:core.ai.remote.provider.failed.name`),message:e(`server:core.ai.remote.provider.failed.message`)};default:return}},c=(t,n)=>{if(o(n)){let r=n.key??n.code,i=s(r);return{error:{type:`basic`,status:n.status||t.status,key:r,name:i?.name??e(`server:core.lucid.remote.request.failed.name`,{defaultMessage:n.name??`Lucid remote request failed`}),message:i?.message??e(`server:core.lucid.remote.request.failed`,{defaultMessage:n.message}),errors:n.errors},data:void 0}}return{error:{type:`basic`,status:t.status,message:e(`server:core.lucid.remote.request.failed`,{defaultMessage:t.statusText||`Lucid remote request failed.`})},data:void 0}},l=t=>({request:async(n,i={})=>{let a=i.retries??0,o=new URL(n,t.apiDomain).toString(),s=new Headers(i.headers);s.has(`Accept`)||s.set(`Accept`,`application/json`),s.has(`User-Agent`)||s.set(`User-Agent`,`LucidCMS/${r}`),s.has(`Origin`)||s.set(`Origin`,i.origin??t.origin);let l=i.body===void 0?void 0:typeof i.body==`string`?i.body:JSON.stringify(i.body);l!==void 0&&!s.has(`Content-Type`)&&s.set(`Content-Type`,`application/json`);for(let t=0;t<=a;t++)try{let n=await fetch(o,{method:i.method??`GET`,headers:s,body:l});if(n.status>=500&&t<a)continue;let r=await n.text(),u;try{u=r?JSON.parse(r):{}}catch(t){return{error:{type:`basic`,status:n.status||500,message:e(`server:core.lucid.remote.request.failed`,{defaultMessage:t instanceof Error?t.message:`Lucid remote request failed.`})},data:void 0}}return n.ok?{error:void 0,data:{response:n,json:u}}:c(n,u)}catch(n){if(t<a)continue;return{error:{type:`basic`,status:500,message:e(`server:core.lucid.remote.request.failed`,{defaultMessage:n instanceof Error?n.message:`Lucid remote request failed.`})},data:void 0}}return{error:{type:`basic`,status:500,message:e(`server:core.lucid.remote.request.failed`,{defaultMessage:`Lucid remote request failed.`})},data:void 0}}}),u=e=>{let t=a(e),r=n(e),o=`${t}:${r}`,s=i.get(o);if(s)return s;let c=l({apiDomain:t,origin:r});return i.set(o,c),c};export{u as getLucidRemoteClient};
//# sourceMappingURL=client.mjs.map