@stacksjs/cms 0.72.37 → 0.72.39

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.
Files changed (2) hide show
  1. package/dist/build.js +5 -5
  2. package/package.json +3 -3
package/dist/build.js CHANGED
@@ -650,7 +650,7 @@ This gives you a fully configured project with a dev server, database, API route
650
650
 
651
651
  We are actively working on expanding Stacks with more features, better documentation, and a growing ecosystem of plugins. Follow us on [GitHub](https://github.com/stacksjs/stacks) and join the conversation.
652
652
 
653
- The future of full-stack development is here. Let's build something great together.`,excerpt:"We are thrilled to announce the official launch of Stacks, a full-stack framework designed to make building web applications, APIs, and cloud infrastructure a delightful experience.",status:"published",published_at:"2026-02-20T10:00:00.000Z",views:1250,is_featured:1,created_at:"2026-02-20T10:00:00.000Z",updated_at:"2026-02-20T10:00:00.000Z"},{id:2,title:"Deploying to AWS with a Single Command",slug:"deploying-to-aws",content:"Learn how Stacks makes cloud deployment as simple as running ./buddy deploy.",body:`One of the most powerful features of Stacks is its built-in cloud deployment pipeline. Instead of wrestling with Terraform, CDK, or manual AWS console clicks, you can deploy your entire application \u2014 API, frontend, docs, and blog \u2014 with a single command.
653
+ The future of full-stack development is here. Let's build something great together.`,excerpt:"We are thrilled to announce the official launch of Stacks, a full-stack framework designed to make building web applications, APIs, and cloud infrastructure a delightful experience.",status:"published",published_at:"2026-02-20T10:00:00.000Z",views:1250,is_featured:1,created_at:"2026-02-20T10:00:00.000Z",updated_at:"2026-02-20T10:00:00.000Z"},{id:2,title:"Deploying to AWS with a Single Command",slug:"deploying-to-aws",content:"Learn how Stacks makes cloud deployment as simple as running ./buddy deploy.",body:`One of the most powerful features of Stacks is its built-in cloud deployment pipeline. Instead of wrestling with Terraform, CDK, or manual AWS console clicks, you can deploy your entire application - API, frontend, docs, and blog - with a single command.
654
654
 
655
655
  ## The Problem with Cloud Deployment
656
656
 
@@ -703,7 +703,7 @@ Subsequent deployments are incremental. Stacks detects what changed and only upd
703
703
 
704
704
  ## Try It Yourself
705
705
 
706
- If you have an AWS account, you can deploy a Stacks app in under 10 minutes. Check out our [deployment guide](https://stacksjs.com/docs/bootcamp/deploy) to get started.`,excerpt:"Learn how Stacks makes cloud deployment as simple as running a single command. No Terraform, no CDK \u2014 just ./buddy deploy.",status:"published",published_at:"2026-02-18T14:00:00.000Z",views:840,is_featured:0,created_at:"2026-02-18T14:00:00.000Z",updated_at:"2026-02-18T14:00:00.000Z"},{id:3,title:"Building Type-Safe APIs with the Stacks ORM",slug:"type-safe-apis",content:"Discover how Stacks models auto-generate fully typed API endpoints.",body:`One of the most tedious parts of building a web application is writing CRUD boilerplate. With Stacks, your models automatically generate fully typed API endpoints, database migrations, factories, and seeders.
706
+ If you have an AWS account, you can deploy a Stacks app in under 10 minutes. Check out our [deployment guide](https://stacksjs.com/docs/bootcamp/deploy) to get started.`,excerpt:"Learn how Stacks makes cloud deployment as simple as running a single command. No Terraform, no CDK - just ./buddy deploy.",status:"published",published_at:"2026-02-18T14:00:00.000Z",views:840,is_featured:0,created_at:"2026-02-18T14:00:00.000Z",updated_at:"2026-02-18T14:00:00.000Z"},{id:3,title:"Building Type-Safe APIs with the Stacks ORM",slug:"type-safe-apis",content:"Discover how Stacks models auto-generate fully typed API endpoints.",body:`One of the most tedious parts of building a web application is writing CRUD boilerplate. With Stacks, your models automatically generate fully typed API endpoints, database migrations, factories, and seeders.
707
707
 
708
708
  ## Define a Model, Get an API
709
709
 
@@ -774,7 +774,7 @@ export default defineModel({
774
774
 
775
775
  ## What's Next
776
776
 
777
- We are working on even more ORM features \u2014 real-time subscriptions, full-text search integration, and automatic OpenAPI documentation generation. Stay tuned.`,excerpt:"Discover how Stacks models auto-generate fully typed API endpoints, database migrations, and more from a single model definition.",status:"published",published_at:"2026-02-15T09:00:00.000Z",views:620,is_featured:0,created_at:"2026-02-15T09:00:00.000Z",updated_at:"2026-02-15T09:00:00.000Z"},{id:4,title:"Meet Buddy: Your CLI Companion for Stacks Development",slug:"meet-buddy-cli",content:"Buddy is the CLI tool that powers your entire Stacks development workflow.",body:`Every great framework needs a great CLI. In Stacks, that CLI is called **Buddy** \u2014 your companion for development, testing, deployment, and everything in between.
777
+ We are working on even more ORM features \u2014 real-time subscriptions, full-text search integration, and automatic OpenAPI documentation generation. Stay tuned.`,excerpt:"Discover how Stacks models auto-generate fully typed API endpoints, database migrations, and more from a single model definition.",status:"published",published_at:"2026-02-15T09:00:00.000Z",views:620,is_featured:0,created_at:"2026-02-15T09:00:00.000Z",updated_at:"2026-02-15T09:00:00.000Z"},{id:4,title:"Meet Buddy: Your CLI Companion for Stacks Development",slug:"meet-buddy-cli",content:"Buddy is the CLI tool that powers your entire Stacks development workflow.",body:`Every great framework needs a great CLI. In Stacks, that CLI is called **Buddy** - your companion for development, testing, deployment, and everything in between.
778
778
 
779
779
  ## What Can Buddy Do?
780
780
 
@@ -827,7 +827,7 @@ Buddy runs on [Bun](https://bun.sh), giving it near-instant startup times and ex
827
827
 
828
828
  ## Try It
829
829
 
830
- Start a new Stacks project and explore what Buddy can do. You might be surprised how much a good CLI can improve your workflow.`,excerpt:"Buddy is the CLI tool that powers your entire Stacks development workflow \u2014 from dev server to deployment, all in one place.",status:"published",published_at:"2026-02-12T11:30:00.000Z",views:450,is_featured:0,created_at:"2026-02-12T11:30:00.000Z",updated_at:"2026-02-12T11:30:00.000Z"},{id:5,title:"Documentation as a First-Class Citizen",slug:"documentation-first-class",content:"How Stacks makes writing and deploying documentation effortless.",body:`Good documentation is the difference between a framework people try and a framework people adopt. That's why Stacks treats documentation as a **first-class feature**, not an afterthought.
830
+ Start a new Stacks project and explore what Buddy can do. You might be surprised how much a good CLI can improve your workflow.`,excerpt:"Buddy is the CLI tool that powers your entire Stacks development workflow - from dev server to deployment, all in one place.",status:"published",published_at:"2026-02-12T11:30:00.000Z",views:450,is_featured:0,created_at:"2026-02-12T11:30:00.000Z",updated_at:"2026-02-12T11:30:00.000Z"},{id:5,title:"Documentation as a First-Class Citizen",slug:"documentation-first-class",content:"How Stacks makes writing and deploying documentation effortless.",body:`Good documentation is the difference between a framework people try and a framework people adopt. That's why Stacks treats documentation as a **first-class feature**, not an afterthought.
831
831
 
832
832
  ## Write Docs, Deploy Docs
833
833
 
@@ -868,7 +868,7 @@ No separate CI/CD pipeline needed. No extra configuration. It just works.
868
868
 
869
869
  ## Start Documenting
870
870
 
871
- Great software deserves great documentation. With Stacks, there's no excuse not to write it.`,excerpt:"How Stacks makes writing and deploying documentation effortless \u2014 from Markdown to a deployed docs site in seconds.",status:"published",published_at:"2026-02-10T08:00:00.000Z",views:380,is_featured:0,created_at:"2026-02-10T08:00:00.000Z",updated_at:"2026-02-10T08:00:00.000Z"}]}export async function buildBlogSite(options){const{config,outDir}=options,domain=`${config.subdomain}.stacksjs.com`;ensureDir(outDir);ensureDir(join(outDir,"posts"));copyBlogFonts(outDir);copyBlogImages(outDir);let posts,usedDefaults=!1;try{const dbPosts=await fetchPublishedPosts(),hasRealContent=dbPosts.some((p)=>p.slug&&p.slug!=="null"&&!p.title.endsWith("."));if(dbPosts.length===0||!hasRealContent){posts=getDefaultBlogPosts();usedDefaults=!0}else posts=dbPosts}catch{console.log(" Database not available, using default blog posts");posts=getDefaultBlogPosts();usedDefaults=!0}if(usedDefaults)console.log(" Using built-in blog posts (seed your database for custom content)");const authors=new Map;try{const authorRows=await fetchAuthors();for(const author of authorRows)authors.set(author.id,author)}catch{}const postsPerPage=config.postsPerPage||10,totalPages=Math.max(1,Math.ceil(posts.length/postsPerPage));for(let page=1;page<=totalPages;page++){const start=(page-1)*postsPerPage,pagePosts=posts.slice(start,start+postsPerPage),html=generateIndexPage(pagePosts,config,authors,page,totalPages);if(page===1)writeFileSync(join(outDir,"index.html"),html);if(totalPages>1){const pageDir=join(outDir,"page",String(page));ensureDir(pageDir);writeFileSync(join(pageDir,"index.html"),html)}}const generatedSlugs=new Set;for(const post of posts){const slug=getSlug(post);if(generatedSlugs.has(slug))continue;generatedSlugs.add(slug);const postDir=join(outDir,"posts",slug);ensureDir(postDir);const author=post.author_id?authors.get(post.author_id):void 0,html=generatePostPage(post,config,author);writeFileSync(join(postDir,"index.html"),html)}if(config.enableRss){const rss=generateRssFeed(posts.slice(0,20),config,domain);writeFileSync(join(outDir,"feed.xml"),rss)}if(config.enableSitemap){const sitemap=generateSitemap(posts,config,domain);writeFileSync(join(outDir,"sitemap.xml"),sitemap)}const notFoundContent=`
871
+ Great software deserves great documentation. With Stacks, there's no excuse not to write it.`,excerpt:"How Stacks makes writing and deploying documentation effortless - from Markdown to a deployed docs site in seconds.",status:"published",published_at:"2026-02-10T08:00:00.000Z",views:380,is_featured:0,created_at:"2026-02-10T08:00:00.000Z",updated_at:"2026-02-10T08:00:00.000Z"}]}export async function buildBlogSite(options){const{config,outDir}=options,domain=`${config.subdomain}.stacksjs.com`;ensureDir(outDir);ensureDir(join(outDir,"posts"));copyBlogFonts(outDir);copyBlogImages(outDir);let posts,usedDefaults=!1;try{const dbPosts=await fetchPublishedPosts(),hasRealContent=dbPosts.some((p)=>p.slug&&p.slug!=="null"&&!p.title.endsWith("."));if(dbPosts.length===0||!hasRealContent){posts=getDefaultBlogPosts();usedDefaults=!0}else posts=dbPosts}catch{console.log(" Database not available, using default blog posts");posts=getDefaultBlogPosts();usedDefaults=!0}if(usedDefaults)console.log(" Using built-in blog posts (seed your database for custom content)");const authors=new Map;try{const authorRows=await fetchAuthors();for(const author of authorRows)authors.set(author.id,author)}catch{}const postsPerPage=config.postsPerPage||10,totalPages=Math.max(1,Math.ceil(posts.length/postsPerPage));for(let page=1;page<=totalPages;page++){const start=(page-1)*postsPerPage,pagePosts=posts.slice(start,start+postsPerPage),html=generateIndexPage(pagePosts,config,authors,page,totalPages);if(page===1)writeFileSync(join(outDir,"index.html"),html);if(totalPages>1){const pageDir=join(outDir,"page",String(page));ensureDir(pageDir);writeFileSync(join(pageDir,"index.html"),html)}}const generatedSlugs=new Set;for(const post of posts){const slug=getSlug(post);if(generatedSlugs.has(slug))continue;generatedSlugs.add(slug);const postDir=join(outDir,"posts",slug);ensureDir(postDir);const author=post.author_id?authors.get(post.author_id):void 0,html=generatePostPage(post,config,author);writeFileSync(join(postDir,"index.html"),html)}if(config.enableRss){const rss=generateRssFeed(posts.slice(0,20),config,domain);writeFileSync(join(outDir,"feed.xml"),rss)}if(config.enableSitemap){const sitemap=generateSitemap(posts,config,domain);writeFileSync(join(outDir,"sitemap.xml"),sitemap)}const notFoundContent=`
872
872
  <div style="text-align: center; padding: 6rem 0;">
873
873
  <p style="font-size: 5rem; font-weight: 800; letter-spacing: -0.03em; margin-bottom: 0.5rem;">404</p>
874
874
  <p style="color: var(--text-light); margin-bottom: 1.5rem; font-size: 1.125rem;">This page could not be found.</p>
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@stacksjs/cms",
3
3
  "type": "module",
4
4
  "sideEffects": false,
5
- "version": "0.72.37",
5
+ "version": "0.72.39",
6
6
  "description": "Stacks cms utilities.",
7
7
  "author": "Chris Breuer",
8
8
  "contributors": [
@@ -58,8 +58,8 @@
58
58
  "prepublishOnly": "bun run build"
59
59
  },
60
60
  "dependencies": {
61
- "@stacksjs/sites": "0.72.37",
62
- "@stacksjs/validation": "0.72.37",
61
+ "@stacksjs/sites": "0.72.39",
62
+ "@stacksjs/validation": "0.72.39",
63
63
  "ts-slug": "^0.1.0",
64
64
  "ts-spreadsheets": "^0.2.0"
65
65
  },