bunki 0.19.5 → 0.19.6
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/dist/cli.js +32 -0
- package/dist/types.d.ts +2 -0
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -35260,6 +35260,7 @@ async function parseMarkdownFile(filePath, cdnConfig) {
|
|
|
35260
35260
|
url: `/${postYear}/${slug}/`,
|
|
35261
35261
|
excerpt: data.excerpt || extractExcerpt(content),
|
|
35262
35262
|
html: sanitizedHtml,
|
|
35263
|
+
...data.seoTitle && { seoTitle: data.seoTitle },
|
|
35263
35264
|
...data.category && { category: data.category },
|
|
35264
35265
|
...data.business && {
|
|
35265
35266
|
business: (() => {
|
|
@@ -36304,8 +36305,39 @@ function createTemplateEngine(templatesDir, watch = false) {
|
|
|
36304
36305
|
watch
|
|
36305
36306
|
});
|
|
36306
36307
|
env.addFilter("date", formatDate);
|
|
36308
|
+
env.addFilter("titlecase", titleCase);
|
|
36307
36309
|
return env;
|
|
36308
36310
|
}
|
|
36311
|
+
var TECH_ACRONYMS = new Set([
|
|
36312
|
+
"ai",
|
|
36313
|
+
"llm",
|
|
36314
|
+
"api",
|
|
36315
|
+
"ui",
|
|
36316
|
+
"ux",
|
|
36317
|
+
"ios",
|
|
36318
|
+
"url",
|
|
36319
|
+
"seo",
|
|
36320
|
+
"css",
|
|
36321
|
+
"html",
|
|
36322
|
+
"js",
|
|
36323
|
+
"ts",
|
|
36324
|
+
"sql",
|
|
36325
|
+
"cdn",
|
|
36326
|
+
"aws",
|
|
36327
|
+
"rss",
|
|
36328
|
+
"sdk",
|
|
36329
|
+
"cli",
|
|
36330
|
+
"gpu",
|
|
36331
|
+
"cpu"
|
|
36332
|
+
]);
|
|
36333
|
+
function titleCase(str2) {
|
|
36334
|
+
return str2.replace(/-/g, " ").split(" ").map((word) => {
|
|
36335
|
+
const lower = word.toLowerCase();
|
|
36336
|
+
if (TECH_ACRONYMS.has(lower))
|
|
36337
|
+
return lower === "ios" ? "iOS" : lower.toUpperCase();
|
|
36338
|
+
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
|
|
36339
|
+
}).join(" ");
|
|
36340
|
+
}
|
|
36309
36341
|
function formatDate(date, format) {
|
|
36310
36342
|
const d2 = toPacificTime(date);
|
|
36311
36343
|
const month = DATE.MONTHS[d2.getMonth()];
|
package/dist/types.d.ts
CHANGED
|
@@ -64,6 +64,8 @@ export interface Post {
|
|
|
64
64
|
business?: Business;
|
|
65
65
|
/** Optional image URL (first image from post content, used for thumbnails and social sharing) */
|
|
66
66
|
image?: string;
|
|
67
|
+
/** Optional short title for SEO title tag (50–65 chars). Falls back to title if not set. */
|
|
68
|
+
seoTitle?: string;
|
|
67
69
|
/** Word count calculated from content (used for reading time and schema.org) */
|
|
68
70
|
wordCount?: number;
|
|
69
71
|
/** Cached JSON-LD structured data (pre-generated during initialization) */
|
package/package.json
CHANGED