@stacksjs/cms 0.75.243 → 0.75.245

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.
@@ -1,2 +1,2 @@
1
- import{existsSync}from"node:fs";import{join}from"node:path";import process from"node:process";import{getBlock}from"../blocks/registry";import{sanitizeRichText}from"./sanitize";let renderTemplateFn=null;async function getRenderTemplate(){if(!renderTemplateFn)renderTemplateFn=(await import("@stacksjs/stx")).renderTemplate;return renderTemplateFn}function resolveViewFile(relative){const candidates=[join(process.cwd(),"resources/views",relative),join(process.cwd(),"storage/framework/defaults/resources/views",relative)];for(const candidate of candidates)if(existsSync(candidate))return candidate;return null}async function renderBlock(block,site){const definition=getBlock(block.type);if(!definition)return"";const partial=resolveViewFile(`${definition.component}.stx`);if(!partial)return"";const props={...block.props};if(typeof props.html==="string")props.html=sanitizeRichText(props.html);if(Array.isArray(props.columns))props.columns=props.columns.map((column)=>column&&typeof column==="object"&&typeof column.html==="string"?{...column,html:sanitizeRichText(column.html)}:column);const renderTemplate=await getRenderTemplate();try{return await renderTemplate(partial,{context:{block:{id:block.id,type:block.type},props,site},templateOnly:!0,processClientScripts:!1,injectCSS:!1})}catch(error){console.error(`[cms] block "${block.type}" failed to render: ${error.message}`);return""}}export async function renderCmsPage(site,page){const content=(await Promise.all(page.blocks.map((block)=>renderBlock(block,site)))).join(`
1
+ import{existsSync}from"node:fs";import{join}from"node:path";import process from"node:process";import{storagePath}from"@stacksjs/path";import{getBlock}from"../blocks/registry";import{sanitizeRichText}from"./sanitize";let renderTemplateFn=null;async function getRenderTemplate(){if(!renderTemplateFn)renderTemplateFn=(await import("@stacksjs/stx")).renderTemplate;return renderTemplateFn}function resolveViewFile(relative){const candidates=[join(process.cwd(),"resources/views",relative),join(storagePath("framework/defaults/resources/views"),relative)];for(const candidate of candidates)if(existsSync(candidate))return candidate;return null}async function renderBlock(block,site){const definition=getBlock(block.type);if(!definition)return"";const partial=resolveViewFile(`${definition.component}.stx`);if(!partial)return"";const props={...block.props};if(typeof props.html==="string")props.html=sanitizeRichText(props.html);if(Array.isArray(props.columns))props.columns=props.columns.map((column)=>column&&typeof column==="object"&&typeof column.html==="string"?{...column,html:sanitizeRichText(column.html)}:column);const renderTemplate=await getRenderTemplate();try{return await renderTemplate(partial,{context:{block:{id:block.id,type:block.type},props,site},templateOnly:!0,processClientScripts:!1,injectCSS:!1})}catch(error){console.error(`[cms] block "${block.type}" failed to render: ${error.message}`);return""}}export async function renderCmsPage(site,page){const content=(await Promise.all(page.blocks.map((block)=>renderBlock(block,site)))).join(`
2
2
  `),template=resolveViewFile("cms/page.stx");if(!template)return new Response(`<!DOCTYPE html><html><head><title>${escapeHtml(page.title)}</title></head><body>${content}</body></html>`,{headers:{"Content-Type":"text/html; charset=utf-8"}});const html=await(await getRenderTemplate())(template,{context:{site,page:{id:page.id,title:page.title,path:page.path,template:page.template,metaDescription:page.metaDescription??""},content},injectCSS:!0,title:page.title});return new Response(html,{headers:{"Content-Type":"text/html; charset=utf-8","Cache-Control":"public, max-age=60",Vary:"Host"}})}function escapeHtml(value){return value.replace(/[&<>"']/g,(char)=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[char])}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@stacksjs/cms",
3
3
  "type": "module",
4
4
  "sideEffects": false,
5
- "version": "0.75.243",
5
+ "version": "0.75.245",
6
6
  "description": "Stacks cms utilities.",
7
7
  "author": "Chris Breuer",
8
8
  "contributors": [
@@ -58,14 +58,14 @@
58
58
  "prepublishOnly": "bun run build"
59
59
  },
60
60
  "dependencies": {
61
- "@stacksjs/database": "0.75.243",
62
- "@stacksjs/error-handling": "0.75.243",
63
- "@stacksjs/orm": "0.75.243",
64
- "@stacksjs/path": "0.75.243",
65
- "@stacksjs/sites": "0.75.243",
66
- "@stacksjs/slug": "0.75.243",
67
- "@stacksjs/stx": "^0.2.604",
68
- "@stacksjs/validation": "0.75.243",
61
+ "@stacksjs/database": "0.75.245",
62
+ "@stacksjs/error-handling": "0.75.245",
63
+ "@stacksjs/orm": "0.75.245",
64
+ "@stacksjs/path": "0.75.245",
65
+ "@stacksjs/sites": "0.75.245",
66
+ "@stacksjs/slug": "0.75.245",
67
+ "@stacksjs/stx": "^0.2.607",
68
+ "@stacksjs/validation": "0.75.245",
69
69
  "ts-medium-editor": "^0.2.0",
70
70
  "ts-slug": "^0.1.2",
71
71
  "ts-spreadsheets": "^0.2.5"