@sonordev/site-kit 1.5.0 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/AnalyticsProvider-BBLU4U2T.mjs +4 -0
  2. package/dist/{AnalyticsProvider-OXX23PK5.mjs.map → AnalyticsProvider-BBLU4U2T.mjs.map} +1 -1
  3. package/dist/AnalyticsProvider-EMDIAAWR.js +25 -0
  4. package/dist/{AnalyticsProvider-KJWDN6YO.js.map → AnalyticsProvider-EMDIAAWR.js.map} +1 -1
  5. package/dist/SitemapSync-FKYWGDAD.js +13 -0
  6. package/dist/{SitemapSync-6I5JTLER.js.map → SitemapSync-FKYWGDAD.js.map} +1 -1
  7. package/dist/SitemapSync-YK6IXOSY.mjs +4 -0
  8. package/dist/{SitemapSync-6L45DHRH.mjs.map → SitemapSync-YK6IXOSY.mjs.map} +1 -1
  9. package/dist/analytics/index.js +9 -9
  10. package/dist/analytics/index.mjs +2 -2
  11. package/dist/{chunk-XTRXH5OL.mjs → chunk-35MALWVX.mjs} +4 -4
  12. package/dist/{chunk-XTRXH5OL.mjs.map → chunk-35MALWVX.mjs.map} +1 -1
  13. package/dist/{chunk-7URAOG2M.js → chunk-4MOJJSNA.js} +5 -2
  14. package/dist/chunk-4MOJJSNA.js.map +1 -0
  15. package/dist/{chunk-CYZYPWGW.mjs → chunk-4X5TFGKD.mjs} +3 -3
  16. package/dist/{chunk-CYZYPWGW.mjs.map → chunk-4X5TFGKD.mjs.map} +1 -1
  17. package/dist/{chunk-RRBBMEDL.js → chunk-ELDJDBQL.js} +7 -7
  18. package/dist/{chunk-RRBBMEDL.js.map → chunk-ELDJDBQL.js.map} +1 -1
  19. package/dist/{chunk-KMLCQYEV.mjs → chunk-FI2ME55T.mjs} +3 -3
  20. package/dist/{chunk-KMLCQYEV.mjs.map → chunk-FI2ME55T.mjs.map} +1 -1
  21. package/dist/{chunk-3QKTOTWS.mjs → chunk-FMB2RZDH.mjs} +77 -37
  22. package/dist/chunk-FMB2RZDH.mjs.map +1 -0
  23. package/dist/{chunk-DKSHZ7TG.js → chunk-FTSXKDP3.js} +24 -20
  24. package/dist/chunk-FTSXKDP3.js.map +1 -0
  25. package/dist/{chunk-5NXUENL3.js → chunk-GJD4CFHN.js} +3 -3
  26. package/dist/{chunk-5NXUENL3.js.map → chunk-GJD4CFHN.js.map} +1 -1
  27. package/dist/{chunk-JGNQK2G6.mjs → chunk-JFTGG6HK.mjs} +5 -2
  28. package/dist/chunk-JFTGG6HK.mjs.map +1 -0
  29. package/dist/{chunk-LTTTIJPN.js → chunk-KJN2C6YE.js} +5 -5
  30. package/dist/{chunk-LTTTIJPN.js.map → chunk-KJN2C6YE.js.map} +1 -1
  31. package/dist/{chunk-35L6FXF5.mjs → chunk-KRPFLF62.mjs} +24 -20
  32. package/dist/chunk-KRPFLF62.mjs.map +1 -0
  33. package/dist/{chunk-J4K335PQ.mjs → chunk-M5FLRLHI.mjs} +3 -3
  34. package/dist/{chunk-J4K335PQ.mjs.map → chunk-M5FLRLHI.mjs.map} +1 -1
  35. package/dist/{chunk-WY346LOO.mjs → chunk-MCGLYYAR.mjs} +3 -3
  36. package/dist/{chunk-WY346LOO.mjs.map → chunk-MCGLYYAR.mjs.map} +1 -1
  37. package/dist/{chunk-RJTBSSZB.mjs → chunk-NRNK7LXK.mjs} +4 -4
  38. package/dist/{chunk-RJTBSSZB.mjs.map → chunk-NRNK7LXK.mjs.map} +1 -1
  39. package/dist/{chunk-466AL5CC.js → chunk-OE5DEMCV.js} +4 -4
  40. package/dist/{chunk-466AL5CC.js.map → chunk-OE5DEMCV.js.map} +1 -1
  41. package/dist/{chunk-BPXMOHVH.mjs → chunk-PM2KQ6YK.mjs} +3 -3
  42. package/dist/{chunk-BPXMOHVH.mjs.map → chunk-PM2KQ6YK.mjs.map} +1 -1
  43. package/dist/{chunk-PJKHCYI5.js → chunk-PTTDKFL7.js} +77 -37
  44. package/dist/chunk-PTTDKFL7.js.map +1 -0
  45. package/dist/{chunk-YBQT623Y.js → chunk-QW4RQHSK.js} +9 -7
  46. package/dist/chunk-QW4RQHSK.js.map +1 -0
  47. package/dist/{chunk-AWSVC7SP.js → chunk-TC6TOW2T.js} +4 -4
  48. package/dist/{chunk-AWSVC7SP.js.map → chunk-TC6TOW2T.js.map} +1 -1
  49. package/dist/{chunk-HNCSTGVK.mjs → chunk-TSK35UHV.mjs} +9 -7
  50. package/dist/chunk-TSK35UHV.mjs.map +1 -0
  51. package/dist/{chunk-YP5YVWAG.js → chunk-WW7UM7XY.js} +5 -5
  52. package/dist/{chunk-YP5YVWAG.js.map → chunk-WW7UM7XY.js.map} +1 -1
  53. package/dist/{chunk-6YW6EWMH.js → chunk-ZQO6FZZB.js} +3 -3
  54. package/dist/{chunk-6YW6EWMH.js.map → chunk-ZQO6FZZB.js.map} +1 -1
  55. package/dist/cli/index.js +10 -10
  56. package/dist/cli/index.js.map +1 -1
  57. package/dist/cli/index.mjs +4 -4
  58. package/dist/cli/index.mjs.map +1 -1
  59. package/dist/commerce/index.js +47 -47
  60. package/dist/commerce/index.mjs +3 -3
  61. package/dist/index.js +30 -30
  62. package/dist/index.mjs +4 -4
  63. package/dist/layout/client.js +2 -2
  64. package/dist/layout/client.mjs +1 -1
  65. package/dist/layout/index.js +6 -6
  66. package/dist/layout/index.mjs +3 -3
  67. package/dist/llms/index.js +12 -12
  68. package/dist/llms/index.mjs +2 -2
  69. package/dist/{scanner-LKJKW7IT.mjs → scanner-AF7YUCFG.mjs} +3 -3
  70. package/dist/{scanner-LKJKW7IT.mjs.map → scanner-AF7YUCFG.mjs.map} +1 -1
  71. package/dist/{scanner-GAF5PO5F.js → scanner-DBD5K6F7.js} +14 -14
  72. package/dist/{scanner-GAF5PO5F.js.map → scanner-DBD5K6F7.js.map} +1 -1
  73. package/dist/seo/client.d.mts +7 -1
  74. package/dist/seo/client.d.ts +7 -1
  75. package/dist/seo/client.js +2 -2
  76. package/dist/seo/client.mjs +1 -1
  77. package/dist/seo/index.d.mts +29 -4
  78. package/dist/seo/index.d.ts +29 -4
  79. package/dist/seo/index.js +42 -42
  80. package/dist/seo/index.mjs +5 -5
  81. package/dist/seo/register-sitemap-cli.js +1 -1
  82. package/dist/seo/register-sitemap-cli.js.map +1 -1
  83. package/dist/seo/register-sitemap-cli.mjs +1 -1
  84. package/dist/seo/register-sitemap-cli.mjs.map +1 -1
  85. package/dist/seo/server.js +4 -4
  86. package/dist/seo/server.mjs +2 -2
  87. package/dist/{server-api-FCTEQOTK.mjs → server-api-COVFLFZ2.mjs} +3 -3
  88. package/dist/{server-api-FCTEQOTK.mjs.map → server-api-COVFLFZ2.mjs.map} +1 -1
  89. package/dist/{server-api-SYINXTN7.js → server-api-XGKRGUMG.js} +21 -21
  90. package/dist/{server-api-SYINXTN7.js.map → server-api-XGKRGUMG.js.map} +1 -1
  91. package/dist/setup/index.js +2 -2
  92. package/dist/setup/index.mjs +1 -1
  93. package/dist/setup/server.js +2 -2
  94. package/dist/setup/server.mjs +1 -1
  95. package/dist/sitemap/index.d.mts +9 -0
  96. package/dist/sitemap/index.d.ts +9 -0
  97. package/dist/sitemap/index.js +157 -17
  98. package/dist/sitemap/index.js.map +1 -1
  99. package/dist/sitemap/index.mjs +157 -17
  100. package/dist/sitemap/index.mjs.map +1 -1
  101. package/package.json +3 -1
  102. package/dist/AnalyticsProvider-KJWDN6YO.js +0 -25
  103. package/dist/AnalyticsProvider-OXX23PK5.mjs +0 -4
  104. package/dist/SitemapSync-6I5JTLER.js +0 -13
  105. package/dist/SitemapSync-6L45DHRH.mjs +0 -4
  106. package/dist/chunk-35L6FXF5.mjs.map +0 -1
  107. package/dist/chunk-3QKTOTWS.mjs.map +0 -1
  108. package/dist/chunk-7URAOG2M.js.map +0 -1
  109. package/dist/chunk-DKSHZ7TG.js.map +0 -1
  110. package/dist/chunk-HNCSTGVK.mjs.map +0 -1
  111. package/dist/chunk-JGNQK2G6.mjs.map +0 -1
  112. package/dist/chunk-PJKHCYI5.js.map +0 -1
  113. package/dist/chunk-YBQT623Y.js.map +0 -1
