@x-wave/blog 2.6.1 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/vite-config/index.d.ts +1 -0
- package/vite-config/index.d.ts.map +1 -1
- package/vite-config/index.js +2 -0
- package/vite-config/index.js.map +1 -1
- package/vite-config/json-ld.d.ts +21 -0
- package/vite-config/json-ld.d.ts.map +1 -0
- package/vite-config/json-ld.js +78 -0
- package/vite-config/json-ld.js.map +1 -0
- package/vite-config/meta-tags.d.ts +2 -0
- package/vite-config/meta-tags.d.ts.map +1 -1
- package/vite-config/meta-tags.js +10 -2
- package/vite-config/meta-tags.js.map +1 -1
package/package.json
CHANGED
package/vite-config/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { discoverBlogPosts, filterBlogPosts } from './blog-discovery.js';
|
|
2
|
+
export { generateJsonLd, type JsonLdOptions } from './json-ld.js';
|
|
2
3
|
export { generateHtmlWithMetaTags, generateMetaTags, generateMetaTagsObject, type MetaTagsOptions, } from './meta-tags.js';
|
|
3
4
|
export { type SetupSSGOptions, setupSSG } from './setup-ssg.js';
|
|
4
5
|
export { createStaticGenPlugin, type StaticGenPluginOptions, } from './static-gen-plugin.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAGxE,OAAO,EACN,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,eAAe,GACpB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,KAAK,eAAe,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAE/D,OAAO,EACN,qBAAqB,EACrB,KAAK,sBAAsB,GAC3B,MAAM,wBAAwB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAGxE,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjE,OAAO,EACN,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,eAAe,GACpB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,KAAK,eAAe,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAE/D,OAAO,EACN,qBAAqB,EACrB,KAAK,sBAAsB,GAC3B,MAAM,wBAAwB,CAAA"}
|
package/vite-config/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// Blog discovery
|
|
2
2
|
export { discoverBlogPosts, filterBlogPosts } from './blog-discovery.js';
|
|
3
|
+
// JSON-LD structured data
|
|
4
|
+
export { generateJsonLd } from './json-ld.js';
|
|
3
5
|
// Meta tag generation
|
|
4
6
|
export { generateHtmlWithMetaTags, generateMetaTags, generateMetaTagsObject, } from './meta-tags.js';
|
|
5
7
|
// SSG setup utilities (recommended for consumers)
|
package/vite-config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAExE,sBAAsB;AACtB,OAAO,EACN,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,GAEtB,MAAM,gBAAgB,CAAA;AACvB,kDAAkD;AAClD,OAAO,EAAwB,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC/D,cAAc;AACd,OAAO,EACN,qBAAqB,GAErB,MAAM,wBAAwB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAExE,0BAA0B;AAC1B,OAAO,EAAE,cAAc,EAAsB,MAAM,cAAc,CAAA;AAEjE,sBAAsB;AACtB,OAAO,EACN,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,GAEtB,MAAM,gBAAgB,CAAA;AACvB,kDAAkD;AAClD,OAAO,EAAwB,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC/D,cAAc;AACd,OAAO,EACN,qBAAqB,GAErB,MAAM,wBAAwB,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { BlogPostMetadata } from './types.js';
|
|
2
|
+
export interface JsonLdOptions {
|
|
3
|
+
/** Base URL for absolute URLs (e.g., 'https://example.com') */
|
|
4
|
+
baseUrl: string;
|
|
5
|
+
/** Default OG image URL if post doesn't have one */
|
|
6
|
+
defaultOgImage: string;
|
|
7
|
+
/** Site name used as publisher name */
|
|
8
|
+
siteName: string;
|
|
9
|
+
/** Docs base path for URL construction (e.g., '/blog/' or '/') */
|
|
10
|
+
docsBase?: string;
|
|
11
|
+
/** Publisher logo URL (absolute or relative to baseUrl) */
|
|
12
|
+
publisherLogo?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Generate a JSON-LD `BlogPosting` structured data script tag for a blog post.
|
|
16
|
+
*
|
|
17
|
+
* Produces a `<script type="application/ld+json">` block with schema.org
|
|
18
|
+
* BlogPosting markup that enables Google rich snippets (author, date, image).
|
|
19
|
+
*/
|
|
20
|
+
export declare function generateJsonLd(post: BlogPostMetadata, options: JsonLdOptions): string;
|
|
21
|
+
//# sourceMappingURL=json-ld.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-ld.d.ts","sourceRoot":"","sources":["../src/json-ld.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,MAAM,WAAW,aAAa;IAC7B,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAA;IACf,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAA;IACtB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC7B,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,aAAa,GACpB,MAAM,CAqER"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate a JSON-LD `BlogPosting` structured data script tag for a blog post.
|
|
3
|
+
*
|
|
4
|
+
* Produces a `<script type="application/ld+json">` block with schema.org
|
|
5
|
+
* BlogPosting markup that enables Google rich snippets (author, date, image).
|
|
6
|
+
*/
|
|
7
|
+
export function generateJsonLd(post, options) {
|
|
8
|
+
const { baseUrl, defaultOgImage, siteName, docsBase = '/', publisherLogo, } = options;
|
|
9
|
+
const normalizedDocsBase = docsBase === '/' ? '' : `/${docsBase.replace(/^\//, '').replace(/\/$/, '')}`;
|
|
10
|
+
const postUrl = `${baseUrl}${normalizedDocsBase}/${post.language}/${post.slug}`;
|
|
11
|
+
const ogImage = post.ogImage
|
|
12
|
+
? `${baseUrl}/og/${post.language}/${post.ogImage.replace(/^\//, '')}`
|
|
13
|
+
: `${baseUrl}${defaultOgImage}`;
|
|
14
|
+
// Normalize keywords to an array
|
|
15
|
+
let keywords = [];
|
|
16
|
+
if (post.keywords) {
|
|
17
|
+
if (Array.isArray(post.keywords)) {
|
|
18
|
+
keywords = post.keywords;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
keywords = post.keywords.split(',').map((k) => k.trim());
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const structuredData = {
|
|
25
|
+
'@context': 'https://schema.org',
|
|
26
|
+
'@type': 'BlogPosting',
|
|
27
|
+
headline: post.title,
|
|
28
|
+
description: post.description || '',
|
|
29
|
+
url: postUrl,
|
|
30
|
+
mainEntityOfPage: {
|
|
31
|
+
'@type': 'WebPage',
|
|
32
|
+
'@id': postUrl,
|
|
33
|
+
},
|
|
34
|
+
image: ogImage,
|
|
35
|
+
datePublished: toIso8601(post.date),
|
|
36
|
+
publisher: {
|
|
37
|
+
'@type': 'Organization',
|
|
38
|
+
name: siteName,
|
|
39
|
+
...(publisherLogo && {
|
|
40
|
+
logo: {
|
|
41
|
+
'@type': 'ImageObject',
|
|
42
|
+
url: publisherLogo.startsWith('http')
|
|
43
|
+
? publisherLogo
|
|
44
|
+
: `${baseUrl}${publisherLogo}`,
|
|
45
|
+
},
|
|
46
|
+
}),
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
if (post.author) {
|
|
50
|
+
structuredData.author = {
|
|
51
|
+
'@type': 'Person',
|
|
52
|
+
name: post.author,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
if (keywords.length > 0) {
|
|
56
|
+
structuredData.keywords = keywords;
|
|
57
|
+
}
|
|
58
|
+
// Escape closing script tags in JSON to prevent XSS
|
|
59
|
+
const json = JSON.stringify(structuredData).replace(/<\//g, '<\\/');
|
|
60
|
+
return `<script type="application/ld+json">${json}</script>`;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Convert a date string to ISO 8601 format (YYYY-MM-DD).
|
|
64
|
+
* Handles human-readable dates like "February 23, 2026" as well as
|
|
65
|
+
* strings that are already ISO-formatted.
|
|
66
|
+
*/
|
|
67
|
+
function toIso8601(date) {
|
|
68
|
+
if (!date)
|
|
69
|
+
return new Date().toISOString().split('T')[0];
|
|
70
|
+
// Already ISO 8601 (starts with YYYY-)
|
|
71
|
+
if (/^\d{4}-\d{2}/.test(date))
|
|
72
|
+
return date.split('T')[0];
|
|
73
|
+
const parsed = new Date(date);
|
|
74
|
+
if (Number.isNaN(parsed.getTime()))
|
|
75
|
+
return date;
|
|
76
|
+
return parsed.toISOString().split('T')[0];
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=json-ld.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-ld.js","sourceRoot":"","sources":["../src/json-ld.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,8 @@ export interface MetaTagsOptions {
|
|
|
12
12
|
twitterHandle: string;
|
|
13
13
|
/** Docs base path for URL construction (e.g., '/blog/' or '/docs/') */
|
|
14
14
|
docsBase?: string;
|
|
15
|
+
/** Publisher logo URL for JSON-LD (absolute or relative to baseUrl) */
|
|
16
|
+
publisherLogo?: string;
|
|
15
17
|
}
|
|
16
18
|
/**
|
|
17
19
|
* Generate meta tags HTML string from blog post metadata
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-tags.d.ts","sourceRoot":"","sources":["../src/meta-tags.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"meta-tags.d.ts","sourceRoot":"","sources":["../src/meta-tags.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,MAAM,WAAW,eAAe;IAC/B,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAA;IACf,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAA;IACtB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,sCAAsC;IACtC,aAAa,EAAE,MAAM,CAAA;IACrB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,eAAe,GACtB,MAAM,CA0ER;AAgBD;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,eAAe,EACxB,QAAQ,CAAC,EAAE,MAAM,GACf,MAAM,CA2CR;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,eAAe,GACtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA6CxB"}
|
package/vite-config/meta-tags.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { generateJsonLd } from './json-ld.js';
|
|
1
2
|
/**
|
|
2
3
|
* Generate meta tags HTML string from blog post metadata
|
|
3
4
|
*/
|
|
@@ -97,8 +98,15 @@ export function generateHtmlWithMetaTags(baseHtml, post, options, docsBase) {
|
|
|
97
98
|
html = html.replace(/\s*<!--\s*(?:Open Graph|Facebook|Twitter)[^>]*-->\s*\n/g, '');
|
|
98
99
|
// Final cleanup: remove any remaining multiple blank lines
|
|
99
100
|
html = html.replace(/\n\s*\n\s*\n/g, '\n\n');
|
|
100
|
-
|
|
101
|
-
|
|
101
|
+
const jsonLd = generateJsonLd(post, {
|
|
102
|
+
baseUrl: options.baseUrl,
|
|
103
|
+
defaultOgImage: options.defaultOgImage,
|
|
104
|
+
siteName: options.siteName,
|
|
105
|
+
docsBase: docsBase || options.docsBase,
|
|
106
|
+
publisherLogo: options.publisherLogo,
|
|
107
|
+
});
|
|
108
|
+
// Inject custom meta tags and JSON-LD before closing </head> tag
|
|
109
|
+
return html.replace('</head>', `\t${metaTags}\n\t${jsonLd}\n</head>`);
|
|
102
110
|
}
|
|
103
111
|
/**
|
|
104
112
|
* Generate meta tags as a JSON object for dynamic injection
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-tags.js","sourceRoot":"","sources":["../src/meta-tags.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"meta-tags.js","sourceRoot":"","sources":["../src/meta-tags.ts"],"names":[],"mappings":"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"}
|