vaza-content 0.1.0

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 (67) hide show
  1. package/dist/adapters/astro/index.cjs +75 -0
  2. package/dist/adapters/astro/index.cjs.map +1 -0
  3. package/dist/adapters/astro/index.d.cts +23 -0
  4. package/dist/adapters/astro/index.d.ts +23 -0
  5. package/dist/adapters/astro/index.js +75 -0
  6. package/dist/adapters/astro/index.js.map +1 -0
  7. package/dist/adapters/next/index.cjs +82 -0
  8. package/dist/adapters/next/index.cjs.map +1 -0
  9. package/dist/adapters/next/index.d.cts +17 -0
  10. package/dist/adapters/next/index.d.ts +17 -0
  11. package/dist/adapters/next/index.js +82 -0
  12. package/dist/adapters/next/index.js.map +1 -0
  13. package/dist/adapters/nuxt/index.cjs +70 -0
  14. package/dist/adapters/nuxt/index.cjs.map +1 -0
  15. package/dist/adapters/nuxt/index.d.cts +18 -0
  16. package/dist/adapters/nuxt/index.d.ts +18 -0
  17. package/dist/adapters/nuxt/index.js +70 -0
  18. package/dist/adapters/nuxt/index.js.map +1 -0
  19. package/dist/adapters/sveltekit/index.cjs +78 -0
  20. package/dist/adapters/sveltekit/index.cjs.map +1 -0
  21. package/dist/adapters/sveltekit/index.d.cts +19 -0
  22. package/dist/adapters/sveltekit/index.d.ts +19 -0
  23. package/dist/adapters/sveltekit/index.js +78 -0
  24. package/dist/adapters/sveltekit/index.js.map +1 -0
  25. package/dist/blog-7EEJJG26.js +106 -0
  26. package/dist/blog-7EEJJG26.js.map +1 -0
  27. package/dist/blog-Z3R5GOMP.cjs +106 -0
  28. package/dist/blog-Z3R5GOMP.cjs.map +1 -0
  29. package/dist/chunk-7VCRDESM.cjs +1050 -0
  30. package/dist/chunk-7VCRDESM.cjs.map +1 -0
  31. package/dist/chunk-DGUM43GV.js +11 -0
  32. package/dist/chunk-DGUM43GV.js.map +1 -0
  33. package/dist/chunk-JEQ2X3Z6.cjs +11 -0
  34. package/dist/chunk-JEQ2X3Z6.cjs.map +1 -0
  35. package/dist/chunk-L4VH2NSA.js +1050 -0
  36. package/dist/chunk-L4VH2NSA.js.map +1 -0
  37. package/dist/cli/index.cjs +256 -0
  38. package/dist/cli/index.cjs.map +1 -0
  39. package/dist/cli/index.d.cts +1 -0
  40. package/dist/cli/index.d.ts +1 -0
  41. package/dist/cli/index.js +256 -0
  42. package/dist/cli/index.js.map +1 -0
  43. package/dist/dark-6E36AKLN.js +70 -0
  44. package/dist/dark-6E36AKLN.js.map +1 -0
  45. package/dist/dark-EX2GRAYK.cjs +70 -0
  46. package/dist/dark-EX2GRAYK.cjs.map +1 -0
  47. package/dist/index.cjs +97 -0
  48. package/dist/index.cjs.map +1 -0
  49. package/dist/index.d.cts +70 -0
  50. package/dist/index.d.ts +70 -0
  51. package/dist/index.js +97 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/minimal-D2PRAVG6.js +54 -0
  54. package/dist/minimal-D2PRAVG6.js.map +1 -0
  55. package/dist/minimal-RHOK4XEZ.cjs +54 -0
  56. package/dist/minimal-RHOK4XEZ.cjs.map +1 -0
  57. package/dist/process-FYZZ5QAG.js +8 -0
  58. package/dist/process-FYZZ5QAG.js.map +1 -0
  59. package/dist/process-XEGGGY6S.cjs +8 -0
  60. package/dist/process-XEGGGY6S.cjs.map +1 -0
  61. package/dist/product-NCUW3U72.js +97 -0
  62. package/dist/product-NCUW3U72.js.map +1 -0
  63. package/dist/product-OT3XYMWD.cjs +97 -0
  64. package/dist/product-OT3XYMWD.cjs.map +1 -0
  65. package/dist/types-Bkue7DeN.d.cts +247 -0
  66. package/dist/types-Bkue7DeN.d.ts +247 -0
  67. package/package.json +94 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/adapters/nuxt/index.ts"],"sourcesContent":["import { processCollections } from \"../../process.js\";\nimport type { VazaConfig, VazaOutput } from \"../../types.js\";\nimport { renderSitemapXml } from \"../../generate/sitemap.js\";\nimport { renderRssXml } from \"../../generate/rss.js\";\nimport { writeFileSync, mkdirSync, existsSync } from \"node:fs\";\nimport { join, dirname } from \"node:path\";\n\n/**\n * Nuxt adapter — module that hooks into the Nuxt build.\n *\n * Usage in nuxt.config.ts:\n * modules: [\n * '@nuxt/content',\n * ['vaza-content/nuxt', vazaConfig]\n * ]\n */\nexport function defineVazaContentModule(config: VazaConfig) {\n return async function vazaContentModule() {\n await processAndWrite(config);\n };\n}\n\n/**\n * Standalone function to process and write outputs.\n */\nexport async function buildVazaContent(config: VazaConfig): 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(\n join(\"public\", rssPath.replace(/^\\//, \"\")),\n xml,\n \"utf-8\",\n );\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 console.log(`[vaza-content] 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":";;;;;;;;AAIA,SAAS,eAAe,WAAW,kBAAkB;AACrD,SAAS,MAAM,eAAe;AAWvB,SAAS,wBAAwB,QAAoB;AAC1D,SAAO,eAAe,oBAAoB;AACxC,UAAM,gBAAgB,MAAM;AAAA,EAC9B;AACF;AAKA,eAAsB,iBAAiB,QAAyC;AAC9E,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;AAAA,MACE,KAAK,UAAU,QAAQ,QAAQ,OAAO,EAAE,CAAC;AAAA,MACzC;AAAA,MACA;AAAA,IACF;AAAA,EACF;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,UAAQ,IAAI,4BAA4B,OAAO,QAAQ,MAAM,UAAU;AAEvE,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":[]}
