@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 3.36 kB
JavaScript
import{copy as e}from"../../i18n/copy.mjs";import t from"../../../constants/constants.mjs";import{isRecord as n}from"./paths.mjs";const r=t=>{let n=[],r=0;for(;r<t.length;){if(t[r]===`.`)return{error:{type:`validation`,status:400,message:e(`server:core.email.storage.invalid.selector`,{data:{selector:t}})},data:void 0};let i=``;for(;r<t.length&&t[r]!==`.`&&t[r]!==`[`;){if(t[r]===`]`)return{error:{type:`validation`,status:400,message:e(`server:core.email.storage.invalid.selector`,{data:{selector:t}})},data:void 0};i+=t[r],r++}for(i.length>0&&n.push({type:`key`,key:i});r<t.length&&t[r]===`[`;){let i=t.indexOf(`]`,r);if(i===-1)return{error:{type:`validation`,status:400,message:e(`server:core.email.storage.invalid.selector`,{data:{selector:t}})},data:void 0};let a=t.slice(r+1,i);if(a===`*`)n.push({type:`wildcard`});else if(/^\d+$/.test(a))n.push({type:`index`,index:Number.parseInt(a,10)});else return{error:{type:`validation`,status:400,message:e(`server:core.email.storage.invalid.selector`,{data:{selector:t}})},data:void 0};r=i+1}if(r<t.length&&(t[r]!==`.`||(r++,r>=t.length)))return{error:{type:`validation`,status:400,message:e(`server:core.email.storage.invalid.selector`,{data:{selector:t}})},data:void 0}}return n.length===0?{error:{type:`validation`,status:400,message:e(`server:core.email.storage.invalid.selector`,{data:{selector:t}})},data:void 0}:{error:void 0,data:n}},i=(r,i)=>{if(!n(i))return{error:{type:`validation`,status:400,message:e(`server:core.email.storage.rule.must.be.object`,{data:{selector:r}})},data:void 0};let a=i.encrypt,o=i.redact,s=i.neverStore;if(a!==void 0&&a!==!0)return{error:{type:`validation`,status:400,message:e(`server:core.email.storage.rule.flag.true`,{data:{selector:r,flag:`encrypt`}})},data:void 0};if(o!==void 0&&o!==!0)return{error:{type:`validation`,status:400,message:e(`server:core.email.storage.rule.flag.true`,{data:{selector:r,flag:`redact`}})},data:void 0};if(s!==void 0&&s!==!0)return{error:{type:`validation`,status:400,message:e(`server:core.email.storage.rule.flag.true`,{data:{selector:r,flag:`neverStore`}})},data:void 0};let c=a===!0,l=o===!0,u=s===!0;if(!c&&!l&&!u)return{error:{type:`validation`,status:400,message:e(`server:core.email.storage.rule.requires.flag`,{data:{selector:r}})},data:void 0};if(u&&(c||l))return{error:{type:`validation`,status:400,message:e(`server:core.email.storage.rule.never.store.exclusive`,{data:{selector:r}})},data:void 0};let d=`previewFallback`in i?{previewFallback:i.previewFallback}:l||u?{previewFallback:t.email.storage.defaultPreviewFallback}:{};return u?{error:void 0,data:{neverStore:!0,...d}}:{error:void 0,data:{...c?{encrypt:!0}:{},...l?{redact:!0}:{},...d}}},a=e=>{if(e==null)return{error:void 0,data:null};let t={};for(let[n,a]of Object.entries(e)){let e=r(n);if(e.error)return e;let o=i(n,a);if(o.error)return o;t[n]=o.data}return{error:void 0,data:Object.keys(t).length>0?t:null}},o=e=>e.reduce((e,t)=>t.type===`wildcard`?e+1:e+2,0),s=e=>{let t=a(e);if(t.error)return t;if(!t.data)return{error:void 0,data:[]};let n=[];for(let[e,i]of Object.entries(t.data)){let t=r(e);if(t.error)return t;n.push({selector:e,rule:i,segments:t.data,index:n.length,specificity:o(t.data)})}return{error:void 0,data:n}};export{a as normalizeEmailStorageConfig,s as parseEmailStorageRules,r as parseEmailStorageSelector};
//# sourceMappingURL=config.mjs.map