@sonordev/site-kit 8.6.0 → 8.8.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/CHANGELOG.md +17 -0
- package/agent-manifest.json +1 -1
- package/dist/{AnalyticsProvider-GVJYL6XY.js → AnalyticsProvider-7SBJ27SI.js} +6 -6
- package/dist/{ArticleViewTracker-AOJXEBYM.js → ArticleViewTracker-PV2RD3P6.js} +5 -5
- package/dist/{BlocksPopup-AJ3CKVQG.js → BlocksPopup-NEEFV2L3.js} +9 -8
- package/dist/{ChatWidget-EYBVB5SZ.js → ChatWidget-V46UBDOM.js} +5 -5
- package/dist/{FileField-UEQYIFRO.js → FileField-MJ3RCNFJ.js} +3 -3
- package/dist/{FormSpotlight-H73ZZ66T.js → FormSpotlight-NQPQFZS7.js} +1 -1
- package/dist/{FormStage-2PLWWYBW.js → FormStage-4T5PJR5K.js} +1 -1
- package/dist/{ManagedForm-ZQOFXEWS.js → ManagedForm-DDDVMKLJ.js} +6 -6
- package/dist/{ManagedNewsletterForm-5TE47YZD.js → ManagedNewsletterForm-TUYGN6O3.js} +9 -9
- package/dist/{SignalCore-FEFNMNYN.js → SignalCore-OW3YIH6M.js} +5 -5
- package/dist/SiteChat-XMKHBSEK.js +6 -0
- package/dist/SiteDesignReporter-BRH7ORQS.js +13 -0
- package/dist/{SitePopups-C44YTQ3Q.js → SitePopups-VU2C3Z6B.js} +6 -6
- package/dist/SitemapSync-C4H3HF3L.js +9 -0
- package/dist/_client/booking-widget.js +5 -5
- package/dist/admin-auth/index.d.ts +2 -2
- package/dist/admin-auth/session.d.ts +2 -2
- package/dist/affiliates/index.js +3 -3
- package/dist/analytics/content-text.d.ts +17 -0
- package/dist/analytics/index.js +6 -6
- package/dist/{article-styles-VASFBYA3.js → article-styles-D7VCDXMG.js} +2 -1
- package/dist/article-tables-W45BE353.js +3 -0
- package/dist/articles/index.js +7 -20
- package/dist/articles/server-ui.js +29 -55
- package/dist/articles/server.js +6 -5
- package/dist/chat/index.js +8 -8
- package/dist/{chunk-3RDJKIYO.js → chunk-2WDWQI7K.js} +1 -1
- package/dist/{chunk-KTMHRXDT.js → chunk-2WM4TNDF.js} +1 -1
- package/dist/chunk-3MJNBOUO.js +8 -0
- package/dist/{chunk-BF7TZYC3.js → chunk-52KO4LKD.js} +1 -1
- package/dist/chunk-64XODP7M.js +7 -0
- package/dist/{chunk-DSD3XZQQ.js → chunk-6BFQI3ZE.js} +3 -3
- package/dist/{chunk-QNOJSSQT.js → chunk-6DXQHNZK.js} +1 -1
- package/dist/{chunk-5D7ZISUP.js → chunk-7DYMM6SS.js} +11 -6
- package/dist/{chunk-QQT2T6JQ.js → chunk-7HW4TZB5.js} +1 -1
- package/dist/{chunk-E4PTMORJ.js → chunk-AL5UCWLI.js} +23 -8
- package/dist/chunk-AYQEIMGS.js +390 -0
- package/dist/{chunk-L6QTERSH.js → chunk-DYROJGI2.js} +1 -1
- package/dist/{chunk-XA7Q2VQA.js → chunk-EK7P62DT.js} +1 -1
- package/dist/{chunk-BUE3Z32O.js → chunk-F6WLHVMQ.js} +1 -1
- package/dist/{chunk-IYCSDFPN.js → chunk-FLOJUMFR.js} +2 -2
- package/dist/{chunk-7R2STOVD.js → chunk-G7BRCSV6.js} +3 -3
- package/dist/{chunk-NI6ZTP3D.js → chunk-GQN4BGK6.js} +1 -1
- package/dist/{chunk-GFY3E7EQ.js → chunk-GXWM5KNS.js} +15 -7
- package/dist/{chunk-U34O6I7W.js → chunk-HN7GVGWC.js} +3 -3
- package/dist/{chunk-6KU7STM3.js → chunk-HY7ZEU2C.js} +3 -1
- package/dist/chunk-IBHBEUZV.js +27 -0
- package/dist/{chunk-ZZSAWXWD.js → chunk-IDC5CVBR.js} +1 -1
- package/dist/{chunk-HMTPRBYJ.js → chunk-IWNJCRXW.js} +1 -1
- package/dist/chunk-JESLPEST.js +14 -0
- package/dist/{chunk-BC7JMY4Z.js → chunk-JG53YJLM.js} +58 -1
- package/dist/{chunk-RI2N2EBI.js → chunk-JYITKUUB.js} +13 -5
- package/dist/{chunk-V67OD7RW.js → chunk-KG5IEV7I.js} +113 -93
- package/dist/chunk-KIYACQW3.js +1 -0
- package/dist/{chunk-JSW42BHL.js → chunk-M5JIHQ42.js} +1 -1
- package/dist/{chunk-YJH6WE76.js → chunk-NFGAXWCN.js} +9 -9
- package/dist/{chunk-Y35BWW2C.js → chunk-ODOV76VW.js} +1 -1
- package/dist/{chunk-VA6IJ55K.js → chunk-OPUY4RS6.js} +1 -1
- package/dist/{chunk-6NXFA7HE.js → chunk-OWZWRP7Y.js} +2 -2
- package/dist/{chunk-JJ4JS3LD.js → chunk-PAYCK7FC.js} +1 -1
- package/dist/{chunk-72F44HKL.js → chunk-PSS6M4CG.js} +1 -1
- package/dist/{chunk-O3Z5HHFP.js → chunk-SBPUFTMP.js} +2 -2
- package/dist/{chunk-OFSV5TZY.js → chunk-SHAUX2MQ.js} +1 -1
- package/dist/{chunk-OWO3RFEX.js → chunk-SLFYTELD.js} +1 -1
- package/dist/{chunk-CMUD37WV.js → chunk-SVHPILS3.js} +1 -1
- package/dist/{chunk-YNBRVVTX.js → chunk-THXELZTQ.js} +1 -1
- package/dist/{chunk-IGAIQ2B3.js → chunk-TP32MRXV.js} +2 -2
- package/dist/{chunk-NUXXFCIT.js → chunk-URLTBVRX.js} +4 -4
- package/dist/chunk-XAZC2TUD.js +1119 -0
- package/dist/{chunk-URJN75ZG.js → chunk-XIDWNXZN.js} +3 -3
- package/dist/chunk-XLAHRN4B.js +1 -0
- package/dist/chunk-XS2ORMUG.js +32 -0
- package/dist/{chunk-6AWIUO2Z.js → chunk-Y6SHFILE.js} +1 -1
- package/dist/{chunk-FTSEP7Q3.js → chunk-YEX5RAEU.js} +3 -3
- package/dist/{chunk-AJG74ZZV.js → chunk-YRQS7VAH.js} +1 -1
- package/dist/{chunk-DLM4FFNH.js → chunk-ZQSCMYZO.js} +1 -1
- package/dist/client/index.js +4 -4
- package/dist/contracts/campaign-normalize.d.ts +2 -0
- package/dist/contracts/entries.d.ts +1 -1
- package/dist/contracts/frame-ready.d.ts +23 -0
- package/dist/contracts/funnels.d.ts +576 -0
- package/dist/contracts/inbox.d.ts +42 -0
- package/dist/contracts/llms.d.ts +200 -0
- package/dist/contracts/portfolio.d.ts +361 -8
- package/dist/contracts/publication-branding.d.ts +10 -2
- package/dist/contracts/site-cache.d.ts +2 -0
- package/dist/fleet/index.js +6 -6
- package/dist/forms/index.js +9 -9
- package/dist/forms/server.js +2 -2
- package/dist/images/index.js +4 -4
- package/dist/index.js +1 -1
- package/dist/landing/contract.d.ts +2 -13
- package/dist/landing/contract.js +2 -0
- package/dist/landing/index.js +4 -2
- package/dist/landing/managed-server.d.ts +21 -0
- package/dist/landing/managed.d.ts +11 -0
- package/dist/landing/metadata.js +2 -0
- package/dist/landing/server.d.ts +5 -0
- package/dist/landing/server.js +20 -2
- package/dist/layout/client.js +9 -9
- package/dist/layout/index.js +10 -10
- package/dist/llms/contract.js +2 -1
- package/dist/llms/index.js +9 -7
- package/dist/llms/merge.d.ts +29 -0
- package/dist/maps/index.js +3 -3
- package/dist/mcp/sonor.js +9 -8
- package/dist/og/pages.d.ts +3 -3
- package/dist/portfolio/contract.js +705 -1
- package/dist/press-kit/articles/article-body.d.ts +12 -0
- package/dist/press-kit/articles/article-heading-ids.d.ts +7 -0
- package/dist/press-kit/articles/article-headings.d.ts +61 -0
- package/dist/press-kit/articles/html-tags.d.ts +46 -0
- package/dist/press-kit/articles/types.d.ts +2 -0
- package/dist/revalidate/index.js +3 -3
- package/dist/runtime/index.js +3 -3
- package/dist/seo/client.js +6 -6
- package/dist/seo/index.js +14 -13
- package/dist/seo/llms/contract.js +2 -1
- package/dist/seo/llms.js +9 -7
- package/dist/seo/meta/contract.js +2 -1
- package/dist/seo/register-sitemap-cli.js +1 -1
- package/dist/seo/server.js +5 -4
- package/dist/seo/sitemap.js +7 -5
- package/dist/seo-meta/contract.js +2 -1
- package/dist/server/index.js +3 -3
- package/dist/{server-api-EGOKC7Q3.js → server-api-XIKDWSNO.js} +2 -2
- package/dist/shared/build-entries.d.ts +3 -1
- package/dist/shared/frame.d.ts +1 -1
- package/dist/shared/markdown.d.ts +7 -6
- package/dist/shared/source-graph.d.ts +5 -5
- package/dist/shared/version.d.ts +1 -1
- package/dist/signal/index.js +2 -2
- package/dist/sitemap/index.js +7 -5
- package/dist/sitemap/shared.d.ts +1 -2
- package/dist/slots/index.js +2 -2
- package/dist/sync/index.js +5 -5
- package/dist/website/contract.js +2 -1
- package/dist/website/images.js +4 -4
- package/dist/website/index.js +10 -9
- package/dist/website/landing/server.js +20 -2
- package/dist/website/landing.js +4 -2
- package/dist/website/popups.js +9 -8
- package/dist/website/slots.js +2 -2
- package/dist/{writeLLMsTxt-KHVHNSDM.js → writeLLMsTxt-4HHUAOA6.js} +6 -4
- package/docs.json +5 -0
- package/package.json +1 -1
- package/src/analytics/README.md +1 -1
- package/src/landing/README.md +64 -0
- package/src/llms/README.md +52 -20
- package/dist/SiteChat-3MKYL2XM.js +0 -6
- package/dist/SiteDesignReporter-AJDIBNHI.js +0 -12
- package/dist/SitemapSync-UJA6JVPW.js +0 -9
- package/dist/article-tables-6XHVULPU.js +0 -2
- package/dist/chunk-EKBEOXTH.js +0 -114
- package/dist/chunk-NZ4RXN3G.js +0 -145
- package/dist/chunk-OSYCOC3K.js +0 -21
- /package/dist/{chunk-7ZWO5HDQ.js → chunk-BTHEQDN4.js} +0 -0
- /package/dist/{chunk-BQR4IPBW.js → chunk-ISRBSTB7.js} +0 -0
- /package/dist/{chunk-IHG36STL.js → chunk-XHYE24HU.js} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getSEOPageData, ensureMetadata, getABTest, recordABImpression, getRedirectData, getRobotsData, getSitemapEntries } from './chunk-
|
|
2
|
-
import { titleProblem, descriptionProblem } from './chunk-
|
|
1
|
+
import { getSEOPageData, ensureMetadata, getABTest, recordABImpression, getRedirectData, getRobotsData, getSitemapEntries } from './chunk-ODOV76VW.js';
|
|
2
|
+
import { titleProblem, descriptionProblem } from './chunk-ISRBSTB7.js';
|
|
3
3
|
import { resolveSiteHost } from './chunk-FESKKJAS.js';
|
|
4
4
|
|
|
5
5
|
// src/seo/getManagedMetadata.ts
|
|
@@ -232,7 +232,7 @@ async function generateSitemap(options) {
|
|
|
232
232
|
}));
|
|
233
233
|
}
|
|
234
234
|
async function registerLocalSitemap(options) {
|
|
235
|
-
const { registerSitemap } = await import('./server-api-
|
|
235
|
+
const { registerSitemap } = await import('./server-api-XIKDWSNO.js');
|
|
236
236
|
let entries = options.entries || [];
|
|
237
237
|
if (options.autoDiscover && entries.length === 0) {
|
|
238
238
|
try {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// src/contracts/public-url-host.ts
|
|
2
|
+
function isPrivateIpv4(a, b) {
|
|
3
|
+
return a === 127 || a === 10 || a === 0 || a === 192 && b === 168 || a === 172 && b >= 16 && b <= 31 || a === 169 && b === 254 || a === 100 && b >= 64 && b <= 127 || a >= 224;
|
|
4
|
+
}
|
|
5
|
+
function ipv6Words(host) {
|
|
6
|
+
if (!host.includes(":") || !/^[a-f\d:.]+$/.test(host)) return null;
|
|
7
|
+
let canonical;
|
|
8
|
+
try {
|
|
9
|
+
canonical = new URL(`http://[${host}]/`).hostname.slice(1, -1);
|
|
10
|
+
} catch {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
const sides = canonical.split("::");
|
|
14
|
+
const left = sides[0] ? sides[0].split(":") : [];
|
|
15
|
+
const right = sides.length > 1 && sides[1] ? sides[1].split(":") : [];
|
|
16
|
+
return [...left, ...Array(sides.length > 1 ? 8 - left.length - right.length : 0).fill("0"), ...right].map((word) => parseInt(word, 16));
|
|
17
|
+
}
|
|
18
|
+
function isBlockedPublicUrlHost(rawHost) {
|
|
19
|
+
const host = rawHost.toLowerCase().replace(/^\[|\]$/g, "");
|
|
20
|
+
const blockedName = host === "localhost" || host.endsWith(".localhost") || host.endsWith(".local") || host.endsWith(".internal");
|
|
21
|
+
if (host.includes(":") && host.includes("%")) return true;
|
|
22
|
+
const ipv4 = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(host);
|
|
23
|
+
const blockedIp = !!ipv4 && isPrivateIpv4(Number(ipv4[1]), Number(ipv4[2]));
|
|
24
|
+
const words = ipv6Words(host);
|
|
25
|
+
const blockedIpv6 = !!words && // Unspecified/loopback, unique-local, link-local, deprecated site-local
|
|
26
|
+
// and multicast destinations aren't public logo/webhook endpoints.
|
|
27
|
+
(words.every((word) => word === 0) || words.slice(0, 7).every((word) => word === 0) && words[7] === 1 || (words[0] & 65024) === 64512 || (words[0] & 65472) === 65152 || (words[0] & 65472) === 65216 || (words[0] & 65280) === 65280 || // IPv4-mapped and older IPv4-compatible forms carry an IPv4 destination.
|
|
28
|
+
words.slice(0, 5).every((word) => word === 0) && [0, 65535].includes(words[5]) && isPrivateIpv4(words[6] >> 8, words[6] & 255));
|
|
29
|
+
return blockedName || blockedIp || blockedIpv6;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { isBlockedPublicUrlHost };
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { DEFAULT_WIDGET_Z_INDEX } from './chunk-27FISYK4.js';
|
|
3
3
|
import { readAnalyticsIdentity } from './chunk-5ROTTMBL.js';
|
|
4
4
|
import { getOrCreateVisitorId } from './chunk-IPQKQEWI.js';
|
|
5
|
-
import { resolveAnalyticsTarget } from './chunk-
|
|
6
|
-
import { sonorFetch } from './chunk-
|
|
5
|
+
import { resolveAnalyticsTarget } from './chunk-ZQSCMYZO.js';
|
|
6
|
+
import { sonorFetch } from './chunk-FLOJUMFR.js';
|
|
7
7
|
import { useState, useEffect, useCallback, useRef } from 'react';
|
|
8
8
|
import ReactDOM from 'react-dom';
|
|
9
9
|
import dynamic from 'next/dynamic';
|
|
@@ -161,7 +161,7 @@ function activatePopup(active, id, popups) {
|
|
|
161
161
|
return [...active, id];
|
|
162
162
|
}
|
|
163
163
|
var LazyBlocksPopup = dynamic(
|
|
164
|
-
() => import('./BlocksPopup-
|
|
164
|
+
() => import('./BlocksPopup-NEEFV2L3.js').then((m) => ({ default: m.BlocksPopup })),
|
|
165
165
|
{ ssr: false }
|
|
166
166
|
);
|
|
167
167
|
function SitePopups(props) {
|
package/dist/client/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
export { SiteKitCredential } from '../chunk-
|
|
3
|
-
import '../chunk-
|
|
2
|
+
export { SiteKitCredential } from '../chunk-Y6SHFILE.js';
|
|
3
|
+
import '../chunk-OPUY4RS6.js';
|
|
4
4
|
export { VISUAL_VIEWPORT_GAP_PROPERTY, VisualViewportGap, useVisualViewportGap } from '../chunk-6T6CQVNL.js';
|
|
5
5
|
export { useDeferredActivation } from '../chunk-YC7ELZS3.js';
|
|
6
6
|
import '../chunk-FESKKJAS.js';
|
|
@@ -9,6 +9,6 @@ export { trackConversion, trackEvent } from '../chunk-LCDVPAMR.js';
|
|
|
9
9
|
export { getOrCreateSessionId, getOrCreateVisitorId, useSiteKitIdentity } from '../chunk-IPQKQEWI.js';
|
|
10
10
|
import '../chunk-GJWI74ZZ.js';
|
|
11
11
|
import '../chunk-5TM3WPCI.js';
|
|
12
|
-
import '../chunk-
|
|
13
|
-
import '../chunk-
|
|
12
|
+
import '../chunk-7HW4TZB5.js';
|
|
13
|
+
import '../chunk-F6WLHVMQ.js';
|
|
14
14
|
import '../chunk-PKBMQBKP.js';
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
* tsup config, its package.json check and the boundary test, so a new
|
|
5
5
|
* contract is added in one place.
|
|
6
6
|
*/
|
|
7
|
-
export declare const CONTRACT_ENTRIES: readonly ['forms', 'llms', 'slots', 'slot-content', 'site-cache', 'site-edit', 'website', 'color', 'fleet', 'sites', 'seo-pages', 'seo-meta', 'portfolio', 'voice', 'proposal-sitemap', 'error-page', 'schema-placeholders', 'sentences', 'knowledge', 'editorial-media', 'business-claims', 'outreach', 'page-titles', 'broadcast-layouts', 'publication-branding', 'public-url-host'];
|
|
7
|
+
export declare const CONTRACT_ENTRIES: readonly ['forms', 'llms', 'slots', 'slot-content', 'site-cache', 'site-edit', 'website', 'color', 'fleet', 'sites', 'seo-pages', 'seo-meta', 'portfolio', 'voice', 'proposal-sitemap', 'error-page', 'schema-placeholders', 'sentences', 'knowledge', 'editorial-media', 'business-claims', 'outreach', 'page-titles', 'broadcast-layouts', 'publication-branding', 'public-url-host', 'inbox', 'funnels'];
|
|
8
8
|
export type ContractEntry = (typeof CONTRACT_ENTRIES)[number];
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The live-frame handshake, on its own so it stays small.
|
|
3
|
+
*
|
|
4
|
+
* A site-kit page framed by another origin posts FRAME_READY_MESSAGE to its
|
|
5
|
+
* embedder once it has painted (shared/frame.ts, announceFrameReady); a case
|
|
6
|
+
* study's device frames (the portfolio renderers) are the ones listening.
|
|
7
|
+
*
|
|
8
|
+
* This is a leaf module on purpose. shared/frame.ts runs in every page's
|
|
9
|
+
* analytics and layout graph, and `./portfolio` is a large module of case
|
|
10
|
+
* study rules: importing the message from there put all of it in every
|
|
11
|
+
* page's eager bundle. Single source of truth for the message: `./portfolio`
|
|
12
|
+
* re-exports it (so `@sonordev/contracts/portfolio` and
|
|
13
|
+
* `@sonordev/site-kit/portfolio/contract` still carry it) and shared/frame.ts
|
|
14
|
+
* imports it from here. Keep it free of other imports.
|
|
15
|
+
*/
|
|
16
|
+
/** The message a cross-origin-framed site-kit page posts to its embedder once it has painted. */
|
|
17
|
+
export declare const FRAME_READY_MESSAGE: 'sonor:frame-ready';
|
|
18
|
+
export interface FrameReadyMessage {
|
|
19
|
+
type: typeof FRAME_READY_MESSAGE;
|
|
20
|
+
v: 1;
|
|
21
|
+
}
|
|
22
|
+
/** True for a {@link FrameReadyMessage}, for the embedder's message handler. */
|
|
23
|
+
export declare function isFrameReadyMessage(data: unknown): data is FrameReadyMessage;
|