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.
Files changed (82) hide show
  1. package/dist/adapters/astro/index.cjs +9 -15
  2. package/dist/adapters/astro/index.cjs.map +1 -1
  3. package/dist/adapters/astro/index.d.cts +4 -3
  4. package/dist/adapters/astro/index.d.ts +4 -3
  5. package/dist/adapters/astro/index.js +6 -12
  6. package/dist/adapters/astro/index.js.map +1 -1
  7. package/dist/adapters/next/index.cjs +11 -12
  8. package/dist/adapters/next/index.cjs.map +1 -1
  9. package/dist/adapters/next/index.d.cts +5 -3
  10. package/dist/adapters/next/index.d.ts +5 -3
  11. package/dist/adapters/next/index.js +8 -9
  12. package/dist/adapters/next/index.js.map +1 -1
  13. package/dist/adapters/nuxt/index.cjs +22 -22
  14. package/dist/adapters/nuxt/index.cjs.map +1 -1
  15. package/dist/adapters/nuxt/index.d.cts +11 -7
  16. package/dist/adapters/nuxt/index.d.ts +11 -7
  17. package/dist/adapters/nuxt/index.js +13 -13
  18. package/dist/adapters/nuxt/index.js.map +1 -1
  19. package/dist/adapters/sveltekit/index.cjs +9 -15
  20. package/dist/adapters/sveltekit/index.cjs.map +1 -1
  21. package/dist/adapters/sveltekit/index.d.cts +3 -2
  22. package/dist/adapters/sveltekit/index.d.ts +3 -2
  23. package/dist/adapters/sveltekit/index.js +5 -11
  24. package/dist/adapters/sveltekit/index.js.map +1 -1
  25. package/dist/{blog-7EEJJG26.js → blog-L7HRY3QC.js} +2 -4
  26. package/dist/{blog-7EEJJG26.js.map → blog-L7HRY3QC.js.map} +1 -1
  27. package/dist/{blog-Z3R5GOMP.cjs → blog-SEXXJJSV.cjs} +3 -5
  28. package/dist/blog-SEXXJJSV.cjs.map +1 -0
  29. package/dist/{chunk-YV2ZYIAD.cjs → chunk-H3D7F4TA.cjs} +544 -503
  30. package/dist/chunk-H3D7F4TA.cjs.map +1 -0
  31. package/dist/{chunk-FALSVGPG.js → chunk-OKXBDPYF.js} +511 -470
  32. package/dist/chunk-OKXBDPYF.js.map +1 -0
  33. package/dist/cli/index.cjs +30 -24
  34. package/dist/cli/index.cjs.map +1 -1
  35. package/dist/cli/index.js +29 -23
  36. package/dist/cli/index.js.map +1 -1
  37. package/dist/{dark-EX2GRAYK.cjs → dark-66ZWYLT7.cjs} +2 -4
  38. package/dist/dark-66ZWYLT7.cjs.map +1 -0
  39. package/dist/{dark-6E36AKLN.js → dark-SZOURAMM.js} +1 -3
  40. package/dist/{dark-6E36AKLN.js.map → dark-SZOURAMM.js.map} +1 -1
  41. package/dist/index.cjs +8 -11
  42. package/dist/index.cjs.map +1 -1
  43. package/dist/index.d.cts +29 -29
  44. package/dist/index.d.ts +29 -29
  45. package/dist/index.js +3 -6
  46. package/dist/index.js.map +1 -1
  47. package/dist/{minimal-D2PRAVG6.js → minimal-CGXF737F.js} +1 -3
  48. package/dist/{minimal-D2PRAVG6.js.map → minimal-CGXF737F.js.map} +1 -1
  49. package/dist/{minimal-RHOK4XEZ.cjs → minimal-XTTHXE3T.cjs} +2 -4
  50. package/dist/minimal-XTTHXE3T.cjs.map +1 -0
  51. package/dist/process-VXDWM664.cjs +7 -0
  52. package/dist/process-VXDWM664.cjs.map +1 -0
  53. package/dist/process-ZQV5M2TB.js +7 -0
  54. package/dist/{product-OT3XYMWD.cjs → product-BY3GVQGV.cjs} +2 -4
  55. package/dist/product-BY3GVQGV.cjs.map +1 -0
  56. package/dist/{product-NCUW3U72.js → product-UQXUI5YL.js} +1 -3
  57. package/dist/{product-NCUW3U72.js.map → product-UQXUI5YL.js.map} +1 -1
  58. package/dist/{types-CgaidvaB.d.cts → types-DAfWIHiD.d.cts} +1 -1
  59. package/dist/{types-CgaidvaB.d.ts → types-DAfWIHiD.d.ts} +1 -1
  60. package/package.json +6 -4
  61. package/dist/blog-Z3R5GOMP.cjs.map +0 -1
  62. package/dist/chunk-DGUM43GV.js +0 -11
  63. package/dist/chunk-FALSVGPG.js.map +0 -1
  64. package/dist/chunk-JEQ2X3Z6.cjs +0 -11
  65. package/dist/chunk-JEQ2X3Z6.cjs.map +0 -1
  66. package/dist/chunk-PCRQY47G.js +0 -35
  67. package/dist/chunk-PCRQY47G.js.map +0 -1
  68. package/dist/chunk-WOCXEBQC.cjs +0 -35
  69. package/dist/chunk-WOCXEBQC.cjs.map +0 -1
  70. package/dist/chunk-YV2ZYIAD.cjs.map +0 -1
  71. package/dist/dark-EX2GRAYK.cjs.map +0 -1
  72. package/dist/logger-7WBTEDED.cjs +0 -10
  73. package/dist/logger-7WBTEDED.cjs.map +0 -1
  74. package/dist/logger-BGP7C274.js +0 -10
  75. package/dist/logger-BGP7C274.js.map +0 -1
  76. package/dist/minimal-RHOK4XEZ.cjs.map +0 -1
  77. package/dist/process-B4PJ6CWC.cjs +0 -9
  78. package/dist/process-B4PJ6CWC.cjs.map +0 -1
  79. package/dist/process-KSSXQJE6.js +0 -9
  80. package/dist/process-KSSXQJE6.js.map +0 -1
  81. package/dist/product-OT3XYMWD.cjs.map +0 -1
  82. /package/dist/{chunk-DGUM43GV.js.map → process-ZQV5M2TB.js.map} +0 -0
