vaza-content 0.2.0 → 0.2.2
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/adapters/astro/index.cjs +9 -15
- package/dist/adapters/astro/index.cjs.map +1 -1
- package/dist/adapters/astro/index.d.cts +4 -3
- package/dist/adapters/astro/index.d.ts +4 -3
- package/dist/adapters/astro/index.js +6 -12
- package/dist/adapters/astro/index.js.map +1 -1
- package/dist/adapters/next/index.cjs +11 -12
- package/dist/adapters/next/index.cjs.map +1 -1
- package/dist/adapters/next/index.d.cts +5 -3
- package/dist/adapters/next/index.d.ts +5 -3
- package/dist/adapters/next/index.js +8 -9
- package/dist/adapters/next/index.js.map +1 -1
- package/dist/adapters/nuxt/index.cjs +22 -22
- package/dist/adapters/nuxt/index.cjs.map +1 -1
- package/dist/adapters/nuxt/index.d.cts +11 -7
- package/dist/adapters/nuxt/index.d.ts +11 -7
- package/dist/adapters/nuxt/index.js +13 -13
- package/dist/adapters/nuxt/index.js.map +1 -1
- package/dist/adapters/sveltekit/index.cjs +9 -15
- package/dist/adapters/sveltekit/index.cjs.map +1 -1
- package/dist/adapters/sveltekit/index.d.cts +3 -2
- package/dist/adapters/sveltekit/index.d.ts +3 -2
- package/dist/adapters/sveltekit/index.js +5 -11
- package/dist/adapters/sveltekit/index.js.map +1 -1
- package/dist/{blog-7EEJJG26.js → blog-L7HRY3QC.js} +2 -4
- package/dist/{blog-7EEJJG26.js.map → blog-L7HRY3QC.js.map} +1 -1
- package/dist/{blog-Z3R5GOMP.cjs → blog-SEXXJJSV.cjs} +3 -5
- package/dist/blog-SEXXJJSV.cjs.map +1 -0
- package/dist/{chunk-YV2ZYIAD.cjs → chunk-H3D7F4TA.cjs} +544 -503
- package/dist/chunk-H3D7F4TA.cjs.map +1 -0
- package/dist/{chunk-FALSVGPG.js → chunk-OKXBDPYF.js} +511 -470
- package/dist/chunk-OKXBDPYF.js.map +1 -0
- package/dist/cli/index.cjs +30 -24
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.js +29 -23
- package/dist/cli/index.js.map +1 -1
- package/dist/{dark-EX2GRAYK.cjs → dark-66ZWYLT7.cjs} +2 -4
- package/dist/dark-66ZWYLT7.cjs.map +1 -0
- package/dist/{dark-6E36AKLN.js → dark-SZOURAMM.js} +1 -3
- package/dist/{dark-6E36AKLN.js.map → dark-SZOURAMM.js.map} +1 -1
- package/dist/index.cjs +8 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +29 -29
- package/dist/index.d.ts +29 -29
- package/dist/index.js +3 -6
- package/dist/index.js.map +1 -1
- package/dist/{minimal-D2PRAVG6.js → minimal-CGXF737F.js} +1 -3
- package/dist/{minimal-D2PRAVG6.js.map → minimal-CGXF737F.js.map} +1 -1
- package/dist/{minimal-RHOK4XEZ.cjs → minimal-XTTHXE3T.cjs} +2 -4
- package/dist/minimal-XTTHXE3T.cjs.map +1 -0
- package/dist/process-VXDWM664.cjs +7 -0
- package/dist/process-VXDWM664.cjs.map +1 -0
- package/dist/process-ZQV5M2TB.js +7 -0
- package/dist/{product-OT3XYMWD.cjs → product-BY3GVQGV.cjs} +2 -4
- package/dist/product-BY3GVQGV.cjs.map +1 -0
- package/dist/{product-NCUW3U72.js → product-UQXUI5YL.js} +1 -3
- package/dist/{product-NCUW3U72.js.map → product-UQXUI5YL.js.map} +1 -1
- package/dist/{types-CgaidvaB.d.cts → types-DAfWIHiD.d.cts} +1 -1
- package/dist/{types-CgaidvaB.d.ts → types-DAfWIHiD.d.ts} +1 -1
- package/package.json +6 -4
- package/dist/blog-Z3R5GOMP.cjs.map +0 -1
- package/dist/chunk-DGUM43GV.js +0 -11
- package/dist/chunk-FALSVGPG.js.map +0 -1
- package/dist/chunk-JEQ2X3Z6.cjs +0 -11
- package/dist/chunk-JEQ2X3Z6.cjs.map +0 -1
- package/dist/chunk-PCRQY47G.js +0 -35
- package/dist/chunk-PCRQY47G.js.map +0 -1
- package/dist/chunk-WOCXEBQC.cjs +0 -35
- package/dist/chunk-WOCXEBQC.cjs.map +0 -1
- package/dist/chunk-YV2ZYIAD.cjs.map +0 -1
- package/dist/dark-EX2GRAYK.cjs.map +0 -1
- package/dist/logger-7WBTEDED.cjs +0 -10
- package/dist/logger-7WBTEDED.cjs.map +0 -1
- package/dist/logger-BGP7C274.js +0 -10
- package/dist/logger-BGP7C274.js.map +0 -1
- package/dist/minimal-RHOK4XEZ.cjs.map +0 -1
- package/dist/process-B4PJ6CWC.cjs +0 -9
- package/dist/process-B4PJ6CWC.cjs.map +0 -1
- package/dist/process-KSSXQJE6.js +0 -9
- package/dist/process-KSSXQJE6.js.map +0 -1
- package/dist/product-OT3XYMWD.cjs.map +0 -1
- /package/dist/{chunk-DGUM43GV.js.map → process-ZQV5M2TB.js.map} +0 -0
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
import {
|
|
2
|
+
logger,
|
|
2
3
|
processCollections,
|
|
3
4
|
renderRssXml,
|
|
4
5
|
renderSitemapXml
|
|
5
|
-
} from "../../chunk-
|
|
6
|
-
import "../../chunk-PCRQY47G.js";
|
|
7
|
-
import "../../chunk-DGUM43GV.js";
|
|
6
|
+
} from "../../chunk-OKXBDPYF.js";
|
|
8
7
|
|
|
9
8
|
// src/adapters/nuxt/index.ts
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
9
|
+
import { existsSync, mkdirSync, writeFileSync } from "fs";
|
|
10
|
+
import { dirname, join } from "path";
|
|
12
11
|
function defineVazaContentModule(config) {
|
|
13
|
-
return async
|
|
14
|
-
|
|
12
|
+
return async (_inlineOptions, nuxt) => {
|
|
13
|
+
if (nuxt?.hook) {
|
|
14
|
+
nuxt.hook("build:before", async () => {
|
|
15
|
+
await processAndWrite(config);
|
|
16
|
+
});
|
|
17
|
+
} else {
|
|
18
|
+
await processAndWrite(config);
|
|
19
|
+
}
|
|
15
20
|
};
|
|
16
21
|
}
|
|
17
22
|
async function buildVazaContent(config) {
|
|
@@ -30,11 +35,7 @@ async function processAndWrite(config) {
|
|
|
30
35
|
if (config.rss?.enabled !== false) {
|
|
31
36
|
const xml = renderRssXml(output.rss, config);
|
|
32
37
|
const rssPath = config.rss?.path ?? "/rss.xml";
|
|
33
|
-
writeFileSync(
|
|
34
|
-
join("public", rssPath.replace(/^\//, "")),
|
|
35
|
-
xml,
|
|
36
|
-
"utf-8"
|
|
37
|
-
);
|
|
38
|
+
writeFileSync(join("public", rssPath.replace(/^\//, "")), xml, "utf-8");
|
|
38
39
|
}
|
|
39
40
|
if (config.jsonLd?.enabled !== false) {
|
|
40
41
|
const jsonLdDir = join(outDir, "json-ld");
|
|
@@ -52,7 +53,6 @@ async function processAndWrite(config) {
|
|
|
52
53
|
writeJson(join(outDir, "integrity-report.json"), output.integrity);
|
|
53
54
|
const slugManifest = output.entries.map((e) => e.slug);
|
|
54
55
|
writeJson(join(outDir, "slugs.json"), slugManifest);
|
|
55
|
-
const { logger } = await import("../../logger-BGP7C274.js");
|
|
56
56
|
logger.info(`Generated ${output.entries.length} entries`);
|
|
57
57
|
return output;
|
|
58
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapters/nuxt/index.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../../src/adapters/nuxt/index.ts"],"sourcesContent":["import { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { renderRssXml } from \"../../generate/rss.js\";\nimport { renderSitemapXml } from \"../../generate/sitemap.js\";\nimport { logger } from \"../../logger.js\";\nimport { processCollections } from \"../../process.js\";\nimport type { VazaConfig, VazaOutput } from \"../../types.js\";\n\n/**\n * Nuxt adapter -- module that hooks into the Nuxt build.\n *\n * Usage in nuxt.config.ts:\n * import { defineVazaContentModule } from 'vaza-content/nuxt'\n * import vazaConfig from './vaza.config'\n *\n * export default defineNuxtConfig({\n * modules: [defineVazaContentModule(vazaConfig)]\n * })\n */\nexport function defineVazaContentModule(config: VazaConfig) {\n return async (\n _inlineOptions: unknown,\n nuxt: { hook?: (event: string, fn: () => Promise<void>) => void },\n ) => {\n if (nuxt?.hook) {\n // Use Nuxt hook API if available\n nuxt.hook(\"build:before\", async () => {\n await processAndWrite(config);\n });\n } else {\n // Fallback: run immediately (e.g. when used as simple module)\n await processAndWrite(config);\n }\n };\n}\n\n/**\n * Standalone function to process and write outputs.\n */\nexport async function buildVazaContent(\n config: VazaConfig,\n): Promise<VazaOutput> {\n return processAndWrite(config);\n}\n\nasync function processAndWrite(config: VazaConfig): Promise<VazaOutput> {\n const output = await processCollections(config);\n const outDir = \".vaza-content\";\n\n ensureDir(outDir);\n ensureDir(\"public\");\n\n // Write sitemap\n if (config.sitemap?.enabled !== false) {\n writeJson(join(outDir, \"sitemap-data.json\"), output.sitemap);\n const xml = renderSitemapXml(output.sitemap);\n writeFileSync(\"public/sitemap.xml\", xml, \"utf-8\");\n }\n\n // Write RSS\n if (config.rss?.enabled !== false) {\n const xml = renderRssXml(output.rss, config);\n const rssPath = config.rss?.path ?? \"/rss.xml\";\n writeFileSync(join(\"public\", rssPath.replace(/^\\//, \"\")), xml, \"utf-8\");\n }\n\n // Write JSON-LD per slug\n if (config.jsonLd?.enabled !== false) {\n const jsonLdDir = join(outDir, \"json-ld\");\n ensureDir(jsonLdDir);\n for (const [slug, schemas] of Object.entries(output.jsonLd)) {\n writeJson(join(jsonLdDir, `${slug}.json`), schemas);\n }\n }\n\n // Write taxonomy data\n if (config.taxonomy?.enabled !== false) {\n writeJson(join(outDir, \"taxonomy.json\"), output.taxonomy);\n }\n\n // Write redirects\n if (config.redirects?.enabled !== false) {\n writeJson(join(outDir, \"redirects.json\"), output.redirects);\n }\n\n // Write integrity report\n writeJson(join(outDir, \"integrity-report.json\"), output.integrity);\n\n // Write slug manifest\n const slugManifest = output.entries.map((e) => e.slug);\n writeJson(join(outDir, \"slugs.json\"), slugManifest);\n\n logger.info(`Generated ${output.entries.length} entries`);\n\n return output;\n}\n\nfunction ensureDir(dir: string): void {\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n}\n\nfunction writeJson(path: string, data: unknown): void {\n ensureDir(dirname(path));\n writeFileSync(path, JSON.stringify(data, null, 2), \"utf-8\");\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,YAAY,WAAW,qBAAqB;AACrD,SAAS,SAAS,YAAY;AAkBvB,SAAS,wBAAwB,QAAoB;AAC1D,SAAO,OACL,gBACA,SACG;AACH,QAAI,MAAM,MAAM;AAEd,WAAK,KAAK,gBAAgB,YAAY;AACpC,cAAM,gBAAgB,MAAM;AAAA,MAC9B,CAAC;AAAA,IACH,OAAO;AAEL,YAAM,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACF;AACF;AAKA,eAAsB,iBACpB,QACqB;AACrB,SAAO,gBAAgB,MAAM;AAC/B;AAEA,eAAe,gBAAgB,QAAyC;AACtE,QAAM,SAAS,MAAM,mBAAmB,MAAM;AAC9C,QAAM,SAAS;AAEf,YAAU,MAAM;AAChB,YAAU,QAAQ;AAGlB,MAAI,OAAO,SAAS,YAAY,OAAO;AACrC,cAAU,KAAK,QAAQ,mBAAmB,GAAG,OAAO,OAAO;AAC3D,UAAM,MAAM,iBAAiB,OAAO,OAAO;AAC3C,kBAAc,sBAAsB,KAAK,OAAO;AAAA,EAClD;AAGA,MAAI,OAAO,KAAK,YAAY,OAAO;AACjC,UAAM,MAAM,aAAa,OAAO,KAAK,MAAM;AAC3C,UAAM,UAAU,OAAO,KAAK,QAAQ;AACpC,kBAAc,KAAK,UAAU,QAAQ,QAAQ,OAAO,EAAE,CAAC,GAAG,KAAK,OAAO;AAAA,EACxE;AAGA,MAAI,OAAO,QAAQ,YAAY,OAAO;AACpC,UAAM,YAAY,KAAK,QAAQ,SAAS;AACxC,cAAU,SAAS;AACnB,eAAW,CAAC,MAAM,OAAO,KAAK,OAAO,QAAQ,OAAO,MAAM,GAAG;AAC3D,gBAAU,KAAK,WAAW,GAAG,IAAI,OAAO,GAAG,OAAO;AAAA,IACpD;AAAA,EACF;AAGA,MAAI,OAAO,UAAU,YAAY,OAAO;AACtC,cAAU,KAAK,QAAQ,eAAe,GAAG,OAAO,QAAQ;AAAA,EAC1D;AAGA,MAAI,OAAO,WAAW,YAAY,OAAO;AACvC,cAAU,KAAK,QAAQ,gBAAgB,GAAG,OAAO,SAAS;AAAA,EAC5D;AAGA,YAAU,KAAK,QAAQ,uBAAuB,GAAG,OAAO,SAAS;AAGjE,QAAM,eAAe,OAAO,QAAQ,IAAI,CAAC,MAAM,EAAE,IAAI;AACrD,YAAU,KAAK,QAAQ,YAAY,GAAG,YAAY;AAElD,SAAO,KAAK,aAAa,OAAO,QAAQ,MAAM,UAAU;AAExD,SAAO;AACT;AAEA,SAAS,UAAU,KAAmB;AACpC,MAAI,CAAC,WAAW,GAAG,GAAG;AACpB,cAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,EACpC;AACF;AAEA,SAAS,UAAU,MAAc,MAAqB;AACpD,YAAU,QAAQ,IAAI,CAAC;AACvB,gBAAc,MAAM,KAAK,UAAU,MAAM,MAAM,CAAC,GAAG,OAAO;AAC5D;","names":[]}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
require('../../chunk-
|
|
7
|
-
require('../../chunk-JEQ2X3Z6.cjs');
|
|
5
|
+
|
|
6
|
+
var _chunkH3D7F4TAcjs = require('../../chunk-H3D7F4TA.cjs');
|
|
8
7
|
|
|
9
8
|
// src/adapters/sveltekit/index.ts
|
|
10
9
|
var _fs = require('fs');
|
|
@@ -24,24 +23,20 @@ async function buildVazaContent(config) {
|
|
|
24
23
|
return processAndWrite(config);
|
|
25
24
|
}
|
|
26
25
|
async function processAndWrite(config) {
|
|
27
|
-
const output = await
|
|
26
|
+
const output = await _chunkH3D7F4TAcjs.processCollections.call(void 0, config);
|
|
28
27
|
const outDir = ".vaza-content";
|
|
29
28
|
const staticDir = "static";
|
|
30
29
|
ensureDir(outDir);
|
|
31
30
|
ensureDir(staticDir);
|
|
32
31
|
if (_optionalChain([config, 'access', _ => _.sitemap, 'optionalAccess', _2 => _2.enabled]) !== false) {
|
|
33
32
|
writeJson(_path.join.call(void 0, outDir, "sitemap-data.json"), output.sitemap);
|
|
34
|
-
const xml =
|
|
33
|
+
const xml = _chunkH3D7F4TAcjs.renderSitemapXml.call(void 0, output.sitemap);
|
|
35
34
|
_fs.writeFileSync.call(void 0, _path.join.call(void 0, staticDir, "sitemap.xml"), xml, "utf-8");
|
|
36
35
|
}
|
|
37
36
|
if (_optionalChain([config, 'access', _3 => _3.rss, 'optionalAccess', _4 => _4.enabled]) !== false) {
|
|
38
|
-
const xml =
|
|
37
|
+
const xml = _chunkH3D7F4TAcjs.renderRssXml.call(void 0, output.rss, config);
|
|
39
38
|
const rssPath = _nullishCoalesce(_optionalChain([config, 'access', _5 => _5.rss, 'optionalAccess', _6 => _6.path]), () => ( "/rss.xml"));
|
|
40
|
-
_fs.writeFileSync.call(void 0,
|
|
41
|
-
_path.join.call(void 0, staticDir, rssPath.replace(/^\//, "")),
|
|
42
|
-
xml,
|
|
43
|
-
"utf-8"
|
|
44
|
-
);
|
|
39
|
+
_fs.writeFileSync.call(void 0, _path.join.call(void 0, staticDir, rssPath.replace(/^\//, "")), xml, "utf-8");
|
|
45
40
|
}
|
|
46
41
|
if (_optionalChain([config, 'access', _7 => _7.jsonLd, 'optionalAccess', _8 => _8.enabled]) !== false) {
|
|
47
42
|
const jsonLdDir = _path.join.call(void 0, outDir, "json-ld");
|
|
@@ -59,9 +54,8 @@ async function processAndWrite(config) {
|
|
|
59
54
|
writeJson(_path.join.call(void 0, outDir, "integrity-report.json"), output.integrity);
|
|
60
55
|
const slugManifest = output.entries.map((e) => e.slug);
|
|
61
56
|
writeJson(_path.join.call(void 0, outDir, "slugs.json"), slugManifest);
|
|
62
|
-
|
|
63
|
-
logger.info(`
|
|
64
|
-
logger.info(`Outputs written to ${outDir}/ and ${staticDir}/`);
|
|
57
|
+
_chunkH3D7F4TAcjs.logger.info(`Generated ${output.entries.length} entries`);
|
|
58
|
+
_chunkH3D7F4TAcjs.logger.info(`Outputs written to ${outDir}/ and ${staticDir}/`);
|
|
65
59
|
return output;
|
|
66
60
|
}
|
|
67
61
|
function ensureDir(dir) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/mehdi/vaza-content/dist/adapters/sveltekit/index.cjs","../../../src/adapters/sveltekit/index.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACF,4DAAiC;AACjC
|
|
1
|
+
{"version":3,"sources":["/Users/mehdi/vaza-content/dist/adapters/sveltekit/index.cjs","../../../src/adapters/sveltekit/index.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACF,4DAAiC;AACjC;AACA;ACPA,wBAAqD;AACrD,4BAA8B;AAevB,SAAS,WAAA,CAAY,MAAA,EAAoB;AAC9C,EAAA,IAAI,OAAA,EAAS,KAAA;AAEb,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,wBAAA;AAAA,IACN,MAAM,UAAA,CAAA,EAAa;AACjB,MAAA,GAAA,CAAI,MAAA,EAAQ,MAAA;AACZ,MAAA,OAAA,EAAS,IAAA;AACT,MAAA,MAAM,eAAA,CAAgB,MAAM,CAAA;AAAA,IAC9B;AAAA,EACF,CAAA;AACF;AAKA,MAAA,SAAsB,gBAAA,CACpB,MAAA,EACqB;AACrB,EAAA,OAAO,eAAA,CAAgB,MAAM,CAAA;AAC/B;AAEA,MAAA,SAAe,eAAA,CAAgB,MAAA,EAAyC;AACtE,EAAA,MAAM,OAAA,EAAS,MAAM,kDAAA,MAAyB,CAAA;AAC9C,EAAA,MAAM,OAAA,EAAS,eAAA;AACf,EAAA,MAAM,UAAA,EAAY,QAAA;AAElB,EAAA,SAAA,CAAU,MAAM,CAAA;AAChB,EAAA,SAAA,CAAU,SAAS,CAAA;AAGnB,EAAA,GAAA,iBAAI,MAAA,mBAAO,OAAA,6BAAS,UAAA,IAAY,KAAA,EAAO;AACrC,IAAA,SAAA,CAAU,wBAAA,MAAK,EAAQ,mBAAmB,CAAA,EAAG,MAAA,CAAO,OAAO,CAAA;AAC3D,IAAA,MAAM,IAAA,EAAM,gDAAA,MAAiB,CAAO,OAAO,CAAA;AAC3C,IAAA,+BAAA,wBAAc,SAAK,EAAW,aAAa,CAAA,EAAG,GAAA,EAAK,OAAO,CAAA;AAAA,EAC5D;AAGA,EAAA,GAAA,iBAAI,MAAA,qBAAO,GAAA,6BAAK,UAAA,IAAY,KAAA,EAAO;AACjC,IAAA,MAAM,IAAA,EAAM,4CAAA,MAAa,CAAO,GAAA,EAAK,MAAM,CAAA;AAC3C,IAAA,MAAM,QAAA,mCAAU,MAAA,qBAAO,GAAA,6BAAK,MAAA,UAAQ,YAAA;AACpC,IAAA,+BAAA,wBAAc,SAAK,EAAW,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAC,CAAA,EAAG,GAAA,EAAK,OAAO,CAAA;AAAA,EACzE;AAGA,EAAA,GAAA,iBAAI,MAAA,qBAAO,MAAA,6BAAQ,UAAA,IAAY,KAAA,EAAO;AACpC,IAAA,MAAM,UAAA,EAAY,wBAAA,MAAK,EAAQ,SAAS,CAAA;AACxC,IAAA,SAAA,CAAU,SAAS,CAAA;AACnB,IAAA,IAAA,CAAA,MAAW,CAAC,IAAA,EAAM,OAAO,EAAA,GAAK,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA,EAAG;AAC3D,MAAA,SAAA,CAAU,wBAAA,SAAK,EAAW,CAAA,EAAA;AAC5B,IAAA;AACF,EAAA;AAGqB,EAAA;AACI,IAAA;AACzB,EAAA;AAGsB,EAAA;AACG,IAAA;AACzB,EAAA;AAGuB,EAAA;AAGK,EAAA;AACL,EAAA;AAEE,EAAA;AACb,EAAA;AAEL,EAAA;AACT;AAEsC;AACd,EAAA;AACQ,IAAA;AAC9B,EAAA;AACF;AAEsD;AAC7B,EAAA;AACE,EAAA;AAC3B;ADhCiC;AACA;AACA;AACA","file":"/Users/mehdi/vaza-content/dist/adapters/sveltekit/index.cjs","sourcesContent":[null,"import { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { renderRssXml } from \"../../generate/rss.js\";\nimport { renderSitemapXml } from \"../../generate/sitemap.js\";\nimport { logger } from \"../../logger.js\";\nimport { processCollections } from \"../../process.js\";\nimport type { VazaConfig, VazaOutput } from \"../../types.js\";\n\n/**\n * SvelteKit adapter -- Vite plugin that hooks into the build.\n *\n * Usage in vite.config.ts:\n * import { vazaContent } from 'vaza-content/sveltekit'\n * import vazaConfig from './vaza.config'\n * export default { plugins: [sveltekit(), vazaContent(vazaConfig)] }\n */\nexport function vazaContent(config: VazaConfig) {\n let hasRun = false;\n\n return {\n name: \"vaza-content-sveltekit\",\n async buildStart() {\n if (hasRun) return;\n hasRun = true;\n await processAndWrite(config);\n },\n };\n}\n\n/**\n * Standalone function to process and write outputs.\n */\nexport async function buildVazaContent(\n config: VazaConfig,\n): Promise<VazaOutput> {\n return processAndWrite(config);\n}\n\nasync function processAndWrite(config: VazaConfig): Promise<VazaOutput> {\n const output = await processCollections(config);\n const outDir = \".vaza-content\";\n const staticDir = \"static\";\n\n ensureDir(outDir);\n ensureDir(staticDir);\n\n // Write sitemap\n if (config.sitemap?.enabled !== false) {\n writeJson(join(outDir, \"sitemap-data.json\"), output.sitemap);\n const xml = renderSitemapXml(output.sitemap);\n writeFileSync(join(staticDir, \"sitemap.xml\"), xml, \"utf-8\");\n }\n\n // Write RSS\n if (config.rss?.enabled !== false) {\n const xml = renderRssXml(output.rss, config);\n const rssPath = config.rss?.path ?? \"/rss.xml\";\n writeFileSync(join(staticDir, rssPath.replace(/^\\//, \"\")), xml, \"utf-8\");\n }\n\n // Write JSON-LD per slug\n if (config.jsonLd?.enabled !== false) {\n const jsonLdDir = join(outDir, \"json-ld\");\n ensureDir(jsonLdDir);\n for (const [slug, schemas] of Object.entries(output.jsonLd)) {\n writeJson(join(jsonLdDir, `${slug}.json`), schemas);\n }\n }\n\n // Write taxonomy data\n if (config.taxonomy?.enabled !== false) {\n writeJson(join(outDir, \"taxonomy.json\"), output.taxonomy);\n }\n\n // Write redirects\n if (config.redirects?.enabled !== false) {\n writeJson(join(outDir, \"redirects.json\"), output.redirects);\n }\n\n // Write integrity report\n writeJson(join(outDir, \"integrity-report.json\"), output.integrity);\n\n // Write slug manifest\n const slugManifest = output.entries.map((e) => e.slug);\n writeJson(join(outDir, \"slugs.json\"), slugManifest);\n\n logger.info(`Generated ${output.entries.length} entries`);\n logger.info(`Outputs written to ${outDir}/ and ${staticDir}/`);\n\n return output;\n}\n\nfunction ensureDir(dir: string): void {\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n}\n\nfunction writeJson(path: string, data: unknown): void {\n ensureDir(dirname(path));\n writeFileSync(path, JSON.stringify(data, null, 2), \"utf-8\");\n}\n"]}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { V as VazaConfig, a as VazaOutput } from '../../types-
|
|
1
|
+
import { V as VazaConfig, a as VazaOutput } from '../../types-DAfWIHiD.cjs';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* SvelteKit adapter
|
|
4
|
+
* SvelteKit adapter -- Vite plugin that hooks into the build.
|
|
5
5
|
*
|
|
6
6
|
* Usage in vite.config.ts:
|
|
7
7
|
* import { vazaContent } from 'vaza-content/sveltekit'
|
|
8
|
+
* import vazaConfig from './vaza.config'
|
|
8
9
|
* export default { plugins: [sveltekit(), vazaContent(vazaConfig)] }
|
|
9
10
|
*/
|
|
10
11
|
declare function vazaContent(config: VazaConfig): {
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { V as VazaConfig, a as VazaOutput } from '../../types-
|
|
1
|
+
import { V as VazaConfig, a as VazaOutput } from '../../types-DAfWIHiD.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* SvelteKit adapter
|
|
4
|
+
* SvelteKit adapter -- Vite plugin that hooks into the build.
|
|
5
5
|
*
|
|
6
6
|
* Usage in vite.config.ts:
|
|
7
7
|
* import { vazaContent } from 'vaza-content/sveltekit'
|
|
8
|
+
* import vazaConfig from './vaza.config'
|
|
8
9
|
* export default { plugins: [sveltekit(), vazaContent(vazaConfig)] }
|
|
9
10
|
*/
|
|
10
11
|
declare function vazaContent(config: VazaConfig): {
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
|
+
logger,
|
|
2
3
|
processCollections,
|
|
3
4
|
renderRssXml,
|
|
4
5
|
renderSitemapXml
|
|
5
|
-
} from "../../chunk-
|
|
6
|
-
import "../../chunk-PCRQY47G.js";
|
|
7
|
-
import "../../chunk-DGUM43GV.js";
|
|
6
|
+
} from "../../chunk-OKXBDPYF.js";
|
|
8
7
|
|
|
9
8
|
// src/adapters/sveltekit/index.ts
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
9
|
+
import { existsSync, mkdirSync, writeFileSync } from "fs";
|
|
10
|
+
import { dirname, join } from "path";
|
|
12
11
|
function vazaContent(config) {
|
|
13
12
|
let hasRun = false;
|
|
14
13
|
return {
|
|
@@ -37,11 +36,7 @@ async function processAndWrite(config) {
|
|
|
37
36
|
if (config.rss?.enabled !== false) {
|
|
38
37
|
const xml = renderRssXml(output.rss, config);
|
|
39
38
|
const rssPath = config.rss?.path ?? "/rss.xml";
|
|
40
|
-
writeFileSync(
|
|
41
|
-
join(staticDir, rssPath.replace(/^\//, "")),
|
|
42
|
-
xml,
|
|
43
|
-
"utf-8"
|
|
44
|
-
);
|
|
39
|
+
writeFileSync(join(staticDir, rssPath.replace(/^\//, "")), xml, "utf-8");
|
|
45
40
|
}
|
|
46
41
|
if (config.jsonLd?.enabled !== false) {
|
|
47
42
|
const jsonLdDir = join(outDir, "json-ld");
|
|
@@ -59,7 +54,6 @@ async function processAndWrite(config) {
|
|
|
59
54
|
writeJson(join(outDir, "integrity-report.json"), output.integrity);
|
|
60
55
|
const slugManifest = output.entries.map((e) => e.slug);
|
|
61
56
|
writeJson(join(outDir, "slugs.json"), slugManifest);
|
|
62
|
-
const { logger } = await import("../../logger-BGP7C274.js");
|
|
63
57
|
logger.info(`Generated ${output.entries.length} entries`);
|
|
64
58
|
logger.info(`Outputs written to ${outDir}/ and ${staticDir}/`);
|
|
65
59
|
return output;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapters/sveltekit/index.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../../src/adapters/sveltekit/index.ts"],"sourcesContent":["import { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { renderRssXml } from \"../../generate/rss.js\";\nimport { renderSitemapXml } from \"../../generate/sitemap.js\";\nimport { logger } from \"../../logger.js\";\nimport { processCollections } from \"../../process.js\";\nimport type { VazaConfig, VazaOutput } from \"../../types.js\";\n\n/**\n * SvelteKit adapter -- Vite plugin that hooks into the build.\n *\n * Usage in vite.config.ts:\n * import { vazaContent } from 'vaza-content/sveltekit'\n * import vazaConfig from './vaza.config'\n * export default { plugins: [sveltekit(), vazaContent(vazaConfig)] }\n */\nexport function vazaContent(config: VazaConfig) {\n let hasRun = false;\n\n return {\n name: \"vaza-content-sveltekit\",\n async buildStart() {\n if (hasRun) return;\n hasRun = true;\n await processAndWrite(config);\n },\n };\n}\n\n/**\n * Standalone function to process and write outputs.\n */\nexport async function buildVazaContent(\n config: VazaConfig,\n): Promise<VazaOutput> {\n return processAndWrite(config);\n}\n\nasync function processAndWrite(config: VazaConfig): Promise<VazaOutput> {\n const output = await processCollections(config);\n const outDir = \".vaza-content\";\n const staticDir = \"static\";\n\n ensureDir(outDir);\n ensureDir(staticDir);\n\n // Write sitemap\n if (config.sitemap?.enabled !== false) {\n writeJson(join(outDir, \"sitemap-data.json\"), output.sitemap);\n const xml = renderSitemapXml(output.sitemap);\n writeFileSync(join(staticDir, \"sitemap.xml\"), xml, \"utf-8\");\n }\n\n // Write RSS\n if (config.rss?.enabled !== false) {\n const xml = renderRssXml(output.rss, config);\n const rssPath = config.rss?.path ?? \"/rss.xml\";\n writeFileSync(join(staticDir, rssPath.replace(/^\\//, \"\")), xml, \"utf-8\");\n }\n\n // Write JSON-LD per slug\n if (config.jsonLd?.enabled !== false) {\n const jsonLdDir = join(outDir, \"json-ld\");\n ensureDir(jsonLdDir);\n for (const [slug, schemas] of Object.entries(output.jsonLd)) {\n writeJson(join(jsonLdDir, `${slug}.json`), schemas);\n }\n }\n\n // Write taxonomy data\n if (config.taxonomy?.enabled !== false) {\n writeJson(join(outDir, \"taxonomy.json\"), output.taxonomy);\n }\n\n // Write redirects\n if (config.redirects?.enabled !== false) {\n writeJson(join(outDir, \"redirects.json\"), output.redirects);\n }\n\n // Write integrity report\n writeJson(join(outDir, \"integrity-report.json\"), output.integrity);\n\n // Write slug manifest\n const slugManifest = output.entries.map((e) => e.slug);\n writeJson(join(outDir, \"slugs.json\"), slugManifest);\n\n logger.info(`Generated ${output.entries.length} entries`);\n logger.info(`Outputs written to ${outDir}/ and ${staticDir}/`);\n\n return output;\n}\n\nfunction ensureDir(dir: string): void {\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n}\n\nfunction writeJson(path: string, data: unknown): void {\n ensureDir(dirname(path));\n writeFileSync(path, JSON.stringify(data, null, 2), \"utf-8\");\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,YAAY,WAAW,qBAAqB;AACrD,SAAS,SAAS,YAAY;AAevB,SAAS,YAAY,QAAoB;AAC9C,MAAI,SAAS;AAEb,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM,aAAa;AACjB,UAAI,OAAQ;AACZ,eAAS;AACT,YAAM,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACF;AACF;AAKA,eAAsB,iBACpB,QACqB;AACrB,SAAO,gBAAgB,MAAM;AAC/B;AAEA,eAAe,gBAAgB,QAAyC;AACtE,QAAM,SAAS,MAAM,mBAAmB,MAAM;AAC9C,QAAM,SAAS;AACf,QAAM,YAAY;AAElB,YAAU,MAAM;AAChB,YAAU,SAAS;AAGnB,MAAI,OAAO,SAAS,YAAY,OAAO;AACrC,cAAU,KAAK,QAAQ,mBAAmB,GAAG,OAAO,OAAO;AAC3D,UAAM,MAAM,iBAAiB,OAAO,OAAO;AAC3C,kBAAc,KAAK,WAAW,aAAa,GAAG,KAAK,OAAO;AAAA,EAC5D;AAGA,MAAI,OAAO,KAAK,YAAY,OAAO;AACjC,UAAM,MAAM,aAAa,OAAO,KAAK,MAAM;AAC3C,UAAM,UAAU,OAAO,KAAK,QAAQ;AACpC,kBAAc,KAAK,WAAW,QAAQ,QAAQ,OAAO,EAAE,CAAC,GAAG,KAAK,OAAO;AAAA,EACzE;AAGA,MAAI,OAAO,QAAQ,YAAY,OAAO;AACpC,UAAM,YAAY,KAAK,QAAQ,SAAS;AACxC,cAAU,SAAS;AACnB,eAAW,CAAC,MAAM,OAAO,KAAK,OAAO,QAAQ,OAAO,MAAM,GAAG;AAC3D,gBAAU,KAAK,WAAW,GAAG,IAAI,OAAO,GAAG,OAAO;AAAA,IACpD;AAAA,EACF;AAGA,MAAI,OAAO,UAAU,YAAY,OAAO;AACtC,cAAU,KAAK,QAAQ,eAAe,GAAG,OAAO,QAAQ;AAAA,EAC1D;AAGA,MAAI,OAAO,WAAW,YAAY,OAAO;AACvC,cAAU,KAAK,QAAQ,gBAAgB,GAAG,OAAO,SAAS;AAAA,EAC5D;AAGA,YAAU,KAAK,QAAQ,uBAAuB,GAAG,OAAO,SAAS;AAGjE,QAAM,eAAe,OAAO,QAAQ,IAAI,CAAC,MAAM,EAAE,IAAI;AACrD,YAAU,KAAK,QAAQ,YAAY,GAAG,YAAY;AAElD,SAAO,KAAK,aAAa,OAAO,QAAQ,MAAM,UAAU;AACxD,SAAO,KAAK,sBAAsB,MAAM,SAAS,SAAS,GAAG;AAE7D,SAAO;AACT;AAEA,SAAS,UAAU,KAAmB;AACpC,MAAI,CAAC,WAAW,GAAG,GAAG;AACpB,cAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,EACpC;AACF;AAEA,SAAS,UAAU,MAAc,MAAqB;AACpD,YAAU,QAAQ,IAAI,CAAC;AACvB,gBAAc,MAAM,KAAK,UAAU,MAAM,MAAM,CAAC,GAAG,OAAO;AAC5D;","names":[]}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import "./chunk-DGUM43GV.js";
|
|
2
|
-
|
|
3
1
|
// src/generate/og-templates/blog.tsx
|
|
4
2
|
function blogTemplate(entry, config) {
|
|
5
3
|
const bg = config.colors?.bg ?? "#1a1a2e";
|
|
@@ -51,7 +49,7 @@ function blogTemplate(entry, config) {
|
|
|
51
49
|
props: {
|
|
52
50
|
style: {
|
|
53
51
|
fontSize: 22,
|
|
54
|
-
color: `${text}
|
|
52
|
+
color: `${text}CC`,
|
|
55
53
|
marginTop: 20,
|
|
56
54
|
lineHeight: 1.4,
|
|
57
55
|
maxWidth: 900
|
|
@@ -103,4 +101,4 @@ function blogTemplate(entry, config) {
|
|
|
103
101
|
export {
|
|
104
102
|
blogTemplate
|
|
105
103
|
};
|
|
106
|
-
//# sourceMappingURL=blog-
|
|
104
|
+
//# sourceMappingURL=blog-L7HRY3QC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/generate/og-templates/blog.tsx"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["../src/generate/og-templates/blog.tsx"],"sourcesContent":["import type { OgImagesConfig, VazaEntry } from \"../../types.js\";\n\n/**\n * Blog template: title + description + author name + date on gradient background.\n * Returns a Satori-compatible virtual DOM element (plain object).\n */\nexport function blogTemplate(\n entry: VazaEntry,\n config: OgImagesConfig,\n): unknown {\n const bg = config.colors?.bg ?? \"#1a1a2e\";\n const text = config.colors?.text ?? \"#ffffff\";\n const accent = config.colors?.accent ?? \"#e94560\";\n\n const dateStr = entry.publishDate\n ? entry.publishDate.toLocaleDateString(\"en-US\", {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n })\n : \"\";\n\n const descriptionText = entry.description\n ? entry.description.slice(0, 120) +\n (entry.description.length > 120 ? \"...\" : \"\")\n : null;\n\n return {\n type: \"div\",\n props: {\n style: {\n width: 1200,\n height: 630,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n background: `linear-gradient(135deg, ${bg} 0%, #16213e 100%)`,\n padding: 80,\n },\n children: [\n {\n type: \"div\",\n props: {\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n children: [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 48,\n fontWeight: 700,\n color: text,\n lineHeight: 1.2,\n maxWidth: 1000,\n },\n children: entry.title,\n },\n },\n ...(descriptionText\n ? [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 22,\n color: `${text}CC`,\n marginTop: 20,\n lineHeight: 1.4,\n maxWidth: 900,\n },\n children: descriptionText,\n },\n },\n ]\n : []),\n ],\n },\n },\n {\n type: \"div\",\n props: {\n style: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n children: [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 22,\n color: accent,\n fontWeight: 600,\n },\n children: entry.author?.name ?? \"\",\n },\n },\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 20,\n color: `${text}99`,\n },\n children: dateStr,\n },\n },\n ],\n },\n },\n ],\n },\n };\n}\n"],"mappings":";AAMO,SAAS,aACd,OACA,QACS;AACT,QAAM,KAAK,OAAO,QAAQ,MAAM;AAChC,QAAM,OAAO,OAAO,QAAQ,QAAQ;AACpC,QAAM,SAAS,OAAO,QAAQ,UAAU;AAExC,QAAM,UAAU,MAAM,cAClB,MAAM,YAAY,mBAAmB,SAAS;AAAA,IAC5C,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,EACP,CAAC,IACD;AAEJ,QAAM,kBAAkB,MAAM,cAC1B,MAAM,YAAY,MAAM,GAAG,GAAG,KAC7B,MAAM,YAAY,SAAS,MAAM,QAAQ,MAC1C;AAEJ,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,YAAY,2BAA2B,EAAE;AAAA,QACzC,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,OAAO;AAAA,cACL,SAAS;AAAA,cACT,eAAe;AAAA,YACjB;AAAA,YACA,UAAU;AAAA,cACR;AAAA,gBACE,MAAM;AAAA,gBACN,OAAO;AAAA,kBACL,OAAO;AAAA,oBACL,UAAU;AAAA,oBACV,YAAY;AAAA,oBACZ,OAAO;AAAA,oBACP,YAAY;AAAA,oBACZ,UAAU;AAAA,kBACZ;AAAA,kBACA,UAAU,MAAM;AAAA,gBAClB;AAAA,cACF;AAAA,cACA,GAAI,kBACA;AAAA,gBACE;AAAA,kBACE,MAAM;AAAA,kBACN,OAAO;AAAA,oBACL,OAAO;AAAA,sBACL,UAAU;AAAA,sBACV,OAAO,GAAG,IAAI;AAAA,sBACd,WAAW;AAAA,sBACX,YAAY;AAAA,sBACZ,UAAU;AAAA,oBACZ;AAAA,oBACA,UAAU;AAAA,kBACZ;AAAA,gBACF;AAAA,cACF,IACA,CAAC;AAAA,YACP;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,OAAO;AAAA,cACL,SAAS;AAAA,cACT,gBAAgB;AAAA,cAChB,YAAY;AAAA,YACd;AAAA,YACA,UAAU;AAAA,cACR;AAAA,gBACE,MAAM;AAAA,gBACN,OAAO;AAAA,kBACL,OAAO;AAAA,oBACL,UAAU;AAAA,oBACV,OAAO;AAAA,oBACP,YAAY;AAAA,kBACd;AAAA,kBACA,UAAU,MAAM,QAAQ,QAAQ;AAAA,gBAClC;AAAA,cACF;AAAA,cACA;AAAA,gBACE,MAAM;AAAA,gBACN,OAAO;AAAA,kBACL,OAAO;AAAA,oBACL,UAAU;AAAA,oBACV,OAAO,GAAG,IAAI;AAAA,kBAChB;AAAA,kBACA,UAAU;AAAA,gBACZ;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
-
|
|
3
|
-
// src/generate/og-templates/blog.tsx
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/generate/og-templates/blog.tsx
|
|
4
2
|
function blogTemplate(entry, config) {
|
|
5
3
|
const bg = _nullishCoalesce(_optionalChain([config, 'access', _ => _.colors, 'optionalAccess', _2 => _2.bg]), () => ( "#1a1a2e"));
|
|
6
4
|
const text = _nullishCoalesce(_optionalChain([config, 'access', _3 => _3.colors, 'optionalAccess', _4 => _4.text]), () => ( "#ffffff"));
|
|
@@ -51,7 +49,7 @@ function blogTemplate(entry, config) {
|
|
|
51
49
|
props: {
|
|
52
50
|
style: {
|
|
53
51
|
fontSize: 22,
|
|
54
|
-
color: `${text}
|
|
52
|
+
color: `${text}CC`,
|
|
55
53
|
marginTop: 20,
|
|
56
54
|
lineHeight: 1.4,
|
|
57
55
|
maxWidth: 900
|
|
@@ -103,4 +101,4 @@ function blogTemplate(entry, config) {
|
|
|
103
101
|
|
|
104
102
|
|
|
105
103
|
exports.blogTemplate = blogTemplate;
|
|
106
|
-
//# sourceMappingURL=blog-
|
|
104
|
+
//# sourceMappingURL=blog-SEXXJJSV.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/mehdi/vaza-content/dist/blog-SEXXJJSV.cjs","../src/generate/og-templates/blog.tsx"],"names":[],"mappings":"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","file":"/Users/mehdi/vaza-content/dist/blog-SEXXJJSV.cjs","sourcesContent":[null,"import type { OgImagesConfig, VazaEntry } from \"../../types.js\";\n\n/**\n * Blog template: title + description + author name + date on gradient background.\n * Returns a Satori-compatible virtual DOM element (plain object).\n */\nexport function blogTemplate(\n entry: VazaEntry,\n config: OgImagesConfig,\n): unknown {\n const bg = config.colors?.bg ?? \"#1a1a2e\";\n const text = config.colors?.text ?? \"#ffffff\";\n const accent = config.colors?.accent ?? \"#e94560\";\n\n const dateStr = entry.publishDate\n ? entry.publishDate.toLocaleDateString(\"en-US\", {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n })\n : \"\";\n\n const descriptionText = entry.description\n ? entry.description.slice(0, 120) +\n (entry.description.length > 120 ? \"...\" : \"\")\n : null;\n\n return {\n type: \"div\",\n props: {\n style: {\n width: 1200,\n height: 630,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n background: `linear-gradient(135deg, ${bg} 0%, #16213e 100%)`,\n padding: 80,\n },\n children: [\n {\n type: \"div\",\n props: {\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n children: [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 48,\n fontWeight: 700,\n color: text,\n lineHeight: 1.2,\n maxWidth: 1000,\n },\n children: entry.title,\n },\n },\n ...(descriptionText\n ? [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 22,\n color: `${text}CC`,\n marginTop: 20,\n lineHeight: 1.4,\n maxWidth: 900,\n },\n children: descriptionText,\n },\n },\n ]\n : []),\n ],\n },\n },\n {\n type: \"div\",\n props: {\n style: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n children: [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 22,\n color: accent,\n fontWeight: 600,\n },\n children: entry.author?.name ?? \"\",\n },\n },\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 20,\n color: `${text}99`,\n },\n children: dateStr,\n },\n },\n ],\n },\n },\n ],\n },\n };\n}\n"]}
|