vaza-content 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/astro/index.cjs +9 -15
- package/dist/adapters/astro/index.cjs.map +1 -1
- package/dist/adapters/astro/index.d.cts +4 -3
- package/dist/adapters/astro/index.d.ts +4 -3
- package/dist/adapters/astro/index.js +6 -12
- package/dist/adapters/astro/index.js.map +1 -1
- package/dist/adapters/next/index.cjs +11 -12
- package/dist/adapters/next/index.cjs.map +1 -1
- package/dist/adapters/next/index.d.cts +5 -3
- package/dist/adapters/next/index.d.ts +5 -3
- package/dist/adapters/next/index.js +8 -9
- package/dist/adapters/next/index.js.map +1 -1
- package/dist/adapters/nuxt/index.cjs +22 -22
- package/dist/adapters/nuxt/index.cjs.map +1 -1
- package/dist/adapters/nuxt/index.d.cts +11 -7
- package/dist/adapters/nuxt/index.d.ts +11 -7
- package/dist/adapters/nuxt/index.js +13 -13
- package/dist/adapters/nuxt/index.js.map +1 -1
- package/dist/adapters/sveltekit/index.cjs +9 -15
- package/dist/adapters/sveltekit/index.cjs.map +1 -1
- package/dist/adapters/sveltekit/index.d.cts +3 -2
- package/dist/adapters/sveltekit/index.d.ts +3 -2
- package/dist/adapters/sveltekit/index.js +5 -11
- package/dist/adapters/sveltekit/index.js.map +1 -1
- package/dist/{blog-7EEJJG26.js → blog-L7HRY3QC.js} +2 -4
- package/dist/{blog-7EEJJG26.js.map → blog-L7HRY3QC.js.map} +1 -1
- package/dist/{blog-Z3R5GOMP.cjs → blog-SEXXJJSV.cjs} +3 -5
- package/dist/blog-SEXXJJSV.cjs.map +1 -0
- package/dist/{chunk-YV2ZYIAD.cjs → chunk-H3D7F4TA.cjs} +544 -503
- package/dist/chunk-H3D7F4TA.cjs.map +1 -0
- package/dist/{chunk-FALSVGPG.js → chunk-OKXBDPYF.js} +511 -470
- package/dist/chunk-OKXBDPYF.js.map +1 -0
- package/dist/cli/index.cjs +30 -24
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.js +29 -23
- package/dist/cli/index.js.map +1 -1
- package/dist/{dark-EX2GRAYK.cjs → dark-66ZWYLT7.cjs} +2 -4
- package/dist/dark-66ZWYLT7.cjs.map +1 -0
- package/dist/{dark-6E36AKLN.js → dark-SZOURAMM.js} +1 -3
- package/dist/{dark-6E36AKLN.js.map → dark-SZOURAMM.js.map} +1 -1
- package/dist/index.cjs +8 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +29 -29
- package/dist/index.d.ts +29 -29
- package/dist/index.js +3 -6
- package/dist/index.js.map +1 -1
- package/dist/{minimal-D2PRAVG6.js → minimal-CGXF737F.js} +1 -3
- package/dist/{minimal-D2PRAVG6.js.map → minimal-CGXF737F.js.map} +1 -1
- package/dist/{minimal-RHOK4XEZ.cjs → minimal-XTTHXE3T.cjs} +2 -4
- package/dist/minimal-XTTHXE3T.cjs.map +1 -0
- package/dist/process-VXDWM664.cjs +7 -0
- package/dist/process-VXDWM664.cjs.map +1 -0
- package/dist/process-ZQV5M2TB.js +7 -0
- package/dist/{product-OT3XYMWD.cjs → product-BY3GVQGV.cjs} +2 -4
- package/dist/product-BY3GVQGV.cjs.map +1 -0
- package/dist/{product-NCUW3U72.js → product-UQXUI5YL.js} +1 -3
- package/dist/{product-NCUW3U72.js.map → product-UQXUI5YL.js.map} +1 -1
- package/dist/{types-CgaidvaB.d.cts → types-DAfWIHiD.d.cts} +1 -1
- package/dist/{types-CgaidvaB.d.ts → types-DAfWIHiD.d.ts} +1 -1
- package/package.json +6 -4
- package/dist/blog-Z3R5GOMP.cjs.map +0 -1
- package/dist/chunk-DGUM43GV.js +0 -11
- package/dist/chunk-FALSVGPG.js.map +0 -1
- package/dist/chunk-JEQ2X3Z6.cjs +0 -11
- package/dist/chunk-JEQ2X3Z6.cjs.map +0 -1
- package/dist/chunk-PCRQY47G.js +0 -35
- package/dist/chunk-PCRQY47G.js.map +0 -1
- package/dist/chunk-WOCXEBQC.cjs +0 -35
- package/dist/chunk-WOCXEBQC.cjs.map +0 -1
- package/dist/chunk-YV2ZYIAD.cjs.map +0 -1
- package/dist/dark-EX2GRAYK.cjs.map +0 -1
- package/dist/logger-7WBTEDED.cjs +0 -10
- package/dist/logger-7WBTEDED.cjs.map +0 -1
- package/dist/logger-BGP7C274.js +0 -10
- package/dist/logger-BGP7C274.js.map +0 -1
- package/dist/minimal-RHOK4XEZ.cjs.map +0 -1
- package/dist/process-B4PJ6CWC.cjs +0 -9
- package/dist/process-B4PJ6CWC.cjs.map +0 -1
- package/dist/process-KSSXQJE6.js +0 -9
- package/dist/process-KSSXQJE6.js.map +0 -1
- package/dist/product-OT3XYMWD.cjs.map +0 -1
- /package/dist/{chunk-DGUM43GV.js.map → process-ZQV5M2TB.js.map} +0 -0
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
-
|
|
3
|
-
// src/generate/og-templates/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-
|
|
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-
|
|
68
|
+
//# sourceMappingURL=dark-SZOURAMM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/generate/og-templates/dark.tsx"],"sourcesContent":["import type {
|
|
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:
|
|
30
|
-
priority:
|
|
26
|
+
changeFrequency: _chunkH3D7F4TAcjs.DEFAULT_SITEMAP_CHANGE_FREQ,
|
|
27
|
+
priority: _chunkH3D7F4TAcjs.DEFAULT_SITEMAP_PRIORITY
|
|
31
28
|
},
|
|
32
|
-
rss: { enabled: true, path: "/rss.xml", 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:
|
|
45
|
-
metaDescriptionLength: { max:
|
|
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:
|
|
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 =
|
|
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
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
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 {\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,
|
|
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-
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
|
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
|
|
15
|
+
declare function generateBreadcrumbs(slug: string, title: string, siteUrl: string, basePath: string): BreadcrumbItem[];
|
|
18
16
|
|
|
19
17
|
/**
|
|
20
|
-
* Generate
|
|
18
|
+
* Generate canonical URL for an entry.
|
|
21
19
|
*/
|
|
22
|
-
declare function
|
|
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
|
-
*
|
|
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
|
|
39
|
+
declare function detectRedirects(entries: VazaEntry[], config: VazaConfig): Promise<RedirectEntry[]>;
|
|
41
40
|
|
|
42
41
|
/**
|
|
43
|
-
* Generate
|
|
42
|
+
* Generate RSS items from entries, sorted by publishDate desc, limited by config.
|
|
44
43
|
*/
|
|
45
|
-
declare function
|
|
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
|
|
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
|
|
49
|
+
declare function generateSitemap(entries: VazaEntry[], config: VazaConfig): SitemapEntry[];
|
|
57
50
|
|
|
58
51
|
/**
|
|
59
|
-
*
|
|
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
|
|
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,
|
|
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-
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
|
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
|
|
15
|
+
declare function generateBreadcrumbs(slug: string, title: string, siteUrl: string, basePath: string): BreadcrumbItem[];
|
|
18
16
|
|
|
19
17
|
/**
|
|
20
|
-
* Generate
|
|
18
|
+
* Generate canonical URL for an entry.
|
|
21
19
|
*/
|
|
22
|
-
declare function
|
|
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
|
-
*
|
|
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
|
|
39
|
+
declare function detectRedirects(entries: VazaEntry[], config: VazaConfig): Promise<RedirectEntry[]>;
|
|
41
40
|
|
|
42
41
|
/**
|
|
43
|
-
* Generate
|
|
42
|
+
* Generate RSS items from entries, sorted by publishDate desc, limited by config.
|
|
44
43
|
*/
|
|
45
|
-
declare function
|
|
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
|
|
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
|
|
49
|
+
declare function generateSitemap(entries: VazaEntry[], config: VazaConfig): SitemapEntry[];
|
|
57
50
|
|
|
58
51
|
/**
|
|
59
|
-
*
|
|
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
|
|
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-
|
|
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
|
|
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-
|
|
52
|
+
//# sourceMappingURL=minimal-CGXF737F.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/generate/og-templates/minimal.tsx"],"sourcesContent":["import type {
|
|
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; }
|
|
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-
|
|
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 @@
|
|
|
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"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
-
|
|
3
|
-
// src/generate/og-templates/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-
|
|
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-
|
|
95
|
+
//# sourceMappingURL=product-UQXUI5YL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/generate/og-templates/product.tsx"],"sourcesContent":["import type {
|
|
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,
|
|
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,
|
|
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.
|
|
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
|
-
"
|
|
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":"AAAA,itBAA6B;AAC7B;AACA;ACIO,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,QAAA,EAAU,KAAA,CAAM,YAAA,EAClB,KAAA,CAAM,WAAA,CAAY,kBAAA,CAAmB,OAAA,EAAS;AAAA,IAC5C,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,MAAA;AAAA,IACP,GAAA,EAAK;AAAA,EACP,CAAC,EAAA,EACD,EAAA;AAEJ,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,eAAA;AAAA,QAChB,UAAA,EAAY,CAAA,wBAAA,EAA2B,EAAE,CAAA,kBAAA,CAAA;AAAA,QACzC,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,OAAA,EAAS,MAAA;AAAA,cACT,aAAA,EAAe;AAAA,YACjB,CAAA;AAAA,YACA,QAAA,EAAU;AAAA,cACR;AAAA,gBACE,IAAA,EAAM,KAAA;AAAA,gBACN,KAAA,EAAO;AAAA,kBACL,KAAA,EAAO;AAAA,oBACL,QAAA,EAAU,EAAA;AAAA,oBACV,UAAA,EAAY,GAAA;AAAA,oBACZ,KAAA,EAAO,IAAA;AAAA,oBACP,UAAA,EAAY,GAAA;AAAA,oBACZ,QAAA,EAAU;AAAA,kBACZ,CAAA;AAAA,kBACA,QAAA,EAAU,KAAA,CAAM;AAAA,gBAClB;AAAA,cACF,CAAA;AAAA,cACA,GAAI,gBAAA,EACA;AAAA,gBACE;AAAA,kBACE,IAAA,EAAM,KAAA;AAAA,kBACN,KAAA,EAAO;AAAA,oBACL,KAAA,EAAO;AAAA,sBACL,QAAA,EAAU,EAAA;AAAA,sBACV,KAAA,EAAO,CAAA,EAAA;AACP,sBAAA;AACA,sBAAA;AACA,sBAAA;AACF,oBAAA;AACU,oBAAA;AACZ,kBAAA;AACF,gBAAA;AAED,cAAA;AACP,YAAA;AACF,UAAA;AACF,QAAA;AACA,QAAA;AACQ,UAAA;AACC,UAAA;AACE,YAAA;AACI,cAAA;AACO,cAAA;AACJ,cAAA;AACd,YAAA;AACU,YAAA;AACR,cAAA;AACQ,gBAAA;AACC,gBAAA;AACE,kBAAA;AACK,oBAAA;AACH,oBAAA;AACP,oBAAA;AACF,kBAAA;AACU,kBAAA;AACZ,gBAAA;AACF,cAAA;AACA,cAAA;AACQ,gBAAA;AACC,gBAAA;AACE,kBAAA;AACK,oBAAA;AACA,oBAAA;AACZ,kBAAA;AACU,kBAAA;AACZ,gBAAA;AACF,cAAA;AACF,YAAA;AACF,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACF;ADf8B;AACA;AACA","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"]}
|
package/dist/chunk-DGUM43GV.js
DELETED
|
@@ -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
|