@sonordev/site-kit 8.8.0 → 8.9.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 +22 -0
- package/README.md +9 -0
- package/agent-manifest.json +8 -1
- package/dist/AnalyticsProvider-X7JJN3QL.js +19 -0
- package/dist/{ArticleViewTracker-PV2RD3P6.js → ArticleViewTracker-7Q6AMCKX.js} +11 -10
- package/dist/{BlocksPopup-NEEFV2L3.js → BlocksPopup-U5VIYEBA.js} +4 -5
- package/dist/ChatWidget-EAATOFCT.js +30 -0
- package/dist/{FileField-MJ3RCNFJ.js → FileField-YWMSK7RF.js} +1 -3
- package/dist/{FormSpotlight-NQPQFZS7.js → FormSpotlight-MAXDW3TK.js} +1 -1
- package/dist/{FormStage-4T5PJR5K.js → FormStage-VAHRVOIZ.js} +1 -1
- package/dist/ManagedForm-7IZT7ZII.js +29 -0
- package/dist/{ManagedNewsletterForm-TUYGN6O3.js → ManagedNewsletterForm-VVXZSEAL.js} +21 -11
- package/dist/{SignalCore-OW3YIH6M.js → SignalCore-HAN4O7QG.js} +90 -36
- package/dist/{SiteChat-XMKHBSEK.js → SiteChat-3JLCEL2N.js} +2 -2
- package/dist/{SiteDesignReporter-BRH7ORQS.js → SiteDesignReporter-6CCO645E.js} +5 -6
- package/dist/SitePopups-ZGHQNGGH.js +19 -0
- package/dist/SitemapSync-5LSYCBKS.js +7 -0
- package/dist/SitemapSync.d.ts +1 -1
- package/dist/_client/booking-widget.d.ts +1 -1
- package/dist/_client/booking-widget.js +6 -7
- package/dist/_client/reviewed-signal-experiment.d.ts +9 -0
- package/dist/_client/reviewed-signal-experiment.js +89 -0
- package/dist/_client/testimonial-section.d.ts +1 -1
- package/dist/admin-auth/index.d.ts +3 -3
- package/dist/affiliates/AffiliatesWidget.d.ts +1 -1
- package/dist/affiliates/api.d.ts +1 -1
- package/dist/affiliates/index.d.ts +6 -6
- package/dist/affiliates/index.js +1 -3
- package/dist/affiliates/useAffiliates.d.ts +1 -1
- package/dist/analytics/AnalyticsProvider.d.ts +1 -1
- package/dist/analytics/dispatch.d.ts +1 -1
- package/dist/analytics/index.d.ts +6 -6
- package/dist/analytics/index.js +22 -12
- package/dist/analytics/publication-cta.d.ts +1 -1
- package/dist/analytics/send-gate.d.ts +8 -4
- package/dist/articles/Article.d.ts +1 -1
- package/dist/articles/ArticleFAQ.d.ts +1 -1
- package/dist/articles/ArticleFaqSection.d.ts +1 -1
- package/dist/articles/ArticleList.d.ts +1 -1
- package/dist/articles/ArticleViewTracker.d.ts +1 -1
- package/dist/articles/AuthorCard.d.ts +1 -1
- package/dist/articles/AuthorPage.d.ts +1 -1
- package/dist/articles/ClusterLandingPage.d.ts +1 -1
- package/dist/articles/ClusterNavigation.d.ts +1 -1
- package/dist/articles/ManagedNewsletterForm.d.ts +2 -2
- package/dist/articles/NewsletterShell.d.ts +1 -1
- package/dist/articles/NewsletterWidget.d.ts +1 -1
- package/dist/articles/PublicationLayout.d.ts +1 -1
- package/dist/articles/PublicationSidebar.d.ts +1 -1
- package/dist/articles/RelatedPosts.d.ts +1 -1
- package/dist/articles/ServiceCallout.d.ts +1 -1
- package/dist/articles/TableOfContents.d.ts +1 -1
- package/dist/articles/article-photos.d.ts +1 -1
- package/dist/articles/article-styles.d.ts +1 -1
- package/dist/articles/article-tables.d.ts +1 -1
- package/dist/articles/artwork.d.ts +1 -1
- package/dist/articles/author-schema.d.ts +1 -1
- package/dist/articles/author-social.d.ts +1 -1
- package/dist/articles/excerpt.d.ts +1 -1
- package/dist/articles/index.d.ts +1 -1
- package/dist/articles/index.js +3 -3
- package/dist/articles/news-sitemap.d.ts +1 -1
- package/dist/articles/processArticleHtml.d.ts +1 -1
- package/dist/articles/public-reads.d.ts +1 -1
- package/dist/articles/reading-time.d.ts +1 -1
- package/dist/articles/routes.d.ts +1 -1
- package/dist/articles/server-core.d.ts +1 -1
- package/dist/articles/server-ui.d.ts +1 -1
- package/dist/articles/server-ui.js +6 -6
- package/dist/articles/server.d.ts +1 -1
- package/dist/articles/server.js +5 -5
- package/dist/articles/types.d.ts +1 -1
- package/dist/articles/widget-styles.d.ts +1 -1
- package/dist/brand/extract-brand-profile.d.ts +1 -1
- package/dist/chat/ChatWidget.d.ts +1 -1
- package/dist/chat/EchoUiActions.d.ts +1 -1
- package/dist/chat/SiteChat.d.ts +2 -2
- package/dist/chat/chat-messages.d.ts +1 -1
- package/dist/chat/index.d.ts +7 -7
- package/dist/chat/index.js +17 -9
- package/dist/chat/launcher-placement.d.ts +1 -1
- package/dist/{chunk-OPUY4RS6.js → chunk-2LBKIE2K.js} +2 -1
- package/dist/{chunk-XIDWNXZN.js → chunk-3W3MN6Z7.js} +2 -2
- package/dist/{chunk-UPFU63L4.js → chunk-55GFMOI6.js} +1 -1
- package/dist/chunk-5IVD6G77.js +37 -0
- package/dist/{chunk-URLTBVRX.js → chunk-6EDE7BOE.js} +3 -3
- package/dist/{chunk-DYROJGI2.js → chunk-6NLVHTYY.js} +1 -1
- package/dist/{chunk-ZQSCMYZO.js → chunk-7643MCD2.js} +6 -3
- package/dist/chunk-7IZUUXXO.js +1 -0
- package/dist/{chunk-C7TLGL3R.js → chunk-7VMA3KCN.js} +30 -4
- package/dist/{chunk-OWZWRP7Y.js → chunk-ADQ3VCKK.js} +2 -2
- package/dist/chunk-AG2RDHYZ.js +45 -0
- package/dist/chunk-AWLPFFPO.js +36 -0
- package/dist/{chunk-LNSNA3W4.js → chunk-C4XK472G.js} +4 -3
- package/dist/{chunk-TP32MRXV.js → chunk-CJ43K7RA.js} +2 -2
- package/dist/chunk-D4M5K6JN.js +25 -0
- package/dist/{chunk-F6WLHVMQ.js → chunk-DXE6SXWW.js} +1 -1
- package/dist/{chunk-YEX5RAEU.js → chunk-EBEM5BI5.js} +38 -27
- package/dist/chunk-F3RKFGRW.js +2 -0
- package/dist/chunk-FAY6MOLL.js +62 -0
- package/dist/chunk-FRY6PBT6.js +31 -0
- package/dist/{chunk-JYITKUUB.js → chunk-G5WUX7VE.js} +1 -1
- package/dist/chunk-HJD6KXKH.js +147 -0
- package/dist/{chunk-6BFQI3ZE.js → chunk-IO6BWRZ5.js} +2 -2
- package/dist/{chunk-THXELZTQ.js → chunk-ISMHDUBW.js} +1 -1
- package/dist/{chunk-SLFYTELD.js → chunk-J4LJE4NB.js} +1 -1
- package/dist/{chunk-LQJC5S2M.js → chunk-J6D3NEDE.js} +57 -0
- package/dist/chunk-JT7GHHMV.js +56 -0
- package/dist/{chunk-NFGAXWCN.js → chunk-KGIQYVQ2.js} +31 -13
- package/dist/chunk-KMNHNCVG.js +20 -0
- package/dist/chunk-KQKUXIUD.js +25 -0
- package/dist/{chunk-M5JIHQ42.js → chunk-L3S5WH4C.js} +2 -2
- package/dist/chunk-MDBXGN6W.js +13 -0
- package/dist/chunk-MOACHHOJ.js +20 -0
- package/dist/{chunk-6DXQHNZK.js → chunk-MP35JETP.js} +1 -1
- package/dist/chunk-NHDRA4Y5.js +6 -0
- package/dist/{chunk-AYQEIMGS.js → chunk-NZHECYLF.js} +103 -22
- package/dist/{chunk-EATJPSTS.js → chunk-O5LQUBBN.js} +1 -1
- package/dist/{chunk-Y6SHFILE.js → chunk-OEOSR5EG.js} +1 -1
- package/dist/{chunk-GQN4BGK6.js → chunk-OUD4RTBD.js} +1 -1
- package/dist/chunk-PMXQPO5Q.js +78 -0
- package/dist/chunk-PVY7X5UR.js +21 -0
- package/dist/{chunk-KG5IEV7I.js → chunk-QLJ2SC3T.js} +1 -1
- package/dist/{chunk-2WM4TNDF.js → chunk-QXAJPB6O.js} +1 -1
- package/dist/{chunk-2WDWQI7K.js → chunk-RYR6N4X4.js} +1 -1
- package/dist/{chunk-G7BRCSV6.js → chunk-S33CUULL.js} +3 -3
- package/dist/{chunk-YRQS7VAH.js → chunk-S63QY5XW.js} +2 -2
- package/dist/{chunk-GXWM5KNS.js → chunk-SO6RSRUP.js} +40 -45
- package/dist/{chunk-ODOV76VW.js → chunk-STIVFCWM.js} +1 -1
- package/dist/{chunk-SVHPILS3.js → chunk-T4A5J6SJ.js} +1 -1
- package/dist/chunk-TPHOIE4I.js +73 -0
- package/dist/{chunk-IWNJCRXW.js → chunk-UG53ZW7S.js} +125 -118
- package/dist/chunk-VXCUXHZO.js +9 -0
- package/dist/{chunk-SBPUFTMP.js → chunk-WHFWDK2H.js} +2 -2
- package/dist/chunk-WYNDBJG7.js +66 -0
- package/dist/{chunk-HN7GVGWC.js → chunk-XDH5B3PR.js} +3 -3
- package/dist/{chunk-PAYCK7FC.js → chunk-XJZLXUTG.js} +1 -1
- package/dist/{chunk-IDC5CVBR.js → chunk-YVEYO3OD.js} +1 -1
- package/dist/{chunk-PSS6M4CG.js → chunk-ZRSXCT4O.js} +2 -2
- package/dist/client/index.d.ts +8 -8
- package/dist/client/index.js +9 -8
- package/dist/config/index.d.ts +1 -1
- package/dist/contracts/broadcast-layouts.d.ts +8 -0
- package/dist/contracts/crm-disposition.d.ts +87 -0
- package/dist/contracts/decision-roles.d.ts +39 -0
- package/dist/contracts/entries.d.ts +1 -1
- package/dist/contracts/funnels.d.ts +85 -2
- package/dist/contracts/portfolio.d.ts +1 -1
- package/dist/contracts/publication-branding.d.ts +3 -3
- package/dist/contracts/resonance-constants.d.ts +4 -0
- package/dist/contracts/resonance.d.ts +8461 -0
- package/dist/contracts/signal-experiments.d.ts +219 -0
- package/dist/contracts/site-edit.d.ts +2 -2
- package/dist/contracts/sites.d.ts +1 -1
- package/dist/contracts/slots.d.ts +2 -2
- package/dist/contracts/wire-schema.d.ts +36 -0
- package/dist/cta-bar/CtaBar.d.ts +1 -1
- package/dist/cta-bar/client.js +3 -2
- package/dist/cta-bar/index.d.ts +4 -4
- package/dist/cta-bar/index.js +4 -3
- package/dist/fleet/FleetHeartbeat.d.ts +2 -2
- package/dist/fleet/contract.d.ts +1 -1
- package/dist/fleet/heartbeat.d.ts +2 -2
- package/dist/fleet/index.d.ts +6 -6
- package/dist/fleet/index.js +4 -5
- package/dist/forms/FileField.d.ts +1 -1
- package/dist/forms/FormClient.d.ts +2 -2
- package/dist/forms/FormEnhancer.d.ts +1 -1
- package/dist/forms/FormField.d.ts +1 -1
- package/dist/forms/FormSpotlight.d.ts +1 -1
- package/dist/forms/FormStage.d.ts +1 -1
- package/dist/forms/ManagedForm.d.ts +1 -1
- package/dist/forms/PrivateFileField.d.ts +1 -1
- package/dist/forms/ServerForm.d.ts +3 -3
- package/dist/forms/StaticForm.d.ts +1 -1
- package/dist/forms/contract.d.ts +1 -1
- package/dist/forms/experience-plan.d.ts +1 -1
- package/dist/forms/field-autocomplete.d.ts +1 -1
- package/dist/forms/field-controls.d.ts +1 -1
- package/dist/forms/field-rules.d.ts +1 -1
- package/dist/forms/form-dom-values.d.ts +1 -1
- package/dist/forms/index.d.ts +18 -18
- package/dist/forms/index.js +21 -11
- package/dist/forms/normalize-config.d.ts +1 -1
- package/dist/forms/server.d.ts +4 -4
- package/dist/forms/server.js +3 -3
- package/dist/forms/static.d.ts +2 -2
- package/dist/forms/submitForm.d.ts +2 -2
- package/dist/forms/tracking-session.d.ts +1 -1
- package/dist/forms/useForm.d.ts +2 -2
- package/dist/forms/webmcp.d.ts +2 -2
- package/dist/images/api.d.ts +1 -1
- package/dist/images/index.d.ts +6 -6
- package/dist/images/index.js +2 -4
- package/dist/images/server.d.ts +2 -2
- package/dist/index.d.ts +13 -13
- package/dist/index.js +1 -1
- package/dist/landing/contract.d.ts +1 -1
- package/dist/landing/contract.js +2 -1
- package/dist/landing/index.d.ts +3 -3
- package/dist/landing/index.js +3 -2
- package/dist/landing/managed-server.d.ts +2 -2
- package/dist/landing/managed.d.ts +10 -2
- package/dist/landing/server.d.ts +7 -7
- package/dist/landing/server.js +11 -6
- package/dist/layout/AiDiscoveryLinks.d.ts +1 -1
- package/dist/layout/SiteKitClientProviders.d.ts +1 -1
- package/dist/layout/SiteKitLayout.d.ts +2 -2
- package/dist/layout/client.d.ts +1 -1
- package/dist/layout/client.js +15 -11
- package/dist/layout/index.d.ts +5 -5
- package/dist/layout/index.js +17 -13
- package/dist/layout/types.d.ts +2 -2
- package/dist/llms/AEOComponents.d.ts +1 -1
- package/dist/llms/SpeakableSchema.d.ts +1 -1
- package/dist/llms/api.d.ts +1 -1
- package/dist/llms/client.d.ts +3 -3
- package/dist/llms/contract.d.ts +1 -1
- package/dist/llms/generateLLMsTxt.d.ts +1 -1
- package/dist/llms/handlers.d.ts +1 -1
- package/dist/llms/index.d.ts +21 -21
- package/dist/llms/index.js +5 -5
- package/dist/llms/merge.d.ts +1 -1
- package/dist/llms/sourcedFacts.d.ts +1 -1
- package/dist/llms/types.d.ts +5 -5
- package/dist/llms/writeLLMsTxt.d.ts +3 -3
- package/dist/maps/GoogleMap.d.ts +1 -1
- package/dist/maps/NeighborhoodMap.d.ts +1 -1
- package/dist/maps/api.d.ts +1 -1
- package/dist/maps/index.d.ts +5 -5
- package/dist/maps/index.js +1 -3
- package/dist/mcp/WebMcpTools.d.ts +1 -1
- package/dist/mcp/client.d.ts +2 -2
- package/dist/mcp/discovery.d.ts +2 -2
- package/dist/mcp/handlers.d.ts +4 -4
- package/dist/mcp/index.d.ts +12 -12
- package/dist/mcp/protocol.d.ts +1 -1
- package/dist/mcp/report.d.ts +1 -1
- package/dist/mcp/serverCard.d.ts +1 -1
- package/dist/mcp/sonor.d.ts +5 -5
- package/dist/mcp/sonor.js +10 -10
- package/dist/mcp/transport.d.ts +1 -1
- package/dist/motion/Parallax.d.ts +1 -1
- package/dist/motion/ScrollScene.d.ts +1 -1
- package/dist/motion/gsap.d.ts +2 -2
- package/dist/motion/index.d.ts +9 -9
- package/dist/motion/three.d.ts +1 -1
- package/dist/og/index.d.ts +5 -5
- package/dist/og/pages.d.ts +1 -1
- package/dist/og/route-fit.d.ts +17 -0
- package/dist/og/route.d.ts +8 -0
- package/dist/og/route.js +1 -1
- package/dist/og/template.d.ts +1 -1
- package/dist/portfolio/contract.d.ts +1 -1
- package/dist/press-kit/articles/Article.d.ts +2 -2
- package/dist/press-kit/articles/ArticleFaqSection.d.ts +1 -1
- package/dist/press-kit/articles/ArticleList.d.ts +2 -2
- package/dist/press-kit/articles/AuthorCard.d.ts +1 -1
- package/dist/press-kit/articles/AuthorPage.d.ts +1 -1
- package/dist/press-kit/articles/ClusterLandingPage.d.ts +2 -2
- package/dist/press-kit/articles/ClusterNavigation.d.ts +2 -2
- package/dist/press-kit/articles/ManagedNewsletterForm.d.ts +2 -2
- package/dist/press-kit/articles/PublicationLayout.d.ts +2 -2
- package/dist/press-kit/articles/PublicationSidebar.d.ts +1 -1
- package/dist/press-kit/articles/RelatedPosts.d.ts +2 -2
- package/dist/press-kit/articles/TableOfContents.d.ts +1 -1
- package/dist/press-kit/articles/article-body.d.ts +1 -1
- package/dist/press-kit/articles/article-headings.d.ts +1 -1
- package/dist/press-kit/articles/article-photos.d.ts +1 -1
- package/dist/press-kit/articles/artwork.d.ts +2 -2
- package/dist/press-kit/articles/author-schema.d.ts +2 -2
- package/dist/press-kit/articles/author-social.d.ts +1 -1
- package/dist/press-kit/articles/index.d.ts +23 -23
- package/dist/press-kit/articles/news-sitemap.d.ts +2 -2
- package/dist/press-kit/articles/public-reads.d.ts +1 -1
- package/dist/press-kit/articles/publication-reads.d.ts +2 -2
- package/dist/press-kit/articles/reading-time.d.ts +1 -1
- package/dist/press-kit/articles/server-core.d.ts +20 -20
- package/dist/press-kit/articles/server-ui.d.ts +20 -20
- package/dist/press-kit/articles/types.d.ts +1 -1
- package/dist/proxy/index.d.ts +5 -5
- package/dist/proxy/index.js +1 -1
- package/dist/reputation/TestimonialSection.d.ts +1 -1
- package/dist/reputation/VisualReviewCard.d.ts +1 -1
- package/dist/reputation/api.d.ts +1 -1
- package/dist/reputation/index.d.ts +4 -4
- package/dist/reputation/server.d.ts +3 -3
- package/dist/resonance/ResonanceRuntime.d.ts +7 -0
- package/dist/resonance/bridge.d.ts +16 -0
- package/dist/resonance/consent-adapter.d.ts +26 -0
- package/dist/resonance/controller-registry.d.ts +14 -0
- package/dist/resonance/controller.d.ts +103 -0
- package/dist/resonance/form-context.d.ts +5 -0
- package/dist/resonance/index.d.ts +4 -0
- package/dist/resonance/index.js +9 -0
- package/dist/resonance/meta-pixel.d.ts +67 -0
- package/dist/resonance/providers.d.ts +32 -0
- package/dist/resonance/runtime-core.d.ts +5 -0
- package/dist/revalidate/index.d.ts +3 -3
- package/dist/revalidate/index.js +2 -2
- package/dist/robots/index.d.ts +3 -3
- package/dist/robots/indexnow.js +2 -2
- package/dist/runtime/index.d.ts +7 -7
- package/dist/runtime/index.js +4 -5
- package/dist/runtime-core-WT7KKLWQ.js +2213 -0
- package/dist/seo/ManagedFAQ.d.ts +1 -1
- package/dist/seo/ManagedInternalLinks.d.ts +1 -1
- package/dist/seo/ManagedSchema.d.ts +1 -1
- package/dist/seo/ManagedScripts.d.ts +1 -1
- package/dist/seo/client.d.ts +1 -1
- package/dist/seo/client.js +3 -5
- package/dist/seo/entry-indexnow.d.ts +1 -1
- package/dist/seo/entry-llms-client.d.ts +1 -1
- package/dist/seo/entry-llms-contract.d.ts +1 -1
- package/dist/seo/entry-llms.d.ts +1 -1
- package/dist/seo/entry-meta-contract.d.ts +1 -1
- package/dist/seo/entry-og-route.d.ts +1 -1
- package/dist/seo/entry-og.d.ts +1 -1
- package/dist/seo/entry-pages-contract.d.ts +1 -1
- package/dist/seo/entry-redirects.d.ts +1 -1
- package/dist/seo/entry-robots.d.ts +1 -1
- package/dist/seo/entry-sitemap.d.ts +1 -1
- package/dist/seo/getManagedMetadata.d.ts +1 -1
- package/dist/seo/index.d.ts +12 -12
- package/dist/seo/index.js +9 -11
- package/dist/seo/indexnow.d.ts +1 -1
- package/dist/seo/indexnow.js +2 -2
- package/dist/seo/llms/client.d.ts +1 -1
- package/dist/seo/llms/contract.d.ts +1 -1
- package/dist/seo/llms.d.ts +1 -1
- package/dist/seo/llms.js +5 -5
- package/dist/seo/meta/contract.d.ts +1 -1
- package/dist/seo/og/route.d.ts +1 -1
- package/dist/seo/og/route.js +1 -1
- package/dist/seo/og.d.ts +1 -1
- package/dist/seo/pages/contract.d.ts +1 -1
- package/dist/seo/redirects.d.ts +1 -1
- package/dist/seo/register-sitemap-cli-impl.d.ts +1 -1
- package/dist/seo/register-sitemap-cli.js +1 -1
- package/dist/seo/robots.d.ts +1 -1
- package/dist/seo/routing.d.ts +1 -1
- package/dist/seo/server.d.ts +4 -4
- package/dist/seo/server.js +3 -3
- package/dist/seo/sitemap.d.ts +1 -1
- package/dist/seo/sitemap.js +3 -3
- package/dist/seo/types.d.ts +1 -1
- package/dist/seo-meta/contract.d.ts +1 -1
- package/dist/seo-pages/contract.d.ts +1 -1
- package/dist/server/index.d.ts +5 -5
- package/dist/server/index.js +3 -3
- package/dist/server/mint-site-token.d.ts +1 -1
- package/dist/server/server-fetch.d.ts +8 -0
- package/dist/{server-api-XIKDWSNO.js → server-api-A34TABT2.js} +2 -2
- package/dist/shared/build-entries.d.ts +3 -1
- package/dist/shared/color.d.ts +1 -1
- package/dist/shared/fetchWithRetry.d.ts +6 -0
- package/dist/shared/frame.d.ts +1 -1
- package/dist/shared/identity-storage.d.ts +6 -4
- package/dist/shared/identity.d.ts +1 -3
- package/dist/shared/index.d.ts +5 -5
- package/dist/shared/index.js +1 -1
- package/dist/shared/measurement-analytics.d.ts +1 -0
- package/dist/shared/measurement-policy.d.ts +6 -0
- package/dist/shared/measurement-proof.d.ts +5 -0
- package/dist/shared/measurement-store.d.ts +34 -0
- package/dist/shared/measurement-writer.d.ts +6 -0
- package/dist/shared/publishCredential.d.ts +1 -1
- package/dist/shared/reporting-gate.d.ts +3 -1
- package/dist/shared/site-token-claims.d.ts +18 -0
- package/dist/shared/site-token-configuration.d.ts +9 -0
- package/dist/shared/site-token-refresh.d.ts +7 -0
- package/dist/shared/site-token-state.d.ts +23 -0
- package/dist/shared/siteToken.d.ts +5 -39
- package/dist/shared/sonor-auth-state.d.ts +3 -0
- package/dist/shared/sonor-beacon.d.ts +13 -0
- package/dist/shared/sonor-fetch-runtime.d.ts +2 -0
- package/dist/shared/sonor-fetch.d.ts +7 -0
- package/dist/shared/sonorFetch.d.ts +4 -49
- package/dist/shared/version.d.ts +1 -1
- package/dist/signal/ReviewedSignalExperiment.d.ts +9 -0
- package/dist/signal/SignalBridge.d.ts +4 -4
- package/dist/signal/SignalCore.d.ts +2 -1
- package/dist/signal/SignalExperiment.d.ts +13 -5
- package/dist/signal/index.d.ts +3 -3
- package/dist/signal/index.js +4 -73
- package/dist/signal/store.d.ts +10 -7
- package/dist/signal/types.d.ts +4 -0
- package/dist/sitemap/index.d.ts +5 -5
- package/dist/sitemap/index.js +3 -3
- package/dist/sites/contract.d.ts +1 -1
- package/dist/sites/normalize.d.ts +1 -1
- package/dist/slots/ManagedLink.d.ts +2 -2
- package/dist/slots/ManagedList.d.ts +2 -2
- package/dist/slots/ManagedRichText.d.ts +1 -1
- package/dist/slots/ManagedSlot.d.ts +1 -1
- package/dist/slots/contract.d.ts +1 -1
- package/dist/slots/edit/locate.d.ts +1 -1
- package/dist/slots/index.d.ts +14 -14
- package/dist/slots/index.js +2 -2
- package/dist/slots/server-api.d.ts +1 -1
- package/dist/{chunk-FLOJUMFR.js → sonor-fetch-runtime-3PFGUXMF.js} +27 -36
- package/dist/sync/AddToCalendar.d.ts +1 -1
- package/dist/sync/BookingWidget.d.ts +1 -1
- package/dist/sync/MeetingFormatStep.d.ts +1 -1
- package/dist/sync/api.d.ts +2 -2
- package/dist/sync/booking-flow.d.ts +1 -1
- package/dist/sync/index.d.ts +3 -3
- package/dist/sync/index.js +6 -7
- package/dist/types.d.ts +6 -6
- package/dist/website/BlocksPopup.d.ts +1 -1
- package/dist/website/PopupBlocks.d.ts +1 -1
- package/dist/website/SiteDesignReporter.d.ts +2 -2
- package/dist/website/SitePopups.d.ts +1 -1
- package/dist/website/contract.d.ts +1 -1
- package/dist/website/cta-bar.d.ts +1 -1
- package/dist/website/cta-bar.js +4 -3
- package/dist/website/design.d.ts +2 -2
- package/dist/website/images/server.d.ts +1 -1
- package/dist/website/images-server.d.ts +1 -1
- package/dist/website/images.d.ts +1 -1
- package/dist/website/images.js +2 -4
- package/dist/website/index.d.ts +4 -4
- package/dist/website/index.js +5 -6
- package/dist/website/landing/server.d.ts +1 -1
- package/dist/website/landing/server.js +11 -6
- package/dist/website/landing-server.d.ts +1 -1
- package/dist/website/landing.d.ts +1 -1
- package/dist/website/landing.js +3 -2
- package/dist/website/popup-rules.d.ts +2 -2
- package/dist/website/popup-types.d.ts +1 -1
- package/dist/website/popups.d.ts +4 -4
- package/dist/website/popups.js +14 -8
- package/dist/website/slots/contract.d.ts +1 -1
- package/dist/website/slots-contract.d.ts +1 -1
- package/dist/website/slots.d.ts +2 -2
- package/dist/website/slots.js +2 -2
- package/dist/{writeLLMsTxt-4HHUAOA6.js → writeLLMsTxt-JUACXQKP.js} +2 -2
- package/docs.json +5 -0
- package/package.json +8 -2
- package/src/analytics/README.md +21 -0
- package/src/cta-bar/README.md +4 -0
- package/src/forms/README.md +29 -0
- package/src/landing/README.md +14 -0
- package/src/layout/README.md +3 -0
- package/src/og/README.md +28 -0
- package/src/resonance/README.md +273 -0
- package/src/runtime/README.md +6 -1
- package/src/signal/README.md +21 -0
- package/src/website/README.md +14 -2
- package/dist/AnalyticsProvider-7SBJ27SI.js +0 -13
- package/dist/ChatWidget-V46UBDOM.js +0 -20
- package/dist/ManagedForm-DDDVMKLJ.js +0 -19
- package/dist/SitePopups-VU2C3Z6B.js +0 -13
- package/dist/SitemapSync-C4H3HF3L.js +0 -9
- package/dist/chunk-5ROTTMBL.js +0 -19
- package/dist/chunk-5TM3WPCI.js +0 -7
- package/dist/chunk-7HW4TZB5.js +0 -148
- package/dist/chunk-IPQKQEWI.js +0 -52
- package/dist/chunk-LCDVPAMR.js +0 -24
- package/dist/chunk-SHAUX2MQ.js +0 -163
- /package/dist/{chunk-3MJNBOUO.js → chunk-2QPVU63T.js} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sonordev/site-kit",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.9.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"packageManager": "pnpm@11.5.3",
|
|
6
6
|
"description": "Sonor's Next.js foundation: SEO, analytics, forms, chat, booking, AI visibility and agent tools. Add @sonordev/press-kit for publications or @sonordev/commerce-kit for selling. Legacy article imports remain compatible in 8.x.",
|
|
@@ -43,6 +43,10 @@
|
|
|
43
43
|
"types": "./dist/analytics/index.d.ts",
|
|
44
44
|
"default": "./dist/analytics/index.js"
|
|
45
45
|
},
|
|
46
|
+
"./resonance": {
|
|
47
|
+
"types": "./dist/resonance/index.d.ts",
|
|
48
|
+
"default": "./dist/resonance/index.js"
|
|
49
|
+
},
|
|
46
50
|
"./signal": {
|
|
47
51
|
"types": "./dist/signal/index.d.ts",
|
|
48
52
|
"default": "./dist/signal/index.js"
|
|
@@ -373,6 +377,8 @@
|
|
|
373
377
|
"test:integration:baseline": "node test/integration/run.mjs --update-baseline",
|
|
374
378
|
"test:integration:selfcheck": "node test/integration/checks/selfcheck.mjs",
|
|
375
379
|
"test:integration:setup": "playwright install chromium",
|
|
380
|
+
"test:meta-capture": "node test/meta-capture/run.mjs",
|
|
381
|
+
"test:meta-mutants": "node test/meta-capture/run-mutants.mjs",
|
|
376
382
|
"clean": "rm -rf dist",
|
|
377
383
|
"typecheck": "tsc --noEmit",
|
|
378
384
|
"typecheck:setup": "tsc --noEmit -p packages/sonor-setup/tsconfig.json",
|
|
@@ -429,7 +435,7 @@
|
|
|
429
435
|
"@babel/parser": "^8.0.4",
|
|
430
436
|
"@babel/traverse": "^8.0.4",
|
|
431
437
|
"@babel/types": "^8.0.4",
|
|
432
|
-
"@sonordev/contracts": "^2.
|
|
438
|
+
"@sonordev/contracts": "^2.22.0",
|
|
433
439
|
"@types/babel__generator": "^7.27.0",
|
|
434
440
|
"@types/babel__traverse": "^7.28.0",
|
|
435
441
|
"@types/inquirer": "^9.0.10",
|
package/src/analytics/README.md
CHANGED
|
@@ -260,3 +260,24 @@ site without forcing each microsite into its own Sonor project.
|
|
|
260
260
|
Most projects leave it implicit: `NEXT_PUBLIC_SITE_URL` is already set per
|
|
261
261
|
microsite, so the dimension fills in automatically. The dashboard shows a
|
|
262
262
|
"Site" picker + a "Sites" tab as soon as ≥2 distinct hosts are detected.
|
|
263
|
+
|
|
264
|
+
## Consent-aware collection (8.9)
|
|
265
|
+
|
|
266
|
+
The shared purpose policy gates identity initialization, collectors and each
|
|
267
|
+
transport attempt. Explicit analytics denial stops collection. Unknown consent
|
|
268
|
+
stops it when your maintained CMP or server policy requires analytics consent.
|
|
269
|
+
Unconfigured legacy analytics retains its unknown-policy behavior.
|
|
270
|
+
|
|
271
|
+
Connect the existing consent manager through the [Resonance adapter](../resonance/README.md).
|
|
272
|
+
Withdrawal discards pending work so a later grant can't replay it. Resonance
|
|
273
|
+
occurrences are a separate evidence stream and don't increment analytics
|
|
274
|
+
pageview counts. Accepted managed-form conversions remain server-owned.
|
|
275
|
+
|
|
276
|
+
Configured telemetry carries the current scoped subject proof in its dedicated
|
|
277
|
+
header through the existing analytics transport. The proof is refreshed for
|
|
278
|
+
each attempt and for unload-time keepalive requests. It isn't attached to
|
|
279
|
+
functional or arbitrary API routes, and never enters a URL or browser storage.
|
|
280
|
+
The server checks current receipts independently of the browser gate.
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
Optional telemetry rechecks current purpose permission after transport execution loads and before every attempt. A preference change during loading or credential refresh drops the pending telemetry; it doesn't authorize replay after a later grant. The existing event IDs and functional request bodies keep their meaning.
|
package/src/cta-bar/README.md
CHANGED
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
The Liquid Glass mobile CTA bar (6.1.0). A floating frosted capsule that
|
|
4
4
|
keeps a site's one or two highest-intent actions a thumb away on phones.
|
|
5
5
|
|
|
6
|
+
On dynamic routes with Next.js Cache Components, the bar keeps its actions
|
|
7
|
+
in the server-rendered page while its pathname-dependent behavior waits
|
|
8
|
+
inside its own Suspense boundary.
|
|
9
|
+
|
|
6
10
|
It replaces a hand-rolled sticky mobile bar, and handles what each of those
|
|
7
11
|
ends up solving on its own:
|
|
8
12
|
|
package/src/forms/README.md
CHANGED
|
@@ -342,3 +342,32 @@ import '@sonordev/site-kit/forms/styles.css' // Optional default styles
|
|
|
342
342
|
```
|
|
343
343
|
|
|
344
344
|
All components use `.sk-form__*` class names. Override with `className` prop or CSS variables.
|
|
345
|
+
|
|
346
|
+
## Purpose-aware submission and tracking (8.9)
|
|
347
|
+
|
|
348
|
+
Managed form values can still submit when measurement is denied or unavailable.
|
|
349
|
+
The canonical submit helper refreshes optional measurement context before every
|
|
350
|
+
network attempt, including a credential-refresh retry. A withdrawal removes
|
|
351
|
+
that context while preserving the functional request.
|
|
352
|
+
|
|
353
|
+
GA4 cookie reads, UTM fields and existing analytics visitor/session IDs follow
|
|
354
|
+
the analytics purpose policy. Advertising grants alone don't authorize those
|
|
355
|
+
reads. The separate opaque measurement proof can accompany an eligible request
|
|
356
|
+
for server verification. A managed experiment exposure reference is included
|
|
357
|
+
only after the measurement endpoint accepted that exposure. The server still
|
|
358
|
+
verifies its subject, scope and current consent against the canonical accepted
|
|
359
|
+
submission. The browser doesn't post a form conversion.
|
|
360
|
+
|
|
361
|
+
The existing form analytics hook uses the shared analytics gate for starts,
|
|
362
|
+
field interactions, steps, completion and abandonment. Unknown required consent
|
|
363
|
+
and explicit denial stop collection. Regrant creates a fresh tracking period
|
|
364
|
+
without replaying denied interactions. Trackers in the same current period
|
|
365
|
+
still share one row. Legacy sites without an analytics requirement keep their
|
|
366
|
+
first-party unknown-policy behavior.
|
|
367
|
+
|
|
368
|
+
Connect your maintained consent manager through the
|
|
369
|
+
[Resonance adapter](../resonance/README.md). Keep it separate from newsletter
|
|
370
|
+
subscriptions and form follow-up permission.
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
Functional form submission stays available without optional measurement. Current measurement context is resolved at each actual attempt, including after transport loading or credential refresh. A withdrawn or stale context is omitted from the functional request; it isn't recovered from an old queued grant.
|
package/src/landing/README.md
CHANGED
|
@@ -34,6 +34,20 @@ Keep `SiteKitLayout` in your root layout and use its deferred analytics sibling.
|
|
|
34
34
|
|
|
35
35
|
Published-page reads use `no-store` in this version so an outdated or removed publication isn't served from the fetch cache. Keep the route dynamic and avoid wrapping this reader in a persistent cache. `managedFunnelMetadata` defaults to noindex, nofollow. Keep these campaign routes out of your sitemap.
|
|
36
36
|
|
|
37
|
+
On Next.js 16.3 and later with Cache Components, `instant = false` applies
|
|
38
|
+
only to this per-request route. There isn't a useful static publication
|
|
39
|
+
shell: the content and its availability both come from the fresh read.
|
|
40
|
+
Navigation waits for that read, so the complete content and managed form
|
|
41
|
+
arrive as readable server HTML, including without JavaScript. Keep the
|
|
42
|
+
reader uncached and verify visible content with JavaScript disabled.
|
|
43
|
+
|
|
44
|
+
Add this export to the page **only when `cacheComponents: true` is enabled**
|
|
45
|
+
in your Next config; Next rejects it when Cache Components is off:
|
|
46
|
+
|
|
47
|
+
```tsx
|
|
48
|
+
export const instant = false
|
|
49
|
+
```
|
|
50
|
+
|
|
37
51
|
Use the normal revalidation route:
|
|
38
52
|
|
|
39
53
|
```ts
|
package/src/layout/README.md
CHANGED
|
@@ -99,3 +99,6 @@ on private child routes; they don't include the current URL, preview token, or
|
|
|
99
99
|
article content. Private preview cache, indexing, and reporting rules stay in
|
|
100
100
|
place. If private pages must contain no discovery tags at all, render
|
|
101
101
|
`AiDiscoveryLinks` in a public route-group layout instead of the root layout.
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
The layout publishes the current credential and first-party identity scope before child effects. Purpose checks stay synchronous while optional runtime work loads, so pending preferences and withdrawal don't create a collection window. Page content remains server-rendered independently of measurement.
|
package/src/og/README.md
CHANGED
|
@@ -279,6 +279,34 @@ dropped), and fonts supplied as ArrayBuffers. Reach for it only when the cards
|
|
|
279
279
|
can't be rendered at build time; per-URL cards in `og.config.ts` cover
|
|
280
280
|
everything `generateStaticParams` can list.
|
|
281
281
|
|
|
282
|
+
### Full-wordmark article cards
|
|
283
|
+
|
|
284
|
+
Available in Site Kit 8.8.1 and later.
|
|
285
|
+
|
|
286
|
+
Pass `logo: { src, width, height, alt }` in the card returned to
|
|
287
|
+
`createOgImage` to select the branded layout. The intrinsic logo dimensions
|
|
288
|
+
preserve its aspect ratio. Use an absolute HTTP(S) image URL or a base64 image
|
|
289
|
+
data URI; rasterizing a local SVG to PNG is useful when preparing assets.
|
|
290
|
+
Invalid logo sources or dimensions throw before rendering.
|
|
291
|
+
|
|
292
|
+
The 1200×630 card keeps the full wordmark at the upper left, with the title
|
|
293
|
+
below and one edge-to-edge photograph on the right. Set `theme.bg` to the
|
|
294
|
+
publication's light panel color and `theme.text` to its dark text color.
|
|
295
|
+
Optional `kicker` and `bar` provide a small publication label and domain.
|
|
296
|
+
The branded layout uses `title`, `logo`, `photoUrl`, `kicker`, `bar` and the
|
|
297
|
+
theme; `subtitle` belongs to the original layout.
|
|
298
|
+
|
|
299
|
+
Branded titles fit from 64px down to 36px while retaining the logo and photo.
|
|
300
|
+
Exceptionally long titles receive an ellipsis on the card; full page metadata
|
|
301
|
+
stays unchanged. Without a photo the copy gets the wider panel. Cards without
|
|
302
|
+
`logo` retain the original layout and fitting behavior.
|
|
303
|
+
|
|
304
|
+
For publication articles, use Press Kit's existing
|
|
305
|
+
`resolveArticleArtwork(post, 'article')` to choose the raw article artwork.
|
|
306
|
+
Don't use an already composed promotional card as `photoUrl`. Supply fonts
|
|
307
|
+
through the existing `fonts` option as ArrayBuffers, and keep the page's
|
|
308
|
+
`generateArticleMetadata` call on `images: false` so the file card is used.
|
|
309
|
+
|
|
282
310
|
### Code cards on a `trailingSlash: true` site
|
|
283
311
|
|
|
284
312
|
Next serves a code card at `<page>/opengraph-image`, with no extension, and
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
# Resonance measurement
|
|
2
|
+
|
|
3
|
+
`@sonordev/site-kit/resonance` connects the site's consent manager to scoped
|
|
4
|
+
measurement receipts and approved advertising destinations. `SiteKitLayout`
|
|
5
|
+
mounts its childless runtime alongside the existing analytics provider. Page
|
|
6
|
+
content and managed forms still render when measurement is unavailable. The
|
|
7
|
+
small shell blocks unresolved collection immediately; its controller loads
|
|
8
|
+
after the page reaches idle or the visitor interacts.
|
|
9
|
+
|
|
10
|
+
On dynamic routes with Next.js Cache Components, the layout gives the
|
|
11
|
+
pathname-dependent runtime its own Suspense boundary. Measurement stays
|
|
12
|
+
blocked while it's unresolved, and page content renders independently.
|
|
13
|
+
|
|
14
|
+
## Connect your consent manager
|
|
15
|
+
|
|
16
|
+
Register one adapter for the consent manager your site already uses. The
|
|
17
|
+
adapter reads its actual current preferences and subscribes to changes. It
|
|
18
|
+
doesn't create a banner or choose preferences for the visitor.
|
|
19
|
+
|
|
20
|
+
```tsx
|
|
21
|
+
'use client'
|
|
22
|
+
|
|
23
|
+
import { useEffect } from 'react'
|
|
24
|
+
import {
|
|
25
|
+
registerResonanceConsentAdapter,
|
|
26
|
+
type ResonanceConsentAdapter,
|
|
27
|
+
} from '@sonordev/site-kit/resonance'
|
|
28
|
+
|
|
29
|
+
// Map these methods to your site's maintained consent manager.
|
|
30
|
+
export function ConsentConnection({ adapter }: { adapter: ResonanceConsentAdapter }) {
|
|
31
|
+
useEffect(() => registerResonanceConsentAdapter(adapter), [adapter])
|
|
32
|
+
return null
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
The adapter supplies `requiredPurposes`, `read()` and `subscribe(onChange)`.
|
|
37
|
+
`read()` may be asynchronous. It returns:
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
{
|
|
41
|
+
valid: true,
|
|
42
|
+
observedAt: '2026-10-24T12:00:00Z',
|
|
43
|
+
source: 'cmp', // or 'user_preference'
|
|
44
|
+
choices: {
|
|
45
|
+
analytics_storage: 'granted',
|
|
46
|
+
ad_storage: 'denied',
|
|
47
|
+
ad_user_data: 'denied',
|
|
48
|
+
ad_personalization: 'denied',
|
|
49
|
+
},
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Each purpose can be `unknown`, `granted`, `denied` or `withdrawn`. Return
|
|
54
|
+
`valid: false` when the manager can't establish current preferences. Include
|
|
55
|
+
`analytics_storage` in `requiredPurposes` when your site's policy requires it.
|
|
56
|
+
Notify subscribers as soon as a preference changes. Dispatch stops before an
|
|
57
|
+
asynchronous read completes.
|
|
58
|
+
|
|
59
|
+
The initial config read creates no measurement subject. A valid current
|
|
60
|
+
preference observation can create a new subject with server receipts. Configured
|
|
61
|
+
collection waits for that receipt response before activating. The
|
|
62
|
+
opaque proof stays in memory and never enters a URL or browser storage. Its
|
|
63
|
+
30-minute renewal doesn't prompt the visitor again or change consent. After
|
|
64
|
+
memory is lost, an actual valid preference observation can establish a new
|
|
65
|
+
subject. Visitor IDs and old receipt IDs can't recover the previous subject.
|
|
66
|
+
|
|
67
|
+
## What can send?
|
|
68
|
+
|
|
69
|
+
Advertising requires a current server proof and grants for `ad_storage`,
|
|
70
|
+
`ad_user_data` and `ad_personalization`, plus any additional configured purpose.
|
|
71
|
+
Explicit analytics denial stops first-party tracking. Required but unknown
|
|
72
|
+
analytics consent also stops it. Legacy sites without a configured requirement
|
|
73
|
+
keep their first-party analytics behavior, recorded as unknown policy rather
|
|
74
|
+
than a consent grant.
|
|
75
|
+
|
|
76
|
+
The existing analytics provider remains the pageview counter. Resonance
|
|
77
|
+
occurrences supply separate retargeting and experiment evidence. Resource
|
|
78
|
+
interest uses approved resource IDs. It doesn't submit raw query strings,
|
|
79
|
+
form values or DOM text. Accepted forms become conversions on the server.
|
|
80
|
+
|
|
81
|
+
Withdrawal clears pending occurrence retries and prevents delayed work from
|
|
82
|
+
crossing into a later grant. Granting again records the current page with a
|
|
83
|
+
new occurrence ID. It doesn't replay denied page history. Failed occurrence
|
|
84
|
+
requests can retry with the same event ID while their scope and consent remain
|
|
85
|
+
current. Already delivered provider requests can't be retracted.
|
|
86
|
+
|
|
87
|
+
## Advertising click lineage
|
|
88
|
+
|
|
89
|
+
After the current advertising grants and scoped proof are available, a new
|
|
90
|
+
page-view occurrence can carry one `gclid`, `gbraid` or `wbraid` from the current
|
|
91
|
+
URL. The live pathname must match the navigation being recorded. Duplicate or
|
|
92
|
+
mixed identifiers, whitespace, control characters and values longer than 1024
|
|
93
|
+
characters leave matching data absent. The length is an application transport
|
|
94
|
+
bound. Other occurrence kinds don't carry click identifiers.
|
|
95
|
+
|
|
96
|
+
This path works when analytics consent is denied and the configured advertising
|
|
97
|
+
policy doesn't additionally require it. The runtime doesn't retain a query from
|
|
98
|
+
before consent or recover one that's been removed. Retries use the same event
|
|
99
|
+
within its current consent and scope; withdrawal clears them. An already
|
|
100
|
+
recorded page isn't updated with a later identifier. No click identifier enters
|
|
101
|
+
browser storage or public status output.
|
|
102
|
+
|
|
103
|
+
An observed identifier doesn't prove a paid click. The server owns the link to
|
|
104
|
+
the actual accepted form and checks qualification and current advertising
|
|
105
|
+
consent before export. Deploy its accepting occurrence parser before enabling
|
|
106
|
+
the browser change.
|
|
107
|
+
|
|
108
|
+
## Same-page Meta cookie observation
|
|
109
|
+
|
|
110
|
+
After the required advertising grants and actual scoped consent proof are
|
|
111
|
+
available, the existing page-view occurrence can include an SDK-reported
|
|
112
|
+
`metaCookieObservation`. The runtime reads only actual `_fbp` and `_fbc`
|
|
113
|
+
cookies from the current page. It doesn't construct `fbc` from a click URL,
|
|
114
|
+
write cookies, retain a cookie jar, or install Meta's browser SDK.
|
|
115
|
+
|
|
116
|
+
Matching requires a unique configured page resource for the current path.
|
|
117
|
+
The occurrence uses that exact native resource reference and the same
|
|
118
|
+
navigation's `pagePath`. Missing or ambiguous mappings leave the base view
|
|
119
|
+
unmatched. Cookie reads don't run before persisted consent, for an unmatched
|
|
120
|
+
page, or after consent/proof/config expiry. The live pathname must match
|
|
121
|
+
before and after reading. Duplicate cookie names are omitted. The shared
|
|
122
|
+
occurrence parser rejects invalid matching values; valid values contain
|
|
123
|
+
1–1024 Unicode characters without whitespace or controls. Invalid optional
|
|
124
|
+
matching leaves the valid base occurrence intact.
|
|
125
|
+
|
|
126
|
+
This enriches one existing page view. It doesn't add another page-view
|
|
127
|
+
counter, create a business conversion or claim that a person rendered the
|
|
128
|
+
page. Existing content-interest evidence remains separate. Retries retain
|
|
129
|
+
the exact original event ID, navigation, time and captured body without
|
|
130
|
+
reading cookies again. Repeated consent notifications or configuration-cache
|
|
131
|
+
refreshes don't update an already recorded view. Withdrawal clears pending
|
|
132
|
+
work; a later grant can record only the current page with a new event.
|
|
133
|
+
|
|
134
|
+
Raw matching isn't forwarded through the provider event allowlist, public
|
|
135
|
+
status or browser storage. The accepting API must support the occurrence
|
|
136
|
+
shape and verify the actual owned page, current source rules and consent
|
|
137
|
+
before enabling this browser version. An accepted capture doesn't grant a
|
|
138
|
+
feed, prove native audience admission or establish provider delivery. Those
|
|
139
|
+
checks and the original grant/claim/time fences remain server-owned.
|
|
140
|
+
|
|
141
|
+
## Provider capabilities
|
|
142
|
+
|
|
143
|
+
Google's allowlisted tag loads after the required grants. Automatic pageviews
|
|
144
|
+
are disabled. Browser events use an explicit safe page location, empty
|
|
145
|
+
referrer and approved resource fields. The runtime has no browser conversion
|
|
146
|
+
action. A pre-existing Google tag or tag manager blocks installation until
|
|
147
|
+
compatibility is resolved, preventing a second installation.
|
|
148
|
+
|
|
149
|
+
## Meta browser pixel
|
|
150
|
+
|
|
151
|
+
The browser pixel exists for one reason: so Meta's own first-party cookies
|
|
152
|
+
(`_fbp`, and `_fbc` when a visitor arrives from a Meta ad click) exist on pages
|
|
153
|
+
you've approved. It sends no browser events. The only Meta event for a visit is
|
|
154
|
+
the server's Conversions API `PageView`, and the runtime exposes no `track`
|
|
155
|
+
capability. It passes no user data to the pixel, reads no form field, page title
|
|
156
|
+
or page metadata, and attaches no click or submit listener. It never writes
|
|
157
|
+
`_fbp` or `_fbc` itself and never builds one from a click URL.
|
|
158
|
+
|
|
159
|
+
**It's switched off in this release.** Site Kit 8.9.0 can't start the pixel.
|
|
160
|
+
This build implements no loader controls revision, so even a capability
|
|
161
|
+
witness from the server can't lift `meta_browser_collection_unverified`, and
|
|
162
|
+
`getResonanceMeasurementStatus()` keeps reporting it. A later release turns the
|
|
163
|
+
loader on. Everything below describes how it will behave then.
|
|
164
|
+
|
|
165
|
+
When it's on, a site's pixel starts only if the server's configuration carries
|
|
166
|
+
a capability witness for that site. The witness names the loader controls
|
|
167
|
+
revision and the policy revision it was issued under, and the runtime refuses a
|
|
168
|
+
revision it doesn't implement, a witness from an older policy, and a witness
|
|
169
|
+
issued more than 48 hours ago, and it withdraws a running pixel if the witness
|
|
170
|
+
lapses mid-session. A site without a witness loads nothing. The lift is per
|
|
171
|
+
site, and a configuration refresh that removes the witness, the destination or
|
|
172
|
+
`enabled` withdraws the pixel. The longest that can take is the configuration's
|
|
173
|
+
own expiry.
|
|
174
|
+
|
|
175
|
+
**What loads, and when.** Nothing exists before consent: no script, no
|
|
176
|
+
`window.fbq`, no cookie, no storage key. After the three advertising grants
|
|
177
|
+
(`ad_storage`, `ad_user_data`, `ad_personalization`) and a current scoped proof,
|
|
178
|
+
and on a page that's eligible and clean, the runtime queues consent revoked,
|
|
179
|
+
automatic configuration off and `init` with only the dataset ID from your
|
|
180
|
+
signed configuration, then inserts
|
|
181
|
+
`https://connect.facebook.net/en_US/fbevents.js` (async, no referrer). Once the
|
|
182
|
+
script has run, and the consent fence still holds, it grants consent. Each step
|
|
183
|
+
rechecks the fence. A grant that's queued ahead of the script doesn't release
|
|
184
|
+
the pixel's own lock, which is why the grant waits.
|
|
185
|
+
|
|
186
|
+
**Which pages.** A page is eligible only when its configured page resource has
|
|
187
|
+
`metaEligible: true`, which a person with owner or admin standing sets in
|
|
188
|
+
Sonor. It defaults to false, an agent can't set it, and the browser never
|
|
189
|
+
decides it. The same flag gates the cookie observation described above. The
|
|
190
|
+
runtime also refuses, with `meta_page_not_eligible`: any frame, a private
|
|
191
|
+
preview, a local host, a Sonor application host, a page carrying
|
|
192
|
+
`data-sk-authenticated`, and these paths and their children: `/admin`,
|
|
193
|
+
`/account`, `/dashboard`, `/login`, `/signin`, `/signup`, `/checkout`, `/cart`,
|
|
194
|
+
`/portal`, `/api` and `/preview`. Put `data-sk-authenticated` on the document in
|
|
195
|
+
any layout that sits behind a login.
|
|
196
|
+
|
|
197
|
+
**Clean URLs only.** The pixel reads the page URL and referrer on its own, so
|
|
198
|
+
the runtime doesn't start it, and pauses it on a single-page navigation, unless
|
|
199
|
+
the query holds only `fbclid`, `sonor_source` or `utm_*` keys with plain
|
|
200
|
+
values, there's no fragment, and the referrer is empty, an origin-only
|
|
201
|
+
cross-site address, or a same-site address whose path isn't on the denied list above and whose query follows the same rule.
|
|
202
|
+
Otherwise the status shows `meta_url_not_clean`. There's no rewriting.
|
|
203
|
+
|
|
204
|
+
**One pixel per page.** A page with its own `fbq`, a Meta script tag, a pixel
|
|
205
|
+
image or `noscript`, or a tag manager gets `meta_duplicate_installation` and no
|
|
206
|
+
second pixel. A tag manager clears only through an approved attestation in the
|
|
207
|
+
signed configuration. A changed dataset ID or scope under a running pixel shows
|
|
208
|
+
`meta_scope_change_requires_reload`, and more than one Meta destination shows
|
|
209
|
+
`meta_multiple_destinations`. A script that's blocked or fails shows
|
|
210
|
+
`meta_load_failed`. It isn't retried and no image or `noscript` fallback is
|
|
211
|
+
added.
|
|
212
|
+
|
|
213
|
+
**Withdrawal.** When consent, the proof or the configuration lapses, the runtime
|
|
214
|
+
sets the pixel's consent to revoked, stops issuing commands and, once the pixel has
|
|
215
|
+
run, expires `_fbp` and `_fbc` on the host and its parent domains, whether or not
|
|
216
|
+
consent was ever granted on that page. Code that has already run can't
|
|
217
|
+
be retracted, so the guarantee is that nothing further is sent. A later grant
|
|
218
|
+
starts fresh and never replays an earlier visit.
|
|
219
|
+
|
|
220
|
+
**For your site.** Your consent manager's vendor list and privacy notice must
|
|
221
|
+
name Meta, and the Conversions API user agent has its own consent wording.
|
|
222
|
+
Sites that ship a Content Security Policy need `script-src` for
|
|
223
|
+
`https://connect.facebook.net`, plus `connect-src` and `img-src` for
|
|
224
|
+
`https://connect.facebook.net` and `https://www.facebook.com`. Site-kit's
|
|
225
|
+
`securityHeaders` emits none of these. First-party receipts alone don't prove
|
|
226
|
+
provider audience admission, conversion matching or attribution.
|
|
227
|
+
|
|
228
|
+
Read `getResonanceMeasurementStatus()` to inspect the current policy and
|
|
229
|
+
provider blockers. `advertisingPermitted` describes consent eligibility. It
|
|
230
|
+
doesn't establish provider delivery or an installed campaign.
|
|
231
|
+
|
|
232
|
+
Managed experiments require the server's current assignment ID, experiment
|
|
233
|
+
revision and site. Without that witness, the existing experiment component
|
|
234
|
+
shows its control content. Its exposure reference records the assignment
|
|
235
|
+
actually rendered. Forms remain usable with measurement denied or unavailable.
|
|
236
|
+
|
|
237
|
+
## Other layouts and verification
|
|
238
|
+
|
|
239
|
+
A custom layout can mount `<ResonanceRuntime site="example.com" ... />` as a
|
|
240
|
+
childless sibling after publishing the existing browser-safe site credential.
|
|
241
|
+
Use the established server credential component. Don't expose a raw API key.
|
|
242
|
+
Mount one runtime per document.
|
|
243
|
+
|
|
244
|
+
Verify unknown, grant and withdrawal states against your actual consent
|
|
245
|
+
manager before enabling a campaign. Check preview suppression, navigation,
|
|
246
|
+
scope changes and failed requests using intercepted provider URLs. A built or
|
|
247
|
+
packed package isn't proof that a site installed it or that a provider accepted
|
|
248
|
+
an event.
|
|
249
|
+
|
|
250
|
+
### Current config and public source markers
|
|
251
|
+
|
|
252
|
+
Config freshness renews through a public read. An unchanged revision preserves
|
|
253
|
+
current consent; it doesn't create another subject or prompt. A changed config
|
|
254
|
+
or policy stops the previous scope and reads actual current preferences before
|
|
255
|
+
establishing the new scope. A failed lookup can't turn a configured requirement
|
|
256
|
+
into legacy permission. Advertising stops when proof or config expires.
|
|
257
|
+
|
|
258
|
+
The runtime reads only the bounded `sonor_source` parameter for campaign source
|
|
259
|
+
mapping. It forwards that marker on a current permitted occurrence. The server
|
|
260
|
+
verifies its signature and approved plan/destination scope. Other query fields
|
|
261
|
+
don't become measurement payload. A marker authenticates reviewed source
|
|
262
|
+
mapping, not a paid click or causal result. A visit made before consent isn't
|
|
263
|
+
replayed after the visitor has moved to another page.
|
|
264
|
+
|
|
265
|
+
The actual managed form submit refreshes its optional proof at each attempt.
|
|
266
|
+
Its accepted exposure reference comes from the measurement response. Analytics
|
|
267
|
+
and advertising purposes remain separate, and canonical form conversion stays
|
|
268
|
+
on the server. Compatible Google installations created by this runtime can be
|
|
269
|
+
reused for the same project/site and exact tag set. Changed scope or unknown
|
|
270
|
+
installations expose a blocker instead of initializing another tag.
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
The controller registry is shared by status observations, rendered experiment exposures and per-attempt form context. These readers use the same current policy and proof; none creates a grant. Deferred transport execution rechecks its current permission fence before sending, including after loading or credential refresh.
|
package/src/runtime/README.md
CHANGED
|
@@ -12,7 +12,7 @@ Building a site? You don't need this entry. Forms, analytics, articles and the r
|
|
|
12
12
|
| `getClientApiConfig(options?)` | Find the API origin and credential. In the browser that's what `SiteKitLayout` published. During server rendering it's the server's `SONOR_API_URL`, and with `{ serverKey: true }` its `SONOR_API_KEY`. |
|
|
13
13
|
| `readPublishedApiConfig()` | Exactly what `SiteKitLayout` published, with no fallbacks. For code that must stay quiet on a page without the layout. |
|
|
14
14
|
| `DEFAULT_SONOR_API_URL` | `https://api.sonor.io`. |
|
|
15
|
-
| `readAnalyticsIdentity()` | Get the visitor's analytics ids, `{ sessionId, visitorId }`, so what you send to Sonor ties to the visit analytics recorded. It only reads: either id is `null` during server rendering and before analytics has started a session in the tab. It never throws, including when the browser blocks site storage. |
|
|
15
|
+
| `readAnalyticsIdentity()` | Get the visitor's analytics ids, `{ sessionId, visitorId }`, so what you send to Sonor ties to the visit analytics recorded. It only reads: either id is `null` during server rendering and before analytics has started a session in the tab. It returns null ids when current analytics permission blocks collection. It never throws, including when the browser blocks site storage. |
|
|
16
16
|
|
|
17
17
|
The types `SonorFetchOptions`, `FetchRetryOptions`, `ClientApiConfigOptions` and `AnalyticsIdentity` come with them.
|
|
18
18
|
|
|
@@ -46,6 +46,8 @@ Pass `apiKey` from `getClientApiConfig()` and `sonorFetch` sets the `x-api-key`
|
|
|
46
46
|
|
|
47
47
|
`@sonordev/site-kit/client` is stamped `'use client'`. A function imported from a stamped module into a server component becomes a client reference there and can't be called, and `getClientApiConfig` is built to run during server rendering. So `runtime` isn't stamped, imports neither React nor Next, and works the same from a server component, a route handler or a client component.
|
|
48
48
|
|
|
49
|
+
Analytics identity reads share the same current consent state as the layout and analytics runtime, including when separate bundles load them. Pending preferences, withdrawal and expired configured policy block reads synchronously. Reading an identity never grants advertising permission or creates an id.
|
|
50
|
+
|
|
49
51
|
## Stability
|
|
50
52
|
|
|
51
53
|
This entry is public API under semver. New exports arrive in minor releases; nothing in the list above is removed or changed in a minor or patch release.
|
|
@@ -53,3 +55,6 @@ This entry is public API under semver. New exports arrive in minor releases; not
|
|
|
53
55
|
## Shared website utilities (8.3)
|
|
54
56
|
|
|
55
57
|
`@sonordev/site-kit/shared` provides `withSiteParam`, `withSiteBody`, `resolveSiteHost`, `readPublishedSite`, `applyTrailingSlash`, `resolveTrailingSlash` and `safeJsonLd`. These are framework-free functions for kits and sites; the entry is never marked `use client`. Press Kit uses them to keep sub-site scoping, URL shape and JSON-LD escaping consistent without reaching into private Site Kit files. `readPublishedSite()` returns the layout's explicitly published host, or undefined on the server.
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
`sonorFetch` loads its shared execution path on use and keeps its existing Promise-based API. Optional dispatch checks run again after loading and before each attempt. The same token state, refresh and auth breaker serve every caller; loading failure rejects the Promise rather than using another transport. Synchronous unload telemetry doesn't wait for that execution module.
|
package/src/signal/README.md
CHANGED
|
@@ -113,3 +113,24 @@ interface SignalEvent {
|
|
|
113
113
|
experiments: Array<{ id: string; variant: string }>;
|
|
114
114
|
}
|
|
115
115
|
```
|
|
116
|
+
|
|
117
|
+
## Measurement consent (8.9)
|
|
118
|
+
|
|
119
|
+
Signal follows the shared analytics purpose policy and document reporting gate.
|
|
120
|
+
It initializes tracking identity in an effect after permission, drops denied
|
|
121
|
+
tracking work and closes its stream on withdrawal. Functional page content
|
|
122
|
+
continues to render.
|
|
123
|
+
|
|
124
|
+
Managed experiments also require the current server measurement proof and a
|
|
125
|
+
scoped assignment ID, experiment revision and site. The existing component
|
|
126
|
+
records the assignment actually rendered. It shows control content when the
|
|
127
|
+
managed witness is unavailable and never treats a browser click as a trusted
|
|
128
|
+
accepted-form conversion. Managed assignment reads revalidate with the server
|
|
129
|
+
instead of reusing a legacy visitor cache. See the [consent adapter](../resonance/README.md).
|
|
130
|
+
|
|
131
|
+
The deferred Signal runtime reads its measurement header from the shared wire
|
|
132
|
+
constants, so that import doesn't pull in campaign validation schemas. Consent
|
|
133
|
+
checks, assignment witnesses and the public Signal API stay the same.
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
One bounded pre-core queue holds events and outcomes before the bridge and its existing core register. Each kind keeps at most 100 pending items. Registration drains current permitted work once; state updates don't replay it. Withdrawal, pending preferences and scope changes drop old queued work. Children and control content stay readable while the childless core loads.
|
package/src/website/README.md
CHANGED
|
@@ -104,8 +104,17 @@ them and their controls by name:
|
|
|
104
104
|
|
|
105
105
|
## Tracking
|
|
106
106
|
|
|
107
|
-
|
|
108
|
-
|
|
107
|
+
Popup impressions (once half is on screen) and button presses use the same
|
|
108
|
+
analytics-purpose gate as first-party tracking. Explicit denial or withdrawal,
|
|
109
|
+
required but unknown consent, and unavailable configured policy stop optional
|
|
110
|
+
collection. Current permission enables it without a reload. A genuinely
|
|
111
|
+
unconfigured site keeps its legacy first-party behavior as unknown policy;
|
|
112
|
+
that doesn't grant advertising consent.
|
|
113
|
+
|
|
114
|
+
Current scoped receipts accompany configured telemetry. Withdrawal fences
|
|
115
|
+
pending callbacks and retries, so a later grant doesn't replay denied events.
|
|
116
|
+
Popup rendering, dismissal, navigation and frequency preferences still work
|
|
117
|
+
when optional measurement is unavailable.
|
|
109
118
|
|
|
110
119
|
## Drawing one popup yourself
|
|
111
120
|
|
|
@@ -132,3 +141,6 @@ make them again in Website → Popups & Banners. `@sonordev/site-kit/engage`
|
|
|
132
141
|
was removed in site-kit 8: `SiteKitLayout` mounts `SitePopups` and the website
|
|
133
142
|
chat for you, and `npx sonor-setup codemod --write` moves the names that have
|
|
134
143
|
a home.
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
Popup rendering, dismissal and navigation remain functional while optional tracking waits for transport execution. Pending tracking callbacks still need current purpose permission and scope at dispatch; a later grant doesn't replay withdrawn work.
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export { AnalyticsProvider, useAnalytics, useAnalyticsOptional, useTrackEvent } from './chunk-GXWM5KNS.js';
|
|
2
|
-
import './chunk-LCDVPAMR.js';
|
|
3
|
-
import './chunk-IPQKQEWI.js';
|
|
4
|
-
import './chunk-L2V5PUFN.js';
|
|
5
|
-
import './chunk-GJWI74ZZ.js';
|
|
6
|
-
import './chunk-5TM3WPCI.js';
|
|
7
|
-
import './chunk-ZQSCMYZO.js';
|
|
8
|
-
import './chunk-64XODP7M.js';
|
|
9
|
-
import './chunk-FLOJUMFR.js';
|
|
10
|
-
import './chunk-7HW4TZB5.js';
|
|
11
|
-
import './chunk-W7OPEMGJ.js';
|
|
12
|
-
import './chunk-F6WLHVMQ.js';
|
|
13
|
-
import './chunk-PKBMQBKP.js';
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export { ChatWidget, EchoChat, isChatEnabled } from './chunk-TP32MRXV.js';
|
|
2
|
-
import './chunk-6T6CQVNL.js';
|
|
3
|
-
import './chunk-JE4A5S4F.js';
|
|
4
|
-
import './chunk-27FISYK4.js';
|
|
5
|
-
import './chunk-IWNJCRXW.js';
|
|
6
|
-
import './chunk-Q6E4OPGG.js';
|
|
7
|
-
import './chunk-5ROTTMBL.js';
|
|
8
|
-
import './chunk-C2FZBUSS.js';
|
|
9
|
-
import './chunk-TYSIAWC3.js';
|
|
10
|
-
import './chunk-HW7B43E5.js';
|
|
11
|
-
import './chunk-NJCTQH2P.js';
|
|
12
|
-
import './chunk-S22FSH7C.js';
|
|
13
|
-
import './chunk-L2V5PUFN.js';
|
|
14
|
-
import './chunk-GJWI74ZZ.js';
|
|
15
|
-
import './chunk-5TM3WPCI.js';
|
|
16
|
-
import './chunk-FLOJUMFR.js';
|
|
17
|
-
import './chunk-7HW4TZB5.js';
|
|
18
|
-
import './chunk-W7OPEMGJ.js';
|
|
19
|
-
import './chunk-F6WLHVMQ.js';
|
|
20
|
-
import './chunk-PKBMQBKP.js';
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export { ManagedForm } from './chunk-G7BRCSV6.js';
|
|
2
|
-
import './chunk-GQN4BGK6.js';
|
|
3
|
-
import './chunk-IWNJCRXW.js';
|
|
4
|
-
import './chunk-Q6E4OPGG.js';
|
|
5
|
-
import './chunk-5ROTTMBL.js';
|
|
6
|
-
import './chunk-C2FZBUSS.js';
|
|
7
|
-
import './chunk-DXO6SBMD.js';
|
|
8
|
-
import './chunk-CVADNHJ4.js';
|
|
9
|
-
import './chunk-TYSIAWC3.js';
|
|
10
|
-
import './chunk-HW7B43E5.js';
|
|
11
|
-
import './chunk-NJCTQH2P.js';
|
|
12
|
-
import './chunk-L2V5PUFN.js';
|
|
13
|
-
import './chunk-GJWI74ZZ.js';
|
|
14
|
-
import './chunk-5TM3WPCI.js';
|
|
15
|
-
import './chunk-FLOJUMFR.js';
|
|
16
|
-
import './chunk-7HW4TZB5.js';
|
|
17
|
-
import './chunk-W7OPEMGJ.js';
|
|
18
|
-
import './chunk-F6WLHVMQ.js';
|
|
19
|
-
import './chunk-PKBMQBKP.js';
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export { SitePopups } from './chunk-YEX5RAEU.js';
|
|
2
|
-
import './chunk-27FISYK4.js';
|
|
3
|
-
import './chunk-5ROTTMBL.js';
|
|
4
|
-
import './chunk-IPQKQEWI.js';
|
|
5
|
-
import './chunk-GJWI74ZZ.js';
|
|
6
|
-
import './chunk-5TM3WPCI.js';
|
|
7
|
-
import './chunk-ZQSCMYZO.js';
|
|
8
|
-
import './chunk-64XODP7M.js';
|
|
9
|
-
import './chunk-FLOJUMFR.js';
|
|
10
|
-
import './chunk-7HW4TZB5.js';
|
|
11
|
-
import './chunk-W7OPEMGJ.js';
|
|
12
|
-
import './chunk-F6WLHVMQ.js';
|
|
13
|
-
import './chunk-PKBMQBKP.js';
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export { SitemapSync } from './chunk-OWZWRP7Y.js';
|
|
2
|
-
import './chunk-YVKRYQRG.js';
|
|
3
|
-
import './chunk-ZQSCMYZO.js';
|
|
4
|
-
import './chunk-64XODP7M.js';
|
|
5
|
-
import './chunk-FLOJUMFR.js';
|
|
6
|
-
import './chunk-7HW4TZB5.js';
|
|
7
|
-
import './chunk-W7OPEMGJ.js';
|
|
8
|
-
import './chunk-F6WLHVMQ.js';
|
|
9
|
-
import './chunk-PKBMQBKP.js';
|
package/dist/chunk-5ROTTMBL.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { memoryIdentity, VISITOR_ID_KEY, SESSION_ID_KEY } from './chunk-5TM3WPCI.js';
|
|
2
|
-
|
|
3
|
-
// src/shared/identity-reader.ts
|
|
4
|
-
function readKey(kind, key) {
|
|
5
|
-
try {
|
|
6
|
-
return window[kind].getItem(key) || null;
|
|
7
|
-
} catch {
|
|
8
|
-
return null;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
function readAnalyticsIdentity() {
|
|
12
|
-
if (typeof window === "undefined") return { sessionId: null, visitorId: null };
|
|
13
|
-
return {
|
|
14
|
-
sessionId: readKey("sessionStorage", SESSION_ID_KEY) || memoryIdentity.sessionId || null,
|
|
15
|
-
visitorId: readKey("localStorage", VISITOR_ID_KEY) || memoryIdentity.visitorId || null
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export { readAnalyticsIdentity };
|
package/dist/chunk-5TM3WPCI.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// src/shared/identity-storage.ts
|
|
2
|
-
var VISITOR_ID_KEY = "_sk_vid";
|
|
3
|
-
var SESSION_ID_KEY = "_sk_sid";
|
|
4
|
-
var SESSION_TIME_KEY = "_sk_stime";
|
|
5
|
-
var memoryIdentity = { visitorId: "", sessionId: "" };
|
|
6
|
-
|
|
7
|
-
export { SESSION_ID_KEY, SESSION_TIME_KEY, VISITOR_ID_KEY, memoryIdentity };
|