@@ -53,7 +53,7 @@ async function parseSitemap(sitemapUrl, debug) {
53
53
  return [];
54
54
  }
55
55
  }
56
- async function syncToPortal(entries, apiUrl, apiKey, debug) {
56
+ async function syncToPortal(entries, apiUrl, apiKey, debug, mode = "additive") {
57
57
  if (!apiKey) {
58
58
  if (debug) console.warn("[SitemapSync] No API key configured");
59
59
  return { success: false, created: 0, updated: 0 };
@@ -74,7 +74,8 @@ async function syncToPortal(entries, apiUrl, apiKey, debug) {
74
74
  path: e.path,
75
75
  priority: e.priority,
76
76
  changefreq: e.changefreq
77
- }))
77
+ })),
78
+ mode
78
79
  })
79
80
  });
80
81
  if (!response.ok) {
@@ -98,7 +99,8 @@ async function syncToPortal(entries, apiUrl, apiKey, debug) {
98
99
  function SitemapSync({
99
100
  sitemapUrl = "/sitemap.xml",
100
101
  syncInterval = 60,
101
- debug = false
102
+ debug = false,
103
+ mode = "additive"
102
104
  }) {
103
105
  const hasSyncedRef = useRef(false);
104
106
  const intervalRef = useRef(null);
@@ -112,7 +114,7 @@ function SitemapSync({
112
114
  if (debug) console.log("[SitemapSync] Starting sitemap sync...");
113
115
  const entries = await parseSitemap(sitemapUrl, debug);
114
116
  if (entries.length > 0) {
115
- await syncToPortal(entries, apiUrl, apiKey, debug);
117
+ await syncToPortal(entries, apiUrl, apiKey, debug, mode);
116
118
  }
117
119
  };
118
120
  if (!hasSyncedRef.current) {
@@ -127,10 +129,10 @@ function SitemapSync({
127
129
  clearInterval(intervalRef.current);
128
130
  }
129
131
  };
130
- }, [sitemapUrl, syncInterval, debug]);
132
+ }, [sitemapUrl, syncInterval, debug, mode]);
131
133
  return null;
132
134
  }