@@ -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; }require('./chunk-JEQ2X3Z6.cjs');
2
-
3
- // src/generate/og-templates/dark.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/dark.tsx
4
2
  function darkTemplate(entry, config) {
5
3
  const bg = _nullishCoalesce(_optionalChain([config, 'access', _ => _.colors, 'optionalAccess', _2 => _2.bg]), () => ( "#0a0a0a"));
6
4
  const text = _nullishCoalesce(_optionalChain([config, 'access', _3 => _3.colors, 'optionalAccess', _4 => _4.text]), () => ( "#fafafa"));
@@ -67,4 +65,4 @@ function darkTemplate(entry, config) {
67
65
 
68
66
 
69
67
  exports.darkTemplate = darkTemplate;
70
- //# sourceMappingURL=dark-EX2GRAYK.cjs.map
68
+ //# sourceMappingURL=dark-66ZWYLT7.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/mehdi/vaza-content/dist/dark-66ZWYLT7.cjs","../src/generate/og-templates/dark.tsx"],"names":[],"mappings":"AAAA;ACMO,SAAS,YAAA,CACd,KAAA,EACA,MAAA,EACS;AACT,EAAA,MAAM,GAAA,mCAAK,MAAA,mBAAO,MAAA,6BAAQ,IAAA,UAAM,WAAA;AAChC,EAAA,MAAM,KAAA,mCAAO,MAAA,qBAAO,MAAA,6BAAQ,MAAA,UAAQ,WAAA;AACpC,EAAA,MAAM,OAAA,mCAAS,MAAA,qBAAO,MAAA,6BAAQ,QAAA,UAAU,WAAA;AAExC,EAAA,MAAM,gBAAA,EAAkB,KAAA,CAAM,YAAA,EAC1B,KAAA,CAAM,WAAA,CAAY,KAAA,CAAM,CAAA,EAAG,GAAG,EAAA,EAAA,CAC7B,KAAA,CAAM,WAAA,CAAY,OAAA,EAAS,IAAA,EAAM,MAAA,EAAQ,EAAA,EAAA,EAC1C,IAAA;AAEJ,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,KAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,IAAA;AAAA,QACP,MAAA,EAAQ,GAAA;AAAA,QACR,OAAA,EAAS,MAAA;AAAA,QACT,aAAA,EAAe,QAAA;AAAA,QACf,cAAA,EAAgB,QAAA;AAAA,QAChB,eAAA,EAAiB,EAAA;AAAA,QACjB,OAAA,EAAS,EAAA;AAAA,QACT,UAAA,EAAY,CAAA,UAAA,EAAa,MAAM,CAAA;AAAA,MAAA;AACjC,MAAA;AACU,QAAA;AACR,UAAA;AACQ,UAAA;AACC,YAAA;AACE,cAAA;AACK,cAAA;AACE,cAAA;AACL,cAAA;AACK,cAAA;AACF,YAAA;AACZ,YAAA;AACgB,UAAA;AAClB,QAAA;AACF,QAAA;AAEI,UAAA;AACE,YAAA;AACQ,YAAA;AACC,cAAA;AACE,gBAAA;AACK,gBAAA;AACI,gBAAA;AACH,gBAAA;AACC,gBAAA;AACF,cAAA;AACZ,cAAA;AACU,YAAA;AACZ,UAAA;AACF,QAAA;AAED,QAAA;AACL,UAAA;AACQ,UAAA;AACC,YAAA;AACE,cAAA;AACK,cAAA;AACH,cAAA;AACI,cAAA;AACC,YAAA;AACd,YAAA;AACyB,UAAA;AAC3B,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AAEJ;ADdA;AACA;AACA","file":"/Users/mehdi/vaza-content/dist/dark-66ZWYLT7.cjs","sourcesContent":[null,"import type { OgImagesConfig, VazaEntry } from \"../../types.js\";\n\n/**\n * Dark template: white text on dark background with accent border.\n * Returns a Satori-compatible virtual DOM element (plain object).\n */\nexport function darkTemplate(\n entry: VazaEntry,\n config: OgImagesConfig,\n): unknown {\n const bg = config.colors?.bg ?? \"#0a0a0a\";\n const text = config.colors?.text ?? \"#fafafa\";\n const accent = config.colors?.accent ?? \"#00d4ff\";\n\n const descriptionText = entry.description\n ? entry.description.slice(0, 140) +\n (entry.description.length > 140 ? \"...\" : \"\")\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: \"center\",\n backgroundColor: bg,\n padding: 80,\n borderLeft: `8px solid ${accent}`,\n },\n children: [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 52,\n fontWeight: 700,\n color: text,\n lineHeight: 1.3,\n maxWidth: 950,\n },\n children: entry.title,\n },\n },\n ...(descriptionText\n ? [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 24,\n color: `${text}aa`,\n marginTop: 24,\n lineHeight: 1.5,\n maxWidth: 850,\n },\n children: descriptionText,\n },\n },\n ]\n : []),\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 20,\n color: accent,\n marginTop: 40,\n fontWeight: 600,\n },\n children: config.logo ?? \"\",\n },\n },\n ],\n },\n };\n}\n"]}
@@ -1,5 +1,3 @@
1
- import "./chunk-DGUM43GV.js";
2
-
3
1
  // src/generate/og-templates/dark.tsx
4
2
  function darkTemplate(entry, config) {
5
3
  const bg = config.colors?.bg ?? "#0a0a0a";
@@ -67,4 +65,4 @@ function darkTemplate(entry, config) {
67
65
  export {
68
66
  darkTemplate
69
67
  };
70
- //# sourceMappingURL=dark-6E36AKLN.js.map
68
+ //# sourceMappingURL=dark-SZOURAMM.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/generate/og-templates/dark.tsx"],"sourcesContent":["import type { VazaEntry, OgImagesConfig } from \"../../types.js\";\n\n/**\n * Dark template: white text on dark background with accent border.\n * Returns a Satori-compatible virtual DOM element (plain object).\n */\nexport function darkTemplate(\n entry: VazaEntry,\n config: OgImagesConfig,\n): unknown {\n const bg = config.colors?.bg ?? \"#0a0a0a\";\n const text = config.colors?.text ?? \"#fafafa\";\n const accent = config.colors?.accent ?? \"#00d4ff\";\n\n const descriptionText = entry.description\n ? entry.description.slice(0, 140) +\n (entry.description.length > 140 ? \"...\" : \"\")\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: \"center\",\n backgroundColor: bg,\n padding: 80,\n borderLeft: `8px solid ${accent}`,\n },\n children: [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 52,\n fontWeight: 700,\n color: text,\n lineHeight: 1.3,\n maxWidth: 950,\n },\n children: entry.title,\n },\n },\n ...(descriptionText\n ? [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 24,\n color: `${text}aa`,\n marginTop: 24,\n lineHeight: 1.5,\n maxWidth: 850,\n },\n children: descriptionText,\n },\n },\n ]\n : []),\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 20,\n color: accent,\n marginTop: 40,\n fontWeight: 600,\n },\n children: config.logo ?? \"\",\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,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,iBAAiB;AAAA,QACjB,SAAS;AAAA,QACT,YAAY,aAAa,MAAM;AAAA,MACjC;AAAA,MACA,UAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,OAAO;AAAA,cACL,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,OAAO;AAAA,cACP,YAAY;AAAA,cACZ,UAAU;AAAA,YACZ;AAAA,YACA,UAAU,MAAM;AAAA,UAClB;AAAA,QACF;AAAA,QACA,GAAI,kBACA;AAAA,UACE;AAAA,YACE,MAAM;AAAA,YACN,OAAO;AAAA,cACL,OAAO;AAAA,gBACL,UAAU;AAAA,gBACV,OAAO,GAAG,IAAI;AAAA,gBACd,WAAW;AAAA,gBACX,YAAY;AAAA,gBACZ,UAAU;AAAA,cACZ;AAAA,cACA,UAAU;AAAA,YACZ;AAAA,UACF;AAAA,QACF,IACA,CAAC;AAAA,QACL;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,WAAW;AAAA,cACX,YAAY;AAAA,YACd;AAAA,YACA,UAAU,OAAO,QAAQ;AAAA,UAC3B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/generate/og-templates/dark.tsx"],"sourcesContent":["import type { OgImagesConfig, VazaEntry } from \"../../types.js\";\n\n/**\n * Dark template: white text on dark background with accent border.\n * Returns a Satori-compatible virtual DOM element (plain object).\n */\nexport function darkTemplate(\n entry: VazaEntry,\n config: OgImagesConfig,\n): unknown {\n const bg = config.colors?.bg ?? \"#0a0a0a\";\n const text = config.colors?.text ?? \"#fafafa\";\n const accent = config.colors?.accent ?? \"#00d4ff\";\n\n const descriptionText = entry.description\n ? entry.description.slice(0, 140) +\n (entry.description.length > 140 ? \"...\" : \"\")\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: \"center\",\n backgroundColor: bg,\n padding: 80,\n borderLeft: `8px solid ${accent}`,\n },\n children: [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 52,\n fontWeight: 700,\n color: text,\n lineHeight: 1.3,\n maxWidth: 950,\n },\n children: entry.title,\n },\n },\n ...(descriptionText\n ? [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 24,\n color: `${text}aa`,\n marginTop: 24,\n lineHeight: 1.5,\n maxWidth: 850,\n },\n children: descriptionText,\n },\n },\n ]\n : []),\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 20,\n color: accent,\n marginTop: 40,\n fontWeight: 600,\n },\n children: config.logo ?? \"\",\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,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,iBAAiB;AAAA,QACjB,SAAS;AAAA,QACT,YAAY,aAAa,MAAM;AAAA,MACjC;AAAA,MACA,UAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,OAAO;AAAA,cACL,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,OAAO;AAAA,cACP,YAAY;AAAA,cACZ,UAAU;AAAA,YACZ;AAAA,YACA,UAAU,MAAM;AAAA,UAClB;AAAA,QACF;AAAA,QACA,GAAI,kBACA;AAAA,UACE;AAAA,YACE,MAAM;AAAA,YACN,OAAO;AAAA,cACL,OAAO;AAAA,gBACL,UAAU;AAAA,gBACV,OAAO,GAAG,IAAI;AAAA,gBACd,WAAW;AAAA,gBACX,YAAY;AAAA,gBACZ,UAAU;AAAA,cACZ;AAAA,cACA,UAAU;AAAA,YACZ;AAAA,UACF;AAAA,QACF,IACA,CAAC;AAAA,QACL;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,WAAW;AAAA,cACX,YAAY;AAAA,YACd;AAAA,YACA,UAAU,OAAO,QAAQ;AAAA,UAC3B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
package/dist/index.cjs CHANGED
@@ -15,21 +15,18 @@
15
15
 
16
16
 
17
17
 
18
- var _chunkYV2ZYIADcjs = require('./chunk-YV2ZYIAD.cjs');
19
18
 
20
19
 
21
-
22
- var _chunkWOCXEBQCcjs = require('./chunk-WOCXEBQC.cjs');
23
- require('./chunk-JEQ2X3Z6.cjs');
20
+ var _chunkH3D7F4TAcjs = require('./chunk-H3D7F4TA.cjs');
24
21
 
25
22
  // src/config.ts
26
23
  var DEFAULT_CONFIG = {
27
24
  sitemap: {
28
25
  enabled: true,
29
- changeFrequency: _chunkYV2ZYIADcjs.DEFAULT_SITEMAP_CHANGE_FREQ,
30
- priority: _chunkYV2ZYIADcjs.DEFAULT_SITEMAP_PRIORITY
26
+ changeFrequency: _chunkH3D7F4TAcjs.DEFAULT_SITEMAP_CHANGE_FREQ,
27
+ priority: _chunkH3D7F4TAcjs.DEFAULT_SITEMAP_PRIORITY
31
28
  },
32
- rss: { enabled: true, path: "/rss.xml", limit: _chunkYV2ZYIADcjs.DEFAULT_RSS_LIMIT },
29
+ rss: { enabled: true, path: "/rss.xml", limit: _chunkH3D7F4TAcjs.DEFAULT_RSS_LIMIT },
33
30
  jsonLd: { enabled: true },
34
31
  ogImages: {
35
32
  enabled: true,
@@ -41,13 +38,13 @@ var DEFAULT_CONFIG = {
41
38
  redirects: { enabled: true, strategy: "both" },
42
39
  integrity: {
43
40
  brokenLinks: "warn",
44
- metaTitleLength: { max: _chunkYV2ZYIADcjs.DEFAULT_META_TITLE_MAX, severity: "warn" },
45
- metaDescriptionLength: { max: _chunkYV2ZYIADcjs.DEFAULT_META_DESC_MAX, severity: "warn" },
41
+ metaTitleLength: { max: _chunkH3D7F4TAcjs.DEFAULT_META_TITLE_MAX, severity: "warn" },
42
+ metaDescriptionLength: { max: _chunkH3D7F4TAcjs.DEFAULT_META_DESC_MAX, severity: "warn" },
46
43
  altText: "warn",
47
44
  duplicateSlugs: "error",
48
45
  duplicateContent: "warn",
49
46
  orphanPages: "warn",
50
- freshness: { maxAge: _chunkYV2ZYIADcjs.DEFAULT_FRESHNESS_MAX_AGE, severity: "warn" }
47
+ freshness: { maxAge: _chunkH3D7F4TAcjs.DEFAULT_FRESHNESS_MAX_AGE, severity: "warn" }
51
48
  }
52
49
  };
53
50
  function defineConfig(config) {
@@ -109,5 +106,5 @@ function generateCanonical(entry, siteUrl, basePath) {
109
106
 
110
107
 
111
108
 
112
- exports.checkIntegrity = _chunkYV2ZYIADcjs.checkIntegrity; exports.defineConfig = defineConfig; exports.detectRedirects = _chunkYV2ZYIADcjs.detectRedirects; exports.generateBreadcrumbs = _chunkYV2ZYIADcjs.generateBreadcrumbs; exports.generateCanonical = generateCanonical; exports.generateJsonLd = _chunkYV2ZYIADcjs.generateJsonLd; exports.generateOgImages = _chunkYV2ZYIADcjs.generateOgImages; exports.generateRss = _chunkYV2ZYIADcjs.generateRss; exports.generateSitemap = _chunkYV2ZYIADcjs.generateSitemap; exports.generateTaxonomy = _chunkYV2ZYIADcjs.generateTaxonomy; exports.logger = _chunkWOCXEBQCcjs.logger; exports.normalize = _chunkYV2ZYIADcjs.normalize; exports.processCollections = _chunkYV2ZYIADcjs.processCollections; exports.setLogLevel = _chunkWOCXEBQCcjs.setLogLevel;
109
+ exports.checkIntegrity = _chunkH3D7F4TAcjs.checkIntegrity; exports.defineConfig = defineConfig; exports.detectRedirects = _chunkH3D7F4TAcjs.detectRedirects; exports.generateBreadcrumbs = _chunkH3D7F4TAcjs.generateBreadcrumbs; exports.generateCanonical = generateCanonical; exports.generateJsonLd = _chunkH3D7F4TAcjs.generateJsonLd; exports.generateOgImages = _chunkH3D7F4TAcjs.generateOgImages; exports.generateRss = _chunkH3D7F4TAcjs.generateRss; exports.generateSitemap = _chunkH3D7F4TAcjs.generateSitemap; exports.generateTaxonomy = _chunkH3D7F4TAcjs.generateTaxonomy; exports.logger = _chunkH3D7F4TAcjs.logger; exports.normalize = _chunkH3D7F4TAcjs.normalize; exports.processCollections = _chunkH3D7F4TAcjs.processCollections; exports.setLogLevel = _chunkH3D7F4TAcjs.setLogLevel;
113
110
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/mehdi/vaza-content/dist/index.cjs","../src/config.ts","../src/generate/canonical.ts"],"names":[],"mappings":"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","file":"/Users/mehdi/vaza-content/dist/index.cjs","sourcesContent":[null,"import type { VazaConfig } from \"./types.js\";\nimport {\n DEFAULT_META_TITLE_MAX,\n DEFAULT_META_DESC_MAX,\n DEFAULT_FRESHNESS_MAX_AGE,\n DEFAULT_RSS_LIMIT,\n DEFAULT_SITEMAP_PRIORITY,\n DEFAULT_SITEMAP_CHANGE_FREQ,\n} from \"./constants.js\";\n\nconst DEFAULT_CONFIG: Partial<VazaConfig> = {\n sitemap: {\n enabled: true,\n changeFrequency: DEFAULT_SITEMAP_CHANGE_FREQ,\n priority: DEFAULT_SITEMAP_PRIORITY,\n },\n rss: { enabled: true, path: \"/rss.xml\", limit: DEFAULT_RSS_LIMIT },\n jsonLd: { enabled: true },\n ogImages: {\n enabled: true,\n template: \"blog\",\n outputDir: \"./public/og\",\n colors: { bg: \"#000000\", text: \"#ffffff\", accent: \"#3b82f6\" },\n },\n taxonomy: { enabled: true, tags: true, categories: true },\n redirects: { enabled: true, strategy: \"both\" },\n integrity: {\n brokenLinks: \"warn\",\n metaTitleLength: { max: DEFAULT_META_TITLE_MAX, severity: \"warn\" },\n metaDescriptionLength: { max: DEFAULT_META_DESC_MAX, severity: \"warn\" },\n altText: \"warn\",\n duplicateSlugs: \"error\",\n duplicateContent: \"warn\",\n orphanPages: \"warn\",\n freshness: { maxAge: DEFAULT_FRESHNESS_MAX_AGE, severity: \"warn\" },\n },\n};\n\nexport function defineConfig(config: VazaConfig): VazaConfig {\n return {\n ...config,\n sitemap: { ...DEFAULT_CONFIG.sitemap, ...config.sitemap },\n rss: { ...DEFAULT_CONFIG.rss, ...config.rss },\n jsonLd: { ...DEFAULT_CONFIG.jsonLd, ...config.jsonLd },\n ogImages: {\n ...DEFAULT_CONFIG.ogImages,\n ...config.ogImages,\n colors: {\n ...DEFAULT_CONFIG.ogImages?.colors,\n ...config.ogImages?.colors,\n },\n },\n taxonomy: { ...DEFAULT_CONFIG.taxonomy, ...config.taxonomy },\n redirects: { ...DEFAULT_CONFIG.redirects, ...config.redirects },\n integrity: {\n ...DEFAULT_CONFIG.integrity,\n ...config.integrity,\n metaTitleLength: {\n ...DEFAULT_CONFIG.integrity?.metaTitleLength,\n ...config.integrity?.metaTitleLength,\n },\n metaDescriptionLength: {\n ...DEFAULT_CONFIG.integrity?.metaDescriptionLength,\n ...config.integrity?.metaDescriptionLength,\n },\n freshness: {\n ...DEFAULT_CONFIG.integrity?.freshness,\n ...config.integrity?.freshness,\n },\n },\n };\n}\n","import type { VazaEntry } from \"../types.js\";\n\n/**\n * Generate canonical URL for an entry.\n */\nexport function generateCanonical(\n entry: VazaEntry,\n siteUrl: string,\n basePath: string,\n): string {\n // If the entry already has an explicit canonical, use it\n if (entry.canonical) {\n return entry.canonical;\n }\n\n const url = siteUrl.replace(/\\/$/, \"\");\n const path = basePath.replace(/\\/$/, \"\");\n return `${url}${path}/${entry.slug}`;\n}\n"]}
1
+ {"version":3,"sources":["/Users/mehdi/vaza-content/dist/index.cjs","../src/config.ts","../src/generate/canonical.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACA;ACXA,IAAM,eAAA,EAAsC;AAAA,EAC1C,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,IAAA;AAAA,IACT,eAAA,EAAiB,6CAAA;AAAA,IACjB,QAAA,EAAU;AAAA,EACZ,CAAA;AAAA,EACA,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,KAAA,EAAO,oCAAkB,CAAA;AAAA,EACjE,MAAA,EAAQ,EAAE,OAAA,EAAS,KAAK,CAAA;AAAA,EACxB,QAAA,EAAU;AAAA,IACR,OAAA,EAAS,IAAA;AAAA,IACT,QAAA,EAAU,MAAA;AAAA,IACV,SAAA,EAAW,aAAA;AAAA,IACX,MAAA,EAAQ,EAAE,EAAA,EAAI,SAAA,EAAW,IAAA,EAAM,SAAA,EAAW,MAAA,EAAQ,UAAU;AAAA,EAC9D,CAAA;AAAA,EACA,QAAA,EAAU,EAAE,OAAA,EAAS,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,KAAK,CAAA;AAAA,EACxD,SAAA,EAAW,EAAE,OAAA,EAAS,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA;AAAA,EAC7C,SAAA,EAAW;AAAA,IACT,WAAA,EAAa,MAAA;AAAA,IACb,eAAA,EAAiB,EAAE,GAAA,EAAK,wCAAA,EAAwB,QAAA,EAAU,OAAO,CAAA;AAAA,IACjE,qBAAA,EAAuB,EAAE,GAAA,EAAK,uCAAA,EAAuB,QAAA,EAAU,OAAO,CAAA;AAAA,IACtE,OAAA,EAAS,MAAA;AAAA,IACT,cAAA,EAAgB,OAAA;AAAA,IAChB,gBAAA,EAAkB,MAAA;AAAA,IAClB,WAAA,EAAa,MAAA;AAAA,IACb,SAAA,EAAW,EAAE,MAAA,EAAQ,2CAAA,EAA2B,QAAA,EAAU,OAAO;AAAA,EACnE;AACF,CAAA;AAEO,SAAS,YAAA,CAAa,MAAA,EAAgC;AAC3D,EAAA,OAAO;AAAA,IACL,GAAG,MAAA;AAAA,IACH,OAAA,EAAS,EAAE,GAAG,cAAA,CAAe,OAAA,EAAS,GAAG,MAAA,CAAO,QAAQ,CAAA;AAAA,IACxD,GAAA,EAAK,EAAE,GAAG,cAAA,CAAe,GAAA,EAAK,GAAG,MAAA,CAAO,IAAI,CAAA;AAAA,IAC5C,MAAA,EAAQ,EAAE,GAAG,cAAA,CAAe,MAAA,EAAQ,GAAG,MAAA,CAAO,OAAO,CAAA;AAAA,IACrD,QAAA,EAAU;AAAA,MACR,GAAG,cAAA,CAAe,QAAA;AAAA,MAClB,GAAG,MAAA,CAAO,QAAA;AAAA,MACV,MAAA,EAAQ;AAAA,QACN,mBAAG,cAAA,mBAAe,QAAA,6BAAU,QAAA;AAAA,QAC5B,mBAAG,MAAA,qBAAO,QAAA,6BAAU;AAAA,MACtB;AAAA,IACF,CAAA;AAAA,IACA,QAAA,EAAU,EAAE,GAAG,cAAA,CAAe,QAAA,EAAU,GAAG,MAAA,CAAO,SAAS,CAAA;AAAA,IAC3D,SAAA,EAAW,EAAE,GAAG,cAAA,CAAe,SAAA,EAAW,GAAG,MAAA,CAAO,UAAU,CAAA;AAAA,IAC9D,SAAA,EAAW;AAAA,MACT,GAAG,cAAA,CAAe,SAAA;AAAA,MAClB,GAAG,MAAA,CAAO,SAAA;AAAA,MACV,eAAA,EAAiB;AAAA,QACf,mBAAG,cAAA,qBAAe,SAAA,6BAAW,iBAAA;AAAA,QAC7B,mBAAG,MAAA,qBAAO,SAAA,6BAAW;AAAA,MACvB,CAAA;AAAA,MACA,qBAAA,EAAuB;AAAA,QACrB,mBAAG,cAAA,qBAAe,SAAA,+BAAW,uBAAA;AAAA,QAC7B,mBAAG,MAAA,uBAAO,SAAA,+BAAW;AAAA,MACvB,CAAA;AAAA,MACA,SAAA,EAAW;AAAA,QACT,mBAAG,cAAA,uBAAe,SAAA,+BAAW,WAAA;AAAA,QAC7B,mBAAG,MAAA,uBAAO,SAAA,+BAAW;AAAA,MACvB;AAAA,IACF;AAAA,EACF,CAAA;AACF;ADYA;AACA;AE/EO,SAAS,iBAAA,CACd,KAAA,EACA,OAAA,EACA,QAAA,EACQ;AAER,EAAA,GAAA,CAAI,KAAA,CAAM,SAAA,EAAW;AACnB,IAAA,OAAO,KAAA,CAAM,SAAA;AAAA,EACf;AAEA,EAAA,MAAM,IAAA,EAAM,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACrC,EAAA,MAAM,KAAA,EAAO,QAAA,CAAS,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACvC,EAAA,OAAO,CAAA,EAAA;AACT;AF2EU;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/Users/mehdi/vaza-content/dist/index.cjs","sourcesContent":[null,"import {\n DEFAULT_FRESHNESS_MAX_AGE,\n DEFAULT_META_DESC_MAX,\n DEFAULT_META_TITLE_MAX,\n DEFAULT_RSS_LIMIT,\n DEFAULT_SITEMAP_CHANGE_FREQ,\n DEFAULT_SITEMAP_PRIORITY,\n} from \"./constants.js\";\nimport type { VazaConfig } from \"./types.js\";\n\nconst DEFAULT_CONFIG: Partial<VazaConfig> = {\n sitemap: {\n enabled: true,\n changeFrequency: DEFAULT_SITEMAP_CHANGE_FREQ,\n priority: DEFAULT_SITEMAP_PRIORITY,\n },\n rss: { enabled: true, path: \"/rss.xml\", limit: DEFAULT_RSS_LIMIT },\n jsonLd: { enabled: true },\n ogImages: {\n enabled: true,\n template: \"blog\",\n outputDir: \"./public/og\",\n colors: { bg: \"#000000\", text: \"#ffffff\", accent: \"#3b82f6\" },\n },\n taxonomy: { enabled: true, tags: true, categories: true },\n redirects: { enabled: true, strategy: \"both\" },\n integrity: {\n brokenLinks: \"warn\",\n metaTitleLength: { max: DEFAULT_META_TITLE_MAX, severity: \"warn\" },\n metaDescriptionLength: { max: DEFAULT_META_DESC_MAX, severity: \"warn\" },\n altText: \"warn\",\n duplicateSlugs: \"error\",\n duplicateContent: \"warn\",\n orphanPages: \"warn\",\n freshness: { maxAge: DEFAULT_FRESHNESS_MAX_AGE, severity: \"warn\" },\n },\n};\n\nexport function defineConfig(config: VazaConfig): VazaConfig {\n return {\n ...config,\n sitemap: { ...DEFAULT_CONFIG.sitemap, ...config.sitemap },\n rss: { ...DEFAULT_CONFIG.rss, ...config.rss },\n jsonLd: { ...DEFAULT_CONFIG.jsonLd, ...config.jsonLd },\n ogImages: {\n ...DEFAULT_CONFIG.ogImages,\n ...config.ogImages,\n colors: {\n ...DEFAULT_CONFIG.ogImages?.colors,\n ...config.ogImages?.colors,\n },\n },\n taxonomy: { ...DEFAULT_CONFIG.taxonomy, ...config.taxonomy },\n redirects: { ...DEFAULT_CONFIG.redirects, ...config.redirects },\n integrity: {\n ...DEFAULT_CONFIG.integrity,\n ...config.integrity,\n metaTitleLength: {\n ...DEFAULT_CONFIG.integrity?.metaTitleLength,\n ...config.integrity?.metaTitleLength,\n },\n metaDescriptionLength: {\n ...DEFAULT_CONFIG.integrity?.metaDescriptionLength,\n ...config.integrity?.metaDescriptionLength,\n },\n freshness: {\n ...DEFAULT_CONFIG.integrity?.freshness,\n ...config.integrity?.freshness,\n },\n },\n };\n}\n","import type { VazaEntry } from \"../types.js\";\n\n/**\n * Generate canonical URL for an entry.\n */\nexport function generateCanonical(\n entry: VazaEntry,\n siteUrl: string,\n basePath: string,\n): string {\n // If the entry already has an explicit canonical, use it\n if (entry.canonical) {\n return entry.canonical;\n }\n\n const url = siteUrl.replace(/\\/$/, \"\");\n const path = basePath.replace(/\\/$/, \"\");\n return `${url}${path}/${entry.slug}`;\n}\n"]}
package/dist/index.d.cts CHANGED
@@ -1,25 +1,23 @@
1
- import { V as VazaConfig, a as VazaOutput, P as PartialVazaEntry, b as VazaEntry, S as SitemapEntry, R as RssItem, T as TaxonomyData, c as RedirectEntry, I as IntegrityReport } from './types-CgaidvaB.cjs';
2
- export { C as ChangeFrequency, d as CollectionConfig, F as FaqItem, e as IntegrityConfig, f as IntegrityIssue, J as JsonLdConfig, g as JsonLdGenerator, O as OgImagesConfig, h as PriceInfo, i as RedirectsConfig, j as RssConfig, k as Severity, l as SiteConfig, m as SitemapConfig, n as StepItem, o as TaxonomyConfig, p as TocItem, q as VazaAuthor, r as VazaImage } from './types-CgaidvaB.cjs';
1
+ import { V as VazaConfig, b as VazaEntry, R as RedirectEntry, c as RssItem, S as SitemapEntry, T as TaxonomyData, I as IntegrityReport, P as PartialVazaEntry, a as VazaOutput } from './types-DAfWIHiD.cjs';
2
+ export { C as ChangeFrequency, d as CollectionConfig, F as FaqItem, e as IntegrityConfig, f as IntegrityIssue, J as JsonLdConfig, g as JsonLdGenerator, O as OgImagesConfig, h as PriceInfo, i as RedirectsConfig, j as RssConfig, k as Severity, l as SiteConfig, m as SitemapConfig, n as StepItem, o as TaxonomyConfig, p as TocItem, q as VazaAuthor, r as VazaImage } from './types-DAfWIHiD.cjs';
3
3
 
4
4
  declare function defineConfig(config: VazaConfig): VazaConfig;
5
5
 
6
- declare function processCollections(config: VazaConfig): Promise<VazaOutput>;
7
-
8
- /**
9
- * Normalize a partial entry into a full VazaEntry.
10
- * For each field, keeps the existing value if present, otherwise generates it.
11
- */
12
- declare function normalize(partial: PartialVazaEntry): Promise<VazaEntry>;
13
-
6
+ interface BreadcrumbItem {
7
+ name: string;
8
+ url: string;
9
+ }
14
10
  /**
15
- * Generate sitemap entries from VazaEntry[].
11
+ * Generate breadcrumb items from a slug.
12
+ * Splits by "/" and creates array of {name, url} pairs.
13
+ * Includes Home as first item.
16
14
  */
17
- declare function generateSitemap(entries: VazaEntry[], config: VazaConfig): SitemapEntry[];
15
+ declare function generateBreadcrumbs(slug: string, title: string, siteUrl: string, basePath: string): BreadcrumbItem[];
18
16
 
19
17
  /**
20
- * Generate RSS items from entries, sorted by publishDate desc, limited by config.
18
+ * Generate canonical URL for an entry.
21
19
  */
22
- declare function generateRss(entries: VazaEntry[], config: VazaConfig): RssItem[];
20
+ declare function generateCanonical(entry: VazaEntry, siteUrl: string, basePath: string): string;
23
21
 
24
22
  /**
25
23
  * Auto-detect which schemas apply to each entry and generate them.
@@ -35,31 +33,25 @@ declare function generateJsonLd(entries: VazaEntry[], config: VazaConfig): Recor
35
33
  declare function generateOgImages(entries: VazaEntry[], config: VazaConfig): Promise<Record<string, string>>;
36
34
 
37
35
  /**
38
- * Build tag and category maps from entries.
36
+ * Detect slug changes that need redirects.
37
+ * Tries git diff first, falls back to reading/writing a slugs.json manifest.
39
38
  */
40
- declare function generateTaxonomy(entries: VazaEntry[], _config: VazaConfig): TaxonomyData;
39
+ declare function detectRedirects(entries: VazaEntry[], config: VazaConfig): Promise<RedirectEntry[]>;
41
40
 
42
41
  /**
43
- * Generate canonical URL for an entry.
42
+ * Generate RSS items from entries, sorted by publishDate desc, limited by config.
44
43
  */
45
- declare function generateCanonical(entry: VazaEntry, siteUrl: string, basePath: string): string;
44
+ declare function generateRss(entries: VazaEntry[], config: VazaConfig): RssItem[];
46
45
 
47
- interface BreadcrumbItem {
48
- name: string;
49
- url: string;
50
- }
51
46
  /**
52
- * Generate breadcrumb items from a slug.
53
- * Splits by "/" and creates array of {name, url} pairs.
54
- * Includes Home as first item.
47
+ * Generate sitemap entries from VazaEntry[].
55
48
  */
56
- declare function generateBreadcrumbs(slug: string, title: string, siteUrl: string, basePath: string): BreadcrumbItem[];
49
+ declare function generateSitemap(entries: VazaEntry[], config: VazaConfig): SitemapEntry[];
57
50
 
58
51
  /**
59
- * Detect slug changes that need redirects.
60
- * Tries git diff first, falls back to reading/writing a slugs.json manifest.
52
+ * Build tag and category maps from entries.
61
53
  */
62
- declare function detectRedirects(entries: VazaEntry[], config: VazaConfig): Promise<RedirectEntry[]>;
54
+ declare function generateTaxonomy(entries: VazaEntry[], _config: VazaConfig): TaxonomyData;
63
55
 
64
56
  /**
65
57
  * Run all integrity checks based on config severity settings.
@@ -76,4 +68,12 @@ declare const logger: {
76
68
  debug(...args: unknown[]): void;
77
69
  };
78
70
 
71
+ /**
72
+ * Normalize a partial entry into a full VazaEntry.
73
+ * For each field, keeps the existing value if present, otherwise generates it.
74
+ */
75
+ declare function normalize(partial: PartialVazaEntry): Promise<VazaEntry>;
76
+
77
+ declare function processCollections(config: VazaConfig): Promise<VazaOutput>;
78
+
79
79
  export { IntegrityReport, type LogLevel, PartialVazaEntry, RedirectEntry, RssItem, SitemapEntry, TaxonomyData, VazaConfig, VazaEntry, VazaOutput, checkIntegrity, defineConfig, detectRedirects, generateBreadcrumbs, generateCanonical, generateJsonLd, generateOgImages, generateRss, generateSitemap, generateTaxonomy, logger, normalize, processCollections, setLogLevel };
package/dist/index.d.ts CHANGED
@@ -1,25 +1,23 @@
1
- import { V as VazaConfig, a as VazaOutput, P as PartialVazaEntry, b as VazaEntry, S as SitemapEntry, R as RssItem, T as TaxonomyData, c as RedirectEntry, I as IntegrityReport } from './types-CgaidvaB.js';
2
- export { C as ChangeFrequency, d as CollectionConfig, F as FaqItem, e as IntegrityConfig, f as IntegrityIssue, J as JsonLdConfig, g as JsonLdGenerator, O as OgImagesConfig, h as PriceInfo, i as RedirectsConfig, j as RssConfig, k as Severity, l as SiteConfig, m as SitemapConfig, n as StepItem, o as TaxonomyConfig, p as TocItem, q as VazaAuthor, r as VazaImage } from './types-CgaidvaB.js';
1
+ import { V as VazaConfig, b as VazaEntry, R as RedirectEntry, c as RssItem, S as SitemapEntry, T as TaxonomyData, I as IntegrityReport, P as PartialVazaEntry, a as VazaOutput } from './types-DAfWIHiD.js';
2
+ export { C as ChangeFrequency, d as CollectionConfig, F as FaqItem, e as IntegrityConfig, f as IntegrityIssue, J as JsonLdConfig, g as JsonLdGenerator, O as OgImagesConfig, h as PriceInfo, i as RedirectsConfig, j as RssConfig, k as Severity, l as SiteConfig, m as SitemapConfig, n as StepItem, o as TaxonomyConfig, p as TocItem, q as VazaAuthor, r as VazaImage } from './types-DAfWIHiD.js';
3
3
 
4
4
  declare function defineConfig(config: VazaConfig): VazaConfig;
5
5
 
6
- declare function processCollections(config: VazaConfig): Promise<VazaOutput>;
7
-
8
- /**
9
- * Normalize a partial entry into a full VazaEntry.
10
- * For each field, keeps the existing value if present, otherwise generates it.
11
- */
12
- declare function normalize(partial: PartialVazaEntry): Promise<VazaEntry>;
13
-
6
+ interface BreadcrumbItem {
7
+ name: string;
8
+ url: string;
9
+ }
14
10
  /**
15
- * Generate sitemap entries from VazaEntry[].
11
+ * Generate breadcrumb items from a slug.
12
+ * Splits by "/" and creates array of {name, url} pairs.
13
+ * Includes Home as first item.
16
14
  */
17
- declare function generateSitemap(entries: VazaEntry[], config: VazaConfig): SitemapEntry[];
15
+ declare function generateBreadcrumbs(slug: string, title: string, siteUrl: string, basePath: string): BreadcrumbItem[];
18
16
 
19
17
  /**
20
- * Generate RSS items from entries, sorted by publishDate desc, limited by config.
18
+ * Generate canonical URL for an entry.
21
19
  */
22
- declare function generateRss(entries: VazaEntry[], config: VazaConfig): RssItem[];
20
+ declare function generateCanonical(entry: VazaEntry, siteUrl: string, basePath: string): string;
23
21
 
24
22
  /**
25
23
  * Auto-detect which schemas apply to each entry and generate them.
@@ -35,31 +33,25 @@ declare function generateJsonLd(entries: VazaEntry[], config: VazaConfig): Recor
35
33
  declare function generateOgImages(entries: VazaEntry[], config: VazaConfig): Promise<Record<string, string>>;
36
34
 
37
35
  /**
38
- * Build tag and category maps from entries.
36
+ * Detect slug changes that need redirects.
37
+ * Tries git diff first, falls back to reading/writing a slugs.json manifest.
39
38
  */
40
- declare function generateTaxonomy(entries: VazaEntry[], _config: VazaConfig): TaxonomyData;
39
+ declare function detectRedirects(entries: VazaEntry[], config: VazaConfig): Promise<RedirectEntry[]>;
41
40
 
42
41
  /**
43
- * Generate canonical URL for an entry.
42
+ * Generate RSS items from entries, sorted by publishDate desc, limited by config.
44
43
  */
45
- declare function generateCanonical(entry: VazaEntry, siteUrl: string, basePath: string): string;
44
+ declare function generateRss(entries: VazaEntry[], config: VazaConfig): RssItem[];
46
45
 
47
- interface BreadcrumbItem {
48
- name: string;
49
- url: string;
50
- }
51
46
  /**
52
- * Generate breadcrumb items from a slug.
53
- * Splits by "/" and creates array of {name, url} pairs.
54
- * Includes Home as first item.
47
+ * Generate sitemap entries from VazaEntry[].
55
48
  */
56
- declare function generateBreadcrumbs(slug: string, title: string, siteUrl: string, basePath: string): BreadcrumbItem[];
49
+ declare function generateSitemap(entries: VazaEntry[], config: VazaConfig): SitemapEntry[];
57
50
 
58
51
  /**
59
- * Detect slug changes that need redirects.
60
- * Tries git diff first, falls back to reading/writing a slugs.json manifest.
52
+ * Build tag and category maps from entries.
61
53
  */
62
- declare function detectRedirects(entries: VazaEntry[], config: VazaConfig): Promise<RedirectEntry[]>;
54
+ declare function generateTaxonomy(entries: VazaEntry[], _config: VazaConfig): TaxonomyData;
63
55
 
64
56
  /**
65
57
  * Run all integrity checks based on config severity settings.
@@ -76,4 +68,12 @@ declare const logger: {
76
68
  debug(...args: unknown[]): void;
77
69
  };
78
70
 
71
+ /**
72
+ * Normalize a partial entry into a full VazaEntry.
73
+ * For each field, keeps the existing value if present, otherwise generates it.
74
+ */
75
+ declare function normalize(partial: PartialVazaEntry): Promise<VazaEntry>;
76
+
77
+ declare function processCollections(config: VazaConfig): Promise<VazaOutput>;
78
+
79
79
  export { IntegrityReport, type LogLevel, PartialVazaEntry, RedirectEntry, RssItem, SitemapEntry, TaxonomyData, VazaConfig, VazaEntry, VazaOutput, checkIntegrity, defineConfig, detectRedirects, generateBreadcrumbs, generateCanonical, generateJsonLd, generateOgImages, generateRss, generateSitemap, generateTaxonomy, logger, normalize, processCollections, setLogLevel };
package/dist/index.js CHANGED
@@ -13,14 +13,11 @@ import {
13
13
  generateRss,
14
14
  generateSitemap,
15
15
  generateTaxonomy,
16
- normalize,
17
- processCollections
18
- } from "./chunk-FALSVGPG.js";
19
- import {
20
16
  logger,
17
+ normalize,
18
+ processCollections,
21
19
  setLogLevel
22
- } from "./chunk-PCRQY47G.js";
23
- import "./chunk-DGUM43GV.js";
20
+ } from "./chunk-OKXBDPYF.js";
24
21
 
25
22
  // src/config.ts
26
23
  var DEFAULT_CONFIG = {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config.ts","../src/generate/canonical.ts"],"sourcesContent":["import type { VazaConfig } from \"./types.js\";\nimport {\n DEFAULT_META_TITLE_MAX,\n DEFAULT_META_DESC_MAX,\n DEFAULT_FRESHNESS_MAX_AGE,\n DEFAULT_RSS_LIMIT,\n DEFAULT_SITEMAP_PRIORITY,\n DEFAULT_SITEMAP_CHANGE_FREQ,\n} from \"./constants.js\";\n\nconst DEFAULT_CONFIG: Partial<VazaConfig> = {\n sitemap: {\n enabled: true,\n changeFrequency: DEFAULT_SITEMAP_CHANGE_FREQ,\n priority: DEFAULT_SITEMAP_PRIORITY,\n },\n rss: { enabled: true, path: \"/rss.xml\", limit: DEFAULT_RSS_LIMIT },\n jsonLd: { enabled: true },\n ogImages: {\n enabled: true,\n template: \"blog\",\n outputDir: \"./public/og\",\n colors: { bg: \"#000000\", text: \"#ffffff\", accent: \"#3b82f6\" },\n },\n taxonomy: { enabled: true, tags: true, categories: true },\n redirects: { enabled: true, strategy: \"both\" },\n integrity: {\n brokenLinks: \"warn\",\n metaTitleLength: { max: DEFAULT_META_TITLE_MAX, severity: \"warn\" },\n metaDescriptionLength: { max: DEFAULT_META_DESC_MAX, severity: \"warn\" },\n altText: \"warn\",\n duplicateSlugs: \"error\",\n duplicateContent: \"warn\",\n orphanPages: \"warn\",\n freshness: { maxAge: DEFAULT_FRESHNESS_MAX_AGE, severity: \"warn\" },\n },\n};\n\nexport function defineConfig(config: VazaConfig): VazaConfig {\n return {\n ...config,\n sitemap: { ...DEFAULT_CONFIG.sitemap, ...config.sitemap },\n rss: { ...DEFAULT_CONFIG.rss, ...config.rss },\n jsonLd: { ...DEFAULT_CONFIG.jsonLd, ...config.jsonLd },\n ogImages: {\n ...DEFAULT_CONFIG.ogImages,\n ...config.ogImages,\n colors: {\n ...DEFAULT_CONFIG.ogImages?.colors,\n ...config.ogImages?.colors,\n },\n },\n taxonomy: { ...DEFAULT_CONFIG.taxonomy, ...config.taxonomy },\n redirects: { ...DEFAULT_CONFIG.redirects, ...config.redirects },\n integrity: {\n ...DEFAULT_CONFIG.integrity,\n ...config.integrity,\n metaTitleLength: {\n ...DEFAULT_CONFIG.integrity?.metaTitleLength,\n ...config.integrity?.metaTitleLength,\n },\n metaDescriptionLength: {\n ...DEFAULT_CONFIG.integrity?.metaDescriptionLength,\n ...config.integrity?.metaDescriptionLength,\n },\n freshness: {\n ...DEFAULT_CONFIG.integrity?.freshness,\n ...config.integrity?.freshness,\n },\n },\n };\n}\n","import type { VazaEntry } from \"../types.js\";\n\n/**\n * Generate canonical URL for an entry.\n */\nexport function generateCanonical(\n entry: VazaEntry,\n siteUrl: string,\n basePath: string,\n): string {\n // If the entry already has an explicit canonical, use it\n if (entry.canonical) {\n return entry.canonical;\n }\n\n const url = siteUrl.replace(/\\/$/, \"\");\n const path = basePath.replace(/\\/$/, \"\");\n return `${url}${path}/${entry.slug}`;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAM,iBAAsC;AAAA,EAC1C,SAAS;AAAA,IACP,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,UAAU;AAAA,EACZ;AAAA,EACA,KAAK,EAAE,SAAS,MAAM,MAAM,YAAY,OAAO,kBAAkB;AAAA,EACjE,QAAQ,EAAE,SAAS,KAAK;AAAA,EACxB,UAAU;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,IACV,WAAW;AAAA,IACX,QAAQ,EAAE,IAAI,WAAW,MAAM,WAAW,QAAQ,UAAU;AAAA,EAC9D;AAAA,EACA,UAAU,EAAE,SAAS,MAAM,MAAM,MAAM,YAAY,KAAK;AAAA,EACxD,WAAW,EAAE,SAAS,MAAM,UAAU,OAAO;AAAA,EAC7C,WAAW;AAAA,IACT,aAAa;AAAA,IACb,iBAAiB,EAAE,KAAK,wBAAwB,UAAU,OAAO;AAAA,IACjE,uBAAuB,EAAE,KAAK,uBAAuB,UAAU,OAAO;AAAA,IACtE,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB,aAAa;AAAA,IACb,WAAW,EAAE,QAAQ,2BAA2B,UAAU,OAAO;AAAA,EACnE;AACF;AAEO,SAAS,aAAa,QAAgC;AAC3D,SAAO;AAAA,IACL,GAAG;AAAA,IACH,SAAS,EAAE,GAAG,eAAe,SAAS,GAAG,OAAO,QAAQ;AAAA,IACxD,KAAK,EAAE,GAAG,eAAe,KAAK,GAAG,OAAO,IAAI;AAAA,IAC5C,QAAQ,EAAE,GAAG,eAAe,QAAQ,GAAG,OAAO,OAAO;AAAA,IACrD,UAAU;AAAA,MACR,GAAG,eAAe;AAAA,MAClB,GAAG,OAAO;AAAA,MACV,QAAQ;AAAA,QACN,GAAG,eAAe,UAAU;AAAA,QAC5B,GAAG,OAAO,UAAU;AAAA,MACtB;AAAA,IACF;AAAA,IACA,UAAU,EAAE,GAAG,eAAe,UAAU,GAAG,OAAO,SAAS;AAAA,IAC3D,WAAW,EAAE,GAAG,eAAe,WAAW,GAAG,OAAO,UAAU;AAAA,IAC9D,WAAW;AAAA,MACT,GAAG,eAAe;AAAA,MAClB,GAAG,OAAO;AAAA,MACV,iBAAiB;AAAA,QACf,GAAG,eAAe,WAAW;AAAA,QAC7B,GAAG,OAAO,WAAW;AAAA,MACvB;AAAA,MACA,uBAAuB;AAAA,QACrB,GAAG,eAAe,WAAW;AAAA,QAC7B,GAAG,OAAO,WAAW;AAAA,MACvB;AAAA,MACA,WAAW;AAAA,QACT,GAAG,eAAe,WAAW;AAAA,QAC7B,GAAG,OAAO,WAAW;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AACF;;;AClEO,SAAS,kBACd,OACA,SACA,UACQ;AAER,MAAI,MAAM,WAAW;AACnB,WAAO,MAAM;AAAA,EACf;AAEA,QAAM,MAAM,QAAQ,QAAQ,OAAO,EAAE;AACrC,QAAM,OAAO,SAAS,QAAQ,OAAO,EAAE;AACvC,SAAO,GAAG,GAAG,GAAG,IAAI,IAAI,MAAM,IAAI;AACpC;","names":[]}
1
+ {"version":3,"sources":["../src/config.ts","../src/generate/canonical.ts"],"sourcesContent":["import {\n DEFAULT_FRESHNESS_MAX_AGE,\n DEFAULT_META_DESC_MAX,\n DEFAULT_META_TITLE_MAX,\n DEFAULT_RSS_LIMIT,\n DEFAULT_SITEMAP_CHANGE_FREQ,\n DEFAULT_SITEMAP_PRIORITY,\n} from \"./constants.js\";\nimport type { VazaConfig } from \"./types.js\";\n\nconst DEFAULT_CONFIG: Partial<VazaConfig> = {\n sitemap: {\n enabled: true,\n changeFrequency: DEFAULT_SITEMAP_CHANGE_FREQ,\n priority: DEFAULT_SITEMAP_PRIORITY,\n },\n rss: { enabled: true, path: \"/rss.xml\", limit: DEFAULT_RSS_LIMIT },\n jsonLd: { enabled: true },\n ogImages: {\n enabled: true,\n template: \"blog\",\n outputDir: \"./public/og\",\n colors: { bg: \"#000000\", text: \"#ffffff\", accent: \"#3b82f6\" },\n },\n taxonomy: { enabled: true, tags: true, categories: true },\n redirects: { enabled: true, strategy: \"both\" },\n integrity: {\n brokenLinks: \"warn\",\n metaTitleLength: { max: DEFAULT_META_TITLE_MAX, severity: \"warn\" },\n metaDescriptionLength: { max: DEFAULT_META_DESC_MAX, severity: \"warn\" },\n altText: \"warn\",\n duplicateSlugs: \"error\",\n duplicateContent: \"warn\",\n orphanPages: \"warn\",\n freshness: { maxAge: DEFAULT_FRESHNESS_MAX_AGE, severity: \"warn\" },\n },\n};\n\nexport function defineConfig(config: VazaConfig): VazaConfig {\n return {\n ...config,\n sitemap: { ...DEFAULT_CONFIG.sitemap, ...config.sitemap },\n rss: { ...DEFAULT_CONFIG.rss, ...config.rss },\n jsonLd: { ...DEFAULT_CONFIG.jsonLd, ...config.jsonLd },\n ogImages: {\n ...DEFAULT_CONFIG.ogImages,\n ...config.ogImages,\n colors: {\n ...DEFAULT_CONFIG.ogImages?.colors,\n ...config.ogImages?.colors,\n },\n },\n taxonomy: { ...DEFAULT_CONFIG.taxonomy, ...config.taxonomy },\n redirects: { ...DEFAULT_CONFIG.redirects, ...config.redirects },\n integrity: {\n ...DEFAULT_CONFIG.integrity,\n ...config.integrity,\n metaTitleLength: {\n ...DEFAULT_CONFIG.integrity?.metaTitleLength,\n ...config.integrity?.metaTitleLength,\n },\n metaDescriptionLength: {\n ...DEFAULT_CONFIG.integrity?.metaDescriptionLength,\n ...config.integrity?.metaDescriptionLength,\n },\n freshness: {\n ...DEFAULT_CONFIG.integrity?.freshness,\n ...config.integrity?.freshness,\n },\n },\n };\n}\n","import type { VazaEntry } from \"../types.js\";\n\n/**\n * Generate canonical URL for an entry.\n */\nexport function generateCanonical(\n entry: VazaEntry,\n siteUrl: string,\n basePath: string,\n): string {\n // If the entry already has an explicit canonical, use it\n if (entry.canonical) {\n return entry.canonical;\n }\n\n const url = siteUrl.replace(/\\/$/, \"\");\n const path = basePath.replace(/\\/$/, \"\");\n return `${url}${path}/${entry.slug}`;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAUA,IAAM,iBAAsC;AAAA,EAC1C,SAAS;AAAA,IACP,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,UAAU;AAAA,EACZ;AAAA,EACA,KAAK,EAAE,SAAS,MAAM,MAAM,YAAY,OAAO,kBAAkB;AAAA,EACjE,QAAQ,EAAE,SAAS,KAAK;AAAA,EACxB,UAAU;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,IACV,WAAW;AAAA,IACX,QAAQ,EAAE,IAAI,WAAW,MAAM,WAAW,QAAQ,UAAU;AAAA,EAC9D;AAAA,EACA,UAAU,EAAE,SAAS,MAAM,MAAM,MAAM,YAAY,KAAK;AAAA,EACxD,WAAW,EAAE,SAAS,MAAM,UAAU,OAAO;AAAA,EAC7C,WAAW;AAAA,IACT,aAAa;AAAA,IACb,iBAAiB,EAAE,KAAK,wBAAwB,UAAU,OAAO;AAAA,IACjE,uBAAuB,EAAE,KAAK,uBAAuB,UAAU,OAAO;AAAA,IACtE,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB,aAAa;AAAA,IACb,WAAW,EAAE,QAAQ,2BAA2B,UAAU,OAAO;AAAA,EACnE;AACF;AAEO,SAAS,aAAa,QAAgC;AAC3D,SAAO;AAAA,IACL,GAAG;AAAA,IACH,SAAS,EAAE,GAAG,eAAe,SAAS,GAAG,OAAO,QAAQ;AAAA,IACxD,KAAK,EAAE,GAAG,eAAe,KAAK,GAAG,OAAO,IAAI;AAAA,IAC5C,QAAQ,EAAE,GAAG,eAAe,QAAQ,GAAG,OAAO,OAAO;AAAA,IACrD,UAAU;AAAA,MACR,GAAG,eAAe;AAAA,MAClB,GAAG,OAAO;AAAA,MACV,QAAQ;AAAA,QACN,GAAG,eAAe,UAAU;AAAA,QAC5B,GAAG,OAAO,UAAU;AAAA,MACtB;AAAA,IACF;AAAA,IACA,UAAU,EAAE,GAAG,eAAe,UAAU,GAAG,OAAO,SAAS;AAAA,IAC3D,WAAW,EAAE,GAAG,eAAe,WAAW,GAAG,OAAO,UAAU;AAAA,IAC9D,WAAW;AAAA,MACT,GAAG,eAAe;AAAA,MAClB,GAAG,OAAO;AAAA,MACV,iBAAiB;AAAA,QACf,GAAG,eAAe,WAAW;AAAA,QAC7B,GAAG,OAAO,WAAW;AAAA,MACvB;AAAA,MACA,uBAAuB;AAAA,QACrB,GAAG,eAAe,WAAW;AAAA,QAC7B,GAAG,OAAO,WAAW;AAAA,MACvB;AAAA,MACA,WAAW;AAAA,QACT,GAAG,eAAe,WAAW;AAAA,QAC7B,GAAG,OAAO,WAAW;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AACF;;;AClEO,SAAS,kBACd,OACA,SACA,UACQ;AAER,MAAI,MAAM,WAAW;AACnB,WAAO,MAAM;AAAA,EACf;AAEA,QAAM,MAAM,QAAQ,QAAQ,OAAO,EAAE;AACrC,QAAM,OAAO,SAAS,QAAQ,OAAO,EAAE;AACvC,SAAO,GAAG,GAAG,GAAG,IAAI,IAAI,MAAM,IAAI;AACpC;","names":[]}
@@ -1,5 +1,3 @@
1
- import "./chunk-DGUM43GV.js";
2
-
3
1
  // src/generate/og-templates/minimal.tsx
4
2
  function minimalTemplate(entry, config) {
5
3
  const bg = config.colors?.bg ?? "#ffffff";
@@ -51,4 +49,4 @@ function minimalTemplate(entry, config) {
51
49
  export {
52
50
  minimalTemplate
53
51
  };
54
- //# sourceMappingURL=minimal-D2PRAVG6.js.map
52
+ //# sourceMappingURL=minimal-CGXF737F.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/generate/og-templates/minimal.tsx"],"sourcesContent":["import type { VazaEntry, OgImagesConfig } from \"../../types.js\";\n\n/**\n * Minimal template: centered title + site name on solid background.\n * Returns a Satori-compatible virtual DOM element (plain object).\n */\nexport function minimalTemplate(\n entry: VazaEntry,\n config: OgImagesConfig,\n): unknown {\n const bg = config.colors?.bg ?? \"#ffffff\";\n const text = config.colors?.text ?? \"#111111\";\n const accent = config.colors?.accent ?? \"#0066ff\";\n\n return {\n type: \"div\",\n props: {\n style: {\n width: 1200,\n height: 630,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: bg,\n padding: 80,\n },\n children: [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 56,\n fontWeight: 700,\n color: text,\n textAlign: \"center\",\n lineHeight: 1.2,\n maxWidth: 900,\n },\n children: entry.title,\n },\n },\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 24,\n color: accent,\n marginTop: 32,\n },\n children: config.logo ?? \"\",\n },\n },\n ],\n },\n };\n}\n"],"mappings":";;;AAMO,SAAS,gBACd,OACA,QACS;AACT,QAAM,KAAK,OAAO,QAAQ,MAAM;AAChC,QAAM,OAAO,OAAO,QAAQ,QAAQ;AACpC,QAAM,SAAS,OAAO,QAAQ,UAAU;AAExC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,QACjB,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,OAAO;AAAA,cACL,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,OAAO;AAAA,cACP,WAAW;AAAA,cACX,YAAY;AAAA,cACZ,UAAU;AAAA,YACZ;AAAA,YACA,UAAU,MAAM;AAAA,UAClB;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,UAAU,OAAO,QAAQ;AAAA,UAC3B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/generate/og-templates/minimal.tsx"],"sourcesContent":["import type { OgImagesConfig, VazaEntry } from \"../../types.js\";\n\n/**\n * Minimal template: centered title + site name on solid background.\n * Returns a Satori-compatible virtual DOM element (plain object).\n */\nexport function minimalTemplate(\n entry: VazaEntry,\n config: OgImagesConfig,\n): unknown {\n const bg = config.colors?.bg ?? \"#ffffff\";\n const text = config.colors?.text ?? \"#111111\";\n const accent = config.colors?.accent ?? \"#0066ff\";\n\n return {\n type: \"div\",\n props: {\n style: {\n width: 1200,\n height: 630,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: bg,\n padding: 80,\n },\n children: [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 56,\n fontWeight: 700,\n color: text,\n textAlign: \"center\",\n lineHeight: 1.2,\n maxWidth: 900,\n },\n children: entry.title,\n },\n },\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 24,\n color: accent,\n marginTop: 32,\n },\n children: config.logo ?? \"\",\n },\n },\n ],\n },\n };\n}\n"],"mappings":";AAMO,SAAS,gBACd,OACA,QACS;AACT,QAAM,KAAK,OAAO,QAAQ,MAAM;AAChC,QAAM,OAAO,OAAO,QAAQ,QAAQ;AACpC,QAAM,SAAS,OAAO,QAAQ,UAAU;AAExC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,QACjB,SAAS;AAAA,MACX;AAAA,MACA,UAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,OAAO;AAAA,cACL,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,OAAO;AAAA,cACP,WAAW;AAAA,cACX,YAAY;AAAA,cACZ,UAAU;AAAA,YACZ;AAAA,YACA,UAAU,MAAM;AAAA,UAClB;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,UAAU,OAAO,QAAQ;AAAA,UAC3B;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; }require('./chunk-JEQ2X3Z6.cjs');
2
-
3
- // src/generate/og-templates/minimal.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/minimal.tsx
4
2
  function minimalTemplate(entry, config) {
5
3
  const bg = _nullishCoalesce(_optionalChain([config, 'access', _ => _.colors, 'optionalAccess', _2 => _2.bg]), () => ( "#ffffff"));
6
4
  const text = _nullishCoalesce(_optionalChain([config, 'access', _3 => _3.colors, 'optionalAccess', _4 => _4.text]), () => ( "#111111"));
@@ -51,4 +49,4 @@ function minimalTemplate(entry, config) {
51
49
 
52
50
 
53
51
  exports.minimalTemplate = minimalTemplate;
54
- //# sourceMappingURL=minimal-RHOK4XEZ.cjs.map
52
+ //# sourceMappingURL=minimal-XTTHXE3T.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/mehdi/vaza-content/dist/minimal-XTTHXE3T.cjs","../src/generate/og-templates/minimal.tsx"],"names":[],"mappings":"AAAA;ACMO,SAAS,eAAA,CACd,KAAA,EACA,MAAA,EACS;AACT,EAAA,MAAM,GAAA,mCAAK,MAAA,mBAAO,MAAA,6BAAQ,IAAA,UAAM,WAAA;AAChC,EAAA,MAAM,KAAA,mCAAO,MAAA,qBAAO,MAAA,6BAAQ,MAAA,UAAQ,WAAA;AACpC,EAAA,MAAM,OAAA,mCAAS,MAAA,qBAAO,MAAA,6BAAQ,QAAA,UAAU,WAAA;AAExC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,KAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,IAAA;AAAA,QACP,MAAA,EAAQ,GAAA;AAAA,QACR,OAAA,EAAS,MAAA;AAAA,QACT,aAAA,EAAe,QAAA;AAAA,QACf,UAAA,EAAY,QAAA;AAAA,QACZ,cAAA,EAAgB,QAAA;AAAA,QAChB,eAAA,EAAiB,EAAA;AAAA,QACjB,OAAA,EAAS;AAAA,MACX,CAAA;AAAA,MACA,QAAA,EAAU;AAAA,QACR;AAAA,UACE,IAAA,EAAM,KAAA;AAAA,UACN,KAAA,EAAO;AAAA,YACL,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,EAAA;AAAA,cACV,UAAA,EAAY,GAAA;AAAA,cACZ,KAAA,EAAO,IAAA;AAAA,cACP,SAAA,EAAW,QAAA;AAAA,cACX,UAAA,EAAY,GAAA;AAAA,cACZ,QAAA,EAAU;AAAA,YACZ,CAAA;AAAA,YACA,QAAA,EAAU,KAAA,CAAM;AAAA,UAClB;AAAA,QACF,CAAA;AAAA,QACA;AAAA,UACE,IAAA,EAAM,KAAA;AAAA,UACN,KAAA,EAAO;AAAA,YACL,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,EAAA;AAAA,cACV,KAAA,EAAO,MAAA;AAAA,cACP,SAAA,EAAW;AAAA,YACb,CAAA;AAAA,YACA,QAAA,mBAAU,MAAA,CAAO,IAAA,UAAQ;AAAA,UAC3B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAA;AACF;ADRA;AACE;AACF,0CAAC","file":"/Users/mehdi/vaza-content/dist/minimal-XTTHXE3T.cjs","sourcesContent":[null,"import type { OgImagesConfig, VazaEntry } from \"../../types.js\";\n\n/**\n * Minimal template: centered title + site name on solid background.\n * Returns a Satori-compatible virtual DOM element (plain object).\n */\nexport function minimalTemplate(\n entry: VazaEntry,\n config: OgImagesConfig,\n): unknown {\n const bg = config.colors?.bg ?? \"#ffffff\";\n const text = config.colors?.text ?? \"#111111\";\n const accent = config.colors?.accent ?? \"#0066ff\";\n\n return {\n type: \"div\",\n props: {\n style: {\n width: 1200,\n height: 630,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: bg,\n padding: 80,\n },\n children: [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 56,\n fontWeight: 700,\n color: text,\n textAlign: \"center\",\n lineHeight: 1.2,\n maxWidth: 900,\n },\n children: entry.title,\n },\n },\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 24,\n color: accent,\n marginTop: 32,\n },\n children: config.logo ?? \"\",\n },\n },\n ],\n },\n };\n}\n"]}
@@ -0,0 +1,7 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkH3D7F4TAcjs = require('./chunk-H3D7F4TA.cjs');
4
+
5
+
6
+ exports.processCollections = _chunkH3D7F4TAcjs.processCollections;
7
+ //# sourceMappingURL=process-VXDWM664.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/mehdi/vaza-content/dist/process-VXDWM664.cjs"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,kEAAC","file":"/Users/mehdi/vaza-content/dist/process-VXDWM664.cjs"}
@@ -0,0 +1,7 @@
1
+ import {
2
+ processCollections
3
+ } from "./chunk-OKXBDPYF.js";
4
+ export {
5
+ processCollections
6
+ };
7
+ //# sourceMappingURL=process-ZQV5M2TB.js.map
@@ -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; }require('./chunk-JEQ2X3Z6.cjs');
2
-
3
- // src/generate/og-templates/product.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/product.tsx
4
2
  function productTemplate(entry, config) {
5
3
  const bg = _nullishCoalesce(_optionalChain([config, 'access', _ => _.colors, 'optionalAccess', _2 => _2.bg]), () => ( "#f8f9fa"));
6
4
  const text = _nullishCoalesce(_optionalChain([config, 'access', _3 => _3.colors, 'optionalAccess', _4 => _4.text]), () => ( "#212529"));
@@ -94,4 +92,4 @@ function productTemplate(entry, config) {
94
92
 
95
93
 
96
94
  exports.productTemplate = productTemplate;
97
- //# sourceMappingURL=product-OT3XYMWD.cjs.map
95
+ //# sourceMappingURL=product-BY3GVQGV.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/mehdi/vaza-content/dist/product-BY3GVQGV.cjs","../src/generate/og-templates/product.tsx"],"names":[],"mappings":"AAAA;ACMO,SAAS,eAAA,CACd,KAAA,EACA,MAAA,EACS;AACT,EAAA,MAAM,GAAA,mCAAK,MAAA,mBAAO,MAAA,6BAAQ,IAAA,UAAM,WAAA;AAChC,EAAA,MAAM,KAAA,mCAAO,MAAA,qBAAO,MAAA,6BAAQ,MAAA,UAAQ,WAAA;AACpC,EAAA,MAAM,OAAA,mCAAS,MAAA,qBAAO,MAAA,6BAAQ,QAAA,UAAU,WAAA;AAExC,EAAA,MAAM,SAAA,EAAW,KAAA,CAAM,MAAA,EACnB,CAAA,EAAA;AAG0B,EAAA;AAKvB,EAAA;AACC,IAAA;AACC,IAAA;AACE,MAAA;AACE,QAAA;AACC,QAAA;AACC,QAAA;AACQ,QAAA;AACnB,MAAA;AACU,MAAA;AACR,QAAA;AACQ,UAAA;AACC,UAAA;AACE,YAAA;AACI,cAAA;AACM,cAAA;AACC,cAAA;AACP,cAAA;AACH,cAAA;AACR,YAAA;AACU,YAAA;AACR,cAAA;AACQ,gBAAA;AACC,gBAAA;AACE,kBAAA;AACK,oBAAA;AACE,oBAAA;AACL,oBAAA;AACK,oBAAA;AACF,oBAAA;AACZ,kBAAA;AACgB,kBAAA;AAClB,gBAAA;AACF,cAAA;AAEI,cAAA;AACE,gBAAA;AACQ,kBAAA;AACC,kBAAA;AACE,oBAAA;AACK,sBAAA;AACE,sBAAA;AACL,sBAAA;AACI,sBAAA;AACb,oBAAA;AACU,oBAAA;AACZ,kBAAA;AACF,gBAAA;AAED,cAAA;AACD,cAAA;AAEE,gBAAA;AACQ,kBAAA;AACC,kBAAA;AACE,oBAAA;AACK,sBAAA;AACA,sBAAA;AACC,sBAAA;AACC,sBAAA;AACF,sBAAA;AACZ,oBAAA;AACU,oBAAA;AACZ,kBAAA;AACF,gBAAA;AAED,cAAA;AACP,YAAA;AACF,UAAA;AACF,QAAA;AACA,QAAA;AACQ,UAAA;AACC,UAAA;AACE,YAAA;AACE,cAAA;AACC,cAAA;AACY,cAAA;AACX,cAAA;AACG,cAAA;AACI,cAAA;AAClB,YAAA;AACW,YAAA;AACb,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACF;ADnBkC;AACA;AACA","file":"/Users/mehdi/vaza-content/dist/product-BY3GVQGV.cjs","sourcesContent":[null,"import type { OgImagesConfig, VazaEntry } from \"../../types.js\";\n\n/**\n * Product template: title + price + image placeholder on branded background.\n * Returns a Satori-compatible virtual DOM element (plain object).\n */\nexport function productTemplate(\n entry: VazaEntry,\n config: OgImagesConfig,\n): unknown {\n const bg = config.colors?.bg ?? \"#f8f9fa\";\n const text = config.colors?.text ?? \"#212529\";\n const accent = config.colors?.accent ?? \"#0d6efd\";\n\n const priceStr = entry.price\n ? `${entry.price.currency} ${entry.price.amount.toFixed(2)}`\n : \"\";\n\n const descriptionText = entry.description\n ? entry.description.slice(0, 100) +\n (entry.description.length > 100 ? \"...\" : \"\")\n : null;\n\n return {\n type: \"div\",\n props: {\n style: {\n width: 1200,\n height: 630,\n display: \"flex\",\n backgroundColor: bg,\n },\n children: [\n {\n type: \"div\",\n props: {\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n padding: 80,\n flex: 1,\n },\n children: [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 44,\n fontWeight: 700,\n color: text,\n lineHeight: 1.2,\n maxWidth: 500,\n },\n children: entry.title,\n },\n },\n ...(priceStr\n ? [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 36,\n fontWeight: 700,\n color: accent,\n marginTop: 24,\n },\n children: priceStr,\n },\n },\n ]\n : []),\n ...(descriptionText\n ? [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 20,\n color: `${text}99`,\n marginTop: 16,\n lineHeight: 1.4,\n maxWidth: 480,\n },\n children: descriptionText,\n },\n },\n ]\n : []),\n ],\n },\n },\n {\n type: \"div\",\n props: {\n style: {\n width: 400,\n height: 630,\n backgroundColor: `${accent}22`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n children: [],\n },\n },\n ],\n },\n };\n}\n"]}
@@ -1,5 +1,3 @@
1
- import "./chunk-DGUM43GV.js";
2
-
3
1
  // src/generate/og-templates/product.tsx
4
2
  function productTemplate(entry, config) {
5
3
  const bg = config.colors?.bg ?? "#f8f9fa";
@@ -94,4 +92,4 @@ function productTemplate(entry, config) {
94
92
  export {
95
93
  productTemplate
96
94
  };
97
- //# sourceMappingURL=product-NCUW3U72.js.map
95
+ //# sourceMappingURL=product-UQXUI5YL.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/generate/og-templates/product.tsx"],"sourcesContent":["import type { VazaEntry, OgImagesConfig } from \"../../types.js\";\n\n/**\n * Product template: title + price + image placeholder on branded background.\n * Returns a Satori-compatible virtual DOM element (plain object).\n */\nexport function productTemplate(\n entry: VazaEntry,\n config: OgImagesConfig,\n): unknown {\n const bg = config.colors?.bg ?? \"#f8f9fa\";\n const text = config.colors?.text ?? \"#212529\";\n const accent = config.colors?.accent ?? \"#0d6efd\";\n\n const priceStr = entry.price\n ? `${entry.price.currency} ${entry.price.amount.toFixed(2)}`\n : \"\";\n\n const descriptionText = entry.description\n ? entry.description.slice(0, 100) +\n (entry.description.length > 100 ? \"...\" : \"\")\n : null;\n\n return {\n type: \"div\",\n props: {\n style: {\n width: 1200,\n height: 630,\n display: \"flex\",\n backgroundColor: bg,\n },\n children: [\n {\n type: \"div\",\n props: {\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n padding: 80,\n flex: 1,\n },\n children: [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 44,\n fontWeight: 700,\n color: text,\n lineHeight: 1.2,\n maxWidth: 500,\n },\n children: entry.title,\n },\n },\n ...(priceStr\n ? [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 36,\n fontWeight: 700,\n color: accent,\n marginTop: 24,\n },\n children: priceStr,\n },\n },\n ]\n : []),\n ...(descriptionText\n ? [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 20,\n color: `${text}99`,\n marginTop: 16,\n lineHeight: 1.4,\n maxWidth: 480,\n },\n children: descriptionText,\n },\n },\n ]\n : []),\n ],\n },\n },\n {\n type: \"div\",\n props: {\n style: {\n width: 400,\n height: 630,\n backgroundColor: `${accent}22`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n children: [],\n },\n },\n ],\n },\n };\n}\n"],"mappings":";;;AAMO,SAAS,gBACd,OACA,QACS;AACT,QAAM,KAAK,OAAO,QAAQ,MAAM;AAChC,QAAM,OAAO,OAAO,QAAQ,QAAQ;AACpC,QAAM,SAAS,OAAO,QAAQ,UAAU;AAExC,QAAM,WAAW,MAAM,QACnB,GAAG,MAAM,MAAM,QAAQ,IAAI,MAAM,MAAM,OAAO,QAAQ,CAAC,CAAC,KACxD;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,iBAAiB;AAAA,MACnB;AAAA,MACA,UAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,OAAO;AAAA,cACL,SAAS;AAAA,cACT,eAAe;AAAA,cACf,gBAAgB;AAAA,cAChB,SAAS;AAAA,cACT,MAAM;AAAA,YACR;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,WACA;AAAA,gBACE;AAAA,kBACE,MAAM;AAAA,kBACN,OAAO;AAAA,oBACL,OAAO;AAAA,sBACL,UAAU;AAAA,sBACV,YAAY;AAAA,sBACZ,OAAO;AAAA,sBACP,WAAW;AAAA,oBACb;AAAA,oBACA,UAAU;AAAA,kBACZ;AAAA,gBACF;AAAA,cACF,IACA,CAAC;AAAA,cACL,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,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,iBAAiB,GAAG,MAAM;AAAA,cAC1B,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,YAClB;AAAA,YACA,UAAU,CAAC;AAAA,UACb;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/generate/og-templates/product.tsx"],"sourcesContent":["import type { OgImagesConfig, VazaEntry } from \"../../types.js\";\n\n/**\n * Product template: title + price + image placeholder on branded background.\n * Returns a Satori-compatible virtual DOM element (plain object).\n */\nexport function productTemplate(\n entry: VazaEntry,\n config: OgImagesConfig,\n): unknown {\n const bg = config.colors?.bg ?? \"#f8f9fa\";\n const text = config.colors?.text ?? \"#212529\";\n const accent = config.colors?.accent ?? \"#0d6efd\";\n\n const priceStr = entry.price\n ? `${entry.price.currency} ${entry.price.amount.toFixed(2)}`\n : \"\";\n\n const descriptionText = entry.description\n ? entry.description.slice(0, 100) +\n (entry.description.length > 100 ? \"...\" : \"\")\n : null;\n\n return {\n type: \"div\",\n props: {\n style: {\n width: 1200,\n height: 630,\n display: \"flex\",\n backgroundColor: bg,\n },\n children: [\n {\n type: \"div\",\n props: {\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n padding: 80,\n flex: 1,\n },\n children: [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 44,\n fontWeight: 700,\n color: text,\n lineHeight: 1.2,\n maxWidth: 500,\n },\n children: entry.title,\n },\n },\n ...(priceStr\n ? [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 36,\n fontWeight: 700,\n color: accent,\n marginTop: 24,\n },\n children: priceStr,\n },\n },\n ]\n : []),\n ...(descriptionText\n ? [\n {\n type: \"div\",\n props: {\n style: {\n fontSize: 20,\n color: `${text}99`,\n marginTop: 16,\n lineHeight: 1.4,\n maxWidth: 480,\n },\n children: descriptionText,\n },\n },\n ]\n : []),\n ],\n },\n },\n {\n type: \"div\",\n props: {\n style: {\n width: 400,\n height: 630,\n backgroundColor: `${accent}22`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n children: [],\n },\n },\n ],\n },\n };\n}\n"],"mappings":";AAMO,SAAS,gBACd,OACA,QACS;AACT,QAAM,KAAK,OAAO,QAAQ,MAAM;AAChC,QAAM,OAAO,OAAO,QAAQ,QAAQ;AACpC,QAAM,SAAS,OAAO,QAAQ,UAAU;AAExC,QAAM,WAAW,MAAM,QACnB,GAAG,MAAM,MAAM,QAAQ,IAAI,MAAM,MAAM,OAAO,QAAQ,CAAC,CAAC,KACxD;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,iBAAiB;AAAA,MACnB;AAAA,MACA,UAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,OAAO;AAAA,cACL,SAAS;AAAA,cACT,eAAe;AAAA,cACf,gBAAgB;AAAA,cAChB,SAAS;AAAA,cACT,MAAM;AAAA,YACR;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,WACA;AAAA,gBACE;AAAA,kBACE,MAAM;AAAA,kBACN,OAAO;AAAA,oBACL,OAAO;AAAA,sBACL,UAAU;AAAA,sBACV,YAAY;AAAA,sBACZ,OAAO;AAAA,sBACP,WAAW;AAAA,oBACb;AAAA,oBACA,UAAU;AAAA,kBACZ;AAAA,gBACF;AAAA,cACF,IACA,CAAC;AAAA,cACL,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,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,iBAAiB,GAAG,MAAM;AAAA,cAC1B,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,YAClB;AAAA,YACA,UAAU,CAAC;AAAA,UACb;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -254,4 +254,4 @@ interface VazaOutput {
254
254
  integrity: IntegrityReport;
255
255
  }
256
256
 
257
- export type { ChangeFrequency as C, FaqItem as F, IntegrityReport as I, JsonLdConfig as J, OgImagesConfig as O, PartialVazaEntry as P, RssItem as R, SitemapEntry as S, TaxonomyData as T, VazaConfig as V, VazaOutput as a, VazaEntry as b, RedirectEntry as c, CollectionConfig as d, IntegrityConfig as e, IntegrityIssue as f, JsonLdGenerator as g, PriceInfo as h, RedirectsConfig as i, RssConfig as j, Severity as k, SiteConfig as l, SitemapConfig as m, StepItem as n, TaxonomyConfig as o, TocItem as p, VazaAuthor as q, VazaImage as r };
257
+ export type { ChangeFrequency as C, FaqItem as F, IntegrityReport as I, JsonLdConfig as J, OgImagesConfig as O, PartialVazaEntry as P, RedirectEntry as R, SitemapEntry as S, TaxonomyData as T, VazaConfig as V, VazaOutput as a, VazaEntry as b, RssItem as c, CollectionConfig as d, IntegrityConfig as e, IntegrityIssue as f, JsonLdGenerator as g, PriceInfo as h, RedirectsConfig as i, RssConfig as j, Severity as k, SiteConfig as l, SitemapConfig as m, StepItem as n, TaxonomyConfig as o, TocItem as p, VazaAuthor as q, VazaImage as r };
@@ -254,4 +254,4 @@ interface VazaOutput {
254
254
  integrity: IntegrityReport;
255
255
  }
256
256
 
257
- export type { ChangeFrequency as C, FaqItem as F, IntegrityReport as I, JsonLdConfig as J, OgImagesConfig as O, PartialVazaEntry as P, RssItem as R, SitemapEntry as S, TaxonomyData as T, VazaConfig as V, VazaOutput as a, VazaEntry as b, RedirectEntry as c, CollectionConfig as d, IntegrityConfig as e, IntegrityIssue as f, JsonLdGenerator as g, PriceInfo as h, RedirectsConfig as i, RssConfig as j, Severity as k, SiteConfig as l, SitemapConfig as m, StepItem as n, TaxonomyConfig as o, TocItem as p, VazaAuthor as q, VazaImage as r };
257
+ export type { ChangeFrequency as C, FaqItem as F, IntegrityReport as I, JsonLdConfig as J, OgImagesConfig as O, PartialVazaEntry as P, RedirectEntry as R, SitemapEntry as S, TaxonomyData as T, VazaConfig as V, VazaOutput as a, VazaEntry as b, RssItem as c, CollectionConfig as d, IntegrityConfig as e, IntegrityIssue as f, JsonLdGenerator as g, PriceInfo as h, RedirectsConfig as i, RssConfig as j, Severity as k, SiteConfig as l, SitemapConfig as m, StepItem as n, TaxonomyConfig as o, TocItem as p, VazaAuthor as q, VazaImage as r };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vaza-content",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Universal SEO layer for content collections. Auto-generates sitemap, RSS, JSON-LD, OG images, and integrity checks for Next.js, SvelteKit, Astro, and Nuxt.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -40,12 +40,13 @@
40
40
  "dist"
41
41
  ],
42
42
  "scripts": {
43
- "build": "tsup",
43
+ "build": "tsup && chmod +x dist/cli/index.js",
44
44
  "dev": "tsup --watch",
45
45
  "test": "vitest run",
46
46
  "test:watch": "vitest",
47
- "lint": "tsc --noEmit",
48
- "prepublishOnly": "npm run build"
47
+ "lint": "tsc --noEmit && biome check src/",
48
+ "format": "biome check --write src/",
49
+ "prepublishOnly": "npm run lint && npm run test && npm run build"
49
50
  },
50
51
  "keywords": [
51
52
  "seo",
@@ -71,6 +72,7 @@
71
72
  "zod": "^3.23.0"
72
73
  },
73
74
  "devDependencies": {
75
+ "@biomejs/biome": "^2.4.8",
74
76
  "@types/node": "^22.0.0",
75
77
  "tsup": "^8.0.0",
76
78
  "typescript": "^5.5.0",
@@ -1 +0,0 @@
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"]}
@@ -1,11 +0,0 @@
1
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
2
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
3
- }) : x)(function(x) {
4
- if (typeof require !== "undefined") return require.apply(this, arguments);
5
- throw Error('Dynamic require of "' + x + '" is not supported');
6
- });
7
-
8
- export {
9
- __require
10
- };
11
- //# sourceMappingURL=chunk-DGUM43GV.js.map