@marvalt/digivalt-core 0.2.1 → 0.2.6

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.
@@ -0,0 +1,16 @@
1
+ import type { StructuredData } from './types';
2
+ export interface BuildEventJsonLdOptions {
3
+ siteUrl: string;
4
+ /** URL path including leading slash, e.g. `/events/slug` */
5
+ path: string;
6
+ fallbackImageUrl?: string;
7
+ /** Ticket or registration page when not in event meta */
8
+ defaultOffersUrl?: string;
9
+ organizerName?: string;
10
+ organizerUrl?: string;
11
+ }
12
+ /**
13
+ * Build schema.org Event JSON-LD from a WordPress `eventbrite_event`-style REST object
14
+ * (title, slug, featured_media_cloudflare_url, event_meta, link, etc.).
15
+ */
16
+ export declare function buildEventJsonLd(event: Record<string, unknown>, options: BuildEventJsonLdOptions): StructuredData;
@@ -0,0 +1,13 @@
1
+ export type { StructuredData } from './types';
2
+ export { getSeoDefaultsFromEnv } from './defaults';
3
+ export type { SeoDefaults } from './defaults';
4
+ export { recommendedPreconnectHosts } from './preconnect';
5
+ export type { PreconnectLink } from './preconnect';
6
+ export { JsonLd } from './JsonLd';
7
+ export type { JsonLdProps } from './JsonLd';
8
+ export { DigiValtSeoHead } from './DigiValtSeoHead';
9
+ export type { DigiValtSeoHeadProps } from './DigiValtSeoHead';
10
+ export { buildEventJsonLd } from './eventJsonLd';
11
+ export type { BuildEventJsonLdOptions } from './eventJsonLd';
12
+ export { createOrganizationSchema, createWebSiteSchema, createArticleSchema, createServiceSchema, createBreadcrumbSchema, createFAQSchema, } from '../lib/structured-data';
13
+ export { boundedShareImageUrl, DEFAULT_OG_IMAGE_MAX_WIDTH, buildCloudflareSrcSet, getCloudflareVariantUrl, isCloudflareImageUrl, } from '../utils/cfImages';
@@ -0,0 +1,10 @@
1
+ export interface PreconnectLink {
2
+ rel: 'preconnect';
3
+ href: string;
4
+ crossOrigin?: '' | 'anonymous' | 'use-credentials';
5
+ }
6
+ /**
7
+ * Suggest `<link rel="preconnect">` targets from an image URL (e.g. Cloudflare Images on imagedelivery.net).
8
+ * Apps may add more hosts (fonts, API) in `index.html` or via Helmet.
9
+ */
10
+ export declare function recommendedPreconnectHosts(imageUrl?: string | null): PreconnectLink[];
@@ -0,0 +1,7 @@
1
+ /**
2
+ * JSON-LD / schema.org payload (loosely typed for extensibility).
3
+ */
4
+ export type StructuredData = Record<string, unknown> & {
5
+ '@context'?: string;
6
+ '@type'?: string;
7
+ };
package/dist/seo.cjs ADDED
@@ -0,0 +1,562 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var react = require('react');
5
+ var reactHelmetAsync = require('react-helmet-async');
6
+
7
+ var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
8
+ const getImportMetaEnv = () => {
9
+ try {
10
+ return typeof ({ url: (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('seo.cjs', document.baseURI).href)) }) !== 'undefined' ? undefined : undefined;
11
+ }
12
+ catch {
13
+ return undefined;
14
+ }
15
+ };
16
+ const getEnv = (key) => {
17
+ const viteEnv = getImportMetaEnv();
18
+ if (viteEnv && key in viteEnv) {
19
+ const value = viteEnv[key];
20
+ return value == null ? undefined : String(value);
21
+ }
22
+ if (typeof process !== 'undefined' && process.env && key in process.env) {
23
+ const value = process.env[key];
24
+ return value == null ? undefined : String(value);
25
+ }
26
+ return undefined;
27
+ };
28
+ const isDevEnvironment = () => {
29
+ const viteEnv = getImportMetaEnv();
30
+ if (viteEnv && 'DEV' in viteEnv) {
31
+ return Boolean(viteEnv.DEV);
32
+ }
33
+ return typeof process !== 'undefined' && process.env?.NODE_ENV === 'development';
34
+ };
35
+
36
+ /**
37
+ * Integration Configuration
38
+ * Centralized configuration for all third-party integrations
39
+ */
40
+ function envBool(key, defaultValue) {
41
+ const v = getEnv(key);
42
+ if (v === undefined || v === '')
43
+ return defaultValue;
44
+ const lower = v.toLowerCase();
45
+ if (lower === 'false' || lower === '0' || lower === 'no')
46
+ return false;
47
+ if (lower === 'true' || lower === '1' || lower === 'yes')
48
+ return true;
49
+ return defaultValue;
50
+ }
51
+ /**
52
+ * Get integration configuration with environment variable fallbacks
53
+ */
54
+ function getIntegrationConfig() {
55
+ isDevEnvironment();
56
+ return {
57
+ wordpress: {
58
+ enabled: true,
59
+ apiUrl: getEnv('VITE_WORDPRESS_API_URL') || '',
60
+ authMode: getEnv('VITE_AUTH_MODE') || 'direct',
61
+ },
62
+ supabase: {
63
+ enabled: getEnv('VITE_AUTH_MODE') === 'supabase_proxy',
64
+ url: getEnv('VITE_SUPABASE_URL') || '',
65
+ anonKey: getEnv('VITE_SUPABASE_ANON_KEY') || '',
66
+ serviceRoleKey: getEnv('VITE_SUPABASE_SERVICE_ROLE_KEY'),
67
+ },
68
+ gravityForms: {
69
+ enabled: !!(getEnv('VITE_CLOUDFLARE_WORKER_URL') || getEnv('VITE_WORDPRESS_API_URL')),
70
+ url: getEnv('VITE_WORDPRESS_API_URL'),
71
+ proxyUrl: getEnv('VITE_CLOUDFLARE_WORKER_URL'),
72
+ consumerKey: getEnv('VITE_GF_CONSUMER_KEY'),
73
+ consumerSecret: getEnv('VITE_GF_CONSUMER_SECRET'),
74
+ forms: {
75
+ 'contact': {
76
+ name: 'Contact Form',
77
+ type: 'contact',
78
+ successMessage: 'Thank you for your message. We\'ll get back to you soon!',
79
+ },
80
+ 'newsletter': {
81
+ name: 'Newsletter Signup',
82
+ type: 'newsletter',
83
+ successMessage: 'Thank you for subscribing to our newsletter!',
84
+ },
85
+ 'support': {
86
+ name: 'Support Request',
87
+ type: 'support',
88
+ successMessage: 'Your support request has been submitted successfully.',
89
+ },
90
+ },
91
+ },
92
+ mautic: {
93
+ enabled: !!(getEnv('VITE_MAUTIC_PROXY_URL') || getEnv('VITE_MAUTIC_URL')),
94
+ url: getEnv('VITE_MAUTIC_URL') || '',
95
+ proxyUrl: getEnv('VITE_MAUTIC_PROXY_URL'),
96
+ forms: {
97
+ '1': {
98
+ name: 'Newsletter Signup',
99
+ type: 'newsletter',
100
+ successMessage: 'Thank you for subscribing to our newsletter!',
101
+ postAction: 'message',
102
+ postActionProperty: 'Thank you for your submission!'
103
+ },
104
+ '2': {
105
+ name: 'Contact Form',
106
+ type: 'contact',
107
+ successMessage: 'Thank you for contacting us! We\'ll get back to you soon.',
108
+ postAction: 'message',
109
+ postActionProperty: 'Thank you for your message!'
110
+ },
111
+ '3': {
112
+ name: 'Lead Capture',
113
+ type: 'lead',
114
+ successMessage: 'Thank you for your interest! We\'ll be in touch.',
115
+ postAction: 'message',
116
+ postActionProperty: 'Thank you for your submission!'
117
+ }
118
+ }
119
+ },
120
+ suiteCRM: {
121
+ enabled: !!(getEnv('VITE_SUITECRM_URL') && getEnv('VITE_SUITECRM_CLIENT_ID') && getEnv('VITE_SUITECRM_CLIENT_SECRET')),
122
+ url: getEnv('VITE_SUITECRM_URL'),
123
+ proxyUrl: getEnv('VITE_SUITECRM_PROXY_URL'),
124
+ appId: undefined,
125
+ workerSecret: undefined,
126
+ oauth2: {
127
+ clientId: getEnv('VITE_SUITECRM_CLIENT_ID'),
128
+ clientSecret: getEnv('VITE_SUITECRM_CLIENT_SECRET'),
129
+ username: getEnv('VITE_SUITECRM_USERNAME'),
130
+ password: getEnv('VITE_SUITECRM_PASSWORD'),
131
+ },
132
+ },
133
+ chatwoot: {
134
+ enabled: !!(getEnv('VITE_CHATWOOT_WEBSITE_TOKEN') && getEnv('VITE_CHATWOOT_BASE_URL')),
135
+ websiteToken: getEnv('VITE_CHATWOOT_WEBSITE_TOKEN') || '',
136
+ baseUrl: getEnv('VITE_CHATWOOT_BASE_URL') || '',
137
+ locale: 'en',
138
+ type: 'standard',
139
+ launcherTitle: 'Chat',
140
+ hideMessageBubble: false,
141
+ position: 'right',
142
+ showPopoutButton: false,
143
+ },
144
+ analytics: {
145
+ googleAnalytics: { enabled: false },
146
+ googleTagManager: { enabled: false },
147
+ facebookPixel: { enabled: false },
148
+ linkedinInsight: { enabled: false },
149
+ },
150
+ seo: (() => {
151
+ const opt = (key) => {
152
+ const v = getEnv(key);
153
+ if (v === undefined || v === '')
154
+ return undefined;
155
+ const t = v.trim();
156
+ return t || undefined;
157
+ };
158
+ const siteUrl = (getEnv('VITE_SEO_SITE_URL') || '').replace(/\/+$/, '').trim();
159
+ const siteName = (getEnv('VITE_SEO_SITE_NAME') || '').trim();
160
+ const defaultTitle = (getEnv('VITE_SEO_DEFAULT_TITLE') || '').trim() || siteName || '';
161
+ return {
162
+ defaultTitle,
163
+ defaultDescription: (getEnv('VITE_SEO_DEFAULT_DESCRIPTION') || '').trim(),
164
+ defaultKeywords: opt('VITE_SEO_DEFAULT_KEYWORDS'),
165
+ defaultImage: (getEnv('VITE_SEO_DEFAULT_OG_IMAGE') || '').trim(),
166
+ siteName,
167
+ siteUrl,
168
+ twitterHandle: opt('VITE_SEO_TWITTER_SITE'),
169
+ facebookAppId: opt('VITE_SEO_FACEBOOK_APP_ID'),
170
+ googleSiteVerification: opt('VITE_SEO_GOOGLE_SITE_VERIFICATION'),
171
+ bingSiteVerification: opt('VITE_SEO_BING_SITE_VERIFICATION'),
172
+ };
173
+ })(),
174
+ performance: {
175
+ enableLazyLoading: envBool('VITE_PERF_LAZY_LOADING', true),
176
+ enableImageOptimization: envBool('VITE_PERF_IMAGE_OPTIMIZATION', true),
177
+ enableCodeSplitting: envBool('VITE_PERF_CODE_SPLITTING', true),
178
+ enableServiceWorker: envBool('VITE_PERF_SERVICE_WORKER', false),
179
+ enableCaching: envBool('VITE_PERF_CACHING', true),
180
+ }
181
+ };
182
+ }
183
+ function getSEOConfig() {
184
+ return getIntegrationConfig().seo;
185
+ }
186
+
187
+ /**
188
+ * SEO defaults from env-backed integration config (see `VITE_SEO_*` in docs).
189
+ */
190
+ function getSeoDefaultsFromEnv() {
191
+ const seo = getSEOConfig();
192
+ return {
193
+ siteUrl: seo.siteUrl,
194
+ siteName: seo.siteName,
195
+ defaultTitle: seo.defaultTitle,
196
+ defaultDescription: seo.defaultDescription,
197
+ defaultKeywords: seo.defaultKeywords,
198
+ defaultImage: seo.defaultImage,
199
+ twitterHandle: seo.twitterHandle,
200
+ facebookAppId: seo.facebookAppId,
201
+ googleSiteVerification: seo.googleSiteVerification,
202
+ bingSiteVerification: seo.bingSiteVerification,
203
+ };
204
+ }
205
+
206
+ /**
207
+ * Suggest `<link rel="preconnect">` targets from an image URL (e.g. Cloudflare Images on imagedelivery.net).
208
+ * Apps may add more hosts (fonts, API) in `index.html` or via Helmet.
209
+ */
210
+ function recommendedPreconnectHosts(imageUrl) {
211
+ const out = [];
212
+ if (!imageUrl)
213
+ return out;
214
+ try {
215
+ const u = new URL(imageUrl);
216
+ if (u.protocol === 'http:' || u.protocol === 'https:') {
217
+ const origin = `${u.protocol}//${u.host}`;
218
+ if (u.hostname.toLowerCase().includes('imagedelivery.net')) {
219
+ out.push({ rel: 'preconnect', href: origin, crossOrigin: 'anonymous' });
220
+ }
221
+ }
222
+ }
223
+ catch {
224
+ /* ignore */
225
+ }
226
+ return out;
227
+ }
228
+
229
+ function stringifyLd(data) {
230
+ return JSON.stringify(data).replace(/</g, '\\u003c');
231
+ }
232
+ /**
233
+ * Renders one or more `<script type="application/ld+json">` tags.
234
+ */
235
+ const JsonLd = ({ data, id }) => {
236
+ const list = Array.isArray(data) ? data : [data];
237
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: list.map((item, i) => (jsxRuntime.jsx("script", { type: "application/ld+json", dangerouslySetInnerHTML: { __html: stringifyLd(item) } }, id ? `${id}-${i}` : i))) }));
238
+ };
239
+
240
+ // @ts-nocheck
241
+ /**
242
+ * Cloudflare Images URL helpers
243
+ *
244
+ * Many endpoints (e.g., cloudflare_image_standardized) return the base URL
245
+ * without a variant/transform segment. Append a variant at render-time to
246
+ * control size and improve LCP/SEO.
247
+ */
248
+ /** Default max width for OG/Twitter share images (~1200px guidelines). */
249
+ const DEFAULT_OG_IMAGE_MAX_WIDTH = 1200;
250
+ const isCloudflareImageUrl = (url) => {
251
+ if (!url)
252
+ return false;
253
+ try {
254
+ const u = new URL(url);
255
+ return u.hostname.toLowerCase().includes('imagedelivery.net');
256
+ }
257
+ catch {
258
+ return false;
259
+ }
260
+ };
261
+ /**
262
+ * Append Cloudflare Images variant to the base URL if not already present.
263
+ * Example output: https://imagedelivery.net/<account>/<id>/w=1024,h=600
264
+ */
265
+ const getCloudflareVariantUrl = (url, options) => {
266
+ if (!isCloudflareImageUrl(url))
267
+ return url;
268
+ // If a transform already exists, return as-is
269
+ if (/\/w=\d+/.test(url) || /\/(public|thumbnail|banner|avatar)/.test(url)) {
270
+ return url;
271
+ }
272
+ const { width, height } = options;
273
+ const hasTrailingSlash = url.endsWith('/');
274
+ const base = hasTrailingSlash ? url.slice(0, -1) : url;
275
+ const variant = `w=${Math.max(1, Math.floor(width))}` + (height ? `,h=${Math.max(1, Math.floor(height))}` : '');
276
+ return `${base}/${variant}`;
277
+ };
278
+ /**
279
+ * Build a simple srcset for responsive images from a base Cloudflare URL.
280
+ */
281
+ const buildCloudflareSrcSet = (url, widths, fixedHeight) => {
282
+ if (!isCloudflareImageUrl(url))
283
+ return undefined;
284
+ const unique = Array.from(new Set(widths.filter(w => w > 0).map(w => Math.floor(w)))).sort((a, b) => a - b);
285
+ if (unique.length === 0)
286
+ return undefined;
287
+ return unique
288
+ .map(w => `${getCloudflareVariantUrl(url, { width: w, height: fixedHeight })} ${w}w`)
289
+ .join(', ');
290
+ };
291
+ /**
292
+ * Bound social / meta image URLs to a reasonable width (PageSpeed, crawler fetches).
293
+ * Uses Cloudflare Images variants when applicable; otherwise returns the URL unchanged.
294
+ */
295
+ function boundedShareImageUrl(url, maxWidth = DEFAULT_OG_IMAGE_MAX_WIDTH) {
296
+ if (!url)
297
+ return '';
298
+ if (!isCloudflareImageUrl(url))
299
+ return url;
300
+ return getCloudflareVariantUrl(url, { width: maxWidth });
301
+ }
302
+
303
+ function joinAbsoluteUrl(siteUrl, pathname) {
304
+ const base = siteUrl.replace(/\/+$/, '');
305
+ if (pathname === '/')
306
+ return base || pathname;
307
+ const p = pathname.startsWith('/') ? pathname : `/${pathname}`;
308
+ return base ? `${base}${p}` : p;
309
+ }
310
+ /**
311
+ * Document head: title, description, canonical, Open Graph, Twitter cards, optional verification meta.
312
+ * Requires `HelmetProvider` from `react-helmet-async` above this component in the tree.
313
+ */
314
+ const DigiValtSeoHead = ({ title, description, keywords, pathname = '/', canonicalUrl, ogUrl, imageUrl, ogType = 'website', noindex, children, }) => {
315
+ const d = react.useMemo(() => getSeoDefaultsFromEnv(), []);
316
+ const pageTitle = title || d.defaultTitle || d.siteName || '';
317
+ const pageDescription = description || d.defaultDescription || '';
318
+ const pageKeywords = keywords ?? d.defaultKeywords;
319
+ const siteUrl = d.siteUrl;
320
+ const rawImage = imageUrl || d.defaultImage || '';
321
+ const ogImage = rawImage ? boundedShareImageUrl(rawImage) : '';
322
+ const canonical = canonicalUrl ||
323
+ (siteUrl ? joinAbsoluteUrl(siteUrl, pathname || '/') : undefined);
324
+ const openGraphUrl = ogUrl || canonical;
325
+ const preconnects = react.useMemo(() => recommendedPreconnectHosts(ogImage || rawImage), [ogImage, rawImage]);
326
+ const twitterSite = d.twitterHandle?.trim();
327
+ return (jsxRuntime.jsxs(reactHelmetAsync.Helmet, { children: [pageTitle ? jsxRuntime.jsx("title", { children: pageTitle }) : null, pageDescription ? (jsxRuntime.jsx("meta", { name: "description", content: pageDescription })) : null, pageKeywords ? jsxRuntime.jsx("meta", { name: "keywords", content: pageKeywords }) : null, noindex ? jsxRuntime.jsx("meta", { name: "robots", content: "noindex, nofollow" }) : null, d.googleSiteVerification ? (jsxRuntime.jsx("meta", { name: "google-site-verification", content: d.googleSiteVerification })) : null, d.bingSiteVerification ? (jsxRuntime.jsx("meta", { name: "msvalidate.01", content: d.bingSiteVerification })) : null, canonical ? jsxRuntime.jsx("link", { rel: "canonical", href: canonical }) : null, preconnects.map((p) => (jsxRuntime.jsx("link", { rel: p.rel, href: p.href, ...(p.crossOrigin ? { crossOrigin: p.crossOrigin } : {}) }, p.href))), jsxRuntime.jsx("meta", { property: "og:type", content: ogType }), openGraphUrl ? jsxRuntime.jsx("meta", { property: "og:url", content: openGraphUrl }) : null, pageTitle ? jsxRuntime.jsx("meta", { property: "og:title", content: pageTitle }) : null, pageDescription ? (jsxRuntime.jsx("meta", { property: "og:description", content: pageDescription })) : null, ogImage ? jsxRuntime.jsx("meta", { property: "og:image", content: ogImage }) : null, d.siteName ? jsxRuntime.jsx("meta", { property: "og:site_name", content: d.siteName }) : null, d.facebookAppId ? jsxRuntime.jsx("meta", { property: "fb:app_id", content: d.facebookAppId }) : null, jsxRuntime.jsx("meta", { name: "twitter:card", content: "summary_large_image" }), twitterSite ? jsxRuntime.jsx("meta", { name: "twitter:site", content: twitterSite }) : null, pageTitle ? jsxRuntime.jsx("meta", { name: "twitter:title", content: pageTitle }) : null, pageDescription ? (jsxRuntime.jsx("meta", { name: "twitter:description", content: pageDescription })) : null, ogImage ? jsxRuntime.jsx("meta", { name: "twitter:image", content: ogImage }) : null, children] }));
328
+ };
329
+
330
+ function stripHtml(s) {
331
+ return s.replace(/<[^>]+>/g, ' ').replace(/\s+/g, ' ').trim();
332
+ }
333
+ function getRenderedTitle(event) {
334
+ const t = event.title;
335
+ if (typeof t === 'string')
336
+ return t;
337
+ if (t && typeof t.rendered === 'string')
338
+ return stripHtml(t.rendered);
339
+ return '';
340
+ }
341
+ function getRenderedExcerpt(event) {
342
+ const ex = event.excerpt;
343
+ if (typeof ex === 'string')
344
+ return stripHtml(ex);
345
+ if (ex && typeof ex.rendered === 'string')
346
+ return stripHtml(ex.rendered);
347
+ const c = event.content;
348
+ if (c?.rendered)
349
+ return stripHtml(c.rendered).slice(0, 280);
350
+ return '';
351
+ }
352
+ function isoDaysBefore(isoDate, days) {
353
+ if (!isoDate)
354
+ return undefined;
355
+ const d = new Date(isoDate);
356
+ if (Number.isNaN(d.getTime()))
357
+ return undefined;
358
+ d.setUTCDate(d.getUTCDate() - days);
359
+ return d.toISOString();
360
+ }
361
+ /**
362
+ * Build schema.org Event JSON-LD from a WordPress `eventbrite_event`-style REST object
363
+ * (title, slug, featured_media_cloudflare_url, event_meta, link, etc.).
364
+ */
365
+ function buildEventJsonLd(event, options) {
366
+ const meta = event.event_meta || {};
367
+ const base = options.siteUrl.replace(/\/+$/, '');
368
+ const path = options.path.startsWith('/') ? options.path : `/${options.path}`;
369
+ const slug = event.slug || '';
370
+ const pageUrl = base ? `${base}${path}` : path;
371
+ const id = `${pageUrl}${slug ? `#event-${slug}` : '#event'}`;
372
+ const name = getRenderedTitle(event) || (slug ? slug.replace(/-/g, ' ') : 'Event');
373
+ const description = getRenderedExcerpt(event) || name;
374
+ const startDate = meta.event_start_utc ||
375
+ meta.event_start ||
376
+ event.date ||
377
+ undefined;
378
+ const endDate = meta.event_end_utc || meta.event_end || undefined;
379
+ const featured = event.featured_media_cloudflare_url ||
380
+ meta.event_image ||
381
+ meta.image ||
382
+ '';
383
+ const fallback = options.fallbackImageUrl || '';
384
+ const imageUrl = boundedShareImageUrl(featured || fallback) || featured || fallback;
385
+ const ticketUrl = meta.ticket_url ||
386
+ meta.event_url ||
387
+ event.link ||
388
+ options.defaultOffersUrl ||
389
+ pageUrl;
390
+ let price = meta.price;
391
+ let priceCurrency = meta.price_currency || meta.currency || 'USD';
392
+ if (typeof price === 'string') {
393
+ const m = price.match(/([0-9]+(?:\.[0-9]+)?)/);
394
+ if (m)
395
+ price = parseFloat(m[1]);
396
+ }
397
+ if (price === undefined || price === '') {
398
+ price = 0;
399
+ }
400
+ const validFrom = meta.valid_from ||
401
+ meta.ticket_sales_start ||
402
+ isoDaysBefore(startDate, 14) ||
403
+ startDate;
404
+ const venueName = meta.venue_name || meta.location_name || '';
405
+ const street = meta.venue_address || meta.street_address || '';
406
+ const locality = meta.venue_city || meta.address_locality || '';
407
+ const region = meta.venue_region || meta.address_region || '';
408
+ const postal = meta.venue_postal_code || meta.postal_code || '';
409
+ const country = meta.venue_country || meta.address_country || '';
410
+ const location = venueName || street || locality
411
+ ? {
412
+ '@type': 'Place',
413
+ name: venueName || undefined,
414
+ address: {
415
+ '@type': 'PostalAddress',
416
+ streetAddress: street || undefined,
417
+ addressLocality: locality || undefined,
418
+ addressRegion: region || undefined,
419
+ postalCode: postal || undefined,
420
+ addressCountry: country || undefined,
421
+ },
422
+ }
423
+ : undefined;
424
+ const organizer = options.organizerName || options.organizerUrl
425
+ ? {
426
+ '@type': 'Organization',
427
+ name: options.organizerName || options.organizerUrl || '',
428
+ url: options.organizerUrl || base || undefined,
429
+ }
430
+ : undefined;
431
+ const offers = {
432
+ '@type': 'Offer',
433
+ url: ticketUrl,
434
+ price,
435
+ priceCurrency,
436
+ availability: 'https://schema.org/InStock',
437
+ };
438
+ if (validFrom)
439
+ offers.validFrom = validFrom;
440
+ const out = {
441
+ '@context': 'https://schema.org',
442
+ '@type': 'Event',
443
+ '@id': id,
444
+ name,
445
+ description,
446
+ url: pageUrl,
447
+ eventStatus: 'https://schema.org/EventScheduled',
448
+ eventAttendanceMode: 'https://schema.org/OfflineEventAttendanceMode',
449
+ };
450
+ if (startDate)
451
+ out.startDate = startDate;
452
+ if (endDate)
453
+ out.endDate = endDate;
454
+ if (imageUrl)
455
+ out.image = [imageUrl];
456
+ if (location)
457
+ out.location = location;
458
+ if (organizer)
459
+ out.organizer = organizer;
460
+ out.offers = offers;
461
+ return out;
462
+ }
463
+
464
+ const createOrganizationSchema = (data) => ({
465
+ '@context': 'https://schema.org',
466
+ '@type': 'Organization',
467
+ name: data.name,
468
+ url: data.url,
469
+ ...(data.logo && { logo: data.logo }),
470
+ ...(data.description && { description: data.description }),
471
+ ...(data.address && {
472
+ address: {
473
+ '@type': 'PostalAddress',
474
+ ...data.address,
475
+ },
476
+ }),
477
+ ...(data.contactPoint && {
478
+ contactPoint: {
479
+ '@type': 'ContactPoint',
480
+ ...data.contactPoint,
481
+ },
482
+ }),
483
+ });
484
+ const createWebSiteSchema = (data) => ({
485
+ '@context': 'https://schema.org',
486
+ '@type': 'WebSite',
487
+ name: data.name,
488
+ url: data.url,
489
+ ...(data.description && { description: data.description }),
490
+ ...(data.publisher && { publisher: data.publisher }),
491
+ });
492
+ const createArticleSchema = (data) => ({
493
+ '@context': 'https://schema.org',
494
+ '@type': 'Article',
495
+ headline: data.headline,
496
+ description: data.description,
497
+ ...(data.image && { image: data.image }),
498
+ author: {
499
+ '@type': 'Person',
500
+ name: data.author,
501
+ },
502
+ publisher: {
503
+ '@type': 'Organization',
504
+ name: data.publisher,
505
+ },
506
+ datePublished: data.datePublished,
507
+ ...(data.dateModified && { dateModified: data.dateModified }),
508
+ url: data.url,
509
+ });
510
+ const createServiceSchema = (data) => ({
511
+ '@context': 'https://schema.org',
512
+ '@type': 'Service',
513
+ name: data.name,
514
+ description: data.description,
515
+ provider: {
516
+ '@type': 'Organization',
517
+ name: data.provider,
518
+ },
519
+ url: data.url,
520
+ ...(data.areaServed && { areaServed: data.areaServed }),
521
+ ...(data.serviceType && { serviceType: data.serviceType }),
522
+ });
523
+ const createBreadcrumbSchema = (breadcrumbs) => ({
524
+ '@context': 'https://schema.org',
525
+ '@type': 'BreadcrumbList',
526
+ itemListElement: breadcrumbs.map((breadcrumb, index) => ({
527
+ '@type': 'ListItem',
528
+ position: index + 1,
529
+ name: breadcrumb.name,
530
+ item: breadcrumb.url,
531
+ })),
532
+ });
533
+ const createFAQSchema = (faqs) => ({
534
+ '@context': 'https://schema.org',
535
+ '@type': 'FAQPage',
536
+ mainEntity: faqs.map(faq => ({
537
+ '@type': 'Question',
538
+ name: faq.question,
539
+ acceptedAnswer: {
540
+ '@type': 'Answer',
541
+ text: faq.answer,
542
+ },
543
+ })),
544
+ });
545
+
546
+ exports.DEFAULT_OG_IMAGE_MAX_WIDTH = DEFAULT_OG_IMAGE_MAX_WIDTH;
547
+ exports.DigiValtSeoHead = DigiValtSeoHead;
548
+ exports.JsonLd = JsonLd;
549
+ exports.boundedShareImageUrl = boundedShareImageUrl;
550
+ exports.buildCloudflareSrcSet = buildCloudflareSrcSet;
551
+ exports.buildEventJsonLd = buildEventJsonLd;
552
+ exports.createArticleSchema = createArticleSchema;
553
+ exports.createBreadcrumbSchema = createBreadcrumbSchema;
554
+ exports.createFAQSchema = createFAQSchema;
555
+ exports.createOrganizationSchema = createOrganizationSchema;
556
+ exports.createServiceSchema = createServiceSchema;
557
+ exports.createWebSiteSchema = createWebSiteSchema;
558
+ exports.getCloudflareVariantUrl = getCloudflareVariantUrl;
559
+ exports.getSeoDefaultsFromEnv = getSeoDefaultsFromEnv;
560
+ exports.isCloudflareImageUrl = isCloudflareImageUrl;
561
+ exports.recommendedPreconnectHosts = recommendedPreconnectHosts;
562
+ //# sourceMappingURL=seo.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seo.cjs","sources":["../src/runtime/env.ts","../src/config/integrations.ts","../src/seo/defaults.ts","../src/seo/preconnect.ts","../src/seo/JsonLd.tsx","../src/utils/cfImages.ts","../src/seo/DigiValtSeoHead.tsx","../src/seo/eventJsonLd.ts","../src/lib/structured-data.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["_jsx","useMemo","_jsxs","Helmet"],"mappings":"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"}