133
135
 
134
136
  export { SitemapSync };
135
- //# sourceMappingURL=chunk-HNCSTGVK.mjs.map
136
- //# sourceMappingURL=chunk-HNCSTGVK.mjs.map
137
+ //# sourceMappingURL=chunk-TSK35UHV.mjs.map
138
+ //# sourceMappingURL=chunk-TSK35UHV.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/SitemapSync.tsx"],"names":[],"mappings":"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","file":"chunk-TSK35UHV.mjs","sourcesContent":["/**\n * SitemapSync - Automatically sync sitemap.xml to Portal API\n *\n * Client-only component. Lives at package root so the main entry does not\n * pull in seo/ (and server-only code). For use in SiteKitProvider and\n * from @sonordev/site-kit/seo.\n *\n * @example\n * ```tsx\n * import { SitemapSync } from '@sonordev/site-kit'\n * // or\n * import { SitemapSync } from '@sonordev/site-kit/seo'\n * ```\n */\n\n'use client'\n\nimport { useEffect, useRef } from 'react'\n\ninterface SitemapSyncProps {\n /** Custom sitemap URL (defaults to /sitemap.xml) */\n sitemapUrl?: string\n /** How often to re-sync in minutes (0 = only on mount, default: 60) */\n syncInterval?: number\n /** Enable debug logging */\n debug?: boolean\n /**\n * Sync mode:\n * - 'additive' (default for runtime): adds/updates pages but never deletes existing ones\n * - 'full-replace': replaces the entire page set (use only for build-time sync via createSitemap)\n */\n mode?: 'additive' | 'full-replace'\n}\n\ninterface SitemapEntry {\n path: string\n lastmod?: string\n changefreq?: string\n priority?: number\n}\n\nfunction getApiConfig() {\n if (typeof window === 'undefined') return { apiUrl: '', apiKey: '' }\n\n const apiUrl = (window as any).__SITE_KIT_API_URL__ || 'https://api.sonor.io'\n const apiKey = (window as any).__SITE_KIT_API_KEY__ || ''\n return { apiUrl, apiKey }\n}\n\nasync function parseSitemap(sitemapUrl: string, debug: boolean): Promise<SitemapEntry[]> {\n try {\n const response = await fetch(sitemapUrl)\n if (!response.ok) {\n if (debug) console.warn('[SitemapSync] Failed to fetch sitemap:', response.status)\n return []\n }\n\n const text = await response.text()\n const parser = new DOMParser()\n const doc = parser.parseFromString(text, 'application/xml')\n\n const parseError = doc.querySelector('parsererror')\n if (parseError) {\n if (debug) console.warn('[SitemapSync] Sitemap parse error:', parseError.textContent)\n return []\n }\n\n const urls = doc.querySelectorAll('url')\n const entries: SitemapEntry[] = []\n\n urls.forEach(url => {\n const loc = url.querySelector('loc')?.textContent\n if (!loc) return\n\n let path: string\n try {\n const urlObj = new URL(loc)\n path = urlObj.pathname\n } catch {\n path = loc.startsWith('/') ? loc : `/${loc}`\n }\n\n if (path !== '/' && path.endsWith('/')) {\n path = path.slice(0, -1)\n }\n\n const lastmod = url.querySelector('lastmod')?.textContent || undefined\n const changefreq = url.querySelector('changefreq')?.textContent || undefined\n const priorityStr = url.querySelector('priority')?.textContent\n const priority = priorityStr ? parseFloat(priorityStr) : undefined\n\n entries.push({ path, lastmod, changefreq, priority })\n })\n\n if (debug) {\n console.log(`[SitemapSync] Parsed ${entries.length} entries from sitemap`)\n }\n\n return entries\n } catch (error) {\n if (debug) console.error('[SitemapSync] Error parsing sitemap:', error)\n return []\n }\n}\n\nasync function syncToPortal(\n entries: SitemapEntry[],\n apiUrl: string,\n apiKey: string,\n debug: boolean,\n mode: 'additive' | 'full-replace' = 'additive'\n): Promise<{ success: boolean; created: number; updated: number }> {\n if (!apiKey) {\n if (debug) console.warn('[SitemapSync] No API key configured')\n return { success: false, created: 0, updated: 0 }\n }\n\n if (entries.length === 0) {\n if (debug) console.log('[SitemapSync] No entries to sync')\n return { success: true, created: 0, updated: 0 }\n }\n\n try {\n const response = await fetch(`${apiUrl}/api/public/seo/register-sitemap`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n },\n body: JSON.stringify({\n entries: entries.map(e => ({\n path: e.path,\n priority: e.priority,\n changefreq: e.changefreq,\n })),\n mode,\n }),\n })\n\n if (!response.ok) {\n if (debug) console.error('[SitemapSync] API error:', response.status, response.statusText)\n return { success: false, created: 0, updated: 0 }\n }\n\n const result = await response.json()\n\n if (debug) {\n console.log(`[SitemapSync] Synced: ${result.created} created, ${result.updated} updated`)\n }\n\n return {\n success: true,\n created: result.created || 0,\n updated: result.updated || 0,\n }\n } catch (error) {\n if (debug) console.error('[SitemapSync] Sync error:', error)\n return { success: false, created: 0, updated: 0 }\n }\n}\n\nexport function SitemapSync({\n sitemapUrl = '/sitemap.xml',\n syncInterval = 60,\n debug = false,\n mode = 'additive',\n}: SitemapSyncProps) {\n const hasSyncedRef = useRef(false)\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null)\n\n useEffect(() => {\n const doSync = async () => {\n const { apiUrl, apiKey } = getApiConfig()\n\n if (!apiKey) {\n if (debug) console.warn('[SitemapSync] No API key found')\n return\n }\n\n if (debug) console.log('[SitemapSync] Starting sitemap sync...')\n\n const entries = await parseSitemap(sitemapUrl, debug)\n\n if (entries.length > 0) {\n await syncToPortal(entries, apiUrl, apiKey, debug, mode)\n }\n }\n\n if (!hasSyncedRef.current) {\n hasSyncedRef.current = true\n doSync()\n }\n\n if (syncInterval > 0) {\n intervalRef.current = setInterval(doSync, syncInterval * 60 * 1000)\n }\n\n return () => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current)\n }\n }\n }, [sitemapUrl, syncInterval, debug, mode])\n\n return null\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkDKSHZ7TG_js = require('./chunk-DKSHZ7TG.js');
4
+ var chunkFTSXKDP3_js = require('./chunk-FTSXKDP3.js');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
  var React5 = require('react');
