@xbg.solutions/bpsk-utils-seo 1.2.3

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/lib/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './utils/seo';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,aAAa,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,4 @@
1
+ // SEO package barrel exports
2
+ // Utils
3
+ export * from './utils/seo';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAE7B,QAAQ;AACR,cAAc,aAAa,CAAC"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * SEO Optimization Utilities
3
+ *
4
+ * Tools for improving search engine optimization
5
+ */
6
+ export interface MetaTag {
7
+ name?: string;
8
+ property?: string;
9
+ content: string;
10
+ }
11
+ export interface SEOData {
12
+ title: string;
13
+ description: string;
14
+ keywords?: string[];
15
+ canonical?: string;
16
+ image?: string;
17
+ type?: 'website' | 'article' | 'product' | 'profile';
18
+ author?: string;
19
+ publishedTime?: string;
20
+ modifiedTime?: string;
21
+ siteName?: string;
22
+ locale?: string;
23
+ }
24
+ /**
25
+ * Generate meta tags for SEO
26
+ */
27
+ export declare function generateMetaTags(data: SEOData): MetaTag[];
28
+ /**
29
+ * Generate structured data (JSON-LD) for SEO
30
+ */
31
+ export declare function generateStructuredData(data: SEOData & {
32
+ url?: string;
33
+ logo?: string;
34
+ contactPoint?: {
35
+ telephone: string;
36
+ contactType: string;
37
+ areaServed: string;
38
+ };
39
+ sameAs?: string[];
40
+ }): any;
41
+ /**
42
+ * SEO audit function
43
+ */
44
+ export declare function auditSEO(): {
45
+ score: number;
46
+ issues: string[];
47
+ recommendations: string[];
48
+ };
49
+ /**
50
+ * Generate sitemap XML
51
+ */
52
+ export declare function generateSitemapXML(urls: Array<{
53
+ url: string;
54
+ lastModified?: string;
55
+ changeFreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never';
56
+ priority?: number;
57
+ }>): string;
58
+ /**
59
+ * Generate robots.txt content
60
+ */
61
+ export declare function generateRobotsTxt(config: {
62
+ sitemap?: string;
63
+ disallow?: string[];
64
+ allow?: string[];
65
+ crawlDelay?: number;
66
+ }): string;
67
+ /**
68
+ * SEO utilities for development
69
+ */
70
+ export declare const seoUtils: {
71
+ /**
72
+ * Log SEO audit results
73
+ */
74
+ logAudit(): void;
75
+ /**
76
+ * Preview how page appears in search results
77
+ */
78
+ previewSearchResult(): {
79
+ title: string;
80
+ url: string;
81
+ description: string;
82
+ } | null;
83
+ /**
84
+ * Get page insights for SEO
85
+ */
86
+ getPageInsights(): {
87
+ wordCount: number;
88
+ readingTime: number;
89
+ headingStructure: {
90
+ [key: string]: number;
91
+ };
92
+ internalLinks: number;
93
+ externalLinks: number;
94
+ } | null;
95
+ };
96
+ //# sourceMappingURL=seo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seo.d.ts","sourceRoot":"","sources":["../../src/utils/seo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,EAAE,CA4DzD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,GAAG,GAAG,CAyCN;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CA2IA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC,GAAG,MAAM,CAeV;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CA4BT;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ;IACnB;;OAEG;gBACS,IAAI;IAsBhB;;OAEG;2BACoB;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,IAAI;IAcR;;OAEG;uBACgB;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;QAC5C,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,IAAI;CAsCT,CAAC"}
@@ -0,0 +1,357 @@
1
+ /**
2
+ * SEO Optimization Utilities
3
+ *
4
+ * Tools for improving search engine optimization
5
+ */
6
+ /**
7
+ * Generate meta tags for SEO
8
+ */
9
+ export function generateMetaTags(data) {
10
+ const tags = [];
11
+ // Basic meta tags
12
+ if (data.description) {
13
+ tags.push({ name: 'description', content: data.description });
14
+ }
15
+ if (data.keywords && data.keywords.length > 0) {
16
+ tags.push({ name: 'keywords', content: data.keywords.join(', ') });
17
+ }
18
+ if (data.author) {
19
+ tags.push({ name: 'author', content: data.author });
20
+ }
21
+ // Open Graph tags
22
+ tags.push({ property: 'og:title', content: data.title });
23
+ tags.push({ property: 'og:description', content: data.description });
24
+ tags.push({ property: 'og:type', content: data.type || 'website' });
25
+ if (data.image) {
26
+ tags.push({ property: 'og:image', content: data.image });
27
+ tags.push({ property: 'og:image:alt', content: data.title });
28
+ }
29
+ if (data.canonical) {
30
+ tags.push({ property: 'og:url', content: data.canonical });
31
+ }
32
+ if (data.siteName) {
33
+ tags.push({ property: 'og:site_name', content: data.siteName });
34
+ }
35
+ if (data.locale) {
36
+ tags.push({ property: 'og:locale', content: data.locale });
37
+ }
38
+ if (data.publishedTime) {
39
+ tags.push({ property: 'article:published_time', content: data.publishedTime });
40
+ }
41
+ if (data.modifiedTime) {
42
+ tags.push({ property: 'article:modified_time', content: data.modifiedTime });
43
+ }
44
+ if (data.author && data.type === 'article') {
45
+ tags.push({ property: 'article:author', content: data.author });
46
+ }
47
+ // Twitter Card tags
48
+ tags.push({ name: 'twitter:card', content: 'summary_large_image' });
49
+ tags.push({ name: 'twitter:title', content: data.title });
50
+ tags.push({ name: 'twitter:description', content: data.description });
51
+ if (data.image) {
52
+ tags.push({ name: 'twitter:image', content: data.image });
53
+ }
54
+ return tags;
55
+ }
56
+ /**
57
+ * Generate structured data (JSON-LD) for SEO
58
+ */
59
+ export function generateStructuredData(data) {
60
+ const baseSchema = {
61
+ '@context': 'https://schema.org',
62
+ '@type': data.type === 'article' ? 'Article' : 'WebPage',
63
+ name: data.title,
64
+ headline: data.title,
65
+ description: data.description,
66
+ url: data.url || data.canonical,
67
+ datePublished: data.publishedTime,
68
+ dateModified: data.modifiedTime || data.publishedTime,
69
+ };
70
+ if (data.image) {
71
+ baseSchema.image = {
72
+ '@type': 'ImageObject',
73
+ url: data.image,
74
+ alt: data.title
75
+ };
76
+ }
77
+ if (data.author) {
78
+ baseSchema.author = {
79
+ '@type': 'Person',
80
+ name: data.author
81
+ };
82
+ }
83
+ // Organization schema for website
84
+ if (data.type === 'website' && data.siteName) {
85
+ return {
86
+ '@context': 'https://schema.org',
87
+ '@type': 'Organization',
88
+ name: data.siteName,
89
+ url: data.url,
90
+ logo: data.logo,
91
+ contactPoint: data.contactPoint,
92
+ sameAs: data.sameAs
93
+ };
94
+ }
95
+ return baseSchema;
96
+ }
97
+ /**
98
+ * SEO audit function
99
+ */
100
+ export function auditSEO() {
101
+ const issues = [];
102
+ const recommendations = [];
103
+ let score = 100;
104
+ if (typeof document === 'undefined') {
105
+ return { score: 0, issues: ['Cannot audit SEO on server side'], recommendations: [] };
106
+ }
107
+ // Check title tag
108
+ const title = document.querySelector('title');
109
+ if (!title || !title.textContent?.trim()) {
110
+ issues.push('Missing page title');
111
+ score -= 20;
112
+ }
113
+ else if (title.textContent.length < 30 || title.textContent.length > 60) {
114
+ issues.push(`Title length should be 30-60 characters (current: ${title.textContent.length})`);
115
+ score -= 10;
116
+ recommendations.push('Optimize title length for better search results');
117
+ }
118
+ // Check meta description
119
+ const description = document.querySelector('meta[name="description"]');
120
+ if (!description || !description.getAttribute('content')?.trim()) {
121
+ issues.push('Missing meta description');
122
+ score -= 15;
123
+ }
124
+ else {
125
+ const content = description.getAttribute('content');
126
+ if (content.length < 120 || content.length > 160) {
127
+ issues.push(`Meta description should be 120-160 characters (current: ${content.length})`);
128
+ score -= 8;
129
+ recommendations.push('Optimize meta description length');
130
+ }
131
+ }
132
+ // Check canonical URL
133
+ const canonical = document.querySelector('link[rel="canonical"]');
134
+ if (!canonical) {
135
+ issues.push('Missing canonical URL');
136
+ score -= 10;
137
+ recommendations.push('Add canonical URL to prevent duplicate content issues');
138
+ }
139
+ // Check Open Graph tags
140
+ const ogTitle = document.querySelector('meta[property="og:title"]');
141
+ const ogDescription = document.querySelector('meta[property="og:description"]');
142
+ const ogImage = document.querySelector('meta[property="og:image"]');
143
+ if (!ogTitle) {
144
+ issues.push('Missing Open Graph title');
145
+ score -= 5;
146
+ }
147
+ if (!ogDescription) {
148
+ issues.push('Missing Open Graph description');
149
+ score -= 5;
150
+ }
151
+ if (!ogImage) {
152
+ issues.push('Missing Open Graph image');
153
+ score -= 5;
154
+ recommendations.push('Add Open Graph image for better social media sharing');
155
+ }
156
+ // Check for headings structure
157
+ const h1Tags = document.querySelectorAll('h1');
158
+ if (h1Tags.length === 0) {
159
+ issues.push('Missing H1 tag');
160
+ score -= 15;
161
+ }
162
+ else if (h1Tags.length > 1) {
163
+ issues.push('Multiple H1 tags found');
164
+ score -= 10;
165
+ recommendations.push('Use only one H1 tag per page');
166
+ }
167
+ // Check for alt attributes on images
168
+ const images = document.querySelectorAll('img');
169
+ let missingAltCount = 0;
170
+ images.forEach(img => {
171
+ if (!img.getAttribute('alt')) {
172
+ missingAltCount++;
173
+ }
174
+ });
175
+ if (missingAltCount > 0) {
176
+ issues.push(`${missingAltCount} images missing alt attributes`);
177
+ score -= Math.min(missingAltCount * 2, 15);
178
+ recommendations.push('Add descriptive alt attributes to all images');
179
+ }
180
+ // Check for proper heading hierarchy
181
+ const headings = document.querySelectorAll('h1, h2, h3, h4, h5, h6');
182
+ let previousLevel = 0;
183
+ let hierarchyIssues = false;
184
+ headings.forEach(heading => {
185
+ const level = parseInt(heading.tagName.charAt(1));
186
+ if (level > previousLevel + 1 && previousLevel !== 0) {
187
+ hierarchyIssues = true;
188
+ }
189
+ previousLevel = level;
190
+ });
191
+ if (hierarchyIssues) {
192
+ issues.push('Improper heading hierarchy');
193
+ score -= 8;
194
+ recommendations.push('Maintain proper heading hierarchy (H1 → H2 → H3, etc.)');
195
+ }
196
+ // Check page load speed (basic check)
197
+ if (typeof performance !== 'undefined') {
198
+ const navigation = performance.getEntriesByType('navigation')[0];
199
+ if (navigation) {
200
+ const loadTime = navigation.loadEventEnd - navigation.loadEventStart;
201
+ if (loadTime > 3000) {
202
+ issues.push('Slow page load time');
203
+ score -= 15;
204
+ recommendations.push('Optimize page load speed for better SEO rankings');
205
+ }
206
+ }
207
+ }
208
+ // Check for HTTPS
209
+ if (location.protocol !== 'https:' && location.hostname !== 'localhost') {
210
+ issues.push('Not using HTTPS');
211
+ score -= 20;
212
+ recommendations.push('Enable HTTPS for security and SEO benefits');
213
+ }
214
+ // Check viewport meta tag
215
+ const viewport = document.querySelector('meta[name="viewport"]');
216
+ if (!viewport) {
217
+ issues.push('Missing viewport meta tag');
218
+ score -= 10;
219
+ recommendations.push('Add viewport meta tag for mobile optimization');
220
+ }
221
+ return {
222
+ score: Math.max(0, score),
223
+ issues,
224
+ recommendations
225
+ };
226
+ }
227
+ /**
228
+ * Generate sitemap XML
229
+ */
230
+ export function generateSitemapXML(urls) {
231
+ const baseUrl = typeof window !== 'undefined' ? window.location.origin : '';
232
+ const urlElements = urls.map(item => `
233
+ <url>
234
+ <loc>${baseUrl}${item.url}</loc>
235
+ ${item.lastModified ? `<lastmod>${item.lastModified}</lastmod>` : ''}
236
+ ${item.changeFreq ? `<changefreq>${item.changeFreq}</changefreq>` : ''}
237
+ ${item.priority ? `<priority>${item.priority}</priority>` : ''}
238
+ </url>`).join('');
239
+ return `<?xml version="1.0" encoding="UTF-8"?>
240
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
241
+ ${urlElements}
242
+ </urlset>`;
243
+ }
244
+ /**
245
+ * Generate robots.txt content
246
+ */
247
+ export function generateRobotsTxt(config) {
248
+ const baseUrl = typeof window !== 'undefined' ? window.location.origin : '';
249
+ let content = 'User-agent: *\n';
250
+ if (config.allow) {
251
+ config.allow.forEach(path => {
252
+ content += `Allow: ${path}\n`;
253
+ });
254
+ }
255
+ if (config.disallow) {
256
+ config.disallow.forEach(path => {
257
+ content += `Disallow: ${path}\n`;
258
+ });
259
+ }
260
+ else {
261
+ content += 'Allow: /\n';
262
+ }
263
+ if (config.crawlDelay) {
264
+ content += `Crawl-delay: ${config.crawlDelay}\n`;
265
+ }
266
+ if (config.sitemap) {
267
+ content += `\nSitemap: ${baseUrl}${config.sitemap}\n`;
268
+ }
269
+ return content;
270
+ }
271
+ /**
272
+ * SEO utilities for development
273
+ */
274
+ export const seoUtils = {
275
+ /**
276
+ * Log SEO audit results
277
+ */
278
+ logAudit() {
279
+ if (typeof window === 'undefined')
280
+ return;
281
+ const audit = auditSEO();
282
+ console.group('🔍 SEO Audit');
283
+ console.log(`Score: ${audit.score}/100`);
284
+ if (audit.issues.length > 0) {
285
+ console.group('Issues:');
286
+ audit.issues.forEach(issue => console.warn('⚠️', issue));
287
+ console.groupEnd();
288
+ }
289
+ if (audit.recommendations.length > 0) {
290
+ console.group('Recommendations:');
291
+ audit.recommendations.forEach(rec => console.info('💡', rec));
292
+ console.groupEnd();
293
+ }
294
+ console.groupEnd();
295
+ },
296
+ /**
297
+ * Preview how page appears in search results
298
+ */
299
+ previewSearchResult() {
300
+ if (typeof document === 'undefined')
301
+ return null;
302
+ const title = document.querySelector('title')?.textContent || '';
303
+ const description = document.querySelector('meta[name="description"]')?.getAttribute('content') || '';
304
+ const url = window.location.href;
305
+ return {
306
+ title: title.length > 60 ? title.substring(0, 57) + '...' : title,
307
+ url,
308
+ description: description.length > 160 ? description.substring(0, 157) + '...' : description
309
+ };
310
+ },
311
+ /**
312
+ * Get page insights for SEO
313
+ */
314
+ getPageInsights() {
315
+ if (typeof document === 'undefined')
316
+ return null;
317
+ // Word count
318
+ const textContent = document.body.textContent || '';
319
+ const wordCount = textContent.trim().split(/\s+/).length;
320
+ // Reading time (average 200 words per minute)
321
+ const readingTime = Math.ceil(wordCount / 200);
322
+ // Heading structure
323
+ const headingStructure = {};
324
+ ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].forEach(tag => {
325
+ headingStructure[tag] = document.querySelectorAll(tag).length;
326
+ });
327
+ // Link analysis
328
+ const links = document.querySelectorAll('a[href]');
329
+ let internalLinks = 0;
330
+ let externalLinks = 0;
331
+ links.forEach(link => {
332
+ const href = link.getAttribute('href') || '';
333
+ if (href.startsWith('http') && !href.includes(window.location.hostname)) {
334
+ externalLinks++;
335
+ }
336
+ else if (!href.startsWith('#') && !href.startsWith('mailto:') && !href.startsWith('tel:')) {
337
+ internalLinks++;
338
+ }
339
+ });
340
+ return {
341
+ wordCount,
342
+ readingTime,
343
+ headingStructure,
344
+ internalLinks,
345
+ externalLinks
346
+ };
347
+ }
348
+ };
349
+ // Initialize SEO monitoring in development
350
+ if (import.meta.env.DEV && typeof window !== 'undefined') {
351
+ window.addEventListener('load', () => {
352
+ setTimeout(() => {
353
+ seoUtils.logAudit();
354
+ }, 1000);
355
+ });
356
+ }
357
+ //# sourceMappingURL=seo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seo.js","sourceRoot":"","sources":["../../src/utils/seo.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@xbg.solutions/bpsk-utils-seo",
3
+ "version": "1.2.3",
4
+ "description": "XBG SEO - Meta tags, structured data, OpenGraph",
5
+ "main": "lib/index.js",
6
+ "types": "lib/index.d.ts",
7
+ "type": "module",
8
+ "files": ["lib"],
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "build:watch": "tsc --watch",
12
+ "clean": "rm -rf lib",
13
+ "prepublishOnly": "npm run build"
14
+ },
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "dependencies": {
19
+ "@xbg.solutions/bpsk-core": "^1.0.0"
20
+ },
21
+ "peerDependencies": {
22
+ "svelte": "^5.0.0"
23
+ }
24
+ }