@@ -0,0 +1,78 @@
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
+
4
+
5
+ var _chunk7VCRDESMcjs = require('../../chunk-7VCRDESM.cjs');
6
+ require('../../chunk-JEQ2X3Z6.cjs');
7
+
8
+ // src/adapters/sveltekit/index.ts
9
+ var _fs = require('fs');
10
+ var _path = require('path');
11
+ function vazaContent(config) {
12
+ let hasRun = false;
13
+ return {
14
+ name: "vaza-content-sveltekit",
15
+ async buildStart() {
16
+ if (hasRun) return;
17
+ hasRun = true;
18
+ await processAndWrite(config);
19
+ }
20
+ };
21
+ }
22
+ async function buildVazaContent(config) {
23
+ return processAndWrite(config);
24
+ }
25
+ async function processAndWrite(config) {
26
+ const output = await _chunk7VCRDESMcjs.processCollections.call(void 0, config);
27
+ const outDir = ".vaza-content";
28
+ const staticDir = "static";
29
+ ensureDir(outDir);
30
+ ensureDir(staticDir);
31
+ if (_optionalChain([config, 'access', _ => _.sitemap, 'optionalAccess', _2 => _2.enabled]) !== false) {
32
+ writeJson(_path.join.call(void 0, outDir, "sitemap-data.json"), output.sitemap);
33
+ const xml = _chunk7VCRDESMcjs.renderSitemapXml.call(void 0, output.sitemap);
34
+ _fs.writeFileSync.call(void 0, _path.join.call(void 0, staticDir, "sitemap.xml"), xml, "utf-8");
35
+ }
36
+ if (_optionalChain([config, 'access', _3 => _3.rss, 'optionalAccess', _4 => _4.enabled]) !== false) {
37
+ const xml = _chunk7VCRDESMcjs.renderRssXml.call(void 0, output.rss, config);
38
+ const rssPath = _nullishCoalesce(_optionalChain([config, 'access', _5 => _5.rss, 'optionalAccess', _6 => _6.path]), () => ( "/rss.xml"));
39
+ _fs.writeFileSync.call(void 0,
40
+ _path.join.call(void 0, staticDir, rssPath.replace(/^\//, "")),
41
+ xml,
42
+ "utf-8"
43
+ );
44
+ }
45
+ if (_optionalChain([config, 'access', _7 => _7.jsonLd, 'optionalAccess', _8 => _8.enabled]) !== false) {
46
+ const jsonLdDir = _path.join.call(void 0, outDir, "json-ld");
47
+ ensureDir(jsonLdDir);
48
+ for (const [slug, schemas] of Object.entries(output.jsonLd)) {
49
+ writeJson(_path.join.call(void 0, jsonLdDir, `${slug}.json`), schemas);
50
+ }
51
+ }
52
+ if (_optionalChain([config, 'access', _9 => _9.taxonomy, 'optionalAccess', _10 => _10.enabled]) !== false) {
53
+ writeJson(_path.join.call(void 0, outDir, "taxonomy.json"), output.taxonomy);
54
+ }
55
+ if (_optionalChain([config, 'access', _11 => _11.redirects, 'optionalAccess', _12 => _12.enabled]) !== false) {
56
+ writeJson(_path.join.call(void 0, outDir, "redirects.json"), output.redirects);
57
+ }
58
+ writeJson(_path.join.call(void 0, outDir, "integrity-report.json"), output.integrity);
59
+ const slugManifest = output.entries.map((e) => e.slug);
60
+ writeJson(_path.join.call(void 0, outDir, "slugs.json"), slugManifest);
61
+ console.log(`[vaza-content] Generated ${output.entries.length} entries`);
62
+ console.log(`[vaza-content] Outputs written to ${outDir}/ and ${staticDir}/`);
63
+ return output;
64
+ }
65
+ function ensureDir(dir) {
66
+ if (!_fs.existsSync.call(void 0, dir)) {
67
+ _fs.mkdirSync.call(void 0, dir, { recursive: true });
68
+ }
69
+ }
70
+ function writeJson(path, data) {
71
+ ensureDir(_path.dirname.call(void 0, path));
72
+ _fs.writeFileSync.call(void 0, path, JSON.stringify(data, null, 2), "utf-8");
73
+ }
74
+
75
+
76
+
77
+ exports.buildVazaContent = buildVazaContent; exports.vazaContent = vazaContent;
78
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +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,oCAAiC;AACjC;AACA;ACHA,wBAAqD;AACrD,4BAA8B;AASvB,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,CAAiB,MAAA,EAAyC;AAC9E,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;AAAA,MACE,wBAAA,SAAK,EAAW,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAC,CAAA;AAAA,MAC1C,GAAA;AAAA,MACA;AAAA,IACF,CAAA;AAAA,EACF;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;AAEX,EAAA;AACA,EAAA;AAEL,EAAA;AACT;AAEsC;AACd,EAAA;AACQ,IAAA;AAC9B,EAAA;AACF;AAEsD;AAC7B,EAAA;AACE,EAAA;AAC3B;AD5BiC;AACA;AACA;AACA","file":"/Users/mehdi/vaza-content/dist/adapters/sveltekit/index.cjs","sourcesContent":[null,"import { processCollections } from \"../../process.js\";\nimport type { VazaConfig, VazaOutput } from \"../../types.js\";\nimport { renderSitemapXml } from \"../../generate/sitemap.js\";\nimport { renderRssXml } from \"../../generate/rss.js\";\nimport { writeFileSync, mkdirSync, existsSync } from \"node:fs\";\nimport { join, dirname } from \"node:path\";\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 * 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(config: VazaConfig): 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(\n join(staticDir, rssPath.replace(/^\\//, \"\")),\n xml,\n \"utf-8\",\n );\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 console.log(`[vaza-content] Generated ${output.entries.length} entries`);\n console.log(`[vaza-content] 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"]}
@@ -0,0 +1,19 @@
1
+ import { V as VazaConfig, a as VazaOutput } from '../../types-Bkue7DeN.cjs';
2
+
3
+ /**
4
+ * SvelteKit adapter — Vite plugin that hooks into the build.
5
+ *
6
+ * Usage in vite.config.ts:
7
+ * import { vazaContent } from 'vaza-content/sveltekit'
8
+ * export default { plugins: [sveltekit(), vazaContent(vazaConfig)] }
9
+ */
10
+ declare function vazaContent(config: VazaConfig): {
11
+ name: string;
12
+ buildStart(): Promise<void>;
13
+ };
14
+ /**
15
+ * Standalone function to process and write outputs.
16
+ */
17
+ declare function buildVazaContent(config: VazaConfig): Promise<VazaOutput>;
18
+
19
+ export { buildVazaContent, vazaContent };
@@ -0,0 +1,19 @@
1
+ import { V as VazaConfig, a as VazaOutput } from '../../types-Bkue7DeN.js';
2
+
3
+ /**
4
+ * SvelteKit adapter — Vite plugin that hooks into the build.
5
+ *
6
+ * Usage in vite.config.ts:
7
+ * import { vazaContent } from 'vaza-content/sveltekit'
8
+ * export default { plugins: [sveltekit(), vazaContent(vazaConfig)] }
9
+ */
10
+ declare function vazaContent(config: VazaConfig): {
11
+ name: string;
12
+ buildStart(): Promise<void>;
13
+ };
14
+ /**
15
+ * Standalone function to process and write outputs.
16
+ */
17
+ declare function buildVazaContent(config: VazaConfig): Promise<VazaOutput>;
18
+
19
+ export { buildVazaContent, vazaContent };
@@ -0,0 +1,78 @@
1
+ import {
2
+ processCollections,
3
+ renderRssXml,
4
+ renderSitemapXml
5
+ } from "../../chunk-L4VH2NSA.js";
6
+ import "../../chunk-DGUM43GV.js";
7
+
8
+ // src/adapters/sveltekit/index.ts
9
+ import { writeFileSync, mkdirSync, existsSync } from "fs";
10
+ import { join, dirname } from "path";
11
+ function vazaContent(config) {
12
+ let hasRun = false;
13
+ return {
14
+ name: "vaza-content-sveltekit",
15
+ async buildStart() {
16
+ if (hasRun) return;
17
+ hasRun = true;
18
+ await processAndWrite(config);
19
+ }
20
+ };
21
+ }
22
+ async function buildVazaContent(config) {
23
+ return processAndWrite(config);
24
+ }
25
+ async function processAndWrite(config) {
26
+ const output = await processCollections(config);
27
+ const outDir = ".vaza-content";
28
+ const staticDir = "static";
29
+ ensureDir(outDir);
30
+ ensureDir(staticDir);
31
+ if (config.sitemap?.enabled !== false) {
32
+ writeJson(join(outDir, "sitemap-data.json"), output.sitemap);
33
+ const xml = renderSitemapXml(output.sitemap);
34
+ writeFileSync(join(staticDir, "sitemap.xml"), xml, "utf-8");
35
+ }
36
+ if (config.rss?.enabled !== false) {
37
+ const xml = renderRssXml(output.rss, config);
38
+ const rssPath = config.rss?.path ?? "/rss.xml";
39
+ writeFileSync(
40
+ join(staticDir, rssPath.replace(/^\//, "")),
41
+ xml,
42
+ "utf-8"
43
+ );
44
+ }
45
+ if (config.jsonLd?.enabled !== false) {
46
+ const jsonLdDir = join(outDir, "json-ld");
47
+ ensureDir(jsonLdDir);
48
+ for (const [slug, schemas] of Object.entries(output.jsonLd)) {
49
+ writeJson(join(jsonLdDir, `${slug}.json`), schemas);
50
+ }
51
+ }
52
+ if (config.taxonomy?.enabled !== false) {
53
+ writeJson(join(outDir, "taxonomy.json"), output.taxonomy);
54
+ }
55
+ if (config.redirects?.enabled !== false) {
56
+ writeJson(join(outDir, "redirects.json"), output.redirects);
57
+ }
58
+ writeJson(join(outDir, "integrity-report.json"), output.integrity);
59
+ const slugManifest = output.entries.map((e) => e.slug);
60
+ writeJson(join(outDir, "slugs.json"), slugManifest);
61
+ console.log(`[vaza-content] Generated ${output.entries.length} entries`);
62
+ console.log(`[vaza-content] Outputs written to ${outDir}/ and ${staticDir}/`);
63
+ return output;
64
+ }
65
+ function ensureDir(dir) {
66
+ if (!existsSync(dir)) {
67
+ mkdirSync(dir, { recursive: true });
68
+ }
69
+ }
70
+ function writeJson(path, data) {
71
+ ensureDir(dirname(path));
72
+ writeFileSync(path, JSON.stringify(data, null, 2), "utf-8");
73
+ }
74
+ export {
75
+ buildVazaContent,
76
+ vazaContent
77
+ };
78
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/adapters/sveltekit/index.ts"],"sourcesContent":["import { processCollections } from \"../../process.js\";\nimport type { VazaConfig, VazaOutput } from \"../../types.js\";\nimport { renderSitemapXml } from \"../../generate/sitemap.js\";\nimport { renderRssXml } from \"../../generate/rss.js\";\nimport { writeFileSync, mkdirSync, existsSync } from \"node:fs\";\nimport { join, dirname } from \"node:path\";\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 * 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(config: VazaConfig): 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(\n join(staticDir, rssPath.replace(/^\\//, \"\")),\n xml,\n \"utf-8\",\n );\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 console.log(`[vaza-content] Generated ${output.entries.length} entries`);\n console.log(`[vaza-content] 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":";;;;;;;;AAIA,SAAS,eAAe,WAAW,kBAAkB;AACrD,SAAS,MAAM,eAAe;AASvB,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,iBAAiB,QAAyC;AAC9E,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;AAAA,MACE,KAAK,WAAW,QAAQ,QAAQ,OAAO,EAAE,CAAC;AAAA,MAC1C;AAAA,MACA;AAAA,IACF;AAAA,EACF;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,UAAQ,IAAI,4BAA4B,OAAO,QAAQ,MAAM,UAAU;AACvE,UAAQ,IAAI,qCAAqC,MAAM,SAAS,SAAS,GAAG;AAE5E,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":[]}
@@ -0,0 +1,106 @@
1
+ import "./chunk-DGUM43GV.js";
2
+
3
+ // src/generate/og-templates/blog.tsx
4
+ function blogTemplate(entry, config) {
5
+ const bg = config.colors?.bg ?? "#1a1a2e";
6
+ const text = config.colors?.text ?? "#ffffff";
7
+ const accent = config.colors?.accent ?? "#e94560";
8
+ const dateStr = entry.publishDate ? entry.publishDate.toLocaleDateString("en-US", {
9
+ year: "numeric",
10
+ month: "long",
11
+ day: "numeric"
12
+ }) : "";
13
+ const descriptionText = entry.description ? entry.description.slice(0, 120) + (entry.description.length > 120 ? "..." : "") : null;
14
+ return {
15
+ type: "div",
16
+ props: {
17
+ style: {
18
+ width: 1200,
19
+ height: 630,
20
+ display: "flex",
21
+ flexDirection: "column",
22
+ justifyContent: "space-between",
23
+ background: `linear-gradient(135deg, ${bg} 0%, #16213e 100%)`,
24
+ padding: 80
25
+ },
26
+ children: [
27
+ {
28
+ type: "div",
29
+ props: {
30
+ style: {
31
+ display: "flex",
32
+ flexDirection: "column"
33
+ },
34
+ children: [
35
+ {
36
+ type: "div",
37
+ props: {
38
+ style: {
39
+ fontSize: 48,
40
+ fontWeight: 700,
41
+ color: text,
42
+ lineHeight: 1.2,
43
+ maxWidth: 1e3
44
+ },
45
+ children: entry.title
46
+ }
47
+ },
48
+ ...descriptionText ? [
49
+ {
50
+ type: "div",
51
+ props: {
52
+ style: {
53
+ fontSize: 22,
54
+ color: `${text}cc`,
55
+ marginTop: 20,
56
+ lineHeight: 1.4,
57
+ maxWidth: 900
58
+ },
59
+ children: descriptionText
60
+ }
61
+ }
62
+ ] : []
63
+ ]
64
+ }
65
+ },
66
+ {
67
+ type: "div",
68
+ props: {
69
+ style: {
70
+ display: "flex",
71
+ justifyContent: "space-between",
72
+ alignItems: "center"
73
+ },
74
+ children: [
75
+ {
76
+ type: "div",
77
+ props: {
78
+ style: {
79
+ fontSize: 22,
80
+ color: accent,
81
+ fontWeight: 600
82
+ },
83
+ children: entry.author?.name ?? ""
84
+ }
85
+ },
86
+ {
87
+ type: "div",
88
+ props: {
89
+ style: {
90
+ fontSize: 20,
91
+ color: `${text}99`
92
+ },
93
+ children: dateStr
94
+ }
95
+ }
96
+ ]
97
+ }
98
+ }
99
+ ]
100
+ }
101
+ };
102
+ }
103
+ export {
104
+ blogTemplate
105
+ };
106
+ //# sourceMappingURL=blog-7EEJJG26.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/generate/og-templates/blog.tsx"],"sourcesContent":["import type { VazaEntry, OgImagesConfig } 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":[]}
@@ -0,0 +1,106 @@
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; }require('./chunk-JEQ2X3Z6.cjs');
2
+
3
+ // src/generate/og-templates/blog.tsx
4
+ function blogTemplate(entry, config) {
5
+ const bg = _nullishCoalesce(_optionalChain([config, 'access', _ => _.colors, 'optionalAccess', _2 => _2.bg]), () => ( "#1a1a2e"));
6
+ const text = _nullishCoalesce(_optionalChain([config, 'access', _3 => _3.colors, 'optionalAccess', _4 => _4.text]), () => ( "#ffffff"));
7
+ const accent = _nullishCoalesce(_optionalChain([config, 'access', _5 => _5.colors, 'optionalAccess', _6 => _6.accent]), () => ( "#e94560"));
8
+ const dateStr = entry.publishDate ? entry.publishDate.toLocaleDateString("en-US", {
9
+ year: "numeric",
10
+ month: "long",
11
+ day: "numeric"
12
+ }) : "";
13
+ const descriptionText = entry.description ? entry.description.slice(0, 120) + (entry.description.length > 120 ? "..." : "") : null;
14
+ return {
15
+ type: "div",
16
+ props: {
17
+ style: {
18
+ width: 1200,
19
+ height: 630,
20
+ display: "flex",
21
+ flexDirection: "column",
22
+ justifyContent: "space-between",
23
+ background: `linear-gradient(135deg, ${bg} 0%, #16213e 100%)`,
24
+ padding: 80
25
+ },
26
+ children: [
27
+ {
28
+ type: "div",
29
+ props: {
30
+ style: {
31
+ display: "flex",
32
+ flexDirection: "column"
33
+ },
34
+ children: [
35
+ {
36
+ type: "div",
37
+ props: {
38
+ style: {
39
+ fontSize: 48,
40
+ fontWeight: 700,
41
+ color: text,
42
+ lineHeight: 1.2,
43
+ maxWidth: 1e3
44
+ },
45
+ children: entry.title
46
+ }
47
+ },
48
+ ...descriptionText ? [
49
+ {
50
+ type: "div",
51
+ props: {
52
+ style: {
53
+ fontSize: 22,
54
+ color: `${text}cc`,
55
+ marginTop: 20,
56
+ lineHeight: 1.4,
57
+ maxWidth: 900
58
+ },
59
+ children: descriptionText
60
+ }
61
+ }
62
+ ] : []
63
+ ]
64
+ }
65
+ },
66
+ {
67
+ type: "div",
68
+ props: {
69
+ style: {
70
+ display: "flex",
71
+ justifyContent: "space-between",
72
+ alignItems: "center"
73
+ },
74
+ children: [
75
+ {
76
+ type: "div",
77
+ props: {
78
+ style: {
79
+ fontSize: 22,
80
+ color: accent,
81
+ fontWeight: 600
82
+ },
83
+ children: _nullishCoalesce(_optionalChain([entry, 'access', _7 => _7.author, 'optionalAccess', _8 => _8.name]), () => ( ""))
84
+ }
85
+ },
86
+ {
87
+ type: "div",
88
+ props: {
89
+ style: {
90
+ fontSize: 20,
91
+ color: `${text}99`
92
+ },
93
+ children: dateStr
94
+ }
95
+ }
96
+ ]
97
+ }
98
+ }
99
+ ]
100
+ }
101
+ };
102
+ }
103
+
104
+
105
+ exports.blogTemplate = blogTemplate;
106
+ //# sourceMappingURL=blog-Z3R5GOMP.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/mehdi/vaza-content/dist/blog-Z3R5GOMP.cjs","../src/generate/og-templates/blog.tsx"],"names":[],"mappings":"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","file":"/Users/mehdi/vaza-content/dist/blog-Z3R5GOMP.cjs","sourcesContent":[null,"import type { VazaEntry, OgImagesConfig } 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"]}