7
7
 
@@ -3111,7 +3111,7 @@ function ProductDetail({
3111
3111
  const [checkoutError, setCheckoutError] = React5.useState(null);
3112
3112
  const [showStickyBar, setShowStickyBar] = React5.useState(false);
3113
3113
  const buyButtonRef = React5.useRef(null);
3114
- const analytics = chunkDKSHZ7TG_js.useAnalyticsOptional();
3114
+ const analytics = chunkFTSXKDP3_js.useAnalyticsOptional();
3115
3115
  React5.useEffect(() => {
3116
3116
  if (propProduct) {
3117
3117
  setProduct(propProduct);
@@ -4482,7 +4482,7 @@ function CheckoutForm({
4482
4482
  const [discountResult, setDiscountResult] = React5.useState(null);
4483
4483
  const [applyingDiscount, setApplyingDiscount] = React5.useState(false);
4484
4484
  const isProduct = offering.type === "product";
4485
- const analytics = chunkDKSHZ7TG_js.useAnalyticsOptional();
4485
+ const analytics = chunkFTSXKDP3_js.useAnalyticsOptional();
4486
4486
  React5.useEffect(() => {
4487
4487
  fetchProcessorConfig().then((config) => {
4488
4488
  if (config?.processor) setProcessor(config.processor);
@@ -6899,5 +6899,5 @@ exports.registerForEvent = registerForEvent;
6899
6899
  exports.useEventModal = useEventModal;
6900
6900
  exports.validateAddress = validateAddress;
6901
6901
  exports.validateDiscountCode = validateDiscountCode;
6902
- //# sourceMappingURL=chunk-YP5YVWAG.js.map
6903
- //# sourceMappingURL=chunk-YP5YVWAG.js.map
6902
+ //# sourceMappingURL=chunk-WW7UM7XY.js.map
6903
+ //# sourceMappingURL=chunk-WW7UM7XY.js.map